软件工程与计算机科学(《构件之法》读书笔记)

    软件=程序+软件工程。所谓软件,就是集可维护性,健壮性,使用性等诸多特性于一体的程序与文档的集合体。而在开发人员开发软件的整个流程中,其过程不仅仅是把代码敲出来,运行成功便可以完事,在开发阶段,还需要我们开发人员利用软件工程思想对软件进行事先的规划。

    《构建之法》一书将软件开发的不同阶段比作“玩具阶段”、“业余爱好者阶段”、“探索阶段”、“成熟的产业阶段”。当我们开发的软件越来越大时,功能也越来越复杂,动辄几百万行代码,巨大的工作强度让一个人开发显得力不从心,这时软件需求分析和团队协作就显得尤为重要。这也就是软件工程所强调的团队协作,这样的模式也叫作-团队模式。书中形象的将各种模式比作成“窝蜂模式”、“主治医师模式”、“明星模式”、“社区模式”、“业余剧团模式”、“秘密团队模式”、“特工团队模式”、“交响乐团队模式”、“爵士乐团队模式”、“功能团队模式”、“官僚模式”。在开发软件过程中,需要用uml面向对象统一建模语言,对即将开发的软件和系统进行建模,然后,是分工明确的代码编写环节,最后要进行软件调试,在软件的使用阶段,开发人员需要维护软件,并定期推出更新。所以,软件开发是一项复杂且需要团队协作的工程。可以这么说:软件是人类创造的最复杂的系统类型。

    在大多数工科学校里,基本上都有一门叫作“计算机科学”的学科。和软件工程学科相比,虽然两门学科都是计算机类的学科,但是两者之间也是有很多不同之处的。“计算机科学”这一学术领域可以分为下面这些偏理论的领域:“计算理论”、“信息和编码理论”、“算法和数据结构”、“形式化方法”、“程序设计语言”。相比之下,软件工程则是属于偏实践的领域。包括现在热门的“人工智能”、“人机交互”、“安全学和密码学”等。根据我们对软件特性及工程这一概念的了解,可以看到,计算机科学中的理论研究部分,大多从形式上证明,与数学,离散数学,数理逻辑密切相关;计算机科学中与实践相关的部分都是和数据及其他学科发生关系;软件工程则和人的行为、现实社会的需求息息相关的。软件工程的研究目标(软件的开发、运营和维护)中都有“人”的出现,这些“人”可以是项目需求的提供者,可以是软件的开发人员,还可以是软件的用户。这一特征与其他计算机科学的子领域有明显的不同。软件工程专业和计算机科学这两个专业的学生所学的知识略微有所差别,而他们的侧重点则有很大的差别。计算机科学是发现和研究长期的、客观的真理,理论统一,强调原创性,形式化、追求简明的公式,是理想化的;软件工程专业侧重于短期的实际效果(具体的软件会过时),对各种因素进行折衷,对不确定性和风险进行控制管理,强调在实践中建立起来的灵感和直觉,追求最好的、成熟的实践方法。

   

   

原文地址:https://www.cnblogs.com/yibao/p/6347463.html