软件工程第八章(维护)
软件工程导论PPT课件-第8章-维护
![软件工程导论PPT课件-第8章-维护](https://img.taocdn.com/s3/m/3bce6f9a0d22590102020740be1e650e53eacf79.png)
分析评价,修改设计,编写代码等
理解代码功能、解释数据结构、接口特点和性能限度等
8.3 软件维护的特性
8.3.3 软件维护的副作用
-结构化维护
结构化维护是指软件开发过程是按照软件工程方法进 行的、各开发阶段文档齐全的软件的维护过程。
-非结构化维护
非结构化维护是指在只有源程序,缺乏必要的文档说 明,难于确定数据结构、系统接口等特性的情况下,进行 的软件维高昂
明显代价:高昂的维护费用,已上升达80%左右; 无形代价:
的工作环境,或适应已变动的数据或文件; (4)为预防软件系统的失效而对软件系统实施修改。
8.2 软件维护的分类
- 改正性维护
对在测试阶段未能发现的、在软件投入使用后才逐渐暴露出来的 错误的测试、诊断、定位、纠错,以及验证、修改的回归测试过程, 称为改正性维护。
- 完善性维护
为了满足用户在使用过程中对软件提出的新的功能与性能要求, 需要对原来的软件的功能进行修改或扩充。
- 适应性维护
使软件适应外部新的软硬件环境或者数据环境发生的变化, 而进行修改软件的过程。
- 预防性维护
为了提高软件未来的可维护性、可靠性等,或为了给未来 的改进奠定更好的基础而修改软件的过程。
8.2 软件维护的分类 预防性维护 4% 适应性维护 21% 完善性维护 50%
改正性维护 25%
四类维护占总维护的比例
修改软件设计、 复查、必要的代 码修改、单元测 试和集成测试、 验收测试和复审
《软件工程与开发环境》第八章 维护
![《软件工程与开发环境》第八章 维护](https://img.taocdn.com/s3/m/882d5d29fad6195f302ba615.png)
⑨因程序变动而增加的源语句数; 因程 序变动而删除的源语句数; 每个改动 耗费的人时数; 程序改动的日期; 软 件工程师的名字; 维护要求表的标识; 维护类型; 维护开始和完成的日期; 累计用于维护的人时数; 与完成的维 护相联系的纯效益。
5. 评价维护活动 至少可以从下述7个方面度量维护工作: (1) 每次程序运行平均失效的次数; (2) 用于每一类维护活动的总人时数; (3) 平均每个程序、每种语言、每种维护 类型所做的程序变动数;
(4) 维护过程中增加或删除一个源语句 平均花费的人时数;
(5) 维护每种语言平均花费的人时数;
8.5 预防性维护
几乎所有历史比较悠久的软件开发组织,都有一些 十几年前开发出的“老”程序。目前,某些老程序 仍然在为用户服务,但是,当初开发这些程序时并 没有使用软件工程方法学来指导,因此,这些程序 的体系结构和数据结构都很差,文档不全甚至完全 没有文档,对曾经做过的修改也没有完整的记录。
8.6 软件再工程过程
(3) 当要求对软件进行维护时,不能指望 由开发人员给我们仔细说明软件。
(4) 绝大多数软件在设计时没有考虑将来 的修改。
(5) 软件维护不是一项吸引人的工作。形 成这种观念很大程度上是因为维护工作经常 遭受挫折。
1. 维护组织 每个维护要求都通过维护管理员转交给相应的
系统管理员去评价。系统管理员是被指定去熟悉 一小部分产品程序的技术人员。系统管理员对维 护任务做出评价之后,由变化授权人决定应该进 行的活动。图8.1描绘了上述组织方式。 在维护活动开始之前就明确维护责任是十分必要的, 这样做可以大大减少维护过程中可能出现的混乱。
软件工程课件(第八章 维护)
![软件工程课件(第八章 维护)](https://img.taocdn.com/s3/m/df531317227916888486d79c.png)
第八章 维护8.1 软件维护的定义所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
四类维护活动: 改正性维护 适应性维护扩充与完善性维护 预防性维护⏹改正性维护(corrective maintenance)诊断和改正软件中存在的错误的活动。
通常占整个维护活动的17-21%。
⏹适应性维护(adaptive maintenance)为了和变化了的环境适当地配合而进行的修改软件的活动。
通常占整个维护活动的18-25%。
⏹完善性维护(perfective maintenance)为了满足用户在使用软件的过程中提出的增加新功能、修改已有功能或其它一般性改进的要求而进行的软件修改活动。
通常占整个维护活动的50-66%。
⏹预防性维护(preventive maintenance)为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件的活动。
通常占整个维护活动的4%。
各类维护活动的根本目的是延长软件生存期8.2 维护的特点⏹非结构化维护在软件配置的唯一成分只有程序代码的情况下所进行的维护 。
⏹结构化维护在软件配置完整的情况下所进行的维护。
8.2.2 维护的成本⏹用于维护已有软件的费用占软件总预算的比例:1970年为35-40%,1980年为40-60%,1990年为70-80%。
各类维护活动的根本目的是延长软件生存期软件 生存 周期软件诞生1年-10年个月-2年重构软件工程周期常规软件生成周期时间的估计⏹其它无形的代价:* 因为可用的资源必须供维护任务使用,以致耽误甚至丧失了开发新软件的良机。
* 当看来合理的有关错误修改或其他要求不能及时满足时将引起用户不满。
* 由于维护时的改动,在软件中引入了潜伏的故障,从而降低了软件的质量。
* 当必须把软件工程师调去从事维护工作时,将在开发过程中造成混乱。
8.2.3 影响维护工作量的因素⏹系统大小⏹程序设计语言⏹系统年龄⏹数据库技术的应用⏹先进的软件开发技术⏹其它8.2.4 维护中的典型问题(1)难以跟踪软件版本的进化过程,软件的变化未在文档中反映出来.(2)难以跟踪软件的创建过程.(3)难以读懂他人程序.(4)无文档或文档不全.(5)软件人员流动性大.(6)设计时未考虑修改需要,修改困难.(7)维护工作无吸引力,缺乏成就感.8.2.5 维护的副作用(side effects)⏹由于维护或在维护过程中其它一些不期望的行为引入的错误,称为维护的副作用。
第八章软件维护
![第八章软件维护](https://img.taocdn.com/s3/m/7f0d97af534de518964bcf84b9d528ea80c72f74.png)
软件项目的规模越大,所需要
的管理支持工作量越大。统计资料
表明在软件项目的规模达到一定程
工 作
度时,所需的软件管理工作量将达 量
到总工作量的一半。如图所示:
软件项目的规模,决定了采用怎样 的管理水平、开发工具和开发方法。
技术工作
100% 50%
管理工作 软件规模
12
9.1 软件项目特点和管理的职能(2)
件的工程化生产。最终目标是以合理的费用和进度,圆满完成计划
所规定的软件项目。
15
9.2 成本估算(1)
一.成本估算的方法自顶 向下 估计
首先估算出项目总的开发成本,然后在 一般对开发中的某些局部问题 项目内部进行成本分配。由少数专家参与, 或特殊困难容易低估,甚至没有 依靠他们过去的经验,将要开发的软件与 考虑到。如果所开发的软件缺乏 过去开发过的软件进行“类比”,以估计 可以借鉴的经验,在估计时就可 新的软件开发所需要的工作量和成本。 能出现较大的误差。
14
9.1 软件项目特点和管理的职能(4)
三.软件管理的职能
1.管理的目的:按照工程预定的时间和费用,成功地完成软件的计划、开
发和维护任务。管理贯穿整个软件生存周期。
2.管理的内容
(1)费用管理:对软件开发进行成本核算,使软件生产按照商品生产的规
律办事。包括:以简单、科学方法估算软件开发费用,作为签定开发
利用任务分解技术例子
任务
需求分析 设计 编码与 单元测试
人力 (人月)
5.0 15.0
8.0
$/人 月
3400 3200 2650
综合测试 16.5 2900 总 计 44.5
3.算法模型(略)
成本($)
软件工程 维护
![软件工程 维护](https://img.taocdn.com/s3/m/555dc4c376eeaeaad1f330b5.png)
7.2.2源程序修改策略
步骤:分析源程序修改源程序验证修改 1)分析和理解源程序 阅读和理解其他人的源程序是非常困难的。 也是非常好的学习和锻炼机会。阅读理解别 人写的源程序有一些技巧,可以帮助你快速、 准确地理解源程序。下面介绍这些技巧:
源程序阅读技巧
(1)首先要阅读与源程序相关的说明性文档 包括程序功能说明、数据结构、输入输出格 式说明、文件说明、程序使用说明,阅读这 些文档有助于理解源程序。 (2)概览源程序。这步只能粗略地阅读源程 序,因为对源程序了解还少,无法一下深入 到源程序中。但是,这步要完成的任务比较 多:
分析原设计 理解源程序 安排更改计划 修改程序 测试程序 009
用户 维护 人员
维 护 申 请
改正性 维护 批 准 申 请
001 评价 申请
002 判断维 护类型 006 评价优 先级 高 严重
007 开始问 题分析 安排维护 修改后的 软件
通过并交付软件 复审
适应性/完 善性维护
低
D2 安排工作计划
源程序阅读技巧——概览源程序2:
建立过程的间接调用二维表。若过程i调用过 程j,过程j调用过程k,则间接表的第i行k列 是1,否则是0。 列出程序定义的全局变量和数据结构。对于 复杂数据结构,画出数据结构图更好理解。
源程序阅读技巧(续)
(3)分析程序结构。画出软件结构图,在这 个图上反映过程之间的调用关系和调用参数。 图中的箭头线表示过程之间的调用关系,带 尾的箭头线表示过程调用传递的参数。 (4)画出软件的数据流程图。根据程序的 信息处理流程画出数据流程图,可以获得相 关数据在过程间的处理和传递方式,对于维 护人员判断问题、理解程序特别有用。
预防性维护
软件工程 第8章 软件维护
![软件工程 第8章 软件维护](https://img.taocdn.com/s3/m/0b85984a336c1eb91a375dfb.png)
8.4.2 软件可维护性的度量
3. 可测试性 4. 可修改性 5. 可移植性 6. 效率 7. 可使用性 8. 间接度量可维护性的方法
8.4.2 软件可维护性的度量
8. 间接度量可维护性的方法
(1) 了解问题的时间; (2) 行政管理拖延的时间; (3) 收集维护工具的时间; (4) 分析问题的时间; (5) 改变规格说明的时间; (6) 具体的改错或修改的时间; (7) 局部测试时间; (8) 整体测试时间; (9) 维护重审时间; (10) 总体恢复时间。
8.4 软件的可维护性
8.4.1 影响可维护性的因素 软件的可维护性可以简单定义为:纠正软件系统出现 的错误和缺陷,以满足新的要求, 能够被理解、被校正、 被修改或被改善的难易程度。可维护性不但与采用的 分析设计方法和开发人员的技术熟练程度有关,更重 要的是与软件项目的管理技术关系密切。软件的可维 护性成为软件开发阶段各个时期的关键目标。
8.1 软件维护的种类
完善性维护 50%
预防性维护5%
改正性维护 20%
适应性维护 25%
图11.1 各类维护的比重
8.2 软件维护的特点
8.2.1 软件维护面临的困难 统计资料表明,有代表性的软件开发组织用于校正性 维护、适应性维护、完善性维护及预防性维护的费用 占其开发总金额的70%至80%。 很多软件机构被束缚在维护工作上,这是软件维护所 带来的无形支出。
8.2.3 非结构化维护
无说明或者文档资料太少由于没有采用定义良好的软 件项目管理过程来开发软件,软件项目管理的缺陷导 致的叫“非结构化维护”,这会使软件维护付出较高的 代价.
8.2.4 结构化维护
存在完整的软件系列文档,那么维护任务就从分析设 计文件开始,确定软件的重要结构特性、功能特性和 接口特性,确定所要求的修改或校正可能产生的影响, 并且计划采用何种维护处理方法,修改设计并进行复 审,编制出新的源程序,利用文档中的信息进行回归 测试,然后重新交付软件。这种维护过程就叫做“结 构化维护”
软件工程第八章维护
![软件工程第八章维护](https://img.taocdn.com/s3/m/0de7e296a0c7aa00b52acfc789eb172ded6399a3.png)
软件工程第八章维护第一点:软件维护的定义和重要性软件维护是指在软件发布后对其进行的一系列操作和活动,旨在确保软件系统的持续可用性、可靠性和性能。
软件维护是软件开发生命周期中的一个重要环节,它涉及到对软件进行修正、优化和升级。
软件维护的重要性体现在以下几个方面:1.保障软件质量:软件在实际运行过程中可能会出现各种问题,维护可以帮助及时修复这些问题,保证软件的正常运行。
2.提高用户满意度:通过维护,可以对软件进行功能优化和界面调整,使其更加符合用户的需求,提高用户的使用体验。
3.降低风险:软件维护可以帮助提前发现并解决潜在的风险,避免因软件问题导致的损失。
4.延长软件寿命:通过不断的维护和升级,可以使软件适应不断变化的环境和需求,延长其使用寿命。
5.提高开发效率:良好的维护可以避免因软件问题导致的重复开发,提高开发团队的效率。
第二点:软件维护的类型和策略软件维护可以分为以下几种类型:1.改正性维护:这种维护类型主要是针对软件中存在的问题和错误进行修复,保证软件的正常运行。
2.适应性维护:随着环境的变化和用户需求的变化,软件需要进行相应的调整和优化,以适应新的环境和工作需求。
3.完善性维护:这种维护类型主要是针对软件的功能进行增强和扩展,以满足用户的新需求。
4.预防性维护:预防性维护是为了避免软件出现潜在的问题和风险,提前对软件进行调整和优化。
在进行软件维护时,可以采取以下策略:1.计划维护:制定详细的维护计划,包括维护的时间、内容、责任人等,确保维护工作的有序进行。
2.变更管理:对于软件的修改和更新,需要进行严格的变更管理,确保每次变更都是经过审核和评估的。
3.版本控制:通过版本控制工具,对软件的不同版本进行管理,确保软件的每个版本都是可追踪和可恢复的。
4.文档管理:对软件的维护过程和结果进行详细的文档记录,方便对软件进行管理和维护。
5.持续集成:将软件的维护工作与开发工作结合起来,通过持续集成的方式,确保软件的质量和稳定性。
软件工程08 维护
![软件工程08 维护](https://img.taocdn.com/s3/m/9f2ef106a216147917112820.png)
八、维护
1、软件维护概述
1.2 软件维护的特点
1.结构化维护和非结构化维护
软件 代码 评价设计 计划途径 复查 修改设计 重编程序 重编程序 评价代码
复查
复查
交付使用
八、维护
1、软件维护概述
1.2 软件维护的特点
2.维护的代价 软件维护代价包括费用代价和隐含的无形代价,还有维护工作量。其他 无形的代价还有: 1)当看来合理的有关改错或修改的要求不能及时满足时,将引起用户不满; 2)由于维护时的改动,在软件中引入了潜伏的故障,从而降低了软件的质量; 3)当把软件工程师调去从事维护工作时,将在开发过程中造成混乱。
八、维护
3、软件的可维护性
3.3 提高软件可维护性的方法
1.合理的程序结构 合理的程序结构不仅有利于软件的维护工作,同时也是团队集体创作的前 提。 (1)软件的模块化 (2) 预留出一定的空余编码以供扩展 (3) 函数体(对象)的封闭性 2.程序控制的数据化 我们设想如果仅改变程序中的数据,就可以实现对程序控制的修改,这 就是程序控制的数据化。
八、维护
5、软件再工程
逆向工程流程:
源程序 源程序分析器
逆向工程 数据库
模型生成器
数据模型
程序绍了软件的维护、逆向工程和再生工程等内容。通过上述内 容的学习,可以掌握软件维护的基本理论,为做好软件能维护工作奠定基础。
软件工程
王振武
八、维护
学习目标
了解软件维护的分类和特点 了解维护任务的实施过程 理解软件的可维护性和软件维护的副作用 掌握软件再工程
八、维护
1、软件维护概述
1.1软件维护的分类
软件主要涉及以下四个方面: (1)改正性维护 改正性维护主要发生在软件使用初期的磨合阶段,随着软件错误的消除, 改正性维护会随之减少。 (2)完善性维护 完善性维护大多发生在软件运行维护中期。 (3)适应性维护 适应性维护大多发生在软件运行维护后期。 (4) 预防性维护 预防性维护自软件开发之日起即已发生。
软件工程课件-第八章维护ppt
![软件工程课件-第八章维护ppt](https://img.taocdn.com/s3/m/86b294a3fbb069dc5022aaea998fcc22bdd14364.png)
2. 适应性维护
计算机科学技术领域的各个方面都在迅速进步,大约每 过38个月就有新一代的硬件宣告出现;另一方面,应用软 件的使用寿命却很容易超过十年,远远长于最初开发这个 软件时的运行环境的寿命。因此,适应性维护就是为了和 变化了的环境适当地配合而进行的修改软件的活动,是既 必要又经常的维护活动。
4. 预防性维护
当为了提高未来的可维护性或可靠性,或为了给未来的 改进工作奠定更好的基础而修改软件时,就出现了第四类维 护活动,这类维护活动称为预防性维护。通常,把预防性维 护定义为:“把今天的方法学应用于昨天的系统以满足明天 的需要”。也就是说,预防性维护就是采用先进的软件工程 方法对需要维护的软件或软件中的某一部分,主动地进行重 新设计、编码和测试。
8.3.1 维护组织 虽然通常并不需要建立正式的维护组织,但是,即使对
于一个小的软件开发团体而言,非正式地委托责任也是绝 对必要的。维护机构成员一般包括:配置管理员、维护控 制员、系统管理员、一般维护工作人员。
每个维护要求都通过维护管理员转交给相应的系统管理 员去评价,见下页图示。
维护机构
维护要求 (软件问题报告)
● 当必须把软件工程师调去从事维护工作时,将在开发 过程中造成混乱。
8.1.2.3 维护的问题很多
与软件维护有关的绝大多数问题,都可归因于软件定 义和软件开发的方法有缺点。在软件生命周期的头两个时 期没有严格而又科学的管理和规划,几乎必然会导致在最 后阶段出现问题。下面列出和软件维护有关的部分问题:
8.1.2.2 维护的代价高昂 8.1.2.3 维护的问题很多
8.1.2.1 结构化维护与非结构化维护差别悬殊
软件工程 第八章维护
![软件工程 第八章维护](https://img.taocdn.com/s3/m/f3a7c1070740be1e650e9aa9.png)
维护成本
有形的软件维护成本是花费了多少 有形的软件维护成本是花费了多少 无形的维护成本有更大的影响 有更大的影响。 钱,无形的维护成本有更大的影响。
一些合理的修复或修改请求不能及 一些合理的修复或修改请求不能及 时安排,使得客户不满意; 时安排,使得客户不满意; 变更的结果引入新的故障 引入新的故障, 变更的结果引入新的故障,使得软 件整体质量下降; 件整体质量下降; 把软件人员抽调到维护工作中, 把软件人员抽调到维护工作中,干 扰了软件开发工作。 扰了软件开发工作。
预防性维护 预防性维护是为了改进未来的 预防性维护是为了改进未来的 可维护性或可靠性, 可维护性或可靠性,或为了给 未来的改进奠定更好的基础而 修改软件。 修改软件。
在整个软件维护阶段所花费的全部 工作量中, 工作量中,完善性维护占了几乎一 半的工作量。 半的工作量。 国外的统计数字表明, 国外的统计数字表明,完善性维护 占全部维护活动的50% 66%, 50%~ 占全部维护活动的50%~66%,改正 性维护占17% 21%, 17%~ 性维护占17%~21%,适应性维护占 18%~25%,其他维护活动只占4% 4%左 18%~25%,其他维护活动只占4%左 右。
系统年龄: 系统年龄:
老系统随着不断的修改,结构 老系统随着不断的修改, 越来越乱; 越来越乱; 维护人员经常更换, 维护人员经常更换,程序又变 得越来越难于理解。 得越来越难于理解。 许多老系统在当初并未按照软 件工程的要求进行开发, 件工程的要求进行开发,因而没 有文档,或文档太少。 有文档,或文档太少。 在长期的维护过程中文档在许 多地方与程序实现变得不一致, 多地方与程序实现变得不一致, 在维护时就会遇到很大困难。 在维护时就会遇到很大困难。
代价是是降低了生产率降低了生产率??例如25美美??维护工作量包括生产性活动如分如分如力图理解代维护工作量的模型维护工作量的模型??mm是维护中消耗的总工作量是维护中消耗的总工作量??pp是上面描述的生产性工作量是上面描述的生产性工作量??pp是上面描述的生产性工作量是上面描述的生产性工作量??kk是一个经验常数是一个经验常数??cc是因缺乏好的设计和文档而是因缺乏好的设计和文档而导致复杂性的度量导致复杂性的度量??dd是对软件熟悉程度的度量
软件工程第8章软件维护
![软件工程第8章软件维护](https://img.taocdn.com/s3/m/a5902cd4b9f3f90f76c61b94.png)
8.1 软件质量的概念
及质量度量
软件质量的概念及质量度量
• 软件质量需求是软件用户的最终需求, 软件质量需求是软件用户的最终需求,是贯穿于软件 生命周期的一个极其重要的问题。 生命周期的一个极其重要的问题。软件开发过程中所使用 的各种开发技术、评审、验证方法以及实施的管理活动最 的各种开发技术、评审、 终都体现在软件质量中。因此, 终都体现在软件质量中。因此,讨论软件质量及其度量是 非常重要的。 非常重要的。
软件质量的概念及质量度量
• 软件质量反映了以下三方面的问题。 软件质量反映了以下三方面的问题。 • 1.软件需求是度量软件质量的基础。不符合需求的软件 软件需求是度量软件质量的基础。 软件需求是度量软件质量的基础 就不具备质量。 就不具备质量。 • 2.在各种标准中定义的一些开发准则,用来指导软件开 在各种标准中定义的一些开发准则, 在各种标准中定义的一些开发准则 发人员用工程化的方法来开发软件。 发人员用工程化的方法来开发软件。如果不遵守这些开发 准则,软件质量就得不到保证。 准则,软件质量就得不到保证。 • 3.往往有一些隐含的需求没有明确地提出来。例如,软 往往有一些隐含的需求没有明确地提出来。 往往有一些隐含的需求没有明确地提出来 例如, 件应具备良好的可维护性。 件应具备良好的可维护性。如果软件只满足那些精确定义 了的需求而没有满足这些隐含的需求, 了的需求而没有满足这些隐含的需求,软件质量就不能得 到保证。 到保证。
软件质量的概念及质量度量
4.可靠性 一个程序期望以所需的精确度完成它的预期功 可靠性:一个程序期望以所需的精确度完成它的预期功 可靠性 能的程度。 能的程度。 • 5.可移植性 把程序从一个硬件或软件系统环境移植到另 可移植性:把程序从一个硬件或软件系统环境移植到另 可移植性 一个环境所需的工作量。 一个环境所需的工作量。 • 6.可使用性 一个程序方便用户使用的程度。 可使用性:一个程序方便用户使用的程度。 可使用性 一个程序方便用户使用的程度 •
软件工程八维护
![软件工程八维护](https://img.taocdn.com/s3/m/38758248876fb84ae45c3b3567ec102de2bddf0e.png)
3、完善性性维护
实践表明,在几种维护活动中,完善性 维护所占的比重最大。即大部分维护工 作是改变和加强软件,而不是纠错。
完善性维护不一定是救火式的紧急维修 ,而可以是有计划、有预谋的一种再开 发活动。
事实证明,来自用户要求扩充、加强软 件功能、性能的维护活动约占整个维护 工作的50%以上。
❖ 模型表明,如果软件的开发途径不好(即,没有使用 软件工程方法学),而且原来的开发人员不能参加维 护工作,那么维护工作量和费用将指数地增加。
影响维护工作量的因素
❖在软件的维护过程中,需要花费 大量的工作量,从而直接影响了 软件维护的成本。
❖许多软件在开发时并未考虑将来 的修改,为软件的维护带来许多 问题。
❖ 应该为每项维护工作都收集下述数据:
(1)程序标识;
(2)源语句数;
(3)机器指令条数;
(4)使用的程序设计语言;
(5)程序安装的日期;
(6)自从安装以来程序运行的次数;
(7)自从安装以来程序失效的次数;(8)程序变动的层次和标识;
(9)因程序变动而增加的源语句数;(10)因程序变动而删除的源语句数;
软件维护的管理流程
维护修改建议
进行测试
分析修改建议
N
是否合理
Y
提交管理部门审查
是否同意
Y
修改
N
撤销
提交管理部门审批
N
是否批准
Y
更新主文档
更新其他文档
提交使用
修改
8.3 软件维护过程
2. 维护报告
❖ 应该用标准化的格式表达所有软件维护要求。
软件维护人员给用户提供空白的维护要求——有时 称为软件问题报告表,由要求一项维护活动的用户 填写。
软件工程第八章
![软件工程第八章](https://img.taocdn.com/s3/m/04aafc763d1ec5da50e2524de518964bcf84d290.png)
软件工程第八章第8章软件维护软件投入使用后就进入软件维护阶段。
维护阶段是软件生存周期中时间最长的一个阶段,所花费的精力和费用也是最多的一个阶段。
8.1软件维护的内容软件维护内容有四种:校正性维护,适应性维护,完善性维护和预防性维护。
1.校正性维护在软件交付使用后,由于在软件开发过程中产生的错误并没有完全彻底的在测试中发现,因此必然有一部分隐含的错误被带到维护阶段来。
这些隐含的错误在某些特定的使用环境下会暴露出来。
为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。
校正性维护占整个维护工作的20%左右。
2.适应性维护随着计算机的飞速发展,计算机硬件和软件环境也在不断发生变化,数据环境也在不断发生变化。
为了使应用软件适应这种而修改软件的过程称为适应性维护。
这种维护活动占整个维护活动的25%。
3.完善性维护在软件漫长的运行时期中,用户往往会对软件提出新的功能要求与性能要求。
这是因为用户的业务会发生变化,组织机构也会发生变化。
为了适应这些变化,应用软件原来的功能和性能需要扩充和增强,为达到这个目的而进行的维护活动称为完善性维护,占整个维护活动的50%。
4.预防性维护为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。
这是为以后进一步的运行和维护打好基础,占整个维护工作的4%。
8.2 维护的特点8.2.1非结构化维护和结构化维护软件的开发过程对软件的维护过程有较大的影响。
若不采用软件过程的方法开发软件,则软件只有程序而无文档,维护工作非常难,这就是一种非结构化的维护。
若采用软件工程的方法开发软件,则各阶段都有相应的文档,这容易进行维护工作,这是一种结构化的维护。
1.非结构化维护因为只有源程序,而文档很少或没有文档,维护活动只能从阅读、理解、分析源程序开始。
这是软件工程时代以前进行维护的情况。
2.结构化维护用软件工程思想开发的软件具有各阶段的文档,这对于理解和掌握软件功能、性能、系统结构、数据结构、系统接口和设计约束有很大作用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由维护管理员和系统管理员评价用户提交的维护要 求表。
8.3 软件维护过程
3. 维护的事件流
8.3 软件维护过程
4.
保存维护记录
应该为每项维护工作都收集下述数据:
(2)源语句数; (4)使用的程序设计语言; (6)自从安装以来程序运行的次数;
(1)程序标识; (3)机器指令条数; (5)程序安装的日期;
(7)自从安装以来程序失效的次数;(8)程序变动的层次和标识; (9)因程序变动而增加的源语句数;(10)因程序变动而删除的源语句数; (11)每个改动耗费的人时数; (13)软件工程师的名字; (15)维护类型; (17)累计用于维护的人时数; (12)程序改动的日期; (14)维护要求表的标识; (l6)维护开始和完成的日期; (18)与完成的维护相联系的纯效益。
三.维护的问题 与软件维护有关的绝大多数问题,都可归因于 软件定义件生命周期的头两个时期没有严格而又科 学的管理和规划,几乎必然会导致在最后阶段 出现问题。
8.2 维护的特点
和软件维护有关的部分问题:
理解别人写的程序通常非常困难,而且困难程度随着 软件配置成分的减少而迅速增加。如果仅有程序代码 没有说明文档,则会出现严重的问题。
8.2 维护的特点
绝大多数软件在设计时没有考虑将来的修改。除非使 用强调模块独立原理的设计方法论,否则修改软件既 困难又容易发生差错。 软件维护不是一项吸引人的工作。形成这种观念很大 程度上是因为维护工作经常遭受挫折。
8.3 软件维护过程
维护过程本质上是修改和压缩了的软件定义和开 发过程。 为了有效地进行软件维护,应事先就开始做组织 工作。 首先建立一个维护组织 确定报告及评价的过程
8.1.1 软件维护定义 所谓软件维护就是在软件已经交付使用之后,为 了改正错误或满足新的需要而修改软件的过程。 软件维护包括下述4项活动。
诊断和改正错误的过程:改正性维护 为了和变化了的环境适当地配合而进行的修改软件的 活动:适应性维护 为了满足在使用软件的过程中用户的建议和改进意见 而作的维护:完善性维护 为了给未来的改进奠定更好的基础而修改软件:预防 性维护
2、适应性维护
适应性维护,也就是为了和变化了的环 境适当地配合而进行的修改软件的活动 ,是既必要又经常的维护活动。 外部环境(新的硬、软件配置) 数据环境(数据库、数据格式、数 据输入/输出方式、数据存储介质) 可能发生变化。 适应性维护的工作量占全部维护活动的 18%~25%
3、完善性维护
需要维护的软件往往没有合格的文档,或者文档资料 显著不足。认识到软件必须有文档仅仅是第一步,容 易理解的并且和程序代码完全一致的文档才真正有价 值。
当要求对软件进行维护时,不能指望由开发人员给我 们仔细说明软件。由于维护 “阶段持续的时间很长, 因此,当需要解释软件时,往往原来写程序的人已经 不在附近了。
从下述七个方面度量维护工作:
8.4程序修改的步骤及修改的副作用
在软件维护时,必然会对源程序 进行修改。 通常对源程序的修改不能无计划 地仓促上阵,为了正确、有效地修 改,需要经历以下三个步骤。 分析和理解程序 修改程序 重新验证程序
分析和理解程序
经过分析,全面、准确、迅速地理 解程序是决定维护成败和质量好坏 的关键。在这方面,软件的可理解 性和文档的质量非常重要。
为每一个维护要求规定一个标准化的事件序列
建立一个适用于维护活动的记录保管过程,并 且规定复审标准
8.3 软件维护过程
1. 维护组织
维护组织
维护申请提交给维护管理员,他把申请交给 某个系统监督员去评价。 一旦做出评价,由修改负责人确定如何进行 修改。 在修改程序的过程中,由配臵管理员严格把 关,控制修改的范围,对软件配臵进行审计 。 在维护之前,就把责任明确下来,可以减少 维护过程中的混乱。
结构化维护能减少精力浪费并且能提高维护的 总体质量。
8.2 维护的特点
二、维护成本
有形的软件维护成本是花费了多少钱 ,无形的维护成本有更大的影响。 一些合理的修复或修改请求不能及时 安排,使得客户不满意; 变更的结果引入新的故障,使得软件 整体质量下降; 把软件人员抽调到维护工作中,干扰 了软件开发工作。
修改程序
对程序的修改,必须事先做出计划 ,有预谋地、周密有效地实施修改 。 1. 设计程序的修改计划 程序的修改计划要考虑人员和资源 的安排。小的修改可以不需要详细 的计划,而对于需要耗时数月的修 改,就需要计划立案。
2. 修改代码,以适应变化 在修改时,要求: (1) 正确、有效地编写修改代码; (2) 要谨慎地修改程序,尽量保持程序 的风格及格式,要在程序清单上注明 改动的指令; (3) 不要删除程序语句,除非完全肯定 它是无用的; (4) 不要试图共用程序中已有的临时变 量或工作区,为了避免冲突或混淆用 途,应设臵自己的变量;
软件维护的代价是降低了生产率 ,在做老程序的维护时非常明显。 例如,开发每一行源代码耗资25 美元,维护每一行源代码需要耗资 1000美元。
8.2 维护的特点
维护工作量的一个模型: M= P+ K * exp(c - d)
其中: M是维护用的总工作量, P是生产性工作量, K是经验常数, c是因缺乏好的设计和文档而导致复杂性的度量), d是维护人员对软件的熟悉程度。
软件维护的管理流程
维护修改建议 分析修改建议 是否合理 进行测试
提交管理部门审批
N
是否批准
N
修改
Y
提交管理部门审查
Y
更新主文档 更新其他文档 撤销
N
是否同意
Y
修改
提交使用
8.3 软件维护过程
2.
维护报告 应该用标准化的格式表达所有软件维护要求。
软件维护人员给用户提供空白的维护要求——有时 称为软件问题报告表,由要求一项维护活动的用户 填写。 如果遇到了一个错误,那么必须完整描述导致出现 错误的环境(包括输入数据,全部输出数据,以及 其他有关信息)。 对于适应性或完善性的维护要求,应该提出一个简 短的需求说明书。
数据库技术的应用:使用数据库,可以 简单而有效地管理和存储用户程序中的 数据,还可以减少生成用户报表应用软 件的维护工作量。 先进的软件开发技术:在软件开发时, 若使用能使软件结构比较稳定的分析与 设计技术,及程序设计技术,如面向对 象技术、复用技术等,可减少大量的工 作量。
8.2 维护的特点
系统大小:系统越大,理解掌握起来 越困难。系统越大,所执行功能越复 杂。因而需要更多的维护工作量。 程序设计语言:使用强功能的程序设 计语言可以控制程序的规模。语言的 功能越强,生成程序的模块化和结构 化程度越高,所需的指令数就越少, 程序的可读性越好。
系统年龄: 老系统随着不断的修改,结构越来越乱; 维护人员经常更换,程序又变得越来越难 于理解。 许多老系统在当初并未按照软件工程的要 求进行开发,因而没有文档,或文档太少 。 在长期的维护过程中文档在许多地方与程 序实现变得不一致,在维护时就会遇到很 大困难。
(5) 插入错误检测语句; (6) 在修改过程中做好修改的详细记录 ,消除变更中任何有害的副作用(波动 效应); 3. 修改程序的副作用 所谓副作用是指因修改软件而造成的错 误或其它不希望发生的情况。副作用有 三种:修改代码的副作用、修改数据的 副作用、文档的副作用。
(1) 修改代码的副作用
在修改源代码时,都可能引入错误。例 如,删除或修改一个子程序、删除或修 改一个标号、 删除或修改一个标识符 、改变程序代码的时序关系、改变占用 存储的大小、改变逻辑运算符、修改文 件的打开或关闭、改进程序的执行效率 ,以及把设计上的改变翻译成代码的改 变时,都容易引入错误。
4、预防性维护
预防性维护是为了提高软件的可维护 性、可靠性等,为以后进一步改进软 件打下良好基础。 预防性维护定义为:采用先进的软件 工程方法对需要维护的软件或软件中 的某一部分(重新)进行设计、编制 和测试。 在整个维护活动中,预防性维护占很 小的比例,只占5%。
综述
在整个软件维护阶段所花费的全部工作量中 ,完善性维护占了几乎一半的工作量。
第8章 维护 软件维护是软件生命周期的最后一个阶段,它处 于系统投入生产性运行以后的时期中,因此不属 于系统开发过程。
软件维护的基本任务是保证软件在一个相当长的 时期能够正常运行。
软件维护需要的工作量非常大,虽然在不同应用 领域维护成本差别很大,但是,平均说来,大型 软件的维护成本高达开发成本的四倍左右。
软件维护活动所花费的工作占整个生存期工 作量的70%以上,这是由于在漫长的软件运 行过程中需要不断对软件进行修改,以改正 新发现的错误、适应新的环境和用户新的要 求,这些修改需要花费很多精力和时间,而 且有时会引入新的错误。
8.1.1 软件维护定义 三类维护占 总维护比例 维护在软件生 存期所占比例
在软件的使用过程中,用户往往会对 软件提出新的功能与性能要求。 为了满足这些要求,需要修改或再开 发软件,以扩充软件功能、增强软件 性能、改进加工效率、提高软件的可 维护性。 这种情况下进行的维护活动叫做完善 性维护。
3、完善性性维护
实践表明,在几种维护活动中,完善性 维护所占的比重最大。即大部分维护工 作是改变和加强软件,而不是纠错。 完善性维护不一定是救火式的紧急维修 ,而可以是有计划、有预谋的一种再开 发活动。 事实证明,来自用户要求扩充、加强软 件功能、性能的维护活动约占整个维护 工作的50%以上。
8.2 维护的特点
2.结构化维护 如果有一个完整的软件配置存在,那么维护工 作从评价设计文档开始,确定软件重要的结构特 点、性能特点以及接口特点;估量要求的改动将 带来的影响,并且计划实施途径。然后首先修改 设计并且对所做的修改进行仔细复查。接下来编 写相应的源程序代码;使用在测试说明书中包含 的信息进行回归测试;最后,把修改后的软件再 次交付使用。