[转]UML的十种视图

一、软件生存周期

要说UML,得从软件工程说起。软件生存周期分为三个过程工六个阶段:

软件生存周期

过程

阶段

细分阶段

软件定义

可行性与计划研究阶段

需求分析阶段

软件开发

设计阶段

概要设计

详细设计

实现阶段

测试阶段

组装测试

确认测试

软件使用与维护

运行与维护阶段

-----------------------------------------------------------------------------------------------

二、需求建模方法

在“需求分析阶段”,需要用到需求建模方法:
1、结构化分析方法
 1)面向数据流
   i. 利用实体-关系图(E-R)可以表示系统中全部重要的数据对象。
   ii. 用数据字典(DD)表示数据的内容。
   iii. 数据流图(DFD)和控制流图(CFD)是表示数据和控制迁移的基础。
   iv. 用状态迁移图(STD)创建行为模型
   v. 加工规格说明(PSpec)控制规格说明(CSpec)提供了更详细的附加说明。
   基于数据流图进行需求分析的过程为:创建数据流模型=>创建控制流模型=>针对原子级处理功能给出过程规格说明。
 2)面向数据
   i. 以信息对象及其操作为核心进行需求分析
   ii. 认为复合信息对象具有层次结构,并且可按顺序、选择、重复三种结构分解为成员信息对象。
   iii. 提供将层次信息结构映射为程序结构的机制
2、面向对象分析方法OOA(Object-Oriented Object Analysis)
  工具:UML(统一建模语言,Unified Modeling Language)统一了面向对象建模的基本概念、术语和表示方法,是面向对象技术发展的一个重要里程碑。它是一种可视化的建模语言,一种建模语言规格说明,是一种表示的标准。

UML定义了四类十种视图:

UML视图

类别

视图

说明

用例图

捕获需求

用例图 use case

说明系统功能与执行者

静态图

捕获

逻辑结构

类图 class

系统静态结构

对象图 object

活跃对象

包图 packet

系统的分解

行为图

捕获

现实行为

交互图

顺序 sequence

消息发送时序

合作 collaboration

动态协作关系

状态图 statechart

对象的动态行为

活动图 activity

描述系统为完成某项功能而执行的操作序列,包含控制流和信息流

控制流:某操作完成后对其后续操作的触发

信息流:刻画操作之间的信息交换

实现图

捕获

执行环境

构件图 component

软件实现系统中各组分以及依赖关系

部署图 deployment

运行环境的硬件及网络物理体系结构

UML可视化建模:

三、UML的十种视图

1.用例图(use case diagram)
  从系统的外部用户的观点看系统应具有的功能。它只说明系统实现什么功能,而不必说明如何实现。用例图主要用于对系统,子系统或类的行为进行建模。

 

2.类图(class diagram)
  描述系统的静态结构,类图的节点表示系统中的类及其属性和操作,边表示类之间的联系(包括继承(泛化)、关联、聚集)。

3.对象图(object diagram)
  类图的一种变形,所使用的符号与类图基本相同。在对象名下面要加下划线。
(图略)

4.包图(packet diagram)
  包是基于模型元素的含义或作用将模型元素分组的一种机制。通过分组,可提高模型的维持性。包之间的关系包括继承、构成与依赖。

5.顺序(时序)图(sequence diagram)
  交互图之一。描述了在时间上对象交互的安排,展现了多个交互对象以及信息交流的序列。时序图包含对象、对象的生命线、按顺序对象间的信息交流、控制焦点(可选的)。

6.合作(协作)图(collaboration diagram)
  交互图之二,强调发送和接收消息的对象间的结构组织,它与顺序图是等价的。在图形上,协作图是顶点和弧的结合。协作图包含对象、链、消息。(图片来自《软件工程(第二版)》齐治昌、谭庆平、宁洪)

7.状态图(statechart diagram)
  状态图描述类的对象的动态行为。它包含对象所有可能的状态、活动图描述系统为完成某项功能而执行的操作序列,这些在每个状态下能够响应的事件以及事件发生时的状态迁移与响应动作。操作序列可以并发和同步。

8.活动图(activity diagram)
  活动图中包含控制流和信息流。控制流表示一个操作完成后对其后续操作的触发,信息流则刻画操作之间的信息交换。提供了对工作流进行建模的途径,活动图中的活动,表示执行工作流中一组的动作。一旦结束,控制流将自动转移到下一个活动,或通过转换进入下一个状态。

9.构件图(component diagram)
  提供当前模型的物理视图,对系统的静态实现视图进行建模。从组织内容看,构件图显示软件构件的组织(源代码构件、二进制代码构件、可执行构件)以及构件间的依赖关系(调用关系)。

10.部署图(deploy diagram)
  描述执行时的系统结构(硬件、软件):执行环境中的硬件结构和连接关系;对硬件(节点)部署软件(构件)。

四、视图说明

类图:类的概念我就不鸡婆了,类图就是用矩形框图显示出类的属性及方法,说白就是类有什么特征,要做什么事。在UML类图中,关系用类框之间的连线来表示,连线上和连线端头处的不同修饰符表示不同的关系。类之间的关系有继承(泛化)、关联、聚合和组合。类图在软件具体设计中占有很重要的位置。

对象图:对象图就是类图的示例,个人觉得软件设计用到的不多。

用例图:就是表示用户(UML里叫动作者)及用户的动作(UML叫用例),比如以MIS系统里的用户登陆例子来说明:登陆者就是用户,登陆过程就是用例,用例图并不关心用例里的具体情景过程。当划分软件的系统功能,用例图是有强有力的工具。

协作图:用来体现对象间的消息往来,讲白了就是对象间的交互信息。


协作图在软件设计中也占重要位置,开发人员,测试人员,用户都可以看得懂,在设计阶段使用。

顺序图:顺序图有点类似于协作图,只是注重点不一样,协作图强调对象间的消息往来,而顺序图强调对象间传递消息的顺序,个人认为顺序图不如协作图来得简单明了,软件设计中不常用,除非有特殊的情况。

状态图:描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。通常我们创建一个UML状态图是为了以下的研究目的:研究类、角色、子系统、或组件的复杂行为。

活动图:相当于我们常说的流程图,用来描述一个用例的具体过程及业务流程。用不太严谨的表述来说,活动图是一种粒度比较粗的事件流程图,多在需求阶段使用。协作图跟活动图的区别是协作图的基本单位是对象,而活动图的基本单位是各个活动。

构件图:也叫组件图,组件图提供系统的物理视图,它的用途是显示系统中的软件与其他软件组件(例如,库函数)的依赖关系。组件图可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组件包层次上显示。通过组件图可以看到某个功能位于软件包的那个位置。

实施图:描述软件中各个组件位于什么硬件位置,及跟这些硬件的交互关系。

后话:虽然UML提供了一系列的建模标准,但是个人觉得在具体的软件需求分析及软件设计过程中不必死守规则不放,我个人是这样使用的,在需求分析阶段,视客户的素质,如果有专门的咨询团队(一般是花钱请来专门为软件开发服务的,也有的工厂有专门的信息部可能懂UML),可以用标准的UML活动图与之交流,否则我一般用最简单的流程图,要不客户会被“雷”倒,因为他根本看不懂那是啥东东(目前大部分客户都是这样),软件设计阶段用用例图、协作图、类图,至于其它图有特殊需要才用。

posted @ 2012-08-08 14:50  亦风  阅读(1861)  评论(0编辑  收藏  举报