预备知识:

一、UML的特性与发展现状

UML是一种Language(语言)

UML是一种Modeling(建模)Language

UML是Unified(统一)Modeling Language

1、已进入全面应用阶段的事实标准

2、应用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建模等多个领域

3、成为“产生式编程”的重要支持技术:MDA、 可执行UML等

二、建模的目的与原则

1、帮助我们按照实际情况或按我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化。

2、仅当需要模型时,才构建它。

3、选择要创建什么模型对如何动手解决问题和如何形成解决方案有着意义深远的影响;每一种模型可以在不同的精度级别上表示;最好的模型是与现实相联系的;单个模型是不充分的。对每个重要的系统最好用一组几乎独立的模型去处理。

三、谁应该建模

1、业务建模:以领域专家为主,需求分析人员是主力,系统分析员、架构师可参与

2、需求模型:以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和资深开发人员参与

3、设计模型:高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。详细设计模型则以资深开发人员为主,架构师提供指导。

4、实现模型:以资深开发人员(设计人员)为主,架构师提供总体指导。

5、数据库模型:以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。

正式开始

UML组成,三部分(构造块、规则、公共机制),关系如下图所示:

一、构造块

1、构造块是对模型中最具有代表性的成分的抽象

建模元素:UML中的名词,它是模型基本物理元素。

行为元素:UML中的动词,它是模型中的动态部分,是一种跨越时间、空间的行为。

分组元素:UML中的容器,用来组织模型,使模型更加的结构化。

注释元素:UML中的解释部分,和代码中的注释语句一样,是用来描述模型的。

1.1、建模元素

类(class)和对象(object)

接口(interface)

主动类(active class)

用例(use case)

协作(collaboration)

构件(component)

节点(node)

类(class)和对象(object)

类是对一组具有相同属性、相同操作、相同关系和相同语义的对象的抽象

UML中类是用一个矩形表示的,它包含三个区域,最上面是类名、中间是类的属性、最下面是类的方法

对象则是类的一个实例 (object is a Instance of Class)

接口(interface)

接口是描述某个类或构件的一个服务操作集

主动类(active class)

主动类实际上是一种特殊的类。引用它的原因,实际上是在开发中需要有一些类能够起到 启动控制活动的作用

主动类是指其对象至少拥有一个进 程或线程,能够启动控制活动的类

用例(use case)

用例是著名的大师Ivar Jacobson首先提出的,现已经成为了面向对象软件开发中一个需求分析的最常用工具

用例实例是在系统中执行的一系列动作,这些动作将生成特定执行者可见的价值结果。一个 用例定义一组用例实例。

协作(collaboration)

协作定义了一个交互,它是由一组共同工作以提供某协作行为的角色和其他元素构 成的一个群体。

对于某个用例的实现就可 以表示为一个协作

构件(component)

在实际的软件系统中,有许多要比“类”更大的实体,例如一个COM组件、一个DLL文件、一个JavaBeans、一个执行文件等等。为了更好地对在UML模型中对它们进行表示,就引入了构件(也译为组件)

构件是系统设计的一个模块化部分,它隐藏了内部的实现,对外提供了一组外部接口。在系统中满足相同接口的组件可以自由地替换

节点(node)

为了能够有效地对部署的结构进行建模,UML引入了节点这一概念,它可以用来描述实际的PC机、打印机、服务器等软件运行的基础硬件

节点是运行时存在的物理元素,它表示了一种可计算的资源,通常至少有存储空间和处理能力

1.2、行为元素

交互(interaction): 是在特定语境中,共同完成某个任务的一组对象之间交换的信息集合

交互的表示法很简单,就是一条有向直线,并在上面标有操作名

状态机(state machine):是一个对象或交互在生命周期内响应事件所经历的状态序列

在UML模型中将状态画为一个圆 角矩形,并在矩形内写出状态名 称及其子状态

1.3、分组元素

对于一个中大型的软件系统而言,通常会包含大量的类,因此也就会存在大量的结构事物、行为事物,为了能够更加有效地对其进行整合,生成或简或繁、或宏观或微观的模型,就需要对其进行分组。在UML中,提供了“包(Package)”来完成这一目标

1.4、注释元素

