采用更新的自动开发方法

文档序号:6478422阅读:132来源:国知局
专利名称:采用更新的自动开发方法
技术领域
本发明涉及一种采用更新的自动开发方法。
背景技术
复杂系统的开发要求解决问题以及增量设计的各个步骤。目标是要构造符合问题规约的解决方案规约。在软件领域中,客户需求规约使分析文档生成,再生成设计文档,并且随着期望程序的生成而结束。通过不断地解释构造途径,分析、设计和程序可以逐渐构造解决方案。这些步骤便于维护根据各个设计步骤产生的程序,并且能够升级作为客户需求函数的软件。
不考虑应用领域,可以利用适当的语言来形式化构造步骤及其结果,所述构造步骤及其结果在以下将被称为设计等级。设计等级,例如,可以采用UML(统一建模语言)模型的形式来表示。
可以根据变换规则来部分地产生作为在先设计等级的函数的所述设计等级。然而必须手动引入新的信息以便增强新创建的模型并且改进概念,从而收敛到为生成解决方案所期望的详细等级。
所述的增量方法可以借助于取自空中交通模拟领域的非常简化的例子来进行说明,并在图1中图解示出先行开发。此图包括三个设计等级1.第一设计等级被称作“问题规约”。在这个等级客户定义他的需求每架飞机的特征包括名称(A3XX)、乘客的数目(600)以及发动机的数目(4)。
2.用UML生成“问题分析”等级。该分析步骤还与所涉及的领域高度地相关。当完成此步骤时,还出现“飞机”、“乘客”和“发动机”的概念(在引号之间标引这些信息项,它们表示所考虑的设计等级的对象)。由于该分析步骤还出现诸如预订、乘客的姓名和国籍等新信息。这些新信息项改进先前设计等级的概念;但是它们不能被自动地推导出来而是根据设计者的选择而生成。
3.“解决方案设计”等级要更加“技术”。所使用的语言不再与航天航空领域相关,也不再与飞机或乘客的概念有关。重点是基于必须被模拟的播放器(计算机对象触发处理操作)的概念。在该等级以接近于可直接被计算机理解的语言(例如C++)而执行的动作被确切地定义。
在图1中先行开发,用细线或斜体字符示出的所有元素明确指出手动添加的信息。通过应用以下变换规则R1至R9来自动获得由粗线或加粗字符表示的所有信息·创建“问题分析”设计等级R1对于任何包括名称、乘客的数目以及发动机的数目的飞机描述符,所述算法包括a.以飞机(名称)的名义来创建定型目录“项目”,其包括i.被命名为“名称”的“飞机”定型类(其中,名称指的是飞机名称),ii.具有名称如“喷气式”的“发动机”定型类,iii.具有名称如“人”的“乘客”定型类。
b.在“飞机”定型类和“发动机”定型类之间创建名称为“动力化(motorization)”的关系(UML组成关系的链接),基数(数目/数字)为一个“飞机”定型类端,以及发动机数目值个“发动机”定型类端。
c.在“飞机”定型类和“乘客”定型类之间创建名称为“乘客”的关联链接,基数为一个飞机端,以及乘客数目值个“乘客”定型类端。
·创建“解决方案设计”的设计等级R2对于在“问题分析”等级的任何“项目”定型目录,所述算法包括a.在“解决方案设计”等级创建“设计”定型目录,其具有与“问题分析”设计等级的“项目”定型目录的名称相同的名称;b.创建“活动”定型“播放器”类;R3对于在“问题分析”等级的任何“飞机”定型类,所述算法包括
a.在“解决方案设计”等级创建无定型(stereotypeless)类,其具有与“问题分析”设计等级的“飞机”定型类的名称相同的名称;b.创建从新创建的无定型类到“活动”定型类的继承关系;R4对于在“问题分析”等级的任何“乘客”定型类,所述算法包括a.在“解决方案设计”等级创建无定型类,其具有与“问题分析”设计等级的“乘客”定型类的名称相同的名称;b.创建从新创建的无定型类到“活动”定型类的继承关系;R5对于在“问题分析”等级的任何“发动机”定型类,所述算法包括a.在“解决方案设计”等级创建无定型类,其具有与“问题分析”设计等级的“发动机”定型类的名称相同的名称;b.创建从新创建的无定型类到“活动”定型类的继承关系;R6对于在“问题分析”等级的任何非定型类,所述算法是a.在“解决方案设计”等级创建无定型类,其具有与“问题分析”设计等级的类的名称相同的名称;R7对于在“问题分析”等级的任何相关联链接的两个类A和B,所述算法包括a.在“解决方案设计”等级创建关联,所述关联通过变换算法链接发自A和B的类。基数(数字)和角色(名称)与“问题分析”设计等级的基数(数字)和角色(名称)相同;R8对于“问题分析”等级的类A的任何操作,所述算法包括a.在“解决方案设计”等级创建操作,其具有与“问题分析”设计等级的操作的名称相同的名称;b.通过变换算法把此操作与发自A的类相关联。
R9对于“问题分析”等级的类A的任何属性,所述算法包括a.在“解决方案设计”等级创建属性,其具有与“问题分析”设计等级的操作的名称相同的名称;c.通过变换算法把此属性与发自A的类相关联。
诸如在上面简单阐述的复杂系统的设计涉及几个设计步骤,并且可能要求多次迭代。在每次迭代,设计者重新评价他的选择,并进行修改以便改进他的模型。现在,变换规则的机制上述方面并不允许。当重新应用规则时,从构造的观点允许根据等级N来重构等级N+1从而进行修改,但是并不把所述修改与在等级N+1已经存在的信息结合,所述信息是预先创建并手动完成的。已经手动引入的所有信息在重新应用所述规则时丢失。
问题将是在下述约束下从一个设计等级N自动或半自动地到等级N+1(或更通常来说是从一个模型到另一个)·当重新应用所述规则时保存添加在下层等级N+1的信息;·保存并明确所有用于规则应用的信息,以便能够再现过程(此信息被称为规则的参数)。保存这些可以允许在不用与设计者进行新的交互作用的情况下,重新应用所述规则。
·此信息的保存不能用已知方法来实现。为了保持并升级设计等级这是有必要的,并且只能通过把变换与可追溯性耦合来完成,这种耦合形成了本发明的主题,如下文所述。
以举例形式说明已知方法的主要缺点。假设在“问题规约描述符”等级把飞机A3XX的名称改变为A380,所述名称A380已经被最终选择,然后重新应用上面引用的规则。通过仅仅应用变换规则的已知机制,我们获得在图2中给出的模型非保守(nonconservative)变换。所有出现的名称A3XX已经被正确替换为A380,但是在第一迭代期间,所有在“问题分析”和“解决方案设计”等级手动添加的信息(在各个图上用斜体和细线表示的信息)丢失。这种解决方案是不能被接受的为了避免丢失他所有的工作,设计者必须放弃使用变换规则并且手动地向所有下层设计等级传递所述修改(飞机的名称),这表示无论在哪里这么做都是必要的并且会带来不一致性的风险。为了进行这项工作,设计者可以借助于现有的工具来建立可追溯性元素,以便链接所有出现的名称A3XX。这些链接将使他能够定位在改变名称时要进行的所有修改,但是这些修改将保持他的任务。变换和可追溯性机制被独立地管理。

