您是否使用 MDA/MDD/MDSD 等任何类型的模型驱动方法?未来会是这样吗?

2024-03-04

编程语言在其历史上经历了几个(或)进化步骤。有些人认为模型驱动的方法将是下一件大事。 openArchitectureWare、AndroMDA、Sculptor/Fornax Platform 等工具可以带来令人难以置信的生产力提升。然而,我的经验是,一开始起步相当容易,但当你尝试一些意想不到的事情时,或者很难找到足够的信息来告诉你如何开始你的项目时,也会在某些时候陷入困境,因为可能有很多事情需要考虑。

我认为从模型驱动的东西中获得任何东西的一个重要见解是理解模型不一定是一组漂亮的图片或树模型或 UML,但也可能是文本描述(例如状态机、业务规则) ETC。)。

你怎么看?你的经历告诉你什么?模型驱动开发(或者无论你如何称呼它)有未来吗?

Update:似乎人们对这个话题并没有太多兴趣。如果您对模型驱动方法有任何(好的或坏的)经验,或者为什么您认为它一点也不有趣,请告诉我。


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

我认为 MDSD 仍然与代码生成有太多的联系。

仅当您的代码包含大量噪音和/或非常重复时,代码生成才有用。换句话说,当你的代码不能主要关注本质复杂性,而是被偶然复杂性所污染时。

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

因此,这些新的平台/框架给 MDSD 运动带来了很大的阻碍。

DSL(文本DSL)是另一种趋势,它试图使人们只关注本质的复杂性。虽然 DSL 可以用作代码生成的源,但它们主要与代码生成无关。 DSL(尤其是内部 DSL)基本上让它开放以在运行时解释/执行。 [运行时代码生成介于两者之间]。

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

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

漂亮的方框和图表不会提供抽象级别的另一种简化或提升!它们可能有利于可视化,但即便如此也是值得怀疑的。图片并不总是掌握复杂性的最佳表示!

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

请看下面的 ActiveRecord 模型,作为我的理论的说明:

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

