《软件工程导论》课后习题答案第一章 软件工程概论1
什么是软件危机
它们有哪些典型表现
为什么会出现软件危机
“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”
这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题
“软件危机”包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件
它们有以下表现:(1)对软件开发成本和进度的估量常常很不准确;(2)用户对“已完成的”软件系统不满意的现象常常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深化的趋势
出现软件危机的原因(1)开发人员与客户认识之间的矛盾(2)开发人员能力与开发目标之间的矛盾(3)预估与实际工作量之间的矛盾(4)客户认识的提高与软件维护之间的矛盾(5)遗产系统与实施软件之间的矛盾2
假设自己是一家软件公司的总工程师,当把图1
1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“假如一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢
”应该怎么反驳他
答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高
一个故障是代码错误造成的,有时这种错误是不可避开的,但要修改的成本是很小的,因为这不