问答题
试题五(共25分)
阅读以下关于软件维护的叙述,在答题纸上回答问题1至问题4。
某企业两年前自主研发的消防集中控制软件系统在市场上取得了较好的业绩,目前已成功应用到国内外众多企业用户的消防管理控制系统中。该软件系统通过不同型号消防控制器连接各种消防器件,实现集中式消防告警信息显示与控制。该软件系统的系统维护主管组织,对近期收集到的该软件系统的如下维护申请进行了讨论:
(1)将系统目前的专用报表功能改成通用报表生成功能,以适应未来用户可能提出的报表格式变化需求;
(2)在界面语言中增加德文支持,以满足新增的两个德国企业用户的使用要求;
(3)修正系统在与控制器通信时由于硬件网络故障导致的与控制器之间的连接失效,而控制器后续无法重新连接的问题;
(4)完成因某己支持型号消防控制器通信协议改变而导致的相应软件修改;
(5)增加与某新型号消防控制器的互连通信功能,以支持在后续推广过程中与该型号消防控制器进行互连;
(6)修正用户报告的由于系统从Win7平台迁移到最新发布的Win8平台而导致的部分显示功能失效的问题;
(7)修正用户报告的系统自动切换消防平面图形时部分器件位置显示错误的问题:
(8)改进系统历史消防告警记录的检索算法,以提高系统在处理大量消防报警记录时的效率;
(9)将系统目前针对某一特定数据库管理系统的数据库访问方式改成基于数据源的通用数据库访问方式,以适应用户可能提出的使用其他数据库管理系统的需求。
问答题
[问题1](6分)
软件维护的内容通常分为正确性维护、适应性维护、完善性维护以及预防性维护四类,请用300字以内文字说明这4类软件维护内容的特点与区别。
【正确答案】 正确性维护:指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。
适应性维护:指使应用软件适应信息技术变化和管理需求变化而进行的修改。
完善性维护:指为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。
预防性维护:指为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。
【答案解析】 本题考查的是软件维护的基本概念及软件维护实施的基本方法。
本问题考查的是软件维护内容的基本分类及特点,软件维护的内容不只是修正错误,按照维护性质的不同,可以将软件维护的内容分为正确性维护(或改正性维护)、适应性维护、完善性维护和预防性维护。
考生在解答时应注意区分正确性维护之外其他三种维护内容的差异,其中适应性维护指应用软件适应信息技术变化和管理需求变化而进行的修改,通常不涉及软件功能的扩充;而完善性维护指为扩充功能和改善性能而进行的修改,通常是指软件在投入使用并正常运行的过程中,针对用户提出的增加新功能、修改现有功能等要求进行的维护;预防性维护则指改进软件未来的可靠性或可维护性,或者为了给未来的改进提供更好的基础而对软件进行的修改。
问答题
[问题2](9分)
请根据不同类型软件维护的特点,将上述(1)~(9)的维护申请填入表5-1相应的类别中。
【正确答案】
【答案解析】 本问题考查考生按照维护性质将收集到的维护申请进行分类,以便后续进行处理的能力。
在问题说明中,维护申请(1)和(9)是为了提高软件未来的可维护性而需要进行的修改,分别通过修改报表生成模式及数据库访问方式,提高软件系统未来的可维护性,以适应未来用户可能提出的需求变化,因此应属于预防性维护。维护申请(2)、(5)和(8)均与软件使用过程中出现的新需求有关,(2)和(5)均涉及软件原设计中未包含的新功能需求,(8)则属于为改善性能而需进行的修改,且它们均和改进软件未来的可维护性或可靠性无关,因此这三项维护申请应属于完善性维护。维护申请(3)和(7)均与软件使用过程中发现的软件错误有关,因此应属于正确性维护。维护申请(4)和(6)分别是由于控制器部件更新和操作系统升级而需要进行的修改,均是为了适应新的软硬件环境变化而进行的修改,因此应属于适应性维护。
问答题
[问题3](4分)
对于软件维护申请的处理,首先需要确定维护工作的类型,不同类型的维护工作,其处理流程往往不同,图5-1是区分不同维护类型的典型处理流程,请将表5-1中代表维护类型的序号(1)~(4)填入图5-1的(a)~(d)。
【正确答案】(a) (2) (b) (3) (c) (4) (d) (1)
((b)与(c)可互换)
【答案解析】 本问题考查考生对不同类型维护申请处理流程的掌握,考生应能识别不同类型维护申请在处理流程上的关键差异。其中正确性维护需要首先评价错误的严重程度,如果错误非常严重(例如某个关键功能不能运行),则应立即进行维护实施,若错误不严重,则要与其他软件开发任务一起,统一安排实施,因此图5-1今的(d)应填(1);与正确性维护类似,适应性维护申请因为涉及软件现有功能是否能够正常使用,因此一旦确认通常也是必须进行实施的,但适应性维护首先应评价维护申请并进行优先次序的分类,然后统一进行维护实施,因此图5-1中的(a)应填(2);而对于完善性维护与预防性维护,出于对商业策略、当今和今后软件产品方向等方面的考虑,不是所有的完善性维护或预防性维护都会被接受,因此需要对维护申请进行进一步评估和分类,以确定是否接受申请并进行维护实施。对于未被接受的完善性维护或预防性维护申请,直接通知申请者;对于接受的申请,评定优先次序后统一进行实施。因此图5-1中的(b)和(c)应分别填(3)和(4)。
问答题
[问题4]
在讨论第(4)项维护工作的方案时,项目组发现与相应的消防控制器通信的子模块重用了企业之前淘汰的某款软件中实现相应功能的源代码,而现有技术人员没有参加过该代码的开发工作,并且重用的这部分代码开发不规范,其数据和代码结构设计都很差,相应的文档极不完整,维护记录也很简略。针对上述情况,项目组一致认为在原有代码基础上进行修改维护难度很大,因此决定采用软件工程的方法对该子模块进行重新设计、编码和测试,请从可行性和该模块后续可维护性两个方面简要分析采取这种方案的原因。
【正确答案】 可行性:以已有目前可以运行的软件作为参考,重新开发的生产率应大大高于平均值;目前已经拥有使用该软件的经验,所以能够容易地确定新的需求和修改方向;从软件代码开发与维护的角度看,重新编写新代码的费用可能远低于维护现有文档不齐全的代码的费用。
后续可维护性:使用现代的设计概念,重新设计软件结构,能够极大地方便今后的维护;此外采用软件工程的方法进行重新设计、编码和测试,可以形成完整的软件文档,也便于后续的软件维护。
【答案解析】 本问题考查难以维护的程序(也称为“奇异码”)的具体维护方法选择。从问题说明中可以看出,因为现有技术人员没有参加过该代码的开发工作,并且重用的这部分代码开发不规范,其数据和代码结构设计都很差,相应的文档极不完整,维护记录也很简略,因此该模块代码属于典型“奇异码”,对于该模块的维护可以采用修改原有代码和重新进行设计开发两种方式进行,而采用后者具有可行性和后续可维护性两个方面的优势,具体表现为:
从可行性角度看,由于已有目前可以运行的软件作为参考,因此重新开发的生产率应大大高于平均值;并见目前已经拥有使用该软件的经验,所以能够容易地确定新的需求和修改方向;从软件代码开发与维护的角度看,重新编写新代码的费用可能远低于维护现有文档不齐全的代码的费用。
从后续可维护性看,使用现代的设计概念,重新设计软件结构,能够极大地方便今后的维护;此外采用软件工程的方法进行重新设计、编码和测试,可以形成完整的软件文档,也便于后续的软件维护。