没有合适的资源?快使用搜索试试~ 我知道了~
可在www.sciencedirect.com在线获取理论计算机科学电子笔记279(3)(2011)3-25www.elsevier.com/locate/entcs通过模板从独立于平台的模型实现平台变体应用程序Nuno Amalio1 Christian Glodt2 Frederico Pinto3Pierre Kelsen4卢森堡大学6号河 Coudenhove-Kalergi,L-1359卢森堡摘要通过提高从代码到模型的抽象层次,模型驱动开发(MDD)强调设计而不是实现和平台特定性。本文提出了一个实验与MDD的方法,它采取平台无关的模型,并生成代码的各种平台。平台代码由模板生成。我们的方法是基于EP,一个正式的可执行建模语言,辅以OCL,和FTL,一个正式的语言模板。本文的实验生成代码的移动平台Android和iPhone从同一个抽象的功能模型的案例研究。实验表明了MDD解决当今问题的可行性,突出了MDD方法的许多好处和改进的机会关键词:软件产品族,模型驱动开发,可执行模型,模板。1引言模型驱动开发(MDD)的目标是使软件工程师能够专注于设计。这是通过使用表达设计概念的模型来实现的,这些设计概念从实现和特定于平台的细节中抽象出来。尽管在过去的二十年中编程语言和平台的抽象水平有所提高,但当前平台技术的多样性和复杂性使得代码的手动开发成为一项艰巨且昂贵的任务[21]。现代平台需要相当深入的技术知识,非专业开发人员很难掌握,一个突出的例子是移动设备[15,14,1]。这就切断了创造力的一个重要来源:有才华的人可能会受到启发而进行创造1电子邮件:nuno. uni.lu2电子邮件:christian. uni.lu3电子邮件:fgasparp@gmail.com4电子邮件:pierre. uni.lu1571-0661 © 2011 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2011.11.0354N. Amálio等人理论计算机科学电子笔记279(3)(2011)3新颖的应用程序,但只有少数人有时间、精力和技术技能来深入研究底层平台编程的复杂性。平台复杂性和多样性的问题建议向更高的抽象层次发展然而,现代设备的新功能要求实现正确评估设计决策。交互[15,14,1],性能和功耗[22],在移动计算中很常见,很难从抽象模型中进行分析;它们需要通过实现进行实验。在MDD中,这些问题可以通过以模型为中心的方法来解决:所有较低级别的代码都是从系统的功能模型中生成的,在模型驱动架构(MDA)中也称为平台无关模型(PIM)[18],这是可能的,前提是模型完全描述了系统的结构和行为。这种方法解决了平台的复杂性和多样性,并使设计模型的实现能够尽早实现。由于其抽象级别,模型可以被连接起来描述相关产品的系列,从执行平台的许多复杂性中抽象出来。从这样的模型,有可能构建可重用的转换,使衍生的平台变量的产品。最后,从模型和转换到代码,可以获得原型,用于设计决策的实验。本文提出了一个实验,我们的MDD方法的基础上可执行的建模和模板。我们的方法可以从相同的功能模型为各种平台生成代码。具体如下:●应用程序描述使用PIM,描述结构和行为。PIM是用抽象的设计原语来表达的,但又足够具体,可以从中生成多平台代码PIM●特定于平台的工件是通过实例化平台目录的模板生成的。替代执行平台的选择是产品系列中的一个变量点,其中变量通过实例化模板的代码生成自动获得。模板目录构成由平台专家维护的知识这里提出的方法基于形式语言:(a)模型使用可执行建模语言EP [16,17]表示,并补充了OCL [23],(b)模板的目录使用形式模板语言(FTL)表示[4,2]。这种方法为平台工件的生成提供了一级状态:生成的可重用资产在FTL中描述。这里提出的实验使用当前的问题来评估这种方法:构建具有相同功能但需要在不同执行平台上运行的移动应用程序。谷歌的Android和苹果的iPhone移动平台就是例证2背景我们给出了EP(用于表达抽象模型的语言)和FTL(用于表达模板的语言)的一些背景N. Amálio等人理论计算机科学电子笔记279(3)(2011)352.1EPEP [16,17]是一种形式化建模语言,旨在可视化地表达可执行模型。EP表达了系统的结构和行为。EP模型是围绕类构建的;每个类包括属性、查询和事件,并补充了OCL文本描述。附录A提供了EP类的几个定义;不同的元素类型用字母装饰来区分:属性表示EP类的结构特征。属性包括名称、类型和初始化(在OCL中描述)。图类书。A.1a(第21页)定义了属性bookId、标题、isbn、作者和副本。例如,作者的初始化设置{}这将作者集合初始化为空集。从某个类中检索信息(从语义上讲,查询属性是一个数学函数)。一个查 询 包 含 一 个 名 称 、 参 数 、 类 型 和 一 个 OCL 定 义 。 例 如 , 定 义 查 询existsMemberof classLibrary(图A.1e)的OCL是:members->exists(m:Library::Member|m.libraryNo = libNo和m.password = pw)事件描述类的对象的状态如何改变。一个事件包括几个事件边缘、参数和一个保护(一个OCL谓词),它指定了执行事件的条件:如果保护为真,则执行事件边缘;否则事件不做任何事情。事件边缘有三种类型:影响、拉和推。一个impact edge表示一个事件如何改变某个类的属性的状态副本这将属性设置为事件setCopies的参数copies。推边就像一个事件调用,通过它调用另一个事件它包括一个守卫,指定调用(或推送)事件的条件推送的例如,复制类的事件保留(图1)。A.1c)推动事件reserveOk和reserveFailed;每个事件都有一个保护;参数映射为每个推送事件用OCL表达式来描述拉沿定义事件触发器;它说当前事件在其他事件(如拉沿中定义的)也被 触 发 时 被 触 发 。 像 推 边 一 样 , 拉 边 也 包 括 防 护 件 。 例 如 ,SearchController类的searchClicked事件(图A.5a)拉取Button类的clicked事件(图A.5b)。A.7b)。全球系统行为是一系列事件。 为了解决复杂性,EP模式6N. Amálio等人理论计算机科学电子笔记279(3)(2011)3□模块JavaClassCat Class==public classString {[privatepropName>:propTy>;]public classString:String;publicclassString;}}[类方法]图1.一、 Java类的FTL模板(左)和模板的示例实例化(右)。被划分为不同的领域,代表不同的主题。域是自包含的;它们包含EP类的集合,这些EP类不具有对此域的外部引用然而,现实的系统是由各种必须相互作用的域组成的。在EP中,这意味着行为从一个域传播到另一个域。EP使用网桥链接域。与域不同,桥可以包括EP类,这些EP类具有到所链接的域的外部链接。通过这些外部链接,事件可以跨域传播。一个EP模型分为桥梁和域图。第六章Democles5 [12]是支持EP语言的工具。EP模型可用于描述系统的平台无关模型[12,11]。本文介绍了EP如何描述一系列相关系统,并提出了一种基于模板的EP代码生成策略。2.2FTL形式模板语言(Formal Template Language,FTL)[4,2]是一种用于表达任何目标文本语言模板的形式语言。它具有通用的数学语义,不受任何平台或执行环境的约束。FTL是生成的;它描述某种目标语言(这里是Java和Java-C)的句子,并在提供实例化时生成句子。FTL这里使用的FTL版本增加了模板的命名和模块化。FTL模块包含一组模板;模块可以导入其他模块。尽管有这些变化,语言的语义基本上是[4,2]中定义的。我们已经构建了FTL的Java实现,它已经集成到Democles中[12]。为 了 说 明 FTL , 考 虑 图 1 ( 左 ) 的 FTL 目 录 。 这 定 义 了 模 板 模 块JavaClassCat,包含描述Java公共类的模板,包括许多Java私有属性和方法。目录由模板Class和ClassMethod(未显示)组成。类包括占位符ClName(占位符放在>之间<),表示要生成的类的名称,以及两个用于属性和类方法的FTL列表(列表放在[ ]之间)。第一个列表包括两个占位符,分别表示属性的名称和类型。第二个列表包括对另一个模板(此处未显示)的模板引用(符号“”)。这个模板可以被实例化为图1(右)的Java类Book。5http://democles.lassy.uni.lu/N. Amálio等人理论计算机科学电子笔记279(3)(2011)37图二.通过实例化平台目录的FTL模板,从EP模型生成平台特定代码。3方法概述本文中探讨的MDD方法如图2所示。EP代码生成框架包括三个主要组件:EP模型映射、FTL目录和OCL转换器。它们是:●生成基础设施的主干由针对不同执行平台的FTL模板目录形成(图2,内部中间框)。平台特定代码从这些模板目录中生成。●在生成平台代码之前,需要将EP PIM映射到平台模板。这涉及为每个EPPIM构建平台映射(图2中的框EP模型映射),其部分由用户指定。根据映射中定义的内容,生成基于使用来自EP模型的信息实例化模板●基于EP的PIM包含OCL代码片段。通过OCL转换器将这些转换为平台语言(参见图2中的OCL转换器框)。这些翻译器产生用于实例化目录的模板的平台语言文本。使用此方法构建应用程序的过程如下:(i) 应用程序开发人员使用独立于平台的概念为一系列应用程序构建EP应用程序模型(ii) 平台技术专家开发FTL模板的平台目录。开发模板的过程包括咨询应用程序设计人员,以了解他们需要什么样的平台结构。(iii) 然后,应用程序开发人员和平台专家一起为EP模型构建平台映射。(iv) 根据EP模型及其平台映射,可以通过实例化平台目录的模板来生成特定于平台的传奇实例化定义组件EP代码生成框架OCL翻译翻译A翻译B⋮FTL目录A平台目录B平台目录⋮EP模型映射EP模型EP模型映射用于平台A平台B的App XApp XApp X8N. Amálio等人理论计算机科学电子笔记279(3)(2011)3ÒÒÒ//FTL模板目录//对于Android平台模块AndroidCat导入CoreJava导入AndroidGUI导入AndroidPersistence导入AndroidDateSupport导入JavaStringUtils导入AndroidSupport//FTL模板目录//对于iPhone平台模块iPhoneCat导入CoreObjC导入iPhoneGUI导入iPhonePersistence导入 iPhoneDate 支 持 导 入ObjCStringUtils图三. FTL主要目录Android(左)和iPhone(右)平台InitAndGetPropMethods ==publicvoidonDestination(){return localPropCodeResultVariableName>;}public get (){if(this._isInitialized)return localPropName>;this.setlocalPropName>(this.initiallocalPropName>());this._isInitialized = true;把这个退了。;}]□Class实现==public classclassType>implementsOCLAny{ConstructorMethod构造函数MethodWithValuesInitAndGetProp方法SetProp方法RemoteEventMethods查询Prop方法OCLanyImplementation}□图四、来自CoreJavaFTL目录的FTL模板定义4FTL模板目录iPhone和Android为了支持这里提出的实验,我们已经为Android和iPhone平台构建了FTL模板的目录(可在www.example.com获得http://democles.lassy。 uni.lu/)上提供。这些目录已经使用超光速的模块化结构的结构。图3显示了Android和iPhone的主要FTL目录,定义了导入多个子目录(模块)的模块AndroidCat和iPhoneCat。这些模板模块支持代码生成:核心模块定义Java(所有基于Java的平台通用)和Java-C的核心结构;GUI模块支持Android和iPhone中GUI的构建;持久化支持文件处理;字符串utils支持字符串处理。AndroidSupport目录提供了一些Android中所需的额外模板(例如配置Android应用程序所需的xml文件图4显示了CoreJava目录中的模板。模板类-实现,生成实现EP类的Java类。它包含一个模板引用的集合;模板InitAndGetPropMethods生成EP类的Java实现属性。N. Amálio等人理论计算机科学电子笔记279(3)(2011)39(a)开始窗口(b)登录窗口(c)搜索窗口(d)搜索结果窗口(e)图书详细信息窗口(f)会员窗口图5.iPhone上的简单图书馆浏览器移动应用程序的UI5实验及其案例研究这里介绍的实验使用了一个案例研究:简单的移动图书馆应用程序。此应用程序提供以下功能:●用户可以根据几个搜索条件搜索图书,从搜索结果中提供有关特定图书的详细信息;用户可以预订从图书馆收集的图书。●用户可以查看借款信息并续订借款。图5显示了这个应用程序应用程序以加载(或启动)屏幕开始(图5a)。然后,用户可以登录系统(图5b)或在图书馆的目录中搜索书籍在提交搜索请求之后,用户然后可以在列表中看到搜索结果(图5d)并且从列表中看到特定书籍的细节(图5e)。一旦用户登录,他们就可以访问成员窗口(图5f),允许他们10N. Amálio等人理论计算机科学电子笔记279(3)(2011)3Ⓧ见图6。 移动图书馆EP模型的域视图描述域和桥(a) 图书馆领域(b) 应用程序桥(c) 持久域见图7。 移动图书馆看他们借的书,并要求续借。下面介绍EP模型并说明此案例研究的生成过程。实际模型和生成的代码 , 以 及 如 何 在 iPhone 和 Android 平 台 上 运 行 实 验 的 说 明 , 可 在www.example.com上http://democles.lassy.uni.lu/。6移动图书馆的EP模式EP模型是围绕桥和域构建的图6显示了构成移动图书馆EP模型的桥和域桥通过符号^与域区分开来。与域不同,桥可以有传出边。符号“绑定”用于标识绑定域,这需要显式的平台映射(参见第7节,非绑定域不需要显式的映射)。该模型分为五个EP域和三个桥。接下来的部分描述了移动图书馆的EP模型的结构和行为N. Amálio等人理论计算机科学电子笔记279(3)(2011)311见图8。 MobileLibraryGUI桥6.1结构6.1.1图书馆领域这个域封装了移动图书馆应用程序的问题域。其结构模型(Fig.7a)如下:●Library包括EP类Library(表示整个图书馆的数据)、Book、Copy(表示一本书的副本)、Author和Member。这些类别的EP定义在图中给出A.1.●一本书可以有许多作者和许多副本。它的属性是bookId(一本书标识符),isbn和标题。●一本书只有一本书。它的属性记录了一个拷贝标识符(copyId)、借出拷贝的到期日、已续订的次数(每次续订都会设置一个较晚的到期日)以及拷贝●图书馆会员可以从图书馆借书(borrows),也可以预订图书,这些图书可供收藏(toCollect)。其属性记录成员●Author的属性记录了作者6.1.2应用桥这 座 桥 ( 图 ) 7b ) 作 为 整 个 移 动 应 用 程 序 的 控 制 中 心 它 与 桥LibraryPersistenceBook 和 MobileLibraryGUI 以 及 Library 域 进 行 交 互 。Application包含Main类,它在系统启动时被实例化。EP对Main的定义见图。A.2.6.1.3LibraryPersistence桥这个桥(图7c)负责将库数据加载到内存中。它包含类LibraryLoader,它读取库数据文件并创建构成库域的类的实例。类LibraryLoader的EP定义在图中给出。A.3.12N. Amálio等人理论计算机科学电子笔记279(3)(2011)3(b)第(1)款(c)第(1)款(一)(d)见图9。 域(a)GeneralGUI,(b)持久性,(c)StringUtils和(d)DateProcessing6.1.4MobileLibraryGUI桥此桥(图8)封装了应用程序的平台无关GUI设计。 它充当Library问题域和实际GUI元素(域GeneralGUI)之间的中间层,使用域DateProcessing处理日期。此域的每个类表示GUI的其中一个窗口的控制器(或外观[10])●启动控制器(见图A.4a EP定义)控制启动窗口(见图5a)。●ViewsController(EP定义见图A.4b)控制两个视图或选项卡(见图A.4b)。5b、5c和5f)。●LoginController(EP定义见图A.4c)控制可能位于视图窗口内的登录窗口(见图A.4c)。5 b)。●SearchController(EP定义见图A.5a)控制视图窗口(见图5c)内的搜索窗口视图;它保存对SearchResultsController(属性resultWindow)的引用以显示搜索结果。●SearchResultsController(EP定义见图A.5b)控制搜索结果窗口(见图5d);它保存对BookDetailController(属性resultWindow)的引用,以显示所选图书的详细信息。●BookDetailController(EP定义见图A.6a)控制显示特定书籍详细信息的窗口(见图A.6a)。5e)。●用户控制器(EP定义见图A.6b)控制可能位于视图窗口(见图A.6b)内5f)。N. Amálio等人理论计算机科学电子笔记279(3)(2011)3136.1.5GeneralGUI绑定域这个结合域的类(图9a)代表GUI结构。它们的EP定义如图A.7所示;它们如下:(a)TextField,(b)RecommationDialog(向用户提供“是”、“否”查询的对话框6.1.6持久性绑定域这个绑定域(图9b)封装了基于文件的持久性。它包含类FileData,它从文件系统中的文件加载和保存数据。 图A.8a中给出了文件的EP定义;该类包含事件签名的定义,当从模板生成代码时,这些事件签名与行为的实际定义绑定。6.1.7StringUtils绑定域该结合域(图9c)封装字符串相关的功能。它包含StringTokenizer类(参见图A.8b中EP的定义),它将字符串分解为令牌。该域的定义包括签名定义,其在代码生成时绑定到行为的实际定义6.1.8DateProcessor绑定域这个绑定域(图9d)包含了DateTime类(参见图A.8c中的EP定义),它处理日期(当借款被更新时,它计算新的到期日)。与StringUtils域一样,该域仅定义签名,这些签名在代码生成时绑定到实际的行为定义(或主体)。6.2行为在EP中,行为是围绕在对象上运行的事件构建的。全局系统行为是一系列事件.移动图书馆应用程序包括以下功能单元:(i) 应用程序初始化(库数据加载到内存中)。(ii) 用户已通过身份验证。(iii) 用户在图书馆中查找书籍(iv) 用户可以续借。(v) 用户保留藏书。下面通过借助Democles(EP的工具)生成的事件树,对这些功能14N. Amálio等人理论计算机科学电子笔记279(3)(2011)3(a) 事件初始化和文件打开(b) 文件关闭并将库数据设置到存储器中图10。系统初始化见图11。身份验证全局事件见图12。搜索图书全局事件6.2.1初始化在移动图书馆应用程序中,初始化将图书馆图10显示了与系统初始化相关的EP事件树。初始化包括三个步骤:(a)打开文件(图10a),(b)从文件中读取数据,(c)将数据设置在内存中(图10b)。初始化是通过事件init触发的,它在Main6的唯一实例上运行。6.2.2认证图11显示了与身份验证相关的事件树 当用户按下登录窗口的“登录”按钮时,会触发此操作(图1)。5b),这导致调用Main中的authenticate事件,然后将其分派到Library实例。然后,事件树根据身份验证的结果分支:事件loginOk和loginFailed。6.2.3搜索图书图12显示了与搜索图书馆书籍相关的事件树。启动移动应用程序。当用户按下“搜索”按钮时,在搜索书窗口中触发该事件然后,将事件分发到执行实际搜索的Library实例(事件6这是在EP系统中运行的第一个事件。N. Amálio等人理论计算机科学电子笔记279(3)(2011)315图13岁与会员续借图书相关的事件树图14个。与会员预订图书关联的事件树searchBook ) 。 然 后 , 搜 索 结 果 通 过 事 件 searchFinished 返 回 到SearchController实例,这将导致创建SearchResultsController的实例。6.2.4书籍更新图13显示了与会员续借图书相关的事件树,这是通过会员窗口完成的(图5f)。 事件通过以下方式触发当用户按下“确定”按钮时,会出现确认对话框。然后,该事件被分派到BullerController实例,该实例在与所选副本对应的Copy实例上调用事件renew。续订操作可以成功(事件renewOk)或不成功(事件renewFailed);后者发生在达到续订限制时。6.2.5图书预订图14显示了与图书预订相关的事件树,预订通过图书详细信息窗口完成(图14)。A.6a)。 当用户按下“确定”按钮时,通过确认对话框触发事件。然后将该事件调度到BookDetailController实例。然后考虑两种情况:(a)有成员登录(事件reserveCopyOk)或(b)没有成员登录(事件reserveCopyNotOk)。 如果存在已登录的成员,则保留操作可以继续,并 且 在 选定的 Copy 实 例 上 触 发 事 件 保 留 。 保 留 可 以 成 功 ( 事 件reserveOk)或不成功(事件reserveFailed);后者发生在无法保留副本时。7代码生成和平台映射平台代码是通过实例化模板生成的。为此,用户需要配置生成设置,即:目标平台、要使用的所选平台的模板目录以及模板参数的映射16N. Amálio等人理论计算机科学电子笔记279(3)(2011)3(a) 平台选择(b) 结合结构域的FTL目录(c)EP类的模板图15。Democles中EP模型的映射配置to model模型elements元素.配置过程如下7:(i) 第一步是选择目标平台。 每个平台与FTL目录相关联(在图15a中,用户选择android平台),所有平台特定的工件从所选平台的目录的模板生成。如图3所示,平台目录由子目录组成;其中一个目录是核心,它说明如何生成非绑定EP域的EP类。(ii) 第二步,为每个绑定域分配FTL模板子目录(不能分配核心子目录)。这样做是为了减少可以映射到绑定域类的模板数量在图15b中,用户将子目录AndroidGUI分配给GeneralGUI绑定域。(iii) 第三步是将每个结合域的EP类分配给模板。对于每个类,用户需要描述EP类的属性和事件如何映射到模板变量。在图15c中,用户将ButtonTemplate分配给EP类Button,并将点击事件和属性文本映射到所选模板的变量。根据映射,Democles构建FTL实例化结构,用于实例化FTL模板以生成平台应用程序。7配置步骤在用户调用Eclipse上的“Export”选项时启动。N. Amálio等人理论计算机科学电子笔记279(3)(2011)317绑扎和桥梁8类28事件和属性280iPhoneAndroid模板目录二千四百三十二二千二百六十六应用程序代码十四、一万一千(a) 建模单位(b) 模板目录、生成的应用程序和平台基础设施表1本文所示的实验图8评价我们在这里提出的实验目标是:(a)从EP PIM为各种平台生成代码,(b)使目标平台的非专家用户能够构建特定于平台的应用程序,以及(c)提供一个验证需求和实验设计决策的环境。我们现在使用这里提出的实验来评估这些目标。8.1从EP PIM生成平台代码我们已经实现了这里提出的实验与建模语言EP补充OCL和FTL,一种语言的模板。这一方法已被纳入欧洲议会的工具Democles 。我们已经说明了EP`FTL与移动平台Android和iPhone的组合[19]。根据第6节中介绍的EPPIM,我们为这两个移动平台生成了代码。这两个应用程序实现了EP PIM中所述的相同功能。这些应用程序是通过实例化每个平台目录的FTL模板并考虑一些基础设施代码(支持从OCL翻译)生成的。第6节的EP模型没有任何特定于域的细节;它被用来为Android和iPhone生成代码,也可以用来为其他平台生成代码(这需要平台FTL目录)。EP PIM和平台模板通过单独的映射链接(第7节)。表1列出了我们实验的几个数据。案例研究的EP模型共有8个包装单元(桥或域),28个EP类,共280个事件和属性(表1a)。表1b给出了几个基于平台代码行的数字。iPhoneiPhone应用程序总共包含14709行平台代码;Android虽然我们的案例研究可以被认为是相对较小的,但它足够大,可以做一些有用和实用的事情。在撰写本文时,它是我们的EP模型库中最大的案例研究8iPhone平台往往会导致更多的代码行; iPhone的编程语言,Java-C,没有Java那么抽象,与Java不同的是,它使用头文件。18N. Amálio等人理论计算机科学电子笔记279(3)(2011)38.2由非平台专家第6节的EP模型是平台无关的。它讨论了问题域、图形用户界面和持久性概念,而没有涉及任何特定于平台的细节。开发EP模型的团队由三个人组成,其中只有两个是Android和iPhone的专家然而,所有开发人员都可以理解和处理EP PIM,并从中生成iPhone和Android应用程序; EP构成了一个平台无关的媒介,不同的用户可以通过它进行通信。在这种情况下,最初开发模型的进展缓慢。这是因为最初,我们需要更多的模板,并且需要时间来构建它们并使它们正确。一旦有了模板并且它们变得成熟,那么开发就相对快速和直接,模型开发人员就可以独立于平台开发人员。8.3需求验证和设计决策实验Democles(EP的工具)的可视化功能有助于构建模型和评估设计决策。域视图显示了不同类之间的依赖关系,这些依赖关系使模型给出了一个整体视图(例如图1和图2)。7和6);根据我们的经验,其调查有助于改进设计。事件树显示了与事件(例如图10和图11)相关的执行路径,帮助开发人员发现错误并改进整个模型。我们的方法可以从模型中早期生成应用程序。这允许开发人员验证需求并试验他们的设计。这里介绍的EP模型是增量式开发的;从模型的每个新版本,将生成一个新的应用程序用于实验。一旦模板和映射得到确认,应用程序生成过程就可以顺利运行。唯一的问题是当一个人正在开发模型时,需要反馈,但所需的模板还没有。9讨论本文有两个目标:(a)为MDD思想的可行性和适用性提供经验证据,例如模板,可执行建模和代码生成;(b)深入了解我们的语言EP和FTL以及MDD的改进。我们的实验表明,我们的MDD方法是有效的,在帮助开发人员不是专家在一些目标平台开发平台应用程序的模型。然而,我们的方法确实有一些局限性和改进的机会。我们现在详细讨论这些。9.1可变性和平台独立性EP模型是平台无关的,这使得它们可以移植到各种平台,但并不是所有的东西都可以在模型级别N. Amálio等人理论计算机科学电子笔记279(3)(2011)319使用EP和OCL。例如,OCL缺乏描述涉及字符串的表达式的结构[19],并且没有定义这种结构的方法。我们通过定义绑定EP域和类来克服这些限制,这些绑定EP域和类通过仅定义签名来提供所需的功能,这些签名需要在生成代码时映射到某些平台模板。这已经在第6节的EP模型的绑定域Persistence、StringUtils和GeneralGUI中完成。虽然理想情况下,一切都将在模型级别上表达,但我们无法实现这一点并不是一个严重的问题。模型中没有表达的行为是应该是库的一部分的行为(例如涉及字符串和日期的行为),或者是与应用程序设计无关的低级行为(文件处理)。这里提出的方法的一个好处是自动获得不同的应用程序这意味着应用程序开发人员不必直接处理隐藏在模板基础结构中的可变性。然而,有时人们想在建模水平上处理可变性,但我们基于EP的方法目前不支持这一点。9.2可用性这个实验展示了在建模级别开发应用程序的几个可用性好处。平台代码的抽象使得非平台专家能够参与开发;这鼓励了具有健康技能组合的团队的形成,使得那些不是平台专家的人能够参与开发。此外,这提供了平台专家和设计师需要做的工作与增强协作的媒介之间的明确分离。 可用性方面的缺点在于工具支持。尽管近年来取得了许多进展,但现代平台特定的开发工具包比MDD工具包更复杂。我们不知道支持各种平台的独立于平台的GUI编辑器。通过这里介绍的实验,我们对改进我们的方法有了深入的了解(a)一个独立于平台的GUI编辑器,可以生成分解为模板的代码;(b)EP9.3验证和实验一旦定义了所需的模板,就可以直接从模型中生成我们的方法支持创建相同功能的模板变体;可以根据生成的原型进行实验来选择适当的变体。问题是,有时候,当模板没有20N. Amálio等人理论计算机科学电子笔记279(3)(2011)3但还不成熟,这需要编程专业知识,因此可能需要平台专家的帮助。我们还没有探索的另一种可能性是,在生成任何代码之前,使用EP和OCL的形式化语义在建模时对模型进行形式化的验证和确认。这样做的好处是,我们可以证明在实现级别上满足的建模级别的我们目前正在研究一种方法,以正式确认和验证EP模型的基础上EP然而,这将需要形式分析(特别是定理证明)的专业知识,因为某些性质的证明通常不能自动化同样,我们提倡出现具有健康技能组合的团队;在这种情况下,需要正式的方法专家,特别是如果想要解决验证至关重要的关键系统。9.4扩展性虽然我们已经成功地建立了一个模型,从中可以产生一个实际的移动appli-阳离子,我们的案例研究仍然相对较小。当EP模型变大时,事情变得更加复杂;模型往往变得混乱。我们正在研究如何改进这一点,以促进大规模的建模。10相关工作这里提出的方法是[2,3]的基于FTL的建模框架的变体。这提出了基于FTL模板的目录来定义UML符号的语义;每个目录都封装了符号的特定语义解释。在这里,我们将相同的想法应用于代码生成的上下文中,其中每个目录都针对一个替代的执行平台。与这里介绍的FTL模板不同,[2,3]的模板是手动实例化的(当时没有FTL工具支持)。一些模型驱动的方法[20,7]只是部分以模型为中心:它们产生需要由用户完成的部分骨架代码。我们的方法是完全以模型为中心的;所有运行的平台代码都是从用EP和OCL表示的PIM已经提出了几种MDD方法,通过模型转换解决可变性来获得产品系列[9,13,5]。不像这里的工作,这些方法还没有实现。我们的方法已经集成到EP一些工作提出了基于模板的MDD框架[20,7,8]。然而,与我们基于FTL的方法不同,它们使用没有正式定义的模板语言; [20]和[8]使用非常简单的模板语言,仅由占位符构造组成。FTL是一种正式定义的语言,具有丰富的结构,包括占位符,列表,选择,模板命名和模块。N. Amálio等人理论计算机科学电子笔记279(3)(2011)321一些作品采用MDD方法来生产移动电话应用程序或原型[1,22,5]。这里提出的方法也可以用于此目的;这些方法都没有提出模板作为平台变体的中间表示。Balasubramanian等人[6]提出了一种基于领域特定建模语言(DSML)的MDE方法,其中领域建模概念将转换封装为平台特定工件。这种方法比这里介绍的基于EP的方法涵盖了更多的系统我们的方法不使用DSML,但假设我们的模型的概念是抽象的,它们可以映射到各种平台。与[6]不同的是,这里提出的方法使用模板作为代码的中间表示。我们的方法基于形式语言,EP和FTL都是形式化的; [6]使用状态图和数据流图来描述行为;我们的行为使用EP和OCL来描述。在[24]中,Weigert和Weil报告了应用MDD方法的工业经验,类似于这里所介绍的,在摩托罗拉。在[24]中,代码是生成的,基于为建模语言定义的代码生成器,从高级语言(如UML)中产生。这里介绍的方法使用模板,它构成了高级建模注释和要生成的代码之间的中间媒介。用户需要定义从概念到模板的映射;实际生成过程是固定的,并基于为FTL定义的模板实例化规则。为了在这里介绍的方法中支持一些新的平台,所需要的只是一个新的模板目录;在[24]中,需要一个新的代码生成器11结论本文提出了一个实验,我们的MDD方法的基础上可执行的建模语言EP和形式化模板语言(FTL)。这里提出的方法通过提出FTL中描述的模板目录的单独描述,为生成提供了一级状态;每个平台目录都是生成的,并通过使用来自模型的信息实例化平台工件来封装生成平台工件所需的所有模板。这里介绍的实验说明了这种方法与当今问题的案例研究:构建具有相同功能,但需要在不同的执行平台上运行的移动应用程序。从同一个EP PIM中,我们通过实例化这些平台目录的FTL模板来生成An- droid和iPhone应用程序。 这里介绍的工作可用于开发实际应用程序或原型。支持这里所提出的方法的Democles工具,连同实验的模型和生成的代码可以从www.example.com获得http://democles.lassy.uni.lu/。22N. Amálio等人理论计算机科学电子笔记279(3)(2011)3引用[1] 阿德尔曼河和M. Langheinrich,SPARK快速原型开发环境-移动电话开发变得容易,在:IMC 2009,LNCS(2009)。[2] Am'alio,N.,“Generati v e frame works for rigid mo del-driv en de v elopme n t,”Ph.D. 论文,系。计算机科学,约克大学(2007年)。[3] Am'alio , N. , F.Polack 和 S.Stepney , Frameworksbasedontemplatesforrigorousmodel-drivendevelopment,ENTCS191(2007),pp. 三比二十三[4] Am'alio,N.,S. Stepney和F. Polack,Aformaltemplatelanguageenablingmeta-p roo f,in:FM2006,LNCS4085(2006),pp. 252-267。[5] Balagtas-Fernandez,F.,M. Tafelmayer和H. Hussman,Mobia modeler:Easing the creation processof mobile appl
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功