发明内容
本发明的主题是一种用于耦合可追溯性和变换的自动开发方法。
依照本发明的方法是利用变换规则的自动开发方法,其可以利用更新来从一个模型到另一个模型,其特征在于将具有元素集的至少一个可追溯性链接与每个自动生成的模型元素相关联,根据变换规则所述可追溯性链接根据所述元素集发源。
依照本发明的另一特征,所操纵的元素是UML元素。有益地是,UML的“相关性(dependency)”被用来建立所述可追溯性链接,所述“相关性”诸如在定义UML语言中的OMG所定义。
依照本发明的又一特征,本发明的方法用来实现“design patterns(设计模式)”。


结合非限制性例子并且按照附图举例说明,通过阅读详细说明的实施例将能更好地理解本发明,其中上面引用的图1是空中交通模拟程序的先行开发的框图。
同样在上面引用的图2是依照现有技术,在非保守的变换之后根据图1的框图所获得的框图。
图3是依照本发明方法,在保守变换之后根据图1的框图所获得的框图。
图4是依照本发明方法,举例说明自动构造分析等级的框图(虚线表示已经创建的可追溯性链接)。
图5是举例说明由设计者手动增强分析等级的框图(斜体且细线标示的信息)。
图6是举例说明用于实现本发明方法的二次迭代算法的框图。设计者通过改变飞机的名称来修改问题规约,然后重新应用规则以便更新他的模型。
具体实施例方式
本发明提出将可追溯性元素与变换规则相关联。单独应用变换规则以确保在源设计等级的元素与目标设计等级的相应元素之间只有短暂的可追溯性链接。此链接(源元素、目标元素和规则参数)只存在于应用所述规则的期间。
本发明提出把可追溯性机制与变换机制耦合。为此,用以下元素补充所述规则·明确在源设计等级的元素到目标设计等级的各个元素之间的完整的可追溯性,·明确所述规则的参数(应用所述规则所必需的、由设计者所提供的信息),·允许根据源设计等级来更新目标设计等级,而不影响在更早变换期间不是应用所述规则而出现的元素。
本发明的保守的变换机制可以通过应用与可追溯性元素耦合的规则来保持设计等级中的一致性。利用此机制,可以把A3XX重命名为A380,并且自动向所有下层等级传递此修改而不会丢失手动添加的信息(参照图3保守变换)。保守变换机制支持增量和迭代的开发。它还支持内变质(endomorphic)的变换(在单个设计等级内)。此机制还可以用来传播标记,所述标记用于经由与所述示例类似的规则来删除元素。
现在将详细描述实现本发明方法的模式。
本发明提出一种与变换规则耦合的可追溯性机制,可以永久地再现在由变换所生成的元素和所述规则从此发源的元素之间的链接,以及称作变换规则参数的信息。此链接称作可追溯性链接。它是逻辑链接,把n个源元素链接到m个目标元素。
定义设·R是变换规则·S是源模型的元素集(等级N)·C是发自S、通过应用规则R而获得的目标模型(N+1)的元素集,·PARAMS,R是应用于S的规则R的参数。这些参数的获得可能要求与设计者对话。
·LinkS,C,R是在S和C之间的可追溯性元素,其可以与属于把R应用到S的具体参数(PARAMS,R)相关联。
用于实现本发明方法的算法包括以下三个部分



