软件维护
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
精编资料
理解可维性的定义,可维性的度量及提高可维护性的方法.深刻理解改正性维护,适应性维护,完善性维护,预防性维护.5.1 软件维护的定义和特点...
维护
第五章软件维护 (3)
5.1 软件维护的定义和特点 (4)
6.1.1 软件维护的定义 (4)
6.1.2软件维护的特点 (4)
5.2软件维护的过程 (4)
5.3 软件的可维护性 (5)
5.3.1决定软件的可维护性的因素 (5)
5.3.2提高可维护性的方法 (6)
5.4软件再工程 (7)
5.5 本章小结 (7)
第五章软件维护
本章要点
✧软件维护的特点
✧软件可维护性
✧软件再工程
本章学习目标
✧了解软件维护的各种困难,软件维护的特点,软件维护的文档。
✧理解软件维护的内容,维护任务的实施。
✧理解可维性的定义、可维性的度量及提高可维护性的方法。
✧深刻理解改正性维护、适应性维护、完善性维护、预防性维护。
5.1 软件维护的定义和特点
任何软件在交付使用之后;由于本身潜在的错误或者满足新的需要,因此我们不得不进行软件的维护。
5.1.1 软件维护的定义
正如前面所述,软件维护的类型是多样的,不同类型的维护有不同的定义。
在国标GB/T 11457-89中明确指出软件运行、维护阶段是软件生存期中的一部分,“对软件产品进行检测,以期获得满意性能;当需要是对软件产品进行修改以改正问题或对变化了的需求做出响应”。
可见,这是从软件生命周期层面对软件维护做出的定义。
从另一方面看,软件维护是一种技术措施,需要从技术的角度加以说明。
国标GB/T 11457-89对软件维护给出了如下两个定义:
1、在一软件产品交付使用后对其进行修改,以纠正故障。
2、在一软件产品交付使用后对其进行修改,以纠正故障,改进其性能和其他属性,
以使产品适应改变了的环境。
5.1.2软件维护的特点
我们把为了改正软件系统中的错误,使软件能够满足预期的正常运行状态的要求向进行的维护叫做改正型维护,随着计算机科学技术领域的各个方面都在迅速的进步,特别是80年代之后,大约每过36个月就有新一代的硬件宣告出现,经常推出新的操作,软件驱动的外围设备的增加或者发生变更时所做的软件维护,我们称适应型维护。
当一个软件顺利地进行时,常常会出现第三项维护的活动:在维护的使用过程中用户往往会提出增加新功能或修改已有功能的建议,还有可能提出一些改进的意见,为了满足这类要求,需要进行完善型的维护,据统计,这类维护活动通常占软件维护的一半左右,为了改进软件效率,可靠行和可维护而进行的维护,出现第四项维护活动在我们现代的软件业中是很少的。
通过以上对软件的定义,软件维护不仅限于纠正使用的错误等活动,据国外权威数字统计,完善性占全部软件维护的60.5%,改正性占维护的17.5%,适应性占18%,其他只占4%左右。
5.2软件维护的过程
早在维护申请提出之前,与维护有关的工作已经开始。
首先的工作是要建立一个机构,对每一个维护申请写出报告并对其过程进行评价,而且对每类维护都要制定规范化的工作程序。
虽然对于大多数软件开发机构并未建立专门的维护机构,但很有必要委派一个非专门的人员来负责相关工作,可以称之为维护控制元。
所有维护请求都必须唯一提交给该人员,由他提交给相关系统管理人员对该维护请求进行评价。
所有维护请求都必须采用标准格式,一般包含以下内容:1、所需工作量2、修改要求的性质、该申请的优先次序、修改后的结果。
总的来说,软件维护过程,涉及到下列12项工作:
(1)评价系统提升请求:根据软件功能和使用环境的分析,对用户提升系统的请求进行评价,评价后提出提升建议。
(2)评价改正问题请求:分析系统在用户使用环境中出现的问题和请求,评价后应提出改正问题请求解决方法。
(3)程序紧急排错:根据改正问题请求解决办法,对出现故障的程序实施紧急排错,使程序尽快恢复正常工作。
(4)指定系统维护更新计划:根据用户的请求和系统提升建议“改正问题请求解决办法”和“程序紧急排错”措施的效果,制定系统更新计划,确定优先级
别和维护更新版本日期。
(5)维护更新版本需求分析:详细地分析与系统更新版本有关的需求。
编写出版维护更新版本的需求文档。
(6)维护更新版本的设计,设计维护更新版本的程序及数据结构完成版本的概要设计和详细设计。
(7)维护更新版本编写和测试:对正常维护的更新版本进行编码新版本的概要设计和详细设。
(8)新版本的发布。
(9)实行预防性维护:对投入市场,正在使用的软件进行监督,及时掌握进行情况,如确实需要适当地对程序进行预防性维护,使软件处于最佳运行状态。
(10)人员培训:针对拥护和市场需要编写维护更新版本培训资料,组织员工培训,提高员工的能力,支持新版本发布后的用户服务工作。
(11)周期性系统评估:软件开发维护单位主动对软件进行一种定期评估,用来考察本系统开发的软件产品的效能和适用性,每次贫农巩固后应撰写出评估报
告。
(12)进行执行后评审:在软件使用相当长时间后,对系统的功能和性能进行全面和生如的评审,评估后应撰写出执行后评审报告。
实施上,软件维护就是
世纪软件工程的循环应用,不同的是维护类型不同,重点不同,但整个方法
没有改变。
5.3 软件的可维护性
软件可维护性可以定性地定义为:维护人员理解改正,改动和改正这个软件的难易程度。
我们一直在强调,提高可维护型是支配软件工程方法论所有步骤的关键目标,也是延长软件生产期的最好的方法。
5.3.1决定软件的可维护性的因素
维护就是在交付使用后进行的修改,修改之前必须理解修改的对象,修改之后应该进行必要的测试,以保证所做的修改是正确的。
如果是改正性修改,还必须预先进行调试以确故障。
因此,影响软件可维护的因数主要又下述3个。
1) .可理解性
软件可理解性表现为外来读者理解软件的结构、接口、功能和内部过程的难易程度。
模块化、详细的设计文档、结构化设计、源代码内部的文档和良好的高级设计语言等等,都对改进软件的可理解性又重要贡献。
2). 可测试性
诊断和测试的难易程度主要取决于软件容易理解的程度,良好的文档对诊断和测试是至关重要的,此外,软件结构,可用的测试工具和调试工具,以及以前设计的测试也都是非常
重要的,维护人员应该能够得到在开发阶段用过的测试方案,以便进行回归测试。
在设计阶段应该尽力把软件设计容易测试和容易诊断的。
3).可修改性
软件容易修改的程度和软件设计原理和规章直接有关,藕合,内聚,局部化,控制工作域的关系等等,都影响软件的可维护性。
5.3.2提高可维护性的方法
为了延长软件的生存期,提高软件的可维护性具有决定的意义。
采用的方法主要有以下5种.
(1)确定质量管理目标
可维护性是所有软件都应具备的基本特点。
一个可维护的程序应该是可理解的,可修改的合可测试的。
但是要实现所有这些目标,需要付出很大的代价,而且也不是一定能够完全实现。
因为有些维护属性之间是相互促进的,例如,可理解合可测试,可理解合可修改性,另外一些之间则是相互抵触的。
因此,尽管可维护性要求每一种维护属性都得到满足,但是他们的重要性是与程序的用途及计算机环境情况相关的。
因此,在提出维护目标的同时规定好维护属性的优先级是非常必要的。
这样对于提高软件的质量以及减少软件在生存周期的费用是非常有帮助的。
在程序的开发阶段就应保证软件具有可理解性。
可修改性和可测试性。
在软件开发的每一个阶段都应尽力考虑软件的可维护性。
如需求分析阶段应该对将来要改进的部分和可能会修改的部分加以注明;对软件的每个测试步骤结束后提交可维护性的说明等。
(2)规范化的程序设计风格
1)模块化程序设计:模块化设计方法可提高可修改性。
可测试性,对某个模块的改动
对其他模块影响不大。
采用模块化设计方法后,如果需要增加程序的某些功能,则
只须增加完成这些功能的程序模块即可;对程序的测试以及重复测试都较容易;对
与程序种的错误易寻找。
易修改。
2)结构化程序设计:利用结构化程序设计可提高程序的可理解性。
当要修改程序的某
一模块时,可以采用一个新的结构优良的模块替代原来的整个模块,这种方法只要
了解了模块之间的接口就可以,不必去了解内部的工作情况。
这样有利于新的错
误,在软件开发过程种,可采用结构化小组,建立主程序小组,实现严格的组织化
管理,职能分工,规范标准。
在对程序的质量进行检测时,也可以采用分工合作的
方法,从而有效地提高质量和检测效率。
(3)选择可维护的程序设计语言
选择较好的程序设计语言对软件维护有很大的影响。
低级语言(机器代码或汇编语言)是一般人很难掌握和理解的,因而很难维护。
高级语言必低级容易理解,具有更好的可维护性。
但是高级语言种,一些语言可能比另外一些语言更容易理解。
例如,cobol语言比fortran 语言更容易理解,因为cobol的变量接近英语;pl/1比cobol更容易理解,因为pl/1有更丰富。
更强的语言集等。
第四代语言(例如,查询语言、图形语言、报表生成器等)比上述高级语言更容易理解。
使用和修改。
用户用第四代语言开发的过程通常比高级语言要快得多。
第四代语言分为过程的语言和非过程化的语言。
对于非过程化的第四代语言,用户不需要指出完成某一项工作得实现算法,仅需要提出操作要求即可。
无论使用那类第四代语言,都能缩短程序得长度,减少程序得复杂性。
此外,第四代语言易理解。
易编程。
程序也易修改,因此提高了软件得可维护性
(4)改进程序文档
程序文档是影响软件可维护性的另一决定因素。
它记载了程序的功能,程序各组成部分之间的关系;程序设计策略和程序实现过程的历史数据的说明和补充。
程序文档具备下列内容。
1)有使用这个系统的描述
2)有安装和管理这个系统的描述。
3)有系统需求和设计描述。
4)有系统的实现和测试描述。
程序文档对提高程序的可理解性有着重要的作用。
即使是一个相对简单的程序,要想有效地,迅速对它进行维护,也需要编制文档对它的目的和任务进行解释。
而对于程序的维护人员来说,要想对程序编制人员的意图进行重新修改,并对今后可能出现地变化估计,缺少文档地帮助是不可能实现地,为了对程序进行维护。
例如,通过了解原设计思想,可以指导维护人员选择适当地方法去修改代码而不影响系统地完整性;了解系统开发人员对系统困难部分地理解,可以帮助维护人员判断系统哪些部分出了问题。
(5)保证软件质量审查方法
保证质量审查对于获得和维护软件质量,是非常有用地方法。
除了保证软件得到适当地质量外,对于在软件开发和维护阶段内所发生地质量变化也可以通过审查来检测。
当审查地结果都有质量保证部门,就可以及时采取措施纠正,以控制不断增加地软件成本。
所有地软件开发组织都有质量保证部门。
对底层来讲,保证质量是个人地职责,开发人员可以在任意级别上进行设计。
评审和测试等工作。
对高层来讲,质量保证部门是职责是,为了达到软件质量的要求,需要建立相应地标准和过程,并保证每一项都得到执行。
5.4软件再工程
再工程(re-engineerring),也叫修理或再生,它不仅能从已存地程序种重新获得设计信息,而且还能使用这些信息改进或重建或重构现有地系统,尽最大努力来提高他们地整体质量。
在大多数情况下,再生工程软件不仅可以再现现有系统的功能,同时,开发人员为了提高软件(系统)的整体性能,还增加了新的功能。
由于每个大的公司和许多小公司都有几百万条代码需要进行反推工程或再生工程,这好象每一个公司都要花大量的工作去再生再它程序库中的每一个程序。
但这是不现实的,原因如下:
1)一些程序很少使用,而且不可能修改。
2)反推工程和再生工程的工具尚处于它的初期。
3)因此,这些工具只能再一些有限的应用类中进行反推工程和再生工程。
4)工作量过大,费用过高。
本章小结
维护是软件生命周期的最后一个阶段,也是持续时间最长,代价最大的一个阶段。
软件维护通常包含四类活动:为了纠正使用过程中暴露出来的错误而进行的改正性维护,为了适应外界环境改变而进行的适应性维护,为了改进原有软件而进行的完善性维护,以及为了改进将来可维护性和可靠性而进行的预防性维护。
软件的可理解性、可测试性和可修改性是决定软件可维护性的基本因素。
软件生命周期每个阶段的工作都和软件可维护性有密切关系。
良好的设计、完善的文档资料、以及一系列
严格的复审和测试使得一旦发现错误是比较容易诊断和纠正。
当用户由新的要求或者外部环境变化时软件能够比较容易适应,并能够减少维护引入的错误。
因此在软件生命周期每个阶段都必须充分考虑软件维护问题,并且为软件维护做准备。
1.什么是软件可维护性?可维护性度量的特性是什么?
2.提高可维护性的方法有哪些?
3.软件维护有哪些内容?
4.软件维护困难的原因是什么?
5.软件维护的流程是什么?
6.提高可维护性的方法有哪些?
9。