系统分析与设计——UML图总结

一. 前言
期末考试之前,我复习系统分析与设计的时候对UML图做了一些知识汇总,现在放到博客上。如果有不对或不恰当的地方,欢迎各位指正。本文仅仅起记录作用,可随意转载,荣幸之至。
截图来自网络或是老师的PPT

二. 概述
· 系统模型的三个主要部分:
系统分析与设计——UML图总结_第1张图片
功能模型:从用户的角度来看,系统的功能。包括用例图等
对象模型:用对象表示系统的结构和子结构、属性、操作或关系等。包括类图
动态模型:表示系统的内部行为。包括顺序图、活动图、状态图等

· 行为图和交互图:
系统分析与设计——UML图总结_第2张图片
行为图包括:用例图、状态图、活动图和交互图。交互图又包括顺序图,协作图等。用一个树形结构来表示各种图的关系:
系统分析与设计——UML图总结_第3张图片
下面根据例子介绍主要的几种图。

三. 具体例子
· sequence diagram(顺序图):
从左到右画出对象及其生命线,对象用矩形表示,生命线用虚线;
在生命线中嵌入的矩形,表示某一过程;对象之间用带箭头的线表示消息传递:
系统分析与设计——UML图总结_第4张图片
上图表示客户在银行取款的部分顺序图。客户插卡属于消息传递,用带箭头实线表示并在线上面注明行为;
返回的消息用带箭头虚线表示。同步消息和异步消息的区别如图所示。

如果消息传递受某个条件限制,将该条件用 [] 括起来;
表示if…else…结构,用Alt关键字标示(即alternative),并将该结构用实线框括起来:
系统分析与设计——UML图总结_第5张图片
if…then…结构同上,区别在于关键字Alt改为Opt。
再放一个例子:电梯系统中,一个乘客在一楼呼叫电梯准备上六楼:
系统分析与设计——UML图总结_第6张图片
这个电梯系统的顺序图是我自己设计的,不一定很正确,但是可以参考画顺序图的规则。


· state machine diagram(状态图):
表示系统的各个对象的状态变化。状态用圆边矩形表示,状态之间用带箭头实线表示,实线上标注驱动状态改变的事件。
起始点(请忽略图中的文字):
在这里插入图片描述
结束点:
在这里插入图片描述
异常终止点:
在这里插入图片描述
例子:仍然是电梯系统,一个乘客在一楼呼叫电梯准备上六楼,电梯的状态图:
系统分析与设计——UML图总结_第7张图片
历史状态:例如,洗衣机洗到一半突然断电,但是记录了历史状态,当通电后可以继续运行:
系统分析与设计——UML图总结_第8张图片


· collaboration diagram(协作图):
主要表示对象间的协作关系。对象用矩形表示,用带无箭头实线表示对象间有关系,实线上方用箭头表示消息的传递,注意这些消息要用序号标记。
下图为一个打印公司的协作图:
系统分析与设计——UML图总结_第9张图片
再例如,下图为一个安保系统的协作图,包括的对象有保安,操作台,火警传感器,安保传感器,窃贼:
系统分析与设计——UML图总结_第10张图片


· use case diagram(用例图):
表示系统的对象和用例。系统具有边界,对象用矩形表示,画在边界外;用例用椭圆表示,画在边界内。一个对象是一个用例的actor,则将它们连起来。
用例的关系:包含、扩展、泛化,包含和扩展都是虚线,而泛化是实线+三角,泛化的画法同对象图。扩展关系标注为extend,是带箭头的虚线,指向被扩展的用例。包含关系标注为include,也是带箭头的虚线,指向被包含的用例。
行为者和用例的连接是不需要文字说明的。
系统分析与设计——UML图总结_第11张图片
系统分析与设计——UML图总结_第12张图片
当用例图设计多个系统、多个对象,可以分开来画:
系统分析与设计——UML图总结_第13张图片


· activity diagram(活动图):
活动图是用例流,不使用对象、类等,但是对象也可以标注出来,要下划线,可用[]表示当前该对象的状态。
活动图的泳道:将用例按照功能或者对象分成几个部分,用实线隔开,状似泳道:
系统分析与设计——UML图总结_第14张图片
包括起始点、终止点(和状态图相同),对操作流建模,当一个操作完成时,流立即转移到下一个操作。状态的自动转移使它区别于状态图。下例为“作者-出版社-印刷厂”的活动图:
系统分析与设计——UML图总结_第15张图片
分支(选择性转移)的画法(状态图的分支也是这样画):
在这里插入图片描述
并发执行的画法:
系统分析与设计——UML图总结_第16张图片


· component diagram(组件图):
通常组件在运行时由一个或多个(对象)实现,具有比类图更高的抽象级别。组件图中所有的元素都是私有的。组件图之间通过接口相连,接口分为两种:一种用于访问其他组件(凸形),一种提供给其他组件访问(凹形)。例如:
系统分析与设计——UML图总结_第17张图片


· class diagram(类图)
类图是最常见的UML模型。包括类名、属性、方法三个部分:
系统分析与设计——UML图总结_第18张图片
类之间的关系有(根据关联强度从大到小):泛化=实现,组合,聚合,关联,依赖。
类图分为分析类图和设计类图。我们一般先构思分析类图,再构思设计类图。两者的区别:
a.一个分析类可能被分解成一个或多个设计类或接口;
b.在分析阶段类图研究领域的概念,可以理解为从需求中获取,而在设计阶段类图重点描述类与类之间的接口;
c.分析类的三高:高于设计实现(不必理会复杂的设计要求比如系统框架)、高于语言实现(不必理会采用哪一种特性的语言来编写)、高于实现方式(不必考虑采用哪一种具体的实现方式)。

设计类应当:指明每个模块的指责、具有完整的属性和完全的描述(可见性、属性名、类型、默认值)、完整的实现方法(可见性、方法名、变量列表、属性、返回值)。例如:
系统分析与设计——UML图总结_第19张图片
分析类转为设计类:细化分析类(分析类的抽象更加细节化、增加新的属性以使类能够完整地实现)、将大的分析类拆分;细化分析关系:拆分出整体和部分(用组合或聚合连接);注意标出数据结构的特点如indexed、sorted、set:
系统分析与设计——UML图总结_第20张图片
总之,当我们分析问题域的时候,我们一般用分析类图进行表示;当我们的分析已经成熟,考虑将它们具体地实现时,一般会借用设计类图。

你可能感兴趣的:(学习笔记,知识总结)