编程语言,有几个(r)渐进的步骤,在他们的历史。有些人认为,模型驱动的办法将是下一件大事。有的工具,如openArchitectureWare,AndroMDA,雕塑家/天炉座平台等。这一承诺令人难以置信的生产力的提升。然而,我的经验这是相当容易在开始要开始,但以及获得被困在某一点,当你尝试的东西,这是未预料到或很难找到足够的信息,告诉你怎么开始的项目,因为可能有很多的事情要考虑。

我认为重要的见解得到任何东西出来的模型驱动的东西是理解的模式不一定是一套漂亮的照片或树模型或UML,但可能也有文字说明(例如一个国家机、商务规则等等)。

你认为是什么以及什么是您的经验告诉你吗?是否有一个未来的模型驱动发展的(或者不管你可能想把它叫)?

更新: 那似乎不是一个很大的兴趣在这个问题。请让我知道,如果你有任何(或好或坏的)经验与模型驱动的办法,或者为什么你觉得这不是有趣的。

有帮助吗?

解决方案

我认为,它将需要时间,直到该工具得到更加精炼,更多的人获得的经验与MDD.在那一刻,如果你想得到的东西MDD你必须投入相当多,因此其使用仍然有限。

看openArchitectureWare例如:虽然这是很强大和基本的文件存在,文件上的内部运作是失踪和仍然有问题,可扩展性,这是无证件-也许这会变得更好,当Xtext和禅宗得到改写。

但是藐视这些限制的一代本身是很容易与oAW,可以浏览你的模型就像一个魅力在时凝颜及甚至改变和通过合并多个工作流程进入更大的工作流程,你也可以做非常复杂的事情。如果需要的话,你可以诉诸Java,所以你有一个很大的灵活性,在什么你可以做你的模型。写你自己的DSL用Xtext在oAW,也是迅速地完成的,但你得到你的元模型、分析程序和一个非常不错的编辑基本上是免费的。你也可以得到你的模型基本上来自世界各地,例如一个组件,可以把一个数据库元模型和相应的模型可以是书面的,没有大的努力。

所以,我要说,MDD仍然是建立,作为工具和经验的增加而增加。它已经可以成功使用,如果有必要的专门知识,并准备推动它在你的公司。最后,我认为,这是一个非常好的事情,因为很多胶代码(又名复制贴)可以而且应产生的。这样做与MDD是一个非常好的和结构化的方式这样做,这有利于可重复使用性,在我的意见。

其他提示

免责声明:我是一个开发商的业务应用程序。以下图当然是由我的经验,在战壕里的企业。我知道,还有其他的领域软件发展。特别是在工业和/或嵌入式系统开发的世界可能不同。

我认为MDSD仍然太多的绑代码生成。

代码生成的仅仅是有用的,当你的代码包含了很大的噪音和/或是非常重复的。换句话说,当你的代码不能主要侧重于必要的复杂性,但是污染与意外的复杂性。

在我看来的趋势目前平台和框架是完全删除偶然的复杂性和让的应用程序代码重点放在必要的复杂性。

因此,这些新平台的框架和采取了很多风的帆的MDSD运动。

Dsl(原文的)是另一种趋势,试图使的唯一焦点,在必要的复杂性。同时Dsl可以作为来源代码生成,他们主要不是绑代码生成。Dsl(特别是内部Dsl)基本上让它打开解释/执行在运行时间。[运行时间代码生成的地方之间的].

因此,即使Dsl经常提到的一起MDSD,我认为他们是真正的替代MDSD.而鉴于目前炒作,它们还采取的势头出MDSD运动。

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

好的框和示意图不提供另一种简化或高度抽象的级别!他们可能是好的可视化,但即使这是可疑的。一张照片是不是总是最好的表示,以掌握复杂!

更进一步,目前状态的工具参与MDSD增加了另一层意外的复杂性(认为:同步,比较/合并、重构...)这基本上否定的最终目标是简化!

看看下面的Email模型,作为一个插画的我的理论:

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

我不认为这可以是任何更加简化。还的任何图形表示的盒子和线路将不会有简单化,并不会提供任何更多的便利(为关于正在布局,重构,搜索,比较...).

模型驱动的发展已经存在了很长时间。

最成功的早期尝试是詹姆斯*马丁斯的综合工程设施",这是仍然存在和销售通过CA下的严重酷"Coolgen"品牌名称。

那么,为什么没有它在世界各地,如果它是这么好?

这些工具都是很好的制作简单的东西更为简单,但是,他们不作硬的东西的任何更容易,并且在许多情况下做出硬的东西更难!

你可以花时间试图说服一个图形4GL建模语言"做正确事情"的时候,你知道的编码正确的事情在Java/C/SQL或任何将微不足道的。

我认为也许没有一个明确的答案,因此缺乏的"利益"在此的问题。

