软件=程序+数据+文档
- 程序设计阶段-50->60年代
- 程序系统阶段-60->70年代
- 软件工程阶段-70年代后
程序:完成预定功能的可执行指令序列
数据:适合处理信息的数据结构
文档:开发,使用,维护过程的图文资料
软件特点:
- 复杂
- 成本高
- 手工作业
- 维护难
- 非传统硬件过程
- 逻辑实体,无磨损性
软件危机:开发和维护中遇到的一系列问题(1968年)
- 如何开发以应对需求
- 如何维护现有的软件
表现
- 成本估算不准
- 需求和现实差异
- 质量不可靠
- 不可维护
- 无文档资料
- 成本占比上升
- 开发效率低
原因
主观上:忽视需求分析,轻视维护,(无认识)程序是软件的一部分,(无认识)开发是周期的次要阶段,后期变动成本高
客观上:软件是逻辑实体(缺乏可见性,管理控制困难),维护困难,规模大->复杂性高