第八章软件维护
软件工程课件之第8章维护第6版张海潘编著

用户文档
用户文档至少应该包括下述5方面的内容:
功能描述,说明系统能做什么; 安装文档,说明怎样安装这个系统以及怎样使系统
软件维护过程
维护报告
维护要求表或称软件问题报告表,由申请维 护的用户填写。
软件修改报告,由软件组织内部制定,指明:
满足某个维护要求表中提出的要求所需要的工 作量;
维护要求的性质; 这项要求的优先级; 与修改有关的事后数据;
维护的事件流
维护的事件流
尽管维护申请的类型不同,但都要进行同样 的技术工作:
系统文档
所谓系统文档指从问题定义、需求说明到验收 测试计划这样一系列和系统实现有关的文档。
描述系统设计、实现和测试的文档对于理解程 序和维护程序极端重要
从概貌到每个方面每个特点,从抽象到具体, 有逻辑地介绍系统
可维护性复审
在需求分析阶段的复审过程中,应该对将来要 改进的部分和可能会修改的部分加以注意并指 明;应该讨论软件的可移植性问题,并且考虑 可能影响软件维护的系统界面。
维护的问题
与软件维护有关的绝大多数问题,都可归 因于软件定义和软件开发的方法有缺点:
① 理解别人写的程序通常非常困难,而且困难程 度随着软件配置成分的减少而迅速增加。
② 需要维护的软件往往没有合格的文档,或者文 档资料显著不足。
③ 当要求对软件进行维护时,不能指望由开发人 员给我们仔细说明软件。
的。
软件维护工作量
各类维护工作量 所占比例
维护工作量在软件生 命周期所占比例
第8章 软件维护

系统年龄: – 老系统随着不断的修改,结构越来越乱; – 维护人员经常更换,程序又变得越来越难于理解 – 许多老系统在当初并未按照软件工程的要求进行 开发,因而没有文档,或文档太少。 – 在长期的维护过程中文档在许多地方与程序实现 变得不一致,在维护时就会遇到很大困难。 数据库技术的应用:使用数据库,可以简单而有效 地管理和存储用户程序中的数据,还可以减少生成 用户报表应用软件的维护工作量。
24
8.4
软件的可维护性
许多软件的维护十分困难,原因在于这些软件 的文档不全、质量差、开发过程不注意采用好 的方法,忽视程序设计风格等。 许多维护要求并不是因为程序中出错而提出的, 而是为适应环境变化或需求变化而提出的。 为了使得软件能够易于维护,必须考虑使软件 具有可维护性。 软件可维护性是指纠正软件系统出现的错误和
14
1、维护机构 除了较大的软件开发公司外, 通常在软件维护工作方面,并 不保持一个正式的组织机构。 虽然不要求建立一个正式的维 护机构,但是在开发部门确立 一个非正式的维护机构则是非 常必要的。
15
每个维护要求都通过维护管理员转交给相应的系 统管理员去评价(系统管理员是被指定去熟悉一 小部分产品程序的技术人员)。 系统管理员对维护任务做出评价之后,由变化授 权人决定应该进行的活动。 16
缺陷,以及为满足新的要求进行修改、扩充或 压缩的难易程度。
25
8.4.1 决定软件可维护性的因素
1. 可理解性 2. 可测试性 3. 可修改性 4. 可移植性 5. 可重用性
26
1. 可理解性 软件可理解性表现为外来读者理解软件的结构、 功能、接口和内部处理过程的难易程度。模块化 (模块结构良好,高内聚,松耦合)、详细的设 计文档、结构化设计、程序内部的文档和良好的 高级程序设计语言等等,都对提高软件的可理解 性有重要贡献。 2. 可测试性 诊断和测试的容易程度取决于软件容易理解的程 度。良好的文档对诊断和测试是至关重要的,此 外,软件结构、可用的测试工具和调试工具,以 及以前设计的测试过程也都是非常重要的。维护 人员应该能够得到在开发阶段用过的测试方案, 以便进行回归测试。在设计阶段应该尽力把软件 设计成容易测试和容易诊断的。 对于程序模块来说,可以用程序复杂度来度量它 的可测试性。模块的环形复杂度越大,可执行的 路径就越多,因此,全面测试它的难度就越高。
软件工程实用教程第三版-郭宁主编-课后习题及答案

软件工程实用教程第三版-郭宁主编-课后习题及答案第一章软件工程引论1.在下列选项中,(D)不是软件的特征。
A.系统性与复制性 B. 可靠性与一致性 C.抽象性与智能型 D.有形性与可控性2.软件是一种(B)产品。
A.有形 B. 逻辑 C. 物质 D. 消耗3.软件工程是一种(A)分阶段实现的软件程序开发方法。
A.自顶向下B. 自底向上C. 逐步求精D. 面向数据流4.与计算机科学的理论研究不同,软件工程是一门(B)学科。
A.理论性 B. 工程性 C. 原理性 D. 心理性5.软件工程与计算机科学性质不同,软件工程着重于(C)。
A.原理探讨 B. 理论研究 C. 建造软件系统D. 原理性的理论6.下列说法正确的是(B)A.软件工程的概念于20世纪50年代提出B.软件工程的概念于20世纪60年代提出C.20世纪70年代出现了客户机/服务器技术D.20世纪80年代软件工程学科达到成熟7.软件工程方法学中的软件工程管理是其中的一个重要内容,它包括软件管理学和软件工程经济学,它要达到的目标是(D)A.管理开发人员,以开发良好的软件B.采用先进的软件开发工具,开发优秀的软件C.消除软件危机,达到软件生产的规模效益D.以基本的社会效益为基础,工程化生产软件第二章软件生命周期及开发模型1.软件生命周期包括可行性分析和项目开发计划、需求分析、总体设计、详细分析、编码、(B)、维护等活动。
A.应用 B. 测试 C. 检测 D. 以上答案都不正确2.软件生命周期模型有多中,下列项目中,(C)不是软件生命周期模型。
A.螺旋模型 B. 增量模型 C. 功能模型 D.瀑布模型3.软件生命周期中时间最长的阶段时(D)A.需求分析阶段 B. 总体设计阶段 C. 测试阶段 D. 维护阶段4.瀑布模型是一种(D)A.软件开发方法B. 软件生存周期C. 程序设计方法学 D. 软件生存周期模型5.软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为(A)A.瀑布模型B. 对象模型C. 螺旋模型D. 层次模型6.在结构化的瀑布模型中,(D)阶段定义的标准将成为软件测试中系统测试阶段的目标A.详细设计阶段B. 总体设计阶段C. 可行性研究阶段 D. 需求分析7.增量模型是一种(B)的模型A.整体开发B. 非整体开发C. 灵活性差D.较晚产生工作软件8.(C)是指模拟某种产品的原始模型A.模型B. 最初模型C. 原型D. 进化模型9.建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B)A.用于验证软件需求的原型B. 垂直原型C.用于验证设计方案的原型 D.用于演化出目标系统的原型10.原型化方法是一种(A)型的设计过程。
第8章_软件维护(徐东升)

西安文理学院
软件学院
8.2 软件维护的特点 8.2.1 结构化维护与非结构化维护差别巨大
1. 非结构化维护 如果软件配置的惟一成分是程序代码,那么维护 活动从艰苦地评价程序代码开始,对软件结构、数据 结构、系统接口、设计约束等常产生误解,不能进行 回归测试,维护代价大。 非结构化维护需要付出很大代价,这种维护方式 是没有使用良好定义的方法学开发出来的软件的必然 结果。也就是就说在设计时未采用结构化程序设计方 法。
最后,把修改后的软件再次交付使用。
西安文理学院
软件学院
8.2.2 软件维护的代价
1. 有形代价与无形代价
软件维护的代价表现为有形代价和无形代价。 有形代价指软件维护的费用开支。在过去的几十年中,软
件维护的费用稳步上升。
70年代,用于软件维护的费用只占软件总预算的30%~ 40%,80年代上升到60%左右,90年代许多软件项目的维护 经费预算达到了80%。
西安文理学院
软件学院
该模型描述了影响维护的诸多因素中重要的
关系。如果一个系统开发没有遵循软件工程原 则,软件结构不好,c的值就会很高,再加上 维护人员对软件的不熟悉,原来参加开发的人 员或小组不能参加维护,d的值很低。结果是, 维护的工作量和成本将呈指数级增加。
西安文理学院
软件学院
8.2.3 程序修改的步骤及修改的副作用
西安文理学院
软件学院
实际应用中,常常是混合以上几种方法。对 系统不重要的部分采用直接方式,对系统重要部 分采用并行方式,使系统平稳交付使用。
西安文理学院
软件学院
8.1 软件维护的定义
8.1.1 软件维护的基本内容 所谓软件维护就是在软件已经交付使用 之后,为了改正错误或满足新的需要而修改 软件的过程。
软件工程 张海藩 课后习题答案

