1.1软件危机
介绍:
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1.2软件工程
1.2.1介绍
概括的说,软件工程 是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把 经过时间考验而证明正确的管理技术和当前能够得到最好的技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程
具有的本质特性
1.软件工程关注于大型程序的构造
2.软件工程的中心课题是控制复杂性
3.软件经常变化
4.开发软件的效率非常重要
5.和谐地合作是开发软件的关键
6.软件必须有效地支持它的用户
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
1.2.2软件工程的基本原理
1.用分阶段的生命周期计划严格管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚地审查
6.开发小组的人员应该少而精
7.承认不断改进软件工程实践的必要性
1.2.3软件工程方法学
1.传统方法学
2.面向对象方法学
1.3软件生命周期
1.问题定义
2.可行性研究
3.需求分析
4.总体设计
5.详细设计
6.编码和单元测试
7.综合测试
1.4 软件过程
1.4.1瀑布模型
传统瀑布模型
特点:
1.阶段间具有顺序性和依赖性
①必须等前一阶段的工作完成后才能进行下一阶段的工作
②前一阶段的输出文档是后一阶段的输入文档,只有前一阶段的输出文档正确,后一阶段的工作才能得到正确的结果
2.推迟实现的观点
瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理设计
3.质量的保证
软件工程的基本目标是优质、高产。为保证质量,瀑布模型的每个阶段坚持两个重要做法
①每个阶段都必须完成规定的文档,灭有交出合格的文档就是没有完成该阶段的任务
②每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误
实际瀑布模型
1.4.2快速原型模型
快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品的功能的一个子集
不带反馈
优点:
软件产品的开发基本上是线性顺序进行的
1.4.3增量模型
增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成、测试
1.4.4螺旋模型
基本思想:使用原型及其他方法来尽量降低风险。可以看做是在每个阶段前都增加了风险分析过程的快速原型模型
1.4.5喷泉模型
1.4.6RationI 同一过程
最佳实践(最有效的软件开发经验)
①迭代式开发
②管理需求
③使用基于构件的体系结构
④可视化建模
⑤验证软件质量
⑥控制软件变更
1.4.7敏捷过程与极限编程
1.敏捷过程
①个体和交互胜过过程和工具
②可以工作的软件胜过面面俱到的文档
③客户合作胜过合同谈判
④响应变化胜过遵循计划
2.极限编程
把好的开发实践运用到极限
(1)极限编程的有效实践
客户作为开发团队的队员 使用用户素材 短交付周期
验收测试 结对编程测试驱动开发 集体所有
可持续的开发速度 开放的工作空间 及时调整计划
简单的设计 重构 使用隐喻
持续集成