第1章 软件过程
1.1 软件开发的本质
在关于信息系统(information system,IS)管理的文献中,充满了项目失败、逾期和超预算、有缺陷的解决方案,以及不可维护的系统等例子。虽然大量引用Standish Chaos报告(声称有70%的软件项目失败)是有些夸张(Glass 2005),但毋庸置疑的是,许多“成功的”系统(换句话说,就是已经付款并交付给用户���系统)被可靠性、性能、**性、可维护性及其他问题所困扰。
为了了解这些问题的原因,我们首先需要了解软件开发的本质。在一篇有代表性的论文中,Brooks(1987)阐述了软件工程的本质问题和意外事件。软件工程的本质问题体现在软件本身所固有的困难中,我们只能承认这些困难——没有获得突破性进展或“银弹”的方法。按照Brooks的说法,软件工程的本质问题是由软件固有的复杂性、一致性、可变性和不可见性所导致的。
软件的“本质困难”定义了软件开发的不变事实。不变事实声明软件是一种创造性开发行为的产品——由工匠而不是**艺术家所完成的行为意义上的一种工艺品或艺术品。在典型的情况下,软件并不是制造业重复性行为的结果。
……