《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
第8章 软件维护

第8章例题分析与解答作者:不详来源:2006年9月4日发表评论进入社区一、填空题1.为了识别和纠正运行中产生的错误而进行的维护称为_________维护。
2.采用软件工程方法开发软件,各阶段均有文档,容易维护,这种维护是________。
3.为提高可维护性,要使用的先进的、强有力的、实用的软件开发方法是________。
4.在软件维护中,因修改软件而导致出现的错误或其他情况称为__________。
二、选择题1.为增加软件功能和性能而进行的软件修改维护过程是( )。
A.校正性维护B.适应性维护C.完善性维护D.预防性维护2.维护中用来指出修改的工作量、工作性质、优先权、修改的事后性质的文档是( )。
A.软件需求说明B.软件修改报告C.软件问题报告D.测试分析报告3.维护中,因修改全局或公用数据而引起的错误是( )。
A.文档副作用B.数据副作用C.编码副作用D.设计副作用4.生产性维护活动是( )。
A.修改设计B.理解设计C.解释数据结构D.理解功能答案:一、填空题1.校正性2.结构化维护3.面向对象方法4.维护的副作用二、选择题1.C2.B3.B4.A第8章自测题及参考答案作者:不详来源:2006年9月1日发表评论进入社区一、名词解释1.校正性维护2.适应性维护3.完善性维护4.预防性维护5.软件可维护性 6.软件维护的副作用二、填空题1.维护阶段是软件生存周期中时间最长的阶段,也是花费精力和费用________的阶段。
2.在软件交付使用后,由于在软件开发过程中产生的错误没有完全彻底在开发阶段发现,必然有一部分隐含错误带到_________阶段。
3.采用手工方法开发软件只有程序而无文档,维护困难,这是一种___________维护。
4.软件维护费用增加的主要原因是维护的_________非常低。
5.软件维护工作的活动分为生产性活动和__________活动。
6.所有软件维护申请报告要按规定方式提出,该报告也称_________报告。
软件工程 第8章 软件维护

8.4.2 软件可维护性的度量
3. 可测试性 4. 可修改性 5. 可移植性 6. 效率 7. 可使用性 8. 间接度量可维护性的方法
8.4.2 软件可维护性的度量
8. 间接度量可维护性的方法
(1) 了解问题的时间; (2) 行政管理拖延的时间; (3) 收集维护工具的时间; (4) 分析问题的时间; (5) 改变规格说明的时间; (6) 具体的改错或修改的时间; (7) 局部测试时间; (8) 整体测试时间; (9) 维护重审时间; (10) 总体恢复时间。
8.4 软件的可维护性
8.4.1 影响可维护性的因素 软件的可维护性可以简单定义为:纠正软件系统出现 的错误和缺陷,以满足新的要求, 能够被理解、被校正、 被修改或被改善的难易程度。可维护性不但与采用的 分析设计方法和开发人员的技术熟练程度有关,更重 要的是与软件项目的管理技术关系密切。软件的可维 护性成为软件开发阶段各个时期的关键目标。
8.1 软件维护的种类
完善性维护 50%
预防性维护5%
改正性维护 20%
适应性维护 25%
图11.1 各类维护的比重
8.2 软件维护的特点
8.2.1 软件维护面临的困难 统计资料表明,有代表性的软件开发组织用于校正性 维护、适应性维护、完善性维护及预防性维护的费用 占其开发总金额的70%至80%。 很多软件机构被束缚在维护工作上,这是软件维护所 带来的无形支出。
8.2.3 非结构化维护
无说明或者文档资料太少由于没有采用定义良好的软 件项目管理过程来开发软件,软件项目管理的缺陷导 致的叫“非结构化维护”,这会使软件维护付出较高的 代价.
8.2.4 结构化维护
存在完整的软件系列文档,那么维护任务就从分析设 计文件开始,确定软件的重要结构特性、功能特性和 接口特性,确定所要求的修改或校正可能产生的影响, 并且计划采用何种维护处理方法,修改设计并进行复 审,编制出新的源程序,利用文档中的信息进行回归 测试,然后重新交付软件。这种维护过程就叫做“结 构化维护”
软件工程第八章维护

