软件工程7软件维护.ppt_第1页
软件工程7软件维护.ppt_第2页
软件工程7软件维护.ppt_第3页
软件工程7软件维护.ppt_第4页
软件工程7软件维护.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

第7章 软件维护,掌握:软件维护的定义、软件维护的种类、软件维护的策略、软件维护的实施、软件可维护的定义、软件可维护性度量、提高软件可维护性的方法。,7.1 软件维护的概念,7.1.1 软件维护的定义,第一,它是在软件交付之后进行的,此时绝大部分的软件已开发完成; 第二,它是基于某种目的(如订正错误、改善性能或其他属性,或者适应变化的环境等)而对原有系统的一种修改。,7.1.2 软件维护的种类,要求进行维护的原因多种多样,归结起来主要有3种类型: (1)改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷。 (2)因在软件使用过程中数据环境发生变化(如一个事务处理代码发生改变)或处理环境发生变化(如安装了新的硬件或操作系统),需要修改软件以适应这种变化。 (3)用户和数据处理人员在使用时常提出改进现有功能,增加新的功能,以及改善总体性能的要求,为满足这些要求,就需要修改软件,把这些要求纳入到软件之中。,1改正性维护 在软件交付使用后,由于开发时测试的不彻底、不完全,必然会有一部分隐藏的错误被带到运行阶段来。这些隐藏的错误在某些特定的使用环境中就会暴露。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用而进行的诊断和改正错误的过程,就叫做改正性维护。 2适应性维护 随着计算机技术的飞速发展,外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而修改软件的过程就叫做适应性维护。,3完善性维护 在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。 4预防性维护 除了以上3类维护之外,还有一类维护活动,叫做预防性维护,这种维护活动为了提高软件的可维护性、可靠性,为以后进一步改进软件打下良好基础。,7.1.3 软件维护的策略,1改正性维护策略 在软件开发过程中,可以通过使用新技术大大提高软件的可靠性,并减少改正性维护。这些技术包括数据库管理系统、软件开发环境、程序自动生成系统、较高级(第四代)语言,应用这些技术可产生更加可靠的代码。此外,还可利用以下方法提高软件的可靠性: (1)利用应用软件包。利用应用软件包可开发出比完全由用户自己开发的系统可靠性更高的软件。 (2)结构化技术。用结构化技术开发的软件易于理解和测试。 (3)防错性程序设计。把自检能力引入程序,通过非正常状态的检查提供审查跟踪。 (4)周期性维护审查。通过周期性维护审查,在形成维护问题之前就可确定质量缺陷。,2适应性维护策略 适应性维护不可避免,但可以控制。 (1)配置管理适应性维护时就考虑到硬件变化,以及操作系统和其他相关环境因素的可能变化,可以减少某些适应性维护的工作量。 (2)将与硬件、操作系统,以及其他外围设备有关的程序归到特定的程序模块中,也可以减少某些适应性维护的工作量。 (3)使用内部程序列表、外部文件以及处理的例行程序包,可为维护时修改程序提供参考。 3完善性维护策略 用前两类维护中列举的方法,也可以减少完善性维护的工作量。此外,通过为用户提供软件系统的原型,使用户通过研究原型进一步完善他们的功能要求,同样可以减少完善性维护。,7.1.4 软件维护的代价,软件维护的代价与软件的复杂性有关。近些年来,随着软件复杂性的不断提高,软件维护的代价也在逐步上升。根据有关资料表明,70年代用于维护软件的费用只占软件总预算的35%40%,80年代上升为40%60%,到了90年代则上升为70%80%。 除此之外,软件维护还有一些额外的代价。例如,当看起来合理的变更要求不能及时满足时,可能会引起用户的不满;由于维护时的改动,在软件中引入新的错误,从而降低了软件的质量;当必须把软件开发工程师调去从事维护工作时,对开发工作会造成影响等。,7.2 软件维护的实施,7.2.1 维护组织,图7-1 软件维护控制流程,7.2.2 维护申请报告,维护申请报告是由软件组织外部提交的文档,它是计划维护工作的基础。软件组织内部应相应地做出软件修改报告,指明: (1)修改变动的性质。 (2)申请修改的优先级。 (3)为满足某个维护申请报告,所需的工作量。,7.2.3 软件维护工作流程,7.2.4 维护评价,维护评价是指对软件维护的过程进行评价。可参考的度量值如下: (1)每次程序运行时的平均出错次数。 (2)花费在每类维护上的总“人时”数。 (3)每个程序、每种语言、每种维护类型的程序平均修改次数。 (4)因为维护、增加或删除每个源程序语句所花费的平均“人时”。 (5)用于每种语言的平均“人时”数。 (6)维护申请报告的平均处理时间。 (7)各类维护申请的百分比。,7.3 软件可维护性,7.3.1 软件可维护性的定义,软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求而进行修改、扩充或压缩的难易程度。,7.3.2 软件可维护性度量,1可理解性 可理解性表明人们通过阅读源代码和相关文档,了解程序功能及其如何运行的难易程度。一个可理解的程序主要应具备以下特性: (1)模块化。模块结构良好、功能完整、简明。 (2)风格一致性。代码风格及设计风格的一致性。 (3)不使用令人琢磨不定或含糊不清的代码。 (4)使用有意义的数据名和过程名。 (5)结构化。 (6)完整性。对输入数据进行完整性检查。,2可靠性 可靠性表明一个程序按照用户的要求和设计目标,在给定的一段时间内正确执行的概率。关于可靠性,度量的标准主要有: (1)平均失效间隔时间MTTF,即两次失效之间的平均操作时间。 (2)平均修复时间MTTR,即修复一个故障平均需用的时间。 (3)有效性A=(MTTF/(MTTF+MTTR)。 度量可靠性的方法,主要有两种: (1)根据程序错误统计数字进行可靠性预测。 (2)根据程序复杂性预测软件可靠性。,3可测试性 可测试性表明论证程序正确性的容易程度。程序越简单,证明其正确性就越容易。设计合适的测试用例,取决于对程序的全面理解。因此,一个可测试的程序应当是可理解的、可靠的。 对于程序模块,可用程序复杂性来度量可测试性。程序的环路复杂性越大,程序的路径就越多,全面测试程序的难度也就越大。,4可修改性 可修改性表明程序容易修改的程度。一个可修改的程序应当是可理解的、通用的、灵活的。其中,通用性是指程序适用于各种功能变化而无需修改,灵活性是指能够容易地对程序进行修改。 5可移植性 可移植性表明程序转移到一个新的计算环境的可能性的大小,或者表明程序可以有效地在各种环境中运行的容易程度。一个可移植的程序应具有结构良好、灵活,不依赖于某一具体计算机或操作系统的性能。,6效率 效率表明一个程序能执行预定功能而又不浪费机器资源的程度。这些机器资源包括内存容量、外存容量、通道容量和执行时间。 7可使用性 从用户观点出发,把可使用性定义为程序方便、实用、易于使用的程度。一个可用程序应当是易于使用的,能允许用户出错,并尽可能不使用户陷入混乱状态的程序。,表7-1 可维护性七个特性在各个维护活动中的侧重,7.3.3 提高软件可维护性的方法,1建立明确的软件质量目标和优先级 2使用提高软件质量的技术和工具 3进行明确的质量保证审查 4选择可维护的程序设计语言 5改进程序的文档,7.3.4 软件维护的副作用,所谓副作用是指因修改软件而造成的错误或其他不希望发

温馨提示

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

评论

0/150

提交评论