基于MDA的软件开发方法的研究

2017-07-25 07:27袁晓桂吴掬鸥
现代电子技术 2017年14期

袁晓桂+吴掬鸥

摘 要: 传统软件开发模式由于其最终生成产品是程序代码,难以适应需求的快速变化,软件开发过程中不可避免地出现非标准化与非自动化的问题。为了解决上述问题,在介绍MDA开发过程的基础上,探讨了平台无关模型和平台相关模型的定义、映射和转化等,并将MDA开发方法和传统软件开发方法进行了分析比较。以决策支持系统为例,描述通过MDA进行软件开发的过程。结果显示,基于MDA的软件开发方法能够由软件模型指导自动生成软件成品,降低了系统的开发成本与设计效率。

关键词: 模型驱动架构; 平台相关模型; 平台无关模型; 模型转换

中图分类号: TN921?34; TP311.5 文献标识码: A 文章编号: 1004?373X(2017)14?0052?03

Abstract: Because the final product generated by traditional software development mode is the program code, it is difficult to adapt to the rapid change of the demand, and the non?standardization and non?automation problems are inevitable in the process of software development. In order to solve these problems, the MDA development process is introduced, the definition, mapping and transformation of the platform independent model and platform dependent model are discussed, and the MDA development method and traditional software development methods are analyzed and compared. Taking the decision support system as an example, the process of software development based on MDA is described. The analysis results show that the software development method based on MDA can automatically generate the finished software products by means of software model, which can reduce the development cost and improve design efficiency of the system.

Keywords: MDA; platform dependent model; platform independent model; model transformation

由于傳统的软件开发模式其最终生成产品是程序代码,难以适应需求的快速变化。虽然目前部分生产环节已经有模型可以参与,但模型仍不能应用于大规模的软件开发中,因此软件开发过程中不可避免地出现非标准化与非自动化的问题。为了解决软件开发中存在的这些问题,OMG组织发布了模型驱动架构(Model Driven Architecture,MDA)[1?4]。本文在介绍MDA开发过程的基础上,探讨了平台无关模型和平台相关模型的定义、映射和转化等,并将MDA开发方法和传统软件开发方法进行了分析比较。

1 MDA体系结构

模型驱动式软件开发是指通过对问题进行分析然后建模、转化和精化模型,最终生成可执行代码的过程。模型驱动架构是一种建立业务逻辑抽象模型并自动产生完备的应用程序的方法,其核心思想是通过计算无关模型(Computation Independent Mode,CIM)描述系统的行为与功能,用与使用平台无关的建模语言(例如UML)来构建在实现时无需关心所用技术的平台无关模型(Platform Independent Mode,PIM),随后平台无关模型通过一定的转化规则与辅助工具被转化为平台相关模型(Platform Specific Mode,PSM),最后PSM精化生成可执行代码。MDA软件开发方法将标准的系统模型放在了驱动架构的核心位置,如图1所示。MDA通过PIM和PSM将系统说明和实现技术与平台独立开来,确保软件开发成果不受需求变化与技术变迁的影响。

MDA模型组织分为4层结构,如图2所示。下一个层次是上一个层次的应用,上一个层次是下一个层次的基础,MOF位于M3层,其是MDA框架中基础与核心的模型,同时也是M2层所有模型的元模型。M2层为MOF上不同模型所对应的模型语言,不同的领域通过M2层能够获取与所在领域相匹配的建模语言,为M1层的建模提供了建模符号。M1层是软件开发过程中建模人员采用模型语言为企业应用建立的模型描述,PIM,CIM,PSM应用模型就位于该层之中。最底层为M0层,即实例层,其将M1层的模型转化为具体的可使用的应用程序。

MDA的核心是由OMG制定的一系列标准,元对象设施(Meta Object Facilit,MOF)、统一建模语言(Unified Modeling Languag,UML)、数据仓库元模型(Common Warehouse Metamodel,CWM)、XML元数据交换(XML?based Metadata Interchange,XMI)以及对象约束语言(Object Constraint Language,OCL)[5?8]。这些标准构成了一个构建模型驱动架构的基准,其不但决定了MDA的核心架构,并在State?of?art的系统建模中起到了关键性的作用。

2 MDA实现与基于模型驱动架构的软件开发

基于MDA的软件开发过程可分为[9]:

(1) 模型驱动软件开发过程。此方案中使用的模型为PIM和PSM,利用模型驱动代码的产生,具体操作步骤为代码通过模型产生,接着通过人工的方式进行商业逻辑代码的编写,最后将手工编写的商业逻辑代码进行部署及发布。

(2) 通過模型驱动来控制系统运行时的行为。此时软件模型能够被一个操作系统运行时通用模型直接执行,该过程无需产生具体的软件代码,最后部署和发布的仅是模型,因为模型中已经将应用程序的各个层面均做出了表达。

基于MDA的软件开发包括建模、开发和发布三个阶段,如图3所示。

模型阶段:创建无关平台模型PIM,并以此为核心,ISM和PSM均可通过 PIM自动转换生成。该模型应用如XMI的MOF映射方法进行映射。

