第1章 MDA,OCL的用途
1.1 OCL介绍
对象约束语言(OCL, Object Constraint Language) 是一种能用于建造软件模型的建模语言。它被OMG定义为UML的标准附加("add-on"),UML)用于面向对象的分析与设计。用OCL写的表达式依赖于UML图中定义的类型(如类、接口等)。因此,OCL的用途包含UML的部分用途。
用OCL写的表达式在面向对象模型和其他对象模型制品中增加了至关重要的信息。这些信息通常不能在图中表达。在UML1.1中,这些信息被看成是对约束的限制,这些约束被定义为一个(或部分)面向对象模型或系统中一个或多个值的限制。而在UML2,这些信息是必须包含在模型中的。定义查询,参考值或规定条件和业务规则都是通过写表达式来完成的。OCL是可以用来写清晰、明确风格的表达式的标准语言。
目前,最新的OCL 2.0 已正式在OCL规范中定义并被OMG采纳。
OMG标准间有很强的相互关系。OMG现在的主要活动是MDA。MDA方法的实质是模型是软件开发的基础。所以,模型必须优良和一致的。通过联合UML和OCL,你可以建立这样的模型。
1.2 模型驱动架构(MDA)
MDA正逐渐成为软件开发中重要的方面。很多工具声称兼容MDA,但什么才真正是MDA呢?
MDA是在OMG监督下建立的一种框架。它定义了一种语言定义的模型如何转换到另一种语言定义的模型。一个转换的例子是从UML模型中创建数据库模式 ,UML成为源语言,而SQL成为目标语言。源代码也被认为是一种模型。因此,从UML模型中生成代码也是一种转换。
本节给出了一个简单的MDA介绍。你可以在OMG的网站和很多图书上找到更多关于MDA的信息。
1.2.1 PIM和PSM
MDA的关键是软件开发过程中模型的重要性。MDA中,软件开发过程是由建立软件系统模型的活动驱动的。MDA分成三个步骤:
建立高层抽象的模型,这种模式独立于任何的实现技术。这被成为平台独立模型(PIM, Platform Independent Model)。
转换PIM为一个或多个根据特定实现技术(如数据库模型或EJB模型)来说明系统的模型。这些模型称为平台相关模型(Platform Specific Models, PSMs)。
转换PSM到代码。
因为PSM与相关技术非常接近,最后的转换比较简单。负责的步骤是将PIM转换为PIM。PIM、PSM和源代码间的关系,以及它们间的转换如下图: