《[精选]第6章软件维护与再工程7319.pptx》由会员分享,可在线阅读,更多相关《[精选]第6章软件维护与再工程7319.pptx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第6章章 软件维护与再工程软件维护与再工程l软件维护的概念软件维护的概念l软件维护的活动软件维护的活动l软件的可维护性软件的可维护性l软件再工程软件再工程1六盘水师范学院 孙新杰6.1 软件维护的概念软件维护的概念 当软件系统在实际环境被用户使用时,软件开发宣告结当软件系统在实际环境被用户使用时,软件开发宣告结束。但软件总是要变化的,在软件交付使用后修改软件的过束。但软件总是要变化的,在软件交付使用后修改软件的过程称为软件维护。程称为软件维护。一般的软件维护不包括重大的体系结构的改变,变更一般的软件维护不包括重大的体系结构的改变,变更的实现方法一般是修改已有的系统构件以及在必要的地方添的实现
2、方法一般是修改已有的系统构件以及在必要的地方添加新构件到系统中。加新构件到系统中。1、软件维护的分类、软件维护的分类 改正性维护:修改软件缺陷。改正性维护:修改软件缺陷。适应性维护:适应变更的操作环境(硬件、操作系统适应性维护:适应变更的操作环境(硬件、操作系统 平台、其他支持软件)。平台、其他支持软件)。增强性维护:系统需求改变(机构因素、业务改变)。增强性维护:系统需求改变(机构因素、业务改变)。2六盘水师范学院 孙新杰 Lientz和和Swanson(1980)对维护的工作量做过调查,对维护的工作量做过调查,如图所示。如图所示。Nosek和和Palvia(1990)在十年后给出的数据与在
3、十年后给出的数据与此相似。此相似。适应性维护和增强适应性维护和增强 性维护占了绝大部分工性维护占了绝大部分工 作量。维护是系统开发作量。维护是系统开发 过程的自然延续,同样过程的自然延续,同样 也涉及到需求描述、设也涉及到需求描述、设 计、实现和测试活动。计、实现和测试活动。3六盘水师范学院 孙新杰2、维护的成本、维护的成本 维护成本和开发成本的比例在不同的应用域中是不维护成本和开发成本的比例在不同的应用域中是不同的。同的。Guimaraes(1983)的研究表明,对于业务应用系统,的研究表明,对于业务应用系统,维护成本和系统开发成本大体相等。对于嵌入式实时系维护成本和系统开发成本大体相等。对
4、于嵌入式实时系统,维护费用是开发成本的四倍以上。统,维护费用是开发成本的四倍以上。带来高维护费用的关键因素:带来高维护费用的关键因素:人员的不稳定人员的不稳定 合同责任合同责任 维护人员技术水平维护人员技术水平 系统结构衰退系统结构衰退 遗留系统的结构受到频繁变更的破坏;没有使用现遗留系统的结构受到频繁变更的破坏;没有使用现代的软件工程技术开发;文档不全、不一致;没有采用代的软件工程技术开发;文档不全、不一致;没有采用配置管理,系统变更时在寻找系统构件的合适版本上浪配置管理,系统变更时在寻找系统构件的合适版本上浪费时间。费时间。4六盘水师范学院 孙新杰 Belady和和Lehman提出了一个计
5、算维护工作量的模型:提出了一个计算维护工作量的模型:MpKe(c d)其中其中 M:软件维护所有的工作量;软件维护所有的工作量;p:生产性工作量(分析、设计、编码及测试);生产性工作量(分析、设计、编码及测试);K:经验常数;经验常数;c:复杂程度;复杂程度;d:维护人员对软件的熟悉程度。维护人员对软件的熟悉程度。该模型描述了影响维护的诸多因素中重要的关系。如该模型描述了影响维护的诸多因素中重要的关系。如果一个系统开发没有遵循软件工程原则,软件结构不好,果一个系统开发没有遵循软件工程原则,软件结构不好,c的值就会很高,再加上维护人员对软件的不熟悉,的值就会很高,再加上维护人员对软件的不熟悉,d
6、的值的值很低。结果是,维护的成本呈指数级的增长。很低。结果是,维护的成本呈指数级的增长。5六盘水师范学院 孙新杰 如何降低软件维护的费用?如何降低软件维护的费用?(1)从从开开发发阶阶段段的的一一开开始始就就按按质质量量标标准准构构建建系系统统,给给予予“可可维维护护性性”属属性性以以足足够够的的重重视视,这这样样可可以以使使系系统统的的整整个个生生命命周周期期成成本本减减少少。下下图图说说明明了了这这个个问问题题。系系统统1在在开开发发成成本本中中多多投投入入$25000,用用于于提提高高系系统统的的可可维维护护性性,结果在整个生命周期中节省了结果在整个生命周期中节省了$100 000的维护
7、成本。的维护成本。6六盘水师范学院 孙新杰 (2)采采用用演演化化式式的的系系统统开开发发模模型型(如如增增量量、螺螺旋旋),建立能结合新需求而演化和变更的系统。,建立能结合新需求而演化和变更的系统。(3)实施软件再工程,改善系统结构,提高可维)实施软件再工程,改善系统结构,提高可维护性。护性。7六盘水师范学院 孙新杰6.2 软件维护活动软件维护活动 Pfleeger和和Bohner(1990)提出了软件维护的一种模型,提出了软件维护的一种模型,其中包含了度量的反馈,见下图:其中包含了度量的反馈,见下图:8六盘水师范学院 孙新杰 该图说明了当请求进行一些变更时要执行的活动,该图说明了当请求进行
8、一些变更时要执行的活动,底部带标注的箭头代表提供的度量信息,管理人员利底部带标注的箭头代表提供的度量信息,管理人员利用这些信息决定什么时候和怎样进行变动。用这些信息决定什么时候和怎样进行变动。维护活动的一般过程:维护活动的一般过程:(1)变更分析)变更分析 分析各种变更带来的的负面影响:分析各种变更带来的的负面影响:产生不正确或不完整的补丁软件、结构很差的设产生不正确或不完整的补丁软件、结构很差的设计与编码、构件不标准等等。计与编码、构件不标准等等。这些负面影响使软件复杂性增加,更不易理解。这些负面影响使软件复杂性增加,更不易理解。因此对变更的成本、影响要进行分析。因此对变更的成本、影响要进行
9、分析。(2)理解变更,规划新版本)理解变更,规划新版本 根据变更的类型(缺陷修正、平台适应或系统增根据变更的类型(缺陷修正、平台适应或系统增强),决定哪些变更在下一个版本中完成。强),决定哪些变更在下一个版本中完成。9六盘水师范学院 孙新杰 (3)实现变更)实现变更 分析系统变更的需求(如有必要,可对提出的变更分析系统变更的需求(如有必要,可对提出的变更建立原型),对系统构件重新设计,编码、测试。软建立原型),对系统构件重新设计,编码、测试。软件开发中重要的配置管理思想在这里同样适用。件开发中重要的配置管理思想在这里同样适用。对于紧急变更,保证更快速度完成比保证变更过程对于紧急变更,保证更快速
10、度完成比保证变更过程规范化更重要。规范化更重要。(4)影响分析)影响分析 维护活动中改动的是需求、设计与代码构件、测维护活动中改动的是需求、设计与代码构件、测试用例以及文档等工作产品。一个工作产品的质量可试用例以及文档等工作产品。一个工作产品的质量可能影响到其他工作产品,能影响到其他工作产品,Pfleeger(1990)提出必须建提出必须建立并跟踪工作产品之间的关系,帮助我们评估一个构立并跟踪工作产品之间的关系,帮助我们评估一个构件的变更对所有其他构件的影响。下图展示了工作产件的变更对所有其他构件的影响。下图展示了工作产品之间的关系及可追踪性:品之间的关系及可追踪性:10六盘水师范学院 孙新杰
11、R1R2R3RiD1D2D3Dj.水平追踪连接水平追踪连接C1C2C3Ck.T1T2T3Tn.垂直追踪连接垂直追踪连接需求需求设计设计代码代码测试测试工作产品的追踪图工作产品的追踪图11六盘水师范学院 孙新杰 其中:其中:每个矩形框内的结点:表示为该阶段产生的工作产每个矩形框内的结点:表示为该阶段产生的工作产品或构件。品或构件。构件及之间的实线箭头:构成了构件及之间的实线箭头:构成了度量产品的垂直跟度量产品的垂直跟踪图踪图。虚线箭头连接的图:构成了系统的虚线箭头连接的图:构成了系统的水平跟踪图水平跟踪图,代,代表了对变更的一个表了对变更的一个过程的度量过程的度量。在某一阶段内(矩形框内)的产品
12、变更前后分别对在某一阶段内(矩形框内)的产品变更前后分别对以下度量指标求值:以下度量指标求值:结点总数结点总数 指向一个结点的边数(该结点的入度)指向一个结点的边数(该结点的入度)一个结点发出的边数(出度)一个结点发出的边数(出度)环路数。环路数。12六盘水师范学院 孙新杰 Pfleeger提出计算最小路径集,如果软件变更后覆提出计算最小路径集,如果软件变更后覆盖的路径增加,或者结点的入度、出度增加,则系统盖的路径增加,或者结点的入度、出度增加,则系统会更复杂、更难于维护。利用此信息,维护组可能决会更复杂、更难于维护。利用此信息,维护组可能决定用另一种方式实现或者取消该变更。定用另一种方式实现
13、或者取消该变更。每一对工作产品:每一对工作产品:需求产品与设计产品,需求产品与设计产品,设计产品与代码产品,设计产品与代码产品,代码产品与测试用例,代码产品与测试用例,在两者之间形成关系子图,度量规模和复杂性关在两者之间形成关系子图,度量规模和复杂性关系,从而得出负面影响。还可浏览整个水平跟踪图,系,从而得出负面影响。还可浏览整个水平跟踪图,了解变动后总的可追踪性变得更复杂还是简单了。了解变动后总的可追踪性变得更复杂还是简单了。13六盘水师范学院 孙新杰6.3 软件可维护性软件可维护性 软件的可维护性、可靠性和可用性是衡量软件质量的软件的可维护性、可靠性和可用性是衡量软件质量的几个主要特性,是
14、用户最关心的几个问题。几个主要特性,是用户最关心的几个问题。软件可维护性可定性地定义为:维护人员理解、改正、软件可维护性可定性地定义为:维护人员理解、改正、改动和改进这个软件的难易程度。改动和改进这个软件的难易程度。1 1、用于衡量可维护性的软件特性:、用于衡量可维护性的软件特性:可用下面可用下面 7 7 个质量特性来衡量:个质量特性来衡量:可理解性、可测试性、可修改性、可靠性、可移植性、可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。可使用性和效率。对于不同类型的维护,这对于不同类型的维护,这7 7种特性的侧重点也不相同。种特性的侧重点也不相同。要将这些质量要求贯彻到各开发阶
15、段的各步骤中。软件的要将这些质量要求贯彻到各开发阶段的各步骤中。软件的可维护性是产品投入运行以前各阶段针对上述各质量特性可维护性是产品投入运行以前各阶段针对上述各质量特性要求进行开发的最终结果。要求进行开发的最终结果。14六盘水师范学院 孙新杰 开发阶段开发阶段 可维护性因素可维护性因素 需求分析需求分析 明确明确维护维护的范的范围围和和责责任。任。检查检查每条需求,分析每条需求,分析维护时维护时可能需要的支持。可能需要的支持。明确哪些明确哪些资资源可能会源可能会变变化以及化以及带带来的影响。来的影响。了解系了解系统统可能的可能的扩扩展与展与变变更。更。设计阶设计阶段段 设计设计系系统扩统扩展
16、、展、压缩压缩或或变变更的方法(如将更的方法(如将变动变动 部分与部分与稳稳定部分分离)。定部分分离)。做一些做一些变变更或适更或适应应不同不同软软硬件硬件环环境的境的实验实验。遵循高内聚、低耦合原遵循高内聚、低耦合原则则。设计设计界面不受系界面不受系统统内部内部变变更的影响。更的影响。每一个模每一个模块块只完成一个功能。只完成一个功能。15六盘水师范学院 孙新杰 编码阶编码阶段段 检查检查源程序与文档的一致性。源程序与文档的一致性。检查检查源程序的可理解性。源程序的可理解性。源程序是否符合源程序是否符合编码规编码规范。范。测试阶测试阶段段 维护维护人人员员与与测试测试人人员员一起按照需求文档
17、和一起按照需求文档和设设 计计文档文档测试软测试软件的有效性、可用性。件的有效性、可用性。维护维护人人员员将收集的出将收集的出错错信息分信息分类统计类统计,为为今今 后的后的维护维护奠定基奠定基础础。16六盘水师范学院 孙新杰2、可维护性的度量、可维护性的度量 (1)使用质量检查表度量一个可维护性的软件的)使用质量检查表度量一个可维护性的软件的7种特种特性。质量检查表是用于测试程序中某些质量特性是否存性。质量检查表是用于测试程序中某些质量特性是否存在的一个问题清单,检查者对表上的每一个问题,回答在的一个问题清单,检查者对表上的每一个问题,回答“是是”或或“否否”。(2)间接地度量可维护性(面向
18、时间的度量):)间接地度量可维护性(面向时间的度量):察觉到问题所耗的时间;察觉到问题所耗的时间;分析问题所用的时间;分析问题所用的时间;形成修改说明所需时间;形成修改说明所需时间;修改所用时间;修改所用时间;局部测试所用时间;局部测试所用时间;整体测试所用时间;整体测试所用时间;维护复审所用时间;维护复审所用时间;完全恢复所用时间。完全恢复所用时间。有关设计结构和软件复杂性的度量也可间接说明软件有关设计结构和软件复杂性的度量也可间接说明软件的可维护性。的可维护性。17六盘水师范学院 孙新杰3、如何提高软件的可维护性、如何提高软件的可维护性 (1)建立明确的软件质量目标。)建立明确的软件质量目
19、标。有一些特性是相互促进的,有一些是相互矛盾的,有一些特性是相互促进的,有一些是相互矛盾的,根据用途不同或计算机环境不同,确定最重要的特性。根据用途不同或计算机环境不同,确定最重要的特性。(2)使用先进的开发技术和工具。)使用先进的开发技术和工具。传统方法开发的软件结构紧密相关于所要完成的功传统方法开发的软件结构紧密相关于所要完成的功能,结构不稳定。能,结构不稳定。(3)建立明确的质量保证措施。)建立明确的质量保证措施。在各里程碑处检查与可维护性相关的软件特性。在各里程碑处检查与可维护性相关的软件特性。(见下图)(见下图)18六盘水师范学院 孙新杰各里程碑处对与可维护性相关的软件特性的检查:各
20、里程碑处对与可维护性相关的软件特性的检查:(4)选择易理解、易编程的语言。)选择易理解、易编程的语言。(5)建立完整、一致和正确的文档。)建立完整、一致和正确的文档。分析分析设计设计编码编码测试测试验收验收配置配置复审复审可靠性可靠性可移植性可移植性可用性可用性可理解性可理解性可修改性可修改性可测试性可测试性可理解性可理解性可修改性可修改性可移植性可移植性效率效率可靠性可靠性效率效率完整性完整性一致性一致性可理解性可理解性19六盘水师范学院 孙新杰6.4 软件再工程软件再工程 在许多企业中,大型软件的使用时间多为在许多企业中,大型软件的使用时间多为10年以上,年以上,维护这些软件是一个挑战!维
21、护这些软件是一个挑战!如一个保险公司使用多种实现语言在不同平台上支持如一个保险公司使用多种实现语言在不同平台上支持许多不同的应用程序,例如有一个应用程序处理某种类型许多不同的应用程序,例如有一个应用程序处理某种类型的保险单、保单持有人信息、保险统计与记帐信息。这样的保险单、保单持有人信息、保险统计与记帐信息。这样的保单可能要维持数十年。有时不到最后一个保单持有人的保单可能要维持数十年。有时不到最后一个保单持有人死亡并且每一项索赔都得到支付,是不可能报废软件的。死亡并且每一项索赔都得到支付,是不可能报废软件的。这些软件有的已老化,虽然经常出错,但对业务处理这些软件有的已老化,虽然经常出错,但对业
22、务处理提供了有力的支持。企业还要依赖这些系统,却很难决定提供了有力的支持。企业还要依赖这些系统,却很难决定怎样使这些系统更易于维护。其选择可能是扩充或者用新怎样使这些系统更易于维护。其选择可能是扩充或者用新技术替换;每种选择都希望在成本尽可能低的情况下增加技术替换;每种选择都希望在成本尽可能低的情况下增加软件质量。软件质量。因此因此软件再工程软件再工程是试图提高当前系统(或称是试图提高当前系统(或称遗留系统遗留系统)的总体质量、对它们进行重构的工程。的总体质量、对它们进行重构的工程。20六盘水师范学院 孙新杰1、遗留系统、遗留系统 遗留系统是仍然提供必要的业务服务的旧系统。更遗留系统是仍然提供
23、必要的业务服务的旧系统。更换一个遗留系统是一个有风险的策略:换一个遗留系统是一个有风险的策略:遗留系留系统几乎没有完整的描述。几乎没有完整的描述。业务过程和程和遗留系留系统的操作方式的操作方式紧密的交密的交织在一起。在一起。重要的重要的业务规则(业务功能的功能的约束)束)隐藏在藏在软件内件内部。部。系系统的的结构衰退,理解系构衰退,理解系统的的难度加大。度加大。遗留系留系统的的评估与估与选择:低低质量、低量、低业务价价值:抛弃抛弃 低低质量、高量、高业务价价值:转换或替代或替代 高高质量、低量、低业务价价值:不不转换 高高质量、高量、高业务价价值:正常的系正常的系统维护 21六盘水师范学院 孙
24、新杰 2、软件再工程、软件再工程 软件再工程通过对遗留系统的改造使它们的质量得软件再工程通过对遗留系统的改造使它们的质量得到提高。与新开发软件之间的重要差别表现在开发的起到提高。与新开发软件之间的重要差别表现在开发的起点上。再工程开始于已有的系统,通过改善原始系统的点上。再工程开始于已有的系统,通过改善原始系统的结构和产生新的系统文档,使之更容易理解、更易于维结构和产生新的系统文档,使之更容易理解、更易于维护。实施软件再工程的优越性是:护。实施软件再工程的优越性是:减少重新开发软件的风险减少重新开发软件的风险 降低开发软件的成本降低开发软件的成本 再工程的成本比重新开发要小的多。再工程的成本比
25、重新开发要小的多。Ulrich(1990)引用了一个商业系统的例子:重新实现引用了一个商业系统的例子:重新实现预算预算5000万美元,经过再工程,仅用了万美元,经过再工程,仅用了1200万美元,是万美元,是重新开发费用的四分之一。重新开发费用的四分之一。因此当一个系统有很高的业务价值同时需要很高的因此当一个系统有很高的业务价值同时需要很高的维护费用时,对该系统实施再工程是个经济的办法。维护费用时,对该系统实施再工程是个经济的办法。软件再工程过程中的活动主要包括以下几个方面:软件再工程过程中的活动主要包括以下几个方面:22六盘水师范学院 孙新杰 文档重构文档重构(redocument)结构重组结
26、构重组(restructuring)逆向工程逆向工程(reverse engineering)再工程再工程(reengineering)23六盘水师范学院 孙新杰 (1)文档重构)文档重构对源代码进行静态分析,产生以下用图标和文本表示的信息:对源代码进行静态分析,产生以下用图标和文本表示的信息:构件的调用关系构件的调用关系 类或构件的层次关系类或构件的层次关系 数据接口表数据接口表 数据词典信息数据词典信息 数据流图、控制流图、实体数据流图、控制流图、实体-关系图、结构图关系图、结构图 伪代码伪代码 测试路径测试路径 构件与变量的交叉引用构件与变量的交叉引用 图形、文本、表格信息用来帮助维护人
27、员理解代码,图形、文本、表格信息用来帮助维护人员理解代码,评估一个系统是否需要结构重组。评估一个系统是否需要结构重组。建立文档是非常耗费时间的,仅对系统中当前正在改建立文档是非常耗费时间的,仅对系统中当前正在改变的那些部分建立有用的相关文档。变的那些部分建立有用的相关文档。重构(重构(restructuring)是在不改变软件基本功能和性能的前)是在不改变软件基本功能和性能的前提下,对软件内部的一种调整。提下,对软件内部的一种调整。24六盘水师范学院 孙新杰 (2)结构重组)结构重组 这里主要指里主要指软件重构,件重构,注重修改源代注重修改源代码和(或)数和(或)数据,使适据,使适应未来的未来
28、的变化,通常不修改化,通常不修改软件整体的体系件整体的体系结构。包括两方面:构。包括两方面:代代码重构:生成与源程序相同功能、但具有更高重构:生成与源程序相同功能、但具有更高质量的量的设计。如非。如非结构化的程序构化的程序转换为更更现代代语言的程序。言的程序。如如 Function Encapsulation Tool能能够将旧的将旧的C程序重构程序重构为C+程序。程序。数据重构:数据重构:对程序处理的数据作改变以反映程序变对程序处理的数据作改变以反映程序变更。更。先先进行源代行源代码分析的逆向工程,分析的逆向工程,评估所有包含数据估所有包含数据定定义、文件描述、文件描述、I/O以及接口描述的
29、程序以及接口描述的程序语句,从中抽句,从中抽取数据取数据项和和对象,象,获取关于数据流的信息,理解已取关于数据流的信息,理解已实现的数据的数据结构,然后构,然后对数据重新数据重新设计,包括物理修改:文,包括物理修改:文件格式或数据件格式或数据库类型的型的转换。25六盘水师范学院 孙新杰 (3)逆向工程)逆向工程 是一个分析程序的过程,利用工具从现有的是一个分析程序的过程,利用工具从现有的程序中抽取数据、体系结构和过程的设计信息。程序中抽取数据、体系结构和过程的设计信息。逆向工程的关键在于它从详细的源代码实现逆向工程的关键在于它从详细的源代码实现中抽取出抽象说明的能力。抽象层次可以有以下中抽取出
30、抽象说明的能力。抽象层次可以有以下几级:几级:导出实现过程的设计表示。如流程图、语法导出实现过程的设计表示。如流程图、语法树、符号表等。这是一种低层的抽象。树、符号表等。这是一种低层的抽象。导出程序和数据的结构信息,即程序和数据导出程序和数据的结构信息,即程序和数据成分之间相互依赖关系的信息。如程序结构图、成分之间相互依赖关系的信息。如程序结构图、实体实体-关系图。这是一种稍高层次的抽象。关系图。这是一种稍高层次的抽象。26六盘水师范学院 孙新杰 导出程序功能和运行行为的信息。如对象模导出程序功能和运行行为的信息。如对象模型或类图、数据流模型、状态转移图、协作图等。型或类图、数据流模型、状态转
31、移图、协作图等。是一种相对高层抽象。是一种相对高层抽象。导出系统整体结构、上下文环境和部署图的导出系统整体结构、上下文环境和部署图的信息。如包图、部署图等。这是一种高层抽象。信息。如包图、部署图等。这是一种高层抽象。随着抽象层次提高,更有助于理解程序中的随着抽象层次提高,更有助于理解程序中的信息。信息。对于实时系统,由于频繁的性能优化,实现对于实时系统,由于频繁的性能优化,实现与设计之间的对应关系比较松散,设计信息不易与设计之间的对应关系比较松散,设计信息不易抽取。抽取。27六盘水师范学院 孙新杰 (4)再工程(正向工程)再工程(正向工程)使用现代软件工程方法和在逆向工程中获得的信息对系统进使
32、用现代软件工程方法和在逆向工程中获得的信息对系统进行重构或产生新的软件源代码。行重构或产生新的软件源代码。如系统体系结构的进化如系统体系结构的进化:为了支持分布式工作,将遗留系统的集中式计算资源向分为了支持分布式工作,将遗留系统的集中式计算资源向分布式计算模式转移,需要同时进行业务再工程和软件再工程。布式计算模式转移,需要同时进行业务再工程和软件再工程。数据库层数据库层管理来自客户应用的事务和查询。对数据库进行管理来自客户应用的事务和查询。对数据库进行重新设计之前,必须对现有的重新设计之前,必须对现有的DBMS的功能和数据库结构进行的功能和数据库结构进行逆向工程。逆向工程。业务规则层业务规则层
33、软件可同时驻留在客户端和服务器端,执行控软件可同时驻留在客户端和服务器端,执行控制和协调任务,以保证客户应用和数据库间的事务和查询符合制和协调任务,以保证客户应用和数据库间的事务和查询符合业务过程。业务过程。客户应用层客户应用层实现最终用户群所需的业务功能。很多情况下,实现最终用户群所需的业务功能。很多情况下,大型机应用系统可被分割为小的桌面系统,之间的通信有业务大型机应用系统可被分割为小的桌面系统,之间的通信有业务规则层控制。规则层控制。28六盘水师范学院 孙新杰 3、软件再工程的问题与前景、软件再工程的问题与前景(Pfleeger)(1)需要自动化工具的支持)需要自动化工具的支持 有可以标
34、识、分析并提出源代码中的信息的工具,有可以标识、分析并提出源代码中的信息的工具,但它们不能重构、获取及表达设计抽象这些没有直接表但它们不能重构、获取及表达设计抽象这些没有直接表示在源代码中的信息。软件主要体系结构的变更或对系示在源代码中的信息。软件主要体系结构的变更或对系统数据管理的重新组织往往不能自动执行。统数据管理的重新组织往往不能自动执行。(2)源代码中没有包含原设计的太多信息,缺失的信息)源代码中没有包含原设计的太多信息,缺失的信息必须从推论中重构。逆向工程的尝试最好是容易理解的、必须从推论中重构。逆向工程的尝试最好是容易理解的、稳定领域中出现的信息系统。稳定领域中出现的信息系统。(3)在其他领域,只有用代码中隐含的信息、现有的设)在其他领域,只有用代码中隐含的信息、现有的设计文档、人员的经验以及问题域的全面了解,才能进行计文档、人员的经验以及问题域的全面了解,才能进行设计恢复。设计恢复。(4)设计表示法的形式化和领域模型的引入,将扩展我)设计表示法的形式化和领域模型的引入,将扩展我们理解与维护软件时用到的信息。期望转换技术的提高,们理解与维护软件时用到的信息。期望转换技术的提高,支持更多的应用领域并提高再工程的自动化。支持更多的应用领域并提高再工程的自动化。29六盘水师范学院 孙新杰