统一建模语言(
Unified Modeling Language
,
UML
)
一些术语:
系统(
system
)指的是硬件和软件的结合体,它能提供业务问题的解决方案。
系统开发(
system development
)是为客户建立一个系统的过程。
客户(
client
)是需要解决问题的人。
系统分析员(
analyst
)将客户所要解决的问题编制成文档,并将该文档转交给开发人员。
开发人员(
developer
)是为了及决客户的问题而构造软件并在计算机硬件上实施该软件的程序员。
UML
的组成
UML
包括了一些可以相互组合图表的图形元素。
1
.类图
一个类(
class
)是一类或一组具有类似属性和共同行为的事物。
矩形方框代表类的图标,它被分成
3
个区域。最上面的区域中是类名,中间区域是类的属性,最下面区域里列的是类的操作。
举一个例子,属于洗衣机(
washing machine
)类的事物都具有诸如品牌(
brand name
)、型号(
model name
)、序列号(
serial number
)和容量(
capacity
)等属性。这类事物的行为包括“加衣物(
add clothes
)”、“加洗涤剂(
add detergent
)”、“开机(
turn on
)”和“取出衣物(
remove clothes
)”等操作。
![](https://i-blog.csdnimg.cn/blog_migrate/a294fb088185677749abf599ef8ff487.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/a294fb088185677749abf599ef8ff487.jpeg)
2
.对象图
对象(
object
)是一个类的实例,是具有具体属性值和行为的一个具体事物。例如,洗衣机的品牌可能是“
Laundatorium
”,型号为“
Washmeister
”,序列号为“
GL57774
”,一次最多可以洗涤重量为
16
磅
的衣物。
对象的图标也是一个矩形,和类的图标一样,但是对象名下面要带下划线。具体实例的名字位于冒号的左边而该实例所属的类名位于冒号的右边。
![](https://i-blog.csdnimg.cn/blog_migrate/41242ef9578b616830624b5403441502.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/41242ef9578b616830624b5403441502.jpeg)
3
.用例图
用例(
use case
)是从用户的观点对系统行为的一个描述。
例,一个人使用一台洗衣机,显然是为了洗衣服(
wash clothes
)。
代表洗衣机用户的智力小人形被称为参与者(
actor
)。椭圆形代表用例。
参与者(它是发起用例的实体)可以是一个人也可以是另一个系统。
![](https://i-blog.csdnimg.cn/blog_migrate/e9b166acc6ff1153dd99167129db49f4.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/e9b166acc6ff1153dd99167129db49f4.jpeg)
4
.状态图
一台洗衣机可以处于浸泡(
soak
)、洗涤(
Wash
)、漂洗(
Rinse
)、脱水(
Spin
)或者关机(
off
)状态。
![](https://i-blog.csdnimg.cn/blog_migrate/807ecf02acc6092037ff9fa4e7acb5d9.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/807ecf02acc6092037ff9fa4e7acb5d9.jpeg)
最顶端的符号代表起始状态,最底端的符号表示终止状态。
5
.顺序图
类图和对象图标大的实系统的静态结构。在一个运行的系统中,对象之间要发生交互,并且这些交互要经历一定的时间。
UML
顺序图所表达的正式这种基于时间的动态交互。
例,洗衣机的构件包括一个注水的进水管(
Water Pipe
)、一个用来装衣物的洗涤缸(
Drum
)以一个排水管(
Drain
)。假设已经完成了“加衣物”、“加洗涤剂”和“开机”操作。洗衣服这个用例被执行时按照如下顺序进行:
1
通过进水管想洗涤缸中注水。
2
洗涤缸保持
5
分钟静止状态。
3
水注满,停止注水。
4
洗涤缸往返旋转
15
分钟。
5
通过排水管排掉洗涤后的脏水。
6
重新开始注水。
7
洗涤缸继续往返旋转洗涤。
8
停止向洗衣机中注水。
9
通过排水管排掉漂洗衣物的水。
10
洗涤缸加快速度单方向旋转
5
分钟。
11
洗涤缸停止旋转,洗衣过程结束。
图中,对象之间发送的消息有:注入新水(
Send fresh water
)、保持静止(
Remain stationary
)、停止注水(
Stop
)、往返旋转(
Ratate back and forth
)、排掉洗涤后的脏水(
Send soapy water
)、排掉漂洗过的水(
Send rinse water
)等。
![](https://i-blog.csdnimg.cn/blog_migrate/f8b6901dc104e990bd1b1d92ce2b8789.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1940d8f6bcd6465de33ce6c1656f77f2.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f8b6901dc104e990bd1b1d92ce2b8789.jpeg)
6
.活动图
用例和对象的行为中的各个活动之间通常具有时间顺序。
![](https://i-blog.csdnimg.cn/blog_migrate/1940d8f6bcd6465de33ce6c1656f77f2.jpeg)
7
.协作图
系统的工作目标是由系统中各组成元素相互协作完成的。例子中洗衣机构件的类集中又增加了一个内部计时器(
Internal Timer
)。在经过一段时间后,定时器停止注水,然后启动洗涤缸往返旋转。图中的序号代表命令消息的发送顺序。
![](https://i-blog.csdnimg.cn/blog_migrate/e4bb527b4200acb316f1bdd815ea862a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/e4bb527b4200acb316f1bdd815ea862a.jpeg)
8
.构件图
构件图和部署图和整个计算机系统密切相关。
![](https://i-blog.csdnimg.cn/blog_migrate/a7fe49fc94be1b1f53da595a151ca328.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/a7fe49fc94be1b1f53da595a151ca328.jpeg)
9
.部署图
UML
部署图显示了基于计算机系统的物理体系结构。它可以描述计算机和设备,展示它们之间的连接,以及驻留在每台机器中的软件。每台计算机用一个立方体来表示,立方体之间的连线表示这些计算机之间的通信关系。
![](https://i-blog.csdnimg.cn/blog_migrate/afa119bdd3ddf0e8398f2807699a2b58.jpeg)
如果需要将图中的组织元素分组,或者在图中说明一些类或构件是某个特定子系统的一部分,可以通过将这些元素组织成包(
package
)来达到此目的。包用一边突起的公文夹形图标来表示。
![](https://i-blog.csdnimg.cn/blog_migrate/0e955ddca032cc09235f5e03d4a847aa.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0e955ddca032cc09235f5e03d4a847aa.jpeg)
注释(
note
)的图标是一个带折角的矩形,矩形框中是解释性文字。注释和被注释的图元素之间用一条虚线连接。
![](https://i-blog.csdnimg.cn/blog_migrate/fb582aed5d63eda94f24e574a5af96ff.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/fb582aed5d63eda94f24e574a5af96ff.jpeg)
构造型(
stereotype
)能够使用现有的
UML
元素来定制新的元素。构造型用尖对括号括起来的一个名称来表示,这个括号叫双尖括号(
guillemets
)。
![](https://i-blog.csdnimg.cn/blog_migrate/81b6809b33b99dba2d318d8af07073e8.jpeg)