UML 图使用心得

简介:

在软件开发中,从需求工程到代码工程,都离不开 UML 图的绘制。今天简要总结一下我以往使用 UML 图的一些体会。

很多图,都是由原始需求到代码的一种转换,只是转换的程度不一样。在软件开发过程中,不同的阶段需要不同的 UML 图,在选择使用哪些图时,我们必须理解该图能表达一些什么,即它的主要用途,以及它表达的优势在哪里:

 

用例图

用于需求描述、范围确定。

所含内容:参与角色集合、功能项集合、角色可用功能集合。

如果需要更详细地说明需求,则应该在每一个用例中添加相应的用例规约说明。


鲁棒图

则是系统的初步设计。此图虽然是行为视图,但是比较偏静态。

所含内容:角色、界面对象、控制器、事件、实体(数据存储)。

我认为此图的关注点在于表达控制器,它能让我们更好地理解控制器所涉及到的实体以及设计控制器之前的调用关系。

控制器在 OEA 中可以理解为 Service,而在 DDD 中则可以理解为 DomainService。这些控件器承载了系统中最多的流程性业务逻辑,非常重要。但是在此图中,只能看到 Service 及其涉及到的 Entity,却不能非常详细地表达它们之间的交互规则。

 

类图

在需求分析阶段,在 DDD 方法论中用于描述领域模型。

在设计阶段,则是代码静态结构的设计图。

在反向工程阶段,用于精确描述当前软件的静态结构。


序列图(或协作图)

这两个表等价,一般使用序列图。强调对象间的交互关系,时间顺序关系。

我一般把它用于反向工程,表达、理解当前的代码。非常易用。

有时也用在需求分析阶段,主要是为了表达时序。

 

活动图(或流程图)

具体描述一个控制流,体现控制流的细节。

 

状态图

关注某一事物状态的变化。 

 

部署图

描述系统的物理部署架构。 

 


 

 

以下换一个角度,当在做一个全新的系统时,各阶段绘制不同的图:

需求分析阶段: 
用用例图描述整个系统的功能范围。 
鲁棒图初步描述某个需求/业务流涉及到的多种对象:界面、控制器、实体。(主要是实体) 
如果某一个需求的流程比较复杂,则使用活动图描述。


设计阶段: 
使用类图说明类之间的静态结构关系。 
使用序列图说明类之间的动态调用时序。 
使用活动图描述某种算法。
使用部署图描述物理架构。

 

反向工程: 
一般则使用类图、序列图来帮助理解现有系统。

 

一篇说 UML 图的文章,里面居然没有一个 UML 图,罪过。(主要是这些图网上一搜一大把,而且贴进来太长了,总是影响整体把握这些图的意义。)


本文转自BloodyAngel博客园博客,原文链接:http://www.cnblogs.com/zgynhqf/archive/2012/05/23/2514834.html,如需转载请自行联系原作者

相关文章
|
6月前
|
存储 测试技术 开发工具
软考中的UML图、数据流图等二十余种示例
软考中的UML图、数据流图等二十余种示例
565 0
|
5月前
|
设计模式 uml
设计模式学习心得之前置知识 UML图看法与六大原则(下)
设计模式学习心得之前置知识 UML图看法与六大原则(下)
37 2
|
5月前
|
设计模式 数据可视化 程序员
设计模式学习心得之前置知识 UML图看法与六大原则(上)
设计模式学习心得之前置知识 UML图看法与六大原则(上)
42 0
|
5月前
|
数据可视化 测试技术 uml
如果更好的绘制UML图
如果更好的绘制UML图
42 0
|
6月前
|
Java uml
UML之组件图(构件图)
UML之组件图(构件图)
98 0
|
6月前
|
程序员 uml
UML图 | 时序图(顺序、序列图)绘制
UML图 | 时序图(顺序、序列图)绘制
447 0
|
6月前
|
测试技术 uml
UML—浅谈常用九种图
UML—浅谈常用九种图
144 0
|
设计模式 数据可视化 程序员
设计模式概述、UML图、软件设计原则
设计模式概述 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。 1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ra
70 0
|
数据可视化 测试技术 uml
UML概述及UML图详解
UML概述及UML图详解
301 0
UML概述及UML图详解
|
uml Python
将python源码自动生成UML图——扩张包Graphviz+Pyreverse
将python源码自动生成UML图——扩张包Graphviz+Pyreverse
585 0