软件建模 与 UML 学习总结

学习目标:理解UML相关基础概念,运用到实际的工作设计中,重点是 用例图 类图 时序图 状态图 活动图,和其他设计者语言共同,简化交流成本。

一、概念

为什么要进行软件建模?

软件建模体现了软件的设计思想,作为实现指导,在需求和实现之间架起了一座桥梁。通过选择与实现想关联的正确模型,以不同的视角,如 系统在上下文的环境位置,系统与其他模块交互,系统内部的组织,系统内部同态行为状态迁移等 描述 方案设计实现。
软件的建模应该是独立于语言特性的。

UML:统一建模语言

Unified Modeling Language (UML)又称统一建模语言或标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持。
UML规范用来描述建模的概念有,类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态。

UML相关基础概念-事物(点)/关系(线)/图(面)
UML事物

(1)结构事物:描述概念元素 或 物理元素,通常是模型静态的部分。如 类、接口、协作、用例、主动类(带线程/进程)、构件、制品、节点
(2)行为事物:描述模型动态部分,跨越时间 和 空间 的行为。主要有:交互、状态机、活动。
(3)分组事物:描述模型组织部分。如包。
(4)注释事物:用来描述、说明 和 标注模型任何元素。

UML关系

关联,依赖,泛化,实现;

UML 图分类

(1)静态图分为
【常用】用例图:(交互视角-需求分析阶段)说明谁要使用系统,使用系统做什么。使用角色与用例关系体现。
【常用】类图:(结构化视角-设计阶段)描述 系统中 各个类 之间的关系。
对象图:(结构化视角-设计阶段)与类图类似,体现的是类图的实例,如显示多个对象实例之间的关系。
构件/组件 图:(结构化视角-测试阶段)描述代码组件的物理结构以组件之间依赖关系。
部署图:(结构化视角-测试阶段)描述物理层级 系统部署,如计算机和其对接设备的连接关系。
(2)动态图分为
【常用】状态图:(行为视角-设计阶段)描述对象所有可能的状态 和 状态迁移的事件条件。
【常用】活动图:(行为视角-设计阶段)描述用例进行的活动和活动约束。
【常用】时序/顺序 图:(行为视角-设计阶段)描述参与者与其他系统对象之间的交互过程,消息的发送接收。
协作/合作 图:(行为视角-设计阶段)和 顺序图类似,描述对象之间动态的合作关系,类图和时序图的结合,体现对象之间交互通信。

二、用例图UseCase Diagrams—描述系统提供什么功能

对系统的语境进行建模,所强调的是围绕在系统周围的参与者,描述系统为执行者完成哪些功能。

用例图事物-小人/椭圆

参与者使用小人表示。系统外部可见的功能单元用椭圆表示,椭圆中的文字简述系统的功能;

用例图关系-包含/扩展/泛化

(1)包含include,表示本用例为用到被包含的其他用例,包含是可重用的;(2)扩展extend,表示可选的,在特定常见 补充的基础用例。(3)泛化generalization,体现了派生和继承关系(主要用于体现角色间关系)。
在这里插入图片描述

三、类图Class Diagrams—描述系统的内部结构

显示了一组类、接口、协作以及他们之间的关系。

关联类型—泛化/实现/组合/聚合/一般关联/依赖

