第7章-软件维护与项目管理.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第7章-软件维护与项目管理.ppt》由会员分享,可在线阅读,更多相关《第7章-软件维护与项目管理.ppt(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章 软件维护与项目管理普通人轻视软件维护工作,会失掉极其宝贵的机会;维护人员轻视软件维护工作,会失掉本应精彩的人生;老板轻视软件维护工作,会丢掉大片本来属于自己的市场第7章 软件维护与项目管理7.1 软件维护7.2 软件再工程7.3 项目管理7.4 项目度量7.5 风险分析7.6 小结7.1 软件维护J7.1.1 软件维护概述J7.1.2 软件的可维护性J7.1.3 软件维护的实施37.1.1 软件维护概述J 软件维护-在软件交付使用后,根据需求变化或硬件环境变化对应用程序进行部分或全部修改。修改时要充分利用源程序,修改后要填写程序登记表,并在程序变更通知书上写明新旧程序的不同之处。J 维
2、护的类型有四种:正确性维护 适应性维护 完善性维护 预防性维护4正确性维护(改正性维护)J 改正软件中存在的错误。占整个维护工作量的17%21%。J 在软件交付使用后,由于开发时测试得不彻底或不完全,在运行阶段会暴露一些开发时未能测试出来的错误。为了识别和纠正软件错误,改正软件性能上的缺陷,避免实施中的错误使用,应当进行的诊断和改正错误的过程,这就是改正性维护。5适应性维护(18%25%)J 在使用过程中,有以下变化:外部环境(新的硬、软件配置)数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)企业的外部市场环境、管理需求J 为使软件适应这种变化,而去修改软件的过程就叫做适应性维护
3、。J 要有计划、有步骤的进行。6完善性维护(50%60%)J 在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。J 为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。J 这种情况下进行的维护活动叫做扩充与完善性维护。7 预防性维护(4%左右)J 预防性维护是:为了改进软件可维护性、可靠性;为了适应未来软硬件环境变化;主动增加预防性的新功能,使得软件不因各种变化而被淘汰。8各种维护所占比例:其它维护 4%适应性维护18%25%改正性维护 17%21%扩充与完善性维护 50%60%9107.1.2 软件的可维护性J软件的维护十分困难,
4、原因在于这些软件的文档不全、质量差、开发过程不注意采用好的方法,忽视程序设计风格等。J许多维护要求并不是因为程序中出错而提出,而是为适应环境变化或需求变化而提出的。J为了使得软件能够易于维护,必须考虑使软件具有可维护性可维护性。11一、软件可维护性的定义J 软件可维护性定义:软件能够被理解、校正、适应及增强功能的难易程度。J 软件可维护性可以用7个质量特性来衡量:可理解性,可测试性,可修改性,可靠性,可移植性,可使用性,效率127个特性在各类维护中的侧重点13二、可维护性的度量J 度量一个可维护性软件的七种特性常用方法:质量检查表:是用于测试程序中某些质量特性是否存在的一个问题清单。质量测试和
5、质量标准:用于定量分析和评价程序的质量。由于许多质量特性是相互抵触的,要考虑几种不同的度量标准。14三、提高可维护性的方法(1)建立明确的软件质量目标和优先级J 相互捉进的特性:可理解性和可测试性;可理解性和可修改性。J 相互抵触的特性:效率和可移植性;效率和可修改性。J 各特性的相对重要性应随着程序的用途不同、计算环境的不同而不同。15提高可维护性的方法(续)(2)利用先进的软件开发技术和工具 面向对象软件开发方法软件系统稳定性好、易修改、易理解、易测试,可维护性好。(3)建立明确的质量保证 质量保证为提高软件质量所做的各种检查工作。非常有用的四类检查:在检查点进行检查、验收检查、周期性地维
6、护检查、对软件包的检查。16提高可维护性的方法(续)(4)选择可维护的程序设计语言 低级语言:难掌握、难理解、难维护。高级语言:易理解、易掌握。第四代语言:更易理解、易编程、易修改、易维护。(5)改进程序的文档 程序文档对提高程序的可阅读性有重要意义。(6)开发软件时考虑到维护177.1.3 软件维护的实施一、软件维护的主要任务二、软件维护的阶段三、软件维护的主要问题18一、软件维护的主要任务:软件维护主要任务包括两点:1.维护组织机构J 对大型软件系统:建立专门的维护组织机构。J 对较小软件系统:委派专人负责软件维护工作。J 维护活动开始之前,必须明确维护活动的审批制度。审批制度如下页表:1
7、.维护组织机构2.软件维护报告19维护审批制度系统管理员维护管理员维护申请主管部门202.软件维护报告J 用户填写维护申请单交给维护组织,经有关人员认真分析后,根据分析结果制定软件维护报告,主要包括以下内容:维护要求的性质 维护活动的优先顺序 计算满足维护申请表中提出的软件变更所需要的工作量 预计软件变更后的情况212.软件维护报告J 用标准化的格式表达所有软件维护申请(要求)。J 维护申请报告/软件问题报告,由申请维护的用户填写。J 用户必须完整地说明产生错误的情况,包括输入数据、错误清单以及其它有关材料。J 如果申请的是适应性维护或完善性维护,用户必须提出一份修改说明书,列出所有希望的修改
8、。222.软件维护报告J 维护申请报告将由维护管理员和系统管理员研究处理后,做出软件修改报告,指明:所需修改变动的性质;申请修改的优先级;为满足维护申请报告所需的工作量;预计修改后的状况。J 软件修改报告应提交给变化授权人/修改负责人),经批准后批准后才能开始进一步安排维护工作。23维护的技术工作J 不同类型的维护申请,都要进行同样的技术工作:修改软件需求说明 修改软件设计 设计评审 对源程序做必要的修改 单元测试 集成测试(回归测试)确认测试 软件配置评审等24维护完成后的总结J 每次软件维护任务完成后进行情况评审,对以下问题做总结:(1)在目前情况下,设计、编码、测试中的哪一方面可以改进?
9、(2)哪些维护资源应该有但没有?(3)工作中主要的或次要的障碍是什么?(4)从维护申请的类型来看是否应当有预防性维护?J 情况评审对将来的维护工作如何进行会产生重要的影响。2526维护档案记录程序标识;源语句数;机器指令条数;使用的程序设计语言;程序安装的日期;自从安装以来程序运行的次数;自从安装以来程序失效的次数;程序变动的层次和标识;因程序变动而增加的源语句数;因程序变动而删除的源语句数;每个改动耗费的人时数;程序改动的日期;软件工程师的名字;维护要求表的标识;维护类型;维护开始和完成的日期;累计用于维护的人时数;与完成的维护相联系的纯效益。26二、软件维护6个阶段软件维护的准备和过度活动
10、:维护计划的构思与创建,后续的产品配置管理。问题与修改分析阶段:维护人员分析每个请求,确认并验证其有效性,调查、提出、记录解决方案,获得软件修改的授权。实施修改阶段。接受修改阶段:由用户检查所做的修改是否解决了相应的问题。迁移阶段:软件被迁移到另一个平台。对软件某一部分的弃用。27 软件维护过程J 为了有效地进行软件维护,应事先就开始做组织工作:首先建立一个维护组织;申明提出维护申请报告的过程及评价的过程;为每一个维护申请规定标准的处理步骤;建立一个适用于维护活动的记录保管过程;规定复审标准。28三、结构化维护与非结构化维护差别巨大J 非结构化维护:只有程序代码,没有设计文档及测试文档,维护活
11、动从艰苦地评价程序代码开始。需要付出很大代价,是没有使用良好的软件工程方法学开发出来的软件的必然结果。29三、结构化维护与非结构化维护差别巨大J 结构化维护:有一个完整的软件配置,维护工作从评价设计文档开始;估计改动将带来的影响,计划实施途径;修改设计文档,并且复审;编写相应的源程序代码;使用在测试说明书中包含的信息进行回归测试;把修改后的软件再次交付使用。30四、维护的代价高昂 J软件维护活动所花费的工作占整个生存期工作软件维护活动所花费的工作占整个生存期工作量的量的70%70%以上以上。J 软件维护代价极高,既破财,又伤神;有形代价:投入的人力物力。无形代价:影响更大。31维护的无形影响:
12、J 可用的资源必须供维护任务使用,以致耽误甚至丧失了开发的良机。J 改错或修改的不及时,引起的用户不满;J 由于维护时的改动,在软件中引入了潜伏的错误,从而降低了软件的质量;J 把软件开发人员抽调到维护工作中,干扰了软件开发工作。J 生产率的大幅度下降,尤其在维护旧程序时常常遇到。32五、影响维护工作量的因素J系统大小J程序设计语言:强功能,模块化,结构化J系统年龄:维护人员常换,文档缺少,文档与程序不一致J数据库技术的应用:J先进的软件开发技术:面向对象、复用技术J其它:应用类型,数学模型,任务难度,开关与标记、IF嵌套深度、索引或下标数等J许多软件在开发时并未考虑将来的修改,为软件的维护带
13、来许多问题。33六、维护中的典型问题(1)难以跟踪软件版本的进化过程,软件的变化未在文档中反映出来。(2)难以读懂他人程序。(3)无文档或不全。(4)软件人员流动性大。(5)设计时未考虑修改需要,修改困难(6)维护工作无吸引力,缺乏成就感 采用软件工程方法至少可部分解决与维护有关的每一个问题。34七、文 档J文档文档是影响软件可维护性的决定因素。往往文档比程序代码更重要。J软件系统的文档可以分为两大类如下:用户文档:主要描述系统功能和使用方法,并不关心这些功能是怎样实现的;系统文档:描述系统设计、实现和测试等各方面的内容。35用户文档J 用户文档主要包括:用户手册 操作手册 维护修改意见 软件
14、需求规格说明书J 上述内容可以分别作为独立的文档,也可以作为一个文档的不同分册,具体做法应该由系统规模决定。36用户文档J 用户文档至少应该包括下述5方面的内容:(1)功能描述系统能做什么;(2)安装文档如何安装系统,配置硬件;(3)使用手册如何使用系统(例子),出错时如何恢复、重启系统;(4)参考手册详尽详尽描述所有系统设施的使用方法,解释可能产生的错误信息的含义;(5)操作员指南说明操作员如何处理系统使用中出现的各种问题。37开发文档J 开发文档 软件需求规格说明书 数据要求说明书 概要设计说明书 详细设计说明书 可行性研究报告 项目开发计划38管理文档J 管理文档 测试计划 测试报告 开
15、发进度月报 开发总结报告39 系统文档J 系统文档:指从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档。J 描述系统设计、实现和测试的文档对于理解程序和维护程序来说是极端重要的。J 和用户文档类似,系统文档的结构也应该能把读者从对系统概貌的了解,引导到对系统每个方面每个特点的更形式化更具体的认识。40417.2 软件再工程再工程是一个重构活动(类比 重建一所房子)l 开始重建前,首先检查一下房子。确定它是否确实需要重建?l 在拆掉并重建房子前,确定其结构是否牢固。若结构良好,则可能是“改造”。l 开始重建前,确保已经了解房子最初是如何建造的。(墙内部,了解布线、管道以及内部结构
16、。)l 如果开始重建,应该使用最现代的,耐久的材料。l 如果决定重建,一定要采用严格的方式,使用现在及将来都将获得高质量的做法。42软件再工程过程模型软件再工程是一类软件工程活动,是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。4344 软件再工程过程示意图 需求新需求设计 设计代码 代码正向工程逆向工程(重构)(重构)(重构)4445软件再工程过程模型的6类活动1.库存目录分析2.文档重构3.逆向工程4.代码重构5.数据重构6.正向工程451.库存目录分析 每个软件组织要保存所有应用系统的库存目录。它包含关于每个应用系统的基本信息:应用系统名字;最初构建日
17、期;已做过的实质性修改次数和花费的总劳动;最好的一次实质性修改的日期和花费的劳动;它驻留的系统;和它有接口的应用;它访问的数据库;过去18个月报告的错误;用户数量;安装它的机器数量;程序结构、代码和文档的复杂性;文档的质量;整体可维护性等级;预期寿命;预期在未来36个月内修改次数;年度维护成本;年度运作成本;年度业务值;业务重要程度。461.库存目录分析(续)J 库存目录分析:分析哪些软件系统需要进行再工程过程。有3类程序:(1)预定将使用多年的程序;(2)当前正在成功地使用着的程序;(3)在最近的将来可能要做重大修改或增强的程序。472.文档重构老程序固有的特点是缺乏文档。处理方法:(1)如
18、果一个程序是相对稳定的,正在走向终点,保持现状,不建文档。(2)只针对系统中当前正在修改的那些部分建立完整文档。随着时间流逝,将得到一组有用的和相关的文档。(3)如果某应用系统是完成业务工作的关键,而且必须重构全部文档,也设法把文档工作减少到必需的最小量。483.逆向工程J 软件的逆向工程:是分析程序以便在比源代码更高的抽象层次上创建出程序的某种表示的过程;J 逆向工程是一个恢复设计结果的过程;J 逆向工程工具从现存的程序代码中抽取有关数据、体系结构和处理过程的设计信息。494.代码重构J 某些老程序具有比较完整、合理的体系结构,但是,个体模块的编码方式却是难于理解、测试和维护的,可进行代码重
19、构。J 重构过程:分析源代码 标注需重构部分 重构 复审、测试 更新文档。J 重构并不修改不修改整体的程序体系结构程序体系结构,它仅关注个体模块的设计细节以及在模块中定义的局部数据结构。J 如果重构扩展到模块边界之外,并涉及软件体系结构,则重构变成了正向工程。505.数据重构J 对数据体系结构差的程序很难进行适应性修改和增强;J 数据体系结构比源代码本身对程序的长期生存力有更大影响;J 由于数据体系结构对程序体系结构程序体系结构及算法算法有很大影响,对数据的修改必然会导致体系结构或代码层的改变。J 当数据结构较差时,应该对数据进行再工程。516.正向工程J 正向工程也称为革新或改造;J 不仅从
20、现有程序中恢复设计信息,而且使用该信息去改变改变或重构现有系统重构现有系统,以提高其整体质量。J 被再工程的软件不仅重新实现现有系统的功能,而且加入加入了新功能新功能和提高了整体性能提高了整体性能。527.2.2 逆向工程J 逆向工程:是对产品设计过程的一种描述。J 逆向工程产品设计:根据已经存在的产品,反向推出产品设计数据的过程。53将要再工程的系统自动分析手工加注释系统信息库文档生成数据结构图程序结构图可追溯矩阵 逆向工程过程54逆向工程的工具源程序目标代码 源程序概要设计详细设计概要设计需求分析J 反汇编、反编译J 程序分析技术:程序结构分析工具,程序功能分析工具55(1)实现级:程序的
21、抽象语法树、符号表等信息;(2)结构级:反映程序分量之间相互依赖关系的信息,如调用图、结构图等;(3)功能级:反映程序段功能和段间关系的信息;(4)领域级:反映程序分量与应用领域概念间对应关系的信息;抽象级别低高信息的抽象级别越高,它与代码距离越远,通过逆向工程恢复的难度越大,自动工具支持的可能性变小逆向工程恢复信息的级别:56数据的逆向工程J 数据逆向工程的层次:程序层:某一程序内部数据结构必须被逆向工程。系统层:全局数据结构经常被再工程。57用户界面的逆向工程J 用户界面的重新开发J 要注意问题:系统界面的主要功能 用户的使用方式587.2.3 重构J 在不改变软件现有功能的基础上,通过调
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 维护 项目 管理
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内