软件工程 科学出版社 郑逢斌主编 第14章 软件维护 课后习题答案
1. 为什么说软件维护是不可避免的?
因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进展软件的修改或纠正软件开发过程未发现的错误,增强、改良和完善软件的功能和性能,以适应软件的开展,延长软件的寿命,软件的维护是不可防止的。
2. 纠错和排错性维护是相同的吗? 说明理由。
不一样。对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程,称为纠错性维护。
3. 有人说,提高软件的可维护性是软件生产工程化的根本目标之一。你同意这个观点吗?试说明理由。
同意。系统维护是系统可靠运行的重要技术保障
4. 怎样避免维护的副作用?
维护的副作用是指由于维护或者在维护过程中其他一些不期望的行为引入的错误
代码副作用: 如修改或者删除程序、修改或者删删除语句标号、修改逻辑符号等等。慎重,可通过回归测试发现
数据副作用: 因修改信息结构而带来的不良后果,如局部和全局数据的再定义,记录或者文件格式的再定义等
文档副作用: 由于在设计文档中未能准确反映软件修改情况而带来的不良后果
5. 讨论高级语言对适应性维护的影响。改编一个程序以适应新的要求总是可能的吗?
所谓适应性维护,是指修改软件以适应外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)发生的变化。
使用高级语言,如 FORTRAN,C 等,它们以接近自然语言的方式编写程序。这样的程序可理解性强,结构化、模块化都很好,除了与硬件、相关软件(如操作系统)和数据库管理系统有关的部分外,都可以用它们编写程序。但每一种类型的计算机,即使提供同一种高级语言,也有可能海入它自己特有的功能。为作到可移植,必须避开这些特殊的功能,使用语言的标准文本来编写程序。
当前。许多软件开发商以一些高级语言为核心,开发了众多功能强大的软件编程环境,如Delphi(以 Pascal 为编程语言),VasualC++(以 C++为编程诺言),Vasual Basic(以 Basic 为编程语言),Powerbuilder(以 C++为编程语言)等。在这些软件中提供了大量的控件或类库,可以帮助程序员以最小的工作温实现多种功能,还可以与多种数据库接口。所有这些,对于适应性维护,都有有利的影响。但事情也不是绝对的。在 MS Windows 或NT 环境下开发的软件不一定能够直接转移到 Limux 环境下。虽然许多人在这方面正在努力。
国外一些计算机厂商在硬、软件结合的环境下综合考虑软件跨平台使用的问题。例如,Oracle数据库管理系统在几乎所有的硬件平台上微软和苹果的 Wndows环境下都可以安装这样使用 OracleSQL 编写的程序在多种硬件平台上,多数据库和操作系统的环境下,不用修改程序,或修改少量程序,就可以直接运行。
6. 计算软件价格时,应该不应该把维护费用计成即去开发费用外,还要加上预防的维护用)?么?
维护是软件生命周期中非常重要的一个环节,所以除去开发费用外,还要加上预防的维护费用在软件的价格里面。
7. 什么是软件再工程?软件再工程的主要活动有哪些?
软件再工程是指在逆向工程所获信息的根底上修改重构已有的系统,产生的一个新版本,或者说利用这些信息修改或重构软件系统的工作。
它定义了6 类活动,即库存目录分析、文档重构、逆向工程、代码重构、数据重构、正向工程。