开发阶段:产生平台无关代码,即MDA工具自动产生和程序员手工编写客户端及服务器端的代码。MDA中代码的生成是MDA工程的最终目标,其具体是指PSM到代码的映射,映射生成 ISM模型。

发布阶段:该阶段将诸多内容放在一起组成可运行组件,其包括模型、MOF映射、手工编写的代码和MDA运行时库及待发布的配置信息,最终将组建发布到运行平台上。

3 开发过程比较

虽然基于MDA的软件开发过程是一种新型模型驱动软件开发方法,与传统的软件开发方法相比具有以下优点:

(1) 模型变换可自动实现。相比较传统的软件开发过程由手工完成模型与模型、模型与代码之间的变换,基于MDA的软件开发过程均是MDA开发工具自动完成的。

(2) 便于维护,模型与代码同步。在基于MDA的软件开发过程中,模型通过转换即可直接生成可执行代码,无需要其他步骤,从而实现模型与代码的同步。软件开发人员对软件的维护重点从程序代码变为与技术平台无关、与业务逻辑相关的平台无关模型。

(3) 开发效率高,软件可靠性强。MDA模型架构对系统的不同层次进行抽象,每一层代表的含义简单易懂,从而使得系统的整个框架可被软件开发人员清晰地了解与掌握,而不必困惑于具体的实现技术。由于模型通过转换即可直接生成可执行代码,使得开发过程中减少了编码环节,所以若构建PIM正确,整个系统的正确性便可得到保证。

(4) 业务逻辑模型独立于技术实现平台。PIM模型可根据技术平台的不同,自动生成基于该模型的软件系统,从而实现PIM模型与技术实验平台的独立。

(5) 模型是程序生成的基础设施。在基于MDA的软件开发过程中,模型被作为其生命周期中的设计工作,是程序生成的基础设施。模型通过一系列转化最终可自动生成可执行代码。

4 基于MDA的决策支持系统开发实例

以某钢铁企业中的决策支持系统为例,设计基于MDA的决策支持系统。

步骤1:描述系统开发需求,建立CIM。该部分模型可由系统分析文档来描述,如可以向系统增加新的算法;为了便于管理,可分类算法;可对算法进行查询与删除等操作。

步骤2:根据需求人工抽取PIM,如图4所示。该部分模型利用UML profile来描述,包含四个类:挖掘算法惟类,通过惟一ID标识算法,每个算法必须属于某个分类;注册类,向系统注册新的算法,并检测其是否符合系统要求;维护类,对挖掘算法进行查询与删除等维护操作;类别类,挖掘算法的分类。

步骤3:生成PSM,实现PIM到PSM的转换。本文应用IBM的MTF来定义和执行映射规则,应用映射规则,可将UML模型转化为ecore模型。

步骤4:生成可执行代码。步骤3生成了基于EMF的ecore模型的PSM,接着使用EMF代码生成的Java 发射器模板(Java Emitter Templates,JET)工具将ecore模型转化为可执行Java代码。

以上4个步骤详细介绍了基于MDA的软件开发过程。使用MDA开发方法,模型的建立与转化规则的制度是其重点,这些模型利用UML profile来描述,通用性强,独立于技术平台,因而在设计类似系统时可直接使用,大幅降低了系统的开发成本与设计效率。

5 结 论

本文在介绍和分析了MDA 的架构和基于其软件开发过程的基础上,将其与传统软件设计方法进行了对比,说明了其在软件开发过程中的显著优势,并在文中最后设计基于MDA的决策支持系统,证明了使用MDA开发方法设计的软件系统独立于技术平台,通用性强、可移植性强,其可通过建模、转化和精化模型,直至最终生成可执行代码,大幅降低了设计成本且提高了开发效率。

参考文献

[1] 赵晓峰.模型驱动的软件开发模式研究[J].信息技术与信息化,2015(7):190?191.

[2] 李晋,战德臣,聂兰顺,等.支持模型驱动式软件开发的建模语言框架研究[J].南京大学学报(自然科学版),2010,46(4):464?475.

[3] 夏焱.MDA模式驱动的应用软件商店研究与实现[D].成都:电子科技大学,2011.

[4] 刘晓宇.基于模型驱动的软件开发方法研究[J].信息系统工程,2012(9):98?99.

[5] MELLOR S J, BALCER M J. Executable UML: a foundation for model?driven architecture [M]. New York: Addison?Wesley, 2002.

[6] Object Management Group. Request for proposal: MOF2.0 query /views / transformations [M]. CA, USA: RFP, 2002.

[7] POOLE J D. Model?driven architecture: vision, standards and emerging technologies [M]. CAT, USA: Hyperion Solutions Corporation, 2001.

[8] APPUKUTTAN Biju, CLARK Tony, REDDY Sreedhar, et al. A model driven approach to model transformations model driven architecture: foundations and applications [M]. New York: Addison?Wesley, 2003.

[9] 张衡.基于模型驱动的平台开发研究与实现[D].长春:长春理工大学,2013.