没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记163(2007)45-64www.elsevier.com/locate/entcs模型驱动架构设计方法穆罕默德·阿克西特2 Francis Henninger3特文特大学软件工程集团计算机科学系荷兰恩斯赫德摘要关注点分离是设计高质量软件系统的重要原则,在模型驱动架构(MDA)和面向对象软件开发(AOSD)中都有应用。AOSD和MDA技术似乎是互补的;历史上,AOSD专注于横切关注点的建模,而MDA专注于平台独立关注点与平台特定关注点和模型驱动生成过程的显式分离。为了评估AOSD对MDA的好处,我们对MDA背景下的横切关注点进行了系统的分析。分析包括三个步骤。首先,我们定义了一个MDA转换的抽象模型。 其次,我们定义了一些对应于选定的交叉问题清单。第三,我们分析了MDA中的模型转换的抽象模型,演化场景和相关的横切关注点。这种分析的结果是定义了一些与横切关注点的集成和演化相关的关键问题,MDA方法。在此分析的基础上,我们为MDA方法中使用的语言和过程提供了一组建议。保留字: 横切关注点,演化,MDA1介绍关注点分离原则是解决软件工程复杂性的重要原则之一。这一原则指出,给定的问题涉及不同类型的关注点,这些关注点应该被识别和分离,以应对复杂性,并实现所需的工程质量因素,如鲁棒性,适应性,可维护性和可重用性。在这种情况下,模型驱动架构(MDA)[5,7]是由OMG [10]定义的框架,它将平台特定的关注点与平台无关的关注点分离,以提高可重用性,可移植性和互操作性。1电子邮件:bedir@cs.utwente.nl2电子邮件:aksit@cs.utwente.nl3 电子邮件地址:henninger@cs.utwente.nl1571-0661 © 2007 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2006.10.01546B. Tekinerdogan等人理论计算机科学电子笔记163(2007)45软件系统。为此,MDA将平台无关模型(PIM)与平台特定模型(PSM)分开。PIM是从任何实现技术或平台中抽象出来的模型。PIM被转换为一个或多个PSM,其中包括平台特定的详细信息。最后将PSM转换为提供实现细节的代码。显然,通过分离平台特定的关注点并提供机制来在代码中组合这些关注点,MDA提供了一个清晰的关注点分离,因此系统可以更好地重用,更容易移植到不同的平台,并提高了互操作性。然而,当前的软件系统还必须应对平台特定关注点之外的其他关注点。通常,软件系统还需要处理其他重要的问题,如分布,持久性,同步和错误检测。这些问题往往横切软件体系结构的各个组件,因此增加了软件系统的复杂性,减少了软件系统的维护。面向方面的软件开发(AOSD)[3]旨在通过提供称为方面的显式抽象来处理这些横切关注点。通过在方面中分离横切关注点并提供具有组件的方面组合,横切关注点的影响得到了更好的管理。AOSD和MDA本质上都提供了分离关注点的有用技术,从这个意义上说,AOSD和MDA技术是互补的;历史上,AOSD专注于横切关注点的建模,而MDA专注于平台独立关注点与平台特定关注点和模型驱动生成过程的显式分离。因此,我们认为AOSD和MDA可以相互受益,以进一步应对当前大型复杂软件系统的挑战。由于AOSD主要关注于解决横切关注点相关的问题,我们将在MDA上下文中提供横切关注点的系统分析。分析包括三个步骤。首先,我们定义了一个MDA转换的抽象模型,该模型由所谓的关注转换模式(concern transformation patterns,CTP)定义。现金转拨方案描述了相应的转型,有助于查明转型中的关键问题。其次,我们定义了一些进化场景,这些场景对应于一个选定的横切关注点列表。演化场景被应用到一个并发版本控制系统,这是使用基于MDA的方法开发的。第三,我们分析了MDA中模型转换的CTP、演化场景和相关横切关注点。这一分析的结果在MDA方法中的横切关注点的集成和演变相关的一些关键问题的定义。在此分析的基础上,我们为MDA方法中使用的语言和过程提供了一组建议。在第2节中,我们将把关注点转换模式作为不同潜在转换的抽象。第3节解释了并发版本控制系统的情况。这个案例将用来解释横切关注点的概念,并分析横切关注点在MDA过程中的影响B. Tekinerdogan等人理论计算机科学电子笔记163(2007)4547PIMCIMPSM代码第4节将定义场景的数量,包括MDA生命周期中将应用于CVS的问题。 第5节界定了吸取的经验教训并提供了在MDA方法中处理横切关注点的建议。最后,第6节将给出结论。2关注点转换模式为了分析MDA中横切关注点的影响,我们将首先考虑MDA上下文中定义的主要建模概念和转换。如图1所示,一个典型的MDA开发过程由模型构建和转换活动组成,从计算独立模型(CIM)开始,随后转换为平台独立模型(PIM)、平台特定模型(PSM),最后转换为可执行代码。也可以在相同的抽象级别上转换模型。图3显示了以下一组转换:CIM到CIM、CIM到PIM、PIM到PIM、PIM到PSM、PSM到PSM和PSM到代码。2461 3 5 7图1.一、MDA流程的简化视图显然,每个模型构建和转换过程都要考虑一组可能与所考虑的模型相关的新关注点由于AOSD的目标是明确地对横切关注点建模,因此从关注点建模和转换的角度分析方面对MDA(反之亦然)的影响是合乎逻辑的。因此,我们的分析将基于以下三个假设:• 模型是关注点的表示。在MDA上下文中定义的每个模型都包含两种关注点:基于平台依赖性区分的关注点,以及从需求和相应的问题/解决方案域派生的关注点。• 模型转换是关注点转换。由于每个模型都由关注点组成,因此每个转换自然也是一个关注点转换。基于这些假设,我们定义了八种关注点转换模式,如表1所示。在表A中,B和C表示关注点模型,标有T的箭头表示转换。 模型和转换中的括号<>包含了它们所处理的关注点此外,还定义了两个复合运算符·和。空组合运算符·表示所需的概念组合,并在转换的输入中定义。 运算符定义一个组合,其中模型可以单独识别。如果模型在合成后无法分离,则使用<>符号。 例如,A指的是合并48B. Tekinerdogan等人理论计算机科学电子笔记163(2007)45模型A中的关注点B和C的组合,因此B和C不能被本地化。注意,模式1、3、5、6和7导致这样一个合并组合,其中一个或多个关注点没有显式地本地化。模式5到8可以被认为是复合关注点转换模式,因为它们中的每一个都可以在本质上被定义为两个其他原始转换模式的组合。图案5可以被看作是图案1和3的组合,图案6可以被看作是图案1和4的组合,图案7可以被看作是图案2和3的组合,并且最后图案8可以被看作是图案2和4的组合在前两种模式中,转换不包含显式关注点,但主要用于组合提供的关注点(在本例中为A和C)。在第一种模式中,组合结果是一个合并的输出,其中关注点C不再分离。在第二种模式中,关注点C被分开,这表明设计更具可组合性。模式3到模式8包括了添加关注点本身的转换在模式3和4中,包括没有向转换提供额外关注点的情况。第三模式表示将模型A变换为目标模型A 的变换。这里,关注点B是由转换过程T 引入的,它与最初在A中定义的关注点是不可分离的。例如,假设模型A表示被转换为Java PSM的PIM 在模式3的情况下,假设AB>中引入的Java特定关注点<不能与A的原始关注点分离。在模式4中,模型A被转换为模型A和B由复合运算符表示。类似模式3、模型B表示转换过程中新引入的关注点不同之处在于,变换T的结果是一个模块组合,其中模型A和B可以分别识别。从5到8的模式假设源模型由两个模块化组合的模块A和C组成,由组合运算符·表示。在模式5中,原始关注点A和C以及定义为变换T被合并到目标模型A中,因此它们不能再被分开处理。在模式6中,关注点C被合并,但是来自转换的关注点B作为单独的模型提供。 在模式7来自转换的关注点B被合并,而关注点C被表示为单独的模型。 最后,模式8显示了关注点B和C的情况是分开的事实上,这可以被认为是最主要的选择,因为在源和目标中,关注点是完全分离的3示例:并发版本控制系统为了分析MDA方法中关注点的演变,我们将利用软件配置管理(SCM)案例。SCM负责软件变更的控制、变更的适当文档记录、新软件版本和发布的发布SCM中的一个重要功能是并发版本控制系统(CVS).B. Tekinerdogan等人理论计算机科学电子笔记163(2007)4549ID 关注点转换模式解释1.2.3.4.T>A ACCT>A AXC CTB>A AB>TB>A AXBA与C一起被转换为模型A C>。A是主导分解,关注点C不能单独识别。A与关注点C一起被转换为模型A和模型C。关注点C在模型C中单独建模。A通过T变换为A。A包括新的关注点B,它是转换中固有的,但不可分离。A被转换为A和B的可组合模型,在最终结果中它们是可分离的。复合关注点转换模式5.6.7.8.TB>A AB,C>CTB>A ACXC BTB>A AB>XC CTB>A AXC BXCA与关注点C一起转换为单个模型A。在最终的模型中,关注点B和C不能再被识别为单独的模型。A与关注点C一起转换为单个模型A和模型B。在所得到的模型A中,关注点C不能被分离。关注点B在模型B中单独建模。A与关注点C一起转换为模型A。模型C。在由此产生的模型A中关注点B与转换是不可分离的。关注点C在模型C中单独建模。A与关注点C一起转换为模型A、B和C。在所产生的模型中,所有三个关注点A、B和C都可以分离。LEGEND表1关注点转换模式[2],它保留了对一组可以同时访问的文件所做的更改的历史。在图2中,CVS系统的概念架构是一模型T>转换(无隐含问题)一导致TC>明确关注X组合物模型C一+C所需的模型组成AC>模型A与非本地化关注点C50B. Tekinerdogan等人理论计算机科学电子笔记163(2007)45编程环境认证Admin环境认证会话管理授权时间戳生成器版本管理器集成管理器请求处理器恢复并发控制数据访问访问控制编程工具编辑工具集成工具性能监视器编辑工具安全工具程序员管理员UserDBaseAdmiiinDBase届会议项目储备库文件系统数据访问访问控制恢复并发控制版本管理器集成管理器请求处理器时间戳生成器会话管理授权Admin环境认证安全工具编辑工具性能监视器认证编程环境集成工具编辑工具编程工具示出了该体系结构由程序员环境、管理员环境、会话管理系统和知识库管理系统四个主要子系统组成图二.并发版本控制系统(CVS)程序员的环境提供了一组编程工具,如编译器、解释器和调试器、编辑器和用于将程序模块集成到一致程序中的工具。程序员在开始使用该系统之前必须经过认证。当程序员想要编辑存储在项目存储库中的文件会话管理器对请求进行授权,将时间戳与之关联,并通过调用项目存储库的请求处理程序来启动编辑会话。请求处理程序检出请求的文件并将其传递给程序员的执行程序。当文件被签出时,它们可以被编辑和编译,并签入文件的修改。签出一个文件并不意味着程序员拥有该文件的专有权。其他程序员也可以检查它,进行自己的修改,然后再检查回来。并发控制模块管理对同一文件的所有同时访问,以及用户的身份、访问时间和版本号。此模块还负责识别访问文件时的读/写冲突。如果检测到冲突,则调用集成管理器。集成管理器提供了一组功能来解决冲突访问。例如,集成管理员可以通知程序员,或者可以请求授权人员的帮助以重新解决冲突。恢复管理器会复制所有修改过的文件,以便在必要时恢复原始文件。版本管理器生成版本ID访问控制单元提供低级访问控制功能,例如保护只读文件不被更新等。B. Tekinerdogan等人理论计算机科学电子笔记163(2007)4551管理员环境提供了一组管理工具。例如,性能监视器用于生成关于访问的平均时间、数据大小和同时访问对性能的影响、中止次数等的报告。管理员还负责安装会话工作流属性,即优先级、解决冲突的责任。身份验证和授权权限也由管理员确定。4进化情景有了模型和MDA的转换,我们现在可以集中精力分析MDA中的横切关注点了。为了说明横切对模型转换的影响,我们将添加安全性、日志记录、版本控制策略和持久性。显然,这些关注点可能会在CIM、PIM、PSM甚至代码级别引入。如果我们还考虑到在模型转换过程中可能引入这些关注的各种顺序,那么很明显,模型转换的数量会急剧增加。对所有可能的替代模型转换进行详尽的分析,可以为我们提供一个完整的概述,我们可能会遇到的问题。然而,从实际的角度来看,不可能分析所有这些可能性。此外,我们在本文中的目标不是为特定的关注点集提供完整的分析,而是指出在应用横切关注点时可能出现在MDA中的实际重复问题。其次,原则上似乎也没有必要提供详尽的分析来确定关键问题。这是因为我们可以很容易地对转换进行分组,并以更抽象的方式对模型转换中的横切关注点进行推理转型场景情景顺序CIM到CIMS1.向用例模型0S2S5S11S7S4S1S3S6S8S10CIMPIMPSMS9代码CIM到PIMS2.用例模型到PIM的PIM到PIMS3.在PIM级别S4.在PIM级别PIM到PSMS5.转换为关系数据库平台模型S6.将PIM转换为Java平台模型PSM至PSMS7。添加版本控制策略S8. 添加持久性S9.升级到远程安全调用PSM至代码S10。转换为Java代码S11。转换为关系表表2场景列表,包括MDA转换对于我们的分析,我们将为给定的示例定义一组演化场景52B. Tekinerdogan等人理论计算机科学电子笔记163(2007)45其中将增加跨领域的关切。我们应用的一组场景如表2所示。请注意,我们已经包含了每个模型抽象层(CIM、PIM、PSM和代码)以及这些抽象层之间的转换。此外,对于水平转换,我们已经包含了一两个关注点。在后面的讨论中,我们还将分析这些场景的各种可能的排序。我们将在本文中讨论的场景的顺序在场景转换图中给出,如表2的右列所示。因此,标记的圆圈表示左侧的场景,而箭头表示场景之间的转换。4.1CIM到CIM转换我们考虑的第一个转换(场景S1)是CIM到CIM的转换(表2)。计算独立模型(CIM)关注的是系统的环境和需求;它不关心系统的任何我们假设CIM被表示为一组用例模型。在这个例子中,我们考虑将关注点安全性添加到CIM模型。对于给定的场景S1,我们可以应用关注变换模式1和2。看起来我们可以对用例安全性进行建模和组合,因此应用了转换模式2,如图23.图的左半部分显示了源模型与安全用例的空组合。右边的部分显示了转换后的结果,其中用例是使用“uses”关系组合到新的concern安全性的。虽然关注点安全性可以在这个级别上分离,但是关系的数量已经表明在以后的模型中可能存在横切,这些模型将从这个模型中派生出来。我们还可以想象这样一种情况,在这种情况下,一个关注点在用例模型中不容易被本地化。 例如,这可能是一个关注点,比如优化访问CVS的时间性能显然,在单独的用例中指定这一点是非常困难的,通常所有的时间性能优化都必须在每个用例本身中执行。因此,我们可以将这种转换描述为模式1的应用,具体为CV S< timeperformance>。用户用户图三. 在CIM到CIM转换CVS«用途»更新«使用»提交安全«用途»去除«用途»差异CVS更新承诺去除差异X安全B. Tekinerdogan等人理论计算机科学电子笔记163(2007)4553*4.2CIM到PIM转换图4展示了转换到平台无关模型(PIM)的结果,如表2中的场景S2(到PIM的转换)所定义的 在图5中,Repository用于对系统的不同版本进行分组,并可用于跟踪配置管理系统中的更改。Branch类包括可以存储File的Directory类。ClassVersion定义了一个特定的版本,一个文件可能存在多个版本。File和Directory类中删除的属性表示文件或目录是否已删除 或者仍然被使用。文件可以使用类Tag进行标记。从计算无关模型到平台无关模型的转换可以被认为是关注点是计算关注点本身的转换。当然,很难在PIM中分离计算关注点,因此我们可以声明应用模式3。存储库- 姓名+create()+delete()免费WiFi分支- 姓名- 数字+create()+delete()版本- 数字- 差异- 时间戳免费WiFi+tag()*111见图4。 CVS的CIM到PIM转换4.3PIM到PIM转换对于PIM到PIM的转换,我们应用表2的两个场景S3(安全)和S4(日志记录)。图5显示了从图4中的初始PIM到目标PIM的转换,其中添加了安全和日志问题原则上如果这些关注点是按顺序应用的,那么就需要明确地考虑场景的顺序。我们将首先分别讨论这些场景,然后分析这些场景的顺序。添加安全为了将安全性问题应用于CVS,系统应该存储不同的用户及其数据访问权限。为此,在图5中,类User和Permission分别表示用户及其权限。类用户文件- 姓名- 内容- 尺寸- 删除- 时间戳*+checkin()+checkout()+difference()+commit()+remove()+update()+tag()标签- 姓名目录- 姓名- 删除54B. Tekinerdogan等人理论计算机科学电子笔记163(2007)45可以是普通用户(程序员)或管理员,具体取决于type属性的值。Class Permission包括read和write属性,指示用户是否可以从系统中的特定对象读取或写入。属性InstanceType和InstanceName标识已为其设置用户权限的对象。要唯一标识特定对象,必须为InstanceName属性选择唯一标识符。 例如,它可以是对象引用或结构中的完整名称,如'/branch/directory/filename'。类SecurityManager检查具有相关权限的特定用户是否可以执行请求的操作。理想情况下,我们希望在目标模型中分离安全问题,以便在必要时能够事实上,乍一看,安全问题似乎也被很好地分开了。 有三个 独立的 类和一 个接 口实现 安全协 议。不 幸的是 ,实现 接口的 类Repository、Branch、Directory和File也需要实现权限查找。标有s3的箭头表示哪些方法需要检查请求的权限与安全管理器存储的实际权限这意味着安全性关注点分散在不同的类中,并与相应类中实现的关注点纠缠在一起。这样,通过再次应用模式1来实现初始PIM到具有安全性关注的PIM的转换。为了应用模式2,以便在最终结果中分离安全关注点,我们可能需要显式的抽象来模块化这个横切行为。通常,面向方面的实现技术可以用于此目的。添加日志记录图5还包括sce- nario S4定义的日志关注点的应用。需要记录系统日志以识别系统内的瓶颈Log和LogManager类实现了日志记录。类LogManager包含用于更新日志的日志操作类Log实现了包含操作的时间戳、主机和用户、请求的操作、分支、状态和结果等条目的日志。尽管日志记录关注点似乎局限于Log和LogManager这两个类中,但仔细分析表明,该关注点横切各种类的方法。在图5中,通过添加日志记录关注点而实现的方法由S4表示。因此,类似于添加安全性问题,我们可以声明我们已经在这种情况下应用了模式1。自适应日志记录现在假设日志功能需要通过日志消息的详细级别来增强。为此,需要添加以下级别:严重、警告、配置和调试。在转换过程中,可以通过向类Log添加属性级别来完成此需求。其他属性sever-ityLevel、warningLevel、configLevel和debugLevel必须添加到类Log- Manager中(图5中未显示这些更改)。课程的变化B. Tekinerdogan等人理论计算机科学电子笔记163(2007)4555免费WiFi分支- 姓名- 数字+create()+delete()*1目录- 姓名- 删除Log和LogManager可以通过转换自动应用。但是,日志记录关注点的更改也需要更改所记录的方法。同样,图5中标有S3的箭头所指示的所有方法都需要进行调整以满足这一问题。为了解决这个问题,转换本身通常必须意识到关注点的横切性质。s3,4s3,4S4s3,4*1s3,4*1标签- 姓名图五.具有安全性和日志记录功能的顺序转换和排序有趣的是,日志记录问题似乎也横切了安全问题。这对转换的顺序有影响。如果日志关注点转换发生在安全关注点转换之前,那么这将意味着安全关注点类的方法不能被记录。为了保持一致性,需要重新转换。同样地,如果日志记录不被自由地允许,则安全问题可能横切日志记录问题。这表明转换还必须知道关注点的排序。在上述情况下,我们假设关注点是一个接一个地转换的。我们可以想象这样一种情况,即两种关注点在模型中一起转换。如果我们假设安全和日志问题在最终结果中再次横切,那么我们可以如下所示CV S· Security· Logging→ CV S为了提供这两个关注点的模块化,转换通常必须知道横切性质和关注点的语义冲突(排序)。4.4PIM到PSM转换对于PIM到PSM的转换,我们定义了场景S5和S6,它们分别将PIM转换为关系数据库平台模型和Java平台模型。这两个场景都可以在场景S4之后应用。下面我们讨论这两种选择。传奇原始类添加类Sn情景S的交叉问题s3,4s3,4s3,4s3,4- 姓名*- 密码- 类型+create()+check()+delete()return()用户**SecurityManager-instanceType-instanceName- 读- 写*许可+checkPermission()«界面»安全接口存储库- 姓名+create()+delete()LogManager+log()文件- 姓名- 内容- 尺寸- 删除- 时间戳*s3,4s3,4s3,4s3,4s3,4s3,41s3,4+checkin()+checkout()+difference()+commit()+remove()+update()版本- 数字- 差异- 时间戳+tag()1*日志- 时间戳- 主机- 使用者- 操作- 分支- 状态- 结果56B. Tekinerdogan等人理论计算机科学电子笔记163(2007)45PIM到关系PSM图6显示了从PIM到关系PSM的转换结果。这里类被映射到表,类的操作被隐式映射到数据库操作。在图6中很难发现任何横切,因此人们可能会认为这个模型没有横切。然而,图中所示的PSM只是系统的静态结构如果我们考虑将行为转换为SQL语句,那么我们可能会观察到几个问题。一个主要的限制是查询只能对数据库中的数据执行相对简单的操作,因为SQL从来就不是一种通用的编程语言。 虽然这在图6中并不直接可见,但安全性和日志记录似乎都是横切的。例如,关注安全性需要检查每个数据访问是否满足权限约束。这可以通过一些值检查来实现,然后通过触发器或存储过程在数据库中插入或更新数据。在这种情况下,系统的一些检查在任何情况下,转换本身都不会突出横切。我们可以说,贯穿各领域的性质已经改变。例如,与Java实现相比,一些横切关注点在数据库操作中更加本地化。在任何情况下,我们都可以声明转换模式1已经被应用于实现场景S5(转换到关系PSM)。见图6。关系型PSMPIM到Java PSM图8为Java平台定义了CVS的平台特定模型。与关系PSM相反,类的操作是显式的,横切变得更加透明。与前一个案例一样,平台的选择显然对整个模型有直接影响,因此可以被视为一个跨领域的问题。类似地,我们可以声明,对于场景S5,模式1也被应用。我们还观察到,fileId名称内容大小已删除时间戳directoryId文件PK tagId版本ID名称版本标签主键userId名称密码类型用户许可PKpermissionIdinstanceTypeinstanceName读取写许可用户PKpermissionIduserId存储库PKrepositoryId名称日志PKlogIdtimeStamp主机用户操作分支状态结果级分支PKbranchIdnamenumberrepositoryIdparent版本PKversionIdnumberdifferencefieldIdtimestamp目录PK目录ID名称已删除branchIdparentB. Tekinerdogan等人理论计算机科学电子笔记163(2007)4557很重要.场景S4(使用详细级别更新日志记录)例如应用于PIM级别,如前一节所述。在PIM到PSM的转换过程中同样可以应用此场景。在这种情况下,横切发生在PSM级别,因此成为特定于平台的。对于关系型PSM,这意味着日志主要适用于数据库操作,而在Java PSM中,调用log()操作的类的方法需要进行调整。 底线是,引入关注点的时间对横切性质有明显的影响。4.5PSM到PSM转换对于PSM到PSM的转换,应用场景S7(版本控制策略)、S8(添加持久化)和S9(升级到远程安全检查)。这些场景在场景S5(关系PSM)或场景S6(JavaPSM)之后应用看来这两种转变都有不同的影响。添加版本控制策略表2的场景S7(添加版本控制)的结果如图7所示。在这里,我们假设我们选择了Java PSM。请注意,这里只给出了完整类模型的一部分,因为其他类实际上仍然没有修改。 似乎没有(横切)问题,因为场景S7的结果只局限于Version类。需要注意的是,Version类的接口已经发生了变化,这些变化可能需要在其他一些类中进行处理,比如用户界面,因此从这个角度来看,结果并没有完全本地化。在这种情况下,应用模式1。版本版本战略-id-dbConnection-currentStrategy+calcDifference()+Tag()+add()+find()+update()+delete()+setStrategy()+calcDifference()+undoDifference()见图7。 在PSM这个案例还表明,添加一个新的关注点可能会对以前的转换产生影响。在这种情况 下 , 我 们 应 该 意 识 到 , 版 本 控 制 关 注 点 引 入 的 新 方 法 可 能 需 要 调 用SecurityManager和LogManager来检查权限和记录消息。也就是说,添加新的关注点可能很容易就需要重新检查冲突和重新转换。如果我们选择了关系型PSM,即从S5到S7,那么我们也必须在那里进行更改,因为关系型PSM现在必须响应完成版本控制反向版本控制58B. Tekinerdogan等人理论计算机科学电子笔记163(2007)45存储库不p«界面»安全接口+checkPermissiontp-id-dbConnection+Create()+Delete()+getName()+add()+find()+update()+delete()许可-id-dbConnectionSecurityManager+Create()+Check()tp1. * + add()+find()+update()+delete()1. *1. *用户-id-dbConnection1. *分支1. * + add()LogManager+LVL_严重+LVL_+LVL_CONFIG+LVL_调试+logLevel-logManagerInstance+Log()+getInstance()tp*-id-dbConnection+Create()+Delete()+getName()+getNumber()+add()+find()+update()+find()+update()版本文tptp*日志+家长不p-id-dbConnection+add()+find()+update()+delete()1. *目录tp*-id-dbConnection+add()+find()+update()+delete()-id-dbConnection+CheckIn()+CheckOut()+Difference()+Commit()+Remove()+Update()+Tag()*+NoOP()+add()+find()不p-id-dbConnection*+Tag()+add()+find()+update()+delete()1. **标签-id-dbConnection+add()传奇+家长持久变换引入的tp横切每行使用的版本控制策略。 这是允许正确检索文件的先前版本所必需的。此外,在这种情况下,为了保持一致性,需要对应用的关注点和重新转换进行全面的重新检查。添加持久性图8为Java平台定义了CVS的平台特定模型,包括持久化问题。为了将持久化添加到Java PSM(表2的场景S8),每个类都有一个名为dbConnection的私有属性。这表明持久化关注点也会导致PSM转换中的横切。因此,我们再次处理模式1。如果我们采用了面向方面的技术,那么我们就能够更好地分离这些关注点在关系PSM的情况下,持久化将被放置在不直接可见的数据库操作中。见图8。具有持久性关注的更新安全场景S9允许将安全问题转移到另一台计算机,可能是远程集中式计算机。在这种情况下,横切的影响有两个:B. Tekinerdogan等人理论计算机科学电子笔记163(2007)4559折 首 先 , 使 用 SecurityManager 的 类 需 要 特 殊 的 初 始 化 代 码 来 获 取 对SecurityManager的引用。 该代码将在转型后的每一堂课上。虽然代码可以生成,但它是分散的代码,是现有横切代码的替代品此外,远程方法调用可能需要更多的工作,例如在异常处理的情况下,以处理例如网络连接的故障日志记录关注点也必须进行调整,以允许远程操作调用,因为日志记录和安全性这两个关注点可以位于不同的计算机上,而安全性关注点仍然需要执行日志记录。这又是一个新添加的关注点对先前的转换有直接影响4.6PSM到代码转换场景S10和S11分别定义了到Java代码和关系数据库的转换。转换为Java代码为了转换为Java代码模型,需要提供足够的信息来提供完整的可执行代码。不幸的是,情况并非总是如此。例如,对于将Java PSM转换为Java代码模型的场景S9(更新安全性),PIM和PSM没有足够的信息来自动生成代码。通常,以下示例代码将用于实现场景1的安全性(添加安全性):System. out. println();然而,在场景S9的情况下,其中远程处理安全性,则在代码中需要附加信息。例如,如果我们假设安全访问的引用是通过文件获得的,而远程调用是通过CORBAORB完成的,那么我们必须插入相应的Java代码。显然,这使得自动生成变得复杂,并且大部分代码仍然必须手工编写。事实上,这也是一种特殊的横切,实际上是由于转换中缺乏信息而引入的。在这种情况下,应用模式3关系数据库关系PSM到“代码”(脚本)的转换包括生成“创建表”脚本以及可能生成更新查询。我们可以将转换视为模式1的实例化。在这里,横切仍然隐藏,以及仍然需要手工调整的部分5讨论和建议到目前为止,我们已经定义了转换模式,并使用一组预定义的选定场景说明了它们在CVS案例中的应用。在讨论这个问题的过程中,我们已经看到了几个有趣的问题,60B. Tekinerdogan等人理论计算机科学电子笔记163(2007)45安全日志版本控制PersistentRemote安全CIMPIMPSM代码MDA过程中的演化和模型转换在下文中,我们讨论了分析中确定的主要问题,并在此基础上得出了一些应对MDA过程中关注点演变的建议。• 由于语言缺乏表达能力,在目标模型中引入了横切如果目标模型表达能力不够,这可能会导致关注点分散即使关注点在源模型中分离,也可能发生这种情况。在给定的场景中,由于Java和关系数据库平台缺乏显式的抽象机制,安全性、日志记录、版本控制和持久化是横切的。缺乏面向方面的建模语言,导致方面不能与其他关注点整齐地分离。这意味着一个解决方案必须包括一种建模语言,用于MDA过程不同建模阶段的方面。• 源模型中的横切由于缺乏表达性而被目标模型继承在我们应用的场景中,我们可以得出横切可以从更高的抽象模型中继承。问题开始于CIM,在CIM中引入了一些可能的横切,随着到PIM、到PSM并最终到代码模型的转换,很明显横切问题在整个过程和不同的模型中传播,从而继承此外,横切的继承也适用于比CIM晚引入的横切,即在模型驱动的工程过程中的任何阶段都可能引入横切。一个例子是场景S8引入的持久性问题。这种关注的横切问题也被继承到代码模型中。横切继承的主要原因显然是目标语言表达能力的不足。为了避免在从CIM到代码的每个阶段中横切,我们可以将横切关注点的引入推迟到代码。然而,为了提供一个完整的解决方案,自然需要应用面向方面的建模技术,其中横切关注点使用显式的语言抽象来表示继承的关注见图9。 尽早引入关注点:继承横切• 在后面的阶段中引入的横切可能会与在早期模型中引入的横切关注点冲突B. Tekinerdogan等人理论计算机科学电子笔记163(2007)4561代码PSMPIMCIM远程安全持久性版本控制测井安全较早引入的关注点可能会通过较低的(具体的)模型抽象传播,因此值得考虑在流程的稍后引入关注点然而,另一方面,后来引入的关注点可能会有现有转换需要重做的问题。我们已经在介绍版本控制(场景S7)、持久化(场景S8)和远程安全(场景S9)时看到了这一点。所有这些场景都需要重新转换以前的关注点。图10中显示了一个对以前的转换有影响的关注点示例。在这里,我们看到在PSM级别引入版本控制对早期阶段中关注点安全和日志的转换有影响。引入关注重变换空间继承关怀见图10。 延迟引入关注点:与早期的转换• 转换顺序可以导致不同的横切转换的顺序在横切的数量中扮演着重要的角色。前面两点已经说明了在MDA过程中较早或较晚引入关注点的影响此外,在同一个抽象级别中,排序也很重要例如,安全性和日志记录问题相互影响,如第4.3节所述。在这种情况下,我们必须明确地推理语义冲突和排序对模型转换的影响。如果转换能够意识到排序语义,这将是值得的[11]。因此,我们应该充分理解这些问题的范围[4]。• 在目标模型中引入横切变换显然,所有的垂直模型转换,包括CIM到PIM、PIM到PSM和PSM到代码,都引入了一些横切行为。这种横切行为就是平台关注点本身。不幸的是,很难将平台问题分开。至少我们在分析中无法证明这一点。在模型彼此更接近的情况下,转换更容易。例如,在给定的分析中,我们选择将基于UML的PIM [1]转换为基于Java的PSM。这自然不同于将基于UML的PIM转换为关系PSM,后者会导致不同类型的横切(下一页)。• 转换可能导致不透明的横切在4.4.1节中,我们将PIM映射到关系数据库PSM,62B. Tekinerdogan等人理论计算机科学电子笔记163(2007)45我们已经看到横切在模型中是不可见的与Java实现相比,一些横切关注点在数据库操作中更加本地化这表明,平台的选择不仅影响关注点的横切程度,还影响横切的可见程度。在我们的关系PSM中,横切不是直接可见的,因此,与Java PSM相比,更难解决。横切的可见性对于下一个转换(代码)当然也很重要。• 横切可能在转换后消失如果转换可以将横切映射到较低模型中的模块化程度更高的关注点,则如前所述,这要求目标模型包括表示方面的符号,并且转换必须知道关注点的横切性质,并将其映射到目标模型中的方面。我们还没有为此展示一个面向方面的模型,但是参考了现有的面向方面的建模技术。6结论我们已经提供了一个系统的分析横切关注的模型驱动架构(MDA)的方法。我们已经用MDA方法表达了一个案例,并发版本控制系统(CVS),并定义了到计算独立模型(CIM)、平台独立模型(PIM)、
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 磁性吸附笔筒设计创新,行业文档精选
- Java Swing实现的俄罗斯方块游戏代码分享
- 骨折生长的二维与三维模型比较分析
- 水彩花卉与羽毛无缝背景矢量素材
- 设计一种高效的袋料分离装置
- 探索4.20图包.zip的奥秘
- RabbitMQ 3.7.x延时消息交换插件安装与操作指南
- 解决NLTK下载停用词失败的问题
- 多系统平台的并行处理技术研究
- Jekyll项目实战:网页设计作业的入门练习
- discord.js v13按钮分页包实现教程与应用
- SpringBoot与Uniapp结合开发短视频APP实战教程
- Tensorflow学习笔记深度解析:人工智能实践指南
- 无服务器部署管理器:防止错误部署AWS帐户
- 医疗图标矢量素材合集:扁平风格16图标(PNG/EPS/PSD)
- 人工智能基础课程汇报PPT模板下载
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功