1
面向对象软件工程实践指南
1.2.3.2 3.2 UML与软件体系结构
3.2 UML与软件体系结构

3.2.1 软件体系结构

为了可以更好地表达不同的软件开发人员在软件开发周期的不同时期看待软件产品的不同侧重面,需要对模型进行分层。UML根据软件产品的体系结构(architecture)对软件进行分层。

软件体系结构包含如下内容:

(1)软件系统的组织。

(2)构成软件系统的结构元素的结构及它们之间的接口。

(3)结构元素的行为及元素之间的协同(collaboration)。

(4)结构元素不断组合以构成日渐完备的子系统的过程。

(5)指导软件建造过程的软件构筑风格(architectural style)以及静态和动态元素之间的接口、协同、构成(composition)。

软件体系结构不仅仅决定软件的结构和行为,而且还决定软件的用途、功能、性能、应变性(resilience)、可重用性、经济和技术方面的限制和折中,以及美学考虑(aesthetic concern)。

3.2.2 UML五大视图

UML将软件的体系结构分解为五个不同的侧面,称为视图(view)。如图3-1所示,五个视图分别是用例视图(use case view)、设计视图(design view)、进程视图(process view)、实现视图(implementation view)和部署视图(deployment view)。其中设计视图和进程视图又统一称为逻辑视图(logical view)。

每个视图分别关注软件开发的某一侧面。视图由一种或多种模型图(diagram)构成。模型图描述了构成相应视图的基本模型元素(element)及它们之间的相互关系。

图3-1 软件体系结构的五种视图

1)用例视图

用例视图(use case view)用来支持软件系统的需求分析,它定义了系统的边界,关注的是系统外部功能的描述。它从系统的使用者的角度,描述系统外部的静态的功能和动态行为。系统的动态行为可以由UML中的交互图(interaction diagram)、状态图(state-chart diagram)和活动图(activity diagram)三种模型图来描述。

2)逻辑视图

逻辑视图(logical view)包含设计视图和进程视图,其定义系统的实现逻辑,描述了为实现用例图描述的功能以及在对软件系统进行设计时所产生的设计概念(又称软件系统的设计词汇,vocabulary)。逻辑视图定义了设计词汇的逻辑结构、存在于它们之间的语义联系以及设计词汇包括系统的类/协同/接口及其关系。

对逻辑视图的描述在原则上与软件系统的实现平台无关。它相当于电子产品生产中的电原理图。逻辑视图包含的模型图有:类图(class diagrams)、对象图(object diagrams)、交互图、状态图和活动图。

3)实现视图

当系统的逻辑结构在逻辑视图里定义之后,需要定义逻辑结构的物理实现,比如设计元素对应的源代码文件、各物理文件之间的关系、存放路径等。实现视图(implementation view)就是定义这些内容的地方,它相当于电子产品的印刷电路板的布线图。实现视图描述组成一个软件系统的各个物理部件,这些部件以各种方式组合起来(如不同的源代码经过编译,构成一个可执行系统;或者不同的软件组件配置成为一个可执行系统;以及不同的网页文件以特定的目录结构组成一个网站等),构成了一个可实际运行的系统。

实现视图包含的模型图有:部件图(component diagram)、交互图、状态图和活动图。

4)部署视图

软件产品将运行在计算机硬件系统上,如果软件产品是面向网络的应用系统,则有可能同时运行在多个计算机上。部署视图(deployment view)用来描述软件产品在计算机硬件系统和网络上的安装、分发(delivery)、分布(distribution)。在部署视图中,系统的静态特性可以通过部署图来描述,动态特性的描述用交互图、状态图和活动图来描述。