slides11
110513
Chapter 11,维护系统,Copyright 2006 Pearson/Prentice Hall.All rights reserved.,目录,11.1 变化的系统11.2 维护的本质11.3 维护问题11.4测量维护的特性11.5维护技术和工具11.6软件再生11.7信息系统的例子 11.8 实时系统的例子11.9本章对单个开发人员的意义,本章内容,系统演化遗留系统影响分析软件再生,11.1 变化的系统,维护:系统运行后,任何针对系统改变做出的工作 软件不会降低,也不需要定期的维护然而软件需要不断提升维护过程是困难的,11.1 变化的系统 软件开发过程中变化的例子,11.1 变化的系统系统生命周期跨度,我们需要维护阶段吗?开发时间 vs.维护时间我们预期会有多少变化?系统演化 vs.系统退化软件演化法则,11.1 变化的系统开发时间 Vs.维护时间,Parikh 和 Zvegintzov(1983)开发时间:2 年维护时间:5 到6 年Fjedstad和Hamlen(1979)39%的工作量花在开发上61%的工作量花在维护上80-20 法则20%的工作量用于开发80%的工作量用于维护,11.1 变化的系统系统演化 vs.系统退化,是否维护的成本太高了?系统的可靠性可以接受吗?在合理的时间内,系统不再能够适应进一步的变化吗?系统性能还超出规定的约束吗?系统功能只能起到有限的作用吗?其他具有相同功能的系统是否更好、更快、更便宜?维护的成本很高,有足够的理由用更便宜、更新的硬件?,11.2 维护的本质维护活动的类型,改正性:维护对日常的系统功能的控制适应性:维护对系统修改的控制完善性:完善现有系统预防性:防止系统性能下降到不可接受的程度,11.2 维护的本质谁执行维护,单独的维护小组更加客观更容易将一个系统应该如何运转与它实际是如何运转区别开来开发人员用一种易于维护的方式来构建系统有时过于自信于他们对系统的理解,不愿意更新文档,11.2 维护的本质小组责任,理解系统在文档中找到信息保持系统文档是最新的扩展现有的功能,以适应新的或变化的需求发现问题或系统失效的根源,回答关于系统运行方式的问题找到并改正故障重构设计和代码构件重新编写设计和代码构件删除不再有用的设计和代码构件维护对系统作出的改变,11.2 维护的本质维护时间的使用,维护工作量的分布图(Lientz and Swanson),11.5 维护技术和工具,配置管理配置控制委员会CCB变更控制,11.5 维护技术和工具配置控制过程,当用户、客户或开发人员发现了一个问题,他们将问题记录在一张正式的变化控制表中 将提出的变更报告给配置控制委员会CCB 开会讨论这个问题:决定将影响到谁将为实现变化所必需的资源支付费用CCB 讨论可能的问题根源,改变的范围和实现它们预计的时间,分配优先级别或者严重性级别 分析员用一个测试副本进行工作分析员与程序资料员合作,使所有的改变安装在运转的系统中分析员归档变更报告,11.5 维护技术和工具变更控制问题,同步:变更是何时进行的?标识:由谁进行的变更?命名:系统的那个构件被改变了?认证:正确地进行了变更吗?授权:是谁授权进行的变更?行程安排:变更通知了谁?取消:谁能取消改变请求?委托:谁对变更负责?估价:改变的优先权是什么样的?,11.5 维护技术和工具 影响分析,对与变化相关的多项风险所进行的评估,包括对资源、工作量和进度所造成的影响进行的评估 帮助控制维护成本,11.5 维护技术和工具 测量变化的影响,工作产品:是其变化有重要影响的开发制品垂直可跟踪性:表示工作产品中各部分之间的关系 水平可跟踪性:表示工作产品集合的构件之间的关系,11.5 维护技术和工具 水平可跟踪性,说明了如何确定相关工作产品之间的图形关系和可跟踪性链接,11.5 维护技术和工具维护的基础图,11.6 软件再生,文档重构:对原代码进行静态分析,给出更多的信息重组:改变代码结构 逆向工程:根据代码重新创建设计和规格说明信息再工程:对现有工程进行逆向工程,接着再改变规格说明和设计以完成逻辑模型;然后,根据修改的规格说明和设计生成新的系统,11.6 软件再生分类,下图说明4种类型的软件再生之间的关系,11.6 软件再生文档重构,第一步是将代码提交给一个分析工具输出可能包括:构建调用关系类层次数据接口表数据字典信息数据流表或数据流图控制流表或控制流图伪代码测试路径构件和变量的交叉引用,11.6 软件再生文档重构,下图说明了文档重构过程,11.6 软件再生重组活动,解释源代码以及用内部形式表示源代码 利用转换规则来简化内部表示重新生成结构化的代码,11.6 软件再生重组活动(continued),下图解释重组中的三个主要活动,11.6 软件再生逆向工程,尽量基于软件规格说明和设计方法恢复工程性信息 逆向工程被广泛使用,仍然存在一些主要的障碍 实时系统的问题极端复杂系统,11.6 软件再生逆向工程过程,下图说明了逆向工程过程,11.6 软件再生再工程,是扩展的逆向工程在不改变整个系统功能的前提下,生产新的软件源代码 再工程步骤系统进行逆向工程修改并完成软件系统模型生成新系统,11.6 软件再生再工程过程,下图说明了再工程的过程,