目的:uml9种图描述出你要实现的软件系统功能、架构、关联关系
1.用例图-不同角色与用例之间的关联关系-静态图
2.类图-面向对象设计中常用的图,描述的是各个类之间的关系-静态图
3.对象图-对象和对象之间的联系-静态图
作用:描述对象所有的可能状态,和他们之间状态切换的联系
作用:按照用例图的方式描述用例之间的关系
作用:参与者(角色)与系统对象之间有序交互的过程描述,强调消息如何在对象之间发送和接受过程
作用: 与时序图相似,用于描述对象间动态协作关系,类图和时序图的集合,重点描述对象和对象之间的通信过程
构件图
作用: 描述代码结构的图,描述各个代码构件之间的联系
作用:描述系统的物理部署过程,比如计算机设备以及他们是如何进行连接的
为了获取高质量软件所需要完成的一系列任务框架,它规定的是如何更好的完成各项工作的步骤
特点:
阶段间具有顺序性和依赖性
优点:
可以强迫开发人员使用规范化的方法进行实现;严格规定每个阶段需要产出的文档
需求分析—》概要设计—》详细设计—》编码阶段—》测试阶段
1.需求分析:(产出结果:需求分析说明书)
理解客户需求,能够拆除具体要实现的功能和内容有些什么
2.概要设计:(产出结果:技术设计方案、概要设计实现方案—用什么技术完成什么功能)
结合已有的技术去分析业务的需求应该怎么实现
详细设计:(产出结果:用户操作界面设计图(UI)、UML工程文档、数据库设计sql代码)
原型设计图(用户操作界面)、用户操作的流程(UML设计-时序图)、面向对象设计(UML-类图、对象图、协作图)、数据库设计(PowerDesigner)
编码阶段:(代码、打包的软件)
分工、分模块、定计划
测试(入网安全证明、测试用例输出文档)
黑盒测试、白盒测试 (压力、网络安全…)
以原型界面驱动软件开发
适用一些功能简单、开发量小的软件系统就可以适用
每个项目都是一个增量,不需要从新设计推翻之前的流程
MS visio
在线工具(免费)
https://boardmix.cn/
https://app.diagrams.net
作用:
表示一个系统中用例与参与者关系之间的图
它描述了系统中相关的用户和系统对不同用户提供的功能和服务
1.角色(参与者)
是与系统主题交互的外部实体单元,描述一个或一组与系统产生外部交互的用户或事物
2.用例:(功能、模块)
描述的被角色或者事物能够访问的功能内容(一些列操作的集合)
1.角色与角色之间的泛化关系:
泛化代表的是抽象的概念,指向的方法:具象的事物指向—>泛化抽象的事物,更具系统的设计进行泛化
依赖关系—包含
是用例间设计时应该含有的功能使用incloude描述,指向方法A功能包含— << incloude >> --> B功能
依赖关系—拓展
是对用例的扩张对功能行为的增强,除必要功能之外添加的功能就要使用扩张
用例泛化
和角色相似,将具象化的用例和抽象的用例连接,有继承的概念实现,具象化的用例是在父类用例的基础上做修改
描述一个企业管理系统功能,
所有的员工都有打卡、查看计划功能,
但是经理拥有管理员工信息、定制计划功能;
老板拥有所有员工和经理的功能
提升题目:
基于上一个题目,员工对于计划功能只有查看计划的权限,
但是经理有计划新增、修改、删除功能;
老板提出要求说计划可以从别的系统导入
当我们绘制完成一个用例图后,需要进行用例描述,让阅读用例的开发者更清楚事件过程描述
用例图需要描述的内容:
1.用例名称:描述用例图的寓意或者实现的目标,一般为动词或宾语短语
2.用例编号:实现多个用例图的快速索引查找
3.参与者:参与的角色有哪些
4.用例描述:简单一句话概括什么人在什么系统能做什么事情
5.触发器:触发用例的时机节点描述
6.前置条件:用例执行前的系统状态过程描述
7.基本事件流:将常规的用例活动以时间过程的方式描述清楚
8.扩展事件流:一般描述基本事件流中错误或业务异常的流程
9.结论:在什么时候用例结束
10.数据需求:用例过程中会有些什么数据交互
11.业务约束:描述业务中的约束条件
在案例中的用例描述
关键词 | 描述值 |
---|---|
用例名称 | 企业员工操作管理系统 |
用例编号 | CXK001 |
参与者 | 员工、经理、老板 |
用例描述 | 描述三个参与者对于系统功能权限的描述 |
触发器 | 参与者登录后使用管理系统 |
前置条件 | 参与者需要登陆系统 |
基本事件流 | 1.员工登录系统可以进行打卡,同时可以查看现在指定的计划内容 2.经理登录系统对员工的信息、计划可以进行管理分发 3.老板可以查看员工的所有信息且进行管理,能够对所有人的计划进行定制或查看 |
扩展事件流 | 1.员工登录系统,权限不足无法对对应的业务功能进行操作,返回到登录页面 |
结论 | 员工登录系统后对计划或者打卡功能操作以及管理员工信息操作结束,用例完结 |
数据需求 | 1.员工信息 2.打卡记录 3.计划信息 |
业务约束 | 不同的角色所操作的功能内容不同 |
时序图(Sequence Diagram)又名序列图
它描述的是对象与对象之间发送信息的时间顺序显示多个对象之间的动态协作关系
5种元素内容:
角色:用小人图标表示,可以描述人或系统等事务,一般作为时序图触发的起点
对象图在时序图的上方顶部,以一个矩形框的方法描述
写法: 对象名:类名
能够通过描述具体对象间调用关系体现除类与类之间的关联,后续可以关联类图
写法: 类名
只突出类与类之间调用过程关系,描述了一类事物之间包含的调用协调过程
写法: 对象名
突出具体对象之间的调用协调关系
每个对象矩形框下方都会有一条虚线,虚线描述的就是该对象的时间生命线,线从上至下描述的是时间的从过去到未。
每个对象交互时在时间线上发生的事情或某段时间执行的操作,用长条矩形描述
对象之间发送的信息
消息有三种类型:
画法:实线+实心箭头
发送对象发送消息给接受者,接收者必须给发送者一个响应(回复),否则发送者将一直等待
注意:同步过程将会出现对象必须要等待另一个对象返回结果才能继续操作
画法:实现+大于符号箭头
消息的发送者将消息发送之后,然后继续执行自己的活动
画法:虚线+小于符号箭头
返回消息表示从过程调用返回
画法:分同步异步的方式来画,消息发送和接受都是自己
当调用过程中出现消息是发送给自己对象的功能完成的话就可以使用自关联描述
组合片段用来解决交互执行的条件和方式,允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。
组合片段有13种:
类型 | 名称 | 描述 |
---|---|---|
(必学)Opt | 选项 | 包含一个可能发生或不可能发生的序列 |
(必学)Alt | 抉择 | 包含一个片段列表,这些列表包含备选信息序列,在任何场景下只能发生其中的一个序列 ,第一个片段Alt和else片段配合,临界点需要描述一个表达式,当表达式的结果发生变化时选择对应的序列进行操作 |
(必学)Loop | 循环 | 片段重复一定次数,可以在临界点描述重复的条件,Loop片段要有Min和Max属性,如果不描述这两个属性就是无限循环 |
(必学)Par | 并行 | 并行处理,多个事件片段可以交错执行 |
作用:表示各个类之间的静态关系视图,类图是一种编程模型图
类名、属性(字段)和行为(方法)
public (公共的) 所有人都可见: 类图中用“+”
private (私有的)只有自己可见: 在类图中用“-”
protected(受保护的)自己以及子类:在类图中用“#”
default(默认的)不使用访问修饰符:在类图中用“~”或者不写
文字类型:
(1)String:字符串
(2)char:字符
数值类型:
(1)int:整数类型
(2)double:浮点类型(小数类型)
其他:
(1)日期:Date
(2)布尔值:boolean
(3)对象类型:Object
(4)数组集合:Array
如:吃东西的描述:给某个人食物就能吃这个行为可以使用
+eat(food)
如:跑步是不需要外部条件就可以完成的行为
+run()
如:计算两个数之和会得到一个结果,结果就是通过计算过程返回的数据
无返回值方法,描述的行为注重的过程并没有结果
如:描述走路这个行为
+run():void
修饰符 方法名(参数列表):void
有6中关系:
单向关联:如只有A关联B,B不关联A
双向关联:AB两者相互关联
双向关联案例:司机可以租车和车子等待被人租赁,两个类是双向关联的,实线上两侧写上1.
单向关联案例:企鹅会受到气候的影响改变生活的方式,但是气候不会因为有企鹅而发生改变,这就是单向关联
描述:如果一个类的改动会影响到另一个类,则两个类之间存在依赖关系,一般而言,依赖关系是单向的,如果依赖是双向的考虑使用关联关系描述
描述的是:多变群
描述是整体与部分的关系,当某个实体聚合为另一个实体时,该实体还可以是另一个实体的一部分。
空心菱形+实线箭头
描述的是:多组一
也是描述整体与部分的关系,组合要比聚合更加严格,当某个实体组合成另一个实体时,二者具有相同的生命周期
描述的是一个抽象的东西被不断具象化的描述过程,与继承是同一个概念
什么是接口:
只描述特有的行为,让类来实现
类会去实现公共的接口方法行为,在每个类中出现不同的行为效果
学生登录教务管理系统,在成绩录入界面进行成绩的录入,如果录入的成绩大于120分则系统返回信息成绩必须在0~120之间,不满足规则无法保存数据
登录进入外卖点餐app,如果没有账号需要注册之后才能登录,登录进入后浏览商品信息,选择餐品进行下单,下单成后等待送达然后给予评分。
以下题目均用类图描述:
描述以下场景:手机都有摄像头能拍照且都会描述像素,但是iphone13可以拍希区柯克,华为mate可以拍近景,小米可以拍月亮他们的像素都不同