第1章软件工程概论
1.1软件危机
为吸取历史经验教训,应该认真研究产生软件危机的原因,探讨消除软件危机的途径。
1.1.1 软件危机简介
通常把在计算机软件��开发与维护过程中所遇到的一系列严重问题笼统地称为软件危机。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。
概括地说,软件危机包含以下两方面的问题。
(1)如何开发软件,以满足社会对软件日益增长的需求。
(2)如何更有效地维护数量不断膨胀的已有软件。
具体地说,软件危机主要有以下一些典型表现。
?对软件开发成本和进度的估计常常很不准确。
?经常出现用户对“已完成的”软件产品不满意的情况。
?软件产品的质量往往达不到要求。
?软件通常是很难维护的。
?软件往往没有适当的文档资料。
?软件成本在计算机系统总成本中所占的比例逐年上升。
?软件开发生产率提高的速度远远不能满足社会对软件产品日益增
长的需求。
鉴于软件危机周期长且难于预测,因此把它称为“软件萧条”或“软件困扰”可能更恰当一些。
1.1.2 产生软件危机的原因
1.客观原因
软件是计算机系统中的逻辑部件而不是物理部件,其显著特点是缺乏“可见性”,因此,管理和控制软件开发过程相当困难。此外,软件维护通常意味着改正或修改原有的设计,从而使得软件较难维护。 《软件工程导论》已经出版了5个版本,颇受读者欢迎,先后被评为“全国高校出版社**畅销书”、“全国**畅销书(前10名)”和 “北京高等教育精品教材”。国内许多高校用它作为软件工程课的教材,累计销售约100万册。
为配合《软件工程导论(第5版)》的出版,作者针对《软件王程导论(第4版)》所编写的《软件工程导论学习辅导》的基础上作了适当修改。相对于前者而言,本书主要增加了对Rational统一过程、敏捷过,程(含极限编程)以及微软过程等内容的复习,并且给出了与上述内容密切配合的习题和习题解答。
本书正文共10章。 第1章“软件工程概论”,涵盖教材(第四版,下同)第1章的**内容;第2章“结构化分析”,涵盖教材第2、3、4章的**内容;第3章“结构化设计”,涵盖教材第5、6章的**内容;第4章“结构化实现”,涵盖教材第7章的**内容;第5章“维护”,涵盖教材第8章的**内容;第6章“面向对象方法学引论”,涵盖教材第9章的**内容;第7章“面向对象分析”,涵盖教材第10章的**内容;第8章“面向对象设计”,涵盖教材第11章的**内容:第9章“面向对象实现”,涵盖教材第12章的**内容;第10章“软件项目管理”,涵盖教材第13章的**内容。
每章均由3部分内容组成:第1部分简明扼要地复习本单元的**内容;第2部分给出与本单元内容密切相关的习题,其中一些题目与教材上的题目相同,另一些题目是教材上没有的,当然,也有一些教材上的题目没有包含在本书中,可作为软件工程课的练习题,留给读者独立完成;第3部分是习题解答,对典型习题的解答不是简单地给出答案,而是仔细分析题目,讲解解题思路,从而有助于读者举一反三,学会用软件工程方法学分析问题和解决问题。