图示主要参考如下文章:
UML小结以及基于领域模型的系统设计初步:https://www.cnblogs.com/colder/archive/2012/03/06/2381653.html
用例图(一句话需求,要啥功能)
它从外部角色的视角来展示系统的功能,用例视图是系统中与实现无关的视图。
用例的价值
系统分析员在接手一个系统后﹐首先要做到的事情就是得出系统的服务和服务场景。也就是我们经常所讲的用例(use case)
很多人不清楚清晰的用例的价值,只是因为看别人有漂亮的图形,所以自己也画一个,其实自己都不去看它。这样的用例分析只能糊弄一下老板,给别人show一下Demo﹐而不会对系统开发什么实质作用。
用例表示的是使用系统的一个场景﹐其本质在于详细描述了系统用户(actor)与系统是如何交互的﹐以及交互的后果是什么﹐详细而完善的用例将指导您进行系统开发的全过程。
用例图是从用户角度描述系统功能, 是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元
用例之间的关系:
1、包含:含关系指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。
2、扩展:在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例(Extension),原有的用例叫做基础用例(Base),从扩展用例到基础用例的关系就是扩展关系。
3、泛化:用例的泛化指的是一个父用例可以被特化形成多个子用例,而父用例和子用例之间的关系就是泛化关系。
活动图(某功能的页序列,页级流程图,复杂ctrl流程图,函数)
用例涵盖过程和工作流分析,所以活动图能够成为编写用例文本的有用的辅助措施。
在UML中,活动图本质上就是流程图.它用于描述系统的活动,判定点和分支等.
活动图表示的是一种流程。
常被用来建立算法模型,使用流程图可以表示一个算法的执行序列、过程、判定点、分支和循环
用例描述(包含多个”场景”的集合)
1 | 范围:NextGen POS 应用(销售时点信息系统) |
类图(略,很明确)
描述系统的静态特征
类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)
对象图( Object Diagram )
对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。
从这个件角度看:对象图标识特殊数据结构时,较为有用。比如一个对象由多个子对象构成。但实际从uml图的一对多(多对一)关系中,也能看出来,所以感觉这个意义不大!感觉对象图可以被类图取代!!
状态图(实际,抽象对象的某个复杂属性)
状态图用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移,方框是状态,箭头为事件。
顺序图,时序图(UML复杂操作的动态化)
时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
组件图
用来描述软件组件以及组件之间的关系,组件本身是代码的物理模块,组件图则显示了代码的结构。
组件的类型:
构件是定义良好的接口实现单元,它可以是一下几种类型:
1 | 源代码构件:源代码文件.h(库文件)/.cpp |
组件的关系
实例:
部署图
在软件按照需求开发出符合要求的软件产品就可以使用了吗?不是的!软件开发人员还需要保证开出的软件产品能够在合适的硬件系统上运行。部署图的作用就是如何显示运行软件系统的物理硬件,以及如何将软件部署到硬件上。例如计算机和设备,以及它们之间是如何连接的
元素:
节点(Node):是一个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存和具有处理能力。一个构件集合一般来说位于一个节点,但有可能从一个节点转到另一个节点
节点分为两种类型:处理器(Processor)和设备(Device)
处理器:是能够执行软件、具有计算能力的节点,服务器、工作站和其他具有处理能力的机器都是处理器。
设备:是没有计算能力的节点,通常情况下都是通过其接口为外部提供某种服务,哑终端、打印机和扫描仪都属于设备。
关联关系
实例
对象图和类图差别(?)
对象图(Object Diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例。
在UML中,对象图使用的是与类图相同的符号和关系,因为对象就是类的实例。下图显示了对象图的模型。其中节点可以是对象也可以是类,连线表示对象之间的关系:
类图和对象图的区别
类图 | 对象图 |
---|---|
类具有3个分栏:名称、属性和操作 | 对象只有两个分栏:名称和属性 |
在类的名称分栏中只有类名 | 对象的名称形式为“对象名:类名”,匿名对象的名称形式为“:类名” |
类的属性分栏定义了所有属性的特征 | 对象则只定义了属性的当前值,以便用于测试用例或例子中 |
类中列出了操作 | 对象图中不包括操作,因为对于同属于同一个类的对象而言,其操作是相同的 |
类使用关联连接,关联使用名称、角色、多重性以及约束等特征定义。类代表的是对对象的分类所以必须说明可以参与关联的对象的数目 | 对象使用链连接、链拥有名称、角色,但是没有多重性。对象代表的是单独的实体,所有的链都是一对一的,因此不涉及到多重性。 |
参考文章:UML之类图和对象图:www.uml.org.cn/modeler/201909124.asp
类图:
对象图(一般用户)示例图:(这些图应该是错误的,不符合对象图定义,此处不管哈,不关注名字,只关注带来了那种信息增益)
对象图(操作员)示例图:
对象图(管理员)示例图:
从这里依然看不出二者差距,类的方法,自然需要关联底层table,所以把此案例中对象图中table信息,融入到类图的中,可表达相同意思。不确定其存在必要性!
对象图
来自:UML 类图与对象图:https://www.jianshu.com/p/2899f93a484a
下半部分是对象图,其信息从上面的类图中就以及体现了。所以其并没有给我们带来额外的信息。
从下面这张图中看,有一点点端倪。图中a实例(类型:University)包含3个部门,3个部门名字不同,但都属于同种类型的class(Department)。但这种情况下,仅仅通过类图,显然无法清晰表达出此种关系(类图可以看到,这2类有关联关系而已,不论是一对一还是一对多,都无法充分表达这种关系)
来自:UML学习之对象图和类图:https://blog.51cto.com/u_10750710/1739548
对系统的设计视图建模时,可以使用一组类图完整地描述抽象的语义以及它们之间的关系。但是使用对象图不能完整地描述系统的对象结构。对于一个个体类,可能存在多个实例,对于相互之间存在关系的一组类,对象间可有的配置可能是相当多的。所以,在使用对象图时,只能在一定意义上显示感兴趣的具体或原型对象集。这就是对对象结构建模,即一个对象图显示了某一时刻相互联系的一组对象。
这里,先笼统的理解为,对个别复杂类的快照,提高表达能力吧。
使用staruml绘制这些图形
设计模式1 UML基本使用 用例图,类图时序图,活动图,包图,组件图:https://blog.51cto.com/990487026/1868742
参考
UML图-(用例图、类图、状态图、活动图、时序图):https://www.cnblogs.com/wu-wu/p/14583462.html
UML 对象图、时序图、活动图 、状态图、协作图 、包图、组件图及部署图:https://blog.csdn.net/baidu_41388533/article/details/107586092
组件图和部署图的绘制:https://zhuanlan.zhihu.com/p/109292946