模型驱动软件开发。

我的理解是它提出的抽象层面的设计,以更好地反映域的软件,将尝试运行中。那是很多要说的只是一句话。

之间的通信领域的专家(顾客)和开发是至关重要的,使这种方法的工作。我想知道的是如果有一个工具套件或设定的最佳做法,这将有助于在初始推力的MDSD?一旦域是充实了什么映这一模式到一个奥姆(或者)?

我只是潜入的领域MDSD和DSL因此,任何建设性的想法或意见,将appriciated.

有帮助吗?

解决方案

如果您在Microsoft平台上进行开发,您可能还想查看Oslo。这里有一个很好的概述: http:// www.pluralsight.com/community/blogs/aaron/archive/2008/11/03/introducing-quot-oslo-quot.aspx

以下是来自Chris Sells的大量链接: http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic= 2197

我还没准备好将领域驱动设计与模型驱动开发等同起来。

您可能还想查看模型驱动架构(OMG MDA)的透视图,尽管可能不是很自己。

模型驱动中的一个大问题 - 任何事情都与专业知识的来源有关,它来自模型的实现以及维护(和调试)发生的级别。我对可用书籍的测试将是他们如何使管道易于理解,以及如何理解从建模到部署再返回的路径。

其他提示

如果您使用.net进行编程,则应阅读“应用域驱动设计和模式”。作者:Jimmy Nielsson。他还有一节关于ORM(NHibernate),SOA和依赖注入。

在任何情况下,您都应该看一下“领域驱动设计”。埃里克埃文斯。这是一个经典,您可以在其中找到有关域驱动设计的模式和最佳实践的宝贵信息

免责声明:我是业务应用程序的开发人员。以下观点肯定是由我在企业IT战略中的经验所塑造的。我知道,还有其他软件开发领域。特别是在工业和/或嵌入式系统开发中,世界可能看起来不同。

我认为MDSD与代码生成过于紧密相关。

代码生成仅在代码包含大量噪声和/或非常重复时才有用。换句话说,当你的代码不能主要关注基本的复杂性时,却会被意外的复杂性所污染。

在我看来,当前平台和框架的趋势正是为了消除意外的复杂性,让应用程序代码专注于基本的复杂性。

因此,这些新平台/框架从MDSD运动的风帆中汲取了很多风。

DSL(文本的)是另一种趋势,试图使人们专注于基本的复杂性。虽然DSL可以用作代码生成的源,但它们并不主要与代码生成相关联。 DSL(特别是内部DSL)基本上允许它在运行时被解释/执行。 [运行时代码生成介于两者之间]。

因此,即使经常与MDSD一起提及DSL,我认为它们实际上是MDSD的替代品。鉴于目前的炒作,他们也从MDSD运动中汲取了动力。

如果您已达到最终消除代码中的意外复杂性的目标(我知道这是虚构的),那么您已经达到了业务问题的文本模型。这无法进一步简化!

漂亮的盒子和图表不提供抽象级别的另一个简化或提升!它们可能有助于可视化,但即便如此也是值得怀疑的。图片并不总是表达复杂性的最佳表现形式!

此外,MDSD中涉及的工具的当前状态增加了另一层意外复杂性(想想:同步,差异/合并,重构......),这基本上使简化的最终目标无效!

请看下面的ActiveRecord模型,作为我理论的一个例子:

class Firm < ActiveRecord::Base
   has_many   :clients
   has_one    :account
   belongs_to :conglomorate
end

我不认为这可以更简化。任何带有方框和线条的图形表示都不会简化,也不会提供更多便利(考虑布局,重构,搜索,差异......)。

MDD可能非常复杂或相对简单。

如果您想要从各种模型(例如UML)自动转换为代码并进行往返工程等等,您可以获得一些非常精美的工具。

或者

您可以使用单向(模型到代码)转换手工绘制模型并构建代码或多或少。

首先建立模型的想法是一种成熟的最佳实践。它通常被称为“设计”。当人们将设计与规范混为一谈时就会出现问题。将要构建的模型不是编程规范。它是一种抽象,可用于评估正确性,定义测试用例,编写规范等。

您无需为所有内容建模。您可以通过拥有数据模型来启动MDD - 独立于任何特定实现。

  1. 您使用UML绘制模型。

  2. 您将UML转换为类定义。

  3. 您使用ORM图层(或ODBMS)将模型映射到某种存储。

  4. 你不需要比这更多的东西。您需要做的是在解决太多其他问题之前,先关注模型。

    问题通常来自软件开发过程中发生的各种过早优化。早期进入RDBMS物理设计。早期进入网页设计并使用它来驱动数据模型。早期就是定义服务器架构和分配存储。

你应该读这份出色的文件有关MDSD最佳做法,从Markus Voelter: http://www.jot.fm/issues/issue_2009_09/column6.pdf

关于MDSD/DSL的选择,势生态系统(https://www.eclipse.org/modeling/emf/)提供了许多有用的建筑模块:

  • 实元模型和模型编辑(EMF)
  • 实现模式的编辑(电磁场,小天狼星,Xtext...)
  • 管理协作和可扩展性(电磁场交易,CDO)
  • 实行验证模型的规则(电磁场验证)
  • 执行代码生成器(Acceleo,时凝颜/禅宗,兆瓦...)
  • 执行文件的发电机(pxDoc,m2doc...)

一个有趣的选择减少工具的投资也可以使用的一个可扩展的UML建模和定义自己的UML配置和定制工具上的重复使用建模(以前的名单仍然是适当的,如果你UML建模的基础上UML2/势实现)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top