第7章 软件维护_第1页
第7章 软件维护_第2页
第7章 软件维护_第3页
第7章 软件维护_第4页
第7章 软件维护_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第7章软件维护主要内容7.1软件维护的定义7.2软件维护的特点7.3软件维护过程7.4软件的可维护性7.5预防性维护7.6软件再工程过程23第八章软件维护7.1软件维护的定义软件维护

----就是在软件已经交付使用之后,为保证软件在相当长的时期能够正常运作所进行的软件活动。

维护的类型有四种:

改正性维护适应性维护扩充与完善性维护预防性维护4改正性维护---CorrectiveMaintenance在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,所进行的诊断和改正错误的过程就叫做改正性维护。5适应性维护

---AdaptiveMaintenance

在使用过程中,外部环境(新的硬、软件配置)

数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。

6扩充与完善性维护---PerfectiveMaintenance

在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做扩充与完善性维护。7预防性维护---PreventiveMaintenance预防性维护是为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。预防性维护定义为:采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。8各种维护所占比例:其它维护4%适应性维护18%~25%改正性维护

17%~

21%扩充与完善性维护50%~60%1.维护过程存在的问题多1)理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加。2)需要维护的软件往往没有合格的文档,或者文档资料显著不足。3)当要求对软件进行维护时,不能指望由开发人员给我们仔细说明软件或开发人员已经不在附近了。4)绝大多数软件在设计时没有考虑将来的修改。5)软件维护不是一项吸引人的工作,形成这种观念很大程度上是因为维护工作经常遭受挫折。7.2软件维护的特点

2.维护的代价高昂

在过去的几十年中,软件维护的费用稳步上升。软件维护成本是软件开发成本的四倍左右。维护费用只不过是软件维护的最明显的代价,但还有一些无形的代价:

可用的资源必须供维护任务使用,以致耽误甚至丧失了开发的良机;

当看来合理的有关改错或修改的要求不能及时满足时将引起用户不满;由于维护时的改动,在软件中引入了潜伏的错误,从而降低了软件的质量;当必须把软件工程师调去从事维护工作时,将在开发过程中造成混乱;生产率大幅度下降。3、远程维护是现代软件维护的新途径通信和网络技术的发展为软件的维护提供了便捷的方式,软件使用中会出现各种各样的问题,其中许多问题可以通过电话、E-mail、在线交谈和视频指导等方式加以解决。114.结构化维护与非结构化维护差别巨大非结构化维护:维护软件时,如果没有一个完整的软件配置存在,甚至只有程序代码,那么维护人员只能进行非结构化维护。非结构化维护需要付出很大代价,这种维护方式是没有使用良好定义的方法学开发出来的软件的必然结果。

非结构化维护步骤分析用户需求;代码评价;评价反馈;重新编码;复查;交付使用。13结构化维护结构化维护:维护软件时,如果有一个完整的软件配置存在,那么维护人员可以进行结构化维护。有了软件的完整配置并不能保证维护中没有问题,但是确实能减少精力的浪费并且能提高维护的总体质量。14结构化维护的步骤确定软件结构特点;性能特点分析;接口特点分析;估计改动带来的影响;计划实施途径;修改设计并对所做的修改仔细复查;编写相应的源程序;回归测试;交付使用155、影响软件维护的因素系统的规模系统的年龄系统的结构系统的开发方法16177.3软件维护过程维护过程本质上是修改和压缩了的软件定义和开发过程,而且事实上远在提出一项维护要求之前,与软件维护有关的工作已经开始了。为了有效地进行软件维护,应事先就开始做组织工作。

首先建立维护的机构

申明提出维护申请报告的过程及评价的过程

为每一个维护申请规定标准的处理步骤

建立维护活动的记录保管,并规定复审的标准181、维护机构除了较大的软件开发公司外,通常在软件维护工作方面,并不保持一个正式的组织机构。虽然不要求建立一个正式的维护机构,但是在开发部门确立一个非正式的维护机构则是非常必要的。19每个维护要求都通过维护管理员转交给相应的系统管理员去评价(系统管理员是被指定去熟悉一小部分产品程序的技术人员)。系统管理员对维护任务做出评价之后,由变化授权人决定应该进行的活动。202.维护报告应该用标准化的格式表达所有软件维护申请(要求)。维护申请报告或称软件问题报告,由申请维护的用户填写。用户必须完整地说明产生错误的情况,包括输入数据、错误清单以及其它有关材料。如果申请的是适应性维护或完善性维护,用户必须提出一份修改说明书,列出所有希望的修改。21维护申请报告将由维护管理员和系统管理员来研究处理。他们应相应地做出软件修改报告,指明:所需修改变动的性质;申请修改的优先级;为满足某个维护申请报告,所需的工作量预计修改后的状况.软件修改报告应提交给变化授权人(修改负责人),经批准后才能开始进一步安排维护工作。3、维护的事件流用户维护人员安排改正性维护确认维护类型维护实施评价优先级进行问题分析复审评价错误严重程度进行问题分析确定更改要求维护要求完善性适应性将安排好的工作量列入计划低高纠错性严重不严重将改正错误列入计划人员安排人员安排交付使用的软件理解分析程序安排计划修改程序测试程序或或或或软件维护的工作流程图修改过的软件23尽管维护申请的类型不同,但都要进行同样的技术工作。修改软件需求说明修改软件设计设计评审对源程序做必要的修改单元测试集成测试(回归测试)

