软件工程课件之第8章_维护(第6版)(张海潘编著).pptx
文本预览下载声明
第8章 维护
软件维护的定义
软件维护的特点
软件维护过程
软件的可维护性
预防性维护
软件再工程过程
软件维护及类型
在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
可分为4项活动:
改正性维护(Corrective maintenance)
适应性维护(Adaptive maintenance)
完善性维护(Perfective maintenance)
预防性维护(Preventive maintenance)
软件维护分类
改正性维护:
把诊断和改正错误的过程称为改正性维护。
改正性维护占17%~21%。
适应性维护:
为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的维护活动。
包括外部环境和数据环境的变化。
适应性维护占18%~25%。
软件维护分类
完善性维护:
为了满足在用户提出的增加新功能或修改已有功能的要求和一般性的改进要求,需要进行完善性维护。
包括功能和性能的要求。
完善性维护占50%~66%。
软件维护分类
预防性维护:
“把今天的方法学应用于昨天的系统以满足明天的需要。”
采用先进的软件工程方法对需要维护的软件或软件中的某一部分,主动地进行重新设计、编码和测试。
预防性维护占4%左右。
只有预防性维护是主动的,其他维护都是被动的。
软件维护工作量
各类维护工作量所占比例
维护工作量在软件生命周期所占比例
软件维护的特点
结构化维护与非结构化维护差别巨大
维护的代价高昂
维护的问题很多
软件维护的特点
结构化维护:
有完整的软件配置,能够从评价设计文档开始,估量要求的改动将带来的影响,并且计划实施途径。
修改设计复查,编码及回归测试并交付使用有完整的软件配置,能够提高维护的整体质量。
非结构化维护:
缺少相关文档,惟一成分是程序代码,维护的代价巨大
软件维护的特点
维护的代价
有形的维护代价:费用。
无形的维护代价有更大的影响:
贻误良机;
一些合理的修复或修改请求不能及时安排,使得客户不满意;
变更的结果引入新的故障,使得软件整体质量下降;
把软件人员抽调到维护工作中,干扰了软件开发工作。
维护的代价
生产率大幅下降:
维护工作量包括生产性活动(如分析和评价、设计修改和实现)和非生产性活动(如力图理解代码功能、解释数据结构、接口特性、性能限度等)。
维护工作量的模型:
M是维护中消耗的总工作量
p是上面描述的生产性工作量
K是一个经验常数
c是复杂程度
d是维护人员对软件熟悉程度的度量
维护的问题
与软件维护有关的绝大多数问题,都可归因于软件定义和软件开发的方法有缺点:
理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加。
需要维护的软件往往没有合格的文档,或者文档资料显著不足。
当要求对软件进行维护时,不能指望由开发人员给我们仔细说明软件。
绝大多数软件在设计时没有考虑将来的修改。
软件维护不是一项吸引人的工作。
软件维护过程
为了有效地进行软件维护,应事先就开始做组织工作:
首先建立维护组织;
申明提出维护申请报告的过程及评价的过程;
为每一个维护申请规定标准化的事件序列;
建立适用于维护活动的记录保管过程以及规定复审标准。
软件维护过程
维护报告
维护要求表或称软件问题报告表,由申请维护的用户填写。
软件修改报告,由软件组织内部制定,指明:
满足某个维护要求表中提出的要求所需要的工作量;
维护要求的性质;
这项要求的优先级;
与修改有关的事后数据;
维护的事件流
维护的事件流
尽管维护申请的类型不同,但都要进行同样的技术工作:
修改软件设计
复查
对源程序做必要的修改
单元测试
集成测试(回归测试)
确认测试
复审等
保存维护记录
程序名称
源程序语句条数
机器代码指令条数
所用的程序设计语言
程序安装的日期
程序安装后的运行次数
程序安装后程序失效的次数
程序改变的层次及名称
修改程序增加的源程序语句条数
保存维护记录
修改程序减少的源程序语句条数
每次修改所付出的“人时”数
修改程序的日期
软件维护人员的姓名
维护要求表的名称
维护类型
维护开始时间和维护结束时间
花费在维护上的累计“人时”数
维护工作的净收益等
评价维护活动
每次程序运行时的平均失效次数;
花费在每类维护上的总“人时”数;
每个程序、每种语言、每种维护类型的程序平均修改次数;
因为维护,增加或删除每个源程序语句所花费的平均“人时”数;
用于每种语言的平均“人时”数;
一张维护要求表的平均周转时间;
不同维护类型所占的百分比。
软件的可维护性
维护人员理解、改正、改动或改进这个软件的难易程度。
IEEE Standard Glossary of Software Engineering Terminology, IEEE Std 61
显示全部