没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记163(2006)7-18www.elsevier.com/locate/entcs基于关注点的UML包合并体系Samir Ammoura,b,1,2 Philippe Desfraya,3a部门研发团队75008 Paris,Franceb极IALIP6750015 Paris,France摘要在本文中,我们提出了一种基于关注的软件体系结构建模技术我们使用新的UML2PackageMerge关系作为关注点分离的技术我们提出了使用UML包合并关系的软件体系结构建模的优点,我们提出了一套扩展其局限性。关键词:关注点分离,软件体系结构建模,UML2包合并。1引言:关注点分离和软件体系结构在模型驱动工程(MDE)方法中,代表企业业务不同方面的模型往往变得很大。这是困难的,在协作软件过程中理解和操作它。 软件工程师和架构师应用的明显和经典的解决方案是对系统进行适当的分解-组合。关于这个工程原理提出了许多技术,其中最著名的是基于关注的设计方法开发的关注分离。用于解决复杂性问题的原则是将企业业务模型视为更小和更易管理的部分(称为关注点)的组合。IEEE架构组给出的一个更精确的定义认为,1电子邮件:samir. softeam.fr2电子邮件:samir. lip6.fr3电子邮件:philippe. softeam.fr1571-0661 © 2006 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2006.07.0058S. Ammour,P.理论计算机科学中的电子笔记163(2006)7关注:“与系统的开发、运行或任何其他方面有关的利益,这些利益对一个或多个利益相关者至关重要”[ 5 ]。关注点分离已经成为软件体系结构描述和以体系结构为中心的软件开发(ACSD)的一种有趣的技术关于这个主题的工作[7,6,3,4,8,9,16],包括架构方法,符号和工具,认识到软件架构中关注点分离的重要性,尽管在表示和实现它的技术上存在分歧。分离软件架构中的关注点允许:• 专注于软件架构的开发或演化所需的某些方面,并帮助组织其谈判[4]。• 改进软件工程过程中不同参与者的协作• 在设计和实现阶段处理系统模块化;它也为维护和演进提供了很好的参考[16]。关注点的分离通常用UML中的模板或参数化模型的概念来表示[7,6,3]。然而,UML模板的作用之间存在一些不兼容性,这些模板用于通过创建和组合相同的结构来重用模型,而关注点的分离意味着分解和模块化。模板机制是解决重用问题的一种方法,但不是解决分解或分离关注点的方法。在本文中,我们把重点放在检查的UML技术,具体化的UML模型中的软件体系结构建模的背景下,关注的分离。这个解决方案是基于UML2规范中提出的新的“包合并”关系。请注意,本文是Softeam在ModelWare 4项目的“架构和平台建模”工作包中所做贡献的总结本文的其余部分组织如下:在第2节中,我们提出了UML 2中指定的包合并的概念,并给出了UML 2规范的建模示例。在第3节中,我们提出了我们建议的技术,使用包合并的关注点分离的架构建模。 我们通过一个例子来说明我们的技术。在第4节中,我们列出了我们在软件架构上下文中观察到的包合并的限制以及我们提出的扩展。我们在第5节结束。2用Pack-age Merge对2.1包合并包合并的概念最初在催化方法中提出[2]to model模型frameworks框架.它在UML标准中已经被深入地重新审视,4这项工作得到IST欧洲项目“ModelWare”(合同号511731)的部分支助S. Ammour,P.理论计算机科学中的电子笔记163(2006)79CBDc:整数<<合并>><<合并>>Bb:字符PPb:字符BC一P2d:布尔值BD一P1Dc:整数b:布尔值图1.一、包P1、P2和P之间的包合并说明在UML2的上层结构和基础结构规范中引入[11,12]。UML2规范将包合并机制定义为合并包(源)和合并包(目标)之间的关系。包合并意味着一组转换,其中合并包的内容在合并包中展开每个支持的模型元素都有自己特定的扩展规则,由一组条件(前提条件)和转换(后条件)组成在图中所示的示例中,1(左),包P1和P2正在与包P合并。1(右),其中A、B、C和D类的定义以及来自包P1和P2的关联和属性被复制或合并到包P中。2.2示例:UML2元模型结构包合并机制最著名的应用是UML 2元模型的结构化。包合并用于构建UML2遵从性级别,通过组合每个级别中包含的可重用功能来创建集成模型。10S. Ammour,P.理论计算机科学中的电子笔记163(2006)7一般来说,如果具有相同名称的元类出现在多个包中,则它们表示相同的元类,并且每个定义(专用化)的包表示特定的因子分解。这发生在Superstructure和Infrastructure中,其中某些方面被分解到不同的包中以形成遵从性点,例如,元类Class。UML基础设施库中的Core包被定义为在定义其他语言家族(如UML,CWM [13]或MOF [14])时可以重用在UML定义的情况下,Kernel包表示其建模概念的核心,并且主要重用UML基础设施库的Core::Constructs包在图中所示的示例2,我们举例说明了使用包合并机制来重用UML基础结构库中的Construct包,以定义UML超结构中的Kernel包。为了实现这种重用,从内核包到构造包添加了一个合并关系。图2示例意味着UML元模型定义需要定义一些新的特定功能,这些功能在Constructs包中不存在例如,一个类可以拥有其他类,一个属性有一些额外的属性,如:isDerived,aggregation,isComposite和default,它可以有一个指定值。最终结果如图所示。2,其中Kernel包重用了Constructs包中已经定义的功能,并通过为UML定义添加新的特定概念来扩展它。3包合并作为一种体系结构建模我们提出的建模架构的方法是基于分离的关注点和UML包图。我们扩展了UML包的经典架构能力,如分解,模块化和分层的系统,通过添加使用包合并技术的关注点分离。3.1为什么要合并软件包?包合并是第一个支持部分定义模式的UML建模技术,这是关注点分离的核心原则。正是这一特性激发了我们的想法,即使用包合并作为一种机制来表示UML模型中关注点的分离,然后用于架构建模。另一方面,我们的想法受到了UML 2元模型定义中与包合并应用程序相关的成功经验的激励。通过采用包合并机制,UML 2元模型体系结构被构造成许多层和关注点(元建模概念)。每个关注点都由一个单独的包表示,这有助于架构师(作者)的定义以及读者和UML工具开发人员的理解。S. Ammour,P.理论计算机科学中的电子笔记163(2006)711分类器/atttr iibute0. ..1**重新定义属性联想memeberEnd0. ..12. *拥有阿斯彭ii a ttii onownedEnd*superCll屁股0. ..1*类0. ..1拥有的*<<合并>>分类器/属性nestedClassifier分类器0..1*** nestedClassif ier财产0... 1级不锈钢类*0级.. 10. ..1拥有Attttr iibute协会协会memeberEnd*isReadOnly:booleanredefinedProperty0.. 10..12. ** isDerivedUnion:布尔值拥有属性0.1isDerived:布尔值拥有协会ownedEndisDerived:boolean默认值超类类/default:string聚合:AggregationKind类0... 1*isAbstract:boolean0..1ownedAttribute isComposite:boolean*0.. 1拥有财产0.. 1 defaultValue内核Aggregatiion::AggregatiionKiindiisCcomposite::boollean iisDerived::boollean财产内核构建体iisAbsttract::boolleaniisReadOn lly::boollean类iisDerived::booln协会财产分类器价值规范类分类器价值规范<<枚举>>AggregationKindnone::striingshared::striingcomposiitte::sttring<<枚举>>AggregationKind无:字符串共享:字符串复合:字符串图二、UML 2元模型定义中的包合并应用示例我们对关注点分离建模的方法的优点可以总结为三点:• 综合办法。包合并在OMG UML 2和MOF 2规范中通过一组规则(前提条件和转换)对每个元素类型进行了形式化。使用这种机制作为表示关注点分离的基本技术,提供了一个完整的UML解决方案,因此,它更容易在UML工具中实现和使用• 一个不太灵活的关注点分离。与UML工具所提供的用于隐藏和显示一些建模细节的图形视图相反,包合并是一种灵活的方式,允许执行软件结构的真正分解-组合。这些关注点被建模为普通的UML包。这意味着它们可以由不同的参与者单独更改,并且在任何时候都可以更改。12S. Ammour,P.理论计算机科学中的电子笔记163(2006)7建模这样,关注点就只是模型的一部分。它描述了软件的一个特定方面,比如托管数据、操作功能和服务,或者模式实现的变体。然后,这些关注点可以用来形成软件的最终结构,或者由其他关注点扩展。• 一个简单的组合的关注。重用关注点在模型中的表示非常简单。重用被建模为带有“merge”关键字的依赖关系模型中合并依赖的存在意味着相同的语义,就好像所涉及的包或关注点的内容被合并,其中每个元素类型都有一个特定的合并规则。这种情况下的重用不会像某些基于UML扩展[10,1]或设计模式的模型组合和重用方法那样添加额外的信息或模型元素3.2示例:消息传递系统图中所示的消息传递系统的示例。图3说明了包合并如何用于分离关注点和架构建模。消息传递系统定义了一组服务来管理用户消息。它使用户能够发送和接收加密消息,并可以附加文件,并通过检查用户身份验证通过网络连接和断开连接。在消息传递系统的架构建模级别,建模者的工作将集中在消息传递系统的特定功能或核心业务上,例如:• 用户管理、身份验证检查、连接信息收集• 管理和存储两种消息(MessageIn,MessageOut)。• 将文件附加到消息。消息传递系统职责的建模必须与常见和更一般的功能分离,如:文件传输、加密、连接建立、数据发送和接收。例如,数据加密的问题并不特定于消息传递系统,因此我们必须将其考虑在内并单独处理。 网络连接和文件传输服务也是如此。这种分离的决定将对系统建模产生全局影响,并将在体系结构级别上提高模型的内聚性和耦合质量属性图图3给出了消息系统的体系结构模型,采用打包合并机制进行分解和重用。在这个图中,消息包定义了消息系统的特定实体(消息和用户)及其与其他更一般的实体的关系:连接,文件和数据流。为了实现文件传输系统、加密系统和通信协议系统的功能的重用,为每一个定义了包合并关系。S. Ammour,P.理论计算机科学中的电子笔记163(2006)713阿尔戈里特姆*加密文件传输<<合并>><<合并>><<合并>>倾听关闭消息传递1内容1. *内容11. *一*定义消息具有1用1OutMessageInMessage通信协议Established连接用户数据流通信协议AllgoriithmBAllgorithmC变肢虫属加密算法数据流加密连接连接状态连接状态*文件附加的 0.. 3图3.第三章。使用包合并的消息系统的体系结构模型请注意,我们的架构分析并不详尽,我们可以对架构模型进行一些改进。例如,我们可以从消息系统的核心业务中分解消息的持久性方面4包合并限制我们使用包合并分离关注点和架构建模的经验使我们能够指出两类限制:(i) 覆盖机制。 包合并的UML规范仅限于元建模域中常见的某些元类,例如包、类、关联、属性等。事实上,没有定义规则来合并其他类型的元素,特别是:14S. Ammour,P.理论计算机科学中的电子笔记163(2006)7用于动态描述关注点的机器和活动图,以及用于在基于组件的模型中分离关注点的组件。(ii) 关注的组合。UML规范定义了有效的包合并的前提条件。这些先决条件从一个元类型到另一个元类型是不同的,“但一般的原则总是相同的:结果元素的能力不会比合并之前的任何能力差。”[11]这条规则过于严格,并且在合并两个元素时并不总是足以检查结果的有效性。合并包或关注点所拥有的元素的能力并不总是固定的;它们代表一个正确的组合,但不是所有可能的组合。这样就可以减少或增加在合并关注点后,结果元素的能力,而不会产生错误的结果。这方面没有一般的规则;这根据上下文的具体情况而因此,当我们对一个可重用关注点建模时,我们应该有可能指定其元素的重要功能,并在必要时定义要应用的特定合并先决条件还有一个问题与合并两个要素。它要求两个合并的元素具有相同的名称,这并不总是被验证。例如,当我们对一个共享的或可重用的关注点建模时,我们可以将建模的关注点中的元素名称与应用程序上下文中的元素名称分离。5ModelWare项目中所需的扩展5.1包合并覆盖范围为了解决PackageMerge机制的约束覆盖问题,我们建议扩展其定义以覆盖更多类型的模型元素。新覆盖的元素是从动态和静态模型中选择的,我们认为这些模型对描述体系结构很有趣。为了便于理解新定义的合并规则,我们使用UML规范文档中的以下术语• 合并包:图中合并箭头的目标包。• 接收包:图中合并箭头的源包但是,该术语指的是在执行合并转换之前的包及其内容• 结果包:与接收包相同的包,但此术语用于指执行合并转换后的包及其内容状态机的合并规则对于合并状态机,我们已经为组成UML 2状态机图的每个元素类型定义了一个合并规则。这些要素是:S. Ammour,P.理论计算机科学中的电子笔记163(2006)715伪状态、区域、转换、活动、触发器和事件。例如,以下是为State和PseudoState元素类型定义的规则属于State或Pseudostate类型的元素按名称匹配该条件假设拥有状态机或拥有状态也匹配。约束条件:• 对于所有匹配的伪状态:合并的和接收的伪状态必须具有相同的伪状态类型(即initial、deepHistory、shallowHistory等)。变形:• 如果匹配的合并状态是复合状态(即,如果它拥有区域),则所拥有的区域被递归地合并或深度复制到结果状态中。• 所拥有的Activity(entry、exit、doActivity)和约束被合并或深度复制到结果状态中。• 状态不变式(约束)的合并通过在合并的值和结果约束中的接收约束之间添加“或”条件来执行组件的合并规则对于合并组件,我们为组成组件模型的每个元素类型定义了一个合并规则例如,以下是为Component elements类型定义的规则:属于Component类型的元素按名称和元类型匹配约束条件:• 组件不能合并包含它的组件。• 组件不能合并它所包含的组件。• 匹配的类型化元素(如属性和参数)必须具有一致的类型.对于类或数据类型的类型,一致类型是接收组件中的相应类型或公共超类型。对于预定义类型,一致性意味着类型必须相同。• 接收组件的所属成员不能对合并组件的元素具有任何显式• 对于所有匹配的元素,接收元素的UML属性,如:可见性,多样性,可导航性等,将不会在结果元素中减少。• 如果满足所有前面的约束,则两个组件的合并是有效的,并且组件的所有拥有的可打包元素的合并也是有效的。变形:• 已合并元素(已合并组件的所有元素),16S. Ammour,P.理论计算机科学中的电子笔记163(2006)7没有匹配的元素被深度复制到结果组件中。• 两个匹配元素(合并和接收组件的所有成员)的合并是根据其元类型特定的转换规则执行的• 如果合并的元素具有构造型,这些构造型将应用于结果组件中的结果元素。5.2包合并前提条件匹配约束在软件开发中,关注点的分离有着至关重要的好处,但前提是被分离的关注点和我们需要处理的关注点能够很好地匹配。组成包合并规则的前提条件过于严格,并不总是适用于指定关注点的匹配。因此,我们建议扩展合并的先决条件的包合并与匹配的约束。匹配约束是用对象约束语言(OCL)表示的用户定义的约束[15]。它们用于表示匹配的接收元素应该满足的特定先决条件,以执行有效的包合并。在执行合并转换之后,这些先决条件也必须得到满足,从而保证关注点的匹配将得到持续的检查。为此,我们将匹配约束视为关注元素中的OCL不变量。对于没有匹配约束的元素,UML预定义的合并前提仍然有效。与预定义的合并前提相反,匹配约束可以很容易地用于指定关注点元素的能力。例如,如果一个关注点元素必须有一个private或protected visibility值,而不是public或package值,UML设计者可以定义以下匹配约束作为合并该元素的前提条件:(self.visibility= #private或self.visibility= #protected)而不是(self.visibility=#public或self.visibility=#package)匹配约束可以用来表达反映体系结构质量的更复杂的前提条件。然后,我们可以表达的情况下,基于组件的方法开发的系统的一些架构标准例如,假设我们有一个组件通过它的“网络连接”接口来管理网络连接然后,我们可以定义以下匹配约束,该约束指定了使用“连接”接口的组件的最大数量(self.OwnedPort.Provided-> select(i |i.isService和i.name=“连接”)。end.owner->select(c |c.ConnectorKind=#Assembly)->asSet()->size()= 1S. Ammour,P.理论计算机科学中的电子笔记163(2006)717包合并子句为了覆盖基于名称的包合并规则的匹配条件,我们建议添加包合并子句。当使用它们时,这些子句允许合并两个元素,即使它们没有相同的名称。在这种情况下,合并包关系将由Clauses定型的UML注释来注释,该注释包含一组包合并子句。包合并子句具有M/R形式,这意味着来自合并包或关注点的名为M的元素将与来自接收包的名为R的元素合并为了识别包合并子句中的元素,我们采用UML完全限定的名称。6结论本文提出了一种基于包合并关系的关注点分离的UML技术,并举例说明了它在体系结构建模中的应用。使用包合并分离关注点有很多优点,特别是它的使用和理解的简单性,以及它在UML 2标准中的明确形式化。事实上,包合并可以用于不同目的和粒度级别的模块化模型,从操作或属性等类功能到持久性或安全性等方面。它还可以用于根据一组合并规则在集成模型中组合不同的目的。然而,我们使用包合并分离关注点的经验使我们能够检测到有关此机制的覆盖范围及其合并规则定义的一些限制。为了扩展包合并机制的覆盖范围,我们定义了一组用于架构描述的状态机和组件模型的合并规则。为了改进包合并的合并规则,我们提出了匹配约束和包合并子句的概念。匹配约束对于表达关注点组合的特定关注点条件是必要的,包合并子句对于关注点共享是有用的对包合并机制的扩展为关注点分离和体系结构建模提供了一个集成的解决方案因此,我们计划在Objecteering UML CASE工具中实现它们引用[1] Clarke,S.,用模型组合语义扩展标准UML,计算机编程科学Elsevier Science,第44卷,(2002)。[2] D'Souza,D. F.、和ac Willis,[3] Fontoura,M., 维模板:UML中关注点的多维分离,在MDSOC'99面向对象系统中关注点的多维分离研讨会上发表[4] Gruenbacher,P.,A. Egyed和N. Medvidovic,需求协商和体系结构建模中的关注维度,在软件工程中关注多维分离研讨会(ICSE 2000)上发表,2000年。18S. Ammour,P.理论计算机科学中的电子笔记163(2006)7[5] IEEE架构工作组,[6] Jzquel,J.M.,N. Plouzeau,T.Weis和K.Geihs,www.uk.builder.com。[7] Kulkarni,V.和S. Reddy,模型驱动开发中的关注点分离软件IEEE,第20卷,第5期,9月-十月(2003年)的报告。[8] Kand,M. M.,和A. Strohmeier,《论软件体系结构中关注点的多维分离的作用》,在OOPSLA 2000年关注点高级分离研讨会上发表[9] 刘建杰,R. R. Lutz和J.M. Thompson,Mapping Concern Space to Software Architecture:A Connector-Based Approach,2005年在MACS 2005第一届软件关注点建模和分析国际研讨会上发表。[10] Olivier,C.,B. Carr,A. Muller,G.范文豪,面向组件信息系统中支持视图的框架,在OOIS上发表,计算机科学讲义,Springer,第2817卷,第164-178页,(2003)。[11] OMG,网址:http://www.omg.org/technology/documents/formal/uml.htm的 网 站 。[12] OMG,网址:http://www.omg.org/technology/documents/formal/uml.htm的 网 站 。[13] OMG,http://www.omg.org/technology/documents/formal/cwm.htm“CommonWarehouse Metamodel(CWM)Specification”,Version 1.1,2003,URL:www.example.com。[14] OMG,http://www.omg.org/technology/documents/formal/mof.htm“Meta-ObjectFacility(MOF)Specification”,Version 1.4,2002,URL:www.example.com。[15] OMG,http://www.omg.org/docs/ptc/03-10-14.pdf“对象约束语言分离”,最终采用的规范,版本2.0,2003,URL:www.example.com。[16] Sutton,S. M.,和I. Rouvellou,Cosmos中的软件关注点建模,在第一届国际会议上发表。偏差:荷兰,2002年。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功