第11章 软件演化 1.只有质量差的软件产品才需要维护。(B)
2.遗留系统是许多年以前开发的且已经没有商业价值的计算机系统。(B)
3.更换遗留系统是有业务风险的。(A) 4. 软件的维护成本通常比开发成本低。(B) 5. 逆向工程(Reverse Engineering)通常用在软件生命周期的( )阶段,它是从源代码
或目标代码中提取设计信息。(D) A. 需求分析 B. 软件设计 C. 软件测试 D. 软件维护 1. 为什么软件系统在投入使用之后还要进行变更?
软件系统在投入使用之后仍然需要进行变更,其主要原因在于: ??软件在使用过程中,新的需求不断出现; ??商业环境在不断地变化; ??软件中的缺陷需要进行修复; ??计算机硬件和软件环境的升级需要更新现有的系
统; ??软件的性能和可靠性需要进一步改进。 3. 为什么说软件维护是一项困难的工作? 软件维护工作的困难主要表现在以下几个方面: ??读懂别人的程序是很困难的,而文档的不足更增加了这种难度。一般开发人员都有这样的体会,修改别人的程序还不如自己重新编写程序。 ??文档的不一致性是软件维护困难的又一个因素,主要表现在各种文档之间的不一
致以及文档与程序之间的不一致性,从而导致维护人员不知所措,不知怎样进行修改。这种不一致性是由于开发过程中文档管理不严造成的,开发中经常会出现修改程序而忘了修改相关的文档,或者某一个文档修改了,却没有修改与之相关的其他文档等现象,解决文档不一致性的方法就是要加强开发工作中文档的版本管理。 ??软件开发和软件维护在人员和时间上存在差异。如果软件维护工作是由该软件的
开发人员完成,则维护工作相对比较容易,因为这些人员熟悉软件的功能和结构等。但是,通常开发人员和维护人员是不同的,况且维护阶段持续时间很长,可
能是10~20年的时间,原来的开发工具、方法和技术与当前有很大的差异,这也造成了维护的困难。 ??软件维护不是一件吸引人的工作。由于维护工作的困难性,维护经常遭受挫折,
而且很难出成果,所以高水平的程序员自然不愿主动去做,而公司也舍不得让高水平的程序员去做。 5. 软件重构与正向工程的区别是什么? 在这里,软件重构代表着软件再工程,正向工程
代表着传统的软件开发。 正向工程是从新的系统描述开始,通过设计和实现得到一个新的系统;软件重构是从现有系统开始,通过对该系统的理解和转换,最终得到一个再工程的系统。通常,软件重构不会改变系统的总体结构。