(1)依赖dependency:一种使用的关系,即一个类的实现需要另一个类的协助,往往是某个方法中作为参数使用,临时性的关系。(可能带方向的虚线表示)。
(2)关联association:一种拥有的关系,一个元素知道另一个元素的属性或者方法,长期性的关系 如以属性的方式存在(可能带方向的实线)。聚合整体与部分的关系,且部分可以离开整体而单独存在)也是一种特殊关联(带空心菱形的实线,菱形指向整体)。组合整体与部分的关系,部分不能离开整体而单独存在)也是一种特殊关联(带实心菱形的实线,菱形指向整体)。
老师和学生就是关联关系,车和车轮是关联中的聚合关系,如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。如公司和部门是整体和部分的关系,没有公司就不存在部门
(3)泛化generalization:子元素基于父元素建立,如继承。(带空心箭头的实线,指向父元素
(4)实现:接口和实现他们的类或者构建之间。(带空心箭头的虚线

关联强弱顺序

各种关系的强弱顺序: 泛化(实线+空箭头) = 实现(实线+空箭头) > 组合【特殊关联】(实线+实菱形) > 聚合【特殊关联】(实线+空菱形) > 一般关联(实线+箭头) > 依赖(虚线)

在这里插入图片描述
类由矩阵表示,通常方框中包含 类名 属性和方法,修饰符通过 + 表示public -表示private #代表protected;

四、时序图Sequence Diagrams—描述系统功能如何完成(交互关系)

交互图的一种,描述了对象之间消息发送的先后顺序,强调时间顺序(一般是从左到右 从上到下调用)。同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。

时序图建模元素

(1)对象:时序图中的对象在交互中所扮演的角色
(2)生命线:对象图标向下延伸的一条虚线,表示对象存在的时间
(3)执行/消息:个对象之间的交互,请求或相应(可以自我调用)。小矩形为对于请求的执行过程(也叫激活状态,或者控制焦点),执行结束后返回给请求方(返回值用虚线加箭头表示,可有可无)。

时序图结构化控制

表示带有一些特定条件发送的消息,常见:
(1)可选执行 Option fragment (opt) 与 Switch对应
(2)条件执行 Alternative fragment(alt) 与 if…then…else对应
(3)并行执行 Parallel fragment (par)表示同时发生
(4)循环执行 Loop fragment(loop) 与 for 等 对应

消息分类

简单消息-函数调用(没有区分同步和异步的消息,实线+箭头),
同步消息-阻塞调用(发送消息后会阻塞,等接受对象接受消息返回后才会继续执行,实线+实心箭头),
异步消息-异步调用(发送消息的对象在发送消息后会继续自己的工作,而不等消息接受对象接受消息返回,实线+上半箭头
返回消息(标示发送消息后返回的动作,虚线+箭头
自关联消息-自调用(一个对象内自调用的情况,箭头掉头
在这里插入图片描述

五、状态图

状态图显示了一个状态机,描述了系统元素的状态条件和响应,反应了状态之间的变化事件,状态转化。

基本元素—状态/事件/转换

1、状态(States):对象生命周期的一个条件或者状况。
2、事件(Event):对一个有意义(值得注意)的发生和规约,一次激励的出现,可以引发状态转移。事件分为:信号事件/调用事件/改变事件/时间事件。
2、转移(Transitions):两个状态之间的关系,指明特定事件发生,并且特定条件满足时,第一个状态执行动作并进入第二个状态。
3、活动(activity):状态中正在进行的执行。
4、动作(action):一个可执行的原则计算,引起模型状态的转变或者值返回。
在这里插入图片描述
在这里插入图片描述

六、活动图

用于对目标对象计算流程和工作流程建模,可以表示一个算法的执行序列、过程、判定点、分支和循环描述。本质上是一个流程图。可以提现并发活动关联。

基本元素—开始结束/活动/控制流/分支判断/并发/泳道

(1)开始和结束:活动开始由实心球表示,结束由一个半实心球表示。
(2)活动 与 控制流活动指执行特定动作,并在该动作完成之后向另一个状态转化,通常圆角方框表示,通常将表达的动作写在方框内。动作或者控制流连接活动,通常用实线箭头表示
(3)分支判断 与 并发分支菱形代表分支判断,这个与流程图的分支判断是一样的,描述可选择的路径。并发用分叉与汇合组合表示,分叉表示一个活动完成后产生后续的多个并行的活动;汇合表示多个活动全部完成后再进行下一个活动。分叉与汇合间的活动是并行执行的,最后都执行完后统一汇合进入下一活动。
(4)泳道Swimming line:用于表达不同的活动分组。泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。在包含泳道的活动图中,每个活动只能明确地属于一个泳道。在活动图中,垂直线分隔的区域就是泳道。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值