本文内容来自于对《软件工程导论》(第6版,张海潘 牟永敏 编著),仅为个人学习记录。如涉及版权问题请版权方联系我。
1.1软件危机
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含两方面的问题:
如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机有一下的典型表现:
(1)对软件成本和进度的估计常常很不准确。
(2)用户对“已完成的”软件系统不满意的现象经常发生。
(3)软件产品的质量往往靠不住。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料。
(6)软件成本在计算机系统总成本中所占的比例逐年上升。
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件生命周期:
软件开发最初的工作应是问题的定义;然后要进行可行性研究;接下来应该进行需求分析。进过上述软件定义时期的准备工作才能进入开发时期,而在开发时期,首先要对软件进行设计(通常又分为概要设计和详细设计两个阶段),然后才能进入编写程序的阶段,程序编写玩之后还必须经过大量的测试工作(需要的工作量通常占软件开发全部工作量的40%~50%)才能最终交付使用。所以,编写程序只是软件开发过程中的一个阶段,而且在典型的软件开发工程中,编写程序所需的工作量只占软件开发全部工作量的10%~20%。
软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。
消除软件危机的途径:
首先应该对计算机软件有一个正确的认识。应该彻底消除在计算机系统早期发展阶段形成的“软件就是程序”的错误观念。一个软件必须由一个完整的配置组成,事实上,软件是程序、数据及相关文档的完整集合。其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。1983年IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。
1.2软件工程
概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
1968年在第一界NATO会议上曾经给出了软件工程的一个早期定义:“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。”
1993年IEEE进一步给出了一个更全面更具体的定义:“软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。”
软件工程具有下述的本质