模型驱动的软件开发
var code = "101bf004-9dce-484e-8a4d-b93313008a31"
1.模型驱动的软件开发
开发者主要的工作是创建和维护一系列描述系统不同方面、不同抽象层次的精确模型,而最终的可运行代码(全部或大部分)可以从这些模型自动或半自动地生成。
1-1 传统开发 (Code-Centric) VS 模型驱动开发 (Model-Driven)
| 特性 | 传统开发 (Code-Centric) | 模型驱动开发 (Model-Driven) |
|---|---|---|
| 核心工件 | 源代码 | 模型 (PIM, PSM) |
| 抽象层次 | 较低(直接面对代码和技术细节) | 较高(PIM 层专注业务,技术细节后置) |
| 代码来源 | 手动编写为主 | 自动生成为主(从模型转换而来) |
| 设计文档 | 通常滞后、不一致,易过时 | 模型即设计,与实现(生成的代码)保持高度一致 |
| 变更影响 | 业务或技术变更常需修改大量分散的代码 | 业务变更主要在 PIM 修改;技术迁移主要调整转换规则/生成器 |
| 参与者 | 主要是开发人员 | 业务专家、架构师、开发人员在模型层更紧密协作 |
| 设计师 画蓝图 -> 工人(程序员)根据蓝图的理解,手动搬砖砌墙(写代码) | 建筑师用专业的建模工具画出一套机器可读的数字蓝图(模型)-> 代码生成器 根据蓝图,直接、自动地生产出建筑构件(代码)。 | |
| 需要部署到多个异构平台的系统(一次建模,多平台生成) |
它的核心工作流(以OMG的MDA为经典框架)通常包括:
-
计算无关模型:只描述业务领域和需求,不关心技术。
-
平台无关模型:描述系统的架构、逻辑,但不依赖任何具体技术(如Java或.NET)。
-
平台相关模型:在PIM基础上,绑定到具体技术平台(如Java EE, .NET)的细节。
-
代码生成:通过转换规则,将PSM自动转换为特定平台、特定编程语言的代码
2. 什么是模型?
在软件工程和MDSD的上下文中,模型 是对现实或构想中某个系统(或系统的一部分)的、有目的的、简化的、形式化的抽象表示。
-
模型会刻意忽略掉与当前目的无关的细节。
-
在MDSD中,模型通常使用定义良好的建模语言来表达,如UML、SysML 或领域特定语言。
-
表示:模型通常使用图形、文字或两者的结合来表示。UML的类图、序列图就是典型的图形化模型。
2-2 模型在软件开发中的常见类型:
-
结构模型:描述系统的组成部分及其静态关系。例如:UML类图、实体关系图、组件图。
-
行为模型:描述系统的动态行为。例如:UML状态机图、活动图、序列图。
-
架构模型:描述系统的宏观结构和设计决策。例如:部署图、包图。