您好,欢迎访问三七文档
个人成果,妥善保存,请勿传播软件工程岐兵Email:qib@epsoft.com.cn个人成果,妥善保存,请勿传播可行性研究需求分析概要设计详细设计实现集成测试确认测试使用与维护退役软件定义软件开发软件使用与维护软件生命周期个人成果,妥善保存,请勿传播软件维护软件维护主要任务是在软件使用/维护阶段,为了改正错误或满足新的需要而修改软件大型软件的维护成本高达开发成本的4倍左右目前国外许多软件开发组织把60%以上的人力用于维护已有的软件而且随着软件数量增多和使用寿命延长,这个百分比还在持续上升个人成果,妥善保存,请勿传播课程内容提纲第8章:“维护”–软件维护的定义–软件维护的特点–软件维护过程–软件的可维护性–预防性维护个人成果,妥善保存,请勿传播软件维护的定义Q:什么是维护?A:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。Q:维护做什么?A:①诊断和改正错误——改正性维护(correctivemaintenance),约占全部维护活动的17~20%;②为了和变化了的环境(如软\硬件升级、新数据库等)适当地配合而修改软件——适应性维护(adaptivemaintenance),约占全部维护活动的18~25%;个人成果,妥善保存,请勿传播③为了增加新功能,修改已有功能,改造界面,增加HELP等,而修改软件——完善性维护(perfectivemaintenance),约占全部维护活动的50~66%;④为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件——预防性维护(preventivemaintenance),与其它维护活动共占总维护的4%左右。注:①一般维护的工作量占生存周期70%以上,维护成本约为开发成本的4倍(80-20Rule);②文档维护与代码维护同样重要。软件维护的定义个人成果,妥善保存,请勿传播课程内容提纲第8章:“维护”–软件维护的定义–软件维护的特点–软件维护过程–软件的可维护行–预防性维护个人成果,妥善保存,请勿传播软件结构、系统接口、约束条件……???不知道!1、结构化维护与非结构化维护的对比维护要求软件配置只有代码评价代码重编程序复查完整配置评价设计文档估计改动影响,计划实施途径修改设计重编程序复查交付使用软件维护的特点个人成果,妥善保存,请勿传播2、维护的代价有形代价:费用已上升至总预算的80%;无形代价:-占用资源以致延误开发;-修改不及时引起用户不满;-维护引入新错误,降低了软件质量,等等。维护工作量的经验模型:软件维护的特点M=P+Kec-d其中:M=维护用的总工作量;P=生产性工作量(e.g.分析,评估,设计,编码,and测试);K=经验常数;c=复杂度(主要来自缺乏结构化设计和必要的文档)d=维护人员对软件的熟悉程度.个人成果,妥善保存,请勿传播35%~40%40%~60%70%~80%80%~90%2000年1990年1980年1970年软件维护的特点软件维护的费用逐年上升个人成果,妥善保存,请勿传播3、维护的问题§2.维护的特点•别人的程序很难读懂说明性文档不可缺少!•文档与代码不一致那是给谁看呢?•开发人员往往不参加维护工资不一样嘛!•大多数软件在设计时没有考虑将来的修改软件工程的思想至少部分地解决了与维护有关的每一个问题。个人成果,妥善保存,请勿传播课程内容提纲第8章:“维护”–软件维护的定义–软件维护的特点–软件维护过程–软件的可维护行–预防性维护个人成果,妥善保存,请勿传播软件维护过程软件维护过程本质上是修改和压缩了的软件定义和开发过程有效的维护需要建立一个维护组织确定报告和评价的过程为每个维护要求规定一个标准化的事件序列建立一个适用于维护活动的记录保管过程,并且规定复审标准个人成果,妥善保存,请勿传播1、建立维护组织(maintenanceteam):在维护活动开始之前就明确维护责任是十分必要的,这样可以大大减少维护过程中可能出现的混乱软件维护过程个人成果,妥善保存,请勿传播要求维护维护管理员系统管理员客户要求任务评价任务评价变化授权人钱太少不干!软件维护过程个人成果,妥善保存,请勿传播2、维护报告⑴维护申请报告(MaintenanceRequestForm)由用户填写的外部文件,提供错误情况说明(输入数据,错误清单等),或修改说明书等。⑵软件修改报告(SoftwareChangeReport)与MRF相应的内部文件,要求说明:①所需修改变动的性质;②申请修改的优先级;③为满足某个维护申请报告,所需的工作量;④预计修改后的状况。软件维护过程个人成果,妥善保存,请勿传播用户类型估计错误严重程度计划改正进度错误改正目录分析问题严重维护任务复审修改后的软件配置评价优先度开始分析开发目录完善适应低高复审后供使用的软件配置软件维护过程3、维护的事件流个人成果,妥善保存,请勿传播4、保存维护记录–先要确定哪些数据是值得记录,下述内容:程序标识;源语句数目;机器指令条数;使用的程序设计语言;程序安装日期;从安装以来程序运行的次数、失效的次数;程序变动的层次和标识;因程序变动而增加的源语句数、删除的源语句数;每个改动耗费的人—修改程序的日期;软件工程师的名字;与完成的维护相联系的纯效益。软件维护过程个人成果,妥善保存,请勿传播5评价维护活动–可以对维护工作从以下几个方面进行度量。每次程序运行平均失效的次数;用于每类维护活动的总人时数;平均每个程序、每种语言、每种维护类型所做的程序变动数;维护过程中增加或删除一个源语句平均花费的人—时数;维护每种语言源程序花费的人时数;一张维护申请表的平均周转时间;不同维护类型所占的百分比。软件维护过程个人成果,妥善保存,请勿传播课程内容提纲第8章:“维护”–软件维护的定义–软件维护的特点–软件维护过程–软件的可维护性–预防性维护个人成果,妥善保存,请勿传播软件可维护性可定性地定义为:维护人员理解、改正、改动和改进这个软件的难易程度。1、用于衡量可维护性的软件特性:改正性维护适应性维护完善性维护1.可理解性2.可测试性3.可修改性4.可靠性5.可移植性6.可使用性7.效率软件的可维护性个人成果,妥善保存,请勿传播⑴可理解性(Understandability)是指由文档代码理解功能运行的容易程度。对外又称userfriendliness.好程序的特征:模块化、结构化、代码与设计风格一致,高级语言实现。度量方法:90-10Test——读源程序10分钟,能否默写出90%?⑵可测试性(Testability)是指论证程序正确性的容易程度。好程序的特征:可理解、可靠、简单。度量方法:程序复杂度软件的可维护性个人成果,妥善保存,请勿传播⑶可修改性(Reparability)是指程序容易修改的程度。好程序的特征:可理解、简单、通用。度量方法:⑸可移植性(Portability)是指程序被移到一个新环境的容易程度。好程序的特征:结构好,不特别依赖于某一具体的计算机或操作系统。CAD其中:D=修改难度;A=要修改模块的复杂度C=所有模块的平均复杂度。D1表示修改很困难。⑷可靠性软件的可维护性个人成果,妥善保存,请勿传播⑹可使用性⑺效率(Efficiency)是指程序能执行预定功能,而又不浪费机器资源(包括内存、外存、通道容量、执行时间等等)的程度。软件的可维护性个人成果,妥善保存,请勿传播2、文档——影响可维护性的决定因素,比代码更重要。⑴用户文档:①功能描述——说明系统能做什么;②安装文档——说明安装系统的方法及适应特定的硬件配置的方法;③使用手册——说明使用方法以及错误挽救方法;④参考手册——详尽描述用户可使用的所有系统设施以及它们的使用方法;给出错误信息注解表;⑤操作员指南(如果需要有系统操作员的话)——说明操作员处理使用中出现的各种情况的方法。⑵系统文档:即软件生产过程中每一步产生的文档。软件的可维护性个人成果,妥善保存,请勿传播分析设计编码测试验收配置复审可靠性可移植性可用性可理解性可修改性可测试性可理解性可修改性可移植性效率可靠性效率完整性一致性可理解性各阶段复审重点:3、复审软件的可维护性个人成果,妥善保存,请勿传播课程内容提纲第8章:“维护”–软件维护的定义–软件维护的特点–软件维护过程–软件的可维护性–预防性维护个人成果,妥善保存,请勿传播预防性维护如何应对“老程序”–反复多次地做修改程序的尝试–尽可能多地掌握程序的内部细节–应用软件工程对程序重新设计、编码、测试预防性维护的认识维护一行源代码的代价是开发的14-20倍重新设计软件体系结构的必要性现有软件可作为“原型”使用,提高开发效率容易明确“变更需求和变更的范围”可利用逆向工程和再工程工具,使部分工作自动化可以建立起完善的软件配置个人成果,妥善保存,请勿传播本章结束-下一章节导读:“面向对象方法导论”
本文标题:软件工程08-维护
链接地址:https://www.777doc.com/doc-212997 .html