前言:
第3节 架构描述语言ADL
3.1 ADL概述
3.1.1 什么是ADL
ADL,即架构描述语言(Architecture Description Language)。两个重要的团体在使用架构描述语言术语。它们是:软件工程团体企业建模和工程团体。
在软件工程团体,架构描述语言(ADL)是一种计算机语言,用来描述软件或系统架构。这意味着如果是技术性架构,该架构必须被清楚的传达给软件开发者。功能架构下,该软件架构必须被清楚的传达给利益相关者和企业工程师。一些软件工程团体开发了若干ADL,如ACME(CMU开发),AADL(SAE标准化),C2(UCI开发),Darwin(英国伦敦帝国学院开发)和Wright(CMU开发) 。
3.1.2 核心思想
与通过测试来验证目标软件系统的性能和功能不同的是,模型驱动架构是:试图在软件被构建出来之前,通过对模型的分析和解构这种方式,就可以推导和论证出目标系统的性能和功能,这是一个非常诱人的目标!!!
3.1.3 MDA基于三种建模方法。
第一种建模方法就是著名的统一建模语言(Unified ModelingLanguage,UML),它包括各种软件建模所需的子语言。UML主要的子语言用于表达类图、活动图与状态图。
第二种建模方法是元对象工具(Meta Object Facility,MOF),它是作为UML构造的一个子集而建立的,具有足够的表达能力来表达重要的模型。
第三种建模技术是公共仓库元模型(Common Warehouse Metamodel,CWM),它标准化了数据仓库应用程序的生命周期(例如,设计、构建和管理)。
3.1.4 在MDA开发过程,可从三个不同的层次建立系统模型。
第一个层次模型是计算无关模型(Computational Independent Model,CIM),该模型关注于业务环境和需求,而不考虑计算环境。该模型通常由业务分析人员创建,展示了系统的业务模型,可以理解为系统需求。
第二个层次为平台无关模型(Platform Independent Model,PIM),该模型考虑在计算系统环境中的业务逻辑表示,但不关注具体的实现平台。该模型通常由系统架构师创建,关注系统功能,可以理解为分析模型。
第三个层次为平台相关模型(Platform Specific Model,PSM),该模型关注于如何在特定平台(如JavaEE)下如何实现业务逻辑;可以理解为设计模型。MDA的价值在于CIM可以通过简单的映射转换成PIM。同样,PIM也可以映射成不同平台的PSM,而PSM则可以最终转换成具体的实现代码。
基于MDA的开发过程,业务人员首先通过业务领域的分析和建模构造CIM以描述需求;之后结合相关的标准规范将CIM转换为PIM;在PIM基础上,针对不同的实现环境,可以构造出不同的PSM;最后将PSM转换成目标代码,完成开发过程。
3.2 UML概述
3.2.1 概述
统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
UML作为一种统一的软件建模语言具有广泛的建模能力。UML是在消化、吸收、提炼至今存在的所有软件建模语言的基础上提出的,集百家之所长,它是软件建模语言的集大成者。UML还突破了软件的限制,广泛吸收了其他领域的建模方法,并根据建模的一般原理,结合了软件的特点,因此具有坚实的理论基础和广泛性。UML不仅可以用于软件建模,还可以用于其他领域的建模工作。 [1]
UML立足于对事物的实体、性质、关系、结构、状态和动态变化过程的全程描述和反映。UML可以从不同角度描述人们所观察到的软件视图,也可以描述在不同开发阶段中的软件的形态。UML可以建立需求模型、逻辑模型、设计模型和实现模型等,但UML在建立领域模型方面存在不足,需要进行补充。
作为一种建模语言,UML有严格的语法和语义规范。UML建立在元模型理论基础上,包括4层元模型结构,分别是基元模型、元模型、模型和用户对象。4层结构层层抽象,下一层是上一层的实例。UML中的所有概念和要素均有严格的语义规范。 [1]
UML采用一组图形符号来描述软件模型,这些图形符号具有简单、直观和规范的特点,开发人员学习和掌握起来比较简单。所描述的软件模型,可以直观地理解和阅读,由于具有规范性,所以能够保证模型的准确、一致。
3.2.2 主要模型类型
在UML系统开发中有三个主要的模型:
功能模型
从用户的角度展示系统的功能,包括用例图。
对象模型
采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图。
动态模型
展现系统的内部行为。 包括序列图、活动图、状态图。
3.2.3 UML的13种视图
截止UML2.0一共有13种图形(UML1.5定义了9种,2.0增加了4种)。
分别是:用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图9种,包图、组合结构图、交互概览图3种。
用例图:从用户角度描述系统功能。
类图:描述系统中类的静态结构。
对象图:系统中的多个对象在某一时刻的状态。
状态图:是描述状态到状态控制流,常用于动态特性建模
活动图:描述了业务实现用例的工作流程
顺序图:对象之间的动态合作关系,强调对象发送消息的顺序,同时显示对象之间的交互
协作图:描述对象之间的协助关系
构件图:一种特殊的UML图来描述系统的静态实现视图
部署图:定义系统中软硬件的物理体系结构
包图:对构成系统的模型元素进行分组整理的图
组合结构图:表示类或者构建内部结构的图
交互概览图:用活动图来表示多个交互之间的控制关系的图
3.2.4 UML用五大系统组织视图
UML对系统架构的定义是系统的组织结构,包括系统分解的组成部分,以及它们的关联性、交互机制和指导原则等提供系统设计的信息。
逻辑视图:逻辑视图也称为设计视图,表示设计模型中在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子集。
进程视图:进程视图是可执行线程和进程作为活动类的建模,是逻辑视图的一次执行实例,描述了并发和同步结构。
实现视图:实现视图对组成基于系统的物理代码的文件和构件进行建模。
部署视图:部署视图把构件部署到一组物理结点上,表示软件到硬件的映射和分布结构。
用例视图:最基本的需求分析模型。
3.2.5 UML与软件工程
UML图是软件工程的组成部分,软件工程从宏观的角度保证了软件开发的各个过程的质量,而UML作为一种建模语言,更加有效的实现了软件工程的要求。
如下图,在软件的各个开发阶段需要的UML图
下表是UML使用人员图示