您的当前位置:首页正文

软件维护

2021-10-19 来源:欧得旅游网
软件维护

一、复习要求

1. 了解软件质量定义和软件质量度量。 2. 了解软件维护的类型与策略。 3. 了解软件维护的过程与管理方法。 4. 了解可维护性的概念。 5. 了解提高可维护性的方法。

6. 了解软件逆向工程与再工程的概念

二、例题分析

【例1】软件产品质量是生产者和用户都十分关心的问题,早期的质量管理只看到产品的质量,近年来质量管理向( A )发展,一个重要的基本假设是( B )直接影响( C )。这一假设最初是根据制造业情况作出的。( D )自然就会得到高质量的产品。( D )的思想是美国工程师戴明(W. E. Deming)提出来的,戴明等人在质量管理中引入统计质量控制的概念,以降低软件产品缺陷数作为( D )的目标,请选择合适的答案完成下面有关软件质量与过程的关系的示意图。

评价产品质量 HE

质量是否合格 F

G

供选择的答案: A ② 产品的质量 ③ 产品质量的控制 ∼ D. ① 过程的质量 ④ 过程质量的控制 ⑤ 过程的改进 ⑥ 产品的改进

⑦ 技术的革新

E ② 将过程标准化 ③ 开发产品 ∼ H. ① 定义过程

④ 改进过程 ⑤ 质量控制

B. 答案:A. ④, ①, C. ②, D. ⑤ E. ③ F. ④ G. ② H. ① 分析:软件产品质量是生产者和用户都十分关心的问题,早期的质量管理只看到产品的质量,

实行的是最终产品检验的方法,对质量进行控制。把不合格的产品挑拣出来报废或返工后,得到的产品就是合格的。

近年来质量管理向过程质量的控制方向发展,一个重要的基本假设是开发过程的质量直接影响交付产品的质量。这一假设最初是根据制造业情况作出的。因为在制造业中,产品的质量与生产过程有着十分密切的关系,过程的改进自然就会得到高质量的产品。

过程改进的思想是美国工程师戴明(W. E. Deming)提出来的。二次大战后他到日本工作,在他的指导下,日本产业界一直坚持不断地改进过程,取得了很好的效果。戴明等人在质量管理中引入统计质量控制的概念。这一概念的基础是在产品缺陷数和过程之间建立联系,以

1

降低产品缺陷数作为过程改进的目标。过程改进直到过程成为可以重复的为止,就是说,直到过程的结果成为预期的为止。这时,产品的缺陷数就降下来了,然后再将过程标准化,这时下一步的改进又开始了。产品质量与过程的关系的示意图如下。

评价产品质量 定义过程 开发产品

改进过程 质量是否合格

将过程标准化

【例2】国际标准化组织和国际电工委员会于1991年发布了关于软件质量的标准ISO∕IEC 9126―1991。我国于1996年将其等同采用,成为国家标准GB∕T16260―1996《软件产品评价、质量特性及其使用指南》。在此标准中规定了6个质量特性及相关的( A )个质量子特性。质量特性包括( B )、( C )、( D )、效率、可维护性和可移植性等。准确性属于( B ),容错性属于( C ),易学习性属于( D )。

② 16 ③ 21 ④ 22

② 适应性 ③ 可使用性 ④ 安全性

⑤ 一致性 ⑥ 功能性 ⑦ 依从性 ⑧ 互操作性 ⑨ 时间特性 ⑩ 资源特性 答案:A. ③, B. ⑥, C. ①, D. ③ 分析:在ISO∕IEC 9126―1991中规定了6个质量特性及相关的21个质量子特性。如下表所示。这些特性的规定是基于用户的观点的。

功 能 性

适合性 准确性 互操作性 依从性 安全性 成熟性 容错性 易恢复性

与一组功能及其指定的性质的存在有关的一组属性。功能是指能满足规定或隐含需求的那些功能。

与对规定任务能否提供一组功能以及这组功能能否适合有关的软件属性。 与能否得到正确的或相符的结果或效果有关的软件属性。 与同其它指定系统进行交互操作的能力有关的软件属性。 使软件服从有关的标准、约定、法规及类似规定的软件属性。 与避免对程序及数据的非授权故意或意外访问的能力有关的软件属性。 与在规定的一段时间内和规定的条件下,软件维持其性能水平有关的能力。 与由软件故障引起失效的频度有关的软件属性。

与在软件错误或违反指定接口情况下,维持指定的性能水平的能力有关的软件属性。 与在故障发生后重新建立其性能水平并恢复直接受影响数据的能力,以及为达此目的所需的时间和有关的软件属性。

可使用性

与为使用所需的努力和由一组规定的或隐含的用户对如此使用所做的评价有关的一组属性。

易理解性 易学习性 易操作性 时间特性 资源特性

与用户为理解逻辑概念及其应用性所需努力有关的软件属性。

与用户为学习其应用(例如操作控制、输入、输出)所需努力有关的软件属性。 与用户为进行操作或操作控制所需努力有关的软件属性。

与响应和处理时间以及软件执行其功能时的吞吐量有关的软件属性。

与软件执行其功能时所使用的资源量以及使用资源的持续时间有关的软件属性。

供选择的答案:

A. ① 12 B ∼ D. ① 可靠性

可 靠 性

效 率 与在规定条件下,软件的性能水平与所用资源量之间的关系有关的一组属性。

可维护性 与进行规定的修改所需努力有关的一组属性。

2

易分析性 易变更性 稳定性 易测试性 适应性 易安装性 遵循性 易替换性

与为诊断缺陷或失效原因,或为判定待修改的部分所需努力有关的软件属性。 与进行修改、调试或适应环境变化所需努力有关的软件属性。 与修改造成未预料后果的风险有关的软件属性。 为确认经修改软件所需努力有关的软件属性。

与一软件无需采用有别于为该软件准备的处理和手段就能适应规定的环境有关的软件属性。

与在指定环境下安装软件所需努力有关的软件属性。 使软件服从与可移植性有关的标准或约定的软件属性。

与一软件在该软件环境中用来替代指定的其它软件的可能和努力有关的软件属性。

可移植性 与软件从一种环境转移到另一环境的能力有关的一组属性。

【例3】一个软件产品开发完成投入使用后,常常由于各种原因需要对它做适当的变更。在软件的使用过程中,软件原来的( A )可能不再适应用户的要求,需要进行变更;软件的工作环境也可能发生变化,最常见的是配合软件工作的( B )有变动;还有一种情况是在软件使用过程中发现错误,需要进行修正。通常把软件交付使用后做的变更称为( C )。软件投入使用后的另一项工作是( D ),针对这类软件实施的软件工程活动,主要是对其重新实现,使其具有更好的( E ),包括软件重构、重写文档等。( D )和新的软件开发工作的主要差别在于( H )。我们把常规的软件开发称为( F ),而( G )是从代码开始推导出设计或是规格说明来。 供选择的答案: A, B. ① 环境 ② 软件 ③ 硬件 ④ 功能和性能 ⑤ 要求 C, D, F, G. ① 逆向工程 ② 正向工程 ③ 软件再工程 ④ 维护 ⑤ 设计 E. ① 可靠性 ② 可维护性 ③ 可移植性 ④ 可修改性 H. ① 使用的工具不同 ② 开发的过程不同 ③ 开发的起点不同 ④ 要求不同

答案:A. ④, B. ③, C. ④, D. ③, E. ②, F ②, G ①, H ③

分析:一个软件产品开发完成投入使用后,常常由于各种原因需要对它做适当的变更。在软件的使用过程中,软件原来的功能和性能可能不再适应用户的要求,需要进行变更;软件的工作环境也可能发生变化,最常见的是配合软件工作的硬件有变动;还有一种情况是在软件使用过程中发现错误,需要进行修正。通常把软件交付使用后做的变更称为维护。软件维护是软件生存期中的一个重要阶段。

软件投入使用后的另一项工作是软件再工程,它和上述的软件维护很有关系,但不是一回事,只是近年来才受到重视。

近年来,随着计算机的普及,各产业部门、政府机构等在软件方面的投资迅速增长。几乎所有的部门、机构的活动都采用了计算机。但大量软件的维护不是轻松的事,需要维护的软件越来越多,而维护工作的开销又大得惊人,这就使得许多机构不可能在开发新的软件上再投资来提高自己的工作能力。另一方面,待维护的软件又常常是一些单位业务工作的关键,其中渗入了许多业务知识和工作经验,这些知识和经验除在软件中体现外并没有其它记载。如果这些软件是早期开发的,当时没有采用软件工程技术,程序结构很差,甚至使用的是陈旧的程序设计语言,或者这些软件的文档已经过时,也可能原来就极不完整,当时的开发人员早已不知去向,使用单位没有人能够了解和看懂软件内部的细节,这样的软件不可能对他们做维护工作。针对这类软件实施的软件工程活动,主要是对其重新实现,使其具有更好的可维护性,包括软件重构、重写文档,或是改用新的编程语言,或是将其数据转移到现行的数据库管理系统中,或是在分布式平台上实现等。

3

I 供选择的答案:

A, B. ① 软件的生产率 ② 文档 J J ③ 软件的可靠性

④ 软件的可维护性 ⑤ 维护的代价 交付使用 ⑥ 维护的效率

C, D, E. ① 可测试性 ② 互操作性 ③ 可理解性 ④ 可修改性 ⑤ 可复用性 ⑥ 可管理性 F. ① 编码阶段 ② 设计阶段 ③ 测试阶段 ④ 每个阶段 G ② 计划途径 ③ 重编程序 ④ 评价设计 ∼ L. ① 复查

⑤ 评价代码 ⑥ 修改设计

答案:A. ④, B. ⑤, C. ①, D. ③, E. ④, F ④, G ④, H ⑤, I ③, J ①,

K ②, L ⑥。其中,C、D、E的答案顺序可互换。

软件再工程和新的软件开发工作的主要差别在于开发的起点不同。再工程工作并不是从编写需求规格说明开始,而是将原有的软件作为规格说明。正因为如此,我们把常规的软件开发称为正向工程,而逆向工程是从代码开始推导出设计或是规格说明来。再工程的最终目标仍然是产生新的、更容易维护的新系统。 【例4】软件维护是软件生存期的最后一个阶 维护要求段。软件工程学针对维护工作的主要目标是提软件 代码 配置 高( A ),降低( B )。软件的( C )、

( D )、( E )是决定软件可维护性的基GH 本因素。软件生存期( F )的工作与软件可

K维护性有密切的关系。 ? 右图为结构化维护和非结构化维护的对L比,请选择合适的答案填入图中。 I 分析:软件维护是软件生存期的最后一个阶段,也是持续时间最长、代价最大的一个阶段。软件工程学针对维护工作的主要目标就是提高软件的可维护性,降低维护的代价。软件维护通常包括4类维护活动:改正性维护、适应性维护、完善性维护和预防性维护。软件的可理解性、可修改性和可测试性是决定软件可维

维护要求 护性的基本因素。软件生存期各个阶段的工

代码 软件 作都与软件可维护性有密切的关系。 配置 在右图中描述了作为维护要求结果可能

评价设计评价代码 发生的事件流。 如果软件配置的唯一成分使程序代码,计划途径则维护活动从艰难地评价程序代码开始。如

修改设计果程序内部的文档不足,将使得评价更为困

重编程序 难。诸如软件结构、全局数据结构、系统接重编程序口、性能和(或)设计约束等微妙的特征难以

