2010-06-22 56 views
7

我目前面临的情况是,作为测试驱动开发的倡导者,我必须与模型驱动软件开发(MDSD)/模型驱动架构(MDA)的倡导者竞争。真实世界应用程序是否有MDSD/MDA成功案例?

在我看来,代码生成在我的工具箱中是一个有价值的工具,我需要时大量使用模板和自动化。当我认为这有助于理解内部工作或讨论白板上的架构时,我还使用UML创建图表。然而,我强烈怀疑通过UML创建软件(创建状态图和序列图来创建工作代码,不仅是代码的框架)对多层应用程序(数据库层,业务/域层和Gui,甚至可能是分布式)更有效。在我看来,当涉及到MDSD时,CASE工具突然不仅仅是一种工具,而且是满足的一件事情:正如我所看到的,一方面,MDSDevelopers从UML给出的更高抽象中获益,但在同时他们正在努力修改代码生成器/模板/引擎以满足他们的需求,如果在工具箱(VisualStudio,Eclipse,...)中使用其他工具,可能会轻松实现(并测试)它们。

所有这些让我想知道是否有成功的故事(因为产品是及时推出的,在有限的时间内,只有很少的错误,并且稍后会重用部分软件)世界上的应用程序,fullfills这个creteria和使用严格的模型驱动的办法已经制定:

  • 它无关的对象管理组织(OMG),或与有关MDSD/MDA/SOA/
  • 顾问
  • 该应用程序与业务流程建模无关并且不是CASE工具本身
  • 该应用程序被最终用户积极使用
  • 它至少有三层,包括超出显示原始表值的用户界面,并且不是常见的MDA/MDSD示例之一(“如何建模咖啡机,交通灯,洗碗机“)。
+0

您是否接受否作为有效答案? – 2012-01-23 16:03:07

回答

3

上使用MDSD的一个微小的,但仍然有用的证词已经公布的模型驱动软件网络上:

http://www.modeldrivensoftware.net/profiles/blogs/viva-mdd-follow-up-building-a?xg_source=activity

它正在开发一个比较小的应用程序,但仍然是一个不错的行动中的MDSD示例。

Metacase的网站上列出了更多的成功案例(http://www.metacase.com/cases/index.html)。 Metacase销售MetaEdit +,它实现了DSM(特定领域建模)。 DSM只是一种MDSD形式。

我也在开发ABSE(基于Atom的软件工程),这是另一种形式的MDSD,非常接近DSM。 ABSE概述于http://www.abse.info

+0

+1感谢您的回答。也许你知道这个项目的更多细节。例如。涉及多少人,完成第一个版本需要多长时间,模型中是否还有要求,使用了什么样的图/ UML(例如涉及创建行为代码的状态图?)? – tobsen 2010-06-27 11:29:46

+0

@tobsen我没有这方面的信息,但你可以直接向论坛上的Peter Adriaenssens询问... – 2010-06-30 09:02:52

+0

@RuiCurado你的答案中的第一个链接已损坏。你能通过提供更新的链接来修复它吗? (你的第二个链接工作得很好:) – xmojmr 2014-07-30 15:16:24

2

您还可以查看以前代码生成会议的幻灯片。这些谈话中有几个来自成功的案例研究,例如http://www.codegeneration.net/cg2009/slides.php

+0

感谢您的链接,我一定会看看。然而,我只是搜索了一些名称/公司,我试过的所有公司都回到了参与创建MDSD-Tools的公司。我真的需要独立的证据证明,除了带有MDSD的嵌入式软件之外,构建真实应用程序是可能的。也许你可以指出一个满足这个要求的谈话? – tobsen 2010-06-30 21:09:52

+1

福音代码生成:2008年增量采用案例研究(Brooke Hamilton)PDF(3.00 Mb)。http://www.codegeneration.net/conference/sessions/slides/bernier.pdf IIRC这是来自金融领域。同一年的“放在一起”谈话也来自金融领域IIRC。 另请参阅http://www.slideshare.net/HeikoB/mastering-differentiated-mdsd-requirements-at-deutsche-boerse-ag from Code Generation 2009. FWIW并非所有人都使用UML。 Google的“特定领域语言”或“特定领域建模 - 用于替代方法”。 – 2010-07-01 20:17:46

3

我在使用4个通过CAN连接的处理器的嵌入式系统项目上使用MDA和代码生成。我们有超过20个运动轴和许多传感器。由于机械部件经过评估和修改,该系统非常坚固且可维护。

我们在模型和生成代码中工作,以便模型始终保持最新状态。我们进行了仔细的域分析,以实现主题隔离。电机控制需要非常高的性能,因此没有建模或生成。我们的网络驱动程序也是手动编码的,我们编写的接口允许网桥服务根据需要将事件发送到系统中任何位置的任何服务(尽管这是严格控制的,以便尽量减少处理器间的依赖关系)。

使用该方法需要一点纪律,但有工作模式是伟大的,因为他们可以通过非软件类型进行审查。

模型的版本控制和差异化是一个挑战,但我们有一个小的本地化团队,所以我们能够避免合并问题。

Pathfinder Solutions(我们的工具供应商)的优秀人员可以帮助指导您完成项目。

+1

感谢您的回答,但至少有三层,包括用户界面?从你的描述看来,你为它创造了一些机器人/嵌入式软件?!听起来很有趣! – tobsen 2010-06-30 21:22:48

+0

它有一个用户界面,但是在UI的建模方面没有太多好处,因为它们通常不是基于状态的。像Sparx的Enterprise Architect这样的工具非常擅长捕获简单的类结构,比如UI可能会用到的结构。我的同事也将它用于代码生成,但我从来没有。 – Bruce 2010-07-01 01:49:50

1

我正在开发遗留现代化项目之一,并使用名为Bluage的MDA工具。它为一个大的医疗保健组织和它的生产,所以我可以说它的成功。在遗留现代化的情况下,MDA更好,因为它可以从pacbase等某些技术中产生KDM模型,这些技术将不再受支持。

1

我在一个MDSD系统上工作,该系统在Google Closure中生成管理员风格的网络应用程序。我相信你的问题很有说服力。太复杂,你的MDSD系统太难用了。太简单了,你不会生成在现实世界中有用的应用程序。 MDSD的真正亮点在于节省开发人员时间,输入大量管道代码,但MDSD如何在多个版本中保持有效?要求可以在很多方面进行。这是真正的挑战。我最近在那个项目上写了我的MDSD lessons learned的博客。