有没有关于现实世界应用的MDSD/MDA成功案例?

7
我目前面临这样一种情况:作为测试驱动开发的拥护者,我必须与模型驱动软件开发(MDSD)/模型驱动架构(MDA)的拥护者竞争。
在我看来,代码生成是我工具箱中有价值的工具,需要时我会大量使用模板和自动化。当我认为这有助于理解内部工作或讨论架构时,我也会在UML中创建图表。然而,我强烈怀疑通过UML创建软件(创建状态图和序列图以创建工作代码而不仅仅是代码框架)对于多层应用(数据库层、业务/领域层和Gui,甚至分布式应用)来说是否更有效。 在我看来,当涉及到MDSD时,CASE工具不再只是一个工具,而是满足需求的关键。从一方面看,MDS开发人员受益于UML提供的更高抽象级别,但同时他们也在努力修改代码生成器/模板/引擎来满足他们的需求,如果使用其他工具(如VisualStudio、Eclipse等),这些需求可能很容易实现(并进行测试)。
所有这些都使我想知道是否有一个真实的应用程序成功案例(成功意味着产品按时推出、在预算内完成,且只有少量缺陷,并且软件的某些部分后来被重用)是通过严格的模型驱动方法开发的:
  • 它与对象管理组(OMG)或与MDSD/MDA/SOA相关的顾问无关
  • 该应用程序与业务过程建模无关,也不是CASE工具本身
  • 该应用程序由最终用户主动使用
  • 它至少有三个层,包括超出显示原始表值的用户界面,而不是常见的MDA/MDSD示例(“如何对咖啡机、红绿灯、洗碗机进行建模”)。

你会接受“否”作为一个有效的答案吗? - Marc Messing
5个回答

3
一篇关于MDSD使用的微小但有用的推荐已经发布在Model Driven Software Network上: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上有概述。

+1 感谢您的回答。也许您对这个项目有更多的细节了解。例如,参与了多少人,完成第一个版本需要多长时间,需求也是否包含在模型中,使用了哪种类型的图表/UML(例如,有使用状态图来创建行为代码吗)? - tobsen
@tobsen,我没有那个信息,但你仍然可以在论坛上直接向Peter Adriaenssens提问... - Rui Curado
@RuiCurado,你回答中的第一个链接已经失效了。你能否提供更为更新的链接来修复它呢?(你的第二个链接正常工作 :)) - xmojmr

3
我在一个嵌入式系统项目中使用了MDA和代码生成,使用4个通过CAN连接的处理器。我们有超过20个运动轴和许多传感器。由于机械部件得到了评估和修改,因此系统非常稳健且易于维护。
我们在模型中工作并生成代码,因此模型始终是最新的。我们进行了仔细的领域分析以实现主题隔离。电机控制需要非常高的性能,因此未进行建模或生成。我们的网络驱动程序也是手工编码的,并编写了接口,允许桥接服务根据需要向系统中任何服务发送事件(尽管这受到严格控制,以最小化处理器之间的依赖关系)。
使用该方法需要一些纪律性,但拥有工作模型非常好,因为它们可以被非软件类型审查。
版本控制和模型差异有些挑战,但我们有一个小型的本地化团队,因此我们能够避免合并问题。 Pathfinder Solutions(我们的工具供应商)的优秀人才可以帮助您完成该项目的指导。

1
谢谢你的回答,但是至少有三个层次结构,包括用户界面吗?从你的描述来看,似乎你为此创建了某种机器人/嵌入式软件?听起来真的很有趣! - tobsen
它有一个用户界面,但是建模UI没有太多的收益,因为它们通常不是基于状态的。像Sparx的Enterprise Architect这样的工具非常擅长捕捉简单的类结构,例如UI可能使用的类结构。我的同事也用它来生成代码,但我从未使用过。 - Bruce

2

谢谢提供链接,我一定会看一下。不过,我刚刚谷歌了一些名字/公司,所有我尝试的都与参与MDSD-Tools创建的公司有关。我真的需要独立证明,证明使用MDSD除嵌入式软件外,构建现实世界应用程序是可能的。也许你可以指出一个满足这一要求的演讲? - tobsen
1
推广代码生成:增量采用的案例研究(Brooke Hamilton)PDF(3.00 Mb),出自2008年http://www.codegeneration.net/conference/sessions/slides/bernier.pdf,据我所知,这是来自金融领域。同一年的“将所有东西放在一起”讲话也来自金融领域,据我所知。另请参见来自Code Generation 2009的http://www.slideshare.net/HeikoB/mastering-differentiated-mdsd-requirements-at-deutsche-boerse-ag。FWIW,并非每个人都使用UML。谷歌“特定于领域的语言”或“特定于领域的建模”以寻求替代方法。 - Mark Dalgarno

1

我正在参与一项遗留系统现代化的项目,使用的MDA工具名为Bluage。这是为一家大型医疗组织开发的生产应用,可以说非常成功。在遗留系统现代化方面,MDA更加优越,因为它可以从一些即将停止支持的技术(如pacbase)生成KDM模型。


1

我曾经在一个使用Google Closure生成管理风格Web应用程序的MDSD系统上工作过。我认为你的问题很有吸引力。如果太复杂,你的MDSD系统将会难以使用。如果太简单,你将无法生成实际世界中有用的应用程序。MDSD真正发挥作用的地方在于节省开发人员输入大量样板式代码的时间,但是如何使MDSD在多个版本中保持有效呢?需求可以朝着许多方向发展。这才是真正的挑战。我最近在我的MDSD项目中写了一篇关于我的经验教训的博客。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接