结构事物是模型的主要构造块,行为事物则是补充了模型中的动态部分,分组事物而是用来更好地组织模型,似乎已经很完整了。而注释事物则是用来锦上添花的,它是用来在UML模型上添加适当的解释部分

2、关系

UML模型的关系比较多,下图

2.1 关联关系

关联(Association)表示两个类之间存在某种语义上的联系。关联关系提供了通信的路径,它是所有关系中最通用、语义最弱的。

在UML中,使用一条实线来表示关联关系

在关联关系中,有两种比较特殊的关系:聚合和组合

聚合关系:聚合(Aggregation)是一种特殊形式的关联。聚合表示类之间的关系是整体与部分的关系

如果发现“部分”类的存在,是完全依赖于“整体”类的,那么就应该使用“组合”关系来描述

组合是聚合的变种,加入了一些重要的语义。也就是说,在一个组合关系中一个对象一次就只是一个组合的一部分,“整体”负责“部分”的创建和破坏,当“整体”被破坏时,“部分”也随之消失

聚合就像汽车和车胎,汽车坏了胎还可以用。组合就像公司和下属部门,公司倒闭了部门也就不存在了!

2.2  泛化、实现与依赖

泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。

实现关系是用来规定接口和实现接口的类或组件之间的关系。接口是操作的集合,这些操作用于规定类或组件的服务。

有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖(Dependency)于元素X。

二、规则

命名:也就是为事物、关系和图起名字。和任何语言一样,名字都是一个标识符

范围:与类的作用域相似.

可见性:Public,Protected,Private,Package

三、UML公共机制

1、规格描述

在图形表示法的每个部分后面都有一个规格描述(也称为详述),它用来对构造块的语法和语义进行文字叙述。这种构思,也就使可视化视图和文字视图的分离 :

2、UML修饰与通用划分

在为了更好的表示这些细节,UML中还提供了一些修饰符号,例如不同可视性的符号、用斜体字表示抽象类

UML通用划分:

1)类与对象的划分:类是一种抽象,对象是一个具体 的实例

2)接口与实现的分离:接口是一种声明、是一个契 约,也是服务的入口;实现则是负责实施接口提供 的契约

3、UML扩展机制

这部分不容易描述,待改(邀月注 2009.2.18)

构造型:在实际的建模过程中,可能会需要定义一些特定于某个领域或某个系统的构造块

标记值则是用来为事物添加新特性的。标记值的表示方法是用形如“{标记信息}”的字符串

约束是用来增加新的语义或改变已存在规则的一种机制(自由文本和OCL两种表示法)。约束的表示法和标记值法类似,都是使用花括号括起来的串来表示,不过它是不能够放在元素中的,而是放在相关的元素附近。

4、UML视图和图

图名            功能                备注
类图      描述类、类的特性以及类之间的关系        UML 1原有
对象图     描述一个时间点上系统中各个对象的一个快照       UML 1非正式图
复合结构图   描述类的运行时刻的分解             UML 2.0新增
构件图     描述构件的结构与连接              UML 1原有
部署图     描述在各个节点上的部署             UML 1原有
包图      描述编译时的层次结构              UML中非正式图
用例图     描述用户与系统如何交互             UML 1原有
活动图     描述过程行为与并行行为             UML 1原有
状态机图    描述事件如何改变对象生命周期          UML 1原有
顺序图     描述对象之间的交互,重点在强调顺序       UML 1原有
通信图     描述对象之间的交互,重点在于连接        UML 1中的协作图
定时图     描述对象之间的交互,重点在于定时        UML 2.0 新增
交互概观图   是一种顺序图与活动图的混合           UML 2.0新增

附:开发过程与图的对应关系

