模型驱动开发MDD

MDD代表了一套理论和工业化软件开发的方法框架,在软件开发全生命周期中系统的的使用模型作为主要工件,它主要为了解决软件的两个根本危机:复杂性和变更能力 。

模型替代文档的原因在于模型可以上传下达,可以复用、可以扩展、可以变更、可以关联。

模型驱动开发Model Driven Development  (MDD) 是一种以模型作为主要工件的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码或者可运行配置。

在过去多年,一个系统的开发面临了多个挑战,新的需求和现存系统不断增长,系统变得越来越复杂,以至于我们很难及时的构建它们。为了解决这些问题,就出现了很多新的方法,其中最突出的一个就是模型驱动开发MDD。

MDD代表了一套理论和工业化软件开发的方法框架,在系统开发全生命周期中使用模型作为主要工件,能够解决系统的两个根本危机:复杂性和变更能力 。

模型可以更好进行构建和规范

使用模型作为文档和规范是有价值的,但是它需要严格的管理方式和一定的规范规则来确保模型的持续更新和统一表达。在实际工作中,我们迫于时间压力经常会出现和最终实现不一致的模型,这对开发和项目其实是不利的。MDD的基本思想是让开发中心从编程、制造等具体最终实现转移到高级别抽象中去,通过模型转成代码或其他工件来驱动部分或全部的自动化开发。这样就可以保障最终的实现和设计的模型是一致的,保障从需求到设计到实现的完整统一,也就是模型驱动开发的核心价值。

模型是一种抽象的语言

模型是一种可视化语言,遵守某类国际规范约束,比自然语言具备更加严谨和统一的表达机制

多种模型

不同阶段需要建立不同的模型去驱动相关的开发

模型表达了一种可视化建模语言的描述,它需要我们自己根据业务和技术需要去设计它,在架构、分析、设计、实现等不同阶段都会存在多种模型, 如企业架构模型、技术架构模型、领域模型、UI模型、数据库建模、业务规则模型、系统部署模型、测试模型等。

建模的过程是由不同阶段的成员来完成,有些模型之间有引用关系,应用软件通过所有人的建模工作而构建起来。

所有研发流程中的人员都应该参与到模型驱动开发中来,组成一个完整的链路
MDD不是某类人的工作内容,它需要统一上下游工作人员,才能完成核心驱动

MDD三个阶段

  • 选择建模工具

建模工具是我们实现模型驱动的第一要素,工具可以帮我们更快速实施模型驱动。不同行业不同阶段我们可以选择不同的建模工具,比如所架构分析设计,可以用UML、SysML建模工具,数学建模选择MATLAB,3D建模也有很多工具支持。

  • 建模
用不同视图构建我们思想中的模型
  • 模型转换
       

通过工具建立模型,但是这些模型不是孤立的,基于模型驱动的核心是用模型去驱动后续一些列的实现过程,因此模型表达的含义需要和后面的过程有关联对应,MDD必须满足模型是可读的,模型可以转换为全部或者局部的实现过程。这就是模型转换的过程,模型转换的意义更多在实用实现方面,因此这就要求在第二步创建模型时应该考虑到后续的实现过程,创建的模型要在实现时具备可行性。同时对建模工具也提出更高的要求,如何具备转换能力,如:提供更多的自动化转换过程,提供更便捷的扩展功能等。

MDD的优势

  • 提高产能:开发快、降低成本、提高质量
  • 可维护性:高级别模型与技术分类,技术架构的改变意味着只是模型的一种新的转换
  • 一致性:后续实现和架构决策容易出错,MDD可以确保生成的工件是一致的
  • 可重用性:模型、转换和架构都是可以重用的,由于架构和技术问题已经被解决,所以开发新功能的风险也低
  • 改善涉众沟通:模型忽略系统逻辑行为的底层实现,而直接展现问题域,这样可以保证和涉众使用同一种语言进行沟通
  • 改善设计沟通:模型与系统是匹配及时更新的,所以可以通过模型来改善系统设计的讨论和沟通
  • 捕获领域知识:可以加强领域专家对系统的直接影响,通过模型还可以帮助组织进行知识管理
  • Business-IT对齐:关注问题域,关联技术域,一种业务和IT对齐的方法
  • 模型作为一种长期的核心资产:高级别的模型作为核心资产管理起来,只有在业务需求变更时才会进行更改
  • 推迟技术决策:应用开发在早期关注业务逻辑问题,对于技术选择可以推迟到后期
  • 提供及时的文档:通过模型可以生成很多同步的文档,利于与不同涉众进行交流

汉德天下拥有10多年聚焦以UML、SysML建模规范的模型驱动MBSE实施经验,熟悉业内各类工具,拥有航天、机械、工业、汽车、船舶、军工、软件等领域实施经验,可结合实际业务进行MBSE具体实施方案咨询和培训、可根据不同业务进行工具链的定制研发。欢迎联系了解

汉德天下–助力我国系统工程落地实施,助力我国智能制造数字化推进

发表评论

邮箱地址不会被公开。 必填项已用*标注