知识卡片

模型驱动架构MDA的PIM与PSM分层

普通读书笔记卡

内容

模型驱动架构(MDA,OMG于2001年提出的框架规范)不是一个具体的分布式系统实现架构,而是一种彻底改变软件开发重心的方法——它致力于把开发从”以代码为中心”变成”以模型为中心”,让模型不再只是设计文档,而是能自动转换为最终可运行系统的核心软件制品。实现这一目标的关键是把模型拆成两层:平台无关模型(PIM,一个系统的形式化规格说明,与具体实现技术无关)和平台相关模型(PSM,基于某一具体目标平台的形式化规格说明)——两者之间是抽象与求精的关系,通过预先制定的映射规则和辅助工具,把PIM自动转换成PSM,再把PSM转换成代码。这个分层带来的直接好处是:技术平台变迁时PIM不必改动、可以被多种实现技术反复重用,用与平台无关的通用术语描述业务功能也让语义表达更清晰;PIM到PSM之间通过模型映射机制保持可追溯性,体现了MDA自顶向下、逐步求精的开发过程。为进一步集中架构设计决策、提升可重用性,PIM还可以再细分为架构独立模型(AIM,不含任何具体实施技术、适用于大量不同架构设计的分析模型)和架构具体模型(ASM,结合AIM规格、指定系统如何使用某种特定架构风格的细节)——AIM保证了跨架构的可重用性,ASM则保证了从PIM到PSM的转换独立于具体执行平台。理解PIM/PSM分层的关键是:它解决的不是”怎么画模型”的问题,而是”怎么让同一份业务逻辑设计在不换掉核心决策的前提下,适配不同技术平台”的问题,这也是它能提高生产率、支持系统演化与可移植性的根本原因。

参考来源

- 位置:《软件架构理论与实践》第3章《软件架构模型》"3.4.2 模型驱动的架构建模方法"节(源文件:_epub-src/OEBPS/text00026.html) - 结论依据:原文说明"MDA将模型区分为平台无关模型(Platform Independent Model,PIM)和平台相关模型(Platform Specific Model,PSM)……其核心思想是抽象出与实现技术无关、完整描述业务功能的平台独立模型,针对不同实现技术制定多个映射规则……最后将PSM转换成代码",并进一步说明PIM可再分为AIM与ASM,直接支撑本卡片结论。 - 原始内容:MDA致力于将软件开发从以代码为中心变为以模型为中心,使模型不仅被作为设计文档和规格说明来使用,更成为一种能够自动转换为最终可运行系统的重要软件制品……PIM与PSM这两种模型是MDA架构中对于一个系统的不同视角的模型描述,它们之间是抽象和求精的关系。