UML利用视图、图、模型元素和通用机制等几个部分,从不同角度来观察和描述一个软件系统的体系结构,是一个庞大的表示法体系。作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。
(1)UML语义:描述基于UML的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者能在语义上取得一致,消除因人而异的表达方法所造成的影响。此外UML还支持对元模型的扩展定义。
(2)UML表示法:定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文本语法所表达的是应用级的模型,在语义上它是UML元模型的实例。
UML的组织结构由三部分组成:第一部分是构架,它反映系统的组织结构、组成、关联与交互等,包括5类视图,它们构成视图的9种图,又被称为“4+1”视图;第二部分是包含UML建模的事物、关系和图的基本构造块;第三部分是实现特定目标的UML公共机制。
1)构架
UML的构架由5类视图构成,包括用例视图、逻辑视图、进程视图、构件视图(实现视图)和部署视图,它们对于软件体系结构的可视化、详细描述、构造等方面都极为重要。每个视图都是某个特定方面对于整个系统描述的一个投影,结合起来可以完整描述整个系统,其中用例视图是描述系统功能的核心和其他视图的出发点。UML的视图结构模型如图3-10所示。
图3-10 UML的“4+1”视图结构模型
(1)用例视图(Use Case View)
①作用:描述系统的功能需求;找出用例和行为者。
②适用对象:客户、分析者、设计者、开发者和测试者。
③描述使用的图:用例图和活动图。
④重要性:系统的中心,它决定了其他视图的开发,用于确认和最终验证系统。
(2)逻辑视图(Logical View)
①作用:描述如何实现系统内部的功能。
②适用对象:分析者、设计者、开发者。
③描述使用的图:类图、对象图、状态图、时序图、协作图和活动图。
④重要性:描述了系统的静态结构和因发送消息而出现的动态协作关系。
(3)构件视图(也称实现视图,Implementation View)
①作用:描述系统代码的构件组织、实现模块以及它们之间的依赖关系。
②适用对象:开发者。
③描述使用的图:构件图。
④重要性:描述系统如何划分软件构件,进行编程。
(4)进程视图(Process View)
②适用对象:开发者、系统集成者。
③描述使用的图:状态图、时序图、协作图、活动图、构件图和部署图。
④重要性:将系统分割成并发执行的控制线程及处理这些线程的通信和同步。
(5)部署视图(Deployment View)
①作用:描述系统的物理设备部署。
②适用对象:开发者、系统集成者和测试者。
③描述使用的图:部署图。
④重要性:描述系统的物理设备连接和哪个程序或对象驻留在哪台计算机上运行。
2)基本构造块(www.xing528.com)
如图3-11所示,UML中有三种基本构造块,分别是事物、关系和图。
图3-11 UML基本构造块的结构
事物是整个模型的基础,其中结构事物通常是模型的静态部分,可用来对概念或物理元素建模(包括类、接口、协作、用况、主动类、构件和节点);行为事物是模型的动态部分,是跨越时间和空间的行为(包括交互和状态机);分组事物有效地组织模型,使模型结构化(主要分组事物为包);注释事物则是为了让模型更易于理解,被用来描述和说明模型元素等(主要注释事物为注解)。
UML中有4种关系(依赖、关联、泛化和实现),用来说明多个模型元素在语义上的相关性以及形成更进一步的语义定义。
UML从1.0版开始定义有9种基本的图,从系统的不同侧面描述软件系统,包括类图、对象图、用例图、时序图、协作图、状态图、活动图、构件图和部署图,此后的版本中还针对一些特别的应用进行了扩展,本书不做重点描述。
①依赖(Dependency):依赖关系是指一个元素(依赖事物的提供者)的变化将影响到另一个元素(依赖事物的接收者)或向其提供信息。依赖的形式是多样的,针对不同的依赖形式,依赖关系有不同的变体。依赖关系用由源模型指向目标模型的带实心箭头的虚线表示,如图3-12所示。
图3-12 依赖关系
②关联(Association):关联关系是两个或多个特定类之间的关系,它描述了这些类元的实例的联系。参与其中的类元在关联内的位置有序。在一个关联中同一个类可以出现在多个位置上,关联的每一个实例链是引用对象的有序表,关联的外延是这种链的一个集合。在链集合中给定对象可以出现多次,或者在关联定义允许的情况下可以在同一链中(不同的位置)出现多次。关联将一个集合组织在一起,如果没有关联,那只是一个无连接类的集合。
关联可以有一个名称,但是它的大部分描述建立在关联端点中,每个端点描述了关联中类对象的参与。关联端点只是关联描述的一部分,不是可区分的语义或可用符号表示的概念。关联关系如图3-13所示。
图3-13 关联关系
③泛化(Generalization):泛化关系表示两个元素从一般到特殊的类元关系,也称为继承。特殊元素完整地包含了一般元素并含有更多的信息。特殊元素的实例可以用于任何使用一般元素的地方。
泛化是两个同类的可泛化元素(如类、包或其他元素)之间的关系,其中一个元素被称为父,另一个为子。对类而言,父类称为超类,子类称为子类。父类说明的直接实例带有所有子类的共同特性,子类说明的实例是父类说明的实例的对象。泛化关系用一条带空心箭头的实线表示,它从表示特殊性事物的模型元素指向表示一般性事物的模型元素,如图3-14所示。
图3-14 泛化关系
④实现(Implementation):实现关系定义某事物是如何被构造、计算的。例如,类是类型的实现,方法是操作的实现。实现和说明之间是实现关系。
实现关系用可执行的媒介(如程序设计语言、数据库、数字化硬件)描述系统功能的一个步骤。对实现而言,必须产生下层的决策以使设计适合具体的实现,并与环境相适应(每种语言有各自的限制)。如果设计得好,则实现任何决策都不会影响系统的全局。这一步由实现层模型捕捉,特别是静态视图和代码。
泛化和实现关系都是将一般描述与具体描述联系起来,两者的差别在于泛化关系将同一个语义层内的元素连接起来,而且在同一模型内;实现关系将在不同语义层内的元素连接起来,并且(接口或类)通常建立在不同的模型内。
实现关系用一条带空心箭头的虚线描述,箭头从源模型指向目标模型,表示源模型实现目标模型,如图3-15所示。
图3-15 实现关系
3)UML的公共机制
为了使UML整个模型更加一致,UML定义了4种公共机制:规格说明(Specification)、修饰(Adornment)、通用划分(Common Division)和扩展机制(Extensibility Mechanism),如表3-2所示。
表3-2 UML的公共机制
由表可见:
(1)UML不只是一种图形语言。实际上,在它的图形表示法的每部分背后都有一个详细说明,提供了对构造块的语法和语义的文字叙述。
(2)UML表示法中的每一个元素都有一个基本符号,这些图形符号对元素最重要的方面提供了可视化表示。对元素的描述还包含其他细节,例如一个类是否是抽象类,或它的属性和操作是否可见。要把这样的修饰细节加到基本符号上。
(3)在对面向对象的系统建模中,至少有两种通用的划分世界的方法:对类和对象的划分;对接口和实现的划分。UML中的构造块几乎都存在着这样的两分法。
(4)可用一种受限的方法扩展UML。UML的扩展机制包括构造型、标记值和约束。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。