第13章软件维护与再工程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件工程软件工程软件工程第第1313章章软件维护软件维护常熟理工学院软件工程课程2/47一位编程大师曾说过:“哪怕程序只有三行长,总有一天你也不得不对它进行维护。”常熟理工学院软件工程课程3/47•在软件开发过程中始终强调软件的可维护性。原因是,一个应用系统由于需求和环境的变化以及自身暴露的问题,在交付用户使用后,对它进行维护是不可避免的,统计和估测结果表明,信息技术中硬件费用一般占35%,软件占65%,而软件后期维护费用有时竟高达软件总费用的80%,所有前期开发费用仅占20%。•许多大型软件公司为维护已有软件耗费大量人力、财力。因此,必须建立一套评估、控制和实施软件维护的机制。常熟理工学院软件工程课程4/47软件维护的概念软件维护的概念•什么是软件维护–是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程•国标GB/T11457-95给出如下定义–在一软件产品交付使用后对其进行修改,以纠正故障、改进其性能和其它属性,或使产品适应改变了的环境常熟理工学院软件工程课程5/4711、软件维护分类、软件维护分类•根据软件维护的原因不同,可以分为:–纠错性维护–适应性维护–完善性维护–预防性维护常熟理工学院软件工程课程6/47纠错性维护纠错性维护•在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。•这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。•为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的错误使用,应当进行的诊断和改正错误的过程就叫做纠错性维护。常熟理工学院软件工程课程7/47适应性维护适应性维护•在使用过程中,–外部环境(新的硬、软件配置)–数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。•为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。常熟理工学院软件工程课程8/47完善性维护完善性维护•在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。•为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。•这种维护活动叫做完善性维护。常熟理工学院软件工程课程9/47预防性维护预防性维护•为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。•采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试,称为预防性维护。常熟理工学院软件工程课程10/47改错性维护占全部维护工作量的比率已从上世纪80年代初的20%大幅度下降,上世纪90年代初一些公司的产品差错率已接近于零!各种维护类型和维护工作量的比例各种维护类型和维护工作量的比例5%常熟理工学院软件工程课程11/4722、软件维护的特点、软件维护的特点•结构化维护和非结构化维护差别巨大•软件维护的代价高昂•维护问题多多常熟理工学院软件工程课程12/47结构化维护结构化维护VSVS非结构化维护非结构化维护•如果采用软件工程的方法进行软件开发,保证每个阶段都有完整且详细的文档,这样维护会相对容易,被称为结构化的维护。•如果不采用软件工程方法开发软件,软件只有程序而欠缺文档,则维护工作变得十分困难,被成为非结构化的维护。常熟理工学院软件工程课程13/47常熟理工学院软件工程课程16/47软件维护的代价高昂软件维护的代价高昂有形代价:1970年软件维护费用占总费用的35%~40%;1980年软件维护费用占总费用的40%~60%;1990年软件维护费用占总费用的70%~80%。无形代价:占用资源以致延误开发;修改不及时引起用户不满;维护引入新错误,降低了软件质量;等等维护费用逐年上升常熟理工学院软件工程课程20/47软件维护的问题多多软件维护的问题多多•与软件维护有关的大多数问题都可归因于软件定义和开发方法上的不足。•软件开发时采用急功近利,还是放眼未来的态度,对软件维护影响极大。•一般说来,软件开发若不严格遵循软件开发标准,软件维护就会遇到许多困难。常熟理工学院软件工程课程23/47软件维护的过程软件维护的过程•软件维护工作在维护申请提出之前就开始了,它包括:–建立维护组织,强制报告和评估的过程;–为每个维护申请确定标准化的事件序列;–制定保存维护活动记录的制度和有关复审及评估的标准。常熟理工学院软件工程课程24/47维护组织维护组织维护决策机构维护管理员系统管理员维护人员配置管理员维护申请每个维护申请通过维护管理员转告给系统管理员,系统管理员一般都是对程序(某一部分)特别熟悉的技术人员,他们对维护申请及可能引起的软件修改进行评估,并向修改控制决策机构(一个或一组管理者)报告,由它最后确定是否采取行动。在维护活动开始之前就明确维护责任是十分必要的,可以大大地减少维护过程中可能出现的混乱。常熟理工学院软件工程课程29/47维维护护过过程程常熟理工学院软件工程课程31/47软件维护记录的保存软件维护记录的保存•有效的保存维护记录是极端重要的。•保存维护记录的第一个问题就是那些数据值得保存?–Swanson为我们指出了下述内容:程序标识、源语句数、机器指令数、使用的程序设计语言、软件安装的日期、自安装以来软件运行的次数、自安装以来软件失败的次数、程序变动的层次和标识、因程序变动而增加的源语句数、因程序变动而删除的源语句数、每个改动消耗的人时数、程序改动的日期、软件工程师的名称、维护要求的标识、维护类型、维护开始和完成的时间、用于维护的累计人时数、与完成的维护相关联的纯收益。–应该为每项维护工作都收集上述数据。可以利用这些数据构成一个维护数据库。常熟理工学院软件工程课程32/47软件维护记录软件维护记录维护结果:经过对需求的进一步确认,对指定编号的模块进行了修改,纠正了源程序中出现的错误。维护人员:*****……****0.2个人月修改部分源程序查错,确定错误位置**月**日维护人员工作量增/删/改维护内容日期编号:evalobject_01机器指令长度:25Kb程序安装日期:****年**月**日程序运行时间:模块名称:测评控制管理源程序行数:210编程语言:PHP失效次数:3初始状态描述:不同类型的人员可以进行交叉测评。按需求:各类人员只进行自身类型的测测评,如管理人员只能对管理人员进行测评,教师只能测评教师。项目名称:网络测评系统计划编号:eval_wh_012日期:****年**月**日记录编号:eval_wh_012常熟理工学院软件工程课程34/47•软件可维护性即软件被理解、改正、调整和改进的难易程度。•可维护性是指导软件工程各个阶段工作的一条基本原则,也是软件工程追求的目标之一•对软件可维护性影响的主要因素有:–可理解性(understandability)–可测试性(testability)–可修改性(modifiability)–可移植性(portability)软件可维护性软件可维护性常熟理工学院软件工程课程39/47•建立明确的软件质量目标和优先级•使用提高软件质量的技术和工具•进行明确的质量保证审查•选择可维护的程序设计语言•改进程序的文档•进行质量保证审查提高可维护性的方法提高可维护性的方法常熟理工学院软件工程课程41/47•软件修改是一项很危险的工作,对一个复杂的逻辑过程,那怕做一项微小的改动,都可能引入潜在的错误,虽然设计文档化和细致的回归测试有助于排除错误,但是维护仍然会产生副作用。•软件维护的副作用指,由于维护或在维护过程中其他一些不期望的行为引入的错误,副作用大致可分为三类:–代码副作用–数据副作用–文档副作用软件维护的副作用软件维护的副作用常熟理工学院软件工程课程42/47•修改或删除子程序;•修改或删除语句标号;•修改或删除标识符;•为提高执行效率而做的修改;•修改文件的open、close操作;•修改逻辑操作符;•由设计变动引起的代码修改;•修改对边界条件的测试。代码的副作用代码的副作用常熟理工学院软件工程课程43/47•局部和全局常量的再定义;•记录或文件格式的再定义;•增减数据或其他复杂数据结构的体积;•修改全局数据;•重新初始化控制标志和指针;•重新排列I/O表或子程序参数表。数据的副作用数据的副作用常熟理工学院软件工程课程44/47•维护应统一考虑整个软件配置,而不仅仅是源代码。否则,由于在设计文档和用户手册中未能准确反映修改情况而引起文档副作用。•对软件的任何修改都应在相应的技术文档中反映出来,如果设计文档不能与软件当前的状况对应则比没有文档更糟。•对用户来说,若使用说明中未能反映修改后的状况,那么用户在这些问题上必定出错。•一次维护完成之后,再次交付软件之前应仔细复审整个配置,有效地减少文档副作用。•某些维护申请不必修改设计和代码,只需整理用户文档便可达到维护的目的。文档的副作用文档的副作用常熟理工学院软件工程课程45/47软件维护的管理软件维护的管理•软件维护不仅仅是技术性的,还需要大量的管理工作予以配合,才能保证维护工作的质量。常熟理工学院软件工程课程46/47•为了确保维护中所作修改的正确性,消除因不当修改给用户带来不良影响,要求对修改工作持谨慎态度。维护人员应和用户充分讨论,在说明情况、弄清要求的基础上,提出修改意见。软件维护的管理软件维护的管理常熟理工学院软件工程课程47/47•由谁来承担软件维护管理工作–一般认为应该由开发人员来维护,因为他们对软件最熟悉,维护起来最方便–另一种做法是安排专职维护人员负责维护工作,而非开发人员。这样的好处是开发人员可以集中精力做好开发工作,有利于坚持实施开发标准,有利于保证文档的编制质量。同时专职的维护人员可以深入透彻的分析软件,从而更有力于维护的开展。–还有一种较好的做法,安排软件人员开发任务和维护任务的定期轮换。这样可以使软件人员体会到开发和维护工作的具体要求、开发和维护的关系,有利于软件人员的技术水平和软件系统的质量。软件维护的管理软件维护的管理

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功