基于角色模型的MDA开发

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于角色模型的MDA开发
何成万
【摘要】讨论了已有的一些角色模型在重用性和动态性方面的不足,提出了一个适合于MDA开发的层次化的角色模型以及相应的映射规则,给出了该模型的实现方法,并介绍了一个该模型在银行范例系统中的应用.该层次化的角色模型对应于MDA的PIM,它的实现模型对应于MDA的PSM.使用该方法不仅可提高角色模型的重用性,而且在设计层可实现角色的动态特性,有助于实现从PIM到PSM的变换.【期刊名称】《武汉工程大学学报》
【年(卷),期】2004(026)002
【总页数】4页(P53-55,58)
【关键词】MDA;映射;角色模型;角色约束
【作者】何成万
【作者单位】武汉化工学院计算机科学与工程学院,湖北,武汉,430073
【正文语种】中文
【中图分类】TP311
0 引言
MDA是OMG提出的一种基于模型的体系结构,它的主要目的是实现系统的可移植性、互操作性和可重用性[1,2].MDA把模型分为平台无关模型PIM和平台相关模型PSM,通过模型的相互转换达到以上目的.MDA体系结构实现了不同平台之间
模型的可重用性,但由于它是基于对象模型的,降低了不同应用软件系统之间模型的可重用性.
与基于对象的建模方法相比,角色模型[3,4]更能反映对象间的协作关系.角色可以分配给不同的对象来完成,从这个意义上来说,角色模型是可重用的.因此,提出一个适合于MDA开发的层次化的角色模型以及相应的映射规则,并给出一个该模型的应用实例.
1 层次化的角色模型
层次化的角色模型如图1所示.最上层是角色模型层,包含角色约束,该层的角色模型及角色约束独立于应用系统,是可重用的;中间层是角色组合及绑定操作层,在该层中定义组合角色以及角色和对象的绑定操作,组合角色和绑定操作要分别根据角色约束中的组合规则和分配规则(见后述)来定义,通过这些绑定操作来表现角色的动态性;最下层是应用系统的对象结构,称为应用程序层.
该模型对应于MDA中的PIM,其中的每一层又都是一个PIM.从上到下是PIM的细化.为了实现该模型中的PIM间的变换,提出了用于变换的映射机制----角色约束模型,以及角色约束和绑定操作的形式化描述方法,下面分别对它们进行说明.
图1 层次化的角色模型Fig.1 Layered role model
1.1 角色约束的描述
最上层的角色约束是独立于应用系统的.由于角色还没有分配到对象,约束中不包括任何具体的对象,所以角色约束也是可以重用的.以下定义这两类角色约束,即组合约束、分配约束.
1.1.1 组合约束把两个角色组合成一个新的角色时,使用组合约束.包括蕴涵规则,综合规则及并列规则.
如果对象执行了R1,它总能执行R2,称R1蕴涵R2.把具有蕴涵关系的两个角色进行组合时使用蕴涵规则.设R1蕴涵R2,则组合后的新角色R中的方法和R1中的方法
相同,可用下式表示.
{m|m∈R}={m1|m1 ∈R1}
综合规则表示把角色R1和R2组合成一个新角色R时,R继承R1和R2中的同名的方法,并且把指定的R1和R2中的不同名的方法进行合并.
设M0={(m1,m2) | m1∈R1, m2∈R2,m1≠m2}
M1= {m|m∈R1, m ∈R2}
M2={m`|m`=m1+m2,m`∉R1,
m`∉R2,m1 ∈R1,m2 ∈R2,
m1≠m2,(m1,m2) (M0}
M3={m1,m2 | m1 ∈R1, m2 ∈R2,m1≠m2,
(m1,m2) (M0}
M0表示需要综合的方法对的集合,M1表示R1和R2中相同方法的集合,M2表示R中新出现的方法的集合,M3表示R1和R2中其它方法的集合.则有
{m|m∈R}=M1∪M2∪M3
并列规则表示把角色R1和R2组合成一个新角色R时,R包含R1和R2的方法.可以用下式表示.
{m|m∈R}={m1,m2 | m1∈R1,m2∈R2,
m1≠m2}∪{m3|m3∈R1,m3 ∈R2}
1.1.2 分配约束在进行角色的分配和组合时,两个角色或者共存于同一个对象,或者存在于不同的对象,或者没有约束关系.分配约束是共存规则,相容规则和排斥规则的集合.
共存规则表示角色R1和R2必须存在于同一对象中;相容规则表示角色R1和R2可以存在于同一对象中;排斥规则表示角色R1和R2不能存在于同一对象中.
1.2 绑定操作的描述
绑定操作定义了角色和对象的映射规则及条件,可以表示角色和对象的动态绑定和分离.用以下的文法定义绑定操作.
具体化的角色约束::={绑定条件}对象名绑定操作角色
绑定操作::=≪|≫
其中:[]表示可选项;
| 表示n中选一;
≪表示把角色分配给对象;
≫表示角色从对象分离.
例:{角色R1完成}Object1≪R2 表示角色R1完成后把角色R2分配给Object1对象.
Object1≫R1 表示Object1对象和角色R1的分离.
2 模型的实现方法
由于现在的主流面向对象语言(如Java,C++)都不直接支持角色的概念,要实现角色模型需要利用一些设计模式.要实现本文提出的层次化的角色模型,主要需要考虑角色和对象的动态绑定和分离.采用Gamma等人的Mediator模式[5]来实现该模型. 把每个角色分别定义为一个独立的类,另外定义一个协作管理对象COManager,相当于Mediator模式中的anager功能包括:角色和对象的映射关系的检查;角色的管理(生成,绑定和分离).因此,COManager包含以下属性:两个数据链表,一个用来保存已绑定的<对象,角色>对(称为绑定链表),一个用来保存所有对象和角色的可能的绑定关系(称为绑定规则链表);取得某个对象的角色的方法(getRole(Object obj,Object Role)),该方法有两个参数,第一个参数是对象名,第二个参数是角色名,都用字符串来表示.如果绑定链表中已存在该<对象,角色>对,就返回该角色,否则生成该角色,并返回;把角色追加到绑定链表中的方法(bind(Object obj,Object role));从绑定链表中删除<对象,角色>对的方法(detach(Object
obj,Object Role));检查对象是否已绑定到角色的方法(checkBindedRole(Object obj,Object Role));检查绑定链表规则的方法(checkBindingRule(Object
obj,Object Role)).
3 基于角色模型的MDA开发
基于角色模型的MDA开发方法如图2所示.
图2 基于角色模型的MDA模型变换方法Fig.2 MDA model transformation based on role model
层次化的角色模型构成了PIM.该模型包括三个层次的PIM以及由上层模型到下层模型的映射机制,该映射由一些角色约束组成.
在PIM中追加管理对象Mediator及其关联后形成的模型构成PSM.由于要保存两组数据(绑定连表和绑定规则连表),它依赖于具体的实现语言.该模型的实现代码构成最底层的PSM.
4 层次化角色模型的应用实例
在文献中,介绍了一个银行系统的范例分析.使用本文提出的层次化的角色模型可描述该系统的PIM(见图3). 其中,最上层是角色模型和角色约束,最下层为对象模型,中间为角色和对象的绑定操作.角色约束表明顾客既可以是贷款者,也可是投资者.角色的绑定操作描述了贷款者角色和投资者角色到顾客对象的动态绑定过程.
图3 银行系统的层次化角色模型Fig.3 Layered role model(PIM) of bank system
5 结语
以上提出了一个适合于MDA开发的层次化的角色模型以及相应的映射规则.层次化的角色模型对应于PIM:角色模型独立于应用系统,位于最上层;通过中间层的绑定操作实现角色的动态特性;最下层是应用程序层(Application层).层次化角色模型的实现模型对应于PSM.介绍了该模型在银行范例系统中的应用.基于角色模型的
MDA方法不仅可实现不同平台间模型的重用,而且可实现不同应用软件系统间模型的重用.
今后的工作重点包括基于角色模型的MDA开发方法的进一步完善;PIM到PSM的自动转换等.
参考文献:
[1] David Frankel. Model Driven Architecture: Applying MDA to Enterprise Computing. Indianapolis:John Wiley&Sons,2003.
[2] Marc J Balcer, Stephen J Mellor. Executable UML: A Foundation for Model DrivenArchitecture. Boston:Addison-Wesley Pub Co,2002.
[3] Kristensen B B, Osterbye K. Roles: Conceptual Abstraction Theory and Practical Language Issues[J]. Theory and Practice of Object
Systems,1996,2(3): 143-160.
[4] Trygve Reenskaug,Wold P,Lehne O A. Working with objects-The OOram Software Engineering Method. Greenwich:Manning Publications Co,1995.
[5] Gamma E, Helm R, Johnson R,et al. Design Patterns: Elements of Reusable Design. Tokyo:Soft-Bank Publishers, 2000.
[6] Dirk Bumer, Dirk Riehle, Wolf Siberski,et al. Role Object.In: Neil Harrison, Brian Foote, Hans Rohnert. Pattern Languages of Program Design 4. Boston:Addison-Wesley,2000.15-32.。

相关文档
最新文档