《软件工程概论 维护-1学时课件》由会员分享,可在线阅读,更多相关《软件工程概论 维护-1学时课件(23页珍藏版)》请在金锄头文库上搜索。
1、1,第8章 维护,2,8.1 软件维护的定义 8.2 软件维护的特点 8.3 软件维护过程 8.4 软件的可维护性 8.5 预防性维护 8.6 软件再工程过程,3,软件工程的目的: 提高软件的可维护性; 减少软件维护所需要的工作量; 降低软件系统的总成本。 软件维护定义:指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。 大型软件维护成本达软件开发成本的4倍左右; 60%以上的人力用于维护已有的软件。,8.1 软件维护的定义,4,4类软件维护:,完善性维护(Perfective Maintenance) 扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。 纠错性维护
2、(Corrective Maintenance) 对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。 适应性维护(Adaptive Maintenance) 要使运行的软件能适应运行环境的变动而修改软件的过程。 预防性维护(Preventive Maintenance) 为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。,5,4类软件维护的比例,6,8.2 软件维护的特点,7,一、结构化维护与非结构化维护差别巨大 结构化维护 指软件开发过程是按照软件工程方法,软件的维护过程,有一整套完整的方案、
3、技术、审定过程。 非结构化维护 缺乏必要的文档说明,难于确定数据结构、系统接口等特性。维护工作令人生畏,事倍功半。,8,二、维护代价高昂 维护费用高达开发费用的55%-70%,而且逐年上涨。 维护中还可能引入新的潜在错误。 Belady 和 Lehman 提出软件维护工作模型: M=P+K*exp(c - d) 其中: M维护总工作量 P生产性活动 K经验常数 c程序复杂度(由非结构化维护引起的) d对维护软件熟悉程度的度量,模型表明:如果使用了不好的软件开发方法(未按软件工程要求做),原来参加开发的人员或小组不能参加维护,则工作量(及成本)将按指数级增加。,9,影响维护代价的技术和非技术因素
4、,非技术因素: 应用域的复杂性:较好地理解应用需求 开发人员的稳定性。 软件的生命期:控制生命周期 商业操作模式变化对软件的影响:如财务软件随制度 技术因素: 软件对运行环境的依赖性。 编程语言。 编程风格。 测试与改错工作。 文档的质量。,10,8.3 软件维护过程,维护组织 维护报告 维护事件流 保存维护记录 评价维护活动,11,软件维护的机构,12,维护组织,13,维护事件流,14,哪些数据是值得记录的? 程序标识; 源语句数; 机器指令条数; 使用的程序设计语言; 程序安装的日期; 自从安装以来程序运行的次数; 自从安装以来程序失效的次数; 程序变动的层次和标识; 因程序变动而增加的源
5、语句数; 因程序变动而删除的源语句数;,保存维护记录,15,保存维护记录(续1),每个改动耗费的人时数; 程序改动的日期; 软件工程师的名字; 维护要求表的标识; 维护类型; 维护开始和完成的日期; 累计用于维护的人时数; 与完成的维护相联系的纯效益。,16,度量维护工作的7个方面: (1) 每次程序运行平均失效的次数; (2) 用于每一类维护活动的总人时数; (3) 平均每个程序、每种语言、每种维护类型所做的程序变动数; (4) 维护过程中增加或删除一个源语句平均花费的人时数; (5) 维护每种语言平均花费的人时数; (6) 一张维护要求表的平均周转时间; (7) 不同维护类型所占的百分比。
6、,评价维护活动,17,软件的可维护性定性:维护人员理解、改正、改动或改进这个软件的难易程度。 提高可维护性是支配软件工程方法学所有步骤的关键目标。,8.4 软件的可维护性,18,1. 可理解性 2. 可测试性 3. 可修改性 4. 可移植性 5. 可重用性:使用软件构件!,8.4.1 决定软件可维护性的因素,19,用户文档 (1)功能描述; (2)安装文档; (3)使用手册; (4)参考手册; (5)操作员指南。 系统文档 从问题定义、需求说明到验收测试计划一系列和系统实现有关的文档。,8.4.2 文 档,20,在软件工程过程的每一个阶段都应该考虑并努力提高软件的可维护性; 在每个阶段结束前的
7、技术审查和管理复审中,应该着重对可维护性进行复审; 维护应该针对整个软件配置。,8.4.3 可维护性复审,21,“把今天的方法学应用到昨天的系统上,以支持明天的需求。” Miller对预防性维护的定义 反复多次地修改程序的尝试; 通过仔细分析程序尽可能多掌握程序的内部工作细节,以便更有效地修改它; 在深入理解原有设计的基础上,用软件工程方法重新设计、重新编码和测试那些需要变更的软件部分;局部再工程 以软件工程方法学为指导,对程序全部重新设计、重新编码和测试,可以使用CASE工具来帮助理解原有的设计。软件再工程,8.5 预防性维护,22,8.6 软件再工程过程,图8.3 软件再工程过程模型,23,本章小结,什么是软件维护? 有哪几种常见的软件维护? 什么是软件的可维护性?决定软件可维护性的因素有哪些? 软件的维护过程:了解,