软件工程 第8章:维护
软件工程导论PPT课件-第8章-维护
![软件工程导论PPT课件-第8章-维护](https://img.taocdn.com/s3/m/3bce6f9a0d22590102020740be1e650e53eacf79.png)
分析评价,修改设计,编写代码等
理解代码功能、解释数据结构、接口特点和性能限度等
8.3 软件维护的特性
8.3.3 软件维护的副作用
-结构化维护
结构化维护是指软件开发过程是按照软件工程方法进 行的、各开发阶段文档齐全的软件的维护过程。
-非结构化维护
非结构化维护是指在只有源程序,缺乏必要的文档说 明,难于确定数据结构、系统接口等特性的情况下,进行 的软件维高昂
明显代价:高昂的维护费用,已上升达80%左右; 无形代价:
的工作环境,或适应已变动的数据或文件; (4)为预防软件系统的失效而对软件系统实施修改。
8.2 软件维护的分类
- 改正性维护
对在测试阶段未能发现的、在软件投入使用后才逐渐暴露出来的 错误的测试、诊断、定位、纠错,以及验证、修改的回归测试过程, 称为改正性维护。
- 完善性维护
为了满足用户在使用过程中对软件提出的新的功能与性能要求, 需要对原来的软件的功能进行修改或扩充。
- 适应性维护
使软件适应外部新的软硬件环境或者数据环境发生的变化, 而进行修改软件的过程。
- 预防性维护
为了提高软件未来的可维护性、可靠性等,或为了给未来 的改进奠定更好的基础而修改软件的过程。
8.2 软件维护的分类 预防性维护 4% 适应性维护 21% 完善性维护 50%
改正性维护 25%
四类维护占总维护的比例
修改软件设计、 复查、必要的代 码修改、单元测 试和集成测试、 验收测试和复审
软件工程课件之第8章维护第6版张海潘编著
![软件工程课件之第8章维护第6版张海潘编著](https://img.taocdn.com/s3/m/ffa645f79f3143323968011ca300a6c30c22f189.png)
用户文档
用户文档至少应该包括下述5方面的内容:
功能描述,说明系统能做什么; 安装文档,说明怎样安装这个系统以及怎样使系统
软件维护过程
维护报告
维护要求表或称软件问题报告表,由申请维 护的用户填写。
软件修改报告,由软件组织内部制定,指明:
满足某个维护要求表中提出的要求所需要的工 作量;
维护要求的性质; 这项要求的优先级; 与修改有关的事后数据;
维护的事件流
维护的事件流
尽管维护申请的类型不同,但都要进行同样 的技术工作:
系统文档
所谓系统文档指从问题定义、需求说明到验收 测试计划这样一系列和系统实现有关的文档。
描述系统设计、实现和测试的文档对于理解程 序和维护程序极端重要
从概貌到每个方面每个特点,从抽象到具体, 有逻辑地介绍系统
可维护性复审
在需求分析阶段的复审过程中,应该对将来要 改进的部分和可能会修改的部分加以注意并指 明;应该讨论软件的可移植性问题,并且考虑 可能影响软件维护的系统界面。
维护的问题
与软件维护有关的绝大多数问题,都可归 因于软件定义和软件开发的方法有缺点:
① 理解别人写的程序通常非常困难,而且困难程 度随着软件配置成分的减少而迅速增加。
② 需要维护的软件往往没有合格的文档,或者文 档资料显著不足。
③ 当要求对软件进行维护时,不能指望由开发人 员给我们仔细说明软件。
的。
软件维护工作量
各类维护工作量 所占比例
维护工作量在软件生 命周期所占比例
第8章 软件维护
![第8章 软件维护](https://img.taocdn.com/s3/m/22cd4006eff9aef8941e06ff.png)
系统年龄: – 老系统随着不断的修改,结构越来越乱; – 维护人员经常更换,程序又变得越来越难于理解 – 许多老系统在当初并未按照软件工程的要求进行 开发,因而没有文档,或文档太少。 – 在长期的维护过程中文档在许多地方与程序实现 变得不一致,在维护时就会遇到很大困难。 数据库技术的应用:使用数据库,可以简单而有效 地管理和存储用户程序中的数据,还可以减少生成 用户报表应用软件的维护工作量。
24
8.4
软件的可维护性
许多软件的维护十分困难,原因在于这些软件 的文档不全、质量差、开发过程不注意采用好 的方法,忽视程序设计风格等。 许多维护要求并不是因为程序中出错而提出的, 而是为适应环境变化或需求变化而提出的。 为了使得软件能够易于维护,必须考虑使软件 具有可维护性。 软件可维护性是指纠正软件系统出现的错误和
14
1、维护机构 除了较大的软件开发公司外, 通常在软件维护工作方面,并 不保持一个正式的组织机构。 虽然不要求建立一个正式的维 护机构,但是在开发部门确立 一个非正式的维护机构则是非 常必要的。
15
每个维护要求都通过维护管理员转交给相应的系 统管理员去评价(系统管理员是被指定去熟悉一 小部分产品程序的技术人员)。 系统管理员对维护任务做出评价之后,由变化授 权人决定应该进行的活动。 16
缺陷,以及为满足新的要求进行修改、扩充或 压缩的难易程度。
25
8.4.1 决定软件可维护性的因素
1. 可理解性 2. 可测试性 3. 可修改性 4. 可移植性 5. 可重用性
26
1. 可理解性 软件可理解性表现为外来读者理解软件的结构、 功能、接口和内部处理过程的难易程度。模块化 (模块结构良好,高内聚,松耦合)、详细的设 计文档、结构化设计、程序内部的文档和良好的 高级程序设计语言等等,都对提高软件的可理解 性有重要贡献。 2. 可测试性 诊断和测试的容易程度取决于软件容易理解的程 度。良好的文档对诊断和测试是至关重要的,此 外,软件结构、可用的测试工具和调试工具,以 及以前设计的测试过程也都是非常重要的。维护 人员应该能够得到在开发阶段用过的测试方案, 以便进行回归测试。在设计阶段应该尽力把软件 设计成容易测试和容易诊断的。 对于程序模块来说,可以用程序复杂度来度量它 的可测试性。模块的环形复杂度越大,可执行的 路径就越多,因此,全面测试它的难度就越高。
软件工程导论课件第8章
![软件工程导论课件第8章](https://img.taocdn.com/s3/m/295c911efc4ffe473368ab3d.png)
5. 数据重构 对数据体系结构差的程序很难进行适应性和 完善性维护,因此,数据体系结构比源代码对程序 的长期生存力有更大影响。 数据重构是一种全范围的再工程活动。由于 数据重构对程序体系结构及程序中的算法有很大影 响,对数据的修改必然会导致程序体系结构或代码 层的改变。
3
2.适应性维护 为适应变化了的环境界面而修改软件的活动, 称为适应性维护。包括: (1)因硬件或支撑软件改变引起的变化; (2)将软件移植到新的机种上运行; (3)因数据环境的变化而做的变更。 这类维护大约占软件维护总工作量的25%。
4
3.完善性维护 为了满足用户要求,就得对软件进行修改和 扩充,我们称这种维护为完善性维护。完善性维护 主要包括: (1)提高处理效率; (2)提高性能。 在整个维护工作中, 完善性维护大约占50% 左右,区居第一位。
3. 逆向工程 软件的逆向工程是,分析程序以便在比源代码 更高的抽象层次上创建出程序的某种描述的过程, 也就是说,逆向工程是一个恢复设计结果的过程。 4. 代码重构 某些老程序的体系结构比较合理,但是,一些 模块的编码方式却是难于理解、测试和维护的。在 这种情况下,可以重构这些模块的代码。 通常,代码重构并不修改程序的体系结构,它 只关注个体模块的设计细节以及在模块中定义的局 部数据结构。如果重构扩展到模块边界以外并涉及 软件体系结构,则重构变成了正向工程。
13
(四)软件维护过程 维护过程的实质是对软件定义和开发过程的修 改和压缩。维护过程的主要任务是:建立维护机构, 填写维护报告和评价,为每个维护要求规定一种规 范化的处理序列,建立对维护活动的登记制度及规 定评价复审的标准。 1.维护组织 机构中有一名维护管理员总负责,每项维护要 求都通过维护管理员转交给相应的系统管理员去评 价。系统管理员对维护任务做出评价之后,由变化 授权人决定应该进行的活动,最后由系统管理员去 执行维护任务。
第8章 软件维护
![第8章 软件维护](https://img.taocdn.com/s3/m/3a618aed5ef7ba0d4a733bf1.png)
第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章 软件维护](https://img.taocdn.com/s3/m/0b85984a336c1eb91a375dfb.png)
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 结构化维护
存在完整的软件系列文档,那么维护任务就从分析设 计文件开始,确定软件的重要结构特性、功能特性和 接口特性,确定所要求的修改或校正可能产生的影响, 并且计划采用何种维护处理方法,修改设计并进行复 审,编制出新的源程序,利用文档中的信息进行回归 测试,然后重新交付软件。这种维护过程就叫做“结 构化维护”
软件工程第八章维护
![软件工程第八章维护](https://img.taocdn.com/s3/m/0de7e296a0c7aa00b52acfc789eb172ded6399a3.png)
软件工程第八章维护第一点:软件维护的定义和重要性软件维护是指在软件发布后对其进行的一系列操作和活动,旨在确保软件系统的持续可用性、可靠性和性能。
软件维护是软件开发生命周期中的一个重要环节,它涉及到对软件进行修正、优化和升级。
软件维护的重要性体现在以下几个方面:1.保障软件质量:软件在实际运行过程中可能会出现各种问题,维护可以帮助及时修复这些问题,保证软件的正常运行。
2.提高用户满意度:通过维护,可以对软件进行功能优化和界面调整,使其更加符合用户的需求,提高用户的使用体验。
3.降低风险:软件维护可以帮助提前发现并解决潜在的风险,避免因软件问题导致的损失。
4.延长软件寿命:通过不断的维护和升级,可以使软件适应不断变化的环境和需求,延长其使用寿命。
5.提高开发效率:良好的维护可以避免因软件问题导致的重复开发,提高开发团队的效率。
第二点:软件维护的类型和策略软件维护可以分为以下几种类型:1.改正性维护:这种维护类型主要是针对软件中存在的问题和错误进行修复,保证软件的正常运行。
2.适应性维护:随着环境的变化和用户需求的变化,软件需要进行相应的调整和优化,以适应新的环境和工作需求。
3.完善性维护:这种维护类型主要是针对软件的功能进行增强和扩展,以满足用户的新需求。
4.预防性维护:预防性维护是为了避免软件出现潜在的问题和风险,提前对软件进行调整和优化。
在进行软件维护时,可以采取以下策略:1.计划维护:制定详细的维护计划,包括维护的时间、内容、责任人等,确保维护工作的有序进行。
2.变更管理:对于软件的修改和更新,需要进行严格的变更管理,确保每次变更都是经过审核和评估的。
3.版本控制:通过版本控制工具,对软件的不同版本进行管理,确保软件的每个版本都是可追踪和可恢复的。
4.文档管理:对软件的维护过程和结果进行详细的文档记录,方便对软件进行管理和维护。
5.持续集成:将软件的维护工作与开发工作结合起来,通过持续集成的方式,确保软件的质量和稳定性。
第8章软件维护
![第8章软件维护](https://img.taocdn.com/s3/m/4a17e0fd941ea76e58fa04f6.png)
软件维护步骤
4、修改程序的副作用
副作用是指因修改软件而造成的错误或其它不希望发生的情况。 1)编码副作用:在使用程序设计语言修改源代码时可能引起的错误, 如删除或修改一个标号、标识符、一个子程序,改变程序代码的时序关系, 改变逻辑运算符,改进程序的执行效率,改变程序占用存储的大小等,都 很容易引入错误,应特别小心。 2)数据副作用:在修改数据结构时,有可能造成软件设计和数据结构 的不一致,而导致软件错误。数据副作用是修改软件信息结构引起的,如 重新定义全局或局部常量,重新初始化控制标志或指针等,都容易产生设 计与数据不相容的错误,可通过详细设计文档对数据副作用加以控制。 3)文档副作用:对数据流、软件结构、逻辑模块等进行修改时,必须 对相关技术文档进行修改,否则会导致 文档与程序功能不匹配,使文档不 能反映软件当前的状态。
软件维护步骤
5、重新验证程序:
1)静态确认; 2)计算机确认; 3)维护后的验收。
软件维护步骤
第三步:维护文档整理
记录一些与维护工作有关的数据信息,这些信息 可作为估计软件维护的有效程度,确定软件产品的 质量,确定维护的实际开销等工作的原始数据。
软件维护步骤
第四步:维护活动评价
具体的评价工作可从以下几个方面考虑: (1)每次程序运行时的平均出错次数; (2)花费在每类维护活动上的总的“人时”数; (3)每个程序、每种语言、每种维护类型程序的平均修改次数; (4)维护工作中增加或删除每个源程序语句所花费的平均“人 时”数; (5)用于每种语言的平均“人时”数; (6)维护申请报告的平均处理时间; (7)各类维护申请的百分比。 一方面,可判定此次维护活动开展是否顺利、成功;另一方面, 为今面的维护工作积累经验。
2、结构化维护:进行维护 活动时,首先从评价需求开始,搞清楚 功能、性能上的改变,然后对设计说明文档进行评价、修改和复查; 根据设计的修改,再进行程序的变动;然后根据测试文档中的测试 用例进行回归测试;最后将修改后的软件再次交付使用。
软件工程考核知识点-第8章-软件维护
![软件工程考核知识点-第8章-软件维护](https://img.taocdn.com/s3/m/4b0521fef705cc17552709d0.png)
软件工程考核知识点-第8章-软件维护第8章软件维护软件投入使用后就进入软件维护阶段。
维护阶段是软件生存周期中时间最长的一个阶段,所花费的精力和费用也是最多的一个阶段。
8.1软件维护的内容软件维护内容有四种:校正性维护,适应性维护,完善性维护和预防性维护。
1.校正性维护在软件交付使用后,由于在软件开发过程中产生的错误并没有完全彻底的在测试中发现,因此必然有一部分隐含的错误被带到维护阶段来。
这些隐含的错误在某些特定的使用环境下会暴露出来。
为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。
校正性维护占整个维护工作的20%左右。
2.适应性维护随着计算机的飞速发展,计算机硬件和软件环境也在不断发生变化,数据环境也在不断发生变化。
为了使应用软件适应这种而修改软件的过程称为适应性维护。
这种维护活动占整个维护活动的25%。
3.完善性维护在软件漫长的运行时期中,用户往往会对软件提出新的功能要求与性能要求。
这是因为用户的业务会发生变化,组织机构也会发生变化。
为了适应这些变化,应用软件原来的功能和性能需要扩充和增强,为达到这个目的而进行的维护活动称为完善性维护,占整个维护活动的50%。
4.预防性维护为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。
这是为以后进一步的运行和维护打好基础,占整个维护工作的4%。
8.2 维护的特点8.2.1非结构化维护和结构化维护软件的开发过程对软件的维护过程有较大的影响。
若不采用软件过程的方法开发软件,则软件只有程序而无文档,维护工作非常难,这就是一种非结构化的维护。
若采用软件工程的方法开发软件,则各阶段都有相应的文档,这容易进行维护工作,这是一种结构化的维护。
1.非结构化维护因为只有源程序,而文档很少或没有文档,维护活动只能从阅读、理解、分析源程序开始。
这是软件工程时代以前进行维护的情况。
2.结构化维护用软件工程思想开发的软件具有各阶段的文档,这对于理解和掌握软件功能、性能、系统结构、数据结构、系统接口和设计约束有很大作用。
软件工程导论 第8章 维护
![软件工程导论 第8章 维护](https://img.taocdn.com/s3/m/ee94f3ae0912a21615792985.png)
应该注意,上述4类维护活动都必须应用于整个软件配置,维护软件文档和维护软件的可执行代码是同样重要的。
软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。
8.1 软件维护的定义
所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。可以通过描述软件交付使用后可能进行的4项活动,具体地定义软件维护。 因为软件测试不可能暴露出一个大型软件系统中所有潜藏的错误,所以必然会有第一项维护活动:在任何大型程序的使用期间,用户必然会发现程序错误,并且把他们遇到的问题报告给维护人员。把诊断和改正错误的过程称为改正性维护。
8.2 软件维护的特点
8.2.1 结构化维护与非结构化维护差别巨大
1.非结构化维护
如果软件配置的惟一成分是程序代码,那么维护活动从艰苦地评价程序代码开始,而且常常由于程序内部文档不足而使评价更困难,对于软件结构、全程数据结构、系统接口、性能和(或)设计约束等经常会产生误解,而且对程序代码所做的改动的后果也是难于估量的:因为没有测试方面的文档,所以不可能进行回归测试(即指为了保证所做的修改没有在以前可以正常使用的软件功能中引入错误而重复过去做过的测试)。非结构化维护需要付出很大代价(浪费精力并且遭受挫折的打击),这种维护方式是没有使用良好定义的方法学开发出来的软件的必然结果。
上面的模型表明,如果软件的开发途径不好(即,没有使用软件工程方法学),而且原来的开发人员不能参加维护工作,那么维护工作量和费用将指数地增加。
《软件工程学》第8章 维护-习题
![《软件工程学》第8章 维护-习题](https://img.taocdn.com/s3/m/2e8b35f6852458fb760b5612.png)
1.软件生命周期的()工作与软件可维护性有着密切的关系。
A.编码阶段B.设计阶段C.测试阶段D.每个阶段
2.软件维护的四类维护活动是:()
A.改正性维护,适应性维护,完善性维护和预防性维护。
B.适应性维护,完善性维护,抢救性维护和辅助性维护。
C.改正性维护,适应性维护,完善性维护和辅助性维护。
D.适应性维护,完善性维护,抢救性维护和预防性维护。
3.一个软件产品开发完成投入使用后,常常由于各种原因需要对它做适当的变更,通常把软件交付使用后所做的变更称为()
A.维护B.设计C.软件再工程D.逆向工程
4.维护的副作用可分三类,不包括()。
A.代码副作用B.数据副作用C.文档副作用D.人员副作用5.在整个软件维护阶段所花费的全部工作中,()所占的比例最大。
A.改正性维护B.适应性维护C.完善性维护D.预防性维护6.在软件维护的实施过程中,为了正确、有效地修改,需要经历以下三个步骤:分析和理解程序、修改程序和重新验证程序。
()是决定维护成败和质量好坏的关键。
A.分析和理解程序B.重新验证程序C.修改程序D.验收程序
7.人们称在软件运行/维护阶段对软件产品所进行的修改就是维护。
()是由于开发时测试的不彻底、不完全造成的。
A.改正性维护B.适应性维护C.完善性维护D.预防性维护8.黑盒测试法可有效的检查模块的内部逻辑结构的正确性。
……………………()9.在进行需求分析时同时考虑维护问题。
……………………()
10.尽可能在软件开发过程中保证各阶段文档的正确性。
……………………()。
《软件工程》第八章 软件维护与再工程
![《软件工程》第八章 软件维护与再工程](https://img.taocdn.com/s3/m/87378efffab069dc5022015b.png)
软件可维护性-主要影响因素
可移植性:指程序转移到一个新的计算环境的难易 程度。
影响软件可移植性的因素有:信息隐蔽原则;模块 独立;模块化;高内聚低耦合;良好的程序结构; 不用标准文本以外的语句等
一个可移植的程序应具有结构良好、灵活、不依赖 于某பைடு நூலகம்具体计算机或操作系统的性能
软件可维护性-主要影响因素
软件维护的概念-维护成本
其它一些因素:如应用的类型、数学模型、 任务的难度、IF嵌套深度、索引或下标数等, 对维护工作量也有影响
软件维护的过程-维护组织
维护组织结构图
软件维护的过程-维护组织
系统监督员一般都是对程序(某一部分)特别熟 悉的技术人员。 在维护人员对程序进行修改的过程中,由配 置管理员严格把关,控制修改的范围,对软 件配置进行审计 。 维护管理员、系统监督员、修改控制决策机 构等,均代表维护工作的某个职责范围 。
如果已经开始保存维护记录,可以对维护工作做 一些定量度量,至少可以从如下7方面进行评价:
每次程序运行平均失败的次数; 用于每一类维护活动的总人时数; 平均每个程序、每种语言、每种维护类型所必需的程序 变动数; 维护过程中增加或删除源语句平均花费的人时数; 维护每种语言平均花费的人时数; 一张维护请求表的平均周转时间; 不同维护类型所占的比例;
软件维护的过程-维护记录
软件修改报告指明:为满足维护申请报告提 出的需求所需的工作量、本次维护活动的类 别、本次维护请求的优先级、本次修改的背 景数据。在拟定进一步维护计划前,软件修 改报告要提交给修改决策机构,供进一步规 划维护活动使用 保存维护记录的第一个问题就是哪些数据值 得保存?
软件维护的过程-维护评价
软件维护的概念-维护问题
i第8章 软件维护
![i第8章 软件维护](https://img.taocdn.com/s3/m/f89b9603a5e9856a561260cc.png)
得客户不满意; 变更的结果引入新的故障,使得软件整体质量 下降; 把软件人员抽调到维护工作中,干扰了软件开 发工作。
8.3 软件维护任务的实施
为了有效地进行软件维护,应事先就开始做组织 工作。
首先建立维护的组织 申明提出维护申请报告的过程及评价的过程 为每一个维护申请规定标准的处理步骤 建立维护活动的登记制度以及规定评价和评审
3.完善性维护
ቤተ መጻሕፍቲ ባይዱ
在软件的使用过程中,用户往往会对软件提出 新的功能与性能要求。 为了满足这些要求,需要修改或再开发软件, 以扩充软件功能、增强软件性能、改进加工效 率、提高软件的可维护性。 这种情况下进行的维护活动叫做完善性维护。 例如,完善性维护可能是修改一个计算工资的 程序,使其增加新的扣除项目;缩短系统的应 答时间,使其达到特定的要求等。
三类维护占 总维护比例
维护在软件生存期 所占比例
8.2 维护的特点
8.2.1 非结构化维护和结构化维护 1. 非结构化维护 只有源程序,没有文档,维护活动只能从阅读、理 解分析源程序开始,来了解系统功能、软件结构、 数据结构、系统接口、设计约束等。
维护工作非常困难,要花费大量的人力、物力,最 终对源程序修改的后果是难以估量的。
8.2.2 维护的困难性 1. 读懂别人的程序是困难的 修改别人的程序不如自己重新编写程序 2. 文档的不一致性 各种文档之间不一致 文档与程序之间不一致 主要是开发过程中文档管理不严造成: 修改程序忘了修改与其相关的文档 某一文档改了,没有修改与其相关的另一文档
3. 软件开发和软件维护在人员和时间上的差异 软件维护工作由软件开发人员来进行,维护工作就 变得容易 通常开发人员和维护人员不同,导致维护的困难。 维护阶段持续时间很长,正在运行的软件可能是十 几、二十几年前开发的,开发工具、方法、技术与 当前的工具、方法、技术差异很大,导致维护困难。 3. 软件维护不是一项吸引人的工作。
软件工程导论第8章
![软件工程导论第8章](https://img.taocdn.com/s3/m/b8978ffefab069dc502201f8.png)
4. 代码重构;
分析源代码,标注出与结构化程序设计概念不符的 部分,重构它的代码,测试重构代码并更新代码。
5. 数据重构;
当数据结构较差时,进行再工程。如以文件方式保存
数据变为以数据库方式存储。
6. 正向工程。
也称革新或改造,即应用软件工程的原理、概念、技 术和方法来重新开发现有系统。
求而进行的维护称为完善性维护。
4)预防性维护
为了改进软件未来的可维护性或可靠性,或
者为了给未来的改进奠定更好的基础而进行的
修改,称为预防性维护。
这种维护活动在实践中比较少见。
在各类维护中,完善性维护占软件维护工作的
大部分。
根据国外的数据统计表明,完善性维护占全部
维护活动的50%~66%,改正性维护占17%~
3)软件没有足够的文档资料,或者程序修改后 与文档资料不一致; 4)绝大多数软件在设计时没有考虑将来的修改
,所以建议采用功能独立的模块化设计原
则,增加软件的可维护性;
5)软件维护被许多人视为一种毫无吸引力的工
作,因为维护工作常常受到挫折。
要缓解以上典型问题,建议采用软件工程的方法来开发程序。
8.3 软件维护过程 1. 维护组织
4)参考手册; 5)操作员指南; 2. 系统文档
8.4.3 可维护性复审
测试结束时进行正式的可维护性复审,称为
ቤተ መጻሕፍቲ ባይዱ
配置复审,目的是:保证软件配置的所有成分
是完整的、一致的和可理解的。
8.5 预防性维护
对旧程序维护的做法:
1)反复多次做修改程序的尝试; 2)先通过仔细分析程序,尽可能多地掌握程序内部工 作细节,再有效地修改;
第8章 软件维护
![第8章 软件维护](https://img.taocdn.com/s3/m/a8a24552d1f34693dbef3e40.png)
8.2 软件维护的特点
(3) 文档副作用:对软件的数据流、软件结构、模 块逻辑等进行修改时,必须对相关技术文档进行相应修 改。否则会导致文档与程序功能不匹配、缺省条件改变 等错误,产生文档的副作用。如果对可执行软件的修改 没有反映在文档中,会产生如下文档副作用:
8.3 软件维护过程
系统监督员
维护负责人 维护小组1
维பைடு நூலகம்管理员
维护负责人 维护小组2
维护配置员
维护负责人 维护小组n
图8- 1 软件维护的组织结构
8.3 软件维护过程
维护申请提交给一个维护管理员,他把申请交给某 个系统监督员去评价。系统监督员是一位技术人员,他 必须熟悉产品程序的某一部分。一旦做出评价,由修改 负责人确定如何进行修改。维护人员对程序进行修改的 过程中,由配置管理员严格把关,控制修改的范围,对 软件配置进行审计。
2. 软件维护副作用 维护的目的是为了延长软件的寿命并让其创造更多的价 值,经过在段时间的维护,软件中的错误减少了,功能增强 了。但是,修改软件是危险的,每修改一次,可能会产生新 的潜在错误。因此,维护的副作用是指由于修改软件而造成 新的错误或其他不希望出现的情况。一般维护产生的副作用 有如下三种。
维护管理员、系统监督员和修改负责人等,均代表 维护工作的某个职责范围。修改负责人、维护管理员可 以是指定的某个人,也可以是一个包括管理人员、高级 技术人员在内的小组。系统监督员可以有其他职责,但 应具体分管某一个软件包。
8.3 软件维护过程
8.3.2 维护工作的流程 图8-2描述了实施软件维护的工作流程。第 一步是先确认维护要求。这需要维护人员与用户 反复协商,弄清错误概况以及对业务的影响大小, 以及用户希望做什么样的修改,并把这些情况存 入故障数据库。然后由维护组织管理员确认维护 类型。
《软件工程实用教程》第8_章_软件维护技术
![《软件工程实用教程》第8_章_软件维护技术](https://img.taocdn.com/s3/m/1a46c06358fafab069dc0260.png)
第8 章 軟體維Βιβλιοθήκη 技術8.2 軟體維護類型8.2.1 改正性維護 1. 利用應用軟體包,可開發出比由用戶完全 自己開發的系統可靠性更高的軟體。 2. 結構化技術,用它開發的軟體易於理解和 測試。 3. 防錯性程式設計。把自檢能力引入程式, 通過非正常狀態的檢查,提供審查跟蹤。 4. 通過週期性維護審查,在形成維護問題之 前就可確定品質缺陷。可理解性
第8 章 軟體維護技術
8.2.2 完善性維護 為了滿足日益增長的新要求,需要修改或再 開發軟體,以擴充軟體功能,增強軟體性能, 改進加工效率,提高軟體的可維護性,這些 維護活動稱為完善性維護。 8.2.3 適應性維護 為了使軟體適應新的變化而去修改軟體的維 護活動稱為適應性維護。 8.2.4 預防性維護 為以後進一步使用軟體打下良好基礎的維護 活動稱為預防性維護活動。
第8 章 軟體維護技術
8.4.2 軟體維護的副作用 1.修改代碼的副作用 2.修改數據的副作用 3.修改文檔的副作用
(1)確認維護類型 (2)實施維護 (3)維護評審
第8 章 軟體維護技術
4.整理軟體維護文檔 程式名稱; 使用的程式設計語言; 根源程式語句條數,機器代碼指令條數; 程式安裝的日期; 程式安裝後的運行次數; 與程式安裝後運行次數有關的處理故障次數; 程式改變的層次,名稱和日期; 修改程式所增加的根源程式語句條數; 修改程式所減少的根源程式語句條數;
第8 章 軟體維護技術
8.3 軟體維護技術
8.3.1 軟體維護過程 1.建立維護機構
第8 章 軟體維護技術
2.編寫軟體維護申請報告 軟體變更報告包括的內容: 所需修改變動的性質; 申請修改的優先順序; 為滿足該維護申請報告,所需的工作量(人 員數,時間數); 預計修改後的結果。 3.確定軟體維護工作流程
第8章 维 护(Maintenance)
![第8章 维 护(Maintenance)](https://img.taocdn.com/s3/m/889185600066f5335a81219d.png)
§6 软件再工程过程
典型的软件再工程过程模型如图8.3所示,该模型 定义了6类活动。在某些情况下这些活动以线性顺 序发生,但也并非总是这样,例如,为了理解某个 程序的内部工作原理,可能在文档重构开始之前必 须先进行逆向工程。
在图8.3中显示的再工程范型是一个循环模型。这 意味着作为该范型的组成部分的每个活动都可能被 重复,而且对于任意一个特定的循环来说,过程可 以在完成任意一个活动之后终止。下面简要地介绍 该模型所定义的6类活动。
修改不及时引起用户不满 ;
维护引入新错误,降低了软件质量;等等。
• 维护工作量的经验模型:
M = P + K ec-d
其中:M = 总的维护工作量;
P = 生产性工作量 (e.g. Analysis, evaluation, design,
coding, and testing); K = 经验常数 ;
图8.3 软件再工程过程模型
1. 库存目录分析
每个软件组织都应该保存其拥有的所有应用 系统的库存目录。该目录包含关于每个应用 系统的基本信息(例如,应用系统的名字, 最初构建它的日期,已做过的实质性修改次 数,过去18个月报告的错误,用户数量,安 装它的机器数量,它的复杂程度,文档质量, 整体可维护性等级,预期寿命,在未来36个 月内的预期修改次数,业务重要程度等)。
好程序的特征:模块化、结构化、代码与设计 风格一致,高级语言实现。
度量方法:90 - 10 Test ——读源程序10分钟, 能否默写出90%?
⑵可测试性(Testability) 是指论证程序正确性的容易程度。 好程序的特征:可理解、可靠、简单。 度量方法:程序复杂度(第六章中已讨论)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)并行方式
关系重大的软件一般采用同时运行新系统和 旧系统,这就是并行方式。
优点: 旧系统
① 能对系统进行全面测试,减少了新系统风险; ② 给用户熟悉新系统的时间。
缺点:
新系统 双系统要投入更多的人力财力。
工学二部计算机教研室
(3)逐步方式
分期,分部分地交付使用 克服了上面两种方式的缺点,既能防止直接转换 产生的危险性,又能减少并行方式的费用 必须考虑好新旧系统的配合问题和接口问题
工学二部计算机教研室在没有使用就解决一个 重要问题时的样子工学二部计算机教研室
向服务器上传文件时的样子
工学二部计算机教研室
当你发现上周五还非常好用, 到了周一却不能运行时的样子
工学二部计算机教研室
当所有人都在办公室挥汗如雨的加班 而你却能安然的回家度周末时的样子
工学二部计算机教研室
当听到老板说项目如果能如期完工 将会有一笔奖金时的样子
工学二部计算机教研室
文档 重构
代码 重构
逆向 工程
六、软件再工程过程
正向 工程 数据 重构 库存 目录 分析
恢复设计结果的过
文档 重构
程,从程序代码中
抽取数据结构、体
代码 重构
逆向 工程
系结构和处理过程
的设计信息。
工学二部计算机教研室
六、软件再工程过程
正向 工程 数据 分析源代码,标注 重构 库存 目录 分析
工学二部计算机教研室
(3)可修改性
与设计时采用的原则和策略相关。(耦合、内聚、
控制域和作用域、局部化程度)
(4)可移植性
(5)可重用性 决定软件可维护性的最终因素是软件设计阶段所采用
的方法,以及软件文档资料的质量。提高软件的可维护
性是软件工程的一个重要目标。
工学二部计算机教研室
2.文档
功能描述 安装文档
三、软件维护过程 1. 维护组织
维护要求 (软件问题报告) 变化授权人 维护管理员
系统管理员
…
软件系统
工学二部计算机教研室
2. 维护报告
包含信息:
① 维护的工作量
② 维护的性质
③ 优先级
④ 有关的事后数据(如测试数据等)
工学二部计算机教研室
3. 维护的事件流
维护要求
类型
⊕ 完善 评价优 先度 低 错误 ⊕ 适应 估量错 严重 分析问 题 误严重 ⊕ 程度 不严重 计划改 正进度
第8章 维护
工学二部计算机教研室
任务:维护软件的正常运行,改进性能和质 量,为进一步推广和升级做准备。 工作量:大型软件的维护成本是开发总成本的 四倍左右,软件开发组织把60%以上的工作量 用于维护自己的软件上。
工学二部计算机教研室
软件一旦交付,就意味着漫长的
维护之路的开始……
工学二部计算机教研室
当你改错一行代码的时候
工学二部计算机教研室
当你想要重构别人的代码时
工学二部计算机教研室
当你尝试想要修复一个bug时的样子
工学二部计算机教研室
当你凌晨4点还在工作时的样子
工学二部计算机教研室
星期五下午项目经理给 你分配任务时的样子
工学二部计算机教研室
当你尝试修复别人代码的时候,结果...
工学二部计算机教研室
评价设 计文档
评价性能特点 评价接口特点
修改设计
修改代码
回归测试
工学二部计算机教研室
4.软件维护的代价
有形代价:维护的费用开支
70年代,软件维护费用占总预算的 30%~ 40% ,80年代上升到60%左右,90年代达到了80%。
工学二部计算机教研室
无形代价:潜在的影响
当看起来合理的要求不能及时满足时,会引起用
数据 重构 正向 工程 库存 目录 分析
文档 重构
发现有系统。
代码 重构
逆向 工程
工学二部计算机教研室
小结:维护过程管理
◇ 软件维护手册
主要包括软件系统说明、程序模块说明、操作环境、支 持软件说明、维护过程说明等。(便于软件的维护)
◇ 软件问题报告
软件问题的登记,如日期、发现人、状态、问题所属模块 等。(为维护提供准备文档)
产品上线时发现缺陷时的样子
工学二部计算机教研室
终端用户没有你的软件使用说明的时候
工学二部计算机教研室
当你看到第一次使用CSS 美化页面的效果时的样子
工学二部计算机教研室
一夜鏖战后第一次运行脚本时的样子
工学二部计算机教研室
老板找你修复严重bug时样子
工学二部计算机教研室
没有按Ctrl-s就关闭文件时的样子
稳定的分析与设计技术(如面向对象分析、设计
技术),可以减少一定的工作量。
( 6)其它因素。应用的类型、数学模型、任务
的难度、IF嵌套深度等。
工学二部计算机教研室
五、预防性维护
(1)反复多次做修改程序的尝试;
(2)分析掌握程序内部细节,再修改;
(3)用软件工程方法重新设计、编码和测试需要变
更的软件部分; (4)以软件工程方法为指导,对程序全部重新设计 、编码和测试。 3:是局部再工程;4:是软件再工程 / 预防性维护
护活动的50%~66%,改正性维护占17%~21%,适
应性维护占18%~25%,其它维护活动占4%左右。
工学二部计算机教研室
3.结构化维护
评价代码
评价软件结构
评价数据结构
评价系统接口
评价设计约束
非结构化维护:经常产生误解,不能回归测试
,维护代价大。
工学二部计算机教研室
结构化维护
确定软件结构
工学二部计算机教研室
预防性维护的理由:
(1)对于旧系统,维护一行原代码的代价可能是最
初开该行源代码代价的14-40倍; (2)使用最新的设计理念重新设计软件体系结构( 程序和数据结构),对将来的维护有较大帮助; (3)旧系统可作为原型,能提高开发效率。
工学二部计算机教研室
六、软件再工程过程
分析应用系统的信息,
Байду номын сангаас
◇ 软件修改报告
针对问题处理方案、修改后的影响的详细的描述,提交
审批。
工学二部计算机教研室
其它重要的文档
◇ 开发进度月报
包括进度与实际进度的比较、阶段成果、遇到的问题和解 决的办法以及下个月的打算等。
◇ 项目开发总结报告
总结实际执行的情况(进度、成果、资源利用、成本和投入 的人力)以及开发工作的评价,经验和教训。
◇ 用户操作手册
详述软件的功能、性能和用户界面,用户如何使用软件,操作 人员具备的有关知识,操作方法的具体细节。
工学二部计算机教研室
2.软件维护的类型
(1)改正性维护
在用户使用过程中诊断、发现和改正错误的过程
称为改正性维护。
(2)适应性维护
硬件系统和外设需要时常更新和升级,造成数据 库环境、数据输入/输出方式、数据存储介质等发生变 换。为了使软件适应这些环境变化而修改软件的过程 叫做适应性维护。
工学二部计算机教研室
(3)完善性维护
11)每个改动耗费的人时数; 12)程序改动的日期;
13)软件工程师的名字; 15)维护类型; 14)维护要求表的标识; 16)维护开始和完成的日期;
17)累计用于维护的人时数; 18)与完成的维护相联系的纯效益。
工学二部计算机教研室
5. 评价维护活动
可以从以下方面度量维护工作:
1)每次程序运行平均失效的次数;
用户文档
使用手册 参考手册 操作员指南
系统文档
工学二部计算机教研室
3. 可维护性复审
测试结束时进行正式的可维护性复审,也称配置复审 目的:保证软件配置的所有成分是完整的、一致的和 可理解的。
工学二部计算机教研室
4. 影响维护工作量的因素
(1)系统大小。系统功能越复杂,理解掌握起来就
越困难,需要的维护工作量越大。
用户在使用过程中提出新的功能和性能要求, 造成功能增加和修改称为完善性维护。
(4)预防性维护
为了改进软件未来的可维护性或可靠性,或者为未来 维护方便而进行的修改,称为预防性维护。在实践中 比较少见。
工学二部计算机教研室
在各类维护中,完善性维护占软件维护工作的大
部分。
根据国外的数据统计表明,完善性维护占全部维
(2)程序设计语言。语言的功能越弱,实现同样功
能所需的语句就越多,程序就越大,维护起来就越
困难。
(3)系统年龄。老系统当初未按照软件工程的要求
进行开发,文档太少;在长期的维护中许多地方与
程序不一致,维护起来困难较大。
工学二部计算机教研室
(4)数据库技术 ( 5)先进的开发技术。使用能使软件结构比较
的难易程度。
① 可理解性 ② 可测试性
1. 决定因素
③ 可修改性 ④ 可移植性 ⑤ 可重用性
工学二部计算机教研室
( 1 )可理解性:软件结构、接口、功能和内部过程
的理解的难易程度。
影响因素:模块化、结构化设计、详细的设计文
档资料、源代码内部文档、良好的程序设计语言等。 (2)可测试性 设计成易测试、易诊断,能用测试工具和调试工 具进行测试和诊断的软件。
1. 软件交付使用的工作
① 数据转换(如数据库数据) ② 调试并加载,准备运行
③ 资料移交(如使用说明)
④ 用户培训
工学二部计算机教研室
意想不到的问题,程序设计错误
2.软件交付方式
(1)直接方式
旧系统
应急措施:随时能切换到旧系统
不适用关系重大的系统
新系统
优点:转换简单,费用最省 缺点:风险大