我真的很想知道您对Java和/或.NET的模型驱动软件开发的看法.
它能节省时间吗?它是否提高了质量?
MDA是一个有点过载的概念.有时它意味着将UML或其他类型的图表转换为可执行代码.我现在从未见过这方面的工具.它通常会导致项目真正快速地获得结果,然后造成维护噩梦,因为可用的工具并不真正支持大型团队在视觉图上工作,因为人们开始在图表中工作以及生成的代码.
我看到的东西看起来很像域驱动设计被称为MDA,如果你的意思是我全都是为了它:-)
我在IBM Rational Rhapsody for C++的项目中使用MDSD.该模型非常接近UML,因此我们实际上并没有特定于域的语言.但我仍然声称使用MDSD.根据我的经验,MDSD有许多好处:
a)使用MDSD有助于将SW架构带入复杂的层次.你总是在一个非常抽象的层面上工作,思考大局.牛仔编码软件通常缺乏良好的架构,因为开发人员陷入细节.使用MDSD,我看到了我的工作倾向,用适当大小的类,好的模式或简单的代码来解决问题.
b)使用MDSD,SW的大图文档往往更好.当然,有些工具可以自动生成代码中的类图.但是这些图表由1000个类组成,您没有看到感兴趣的方面.使用MDSD,您可以专门绘制系统的一个方面,同样的图也用于生成代码的一部分.
c)建模有助于处理固有的系统复杂性.我想说,如果没有计算机辅助设计的支持,有些系统太复杂了.没有巨大的SW工具的帮助,没有人会设计CPU.使用SW帮助您编写更复杂的SW.
d)使用MDSD有助于遵守编码风格指南.获得一致的代码风格没有比让规则集生成代码更好的方法了.
MDSD当然也有一些缺点:d)如果你有一个模型,你希望每一行代码都来自该模型.并且可能难以将外部库包含到项目中.因此,要么您接受这样的事实,即您的系统基于外部组件,或者您重新发明轮子以使其进入您的模型.
e)使用版本控制工具时,建模工具可能会遇到问题.合并源代码通常比模型图更简单.这迫使团队从复制编辑合并移动到锁定编辑合并工作流程.