7

我目前面临的情况是,作为测试驱动开发的倡导者,我必须与模型驱动软件开发(MDSD)/模型驱动架构(MDA)的倡导者竞争。

在我看来,代码生成是我工具箱中的一个有价值的工具,我会在需要时大量使用模板和自动化。当我认为这有助于理解内部工作或在白板上讨论架构时,我也会在 UML 中创建图表。但是,我强烈怀疑通过 UML 创建软件(创建状态图和序列图来创建工作代码,而不仅仅是代码骨架)对于多层应用程序(数据库层、业务/域层和 GUI,甚至可能是分布式的)更有效。在我看来,当谈到 MDSD 时,CASE 工具突然不再只是一个工具,而是满足的东西:在我看来,一方面,

所有这一切让我想知道是否有一个成功的故事(成功是该产品及时推出,在预算范围内,只有很少的错误,软件的部分内容后来被重用)用于满足现实世界的应用程序该标准是使用严格的模型驱动方法开发的:

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

5 回答 5

3

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

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

使用该方法需要一些纪律,但是拥有工作模型很棒,因为它们可以由非软件类型进行审查。

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

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

于 2010-06-30T18:26:48.923 回答
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 销售实现 DSM(特定领域建模)的 MetaEdit+。DSM 只是 MDSD 的一种形式。

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

于 2010-06-23T23:35:12.453 回答
2

您还可以查看以前的代码生成会议的幻灯片。其中一些演讲来自成功的案例研究,例如http://www.codegeneration.net/cg2009/slides.php

于 2010-06-30T17:55:02.530 回答
1

我在一个 MDSD 系统上工作,该系统在 Google Closure 中生成管理风格的 Web 应用程序。我相信你的问题很有说服力。太复杂了,你的 MDSD 系统太难使用了。太简单了,您将无法生成在现实世界中有用的应用程序。MDSD 真正的亮点在于节省开发人员输入大量管道式代码的时间,但 MDSD 如何在多个版本中保持有效?需求可以有很多方面。这才是真正的挑战。我最近在博客上介绍了我在该项目中学到的MDSD 经验

于 2012-08-11T23:42:53.840 回答
1

我正在开发一个用于遗留现代化的项目及其使用名为 Bluage 的 MDA 工具。它适用于一个大型医疗保健组织及其生产中,所以我可以说它是成功的。MDA 在遗留现代化的情况下更好,因为它可以从一些技术(如 pacbase)生成 KDM 模型,这些技术将失去支持。

于 2012-07-31T14:39:39.577 回答