软件工程学:维护_第1页
软件工程学:维护_第2页
软件工程学:维护_第3页
软件工程学:维护_第4页
软件工程学:维护_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

本章介绍软件维护的定义、种类、特点;维护的过程;提高软件可维护性的因素;以及软件再工程过程。,第8章维护(Maintenance),软件维护的任务:保证软件在一个相当长的时间内能够正常运行。,软件维护的目的:满足用户对已开发软件产品的性能与运行环境不断提高的需求,进而达到延长软件寿命。,1.软件维护的定义,诊断和改正用户使用软件时所发现的软件错误的过程。约占全部维护活动的17%21%。,软件维护:就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。,软件维护包括4项活动:,改正性维护(correctivemaintenance),适应性维护(adaptivemaintenance),为了使软件和变化了的环境(如软/硬件升级、新数据库等)适当地配合而修改软件的活动。约占全部维护活动的18%25%。,完善性维护(perfectivemaintenance),1.软件维护的定义,注:一般维护的工作量占生存周期70%以上,维护成本约为开发成本的4倍;文档维护与代码维护同样重要。,为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而主动修改软件的活动。与其它维护活动共占总维护的4%左右。,为了增加软件新功能、改已有功能(如改造界面)、增强软件性能、提高运行效率等,而修改软件的活动。约占全部维护活动的50%66%。,预防性维护(preventivemaintenance),软件结构、系统接口、约束条件?,不知道!,1、结构化维护与非结构化维护的对比,评价代码,评价设计文档,交付使用,2.软件维护的特点,结构化维护与非结构化维护的区别:,结构化维护是在软件开发中使用软件工程方法学的结果;非结构化维护是没有使用良好定义的方法学开发的结果。结构化维护是从评价设计文档开始,确定软件结构特点、性能特点及接口特点;而非结构化维护是从评价代码开始,评价困难且对软件结构、系统接口、性能设计约束常产生误解。结构化维护可估计改动带来的影响并计划实施途径;非结构化对程序的改动后果难于估计。结构化维护是先修改设计并复查,在编写相应的代码;非结构化维护在艰难理解后直接修改代码。结构化维护可进行回归测试,非结构化维护不能进行回归测试且付出较大代价。,2.软件维护的特点,有形代价:费用已上升至总预算的80%;无形代价:占用资源以致延误开发;修改不及时引起用户不满;维护引入新错误,降低了软件质量;等等。生产率大幅度下降。,2.软件维护的特点,其中:M=Totalmaintenanceeffort;P=Productiveefforts(e.g.Analysis,evaluation,design,coding,andtesting);K=Empiricalconstant;c=Complexity(causedbythelackofstructureddesignanddocumentation)d=Degreetowhichthemaintenanceteamisfamiliarwiththesoftware.,2、维护的代价,M=P+Ke(c-d),软件维护工作分为生产性活动和非生产性活动,维护工作量的经验模型:,3、维护的问题,别人的程序很难读懂,说明性文档不可缺少!,文档与代码不一致,那是给谁看呢?,开发人员往往不参加维护,工资不一样嘛!,大多数软件在设计时没有考虑将来的修改,所以不是人人能发财,值得注意的是:软件工程的思想至少部分地解决了与维护有关的每一个问题。,2.软件维护的特点,3.软件维护过程,在维护活动开始之前就明确维护责任是十分必要的,这样可以大大减少维护过程中可能出现的混乱。,维护过程本质上是修改和压缩了的软件定义和开发过程。,1、建立维护组织(maintenanceteam),维护管理员,系统管理员,客户要求,任务评价,任务评价,变化授权人,钱太少不干!,3.软件维护过程,2、维护报告,3.软件维护过程,维护要求表(MaintenanceRequestForm)由用户填写的外部文件(维护申请报告),提供错误情况说明(输入数据,错误清单等),或修改说明书等。,软件修改报告(SoftwareChangeReport)与MRF相应的内部文件,要求说明:所需修改变动的性质;申请修改的优先级;为满足某个维护申请报告,所需的工作量;预计修改后的状况。,用户,类型,维护要求,估计错误严重程度,改错,计划改正进度,不严重,分析问题,严重,维护任务,分配的人员,复审,修改后的软件配置,评价优先度,开始分析,完善,适应,低,高,分配的人员,复审后供使用的软件配置,3、维护的事件流,3.软件维护过程,4、维护的存档及评估,3.软件维护过程,维护记录的保存Swanson提议的18项内容是值得记录的(P.194)。维护工作的定量度量每次程序运行平均失效的次数用于每一类维护活动的总人时数平均每个程序、每种语言、每种维护所作的程序变动数增加或删除一个源语句平均花费的人时数维护每种语言平均花费的人时数一张维护要求表平均周转时间不同维护类型所占的百分比,4.软件的可维护性(Maintainability)软件度量学(SoftwareMeasurement),软件可维护性可定性地定义为:维护人员理解、改正、改动或改进这个软件的难易程度。,1、衡量可维护性的软件特性,可理解性(Understandability),4.软件的可维护性,是指由文档代码理解功能运行(软件结构、功能、接口、内部处理过程)的容易程度。对外又称userfriendliness.好程序的特征:模块化、结构化、代码与设计风格一致,高级语言实现。度量方法:90-10Test读源程序10分钟,能否默写出90%?,可测试性(Testability),是指诊断和测试程序的容易程度。好程序的特征:可理解、良好的文档、可用的测试调试工具。度量方法:程序复杂度(第6章中已讨论),是指程序容易修改的程度。好程序的特征:可理解、简单、通用、模块遵守设计原理。度量方法:,是指程序被移到一个新环境的容易程度。好程序的特征:结构好,不特别依赖于某一具体的计算机或操作系统。度量方法:工作量,其中:D=修改难度;A=要修改的模块的复杂度;C=所有模块的平均复杂度。D1表示修改很困难。,可靠性(第7章中已讨论),4.软件的可维护性,可修改性(Reparability),可移植性(Portability),4.软件的可维护性,可使用性(第7章中已讨论),是指程序能执行预定功能,而又不浪费机器资源(包括内存、外存、通道容量、执行时间等等)的程度。,效率(Efficiency),可重用性(Reusability),是指同一个软件(或软件成分)不做修改或稍加改动就可以在不同环境中多次重复使用的能力。,软件中使用的可重用构件越多:软件的可靠性越高,改正性维护需求越少,适应性和完善性维护越容易。,2、文档,即软件开发过程中每一阶段产生的文档。,4.软件的可维护性,功能描述说明系统能做什么;安装文档说明安装系统的方法及适应特定的硬件配置的方法;使用手册说明使用方法以及错误挽救方法;参考手册详尽描述用户可使用的所有系统设施以及它们的使用方法;给出错误信息注解表;操作员指南(如果需要有系统操作员的话)说明操作员处理使用中出现的各种情况的方法。,文档是影响可维护性的决定因素,比代码更重要。,用户文档,系统文档,文档要求(P.196),分析,设计,编码,测试,验收,配置复审,可靠性可移植性可重用性可用性,可理解性可修改性可测试性,可理解性可修改性可移植性可重用性效率,可靠性效率,完整性一致性可理解性,各阶段复审重点:,4.软件的可维护性,3、可维护性复审,在软件工程过程的每一个阶段都应该努力提高软件的可维护性,在阶段复审(技术和管理)中应着重对软件的可维护性进行复审。,把今天的方法学应用到昨天的软件系统上,以支持明天的需求。,为了维护已有的软件:多次反复尝试,以实现对不可见的设计与源代码的修改仔细分析程序,尽可能多地掌握内部工作细节深入理解原有设计,用软件工程方法重新设计、编码和测试需要改变的软件成分以软件工程方法学为指导,以CASE工具来帮助理解原有设计,对程序全部重新设计、编码和测试,5.预防性维护(PreventiveMaintenance),5.预防性维护,对已经存在的软件,重新进行开发是可行的,因为:维护一行源代码的成本可能是该行代码初始开发成本的20-40倍。使用现代设计概念重新设计软件体系结构,对未来的维护工作将有很大的帮助。由于软件原型已经存在,软件开发生产率将远远高于平均水平。由于用户已经有较丰富的软件使用经验,所以很容易确定新的需求和变更方向。利用软件再工程工具可以自动完成部分工作。在完成预防性维护过程中,可以建立起完整的软件配置。,6.软件再工程过程(SoftwareRe-engineering),预防性维护又称为软件再工程。,软件再工程过程模型,1、库存目录分析,库存目录是作为软件组织保存的其拥有的所有应用系统的一个目录。对其中的每个系统都进行预防性维护是不现实的,也是不必要的。,按照业务重要程度、寿命、当前可维护性、预期的修改次数等标准,对库存目录的系统进行排序,从中选出再工程的候选者。通常可能的对象:,该程序将在今后数年内继续使用当前正在成功地使用的程序可能在最近的将来要对该程序做较大程度的修改或扩充,6.软件再工程过程,2、文档重构,6.软件再工程过程,旧系统固有的特点是缺乏文档,文档重构就是重新建立起软件的文档资料。,不可能对每个程序都重新建立文档对必须更新建立文档的程序应采取“使用时建立”的方法对必须重构文档的关键程序应把文档工作降到最小,3、逆向工程,软件的逆向工程:是指分析程序以便在比源代码更高的抽象层次上创建出程序的某种描述的过程。是一个恢复设计结果的过程。,4、代码重构,6.软件再工程过程,具有比较完

温馨提示

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

评论

0/150

提交评论