20 世纪80 年代,随着面向对象技术成为研究
热点,先后出现了几十种面向对象
软件开发方法。其中,Booch、OMT 和OOSE等方法得到了广泛
认可。然而,采用不同方法进行建模不利于开发者之间
交流。而UML则统一了Booch、OMT 和OOSE
表示方法,而且对其作了进一步
发展。1997 年,UML 被国际对象组织OMG采纳为面向对象
建模语言
国际标准,它溶入了软件工程领域
新思想、新方法和新技术。UML不限于支持面向对象
分析与设计,还支持从需求分析开始
软件开发
全过程。数年来,UML凭借其简洁明晰
表达方式、超凡脱俗
表达能力,一路杀将出来,为业界所广泛认同!目前,在多数大型企业
正规化开发流程中,开发人员普遍使用UML进行模型
建立。作为一名软件开发人员,我们必须学会UML。因为UML就是那个统一
"文字",统一
"度"、"量"、"衡",不理解UML,作为软件设计统一王国
国民,将是艰难而痛苦
。
字串3
作曲家会将其脑袋中
旋律谱成乐曲,建筑师会将其设计
建筑物画成蓝图,这些乐曲、蓝图就是模型(Model),而建构这些模型
过程就称为建模(Modeling)。软件开发如同音乐谱曲及建筑设计,其过程中也必须将需求、分析、设计、实现、布署等各项工作流程
构想与结果予以呈现,这就是软件系统
建模。 字串1
那么为什么要建模呢?经典答案是:建立大厦和建立狗窝
区别是建设狗窝不需要设计,要生产合格
软件就要有一套关于体系结构、过程和工具
规范。 字串9
OMG官方发布
UML
当前最高版本为2.0,可以从http://www.uml.org/上下载。 字串2
UML由图和元模型组成,图是语法,元模型是语义。UML主要包括三个基本构造块:事物(Things)、关系(Relationships)和图(Diagrams)。本次连载我们将对UML
这些基本组成部分及UML工具和应用进行介绍,使读者对UML形成初步
整体印象。在其后
几次连载里,再以数个实例对这些内容逐步展开。
1.1 UML
基本构造块
字串8
1.1.1事物 字串2
事物是是实体抽象化
最终结果,是模型中
基本成员,UML中包含结构事物、行为事物、分组事物和注释事物。 字串6
(1)结构事物(Structural things) 字串5
结构事物是模型中
静态部分,用以呈现概念或实体
表现元素,是软件建模中最常见
元素,共有以下七种: 字串7
类(Class):类是指具有相同属性、方法、关系和语义
对象
集合;
接口(Interface):接口是指类或组件所提供
服务(操作),描述了类或组件对外可见
动作;
字串8
协作(Collaboration):协作描述合作完成某个特定任务
一组类及其关联
集合,用于对使用情形
实现建模; 字串1
用例(Use Case):用例定义了执行者(在系统外部和系统交互
人)和被考虑
系统之间
交互来实现
一个业务目标;
字串6
活动类(Active Class):活动类
对象有一个或多个进程或线程。活动类和类很相象,只是它
对象代表
元素
行为和其他
元素是同时存在
;
字串3
组件(Component):组件是物理
、可替换
部分,包含接口
集合,例如COM 、JAVA BEANS等;
字串4
结点(Node):结点是系统在运行时存在
物理元素,代表一个可计算
资源,通常占用一些内存和具有处理能力。
字串9
(2)行为事物(Behavioral things) 字串2
行为事物指
是UML模型中
动态部分,代表语句里
"动词",表示模型里随着时空不断变化
部分,包含两类:
字串9
交互(ineraction):交互是由一组对象之间在特定上下文中,为达到特定
目
而进行
一系列消息交换而组成
动作;
状态机(state machine):状态机由一系列对象
状态组成。
字串6
(3)分组事物(Grouping things) 字串4
可以把分组事物看成是一个"盒子",模型可以在其中被分解。目前只有一种分组事物,即包(package)。结构事物、动作事物甚至分组事物都有可能放在一个包中。包纯粹是概念上
,只存在于开发阶段,而组件在运行时存在。
(4)注释事物(Annotational things)
字串2
注释事物是UML模型
解释部分。 字串2
1.1.2关系
关系是将事物联系在一起
方式,UML中定义了四种关系:
(1)依赖(Dependencies):两个事物之间
语义关系,其中一个事物发生变化会影响另一个事物
语义; 字串9
(2)关联(Association):一种描述一组对象之间连接
结构关系,如聚合关系(描述了整体和部分间
结构关系); 字串9
(3)泛化(Generalization):一种一般化-特殊化
关系;
(4)实现(Realization) :类之间
语义关系,其中
一个类指定了由另一个类保证执行
契约。 字串2
1.1.3图 字串5
图是事物集合
分类,UML中包含多种图:
(1)类图(Class Diagram):类图描述系统所包含
类、类
内部结构及类之间
关系;
字串2
(2)对象图(Object Diagram):对象图是类图
一个具体实例; 字串1
(3)包图(Package Diagram):包图表明包及其之间
依赖类图;
(4)组件图(Compoment Diagram,也称构件图):组件图描述代码部件
物理结构以及各部件之间
依赖关系;
字串5
(5)部署图(Deployment Diagram):部署图定义系统中软硬件
物理体系结构;
字串2
(6)用例图(Usecase Diagram):用例图从用户
角度出发描述系统
功能、需求,展示系统外部
各类角色与系统内部
各种用例之间
关系;
字串4
(7)顺序图(Sequence Diagram):顺序图表示对象之间动态合作
关系; 字串8
(8)协作图(Collaboration Diagram):合作图描述对象之间
协作关系; 字串3
(9)状态图(Statechart Diagram):状态图描述一类对象
所有可能
状态以及事件发生时状态
转移条件; 字串6
(10)活动图(Activity Diagram):活动图描述系统中各种活动
执行顺序。
字串8
上述十种图可归纳为五类,如表1.1。
表1.1 UML图分类
| 类型 | 包含 |
| 静态图 | 类图、对象图、包图 |
| 行为图 | 状态图、活动图 |
| 用例图 | 用例图 |
| 交互图 | 顺序图、协作图 |
| 实现图 | 组件图、部署图 |
"工欲善其事,必先利于器",为了有效
利用UML,我们需要首先获得一个UML工具软件。
字串3
当前,业界使用最广泛
UML建模工具为Rational Rose。Rational Rose中可实现正向(为模型产生相应
代码)、逆向(从用户原来
软件系统导出该系统
模型)和双向工程(实现模型和代码之间
循环工程),从而保证模型与代码
高度一致。Rational Rose支持C 、Visual C 、Java、Smalltalk、Ada、Visual Basic、PowerBuilder等语言和开发工具,并能为CORBA 应用生成接口定义语言(IDL),为数据库应用生成数据库描述语言(DDL)等。另外,Rational Rose为团队开发和规范
开发过程管理提供了良
支持。 字串9
对于小规模应用,我们可以使用微软公司Office套件中
Visio,其中提供了对UML各种图
绘制支持。 字串1
从应用
角度上来讲,面向对象
系统设计一般需要完成如下工作:
字串1
(1)描述需求; 字串7
(2)根据需求建立系统
静态模型; 字串5
(3)描述系统
行为。 字串4
(1)和(2)中所建立
模型是静态
(采用用例图、类图、对象图、组件图和部署图等),是标准建模语言UML中
静态建模机制;而(3)中所建立
模型则表示执行时
序列、状态或交互关系(以状态图、活动图、顺序图和协作图描述),是标准建模语言UML中
动态建模机制。 字串4
由此可以看出,标准建模语言UML
主要内容也可以归纳为静态建模机制和动态建模机制两大类。
字串9
此外,需要说明
是,UML只是一种建模语言,它独立于具体
建模过程。因此,利于它建模时,可遵循任何类型
建模过程。尽管如此,UML
作者们为我们推荐了RUP(Rational Unified Process)。RUP由Rational软件公司首创,其最重要
特点有三:
字串4
(1)软件开发是由用例驱动
;
字串7
(2)软件开发是以体系结构设计(Architectural Design)为中心;
(3)软件开发是个迭代过程。
字串6
RUP包括四个阶段,每个阶段又分为若干次迭代,每次迭代都有一个核心工作流,如图1.1所示。 字串7

图1.1 RUP
流程
字串5
![我要研发网[www.51dev.com]](/templets/images/toplogo.gif)