确认测试软件配置评审等。24

在每次软件维护任务完成后进行情况评审,对以下问题做一总结:

(1)

在目前情况下,设计、编码、测试中的哪一方面可以改进?

(2)

哪些维护资源应该有但没有?

(3)

工作中主要的或次要的障碍是什么?

(4)

从维护申请的类型来看是否应当有预防性维护?

情况评审对将来的维护工作如何进行会产生重要的影响。254、维护档案记录①程序标识;②源语句数;③机器指令条数;④使用的程序设计语言;⑤程序安装的日期;⑥自从安装以来程序运行的次数;⑦自从安装以来程序失效的次数;⑧程序变动的层次和标识;⑨因程序变动而增加的源语句数;⑽因程序变动而删除的源语句数;⑾每个改动耗费的人时数;⑿程序改动的日期;⒀软件工程师的名字;⒁维护要求表的标识;⒂维护类型;⒃维护开始和完成的日期;⒄累计用于维护的人时数;⒅与完成的维护相联系的纯效益。265、维护评价评价维护活动比较困难,因为缺乏可靠的数据。如果维护的档案记录做得比较好,可以得出一些维护“性能”方面的度量值。

(1)每次程序运行平均失效的次数;(2)用于每一类维护活动的总人时数;(3)平均每个程序、每种语言、每种维护类型所做的程序变动数;(4)维护过程中增加或删除一个源语句平均花费的人时数;(5)维护每种语言平均花费的人时数;(6)一张维护要求表的平均周转时间;(7)不同维护类型所占的百分比。根据对维护工作定量度量的结果,可以做出关于开发技术、语言选择、维护工作量规划、资源分配及其他许多方面的决定,而且可以利用这样的数据去分析评价维护任务。277.4软件的可维护性许多软件的维护十分困难,原因在于这些软件的文档不全、质量差、开发过程不注意采用好的方法,忽视程序设计风格等。软件可维护性是指维护人员理解、改正、改动或改进软件的难易程度。287.4.1决定软件可维护性的因素1.可理解性2.可测试性3.可修改性4.可移植性

5.可重用性

297.4.2文档文档是影响软件可维护性的决定因素。往往文档比程序代码更重要。软件系统的文档可以分为用户文档和系统文档两类。

----用户文档主要描述系统功能和使用方法,并不关心这些功能是怎样实现的;

----系统文档描述系统设计、实现和测试等各方面的内容。30软件文档应该满足下述要求:(1)必须描述如何使用这个系统,没有这种描述时即使是最简单的系统也无法使用;(2)必须描述怎样安装和管理这个系统;(3)必须描述系统需求和设计;(4)必须描述系统的实现和测试,以便使系统成为可维护的。311.用户文档用户文档是用户了解系统的第一步,它应该能使用户获得对系统的准确的初步印象。文档的结构方式应该使用户能够方便地根据需要阅读有关的内容。用户文档至少应该包括下述5方面的内容:(1)功能描述;(2)安装文档;(3)使用手册;(4)参考手册;(5)操作员指南(如果需要有系统操作员的话)。

322.系统文档

----所谓系统文档指从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档。

----描述系统设计、实现和测试的文档对于理解程序和维护程序来说是极端重要的。

----和用户文档类似,系统文档的结构也应该能把读者从对系统概貌的了解,引导到对系统每个方面每个特点的更形式化更具体的认识。337.4.3可维护性复审在软件工程过程的每一个阶段都应该考虑并努力提高软件的可维护性,在每个阶段结束前的技术审查和管理复审中,应该着重对可维护性进行复审。34在完成了每项维护工作之后,都应该对软件维护本身进行仔细认真的复审。

---维护应该针对整个软件配置,不应该只修改源程序代码。当对源程序代码的修改没有反映在设计文档或用户手册中时,就会产生严重的后果。

---每当对数据、软件结构、模块过程或任何其他有关的软件特点做了改动时,必须立即修改相应的技术文档。不能准确反映软件当前状态的设计文档可能比完全没有文档更坏。

---用户通常根据描述软件特点和使用方法的用户文档来使用、评价软件。如果对软件的可执行部分的修改没有及时反映在用户文档中,则必然会使用户因为受挫折而产生不满。357.5预防性维护预防性维护方法是由Miller提出来的,他把这种方法定义为:“把今天的方法学应用到昨天的系统上,以支持明天的需求。”开发和维护者不应等待用户的维护申请,在条件具备时应该主动地进行预防性维护。预防性维护对象:预计若干年内将继续使用的程序当今正成功使用的程序最近的将来要进行大修改和完善的程序再工程是一个重构活动(类比重建一所房子)开始重建前,首先检查一下房子。确定它是否确实需要重建?在拆掉并重建房子前,确定其结构是否牢固。若结构良好,则可能是“改造”。在开始重建前,确保你已经了解房子最初是如何建造的。(墙内部,了解布线、管道以及内部结构。)如果开始重建,应该使用最现代的,耐久的材料。如果决定重建,一定要采用严格的方式,使用现在及将来都将获得高质量的做法。7.6软件再工程过程(SoftwareReengineering)

377.6软件再工程过程(SoftwareReengineering)

软件再工程过程模型软件再工程是一类软件工程活动,是一个工程过程,它将逆向工程、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论