现在将独立于“问题分析”等级来描述把本发明方法的算法应用于上述模拟空中交通的例子。采用类似的方式可以获得在这里为了简明而没有描述的下一等级。
第一阶段是通过第一迭代算法来创建分析模型(参照图4)“问题规约”规则R1的第一应用设·S是“飞机描述符”其是表示飞机描述符的源元素集,其中描述符包括名称、乘客数目和发动机数目。
·R是“问题分析”设计等级的创建规则R1。
没有发自S的链接,因此必须创建目标元素、LinkS,C,R和相关联的参数。我们依照下列方式来继续·根据包括名称A3XX、乘客数目600和发动机数目4的飞机描述符,所述算法包括
a.创建带有描述符的飞机名称(即,A3XX)的“项目”定型目录,包括i.“飞机”定型类,名称为A3XX,ii.“发动机”定型类,具有名称“喷气式”,iii.“乘客”定型类,具有名称“人”。
b.在“飞机”定型类和“发动机”定型类之间创建名称为“动力化”的组成关系的链接,基数为1个“飞机”定型类端,以及4个“发动机”定型类端。
c.在“飞机”定型类和“乘客”定型类之间创建名称为“乘客”的关联链接,基数为1个“飞机”定型类端,以及600个“乘客”定型类端。
·创建可追溯性链接LinkS,C,R(其中S=“飞机描述符”,C=“项目”定型A3XX目录,A3XX类,喷气式发动机类,人类,组成关系的链接和关联链接,其利用它们各自的基数和R=R1来预先创建)。
·规则R没有参数(因为所述规则不需要外部信息,所以设计者不进行任何明确的选择)。
现在假定设计者改进分析模型(图5手动改进分析)他向名称为A3XX的类添加两个操作“landing(着陆)”和“take off(起飞)”·他向名称为喷气式的类添加“功率”属性·他向名称为人的类添加两个属性“姓名”和“国籍”·他添加包括三个属性“出发”、“到达”和“航班号”的“预订”类·他在乘客类和基数1的预订类之间添加组成关系的链接。
然后假定设计者执行修改“问题规约”等级的信息项·他用A380来代替名称A3XX。
现在将阐述在二次迭代算法期间,本发明的方法更新模型的方式。举例说明了更新的结果(图6规约的修改和自动更新)“问题规约”规则的第二应用设·S是“飞机描述符”其是表示飞机描述符的源元素,其中描述符包括名称、乘客数目和发动机数目。
·R是“问题分析”设计等级的创建规则R1。
存在发自S的LinkS,C,R。因此必须根据现有的LinkS,C,R来调用子例程,从而更新C,LinkS,C,R。算法包括1.在分析等级输入与飞机描述符相关的“项目”目录,并且如果必要的话依照特征S经由R来更新它;更新LinkS,C,R把目录A3XX重命名为A3802.在分析等级输入与飞机描述符相关的“飞机”定型类,并且如果必要的话依照特征S经由R来更新它;更新LinkS,C,R把类A3XX重命名为A3803.在分析等级输入与飞机描述符相关的名称为“动力化”的组成关系的链接,并且如果必要的话依照特征S经由R来用基数更新它;更新linkS,C,R基数保持不变4.在分析等级输入与飞机描述符相关的名称为“乘客”的关联链接,并且如果必要的话依照特征S经由R来用基数更新它;更新Links, C,R基数保持不变。
权利要求
1.一种利用变换规则的自动开发方法,可以利用更新来从一个模型到另一个模型,依照所述方法,通过生成分析文档、继而生成设计文档,并且最后通过生成根据设计步骤所产生的程序,来构造符合问题规约的解决方案规约,其特征在于将具有元素集的至少一个可追溯性链接与每个自动生成的模型元素相关联,所述可追溯性链接依照变换规则根据元素集发源,并且意在允许在开发期间手动引入新的信息。
2.如权利要求1所述的方法,其特征在于所操纵的元素是UML元素。
3.如权利要求2所述的方法,其特征在于UML“相关性”用来建立可追溯性链接。
4.如权利要求2所述的方法,其特征在于所述方法用来实现“设计模式”。
全文摘要
本发明涉及一种具有更新的自动开发方法,由利用变换规则的几个设计步骤组成,可以从一个步骤到另一个步骤。本发明的特征在于将具有元素的至少一个可追溯性链接与在设计过程中自动生成的每个模型元素相关联,所述链接基于其依照变换规则所发源的元素。
文档编号G06FGK1757013SQ200480005967
公开日2006年4月5日 申请日期2004年2月18日 优先权日2003年3月3日
发明者D·叙厄尔, M·福热尔 申请人:泰勒斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1