复查 复查搞清,常常会产生误解。最后对程序代码所做变更的后果是难于估量的。因为没有测试

交付使用方面的文档,所以不可能做回归测试(对修改后的软件进行测试以确认软件的功能没有因修改而退化)。这就是非结构化维护,是我们没有使用良好定义的方法论开发软件的必然结果。因此,必须为此付出代价(大量人力的浪费并要经受挫折)。

如果存在完整的软件配置,则维护工作可以从评价设计文档开始,确定软件重要的结构

? 4

特征、性能特征以及接口特征,估计要求的改动可能带来的影响,并且计划实施途径。然后首先修改设计并对所做的改动进行仔细的复查。接下来编写相应的源代码程序,使用在测试规格说明中包含的信息进行回归测试。最后,把修改后的软件交付使用。这就是结构化维护。它是在软件开发的早期就应用软件工程方法论的结果。虽然有了完整的软件配置并不能保证维护中一定没有问题,但确实能减少人力的浪费且能提高软件维护的总体质量。

【例5】软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改,( A )的容易程度。目前广泛使用7个特性来衡量软件的可维护性,其中就有( B )、( C )、( D )。其中,( B )和( D )主要在改正性维护中侧重应用,( C )主要在适应性维护和( E )维护中侧重应用。 供选择的答案: A. ① 维护 ② 扩充与压缩 ③ 调整 ④ 再工程 B ② 可靠性 ③ 完整性 ④ 适应性 ∼ D. ① 安全性

⑤ 可理解性 ⑥ 可使用性 ⑦ 一致性 ⑧ 数据无关性 E. ① 预防性 ② 完善性 ③ 改正性 ④ 容错性

答案:A. ②, B. ②, C. ⑥, D. ⑤, E. ②。其中,B、D的答案顺序可互换。 分析:软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改,扩充或压缩的容易程度。目前广泛使用7个特性来衡量软件的可维护性,其中就有可靠性、可理解性和可使用性。其中,可靠性和可理解性主要在改正性维护中侧重应用,可使用性主要在适应性维护和完善性维护中侧重应用。参看下面有关7种质量特性在各类维护中侧重点的列表。

可理解性 可测试性

可修改性 ○ ○

可 靠 性 ○

可移植性 ○

可使用性 效 率 ○ ○

改正性维护 ○ 适应性维护 完善性维护

【例6】软件再工程技术主要有( A )、( B )和( C )。分析、度量属于( C ),知识库和变换属于( D );复用工程属于( E ),其目的是( F ),使其更容易复用。通常是先寻找( G ),然后将其改造,使之能放入( H )中。实际应用可从( H )中选取( I ),以实现复用。 供选择的答案: A ∼ E. ① 改进软件 ② 编码 ③ 理解软件 ④ 维护 析取 复用 应用问题 ⑤ 获取、保存及扩充软件知识

构件可复用构件 F. ① 保存软件 ② 修改软件

③ 设计软件 ④ 开发软件 G ② 可复用库 ∼ I. ① 构件 再工程器 查找 ③ 可复用构件 ④ 信息库

答案:A. ①, B. ⑤, C. ③, D. ⑤, E. ①,

可复用库, F ②, G ①, H ②, I ③

分析:软件再工程技术包括:ⅰ) 改进软件,如重

构、文档重写、复用工程、重新划分模块、数据再工程、业务过程再工程、可维护分析等。ⅱ) 理解软件,如浏览、分析、度量、逆向工程和设计恢复等。ⅲ) 获取、保护及扩充软件知识,如分解、逆向工程和设计恢复、对象恢复、程序理解、知识库和变换等。 因此,本例题的解答是:软件再工程技术主要有改进软件、获取、保存及扩充软件知识

可复用源程序 5

和理解软件。分析、度量属于理解软件,知识库和变换属于获取、保存及扩充软件知识;复用工程属于改进软件,其目的是修改软件,使其更容易复用。通常是先寻找构件,然后将其改造,使之能放入可复用库中。实际应用可从库中选取可复用的构件,以实现复用。

