1、云南大学硕士研究生学位论文摘要摘要软件过程和软件演化己成为软件工程中的研究热点,软件演化过程作为它们交叉领域,也越来越受到重视。本文来源于国家自然科学基金项目“软件演化过程研究”,围绕如何对软件演化过程中任务的功能进行分解展开理论研究,设计并实现了演化过程工具(EPT)的任务功能分解部分。对任务功能进行分解的过程,是一个以知识库为基础,各部分协同工作的过程。为了使各部分协同工作,本文提出了任务功能分解部分的体系结构,使用面向对象的思想,对主要的类结构作了定义.三个基本分解规则是功能分解的基础,本文定义了分解规则的实现标准,并实现了三个基本分解规则。对分解过程中产生的分解树的主要特性进行了研究,
2、提出了分解树的生长算法,以及把分解树转换为符合EPDL定义的代码片断的转换算法。并对整个分解过程作了详细的介绍,讨论了建模者和知识库在整个分解过程中的重要性。最后,本文对整个任务功能分解部分工作的基础功能分解知识库展开讨论。详细介绍了知识库的结构,及知识的存储方式。为准确、高效地对知识库中可复用知识进行检索和管理,本文提出了谓词字典的概念,并作了一定的理论研究。在知识库中保存的可复用知识,并非都有用,为了淘汰使用较少的复用知识,充分复用有价值的复用知识,本文提出了一种对可复用知识的评估机制,该机制从知识的过去、现在和将来三方面充分评价一条可复用知识的复用价值。以可复用知识的复用价值为基础,又可
3、以对复用价值较低的知识进行淘汰。同时,根据复用价值的高低,在检索时把表分为三层,实现了虚拟多层表,提高了检索的效率。以本文的研究工作为基础,实现了演化过程工具(EP7中任务功能分解部分的主要功能,为演化过程建模提供了很好的支持。关键词:软件演化过程,演化过程工具,任务功能分解,知识库,知识评估云南大学硕士研究生学位论文Ab:劝mdAbstractSoftware evolution and software process are addressed intensive妙with fruitfulresearch results. The software evolution process,
4、 as the interdiscipline both of softwareprocess and software evolution, becomes a key area玩software engineering. Thispaper is part of the Software Evolution Process Project, funded勿National ScienceFoundation of China, discusses how to achieve the functional decomposition in ansoftware evolution proc
5、ess, and designs a model with full implementation.Functional decomposition is a process based on knowledge. In this paper anarchitecture for functional decomposition is proposed, and defminiton of the main classare given taking advantage of the 00 methodology. Three basic decompositional rulesare de
6、livered after the implementational criterions are defined. Also, the maincharacteristics of decomposition tree in decomposition process are given much closelooKbased on which the algorithm of growing and the transformation ofdecomposition tree into code segments in accordance with EPDL definition ar
7、eproposed.At the end, this paper focuses on the knowledge base for functionaldecomposition. The framework of knowledge base and the storage method ofknowledge are discussed, the concept of predicate dictionary is proposed to preciselyand efficiently retrieve and manage the reusable knowledge in the
8、base, and somefurther theoretical research has been done.In order to eliminate those under-used reusable knowledges and make full use ofthose valuable ones, this paper gives an evaluation mechanism for reusable knowledge.This mechanism evaluates a piece of reusable knowledge from the past, present a
9、ndfuture views. Based on reusable values, knowledges of lower rates are eliminated, andgraphs are mapped into three levels when retrieving, with each being the virtualmulti-level graph, and retrieval efficiency are promoted.Based on work previously mentioned in this paper, the main functions offunct
10、ional decomposition in EPT are achieved, providing necessary support forevolution process modeling.:Software evolution process, Evolution Process TooLdecomposition, knowledge base, knowledge evaluation声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得云南大学或其他教
11、育机构的学位或证明而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。研究生签名:牵盈日期:卫oo玉 .,Z5论文使用和授权说明本人完全了解云南大学有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交学位论文和论文电子版:允许论文被查阅或借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文:授权学校将学位论文的全部或部分内容编入有关数据库进行检索。(保密的论文在解密后应遵循此规定)研究生签名:导师签名:期:只“2s2s云南大学硕士研究生学位论文第一章引言I在另一方面,软件过程在提高软件演化的效率和质量方
12、面也发挥着重要的作用.正是如此,软件过程和软件演化的多学科交叉成为软件工程中的一个关键领域。一个良好的软云南大学硕士研究生学位论文第一章引言件过程能够有效地促进软件演化的成功实施,反之,将导致软件演化的失败。软件演化过程试图建立软件演化的整体任务框架,它是软件演化的工作流程。软件演化过程具有迭代、并发、交错地进行持续和非持续的改变、由反馈驱动和多层结构等特征。软件演化过程是描述软件的演化的软件过程,是具有演化特性的软件过程。李彤教授等人在软件的并行开发研究中提出了功能分解的交互式规则61,并在软件演化过程的研究中,把这一规则应用到了对任务功能的分解中。本文便是在这样的一个背景下,对功能分解在软
13、件演化过程中的应用做了进一步的扩展研究,并且力图实现相应的研究成果,使其成为计算机辅助软件工程(CASE)环境演化过程工具(EPT)的一个重要组成部分。1.2国内外研究现状在软件演化和演化过程的理论和实践方面,国内相关的研究都才刚刚起步,而国外在这些方面的研究中己经取得了一定的成果。Lehman, Ramil及其同事在软件演化的研究方面做出了很大的贡献。他们对大量工业项目的演化进行建模,这些项目均采用黑盒和系统动态技术,另外,他们还深入地探寻了这一演化现象;并试图论证反馈对过程行为和过程改进的影响闭;他们在较高的抽调层次上描述了现实世界中软件演化过程的系统动态模型。这些工作证明,软件演化过程是
14、一个反馈系统191。在FEAST调查中,一系列系统动态模型己经演变成为软件演化过程,他们也对此进行了描述。他们较早期建立的模型模拟了现实世界的过程,增加了这些过程的可读性,这些工作是对过程管理者的决策效率进行模拟的第一步91. Lehman, Ramil等人经过长期的观察研究,得出了一些定义,用它们来描述演化现象及其含义pot.他们建立了描述一个系统的动态模型,把该模型做为一个过程工具的核心,在制定决策时提供帮助,以实现系统生命周期的最优人员配置palWernick等人描述了现实世界中软件演化过程的高层系统动态模型。这一基于反馈的简单模型指明了全局过程对软件规范及其运用发展的影响“l . Ak
15、kanen等人主要探讨关键的演化步骤、步骤合理性及其输出结果,他们希望能够通过这些结论,就有关软件构件演化和维护的重要问题得出一些相关启示131功能分解是逻辑集成中的一个基本问题,它在软件工程和电子电路等领域都有广泛的应用。Ashenhurst1s1, Roth和Karp151认为对逻辑功能F(x,二、xn)的分解就是找到一个没有公共变量的子功能集A;(x;),和一个功能L,且F=L(Ao, “,A;, “).Mishchenko等人认为功能分解主要是把抽象概括的逻辑功能划分为一些相对独立又比较详细的子功能,同时各子功能之间通过协同工作来保持整体功能的完整云南大学硕士研究生学位论文第一章引言性
16、16 在软件工程领域,功能分解主要用于结构化设计,在面向对象的设计思想出现并成为主流设计思想后,功能分解方面的研究仍然在继续061071181,其中Wolber把功能分解引入到面向对象的设计中,增强了面向对象设计在实现,测试和维护阶段的能力181。李彤教授等人把功能分解的思想应用到软件过程中,对任务功能进行分解6。而在软件演化过程中对任务功能进行分解,并用软件辅助实现分解过程,目前在这方面还无研究先例。1.3论文的选题依据论文来源于项目组负责人李彤教授所主持的国家自然科学基金资助项目和云南省教育厅科研基金重点资助项目一“软件演化过程研究”,并得到了该项目的支持和资助。项目的主要内容如下: (1
17、)支持软件演化的软件过程模型表示工具:设计形式化的软件过程模型表示工具,支持对遗产软件演化过程的形式化及定量表示。 (z)支持软件演化的软件过程建模语言:基于上述模型表示工具,设计软件过程建模语言,支持对遗产软件规约的抽象表示,支持遗产软件演化技术与软件演化过程的集成。(3)支持软件演化的软件过程建模方法:提出软件过程建模方法,构造以角色为中心的、面向对象的、支持过程重用的软件演化过程模型,支持遗产软件的持续演化。 (4)软件演化过程构件:建立演化过程构件描述协议和构件库体系结构,支持演化过程构件进入演化过程构件库,进而支持过程的重用。 (5)软件演化过程裁剪与优化技术:建立基于过程模式的过程
18、裁剪技术,支持个性化软件过程的建立。建立基于过程度量的过程优化技术,提供对软件演化的有效支持。1.4论文的主要工作本文的中所有的研究和实践,都是以本项目组的负责人李彤教授及其他成员的研究成果为基础,进一步展开研究工作,并付诸实践。其主要内容如下:(1)结合软件的演化特性,把软件过程中对任务功能进行分解的方法61运用于软件演化过程,并实现了在建模者的干预下对演化过程中任务功能的半自动化分解。云南大学硕士研究生学位论文第一章引言(2)结合实际应用中的需要,对分解规则的理论系统做了一定的补充和完善,从更高的层次抽象出了分解规则的统一规范。(3)通过对分解树的扫描,使分解树能够自动地转化为符合软件演化
19、过程描述语言(EPDL)相应的代码片断,对在计算机的辅助下科学地实现软件演化过程建模提供了有力的支持。 (4)建立支持功能分解的知识库,实现有价值的分解知识的有效复用,并对知识库中的分解知识进行有效的管理。1.5论文的创新及意义(1)把任务功能分解的概念引入到软件演化过程的研究中,并结合软件的演化特性,对其进行了修改和完善。(2)提出了原子谓词字典的概念,为知识库中分解知识的有效存储和检索提供了基础。这为如何填补理论到实践间的差距,提供了一种有效的选择方案,并对演化过程建模中对任务功能的定义起到了一定的规范作用。 (3)提出了一种把分解树自动地转化为符合EPDL语法规则的代码片断的算法,提高了
20、为演化过程建模的自动化水平。 (4)规范了知识库中各种分解知识的存储和表示机制,为进一步的扩展和研究打下了基础。同时提出了一种对知识库中的知识进行复用性评价的标准和机制,对优化知识库的内容,提高EPT的实用性具有重要意义。1.6论文的组织本文中的以下各章将组织如下: 在第二章中,将介绍软件过程,软件演化和软件演化过程的基本概念和研究现状。包括软件过程的建模和描述语一言,以过程为中心的软件工程环境,软件再工程和软件演化过程的一些特性。在第三章中,主要介绍本文参与的项目的研究情况,本文将用到的一些关于演化过程的基础性的定义和理论,演化过程描述语言(EPDL),及整个演化过程工具(EPT)的体系结构
21、。 在第四章中,讨论了任务功能分解部分的设计思想。主要有整个部分的体系结构,及围绕体系结构展开的一些重要的类结构。 在第五章中,抽象出了一种分解规则在实现中的规范表示,并实现了三种基本的分解规则。通过对分解规则的不断应用,程序会构造出分解树来表示分解的云南大学硕士研究生学位论文第一章引言结果,并使分解树能自动地转换为代码片断. 在第六章中,将围绕功能分解的核心“知识库”进行讨论。知识库的体系结构是基础,提出原子谓词字典的概念,由此引申出知识库的检索机制,对可复用知识的评估机制。对知识库的管理也在讨论的范围内。在第七章中,回顾总结本文的工作,并对今后的研究方向做出展望.云南大学硕士研究生学位论文
22、第二章软件演化过程概述第二章软件演化过程概述2.1软件过程软件过程(software process)是软件生存周期中所涉及的一系列相关过程。软件过程为软件开发中的活动提供了一个管理框架,这些活动往往是难以管理的。不同的软件项目需要不同的软件过程。软件开发中的工作成果(程序,文档和数据等)可看作是软件过程中定义的活动的执行结果p92.1.1软件过程的概念1115011EC 12207信息技术一软件生存周期过程”标准中,“软件过程”被定义为一系列相关活动的集合,这些活动把输入转化为输出。“活动”这个术语覆盖了资源的利用。每个过程根据其自身的活动要素作进一步描述,而它的每个活动又根据组成该活动的任
23、务同样作进一步描述。因此,过程中的活动是一系列相关任务的集合。任务被表示为自定义说明、需求、建议或允许的操作等形式31 ISO将软件过程分成三类:主要过程类、支持过程类和组织过程类31。包括:(1)主要过程类:获取过程,供应过程,开发过程,运行过程,维护过程; (2)支持过程类:文档编制过程,配置管理过程,质量保证过程,验证过程,确认过程,联合评审过程,审核过程,问题解决过程; (3)组织过程类:管理过程,基础设施过程,改进过程,培训过程。概括起来说,软件过程是活动的集合,活动是任务的集合,任务是把输入转换为输出的操作。软件过程具有长周期性、分布式、异构等特性,是软件产品开发成功与否的关键性因
24、素,其能力的成熟度如何己成为衡量一个软件机构整体有效性的关键性尺度。因此,软件过程成为了当前研究的热点。2.1.2软件过程建模和描述语言软件过程建模语言(PMLs)和过程描述语言(PDLs)都是定义软件过程的工具,抽象出一些强大的过程语言是相当有必要的201由于软件过程所具有的复杂性,研究人员为此创建了许多语言,利用这些语言使得我们可以以一种精确并且易于理解的方式来表示软件过程所具有的众多特性和刻面211,比如像: (1)为了达到软件过程的某个目标,必须完成相应的活动(例如:开发和测云南大学硕士研究生学位论文第二章软件演化过程概述试一个模块); (2)过程中参与人员的角色(例如:软件分析师和项
25、目经理);(3)软件开发过程的产品的结构和性质(需求规约文档,编程模块,和测试案例):(4)使用的工具(例如:计算机辅助软件工程工具和编译器)。 同时,PML应该容许对过程的不完全的,非形式化的表达,甚至是部分地使用规约来表示211。目前,己有很多学者在进行过程建模和描述语言方面的研究。Osterweil等人曾以Ada, APPL/A221231为基础,建立了一种过程建模语言,证明了只要在语言中提供一些灵活的数据结构,软件过程也是可以通知程序语言来定义的。Warboys等人从人们的思维习惯出发,设计出了第二代过程语言,其意义就在于把新的和现有的模型片段很好地结合在了一起241. Atkinso
26、n等人提出了一种演化的过程建模语言,并把它用于了分布式的软件开发121. Cook等人提出了一种称为“过程确认”的技术,用来揭示模型和具体执行间的差异,一旦在高层的度量中出现问题,就可以通过这一技术得到问题的细节【2司.总之,已经出现了许多软件过程建模语言,他们都能够有效地支持软件过程及其执行、确认和分析.2.13以过程为中心的软件工程环境用于支持软件过程的工具和支撑环境是非常重要的。支持软件过程模型的生成和利用的环境称为PSEE(process-centred software engineeringenvironment),即以过程为中心的软件I程环境。Fuggetta认为1211: (1
27、) PSEE应该是非插入式的,它应该能够以递增的方式进行配置:(2) PSEE应该容许不一致性和差错; (3) PSEE应该向软件工程师提供一个对软件开发过程清晰的描述(从多个不同的角度)。 目前己经形成了一种观念,我们可以利用某种过程语言来对软件过程进行编码,生成过程模型,并通过PSEE发布211。同时也己开发出了许多环境的原模型。Pohl等人提出TPRIME(Process-Integrated Modelling Environments)的框架,它通过过程整合工具(processs-integrated tools)加强了软件过程中方法的指导作用271Padberg等人使用过程仿真的手
28、段,向人们展示了如何在软件项目管理中安排进度。他们提出了针对软件项目且经过裁剪的模拟器,它在时间上是离散的,并以项目的进度安排策略作为输入。这一模拟器能够很快地把项目进展和完成时间反馈给用户281。此外还有许多不同的PSEEs对软件过程进行支持。在PSEEs中,过程模型和以过程为基础的语言扮演了重要的角色。这些成果在很大程度上推动了软件过云南大学硕士研究生学位论文第二章软件演化过程概述程建模,过程的执行、改进和管理工作的研究。2.2软件演化“演化”这个术语一般是指在性质和特性方面的递增式的改变。在某种意义上来说,这个在某个方面或某些方面属性的改变的过程,导致了新特性的出现或进行改进。一般来说,
29、这种改变都是诸如改变类的成员以适应环境的改变。改变会使得它们更有用或更有意义,而且在某种程度上会增加它们的价值。与此同时,演化也会去掉一些不合适的特性pot 与软件演化相关的概念还包括软件再工程和软件维护。“软件再工程”意味着把用户要求的新功能添加到已经存在的软件中。再工程一般包括三个阶段:逆向工程,功能重构和正向工程。软件演化实际上就是引导持续的软件再工程的过程。换句话说,在很大程度上,软件演化就是重复的软件再工程291因此,再工程可看作是软件演化中一个非常重要的步骤和技术。所谓软件维护,是指在软件交付使用后所进行的修改,包括对错误的更正,提高性能或其它属性,以及使软件产品适应改变的环境【3
30、01。维护试图保持系统能有效地执行它的功能。然而,维护意味着只是在原有实现的基础上简单的修正错误。这种做法忽视了迅速改变的环境和需求所带来的问题。以上这些考虑暗示了“维护”这个应该被“再工程”或“演化”取代291。一些研究人源和实践者都把演化作为了维护的更好替代者301。从软件过程的角度和观点看,软件维护可看作是细粒度和局部的再工程。以对软件演化数十年的研究为基础,Lehman定义了E一型程序这种计算机程序,用来解决实际应用领域中的一些问题311。以E一型程序的定义为基础,Lehman提出了软件演化的八条规律321. (1)必须频繁地变化以适应要求。(2)软件的复杂度不断地增长。 (3)通过自
31、我调节以符合产品需求和过程特性。(4)在软件的生命周期中保持一定的组织稳定性。 (5)不同的版本之间保持一定的连贯性。(6)功能持续地增加。 (7)在没有严格的维护和适应性修改的情况下会出现质量衰退。(8)是一个反馈系统。2.3软件演化过程云南大学硕士研究生学位论文第二章软件演化过程概述软件演化过程是包含了软件演化和软件过程两个方面,是一个交叉学科,它表示一个软件过程,并且这一过程相应的软件处于演化中。演化过程模型表示对软件演化过程静态的抽象表述,而演化过程描述指的是对软件演化过程静态,详细且具体的表述。方法学,技术手段,工具,管理方式和文档都属于软件演化过程的范畴。描述不同的软件演化需要不同
32、的软件演化过程。程序、文档和数据等软件演化的产物都是软件演化过程中定义的各活动的执行结果。在过去的数年里,许多学者都投身于这一领域的研究中,做出了巨大的贡献,也取得了巨大的进步。在软件演化和软件过程的理论和实践方面的研究,Lehman, Ramil和他们的同事都取得了许多成果。经过三十多年的观察和思考,他们在FEAST/1和FEAST/2(Feedback, Evolution And Software Technology)项目研究中,总结出了软件演化的八条规律10311。他们对软件过程,尤其是反馈在管理和技术层面的影响有着深刻的理解。并且提出反馈是连接八条规律的纽带。他们的主要工作如下:
33、他们应用黑盒方法和系统动态技术,对大量业界项目的演化建模,对演化现象进行了深入地探索。并期望以此来证明反馈在过程行为和过程改进中的影响力闭。他们在较高的层次上描述了现实世界中软件演化过程的系统动态模型,这一工作表明了软件演化过程是一个反馈驱动的系统8。他们用软件演化过程来描述FEAST研究中开发的一系列系统动态模型。尽管早期的模型为了帮助人们增加对过程的了解,只是模拟了现实世界的过程,但这一工作还是向模拟过程管理者的决定所产生的影响迈出了坚实的一步191。他们描述了演化现象的一些刻面,以及演化过程的含义10l。他们描述了一种系统动态模型,对如何优化系统生命周期中的人员配置提供了支持u1。他们认
34、为,量化的过程模型在寻找E一型软件演化过程中的改进时,具有重要的作用,并且总结出了从FEAST项目中获得的经验,其中包括了一些建模的指导方针331.他们提出了一种建模方法,它强调模型的简单性,但必须能够为演化的计划编制和工具管理提供良好的基础。并且研究结果表明,建立这样的模型是很有意义的341. Ramil以捕获工作人员的努力,生产力和软件演化的度量方式间的关系为目标,建立模型,其中软件演化的度量方式是从经验数据集中总结出来351。他们提出了一种与大型机操作系统核心部分的演化有关的案例学习方式,并于八个不同的演化活动指示器为基础,提出了六种模型361Wemick等人描述了一种现实世界中软件演化
35、过程的较高层次的系统动态模型,这一简单的基于反馈的模型,证明了全局模型在软件的规约和执行的演化中的影响力1371。随后他们把这些模型结合成为一个单独的仿真模型,集中反映了把这些模型结合后的影响381云南大学硕士研究生学位论文第二章软件演化过程概述2.4小结今天,软件系统随着技术的革新和用户的需求而不断地变化着,软件在变化中经历着一个从不成熟到成熟的过程。软件过程和软件演化都已成为软件工程领域的研究热点,并出现了一系列具有重要意义的研究成果,极大地丰富了这方面的理论。随着研究的深入和计算机技术的发展,二者的联系也越来越紧密,作为交叉领域的软件演化过程的研究也逐步兴起.并在软件工程的理论体系中发挥
36、着越来越重要的作用,相信随着研究的深入和更多的研究成果的出现,软件演化过程将会在实际应用中出发挥出应有的价值。云南大学硕士研究生学位论文第三章任务功能分解的理论基础第三章任务功能分解的理论基础3.1霍尔逻辑在以逻辑学为基础的领域,逻辑主要用于描述系统所期望的一些特性,诸如较低层级的规约,临时的和随机的行为等等。逻辑也可以扩展应用到一些具体的规划构造中,以获得更广范围上的形式化。这种转化是通过一系列正确的求精步骤来实现的391霍尔逻辑已经具有一段很长的历史了,我们可以把它看作是对先序谓词积分的一个扩展,它包含了一些推理规则,用于对程序设计语言结构进行推理401。霍尔逻辑提供了证明程序是否与它的规
37、约保持一致性的方法。虽然霍尔逻辑并不能在较高的层次上详细地对系统进行说明,但在较低层次的规约中,它具有明显的优势391。在霍尔逻辑中,霍尔三元组:P S Q被用来描述程序S的语义。P和Q都断言,用于描述S中出现的变量的特性。P称之为S的前断言,Q称之为S的后断言。霍尔三元组则用来表示,如果在S执行前P为真且S的执行终止,那么在S执行终止后,Q也为真ail相似的工作还包括弱前断言,它在软件的规约和转化中是一种比较合适的形式化方法。一个前断言描述了程序的初始状态,后断言描述了终止后的状态。通过使用断言逻辑的语义和其它一些适当的形式化逻辑方法,就可以完成对程序的转化(421431在任务功能的分解中,
38、正是用霍尔逻辑来描述一个任务的功能,并通过对断言的变换来实现对一个功能的分解。3.2软件演化过程元模型(EPMM) 4413.2.1软件演化过程的基本特性在传统的软件维护中,对软件的改动粒度一般都比在软件演化中的大,但是,软件演化中各种粒度的改动总是连续地或间断地发生。因此,演化过程模型必须具备对演化中产生的各种特性的描述能力,为了描述软件的各种改动,还应该比传统的模型定义更多的动态成分。经过观察和分析,我们发现软件演化过程存在以下一些特性:(1)迭代。因为演化需要对软件持续地进行改动32391,许多活动和活动集被云南大学硕士研究生学位论文第三章任务功能分解的理论基础重复地执行,且其频度要远高
39、于在传统的软件开发中的频度,使迭代成为了软件演化过程中最明显的现象之一。(2)并发.于传统的软件开发相比,在软件演化过程的不同层面上,都存在着更多需要并发执行的活动,具有很高的并发性。因此有必要在软件演化中对其进行实时控制和调度。并发也成为了软件演化过程中最明显的现象之一。(3)不断地进行持续的和间歇性的改变。无论是在遗传学上还是其它的自然科学中,持续性的和非持续性的改变都是本质的特性,在软件的演化中也不例外。所以,持续的和间断的改变相交错的特性,在软件演化过程中扮演了重要的角色1451(4)反馈驱动。虽然造成演化的原因很复杂,但演化的动机还是来自于对现有情况的不满而提出的新需求。因此,演化是
40、由来自于用户和使用环境的反馈来驱动的7(81(5)多层的体系结构。从不同的角度,人们可以观察到模型中不同的层面及其中的活动。为了降低这种复杂度,应该对模型进行分层,从抽象的高层到具体的低层逐步求精。因此,演化过程模型是复杂且多层的。3.2.2软件演化过程中静态成分的定义软件演化过程元模型(Software Evolution Process Meta-model, EPMM)是用来定义软件演化过程模型(Software Evolution Process Modal, EPM)的一种工具,在EPMM的设计过程中,需要考虑以下一些因素:(1)元模型中应该嵌入在上一小节中提到那些特性。(2)在软件
41、演化中,不同的角色相互协作,推动着遗产系统的演化,开发、管理和演化之间的整体性更强。因此,软件演化过程中活动之间的交互是相当频繁的。一个软件演化过程模型应该为整合软件演化过程中的不同活动提供一个框架,所以在元模型中应该支持对交互和集成的定义。(3)根据前面的特性分析和Petri网自身的特点可知,Petri网是很适合于对软件演化过程建模的。因此,我们选用Petri网作为主要的形式化方法来定义软件演化过程的元模型。(4)为了适应建模要求,我们使用面向对象技术和霍尔逻辑对Petri网进行扩展。并加入了抽象数据类型和继承机制,以便能够更好地定义活动:加入霍尔逻辑则是为了定义任务。这些扩展都被嵌入到了E
42、PMM的形式化定义中。(5)通常,软件演化过程都要比传统的软件过程复杂,所以这个元模型可以向下兼容,支持传统的软件过程。云南大学硕士研究生学位论文第三章任务功能分解的理论基础以上面所述的考虑为基础,我们设计了EPMM来定义软件演化过程模型。通过EPMM定义的模型称之为演化过程模型(EPMM)o EPMM和EPM都是形式化的过程模型,接下来,我们将对本文研究中所用到的一些EPMM中的形式化定义作一个介绍。定义3.1任务是一个四元组t=(Qi), Q2), Mi, Mo)当且仅当: (1) Ql和Q2都是先序谓词公式。(Ql叫做前断言,它定义了任务t被执行前的状态:Q2叫做后断言,它定义了任务t被
43、执行后的状态。 (2)A(F)=(Qi), (Q2)叫做断言,它定义了任务t的功能。(3) Mi是所有将会被任务t所接收的消息的集合。当t接收到一个消息的时候,任务就开始执行。(4) Mo是所有将由任务t发送的消息的集合。b m E Mo, m=(r, b)表示任务t在执行的时候发送了一个消息m给r. r称之为消息m的接收方。b称为消息体,是一些参数的集合。 消息的接收方可以是过程,活动,任务,条件(其定义请参看定义4.3)或角色。当消息“真”被发送给过程中的条件时,这些条件将保持为真并且驱动该过程执行。当活动中所有的任务都把消息“结束”发送给活动时,该活动样终止并进入非活跃状态。当一个消息的
44、接收方是一个过程或活动时,它包含的所有任务都将收到这个消息。活动是软件演化过程中最小粒度的成分,一个活动t如图3.1所示。消息集Mi价I m;,困回变量集变量集消息集Mo图3.1任务定义3.2活动是一个四元组a=(I, O, L, B)当且仅当:(1) 1,0和L分别叫做输入数据结构,输出数据结构和本地数据结构.云南大学硕士研究生学位论文第三章任务功能分解的理论基础(2) B叫做活动体,他即可以是一个软件过程P,也可以是包含主任务main的任务集合。这些任务或软件过程对数据结构1, O和L进行操作。主任务main是一种特殊的任务,它在接收到消息“执行”后,先于其它任务开始执行。 (3)一个活动
45、的定义是一个类,叫做活动类。当这一活动执行时,就会创建一个称之为活动对象的对象。定义33四元组E =(C, A; F, M)叫做软件过程系统当且仅当:(1) (C, A; F)是一张没有孤立节点的网,AUC44D.(2) C是条件的有限集合:IV cEC,称c为条件。(3) A是活动的有限集;VaEA,称a为活动,a的出现称之为a被执行或a被点火(4) Mg; 2C称为E的实例类,2C表示C的幂集。(5) b“aEA, 3mEM,使得a在m中具有让度。定义3.4设E=(C, A; F, M)是一个软件过程系统的一个实例且p=(C, A; F, Mo). Mo称为P的初始标记,。令MOEM(Mo
46、cC)是中在P中的每一个元素dEM,在相应的图中都用一个标志(黑点)来表示.我们把P称为一个软件过程。定义3.5全局模型是一个二元组g=(P, E),如果 (1) P是一个软件过程集。(2) ES是一个二元关系,表示P中具有的关系。E=(P, P )I P, p e P八P嵌入在P中。P称为P的一个子过程。此外,EPMM还定义了一些动态成分,由于与本文将要研究的内容关系无关因此不再对这些成分进行介绍。3.3软件演化过程描述语言(EPDL)I00I33.1 EPDL的设计目标软件演化过程描述语言(Software Evolution Process Description Language,EP
47、DL)是一种用来描述软件演化过程的计算机语言。由于通过EPMM定义的EPM是相当抽象的,不易于直接颁布,因此有必要为EPM补充一些必须的信息,EPDL就是以此为目的而设计的。云南大学硕士研究生学位论文第三章任务功能分解的理论基础为了更适当地描述演化过程,在设计EPDL时要考虑到如何使该语言充分捕获演化过程的各个方面的特征。为了更高效地支持软件演化,EPDL的设计目标如下:(1)简单:为了易于学习,这种语言应该使用一些比较直观的,简单的语法和语义,减小不必要的符号。(2)适应性:它应该适用于描述不同的软件演化和软件开发,而不只是局限于诸如管理信息系统之类的某种软件。(3)表达能力:该语言应该能够
48、对一个过程进行准确地描述,这样才有利于过程的颁布。(4)一致性:该语言应该与EPMM中的静态成分保持一致,在EPDL程序执行时,则可以描述EPMM中的动态成分。EPMM是EPDL的一个子集,通常EPMM要比EPDL抽象。3.3.2 EPDL的特征以上面所述的目标为基础,并高效地支持软件演化,EPDL具有以下一些特征: (1)动态性:因为软件演化过程是动态的,所以EPDL具有一些语法成分,用来定义任务,活动,过程和软件演化中的其它实体。在EPDL程序执行时,就自动地嵌入了动态特征。(2)并发性:在软件演化中存在着许多并发执行的成分,因此,EPDL从不同的粒度来定义这些并发性。(3)迭代性:EPD
49、L具有描述软件演化中的迭代的能力,这就对持续的改变提供了支持。(4)整合性:在软件演化中存在着许多角色,EPDL可能描述这些角色的行为及角色之间的协作,同时还能把软件演化过程中所有的成分整合在一起。因为有大量各种类别的信息要描述,EPDL可能描述软件演化中的所有成分及他们之间的关系。(5)模块性:软件过程也是软件且对软件过程的描述便是程序,作为一种语言,模块性是保证演化过程是好结构的基本特性。(6)抽象和求精:为了达到理想的粒度,EPDL可以对过程进行抽象的或是详细的描述。为了对一个粒度较大的过程求精,可以用详细的过程描述替代该过程中较抽象的活动。 (7)面向对象的计算机语言:EPDL具有面向对象的特点,是一种比EPMM更强大的计算机语言。 (8)模型便是程序:对一个演化过程的描述就是一个EPDL程序,反之亦然。云南大学硕士研究生学位论文第三章任务功能分解的理论基础3.3.3 EPDL的程序结构根据EPMM, EPDL的语法成分可以划分为四层:全局模型,过程,活动和任务。EPDL和结构和EPMM的一致。