UML学习笔记1.基本概念

转载 2004年07月26日 15:39:00
UML
作者:Thatway 保留所有权利


为什么重要
您应该使用UML吗?一个字:是!……新的书、文章等等将会全部以UML作为符号。……如果你正要开始使用建模符号,您就应该直接学习UML。
—— Martin Fowler 1997

统一建模语言UML(Unified Modeling Language)是一套用于面向对象系统建模的标准符号,在20世纪90年代几经波折,终于得到对象管理组织OMG(Object Management Group)的支持,成为业界符号系统的统一标准。
因此,了解它是学习后面技术的前提。这并不是夸张,在看懂(并非精通)UML以前,我压根没明白《设计模式》,因为《设》里面就用到象UML那样的语言——OMT。

那UML无疑是重要,但它能很好的胜任建模工作吗?关于这个问题,我没有能力给您一个完美的答复,相关的“讨论”也在继续,但下面的几个事实相信会给您信心。
1。UML吸取多种建模语言的优点,包括三位全球顶级方法学家的贡献。
2。它在风雨中崛起,经受考验。
3。UML得到OMG组织及其成员的支持。
4。相当多的业界巨头们也在使用着它。


学习旅程
UML体系是如此复杂,可能会让您觉得难以把握。但是我们只要有选择性的学习就足够了,剩下的当日后有需要时再深入研究。

在学习之前,我们先来做一个说明,UML仅是一门语言,学习UML不等同于学习系统建模,它们的关系就好比学习中文和学习文章写作那样。只是很多情况下,我们都会把它们联系在一起而已。

那好,就让我们开始吧,先来浏览一下UML的全貌。由于我们很难只从一个角度去完整描述一个系统的所有方面。因此UML提供了以下五种视图,它们分工合作,又互相补充。
1) 用况视图(Use Case View)
2) 设计视图(Design View)或逻辑视图(Logical View)
3) 进程视图(Process View)
4) 实现视图(Implementation View)或组件视图(Component View)
5) 实施视图(Deployment View)

而这五个视图又分别用到以下九种图中的一种或几种。
1) 用况图
2) 类图
3) 对象图
4) 顺序图
5) 协作图
6) 状态图
7) 活动图
Cool 构件图
9) 实施图
总体关系如下图所示:

好,看一下相关资源。
1) 《UML用户指南》
此书出自名家,只是部分翻译欠佳。阅读时弄清楚上述五个视图的概念和几种常用的图的表示即可,初次阅读不必深究。
2) 《UML和模式应用》
书中示范如何结合UML以增量方式开发一个系统,着重介绍了OO分析的技巧和法则。内容稍嫌罗嗦,但不失为一本好书。
3) 《UML Distilled》
另一本入门好书,作为普通使用已经足够。
4) 《非程序员》第二期之《用UML设计Java应用程序》
阅读这一短篇文章,可以快速了解如何在实际项目中使用UML。
5) http://www.uml.org/
UML的官方网站,可以找到很多有用资料。
6) http://www.umlchina.com/
它发行《非程序员》电子杂志和记录很多中文文档,还有一个非常活跃的讨论组。
7) http://www.csdn.net/develop/
Cool http://www-900.ibm.com/developerworks/cn
这两个网站可以搜索到很多UML的中文文章,只是比较零散,不大适合系统学习。

再来看一下UML工具。在这方面我没有很好的经验,且看看别人怎么说。
1) 《非程序员》第一期的“选择一种UML建模工具”介绍了评价UML工具的一系列标准。
2) UML官方网站资源页的“UML Tools”栏(链接)列出了极多的UML工具,可供选择。

最后,我们讨论一下几个具有“争议”性的概念——聚合(Aggregation)、组合(Composition)、相识(Acquaintance)、关联(Association)、依赖(Dependence)和引用(Reference)。它们极具相似性,在代码的实现上有些甚至是完全一样的,然而从概念上理解和区分它们对我们的系统分析和设计是有重要意义的。
聚合是指一个对象拥有另一个对象,仅强调“拥有”。而组合是指一个对象是另一个对象的一部分,强调“不可分割”,两个对象具有相同的生命周期。两者的差别就好比创立一间公司时您可以不要雇员(拥有),但创造一个人时您却不能丢掉了他的心(不可分割)。
关联和依赖都是指一个对象知道另一个对象。区别在于关联是一种结构关系,表现为一个对象能够获得另一个对象的实例引用并调用它的服务(即使用它);依赖是一种使用关系,表现为一个对象仅仅是调用了另一个对象的服务。相识既可能是关联,也可能是依赖。
引用是指那些指向对象的类属性。实现组合、聚合和关联时无可避免的要用到引用,但实现依赖时却不一定用到。
总的来说,关联和依赖是同级的;组合是一种聚合,而聚合是一种关联;引用则是相对独立的。