三、习题

【7-1】对于软件产品来说,有4个方面影响着产品的质量,即( A )、( B )、( C )及成本、时间和进度等条件。重视软件过程的质量是近年来质量管理理论和实践的新发展。重视软件过程质量的控制,其部分原因可能是:相对于产品质量的控制来说,过程质量的控制是( D )、( E )、( F ),而产品质量的控制是( G )、( H )、( I )。 供选择的答案: A ② 开发技术 ③ 过程质量 ④ 风险控制 ∼ C. ① 开发时间

⑤ 质量控制 ⑥ 人员素质 ⑦ 项目管理 ⑧ 配置管理

D ② 被动的 ③ 整体的 ④ 系统的 ∼ I. ① 主动的

⑤ 先期的 ⑥ 事后的 ⑦ 个别的 ⑧ 部分的

【7-2】McCall提出了表明软件质量的11个质量特性。它们是( A )、( B )、( C )、( D )、( E )、( F )、( G )、( H )、效率、可测试性和互连性。我们把这11个特性分为3组,使其分别隶属于产品修正、产品转移和产品运行等3个方面,如图所示。

( E ) ( G )

可测试性 ( H ) ( F ) 互连性 产品修正产品转移

产品运行

( A ) ( B ) 效率 ( C ) ( D )

供选择的答案: A ② 正确性 ③ 功能性 ④ 完整性 ⑤ 可靠性 ∼ H. ① 可读性 ⑥ 可移植性 ⑦ 可复用性 ⑧ 灵活性 ⑨ 可维护性 ⑩ 可使用性 【7-3】为什么软件需要维护?维护有哪几种类型?简述它们的维护过程。

在软件维护的实施过程中,【7-4】为了正确、有效地修改,需要经历以下3个步骤:( A )、

( B )、( C )。( A )是决定维护成败和质量好坏的关键。( C )包括( D )确认、计算机确认和维护后的( E )。 供选择的答案: A ② 建立目标程序 ③ 分析和理解程序 ∼ C. ① 修改程序 ④ 重新验证程序 ⑤ 验收程序 D. ① 动态 ② 静态 ③ 人工 ④ 自动 E. ① 验证 ② 验收 ③ 检验 ④ 存档 【7-5】从供选择的答案中选出同下列各叙述关系最密切的字句。

A. 软件从一个计算机系统或环境转移到另一个计算系统或环境的容易程度。 B. 软件在需要它投入使用时能实现其指定的功能的概率。

C. 软件使不同的系统约束条件和用户需求得到满足的容易程度。

D. 在规定的条件下和规定的一段期间内,实现所指定的功能的概率。 E. 尽管有不合法的输入,软件仍能继续正常工作的能力。

6

供选择的答案: ① 可测试性 ② 可理解性 ③ 可靠性 ④ 可移植性 ⑤ 可使用性 ⑥ 兼容性 ⑦ 容错性 ⑧ 可修改性 ⑨ 可接近性   ⑩ 一致性

【7-6】改错性维护与“排错”是否是一回事?为什么?

【7-7】从下列叙述中选出5条与提高软件的可移植性有关的叙述。 ① 把程序中与计算机硬件特性有关的部分集成在一起。 ② 选择时间效率和空间效率高的算法。 ③ 使用结构化的程序设计方法。

④ 尽量用高级语言编写程序中对效率要求不高的部分。 ⑤ 尽可能减少注释。 ⑥ 采用表格控制方式。 ⑦ 文档资料详尽、正确。

