A部分: 软件工程
现在,几乎所有的国家都依赖于以计算机为基础的复杂系统。国家基础设施和公共事业 都依赖于以计算机为基础的系统并且大部分电子产品都包含计算机及控制软件。工业制造和 配送完全用计算机处理,财政系统也一样。因此,对于国家和国际经济运作,具有成本效益地生产和维护软件是非常重要的。
软件工程是一门工程学科,其研究重点是高质量软件系统开发的经济性。软件是抽象无 形的。它不受材料约束、不受物理规律或制造流程限制。在某些方面,这可以简化软件工程, 因为软件的潜力不存在任何物理上的限制。然而,这种缺乏自然约束意味着软件可能很容易变得极其复杂,也因此很难被理解。
软件工程的概念是在1968年举行的一次讨论什么是后来被称为“软件危机”的会议上 首先提出的。这个软件危机是由以集成电路为基础的新计算机硬件的引入而直接导致的。这 使得迄今为止不可行的计算机应用成为一个可行的主张。由此产生的软件比以前的软件系统数量更大、更复杂。
开发这些系统的早期经验显示,非正规软件的开发还不够好。大部分项目有时推迟,软 件的成本远远超过预期、不可靠,很难维护且运行不稳定。软件开发正处于危机之中,在硬 件成本下跌的同时软件成本却在迅速增加。在大型软件系统中,需要有新的技术和方法来控制其固有的复杂性。
这些技术已成为软件工程的一部分,目前正被广泛使用。然而,当我们编制软件的能力增加的同时,所需软件系统的复杂度也随之增加。由计算机与通信系统的一体化以及复杂的图形用户界面而产生的新技术对软件工程师提出了新的要求。因为许多公司仍然不能有效地应用软件工程技术,有太多的项目仍然在生产不可靠、交付逾期和预算超支的软件。
自1968年起,我们已经取得了巨大的进展,软件工程的发展显著地改善了我们的软件。 我们对软件开发所涉及的活动已经有了更好的理解,并且在软件需求、设计和实施中已经有 了成熟有效的方法(见图1-1)。新的表示方法和工具减少了开发庞大而复杂的系统所需的工作量。
现在,在软件工程中并不存在单一的“理想方法”。不同类型系统和使用这些系统的不 同类型组织的广泛的多样性,意味着我们需要软件开发方法的多样性。但是,过程和系统架构的基本的概念才是所有技术方法的基础,这才是软件工程的本质。
软件工程师确实可以对他们的成就引以为豪。没有复杂的软件,我们就不能探索宇宙, 也不会有互联网和现代通信,所有形式的旅行都会更加危险且代价昂贵。软件工程已经做了很大贡献,随着这门学科的成熟,它会在21世纪做出更大的贡献。