阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】建设单位甲选定监理单位丙对应用软件开发项目实施全过程监理,承建单位乙承担项目建设任务。
在项目实施过程中,发生如下事件:
事件1:在应用软件开发的初期,项目遇到了因需求频繁变动而导致进度滞后、质量低下等问题,甲方要求监理单位认真分析问题出现的原因并给出解决办法。
事件2:软件测试是监理方进行质量控制的重要手段之一。总监理工程师要求监理工程师加强对乙方的测试方案、测试用例及测试数据等的重点监控。
事件3:由于开发的应用系统是企业的核心业务系统,因此软件的后期维护至关重要。在讨论如何提高软件可维护性的会议上,监理和承建单位就软件维护的一些问题产生了异议。
【问题1】针对事件1,导致需求变更的原因很多,请你列出一些常见的原因及可能的解决办法。
【问题2】针对事件2,为了检验程序的正确性,使用白盒测试方法时,应根据(1)和指定的覆盖标准确定测试数据。与设计测试数据无关的是(2)。
(1)候选答案:
A.程序的内部逻辑
B.程序的复杂程度
C.使用说明书
D.程序的功能
(2)候选答案:
A.该软件的设计人员
B.程序的复杂程度
C.源程序
D.项目开发计划
【问题3】针对事件3,一般来说,在软件维护过程中,大部分工作是由(1)引起的。在软件维护的实施过程中,为了正确、有效地修改程序,需要经历以下三个步骤:分析和理解程序、修改程序和(2)。修改(3)不归结为软件的维护工作。产生软件维护的副作用,是指(4)。
(1)候选答案:
A.适应新的软件环境
B.适应新的硬件环境
C.用户的需求改变
D.程序的可靠性
(2)候选答案:
A.重新验证程序
B.验收程序
C.书写维护文档
D.建立目标程序
(3)候选答案:
A.设计文档
B.数据
C.需求规约
D.代码
(4)候选答案:
A.开发时的错误
B.隐含的错误
C.因修改软件而造成的错误
D.运行时误操作
参考答案:
【问题1】原因:(1)开发人员对待需求开发的态度不认真;(2)用户参与不够;(3)用户需求的不断增加;(4)模棱两可的需求;(5)用户和需求开发人员在理解上的差异;(6)开发人员的画蛇添足;(7)过于简单的规格说明;(8)忽略了用户分类。可能的解决方法:(1)需求阶段尽可能采用原型或者用例方法明确用户需求;(2)采用严格的需求变更管理流程;(3)采用良好的体系结构;(4)采用面向对象方法。
【问题2】(1)A(2)D
【问题3】(1)C(2)A(3)B(4)C
解析:
【问题1】本问题主要涉及软件工程的相关知识和实际工作中考生针对需求存在问题的实际经验,可以参见教材第三版的相关内容做回答。在答题的时候,碰到此类型的题目,考生可以根据自己对该知识点的掌握和实际中碰到的问题去回答,就可以得到较高的分数。
导致需求变更的原因,首先应该想到的是既然需求要变更,那么一定是当初需求没有搞清楚,进一步思考,当初没有搞清楚的的原因,可能会有用户配合不好,模棱两可的需求描述等等,另外,用户的需求不断增加,用户和软件人员对需求理解的差异等也一定是原因。
同样的思考方式,提出可能的解决办法,既然用户和软件人员对需求的理解容易产生理解上的差异,那么通过用原型法去明确用户的需求。针对用户需求不断增加的问题,可以采用良好的体系结构,采用面向对象思想等等去应对,对于用户配合不好、模棱两可的需求描述可以通过良好的需求管理来减少这些情况的发生。
【问题2】软件测试的目的是软件中的错误。因为不可能把所有可能的输入数据都拿来测试(时间花费不起),为了提高测试的效率,应该选择发现错误的可能性大的数据作为测试数据。
使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和指定的覆盖标准,可以不考虑程序的功能。
软件项目计划(SoftwareProjectPlanning)是一个软件项目进入系统实施的启动阶段,主要进行的工作包括:确定详细的项目实施范围、定义递交的工作成果、评估实施过程中主要的风险、制定项目实施的时间计划、成本和预算计划、人力资源计划等,与设计测试数据没有关系。
【问题3】我们称在软件运行/维护阶段对软件产品所进行的修改就是所谓的维护。要求进行维护的原因多种多样,归结起来有三种类型:
改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷。
因在软件使用过程中数据环境发生变化或处理环境发生变化,需要修改软件以适应这种变化。
用户和数据处理人员在使用时常提出改进现有功能,增加新的功能,以及改善总体性能的要求,为满足这些要求,就需要修改软件把这些要求纳入到软件之中。
由这些原因引起的维护活动可以归为以下几类:
①改正性维护
在软件交付使用后,必然会有一部分隐藏的错误被带到运行阶段来。这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程,就叫做改正性维护。
②适应性维护
随着计算机的飞速发展,外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而去修改软件的过程就叫做适应性维护。
③完善性维护
在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。
在维护阶段的最初一两年,改正性维护的工作量较大。随着错误发现率急剧降低,并趋于稳定,就进入了正常使用期。然而,由于改造的要求,适应性维护和完善性维护的工作量逐步增加。实践表明,在几种维护活动中,完善性维护所占的比重最大,来自用户要求扩充、加强软件功能、性能的维护活动约占整个维护工作的50%。
因此,填空项(1)选C正确。
在软件维护的实施过程中,为了正确、有效地修改,需要经历以下3个步骤:分析和理解程序、修改程序和重新验证程序。经过分析,全面、准确、迅速地理解程序是决定维护成败和质量好坏的关键。有如下几种方法:分析程序结构图、数据跟踪、控制跟踪及其他方法。在将修改后的程序提交用户之前,需要通过静态确认、计算机确认和维护后的验收,保证修改后的程序的正确性。因此填空项(2)选A正确,填空项(3)选B正确。
所谓软件维护的副作用,是指因修改软件而造成的错误或其他不希望发生的情况,有以下三种副作用:
①修改代码的副作用:在使用程序设计语言修改源代码时,都可能引入错误。例如,删除或修改一个子程序、删除或修改一个标号、删除或修改一个标识符、改变程序代码的时序关系、改变占用存储的大小、改变逻辑运算符、修改文件的打开或关闭、改进程序的执行效率,以及把设计上的改变翻译成代码的改变、为边界条件的逻辑测试做出改变时,都容易引入错误。
②修改数据的副作用:在修改数据结构时,有可能造成软件设计与数据结构不匹配,从而导致软件出错。数据副作用就是修改软件信息结构导致的结果。例如,在重新定义局部的或全局的常量、重新定义记录或文件的格式、增大或减小一个数组或高层数据结构的大小、修改全局或公共数据、重新初始化控制标志或指针、重新排列输入/输出或子程序的参数时,容易导致设计与数据不相容的错误。
③文档的副作用:对数据流、软件结构、模块逻辑或任何其他有关特性进行修改时,必须对相关技术文档进行相应修改。否则会导致文档与程序功能不匹配,缺省条件改变,新错误信息不正确等错误。
使得软件文档不能反映软件的当前状态。如果对可执行软件的修改不反映在文档里,就会产生文档的副作用。例如,对交互输入的顺序或格式进行修改,如果没有正确地记入文档中,就可能引起重大的问题。过时的文档内容、索引和文本可能造成冲突,引起用户的失败和不满。因此填空项(4)选C正确。