我认为这不能再简化了。此外,任何带有方框和线条的图形表示都不会简化,并且不会提供任何更多的便利(考虑布局、重构、搜索、比较......)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您是否使用 MDA/MDD/MDSD 等任何类型的模型驱动方法?未来会是这样吗? 的相关文章

  • 如何在 Rust 中编写共享行为而不在每个模块中重复相同的代码?

    对于编写一个非常大的程序 我认为没有办法减轻为使用某种共享行为的每个结构编写相同代码的负担 例如 狗可能会 吠叫 struct Dog is barking bool impl Dog pub fn bark self self is ba
  • 函数式编程和非函数式编程[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 在大学第二年 我们 教 了 Haskell 我对此几乎一无所知 对函数式编程更是一无所知 什么是函数式编程 为什么和 或我想在哪里使用它而不是非函数式编程 我认为 C 是一种非函
  • Android Studio“移动”和“穿戴”项目模块,共享组件位置

    在我的 Android Studio 项目中 有两个 Android 模块 mobile 和 wear 这些似乎是能够运行此应用程序的 Android 设备类型的视图和控制器 我希望他们共享一些逻辑 例如模型文件和 POJO 那么它们应该存
  • Scala 与 F# 的问题:它们如何统一 OO 和 FP 范式?

    Scala 和 F 统一 OO 和 FP 范式的方法之间的主要区别是什么 EDIT 每种方法的相对优点和缺点是什么 尽管支持子类型化 如果 F 可以推断函数参数的类型 那么为什么 Scala 不能呢 我看过 F 做过低级教程 所以我对它的了
  • 面向方面编程与面向对象编程

    与这里和全世界的大多数开发人员一样 我多年来一直使用面向对象编程 OOP 技术开发软件系统 因此 当我读到面向方面编程 AOP 解决了传统 OOP 无法完全或直接解决的许多问题时 我停下来思考 这是真的吗 我已经阅读了很多信息 试图学习这个
  • “事件驱动”和“面向对象”编程之间的关系是什么?

    如今 我几乎到处都听到 事件驱动 编程 维基百科说 在计算机编程中 事件驱动编程是一种编程范例 其中程序的流程由用户操作 鼠标单击 按键 传感器输出或来自其他程序 线程的消息等事件确定 事件驱动编程是图形用户界面和其他应用程序 例如 Jav
  • 我应该在哪一层将两个实体连接在一起?

    我使用 Spring MVC 和常规 JDBC 我刚刚了解到我应该将业务流程分为表示层 控制器层 服务层和存储库 DAO 层 现在假设我有一个名为Person可以有多个Jobs Job它本身是另一个实体 有自己的属性 据我所知 存储库层仅管
  • 在“类 xxx”上设置“xxx”时捕获意外异常:用值 [“x”,] 设置表达式“xxx”时出错

    我将一些参数传递给一个执行操作的类ModelDriven
  • 在方法开始和结束时进行错误处理的优缺点是什么

    根据我的程序员的经验 我混合了所有可能的错误处理方式 我创建了我的个人风格 不过 我想听听您认为的优点和缺点方法开始时与方法结束时的错误处理 一开始的处理 public String GenerateSomeStringData Strin
  • 理解 MVC:模型上的“Fat”和控制器上的“Skinny”是什么概念?

    我试图理解模型上的 胖 与控制器上的 瘦 的概念 并且根据我一直在讨论的内容 我有以下示例 这取自 freenode 讨论 问 在 MVC 范式中 它说胖模型 瘦控制器 我在这里想 如果我有很多方法 在控制器上 只使用一些抽象方法来 CRU
  • 如何将AOP引入到生产性软件开发中?

    我知道这个问题以前曾被问过 但这是一年半前的事了 尽管我认为现在可能是重新提问的时候了 我也认识到它可能被视为主观的 但我认为支持 反对 AOP 是有客观原因的 我有兴趣谁在使用AOP在软件开发中也why or why not使用它 我认为
  • 标记/样式最佳实践:如何在 CSS 类上有效地分发样式规则?

    假设我有一些 HTML 页面和相应的 CSS 文件 我想为某些元素添加圆角 我想在其他所有部分上替换背景颜色 我想为每个部分标题添加悬停状态 如此等等 我一直在造型 造型 造型 我发现存在三个极端 涉及按类 按 id 和按层次结构在标记上分
  • 需要 Angular 2 ng

    我在 Angular 2 中制作了一个模型驱动表单 并且只有在未选中上面的复选框时才必须显示其中一个输入字段 我使用 ngIf 执行此操作 我的问题是 仅当未选中该复选框时 如何设置所需的输入 在 Angular 1 x 中 我可以通过视图
  • 您是否使用 MDA/MDD/MDSD 等任何类型的模型驱动方法?未来会是这样吗?

    编程语言在其历史上经历了几个 或 进化步骤 有些人认为模型驱动的方法将是下一件大事 openArchitectureWare AndroMDA Sculptor Fornax Platform 等工具可以带来令人难以置信的生产力提升 然而
  • 反应式编程和函数式反应式编程之间的区别

    我最近一直在对反应式编程进行一些研究 我发现很难找到反应式编程和反应式编程之间差异的良好描述 功能性 反应性的 反应式编程是否只是使用函数式方法 范式而不是使用声明式或面向对象范式来实现 函数式响应式编程 FRP 是一种具有特定语义的特定编
  • OOP 的实际用途

    我最近和一位不喜欢的同事进行了一场辩论OOP http en wikipedia org wiki Object oriented programming 引起我注意的是他说的话 在对象中进行编码有什么意义 如果是重用 那么我可以创建一个库
  • 数据流编程和响应式编程有什么区别?

    我实在看不出他们之间有什么区别 它们都与指令中的数据流动和输入数据变化的传播有关 我读了这本书 作者 马特 卡尔基 https deepfriedcode com books darps 它清楚地表明它们都是相同的 另一方面 维基百科 ht
  • Struts 2/ Foundation 5 - ModelDriven 类和文件上传

    我是 Java 编程新手 我正在尝试创建一个带有表单等的基本网页来下订单 在参加了几次工作会议后 我决定使用 Struts 2 我还使用 zurb Foundation 5 来实现响应式 UI 我能够创建一个 HTML 网页和一个带有文本字
  • 使用 JSP 时如何使用 Struts 2 ModelDriven 接口访问 POJO 中的属性?

    我有一个实现的动作类ModelDriven界面 这ModelDriven是一个常规 POJO 问题在于它的属性之一是另一个对象 想象一下我的模型驱动is a object calledPersonand my person has an a
  • 命令式代码与声明式代码[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我试图理解命令式范例和声明式范例之间的区别 因为我必须对 Visual Basic 进行分类 NET 在不同的范式中 除了面向对象之外

随机推荐