Mirco Franzago, Davide Di Ruscio, Ivano Malavolta and Henry Muccini
协作的模型驱动软件工程(Model-Driven Software Engineering,MDSE)由多个利益相关者管理,协作并了解彼此在共享模型上工作的方法和技术组成。协作MDSE吸引了来自不同领域的研究工作,从而产生了多样化的科学知识体系。
本研究旨在识别,分类和理解现有的协作MDSE方法。
我们设计并进行了系统的绘图研究。从3,000多项潜在相关研究开始,我们采用了严格的选择程序,产生了106篇论文,并在19年的时间跨度内进一步分为48项主要研究。我们严格定义并应用分类框架,并从每个选定的研究中提取关键信息,以供后续分析。
本研究为分类MDSE协作的现有和未来方法奠定了坚实的基础。研究人员和从业人员可以使用我们的结果来识别现有的研究/技术差距,以便进行攻击,更好地确定自己的贡献,或了解现有的贡献。
协同软件工程(Collaborative software engineering,CoSE)协议使用方法、过程和工具增强团队成员之间的协作、沟通和协调(3C)[1]。CoSE的重要性是显而易见的[2]-[4],并且最近由于敏捷方法、开源软件项目和全球软件开发的突出而被凸显[1]。CoSE不仅与软件开发团队成员有关,而且还包括外部的和非技术的利益相关者,如客户和虚拟用户,正如当前关于参与式设计方法的研究所建议的[5],[6]。
对于软件系统工程CoSE可以应用到不同的工件。当关注软件设计时,具有不同技术知识和背景的多个利益相关者在系统设计上协作[8],被认为是软件工程的关键方面之一[7]。在此上下文中,共享模型被用作“从给定角度突出感兴趣的属性的一些系统的简化表示”[9]。模型允许每个利益相关者关注领域-规范概念(domain-specic),抽象出她更擅长的系统的方面,并在生命周期的早期评估系统的规范(specic)属性。模型是一种特殊的设计工件,可以是图形化的、基于XML的或文本的,并且可以具有明确的去模糊的语义,这允许精确的信息交换和许多额外的使用。模型驱动软件工程(Model-Driven Software Engineering,MDSE)提供了合适的引擎,用于在整个系统开发生命周期中定义、分析和操纵这些模型,包括语法验证、模型分析、模型仿真、模型转换、模型执行和模型调试[4]。
本文的工作重点是将CoSE专门化到MDSE。在本工作的上下文中,我们对协同MDSE方法的定义是一种方法或技术,在这种方法中,多个利益相关者管理、协作并了解彼此在一组共享模型上的工作。协作式MDSE方法由三个主要的互补维度组成(这些维度的引出方式在第3节中详细讨论):用 于管理模型生命周期的模型管理基础结构,一组用于允许利益相关者参与的协作方法用于协作地修改工件,以及一组通信手段,用于允许参与的利益相关者知道其他利益相关者的活动,在团队内交换消息和信息,共享(设计)决策,减少潜在的模糊性,以及更多。
协同MDSE在学术界和实践界越来越感兴趣[3],[4]。许多研究项目正在运行,以使得大型建模团队能够以协作方式构建和精炼大型模型[3]。例如,Dawn Eclipse项目1正在研究collaborativeUI,以便为GMF图提供协作访问;EMFCollab 2是一个轻量级的解决方案,允许多个用户同时编辑单个EMF模型。Eclipse Modeling Framework Technology Project(EMFT)下的Modeling Team Framework(MTF)3开放源码项目为Eclipse项目的软件配置管理提供了类似于元存储库的机制。GenMyModel 4支持设计图的实时设计和共享:始终确保图的元模型兼容性,没有针对最终用户的冲突解决,也没有锁解锁障碍。UNICASE 5是一个开源项目,它基于Eclipse平台,为软件工程项目提供统一的存储库,并为项目参与者(如架构师、项目经理或开发人员)提供关于这个模型的特定视图。Collaboro 6是一个开源项目,允许开发人员和用户共同参与领域特定建模语言的创建和发展[10]。MDEForge[11]是一个基于web的建模平台,实现了可扩展的、基于社区的建模构件库;MDEForge通过采用软件即服务范例7实现了对建模构件的开发、分析和重用。
关于协作模型驱动的软件工程(MDSE)的科学文献中也存在大量的知识(例如,[12]–[19])。这些研究分散在不同的独立研究领域,如软件工程、模型驱动工程、语言和系统、以及模型集成计算。然而,对于什么是协作式MDSE、其组件和协作式MDSE中的挑战仍然缺少一个整体视图。
本研究的目标是识别,分类和理解支持协作MDSE的方法。 我们专注于那些方法,其中几个分布式技术和/或非技术利益相关者合作生成和管理软件系统的模型,在共享环境中同步或异步工作。 利益相关者可以包括但不限于技术参与者(建模者,设计者,开发者),领域专家,非技术经理,客户和软件系统的用户。 我们感兴趣的是识别和分析支持多用户建模任务的不同方法,其中模型可以是特定于域的,也可以是与域无关的。 无论如何,研究方法必须将模型视为整个软件过程中的第一类元素。 此外,研究方法必须提供同步机制,例如, 冲突管理/解决,冲突避免,版本控制和回滚支持。
为了实现我们的目标,我们应用了医学和软件工程研究界公认的方法,称为系统映射研究(SMS)[20],[21]。在已知的SMS协议之后,我们已经审查了超过3000篇研究文章。其中48个是在严格定义的包含和排除标准的基础上经过仔细分析后选出的,并进行了深入分析。
本研究的主要贡献有:
据我们所知,本文首次系统地研究了协作式MDSE的研究现状,研究结果为协作式MDSE的研究提供了完整、全面、可复制的画面。研究者和实践者在发现本课题的特点、局限性和不足之处方面存在不足。
文章提纲。本文的结构如下:第2节提供了模型驱动软件工程、协同软件工程、协同MDSE的背景知识,并激发了本文的研究需求。第3部分介绍协作MDSE及其维度:模型管理、协作和通信,而第4部分介绍我们的研究设计。第5, 6, 7, 8, 9和10节详细阐述了所获得的结果。第10节给出了与研究问题正交的结果,而第11节给出了总体讨论。在第12节中分析了对有效性的威胁。第13部分结束了论文并讨论了未来的工作。
在本节中,我们介绍了建立协作式MDSE基础的主要概念。更具体地说,我们在2.1节和2.2节中分别介绍了模型驱动的软件工程和协作式软件工程。第2.3节讨论了具有不同范围但与协作MDSE相关的系统研究。在第2.4节中,我们需要对协作MDSE进行系统映射研究。
模型驱动软件工程(MDSE)是指在整个软件工程生命周期中,模型作为一流实体的系统使用。模型驱动的方法把开发重点从第三代编程语言代码转移到用适当的领域特定建模语言表达的模型[22]。其目的是通过借助于用概念定义的模型来开发复杂系统,从而提高生产力并缩短上市时间,这些概念与底层实现技术绑定要少得多,并且更接近问题领域。这使得模型更易于指定、理解和维护[9],通过抽象帮助理解复杂问题及其潜在的解决方案。在MDSE中,模型用元模型中形式化的概念来表示,模型转换用于生成目标模型或生成文本工件。由于不同的原因,可以使用模型转换,例如,为了实现不同工具的互操作性,为了利用目标语言提供的分析工具,以及为了生成与模型化系统相关的各种工 件(例如源代码、配置文件和文档)。模型通过编辑器指定,编辑器为建模者提供文本或图形构造,以及用于检查指定模型相对于相应元模型的有效性的设施。
MDSE的相关性是显而易见的,因为人们越来越关注这个领域的科学挑战、活跃的技术项目(例如,Eclipse建模项目8)以及许多工业项目,从MDSE概念和工具的直接应用到开发其基础的项目。从开发大型企业Web应用程序,到临床数据管理,再到公共权威数据交换[23]–[31],MDSE有许多成功的例子。
尽管当前的建模工具提供了能够简化和自动化基于模型的开发的许多步骤的特性,但是对于更广泛地采用MDSE技术的障碍仍然存在[32]。一个限制因素与协作MDSE[11]的有限支持有关,它关注于在不同开发阶段协作生产和消费的建模构件的一致重用的需求。
如[2,第3页]所述,“[…]任何多人参与的软件项目都是通过协同软件工程的过程创建的”。COSE的重要性在许多来源(2)-[ 4 ]中得到证明。它的增长与外包、开源软件项目、全球软件工程过程和分布式敏捷方法的突出性密切相关[2,ch.1和ch.19]。如果我们加上86%的(体系结构)设计决策是基于组的[33],其中每个组由五到十个成员组成[34],那么协作软件工程的作用就变得容易明了。
与协作、通信和协调(3C)维度[1]正交,CoSE的三个关键见解在[2,ch 1]中被指出:软件工程协作是基于模型的,软件项目管理创建了促进协作的组织结构。ED和全球软件工程挑战增加了协作的复杂性。对于本研究来说非常重要的是突出CoSE基于模型的本质的第一个关键见解。软件工程中的很多协作都与软件相关的构件(例如,UML图、源代码和bug报告)有关,因此,软件工程中的大多数协作都发生在一组正式或半正式的工件上。
具有不同角色和关注事项(从技术到外部)的利益相关者协作创建不同的模型,每个模型从不同的角度代表系统[35]。利益相关者在不同的组织结构上进行协作[36]、[37]由现代组织实践(如开源、外包、多站点和敏捷软件)执行。软件开发人员的工作是围绕网络、社区、群体组织的,并且他们暴露于一个或多个组织障碍,即,阻碍整个组织社会结构的和谐操作的障碍、社会、组织或其他方面[36]。知识必须在团队之间和团队之间产生和交换,这加剧了对知识定义(通过商定的本体)、知识交换(基于商定的协议)和认知以及协调的需求。
软件工程的全球维度进一步增加了复杂性,如地理、时间、文化和语言距离。基于模型的协作工具、过程支持工具、感知工具和协作基础结构已经被开发用于改进团队之间和团队之间的协作、通信和协调[38]。
建立对COSE的理论理解仍被认为是当今的挑战(1)。这是这项工作的进一步动机。
在本节中,我们将讨论与此工作相关的其他现有系统研究(文献综述(SLR)和绘图研究(SMS))。根据我们的知识,经过人工搜索,我们没有发现任何关于这个课题的系统研究。无论如何,在下面我们报告那些研究,即使他们有不同的范围和目标,可以与我们的研究相关。
表1显示了现有的系统研究,他们的具体重点和质量评估。基于[39]中解释的标准,我们通过总结下列问题中的每个问题的答案来计算每个研究的总分(是(Y)=1,部分§=0.5,否(N)=0.9
[40]对分布式软件开发(DSD)领域中的协作模型进行了系统的文献综述。本文主要研究基于传统软件开发生命周期(及其变化)的DSD模型和工具,其中执行该周期的每个阶段。不同的是,在我们的研究中,我们关注模型驱动的软件工程领域中协作的各个方面,其中模型被作为第一级工件放置。
表1: 关于协同软件工程和协同建模的现有系统研究
在[41]中,提出了一个系统的映射研究,目的是发现支持全球软件工程(GSE)活动的文献中提供的所有工具。 我们的工作更加全面,因为它还确定了(除了工具支持之外)在协作环境中支持建模活动的方法,技术和方法,重点是基于模型的活动。 此外,在文献中还有DSD和GSE范围内的其他系统研究[43],但所有这些研究都集中在解决协作流程管理,团队成员意识或协作工具支持等问题的工具和/或方法上。 没有专门针对协作MDSE的现有研究。
最后,在[42]中,作者指出了协作建模活动中的挑战和最佳实践,其中建模人员、最终用户和专家都参与到系统的基于模型的设计中,并且协作来创建对正在开发的系统(或系统的一部分)的共享理解。其中,本研究与我们的主要区别在于,在[42]中,协作建模被认为是系统的共享图形表示的联合创建,即,将创建的模型用作团队成员之间的通信手段的草图活动。这种模型(可能符合一些语法规则)与我们对模型的定义非常不同,其中建模是基于精确模型的复杂活动,其语义是根据特定的建模语言严格定义的。这些模型允许精确的信息交换,但也有许多其他用途,包括:语法验证、模型检查、模型转换、代码生成[4,2.1]。
本研究是对2.3节中描述的现有研究成果的补充,以研究协作式MDSE的研究现状。模型转换等)以及软件生产的协作(例如,全球软件工程方法、软件系统的参与式设计方法、版本控制系统等)。
尽管十多年前,上述领域的研究已经开始,而且各个研究团体仍然非常活跃,但我们没有发现任何证据可以帮助我们评估现有研究对合作性MDSE的影响。识别、分类和理解现有的关于协作式MDSE的研究。这些活动将帮助研究者和实践者识别当前关于协作式MDSE的研究的趋势、局限性和差距以及未来的潜力。
在第2.1和2.2节中,我们分别概述了MDSE和协作软件开发的主要概念。在本节中我们将进一步深入,并且为了避免对研究的外部有效性的潜在威胁,我们定义了一个参考定义,用于在MDSE上下文中描述协作方法。应用以下过程: