本章开始介绍第二节内容,主要是一些历史性的东西~
抽象软件实体和虚拟计算机都是软件工程的基础环境因素,它们能从根本上影响软件工程的生产能力,而且是软件工程无法反向影响而只能适应的外界因素;不论是硬件水平的提升,还是系统软件的发展,都会要求软件工程方法和技术做出相应的调整~
软件工程的目标是解决现实问题,软件工程的进步能让问题解决的过程更顺利;反之,现实问题的变化也会给软件工程提出新的要求~
不论是实践经验的积累,还是研究上的进展,软件工程自身都会不断发展,既包括软件开发与技术上的发展,也包括软件开发过程中的发展,还包括一些影响深远的重要观念的形成。
1.基础环境:
虚拟计算机:研究用大型机(出于军事和科研考虑)
主要的抽象软件实体:软件依赖于硬件,被视为硬件的零件
2.主要现实问题:科学计算
3.软件开发方法与技术:(没有普遍使用的开发技术)
4.软件开发过程:此时的理论是“制造软件和硬件是一样的”
5.重要思想:重视产品质量,进行评审和测试
6.总结:科学计算、机器为中心编程、软硬件生产方式相同
1.基础环境
2.主要现实问题:商务应用
3.软件开发方法与技术:依靠程序员个人能力,是“工艺式”的开发
4.软件开发过程:“构建-修复”的过程(个人英雄主义编程)
5.重要思想:
软件不同于硬件:软件比硬件易于修改、软件没有损耗、软件不可见、软件于现实世界关系更密切
避免工艺式生产,采用工程式
(需要注意,这一阶段工艺式生产导致了“软件危机”的出现,主要现象为成本超支、质量不可靠等)
6.总结:业务应用、软硬件不同、工艺式开发
1.基础环境
2.主要现实问题
随着商业微型计算机的销售量增加,软件产品的需求也在与日俱增,保证复杂软件系统开发的成功成为开发工作的主要指导思想~
3.软件开发方法与技术
前期采用逐步精化,自顶向下的软件开发方法,中后期采用结构化设计和结构化分析等结构化分析与设计方法。在这一年代,逐步产生了“低耦合高内聚”的模块化、抽象数据类型、信息隐藏等重要思想~
4.软件开发过程:采用瀑布模型,在开发过程中越早发现缺陷并进行修复,提高了开发效率,提高了项目成功率
5.重要思想:越早发现和修复问题,代价越低~
6.总结:结构化方法、瀑布模型、强调规则和纪律。奠定了软件工程的基础,是后续年代软件工程发展的支撑~
1.基础环境
2.主要现实问题
业务应用仍是这一阶段软件工程面临的主要问题,同时软件开始服务消费大众的工作和生活
人们对软件产品的需求出现爆炸性增长,提高生产力成为他们的主要目标之一
此外,随着软件开发成本越来越高,人们更愿意通过维护延长一个软件产品的生存周期而不是将其废弃或重新开发~
3.软件开发方法与技术
结构化方法:该阶段的结构化方法更注重系统构建而㐊程序构建
面向对象编程:结构和关系能够为领域应用提供更加自然的支持,使得软件的复用性和可修改性更加强大~
软件复用:提高生产力的重要方法
4.软件开发过程
过程模型:软件过程的质量能够极大影响软件的质量,要保证产品质量就必须重视开发过程
过程评价:参照评估模型进行评估
使用工具支持的软件开发过程:对后续的软件工程发展尤其是过程管理的发展起到了重要的作用~
5.重要思想
没有银弹:软件该问题的银弹应该是能欧使得软件开发在生产率、可靠性和间接性上取得根本性提高的技术,由于软件有下列无法规避的内在特性,因此没有银弹:
重视人的作用:将个人与团队工作置于比开发过程更加重要的地位~
6.总结:追求生产力最大化、现代结构化方法/面向对象编程广泛应用、重视过程的作用
1.基础环境
2.主要现实问题
3.软件开发方法与技术
4.软件开发过程
5.重要思想:重视最佳实践方法
6.总结:web应用出现、追求快速开发、可变更新和用户价值
1.基础环境
2.主要现实问题
3.软件开发方法与技术
4.软件开发过程
敏捷过程
5.总结:大规模web应用,大量面向大众的web产品,追求快速开发、可变更新、用户价值和创新