⑧ 在有虚拟存储器的计算机系统上开发软件。 ⑨ 减少程序中对文件的读写次数。 ⑩ 充分利用宿主计算机的硬件特性。 【7-8】软件可移植性是用来衡量软件的( A )的重要尺度之一。为了提高软件的可移植性,应注意提高软件的( B )。采用( C )有助于提高( B )。为了提高可移植性,还应( D )。使用( E )语言开发的系统软件具有较好的可移植性。 供选择的答案: A. ① 通用性 ② 效率 ③ 质量 ④ 人机界面 B. ① 使用的方便性 ② 简洁性 ③ 可靠性 ④ 设备独立性 C. ① 优化算法 ② 专用设备 ③ 表格驱动方式 ④ 树型文件目录 D. ① 有完备的文件资料 ② 选择好的宿主计算机 ③ 减少输入输出次数

④ 选择好的操作系统

E. ① COBOL ② APL C ③ ④ SQL 【7-9】下面有关软件维护的叙述有些是不准确的,请将它们列举出来。 供选择的答案:

① 要维护一个软件,必须先理解这个软件。 ② 阅读别人写的程序并不困难。

③ 如果文档不齐全也可以维护一个软件。 ④ 谁写的软件就得由谁来维护这个软件。 ⑤ 设计软件时就应考虑到将来的可修改性。 ⑥ 维护软件时一件很吸引人的创造性工作。 ⑦ 维护软件就是改正软件中的错误。 ⑧ 维护好一个软件是一件很难的事情。

【7-10】什么是程序修改的副作用?程序修改的副作用有哪几种?试举例说明? 【7-11】讨论高级语言对适应性维护的影响。使程序适应新的环境是可能的吗? 【7-12】在软件计划中是否应该把维护费用计划在内?实际情况如何?

【7-13】软件再工程是一类软件工程活动,它能够使我们:ⅰ)增进对软件的理解;ⅱ)准备或直接提高软件自身的( A )、( B )或演化性。第ⅱ部分旨在改善软件的( C ),使得软件更容易为人们服务。纯粹是出于改善性能的代码优化( D )软件再工程。逆向工程属于上述软件再工程的第( E )部分。 供选择的答案:

7

A, B. ① 可靠性 ③ 可维护性 ② 灵活性 ④ 可复用性 ⑤ 可修改性 C. ① 静态质量 ④ 功能 ② 动态质量 ③ 性能 D. ① 属于 ② 不属于 E. ① ⅱ ② ⅰ

分解器 【7-14】关于软件再工程的定义有这样两种说法。 语法分析器 E ⅰ)软件再工程是变更系统(或程序)的( A ),或

语义分析器 是系统(或程序)的( B ),而不变更其( C )的一种工程活动。ⅱ)检查并改进对象系统,按新的模式对系统进行( D ),进而实现其新的模式。

F G 合成器 视图合成器 多数软件再工程工具可按图示的自动进行再工程的模式工作。请选择合适的答案完成这个图示。

󰂃 格式 供选择的答案: 󰂃 图形 H 󰂃 文档 A ∼ D. ① 外部环境 ② 接口

󰂃 度量值 ③ 内部机制 ④ 流程图

󰂃 逻辑 ⑤ 重构 ⑥ 数据结构 󰂃 报告 ⑦ 功能性 ⑧ 层次性 E ④ 软件 ∼ H. ① 其它产品 ② 软件工具 ③ 信息库

⑤ 软件的新视图

【7-15】( A )是软件的一种表达形式,或是有关软件的一种报告。( A )可分为4类:软件的规格说明属于( B ),PDL或DFD属于( C ),规格说明文本的图索引属于( D ),程序和程序段属于( E )。( A )得到工具支持时,就成为( F ),可用其支持加入、变更或浏览信息。 供选择的答案: A, F. ① 软件说明 ② 概要设计 ③ 软件视图 ④ 信息库 ⑤ 视图编辑器 ⑥ 软件设计 B ∼ E. ① A类视图 ② 1类视图(非过程性描述和∕或元描述) ③ 2类视图(伪过程性描述和∕或面向体系结构的描述) ④ 3类视图(纯过程性描述或直接导出的信息)

8

因篇幅问题不能全部显示,请点此查看更多更全内容