今天开始,对现代软件工程-构建之法一书阅读后会持续写总结~这本书还是很好的,帮助程序员对软件工程理解,推荐给大家。
第一章(概论)
问题:“软件=程序+软件工程” 和 “软件企业=软件+商业模式”两者是什么,有何关联?
想法:一个良好的软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步展开后续工作,如设计(软件架构),实现(写数据结构和算法),测试,到最后发布软件。
程序(算法,数据结构)是基本功,但是在算法和数据结构上,软件工程决定了软件的质量,商业模式决定了一个软件企业的成败。
问题:软件工程究竟是什么,有什么含义?
想法:软件工程是把系统的,有序的, 可量化的方法应用到软件的开发,运营和维护上的过程。
软件工程包括下列领域:软件需求分析,软件设计,软件构建,软件测试和软件维护。
软件工程和下列的学科相关:计算机科学,计算机工程,管理学,数学,项目管理学,质量管理,软件人体工学,系统工程,工业设计和用户体验设计。
问题:软件开发流程是什么,有什么难题和特点?
想法:软件开发流程的目的是为了提高软件开发,运营,维护的效率,并提高软件的质量,用户满意度 ,可靠性和软件的可维护性,这时候就需要软件工具加以辅助比如编译工具,源代码管理工具,源代码编辑工具等。
软件开发过程有五大难题:
1.复杂性
因为大型软件有超过 百万行的源代码,上万个文件,这些数量往往以几何级数速度增长,让软件工程师头疼。
2.不可见性
工程师看不到自己的源代码如何具体地在用户上的机器被执行的,因此一旦出现错误,工程师几乎无法完整重现到底程序出现了什么问题。
3.易变形
软件看上去很容易修改相比于硬件,但实际上想要从百万行的源代码中正确的修改,更新是很困难的。
4.服从性
软件需要运行在硬件上,而且需要服从系统中的其他组成部分的要求。
5.非连续性
许多软件系统输入上很小的变化,回引起输出上极大的变化。
软件还有其他特性:
有许多不同的程序设计语言,软件工具和软件开发平台
存在许多不同的软件开发流程
软件团队中存在许多不同的角色
软件既可以存储在磁带上,也可以存储在CD/DVD上
问题:计算机科学和软件工程有什么区别?
想法:计算机科学中的理论研究部分大多与数学,离散数学,数理逻辑密切相关;实践相关的部分,都和数据以及其他学科发生关系,而软件工程则和人的行为,现实社会的需求息息相关,因此两者有较大不同,计算机理论的进展会帮助软件工程(例如对程序正确性的分析);软件工程的进展(更好的工具,更多的应用领域)会帮助计算机科学家更有效的进行实验和探索。
软件工程的目标在于创造足够好的软件,尽可能减少BUG的存在,有以下重要几点需要注意:
1.用户满意度:用户可能在使用中发现了很多问题,影响了使用软件的效率。
2.可靠性:软件经常崩溃,导致实用性变差。
3.软件流程的质量:软件团队和开发流程的问题太多,导致了团体成员无法互相合作,按时交付软件。
4.可维护性:某个软件难以维护,使得维护人员表示需要更多的资金和时间维护软件。
问题:软件工程的目标是什么,一个良好的软件需要注意哪些方面?
想法:软件工程的目标在于创造足够好的软件,尽可能减少BUG的存在,有以下重要几点需要注意:
1.用户满意度:用户可能在使用中发现了很多问题,影响了使用软件的效率。
2.可靠性:软件经常崩溃,导致实用性变差。
3.软件流程的质量:软件团队和开发流程的问题太多,导致了团体成员无法互相合作,按时交付软件。
4.可维护性:某个软件难以维护,使得维护人员表示需要更多的资金和时间维护软件。