1.什么是软件危机?
-
所谓
软件危机
,就是指软件在开发过程、产品上线、后期维护、安全可靠等方面暴露出的一些问题。
OS/360 操作系统是上世纪 60 年代最复杂的软件系统之一,也是第一个超大型的软件项目,一共有 1000 名左右的程序员参与了项目的研发,花费了 5000 个人年,最终无法运行。项目负责人佛瑞德·布鲁克斯后来写了一本软件工程的经典书籍《人月神话》,承认在他管理这个项目的时候,犯了很多错误,造成了价值数百万美元的损失。 -
如果是说 OS/360 还只是造成了经济损失的话,Therac-25 事件就是真的导致了人员死亡。Therac-25 是加拿大原子能有限公司(AECL)所生产的放射线疗法机器,在 1985 年到 1987 年之间,在美国及加拿大,至少有六起和 Therac-25 相关的医疗事故是因为程序 bug,导致部分病患受到比正常剂量高一百倍的辐射,因而造成患者重伤甚至死亡。
-
当软件的规模越来越大,复杂度不断增加,软件项目开发维护过程中的问题就逐步暴露出来:软件产品质量低劣、软件维护工作量大、成本不断上升、进度不可控、程序人员无限度地增加。所以在 60 年代,
“软件危机”
的概念被提出来。
2.什么是软件工程?
- 软件工程就是为了研究和克服软件危机而生
- 软件工程就是要用工程化方法来开发维护软件。用一定的过程,采用科学的方法,借助工具来开发软件。就是要用工程化方法去规范软件开发,让项目可以按时完成、成本可控、质量有保证。
- 软件工程=过程+方法+工具
3.软件项目生命周期(阶段)
- 生命周期:软件开发过程也被分成了几个阶段:
需求定义与分析、设计、实现、测试、交付和维护
,这也就是我们常说的软件项目生命周期
。 - 各个阶段都会有人的参与,于是产生了软件项目里的各种角色:
项目经理、产品经理、架构师、程序员、测试工程师、运维工程师
。而对这整个过程的管理,我们通常称之为“项目管理”
。
参考:极客时间-软件工程之美