软件工程第八章维护第一点:软件维护的定义和重要性软件维护是指在软件发布后对其进行的一系列操作和活动,旨在确保软件系统的持续可用性、可靠性和性能。
软件维护是软件开发生命周期中的一个重要环节,它涉及到对软件进行修正、优化和升级。
软件维护的重要性体现在以下几个方面:1.保障软件质量:软件在实际运行过程中可能会出现各种问题,维护可以帮助及时修复这些问题,保证软件的正常运行。
2.提高用户满意度:通过维护,可以对软件进行功能优化和界面调整,使其更加符合用户的需求,提高用户的使用体验。
3.降低风险:软件维护可以帮助提前发现并解决潜在的风险,避免因软件问题导致的损失。
4.延长软件寿命:通过不断的维护和升级,可以使软件适应不断变化的环境和需求,延长其使用寿命。
5.提高开发效率:良好的维护可以避免因软件问题导致的重复开发,提高开发团队的效率。
第二点:软件维护的类型和策略软件维护可以分为以下几种类型:1.改正性维护:这种维护类型主要是针对软件中存在的问题和错误进行修复,保证软件的正常运行。
2.适应性维护:随着环境的变化和用户需求的变化,软件需要进行相应的调整和优化,以适应新的环境和工作需求。
3.完善性维护:这种维护类型主要是针对软件的功能进行增强和扩展,以满足用户的新需求。
4.预防性维护:预防性维护是为了避免软件出现潜在的问题和风险,提前对软件进行调整和优化。
在进行软件维护时,可以采取以下策略:1.计划维护:制定详细的维护计划,包括维护的时间、内容、责任人等,确保维护工作的有序进行。
2.变更管理:对于软件的修改和更新,需要进行严格的变更管理,确保每次变更都是经过审核和评估的。
3.版本控制:通过版本控制工具,对软件的不同版本进行管理,确保软件的每个版本都是可追踪和可恢复的。
4.文档管理:对软件的维护过程和结果进行详细的文档记录,方便对软件进行管理和维护。
5.持续集成:将软件的维护工作与开发工作结合起来,通过持续集成的方式,确保软件的质量和稳定性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
④ 软件维护工作是一项难出成果,大家都不愿意干的工作。
8.1.4 软件维护的代价
1.软件维护的工作量大 软件维护的费用在整个软件开发费用的 55%-70%,并且所占比例在逐年上升。而且维 护中还可能产生新的潜在错误。例如 1970 年维护费用约占软件开发费用的 40%,到 1990 年维护费用所占比例就超过了 70%。另外维护还包含了无形的资源占用,包括大量的使用 很多硬件、软件和软件工程师等资源。 在软件维护时,直接影响维护成本和工作量的因素很多,主要如下: (1)系统规模大小 系统规模大小直接影响维护工作量,系统规模越大,仅仅看懂理解就很困难,维护的 工作量就更多。系统规模主要由源代码行数、程序模块数、数据接口文件数、使用数据库 规模大小等因素衡量。 (2)程序设计语言 参与软件开发的人员都知道,解决相同的问题选择不同的程序设计语言,得到的程序 的规模可能不同,由此应选择功能强且适合解决问题的程序设计语言,这样可以使生成程 序的指令数更小。 (3)系统使用年限 使用年限长的老系统维护比新系统所需要的工作量更多。老系统因已经进行多次维 护,参与维护的人员也不断变化,因此这样的系统结构更乱,如果没有系统说明和设计文 档,维护就更加困难。 (4)软件开发新技术的应用 软件开发过程中,使用先进的分析和设计技术,以及程序设计技术,如:面向对象的技术、 构件技术、可视化程序设计技术等,可以减少维护工作量。 (5)设计过程中的技术 在具体对软件进行维护时,影响维护工作量的其他因素还有很多,例如设计过程中应 用的类型、数学模型、任务的难度、开关与标记、IF 嵌套深度、索引或下标数等。 2.软件维护工作量模型 维护活动分为生产性活动和非生产性活动。生产性活动包括分析评价、修改设计和编 写程序代码等。非生产性活动包括理解程序代码,解释数据结构,接口特点和设计约束等。 Belady 和 Lehman 提出软件维护工作模型:
软件维护的管理流程如图 8.5 所示:
5
用户
维护人员
修改过 的软件
更改要求
纠错性
维护 要求
完 美 性
或
严重
或
不严重
安排改正 性维护
将改正错误列入计划
低
将安排好的工 作量列入计划
评价优 先级 或
高 进行问 题分析
8.4 软件维护的工作流程图
进行问
题分析 人 员 安 排
系统管理员
维护人员
配置管理员
软件系统
图8.3 软件维护组织
维护管理员可以是某个人,也可以是一个包括管理人员、高级技术人员等在内的小组。 维护管理员将提交的维护申请交给系统管理员进行评价,然后由修改批准人员决定如何修 改,交维护人员在系统管理人员的指导下对软件进行修改。在修改过程中,配置管理员对 软件配置进行审查。
8.1.2 软件维护的类型
根据以上目的可以把维护活动可以归纳为完善性维护、适应性维护、纠错性维护和预 防性维护四类。
1.完善性维护(Perfective Maintenance)在软件漫长的使用过程中,为了满足用户使 用过程中对软件提出的新的功能与性能要求,需要对原来的软件的功能进行修改或扩充, 这种扩充软件功能、增强软件性能、提高软件运行效率和可维护性而进行的维护活动称为 完善性维护。此维护活动工作量较大占整个维护工作的 50%。例如:对人事管理程序,在 使用中要不断修改人事管理程序,使其增加或删除新的项目,满足新需求;原来软件的查 询响应速度较慢,要提高软件的响应速度;改变原来软件的用户界面或增加联机帮助信息; 为软件的运行增加监控设施等。
8.2.1 维护组织一般维护需要保持一个正式的组织机构,但委派一个
除了较大的软件公司外,通常的在软件维护工作方面,并不保持一个正式的组织。在 软件开发部门,确立一个非正式的维护组织即非正式的维护管理员来负责维护工作却是绝 对必要的。图 8.3 给出了一种典型的维护组织方式。
维护申请
维护管理员
修改批准人员
理解分析程序
安排计划 修改程序
维护实施
测试程序
复审
交付使用 的软件
维护修改建议
进行测试
分析修改建议
提交管理部门审批
N 是否合理
Y
提交管理部门审查
N 是否批准
Y
更新主文档
M=P+K*EXP(C-D) 其中:M 表示维护总工作量,P 表示生产性活动工作量,K 表示经验常数,C 表示由非结 构化维护引起的程序复杂度,D 表示对维护软件熟悉程度的度量。上式可以发现,C 越大, D 越小,那么维护工作量就成指数的增加。C 增加主要因为软件采用非结构化设计,程序 复杂性高;D 减小表示维护人员不是原来的开发人员,不熟悉程序,理解程序花费太多时 间。
预防性维护4%
完善性 维护 50%
纠错性维 护25%
适应性 维护21%
图8.1 各类维护所占的比例
其余 29%
维护 71%
图8.2 维护工作比例
2
8.1.3 软件维护的特性
1.时间长、工作量大、成本高 软件的维护过程是软件生存期中最长,并且相当困难的阶段,软件维护的工作量占整 个软件生存期的70%(如图 8.2 所示)以上,而且还在逐年增加。因此,如何减少软件 维护的工作量,降低软件维护的成本,就成为提高软件维护效率和质量的关键。 2.维护的副作用 通过维护可以延长软件的寿命使其创造更多的价值,但是,修改软件是危险的,每修 改一次,可能会产生新的潜在错误。因此,维护的副作用是指由于修改程序而导致新的错 误或者新增加一些不必要的活动。一般维护产生的副作用有如下三种。 (1)修改代码的副作用在修改源代码时,由于软件的内在结构等原因,任何一个小 的修改都可能引起的错误。因此在修改时必须特别小心。 (2)修改数据的副作用在修改数据结构时,有可能造成软件设计与数据结构不匹配, 因而导致软件出错。数据副作用就是修改软件信息结构导致的结果。修改数据副作用可以 通过详细的设计文档加以控制,此文档中描述了一种交叉作用,把数据元素、记录、文件 和其他结构联系起来。 (3)修改文档的副作用 对软件的数据流、软件结构、模块逻辑等进行修改时,必须对相关技术文档进行相应 修改。但修改文档过程会产生新的错误,导致文档与程序功能不匹配,缺省条件改变等错 误,产生文档的副作用。 为了控制因修改而引起的副作用,应该:按模块把修改分组;自顶向下的安排被修改 模块的顺序;每次修改一个模块。 3.软件维护的困难 由于软件维护工作通常并不由软件的设计和开发人员来完成,维护人员首先要对软件 各阶段的文档和代码进行分析、理解。因而出现了理解别人的程序困难、文档不齐等问题, 尤其是对大型、复杂系统的维护,更加困难和复杂,甚至是不可能的! (1)结构化维护和非结构化维护 ①非结构化维护是只有源程序,缺乏必要的文档说明,难于确定数据结构、系统接口 等特性。维护工作令人生畏,事倍功半。 ②结构化维护是指软件开发过程是按照软件工程方法进行,开发各阶段文档齐全,软 件的维护过程,有一整套完整的方案、技术、审定过程。 可以看到,维护工作的难度及工作量的大小,明显的与前期的开发工作密切相关。 (2)维护的困难 软件维护的困难主要是由于软件需求分析和开发方法的缺陷造成的。这种困难主要有 如下几个方面: ① 读懂别人编的程序困难。 ② 文档的不一致性。 ③ 软件开发人员和软件维护人员在时间上的差异。
1
此项维护主要采用的策略可以使用功能强、使用方便的工具,采用原型化方法开发等。 2.适应性维护(Adaptive Maintenance)适应性维护是为了适应计算机的飞速发展, 使软件适应外部新的硬件和软件环境或者数据环境(数据库、数据格式、数据输入/输出 方式、数据存储介质)发生的变化,而进行修改软件的过程。适应性维护占整个维护工作 的 25%。例如:为现有的某个应用问题实现一个数据库管理系统;对某个指定代码进行修 改,如:从 3 个字符改为 4 个字符;缩短系统的应答时间,使其达到特定的要求;修改两 个程序,使它们可以使用相同的记录结构;修改程序,使其适用于另外的终端。 它主要的维护策略是对可能变化的因素进行配置管理,将因环境变化而必须修改的部 分局部化,即局限于某些程序模块等。 3.纠错性维护(Corrective Maintenance)软件测试不可能找出一个软件系统中所有 潜伏的错误,所以当软件在特定情况下运行时,这些潜伏的错误可能会暴露出来。对在测 试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错 以及验证、修改的回归测试过程,称为纠错性维护。纠错性维护占整个维护工作的 21%, 例如:修正原来程序中并未使开关复原的错误;解决开发时未能测试各种可能条件带来的 问题;解决原来程序中遗漏处理文件中最后一个记录的问题。 它的主要维护策略是开发过程中采用新技术,利用应用软件包,提高系统结构化程度, 进行周期性维护审查等。 4.预防性维护(Preventive Maintenance) 预防性维护是为了提高软件的可维护性和可靠性,采用先进的软件工程方法对需要维 护的软件或软件中的某一部分重新进行设计、编制和测试,为以后进一步维护和运行打好 基础。也就是软件开发组织选择在最近的将来可能变更的程序,做好变更它们的准备。由 于对于该类维护工作必须采用先进的软件工程方法,对需要修改的软件或部分进行设计、 编码和测试。对该类维护工作的必要性有争议,所以它在整个维护活动中占较小的比例约 占 4%。例如:预先选定多年留待使用的程序;当前正在成功地使用着的程序;可能在最 近的将来要做重大修改或增强的程序。 它的维护策略主要是常采用提前实现、软件重用等技术
8.2.2 维护工作的流程
图 8.4 描述了实施软件维护的工作流程,根据用户或维护人员的更改要求,进行维护 申请经过评审后,首先要确定维护的类型,还要分辨错误的严重程度或修改优先级的高低, 分别处理。
8.2.3 维护工作的组织管理
软件维护工作不仅是技术性的,它还需要大量的管理工作与之相配合,才能保证维护 工作的质量。管理部门应对提交的修改方案进行分析和审查,并对修改带来的影响作充分 的估计,对于不妥的修改予以撤销。需修改主文档时,管理部门更应仔细审查。