UML建模的要点总结的更多相关文章

  1. 三大UML建模工具Visio、Rational Rose、PowerDesign的区别

    本文源自http://developer.51cto.com/art/201006/207993.htm UML建模工具Visio .Rational Rose.PowerDesign的比较   RO ...

  2. 本节向大家介绍一下UML建模误区

    本节向大家介绍一下UML建模误区,这里向大家介绍九个误区,希望通过本节的学习,你对UML建模有清晰的认识,以免在以后使用过程中产生不必要的麻烦.下面让我们一起来看一下这些建模误区吧. UML建模误区 ...

  3. UML建模类型(转载)

    区分UML模型, UML建模用于不同类型的不同的图.有三个重要类型的UML建模: 结构建模: 系统结构建模捕捉静态功能.它们包括下列各项: 类图 对象图 部署图 包图 复合结构图 组件图 结构模型代表 ...

  4. 使用Visio进行UML建模

    http://www.qdgw.edu.cn/zhuantiweb/jpkc/2009/rjkf/xmwd/Visio_UmlModel.htm#_Toc80417837 内容提纲: 1.VISIO中 ...

  5. UML建模文章总结

    一.为什么要学习UML UML是Unified Modeling Language(统一建模语言)的简称.UML是对软件密集型系统中的制品进行可视化.详述.构造和文档化的语言.制品{Artifact} ...

  6. 五个免费UML建模工具推荐

    UML工具很多是商用的,价格不菲:而免费的UML建模工具,功能完善的很少.以下推荐的是五个免费的UML建模工具,相对而言还算功能比较不错. 1.免费UML建模工具推荐:JUDE – community ...

  7. UML建模系列文章总结

    本文转载:http://www.cnblogs.com/ywqu/tag/UML建模/ 本人总结: UML类图按照关系分为三大类:继承关系.拥有关系.整体与部分的关系. 继承关系:泛化.实现 拥有关系 ...

  8. EA UML 建模——类图

    Enterprise Architect(EA) 是一个功能比较强悍的建模工具,本篇文章仅使用其 UML 建模功能,其他更多功能,可以Google. 一.简单梳理C#中类与类.类与接口.接口与接口的关 ...

  9. Enterprise Architect UML 建模之活动图

    EA(Enterprise Architect) UML 建模之活动图   一.活动图的概念作用 活动图本质上是一种流程图,它描述活动的序列,即系统从一个活动到另一个活动的控制流. 活动图的作用:描述 ...

随机推荐

  1. Codeforce Round #217 Div2

    e,妈蛋,第二题被hack了 没理解清题意,- -居然也把pretest过了,- -# A: 呵呵! B:包含任意一个子集的输出NO!,其他输出YES! C:贪心额,类似上次的Topcoder的500 ...

  2. 转:Python itertools模块

    itertools Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个"无限"迭代器: >>& ...

  3. 2-sat(and,or,xor)poj3678

    Katu Puzzle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7949   Accepted: 2914 Descr ...

  4. SQL Server面试题

    前几天在博客园上看到一道SQL面试题,sc是表名.老师拿来与同学分享,让大家试做,要求是:查出每科成绩都>=80分的名字,看能写出几种方法.没有主外键,没有关联,脑袋一下子就蒙了.经老师讲解指导 ...

  5. 。。。HibernateTemplate与Session。。。

    今天在学习Spring框架的时候,突然发现了这个类----HibernateTemplate,这个类与Session一开始认为是差不多的,这个HibernateTemplate类对象拥有Session ...

  6. linux env

    .Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1.1 永久的:需要修改配置文件,变量永久生效. 1.2 临时的:使用export命令声明即可,变量在关闭shell时失效. ...

  7. git操作??

    一直在搞git,但是难度真的很大,我的英语超烂,而申请git账号时全部是英文的,我就拿着翻译有道词典,必应.进行翻译,一个一个单词的往上面打,一张网页能翻译一下午,最后还是不知道应该具体怎么去操作,所 ...

  8. HTML5的自定义属性data-* 的用法解析

    人们总喜欢往HTML标签上添加自定义属性来存储和操作数据.但这样做的问题是,你不知道将来会不会有其它脚本把你的自定义属性给重置掉,此外,你这样做也会导致html语法上不符合Html规范,以及一些其它副 ...

  9. 最懂中文的H5前端框架amazeUI

    Amaze UI 是一个轻量级(所有 CSS 和 JS gzip 后 100 kB 左右)的前端框架, 基于开源社区流行前端框架编写 amazeUI的网址:http://amazeui.org/get ...

  10. Delphi的DateToStr StrToDate格式灵活用法

    Delphi的DateToStr StrToDate格式灵活用法 2008-04-09 10:19 procedure TForm1.Button1Click(Sender: TObject);var ...