模型驱动软件工程(MDSE)到底是什么?


10

今天在infoq上遇到了MDSE的缩写,该信息我可以找到非常不清楚的地方,并且描述中充斥着流行语:

MDSE旨在使软件工程师能够在抽象级别上工作,在该级别上,需求,体系结构和设计信息将得到最大程度的排序(就信息“熵”而言)。(将其称为“设计工作产品”)。此外,MDSE应该为工程师提供主要根据其“设计工作产品”条款验证和验证其设计的方法。

显然,每个人都在这样做:(再次从文章中)

我们正处在MDSE时代的曙光中。在接下来的5-10年中,我们将看到向MDSE的重大转变,我认为到此阶段结束时,也许有60-80%的软件将使用基于模型的技术进行设计。

我想对MDSE是什么有一个具体的,无术语的描述。是否像在90年代使用Rational Rose那样绘制UML框并用它生成代码?

(当时,如果有人有使用这些技术生成的软件示例,我真的很想看到一个具体的示例)。


2
这听起来类似于域驱动设计。基本上,将业务逻辑放入模型中。相关流行语:胖子模型,瘦控制器。
Greg Burghardt

我怀疑没有流行语的描述不太可能,因为它们似乎是该概念本质的组成部分。
whatsisname 2015年

Answers:


1

“模型驱动软件工程(MDSE)”是软件工具制造商的市场承诺,即可以很快从软件模型中生成软件的重要部分。

您所引用文章中的采访合作伙伴 Robert Howe是工具制造商(有关详细信息,请参见http://www.verum.com/

但是违反工具制造商的承诺,mdse尚未成为主流。

采用hybris网上商店系统是“MDSE”的工作示例:你作为developper保持XML的模型文件的软件(“* -items.xml”)和编码生成器/解释器生成DB-莫代尔/ java的代码持久性/图形用户界面出来。如果您需要其他属性,只需将其添加到xml模型中,然后在生成器/解释器完成它的工作后,就可以使用该属性来实现业务逻辑。


0

恕我直言,“模型驱动 ”是一个很大的夸张,特别是与“设计”或“软件工程”(而不是“开发”)这样的流行语结合使用时。它可能是由一些人误解的:“软件设计”是通过使用UML绘制一些主要是图形化模型来完成的,例如建筑师正在为房屋绘制蓝图,而“编码”就像在为房屋砌砖一样,按照蓝图。(我希望我不必在这里解释为什么这是错误的,如果您有不同的意见,请在不赞成我之前先阅读Jack Reeves的“ Code as Design”。)

对于那些自称是“建筑师”,“业务分析师”,“设计师”,“软件工程师”的人们来说,这是一个很棒的思维模式,他们研究了5年的计算机科学,但只有半年的实际编程经验(最多) ),现在正在软件行业寻找一份工作,其中包括无需编码的“设计软件”。我猜这是这种“模型驱动”流行语如此流行的真正原因。

别误会,我是模型和代码生成器的忠实拥护者,以减少手动编写样板代码的需要。在某些受限领域,例如数据库,(数据)模型确实可以成为与领域人员进行交流的良好工具。通过模型在组件之间绘制数据流是恕我直言,这是将结构引入软件系统的最重要技术之一(不幸的是,UML人们忘记了拒绝在其符号中包括数据流程图;相反,他们添加了一堆多余的,不必要的东西没人在实践中使用)。

但是我将其称为“模型支持的软件开发”,而不是“模型驱动的软件工程”,这使我们很清楚地意识到,建模仅支持开发中的主要活动,而不是仅仅关注主要活动本身。


Hummm ......很还原答案的基础上,坏的意见关于一些IT专业人士...
Rénald

@Rénald:嗯,我的回答中没有什么不是基于个人经验的。我并不是说没有经验丰富的建筑师,学士学位或设计师,但是当他们真正有经验时,他们可能不相信MDSE的虚假承诺。
布朗

-1

这让我想起了很多Fat模型,瘦控制器的概念。
这个概念的主要思想是将尽可能多的业务逻辑放入模型中,并使控制器和视图非常简单。
我个人觉得这是一个非常有趣的想法,尽管我没有机会使用它。
令人惊讶的是,谷歌搜索中10个热门链接中有8个反对它。
但是,如果您认为模型不是一个单一的类,而是多个内部类的外观,那么将业务逻辑保留在模型中就非常有意义。


1
我认为这不是MVC中的模型,而是系统设计中的“建模”。
gbjbaanb 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.