但我个人已经混合的经验MDA。唯一的一次很好的经验是有伟大的工具,我用来使用TogetherSoft(我认为,它们在某种程度上结束了在borland)-他们是第一个介绍编辑而不是"代码生成的",但实际上编辑的代码/模型的直接(因此你可以编辑码,或型号,它是一个事)。他们也有重构(这是第一次我记得后一般的环境中).

自那时以来,我还没有看到MDA增长的任何更加普及,至少在主流,因此在普及,它不似乎是未来的(所以这样的答复)。

当然,普及并不是一切事情要有一种倾向,回来,但在目前我认为MDA+工具是许多人认为"导基于代码生成的"工具(不管是什么这真的是)因此,我认为它会有一些时间或许永远不会,它真的需要关闭。

其中一个问题的MDD是,由于它适用于一个更高的抽象层面,它需要开发可以上去抽象的水平。这大大降低了宇宙的开发者能够理解和使用这种方法。

请让我知道,如果你有任何(或好或坏的)经验与模型驱动的办法,或者为什么你觉得这不是有趣的。

我认为捐助者在这里的一部分,"没有银弹"营地(我肯定).如果MDA工作(相当于"巨大的储蓄"),我们知道,这是肯定的。问题是:如何远"元"你可以去,同时保持你的系统管理的?这是一个转折点,在UML2.0时,他们引进一个更加正式的阶元模型。迄今为止,我还没有看到一个真正的世界的使用情况的modelisation力的UML2.0(但是我的世界是相当的限制)。再说了,你只有两个选择与模型驱动的方法:产生的代码,或者具有一个运行时利用你的模型。最终的约束的免费代码生成器是所谓的"人",而最终的运行时在那里发现在4GLs(什么是当前数量如今?).也许这能解释缺乏enthousiasm.

我们在itemis(www.itemis.com)使用模型驱动软件开发。迄今为止我们有很好的经验。舒尔,这不是一个"银弹",但它有助于改善软件的质量,因此更多地使用我们的客户。

模型驱动的发展将是未来如果并且只有如果模型,使用它可以作为灵活,因为编写代码,它应该能产生。我认为原因它没有这样做很好现在,你这是很难做到相同的"往返"基于案文的编程语言已经做了几十年。

与基于文本的编程语言,改变模型是简单的改变。有一个图形化编程语言(又名一MDD-图像UML),你必须找到一种方法,以把这一模型的所有办法回到其基于文本的等同(这是已经明确有效的在第一地点)并且它可以非常,非常混乱。

恕我直言,只有这样,才MDD以往任何时候都可以有用的,如果它的建立从地上爬起来是一样的表现力和灵活,因为它基于文本的对应方。尝试使用现有的顶下图形设计的语言(例如UML)的工具,本质上都是内部使用分层抽象(例如编程语言)构成了一个巨大的阻抗不匹配。我不能把我的手指上,但还是有东西丢失在MDD,这将使它有用,因为人们将要求它是...

这是一个非常迟到的答复,但我目前正在寻找MDD工具,以替代玫瑰RT,这是不幸的是,正在取代由狂想曲.我们是在实时、嵌入式和分布式C++的空间,我们获得了很多出MDD.我们正在试图转移到一个更好的工具,并得到更广泛使用的工具,我们非常大的公司。它是一场艰苦的战斗,因为一些细提及的原因在这里。

我认为MDD仅作为一个级别上编译器,只是作为编译器上述大会。我想要一个工具,可以让我来说,作为建筑师、开发应用程序框架,并广泛编辑的代码生成(脚本)使用这一框架和任何中间件,我们正在使用为消息的传递。我想要开发人员使完成UML类和状态图,包括所需的全部代码生成的程序和/或图书馆。

这是真的,你可以做任何用代码,但是我会大致总结的好处MDD为此:

  1. 有几个人使用框架、中间件的适配器和胶水,到MDD工具。他们建立的"房子"。
  2. 其他人建立完整的课程,图表,并状态过渡机的代码。这让他们重点放在应用中的替fo"房子"。
  3. 其容易看到,当有人怪异的设计,因为意图是代码。我们没有所有专家开发人员和其很好带上初中的人这种方式。
  4. 大多其讨厌的国家机代码,可以发生在什么样的移动机器人项目。我希望人们做的状态图,我可以理解,批评以及对他们的工作。
  5. 你还可以有很好的重构想拖操作和属性最多继承链或其他类,等等。我喜欢的好比挖掘的文件。

即使我输入此,我意识到你所能做的一切。我喜欢薄的工具,只是在代码顶部强制执行均匀,文档的设计,允许更为容易一些重构。

主要的问题,我收到,我没有一个很好的答案为是,有没有一套标准的功能和文件格式,这种模型。人们担心供应商要离开然后被卡住了。(我们bascially有发生与玫瑰的RT。) 你没有与源代码。但是,你会有最新版本的工具和课程代码生成的最后:).我愿意打赌的好处大于风险。

我还没有找到这样的工具,但我想得到一些供应商要听我的,并可能接受金钱来做到这一点。

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