第一章 软件工程学概述
1.1 软件危机
基本概念:在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机的典型表现:
1、对软件开发成本和进度的估计常常很不准确
2、用户对“已完成的”软件系统不满意的现象经常发生
3、软件产品的质量往往靠不住
4、软件常常是不可维护的
5、软件通常没有适当的文档资料
6、软件成本在计算机系统总成本中所占的比例逐年上升
7、软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
1.2 软件工程
软件工程概述:软件工程是指导计算机软件开发和维护的一门工程学科。
软件工程方法学:
1、传统方法学
2、面向对象方法学
1.3 软件生命周期
基本概念:由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。
三个时期(七个阶段):
graph LR A[软件开发时期]-->B[软件定义] A-->C[软件开发] A-->D[软件维护] B-->F[问题定义]-->1[解决什么问题] B-->E[可行性研究]-->2[对于上一个阶段的问题有什么可行方法吗] B-->G[需求分析]-->3[为了解决这个问题,目标系统必须做什么] C-->H[总体设计]-->4[概括地说应该事先怎样的目标系统] C-->I[详细设计]-->5[应该怎样具体地实现这个系统呢] C-->J[编码和单元测试]-->6[写出正确的容易理解容易维护的程序模块] C-->K[综合测试]-->7[通过各种类型的测试使软件达到预定的要求] D-->8[通过各种必要的维护活动使系统持久地满足需要用户的]
1.4 软件过程
基本概念:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
几个模型:
graph LR A[软件过程模型]-->1[瀑布模型] A-->2[快速原型模型] A-->3[增量模型] A-->4[螺旋模型] A-->5[喷泉模型] 1-->Y1[优点] 1-->Q1[缺点] 2-->Y2[优点] 2-->Q2[缺点] 3-->Y3[优点] 3-->Q3[缺点] 4-->Y4[优点] 4-->Q4[缺点] 5-->Y5[优点] 5-->Q5[缺点] Y1-->11[可强迫开发人员采用规范的方法] Y1-->12[严格地规定了每个阶段必须提交的文档] Y1-->13[要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证] Q1-->14[传统的瀑布模型过于理想化,工作过程中不可能不犯错误] Y2-->21[快速原型模型是不带反馈环的] Y3-->31[能在较短时间内向用户提交可完成部分工作的产品] Y3-->32[使用户有较充裕的时间适应新产品,减少一个全新的软件的冲击] Q3-->33[增量构件集成时,不破坏原来已经开发出的产品] Q3-->34[软件体系结构必须是开放的] Y4-->41[对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标] Y4-->42[减少了过多测试或测试不足所带来的] Y4-->43[使用原型及其他方法来尽量降低风险] Y4-->44[使用原型及其他方法来尽量降低风险]