暂且不论信息技术革命意味着什么,至少它已经让软件成为越来越多产品中的一部分。从烤箱到航天飞机,都可以发现软件的存在。从中可以看出,有大量软件已经被开发出来或者正在开发过程中。软件开发绝不是一件简单的事情;它是一个富有高度创造性的过程。软件领域的迅速发展也使软件项目开发遇到很多问题,比如功能不全、费用超支、逾期完工、质量低下等。这些问题或挑战早在20世纪60年代就已提出,并且在1968年提出了“软件工程”一词,旨在创建一种着眼于软件密集型系统开发的准则。
IEEE[84]对软件工程的正式定义为:软件工程意味着将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护中。软件工程也在很多著作中被提及和讨论,如Sommerville[163]、Pfleeger和Atlee[134]等。本书的目的是阐明经验研究(Empirical Study)和特定的实验方法非常适用于软件工程领域。上面定义中的三个方面对本书非常重要。首先,它指出软件过程跨越了生命周期的不同阶段;第二,它强调了对系统化的、严格约束的方法的需求;第三,它强调了量化的重要性。经验研究的使用和这三个方面都有关系。1.1节将进一步讨论软件工程背景。1?2节讨论使软件工程更科学化的必要性以及经验研究在此过程中发挥的重要作用。