- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软工概论 软件维护与逆向工程
第11章 软件维护;11.1 软件维护的概念;11.1 软件维护的概念;2.适应性维护
随着信息技术的飞速发展,软件运行的外部环境(新的
硬、软件配置)或数据环境(数据库、数据格式、数据输入
/输出方式、数据存储介质)可能发生变化,为了使软件适
应这种变化,而修改软件的过程叫做适应性维护(adaptive
maintenance)。例如,需要对已运行的软件进行改造,以
适应网络环境或已升级改版的操作系统要求。;11.1 软件维护的概念;4.预防性维护
预防性维护(preventive maintenance)是指把今天的
方法学用于昨天的系统以满足明天的需要。也就是说,采
用先进的软件工程方法对需要维护的软件或软件中的某一部
分(重新)进行设计、编码和测试。;各类维护占总维护工作量的比例;11.1 软件维护的概念; 在软件维护中,影响维护工作量的因素主要有以下6种:
(1)系统规模。
(2)程序设计语言。
(3)系统年龄大小。
(4)数据库技术的应用水平。
(5)所采用的软件开发技术及软件开发工程化的程度。
(6)其他:如应用的类型、数学模型、任务的难度、IF嵌
套深度、索引或下标数等,对维护工作量都有影响。; 根据影响软件维护工作量的各种因素,针对3种典型维
护,James Martin等提出了一些策略,以控制维护成本。
1.改正性维护
应用一些诸如数据库管理系统、软件开发环境、程序自
动生成系统和高级(第四代)语言等新技术可大大提高可
靠性,并减少进行改正性维护的需要。此外,还可考虑利
用应用软件包、防错性程序设计、通过周期性维护审查等
策略。;2.适应性维护
这一类的维护不可避免,但可以采用以下策略加以控制。
(1)在配置管理时,把硬件、操作系统和其他相关环境因
素的可能变化考虑在内,可以减少某些适应性维护的工作
量。
(2)把与硬件、操作系统,以及其他外围设备有关的程序
归到特定的程序模块中。可把因环境变化而必须修改的程序
局部于某些程序模块之中。
;11.1 软件维护的概念;3.完善性维护
利用前两类维护中列举的方法,也可以减少这一类维
护。特别是数据库管理系统、程序生成器、应用软件包,
可减少系统或程序员的维护工作量。
此外,建立软件系统的原型,把它在实际系统开发之前
提供给用户。用户通过研究原型,进一步完善他们的功能
要求,可以减少以后完善性维护的需要。;11.2 软件维护活动; 维护申请报告是由软件组织外部提交的文档,它是计划维
护工作的基础。软件组织内部应相应地做出软件修改报告
(software change report,SCR),指明:
● 所需修改变动的性质;
● 申请修改的优先级;
● 为满足某个维护申请报告,所需的工作量;
● 预计修改后的状况。
软件修改报告应提交修改负责人,经批准后才能开始进一
步安排维护工作。; 软件维护工作流程如下图所示。; 在每次软件维护任务完成后,最好进行一次情况评审,对
以下问题做一总结:
在目前情况下,设计、编码、测试中的哪一方面可以改 进?
哪些维护资源应该有,但没有?
工作中主要的或次要的障碍是什么?
从维护申请的类型来看是否应当有预防性维护?
情况评审对将来的维护工作如何进行会产生重要的影响,并可为软件机构的有效管理提供重要的反馈信息。
;11.2 软件维护活动; 评价维护活动可参考的度量值有:
每次程序运行时的平均出错次数;
花费在每类维护上的总“人时”数;
每个程序、每种语言、每种维护类型的程序平均修改次数;
因为维护,增加或删除每个源程序语句所花费的平均“人时”数;
用于每种语言的平均“人时”数;
维护申请报告的平均处理时间;
各类维护申请的百分比。 ; 为了正确、有效地进行程序修改,需要经历3个步骤:分
析和理解程序、实施修改以及重新验证程序。
;(3)掌握程序的结构信息,即从程序中细分出若干结构成
分,如程序系统结构、控制结构、数据结构和输入/输
出结构等;
(4)了解数据流信息,即所涉及的数据来自何处,在哪里
被使用;
(5)了解控制流信息,即执行每条路径的结果;
(6)如果设计存在,则可利用它们来帮助画出结构图和高
层流程图;
(7)理解程序的操作(使用)要求。
; 为了容易地理解程序,要求自顶向下地理解现有源程序的
程序结构和数据结构,为此可采用如下几种方法。
(1)分析程序结构图。
(2)数据跟踪。
(3)控制跟踪。可采用符号执行或实际动态跟踪的方法,
了解数据是如何从一个输入源到达输出点的。
(4)在分析
文档评论(0)