2018.1.4 UML 第三章 用例图
第三章 用例图
(1)参与者
是指系统以外的需要使用系统或与系统交互的外部实体,吧阔人、设备、外部系统等。
(2)参与者之间的关系
泛化关系的含义是参与者的共同行为提取出来表示成通用行为,并描述成超类。参与者之间的泛化关系表示一个一般性的参与者与另一个更为特殊的参与者之间的联系。
在UML规范中繁华关系用带空心的三角形箭头实现,箭头指向父类参与者
(3)参与者和用例之间的关系
参与者和用例之间存在着一定的关系,这种关系属于关联关系,又称为通信关联。这种关系表明了那个参与者与用例通信。
在UML规范中,用例图中的参与则和用例之间的关联关系用带箭头的实线表示如果不想强调对话中的主动者和被动者,或者参与者和用例互为主动者与被动者,则可以使用不带箭头的实线来表示他们之间的关联关系。箭头所指的对话就是被动接受者。
(4)用例的概念
用例是对一个活动者使用系统的一项功能时所进行的交互过程的一种文字描述序列;
用例是代表系统中各个项目相关人员之间就系统的行为所达成的契约;软件的开发过程分为需求分析、设计、实现、测试等阶段;
用例是系统、子系统、或类和外部的参与者交互的动作序列的说明,包括可选动作序列和会出现异常的动作序列;
在UML规范中,用例是使用椭圆形的图标来表示。
(5)用例的特征
1.用例从使用系统的角度描述系统中的信息,即站在系统外部查看系统的功能,而不考虑系统内部对该功能的具体实现方式。
2.用例描述了用户提出的一些可见的功能需求对应一个具体的用户目标。
3.用力总是被参与者启动,并向参与者提供可识别的信息。
4.用例可大可小,但他必须是一个完整的描述;
5.用例在以后的开发过程中,冰箱参与者提供可识别的信息;
6.用例是对系统行为的动态描述,属于UML的动态建模部分;
7.在用例视图中,用例设置代表了软件系统上网功能部分;
8.用例的实例是系统的一种实际使用方法,即系统的一次具体执行过程;
(6)用例之间的关系
泛化关系
代表一般与特殊的关系;在用例之间的泛化关系中,子用例继承父用例的行为和含义,子用例也可以增加新的行为和含义覆盖父用例中的行为和含义。当发现这个系统中有两个或两个用例在行为结构目的的方面存在共性时,就可以使用泛化关系。
包含关系
指的是两个用例之间的关系,其中一个用例(称为基本用例)的行为包含另一个用例(称为包含用例)的行为,包含关系是依赖关系的版型,也就是说包含关系是比较特殊的依赖关系,他们比一般的依赖关系多了一些语义。
当发现系统中在两个或多个用例中有某些相同的动作,则可以把这些相同的动作提取出来,单独构成一个用例(称为包含用例),基本用例在其内部的某一位置上显示的使用包含用例的行为的结果,包含用例作为包含他的基本用力的功能的一部分而不依赖包含用例的内部结构。
在UML规范中,包含关系用带箭头的虚线表示,箭头指向包含用例,同时,必须使用《include》标记附加在虚线旁边。
拓展关系
即一个用例的行为包含了另一个用例的行为,基本用例必须声明若干“扩展点” ,而扩展用例只能在这些扩展电商增加新的行为和含义
(7)用例之间的泛化、包含、扩展关系的比较
泛化关系和扩展关系表示的是 is a 关系,包含关系是用例之间的 has a 关系
依赖关系表示的是两个元素或元素集之间的一种关系,被依赖的元素称为目标元素,依赖的元素是源元素
用例的实现
用例与实现无关的,在uml 中用例之间不存在实现关系,但是可以用协作来说明用例的实现
用实线椭圆表示用例,虚线椭圆表示协作实现关系用的是带空心三角形箭头的虚线表示,箭头指向用例。
用例描述
用例之间的关系(泛化、包含、拓展),参与者之间的关系(泛化)、参与者和用例之间的关系(关联)
(8)用例建模
用例建模主要应用在需求分析阶段,在用例模型中,人们把系统看成是实现各种用例的黑盒子,只关心系统的功能有哪些。
用例建模的步骤
它是直接面向用户,主要是以需求陈述为基本依据,确定有关的系统边界。
1.找出系统的外部参与者和外部系统,确定系统的边界和范围
2.找出每一个参与者所期望上网系统行为,即参与者对系统的基本业务需求
3.把这些系统行为作为基本用例
4.区分用例的优先次序
5.细化每个用例的用例描述,使用泛化、包含拓展等关系处理系统行为的公共或变更部分
6.编写每个用例的用例描述
7.编写项目词汇词
系统的边界
是指系统与系统之间的界限。系统可以认为是有一系列的相互作用的元素形成的具有特定功能的有机整体。不属于这个有机整体的就是外部系统系统边界定义有谁或什么来使用系统,系统能够为参与者带来什么特定的系统边界就是要定义好系统的组成部分和什么是系统的外部边界。
确定参与者
1.参与者对于系统而言总是外部的
2.参与者直接同系统交互
3.参与者表示人或事物同系统发生的交互时所扮演的角色,而不是特定的人或事物。一个人或事物在与系统发生关系时,同时或不同时扮演多种角色。
4.一个人或事物在系统发生关系时,同时或不同时扮演多种角色
5.一个参与者可以包含多个不同的具体用户
确定用例
从参与者列表开始,然后考虑每个参与者如何使用系统,需要系统提供怎么样的服务。
参与者要向系统请求什么功能
每个参与者特定的任务是什么的某些信息吗
是否任何一个参与者都要向系统通知有关突发性的、外部的改变,或者必须通知参与者关于系统中发生的事件
参与者需要读取、创建、撤销、修改或存储系统
用例建模中常见的问题
用例的设计原则
1.需求和用例的关系
2.需求应有层次的组织起来
3.不要从用例直接推论出设计
用例模型的复杂度
用例包,包是最常用的刮玻璃模型复杂度的机制,也是uml语义中最简单的一种模型元素,他就是一种容器,在包中可以容纳其他任意的模型元素。
2018.1.4 UML 第三章 用例图的更多相关文章
- 《UML精粹》第三章 -类图的基本概念
第三章 类图:基本概念 类图可用来描写叙述系统中各种对象的类型.也可描绘出对象间各种各样的静态关系.此外.类图中也能够秀出类的性质(property)与操作(operation),以及可应用到对象间连 ...
- 第二章(java程序设计)第三章(语言基础)
第二章 2.1 对象 对象的概念是由现实世界引入问题模型: 对象包含有:状态和行为.具体地来说是: 数据封装:对象的方法的作用就是:将内部变量封装起来,提供给外界交互的窗口.(实现对数据的隐藏) 继承 ...
- 第三章 Linux基本命令操作
第三章 Linux基本命令操作 ¨ 本节所讲内容: ¨ 3.1 Linux终端介绍 Shell提示符 Bash Shell基本语法 ¨ 3.2 基本命令的使用:ls.pwd.cd.hist ...
- 第三章:Python高级编程-深入类和对象
第三章:Python高级编程-深入类和对象 Python3高级核心技术97讲 笔记 3.1 鸭子类型和多态 """ 当看到一直鸟走起来像鸭子.游泳起来像鸭子.叫起来像鸭子 ...
- 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...
- 《Linux内核设计与实现》读书笔记 第三章 进程管理
第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...
- Python黑帽编程3.0 第三章 网络接口层攻击基础知识
3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...
- 《Entity Framework 6 Recipes》中文翻译系列 (11) -----第三章 查询之异步查询
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第三章 查询 前一章,我们展示了常见数据库场景的建模方式,本章将向你展示如何查询实体 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16 过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...
随机推荐
- SQL SERVER的update select语句的写法
需求: 要根据表A的数据来更新表B的某些字段,A和B要进行条件关联. 常规做法可能写个子查询 简单写法是用SQL Server的update select语法 update T_STOCK_INFO ...
- tomcat与jetty接收请求参数的区别
[场景] 服务端点对点通知.A服务发起请求B服务,B同步返回接收成功:然后B开始处理逻辑:B处理完成后异步通知给A:A接收请求并处理,同步回写响应给B:完成. [先上代码] 服务端(接收端)代码: i ...
- 5.Python初窥门径(字典)
Python字典学习 1.字典初识 1.字典的简单介绍 字典(dict),是python中唯一的映射类型.他是以{ }括起来的键值对组成.在dict中key是唯一的.在保存的时候,根据key来 ...
- P3379 【模板】最近公共祖先(LCA)(倍增)
这题有毒!!!!!!!!!! TM我重新打的板子,然而...... 5分钟打完 debug两小时 我的写法常数太大了 每次DFS都要For去更新F 最后写了快读才A 改: 只处理f[i][0] dfs ...
- 文本处理三剑客之gawk
gawk 作者:Aho, Weinberger, Kernighan 版本: GNU awk:gawk New awk:nawk 简介:格式化文本输出工具,模式扫描及处理语言:报告生成器. 用法:ga ...
- windows驱动环境配置vs2010+wdk7600
安装wdk后 要勾选集成VSIX选项到vs里面,不然vs里面新建项目时候找不到windows Driver 最简单的方式是安装wdk7600+vs2010+VisualDDK-1.5.7 这三个软件 ...
- :input获得焦点时被弹出键盘挡住解决办法
这个是移动端非常常见的bug了,这里说下综合的解决办法,因为有时候你的办法就是会失效.. 上代码 /*input框调起输入法盖住输入问题*/$('input[type="text" ...
- Draw a Mess (并查集)
It's graduated season, every students should leave something on the wall, so....they draw a lot of g ...
- mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译
mybatis 中使用 sqlMap 进行 sql 查询时,经常需要动态传递参数,例如我们需要根据用户的姓名来筛选用户时,sql 如下: select * from user where name = ...
- Python3基础(6)面向对象编程、异常处理
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...