与此相关的文章有:
1) 《UML用户指南》第10章,Booch+详细讲述了依赖和关联的含义和区别。
2) 《设计模式》中文版第15~16页,Gof讲述了聚合和相识的差别。
3) 《非程序员》第二期之《类之间设置成“关联”OR“依赖”似乎全在个人喜好》是几位朋友就聚合、关联和依赖的区别进行的很好的讨论。

至此,如果您对它们的定义持不同意见,又或者觉得难以理解的话,不妨把别人的那一套都抛开,自己把它们重定义一遍。反正我们又不是理论家,就算定义得不科学也没关系,只要和我们的项目有关的人员都一致的理解和接受就可以了。毕竟有效的沟通才是我们真正的目的。

实践建议
按需剪裁。项目要用到什么就学习什么,暂时不用的就放下。我们的目的是当前的系统建模,而不是一下子成为UML高手。
自由扩展。结合我们的实际情况,在使用的过程中,要明确UML的重点是“沟通”,其次才是“公共”。UML本身有许多规则和约定,但没必要一一遵守。只要有利于沟通的,我们就采用,否则就摒弃。通常我们的文档只是在小范围里传播,要统一理解并不困难。当然,当规则定好了后,最好就不要随意更改了。

UML图详解(一)——基本概念

UML九种图的分类,以及通用可见性图标,以及可视化(画图时)图标的表示方式。...
  • fanxiaobin577328725
  • fanxiaobin577328725
  • 2016年06月11日 15:10
  • 1170

浅谈UML的概念和模型之UML九种图

目录:  UML的视图 UML的九种图 UML中类间的关系             上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图。本文我们重点讲解UML每种图的细节问题:   ...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2013年01月29日 15:59
  • 301686

UML总结复习指南

用例图 1. 参与者(Actor)   表示与您的应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示。   2. 用例(Use Case)    用例就是外部可见的系统功能,对系统提供的...
  • luoshengkim
  • luoshengkim
  • 2015年06月26日 11:38
  • 2951

UML简单介绍(十四)——类图的基本概念与组件介绍

1、类图概要 类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法。 类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽...
  • ljtyzhr
  • ljtyzhr
  • 2015年06月07日 16:16
  • 882

软件测试的基本概念

1.软件测试的定义    使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。 2.软件测试的目的     从用户角度出发,希望通过软...
  • Chenyt01
  • Chenyt01
  • 2016年05月19日 10:49
  • 2054

[数据结构笔记]1.基本概念

基本概念数据: 是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。 数据...
  • qq_33337811
  • qq_33337811
  • 2017年12月26日 23:00
  • 46

cloudstack基本概念(1.结构)

本文基于Cloudstack 4.2.1 (2014.1.10发布) 1. cloudstack的组织单元分级 Region: 我翻译为“区划”,这是Cloudstack最大的组织单元,一个区划包含...
  • yuanchao99
  • yuanchao99
  • 2014年01月13日 11:01
  • 2233

UML简单介绍(十二)——活动图基本概念与解析

1、活动图         活动图类似于传统意义上的流程图,它是用来描述一个过程或者操作的工作步骤,类似于Flow Diagram。活动图主要用于两个场景:1)业务建模时,用于详述业务用例,描述一项业...
  • ljtyzhr
  • ljtyzhr
  • 2015年06月05日 20:05
  • 1176

UML 九种图基本概念

序列图:反映若干对象之间的动态协作关系,在时间轴上,对象之间是如何交互的。   图例: 对象图:表示类的对象实例。通常用来示例一个复杂的类图。 用例图(user-case diagr...
  • qq_36074150
  • qq_36074150
  • 2017年02月17日 15:03
  • 49

go学习笔记:1.基本概念

参考文献列表: http://tour.golang.org/ 安装 Golang 在 http://golang.org/dl/ 可以下载到 Golang。安装文档:http://go...
  • qdx411324962
  • qdx411324962
  • 2015年06月02日 08:52
  • 569
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UML学习笔记1.基本概念
举报原因:
原因补充:

(最多只允许输入30个字)