写点什么

模型驱动开发:成功在何方?

  • 2010-09-24
  • 本文字数:1220 字

    阅读完需:约 4 分钟

Ulrik Eklund 发表了关于 Jon Whittle 在 SPLC 2010 大会上的主题演讲摘要。在演讲中,他讲述了在 EA-MDE 项目中所得到的使用基于模型开发的实战经验。 项目的目的在于了解模型驱动工程(MDE)导致成功或失败的因素,从而有助于设计下一代的 MDE 工具。这并不是个新问题,两年前,Sven Efftinge、Peter Friese 和 Jan Köhnlein 就曾经发表了一篇名为《MDD 最佳实践》的文章,而Mendix 公司的CTO,Johan Den Haan 也发表了一篇关于 MDD 在初始阶段为何会失败的文章。采用 MDE 方法可能会让人气馁。 这样,Johan 根据他的文章做出以下结论:

我们的目的不是要让你在模型驱动软件开发过程的开始阶段就丧失信心。我只是想要向你展示它的复杂性,并且想要分享一些想法,它会指引你工作的方向,从而有助于让你克服 MDE 的复杂性问题。

两周前,他还在博客上发表了一篇文章,详细说明了在创建模型驱动的软件工厂方法的过程中所得到的教训,并且重申了相同的怀疑态度:

我认为模型驱动软件开发是未来软件开发的重要组成部分。然而,我也看到很多人在实际使用模型驱动技术,并将它应用在日常的工作中时遇到了很多困难。 因此,创建成功的模型驱动的软件工厂方法(MDSF)是很重要的。

这个问题实际上非常流行。上周,Marco Bramballi 和 Stefano Butti 也做了一次同样主题的演讲,其中讲述的是在大规模的银行项目中应用 BPM 和 MDD,其中包括 BPMN、WebML 和 WebRation

在他的演讲中,Jon 提供了成功的 MDE 方法的一些关键成功因素,这也是他所从事的研究的一部分:

  1. 保持领域(我想是建模的领域)紧而窄。
  2. 将目标定位为众所周知的领域。
  3. 在关键的项目中实行 MDD(他的意思是,试验性的项目永远都不会得到充分的关注和资源)。
  4. MDD 在设计时最容易发挥作用。
  5. 仔细确认成果,其中到处都会有偏差。
  6. 不要沉迷于自动生成代码。
  7. 并非所有人都能够抽象地思考。
  8. 大多数项目在规模膨胀时都会失败。
  9. 让费用和过程与人们思考的方式一致,而不是与其它方式一致。

在他们的文章中,Swen、Peter 和 Jan 还警告说:

我们为读者提出的最重要的建议是: 要有成效。当恰当地使用 DSL 和代码生成器的时候,它们会是相当有用的工具。 但我们始终应该专注于所要解决的问题。 在很多情况下,比较合理的做法是使用 DSL 来描述特定的问题,而不是所有方面。

尽管 MDE 还在快速地发展,但 Jon 关于 EA-MDE 调查的报告指出,响应者“认为MDE 是个好东西”。

模型驱动架构、开发和工程学以及丰富的模型驱动开发环境——像 NeXTStep ——都是在 80 年代末出现的,在十多年之后,模型已经无处不在,然而,开发工具的数量还是很少,我们的业界还在寻找让模型驱动开发成为主流的方法。只有这么少的成功案例,我们真的可以定义“得到的教训”或者“最佳实践”吗? 是什么阻碍了我们的发展呢? 是模型的关注点和准确度吗?是缺少工具?还是标准?或者是抽象的级别让大多数人难于创建可用的软件工厂方法?你的意见如何?

查看英文原文: Model-Driven Development: Where are the Successes?

2010-09-24 04:383343
用户头像

发布了 340 篇内容, 共 135.2 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

测试敏捷化 vs 敏捷测试

BY林子

敏捷测试 测试敏捷化

模块6作业

Geek_cb2b43

初探.net core微服务架构

为自己带盐

Consul dotnet 28天写作 12月日更

Javascript实现一个Module

Jeannette

Trino通过Iceberg创建表的过程分析

漫长的白日梦

数据湖 iceberg trino

架构实战营 - 模块6 - 作业

lucian

架构实战营

HubSpot company数据在UI上的展示和通过API方式进行获取

汪子熙

Cloud 28天写作 SAP 12月日更

Web/Css 预处理语言的 Less 的使用 03

Jeannette

Web/Css 预处理语言的 Less 的使用 04

Jeannette

聊聊 Kafka: Producer 的网络模型

老周聊架构

签约计划第二季

电商系统设计

michael

#架构实战营

❤️使用 HTML、CSS 和 JavaScript 的简单模拟时钟❤️

海拥(haiyong.site)

JavaScript 大前端 28天写作 签约计划第二季 12月日更

Web/Css 预处理语言的 Less 的使用 02

Jeannette

040022-week6-design

InfoQ_70156470130f

聊聊 Kafka:Producer Metadata 读取与更新机制

老周聊架构

云原生 Apache Pulsar 签约计划第二季 2月月更

在线JSON转jsdoc工具

入门小站

工具

从0开始设计Twitter系统架构

俞凡

twitter 架构 微服务 大厂实践

小程序开通cms可视化网页后台

坚果

小程序 28天写作 12月日更

EasyRecovery如何恢复虚拟建模软件的数据文件

淋雨

EasyRecovery

Dubbo框架学习笔记一

风翱

dubbo 12月日更

架构实战营总结

michael

#架构实战营

Web/Css预处理语言的Less的使用01

Jeannette

【LeetCode】三数之和双指针Java题解

Albert

算法 LeetCode 12月日更

架构训练营 -- 模块二

LJK

架构训练营

Vue SSR(server side render)

Jeannette

模块八作业

bob

「架构实战营」

dart系列之:如丝滑般柔顺,操作文件和目录

程序那些事

flutter io dart 程序那些事 12月日更

架构训练营 - 模块七

Geek_9de3de

架构实战营

Linux之pwd命令

入门小站

Linux

模块6作业

忘记喝水的猫

架构训练营

Go+ HTTP 服务器教程(5.2)

liuzhen007

28天写作 12月日更

模型驱动开发:成功在何方?_架构_Jean-Jacques Dubray_InfoQ精选文章