1.模型驱动相关名词
MDPM (Model driving programming methodology) 模型驱动编程方法
MDA(Model deiven Architecture)模型驱动体系结构
OMG (Object Management Group) 对象管理组织
UML (Unified Modeling Language) 统一建模语言
PIM (Platform Independent Model) 平台独立模型
ACSD (Abstract conceptual structure diagram)抽象概念结构图
PSM (Platform Specific Model)平台相关模型
ALSD (Abstract logical structure diagram)抽象逻辑结构图
AISD (Abstract implementation structure diagram)抽象实现结构图
---------------------------------------------------------------------------------
MDSD 模型驱动软件开发
MDSE 模型驱动系统
MDD 模型驱动开发
MDE 模型驱动工程
AST 抽象语法树
ASL 动作规范
PDL 程序设计语言
2.some concept
1)MDA(Model deiven Architecture)模型驱动体系结构
MDA是一种新的编程规范,是开发应用程序的方法,核心思想是抽象出PIM与平台无关模 型,然后针对不同实现技术制定多个映射即PSM平台相关模型,再将PSM转换成为代码。
2)Model
MDA对Model下的定义是广泛的:源代码是一个模型,基于UML统一建模语言也是一个模型
3)PIM与PSM
pim是从技术细节中抽象抽象结构和功能的形式化规范,通过UML来表示,它与UML都是与平台无关的。而psm是描述pim在特定平台上如何实现。
pim中包含ACSD抽象概念结构图
psm中包含ALSD抽象逻辑结构图与AISD抽象实现结构图
4)MDA模型驱动体系结构 的 架构(只介绍部分)
4.1UML (Unified Modeling Language) 统一建模语言
该语言包含内容很多有许多种图,许多种模型具体可见 :统一建模语言百科 ,
UML础: 统一建模语言简介 (有详细各种图的事例)
4.2核心目标平台:XML,JAVA,.net等等
4.3普及服务:如图略
4.4垂直领域:如图略
5)PIM平台独立模型 到 PSM平台相关模型 的映射
它们是MDA定义的两种主要模型类型,通过映射规则可以互相转换。
所有基于MDA开发的object都是从用 UML统一建模语言 创建一个PIM开始的,PIM可以表达应用系统的 设计细节、商业逻辑、数据需求。因为不依赖于平台所以少了许多顾虑,很是方便。
PIM设计完成后就要选择一个平台,然后转换成对应平台的PSM。
OMG定义MDA的文档中列出了四种方法将PIM转换为PSM
•手工转换
•用已建立模式来进行转换
•通过一些已建立的模式定义一个算法,然后用这个算法处理PIM得到PSM的主要框架,最后在手工的添加内容。
•使用应用上述算法的工具来自动生成PSM
6)基本概念的关系模型
6.1动作action
•动作是程序行为的基本单位。
•动作就是将一组输入转化为一组输出并作一些事情。输入与输出都可能为空
•动作有多种类型,每种类型都有对应的规则 。
6.2数据流data flow
•数据流链可以连接许多动作,比如:一个动作的output 是另一个动作的input。
•它可以表示一组动作的有序进行
6.3控制流control flow
•控制流表示两个动作的顺序依赖关系。比如:后继动作只有在前驱动作完成后才能执行。
•当两个动作没有数据流的次序约束时使用。
6.4过程procedure
•过程是一组动作的集合,比如c++中的类和传统c中的函数。
•过程可有多个参数和结构。
•过程蓝图就是将过程可视化。
7)抽象概念结构图(ACSD)
•基本集合Tcn = {+,*,o,?,!,:,>,e,&,#}
•自然语言集合Snn={s|s∈自然语言语句}
•ACSD是树形结构的。
•+ 顺序动作后有一个描述,然后依次执行它的子节点
•o 单项选择动作后有一个行为描述,当条件满足时顺序执行它的子节点,概念层只需 概述行为,而不需给出具体条件。
•?多项选择后也有一个行为描述 ,会执行它的若干子节点中的一个
•* 循环动作后也有一个行为描述,无需给出循环条件,它的子节点满足条件时将重复 执行。
•e 异常处理动作
•:基本动作,定义赋值。
•!模块动作
•>跳转动作 用于表示无条件和有条件跳转。
•#未定义动作
•实例
8)抽象逻辑结构图(ALSD) (只给出java平台相关)
•JAVA抽象节点类型
•实例
9)抽象实现结构图(AISD)
•AISD实例
•有源代码的所有细节
10)为什么分层描述?
10.1概念层
•目标
描述求解问题的思想和概要解决方案
•要求
抽象,可视,可理解,有结构,避免细节,独立于现实
•设置的好处
将解题思想与程序代码隔开,可以抛开许多实现问题去思考,能很好的表达解题思 路,便于截图思路的重用。可跨平台移植。还易于他人理解。
10.2逻辑层
•目标
详细描述求解算法的控制结构,达到彻底分解
•要求
可理解,逻辑构造的利于实现,容易变为实现层,避免数据流表示细节,控制流要 与实现相关。
•设置的好处
利于让不同人发挥长处(xuan),利于管理(xue)
10.3实现层
•目标
过程实现的精确描述
•要求
精确,严格,可视化,控制流数据流都与实现相关,能直接生成代码。
•设置好处
过程实现表示的可视化,数据流表示细节的局部化,更适合人的阅读与使用。
10.3三层的工作性质
概念层属于设计与分析。
逻辑层既属于设计,也属于构造。
实现层属于构造工作
10.4程序独立性原理
一是指,解决问题的思路与目标平台的 控制流 数据流 的实现细节 相互独立。
二是指,目标平台语言的逻辑控制结构 与 它的数据流实现表示细节相互独立。
11)过程蓝图表示法总结
11.1过程蓝图的目的
把程序的静态结构进行可视化描述。制造独立性,以便更好的理解正在构造的程序,提 供简化和重用的机会
11.2比较
3.正向工程实例
4.逆向工程实例