第三章 用例图

(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 第三章 用例图的更多相关文章

  1. 《UML精粹》第三章 -类图的基本概念

    第三章 类图:基本概念 类图可用来描写叙述系统中各种对象的类型.也可描绘出对象间各种各样的静态关系.此外.类图中也能够秀出类的性质(property)与操作(operation),以及可应用到对象间连 ...

  2. 第二章(java程序设计)第三章(语言基础)

    第二章 2.1 对象 对象的概念是由现实世界引入问题模型: 对象包含有:状态和行为.具体地来说是: 数据封装:对象的方法的作用就是:将内部变量封装起来,提供给外界交互的窗口.(实现对数据的隐藏) 继承 ...

  3. 第三章 Linux基本命令操作

    第三章  Linux基本命令操作 ¨  本节所讲内容: ¨  3.1  Linux终端介绍 Shell提示符 Bash Shell基本语法 ¨  3.2  基本命令的使用:ls.pwd.cd.hist ...

  4. 第三章:Python高级编程-深入类和对象

    第三章:Python高级编程-深入类和对象 Python3高级核心技术97讲 笔记 3.1 鸭子类型和多态 """ 当看到一直鸟走起来像鸭子.游泳起来像鸭子.叫起来像鸭子 ...

  5. 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...

  6. 《Linux内核设计与实现》读书笔记 第三章 进程管理

    第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...

  7. Python黑帽编程3.0 第三章 网络接口层攻击基础知识

    3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...

  8. 《Entity Framework 6 Recipes》中文翻译系列 (11) -----第三章 查询之异步查询

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第三章 查询 前一章,我们展示了常见数据库场景的建模方式,本章将向你展示如何查询实体 ...

  9. 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16  过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...

随机推荐

  1. sap smartform 打印乱码问题

    在smartforms打印的时候会遇到中英文结合的form 有时候系统会处理时出现乱码   有时不会  不知道是系统的事情还是配置的事情 现在是我的解决办法  因为是中英文结合 在中文环境建立form ...

  2. IDEA开发Spark的漫漫摸索(一)

    系统:Win10 01 安装IDEA IDEA版本:IntelliJ IDEA 2017.2.1 64位 使用的学生授权下载的ultimate版本,此处不赘叙安装过程. 02安装编译环境 Spark可 ...

  3. C++ | char* 在类中实践笔记

    在C++中,当类中定义有char * 变量时,在传参,构造函数,复制构造函数如何创建及赋值,来一个简单的例子就明了: #include<iostream> #include<stri ...

  4. 前端 HTML-CSS 规范

    黄金定律 一个项目应该永远遵循同一套编码规范! 不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的. HTML 语法 用两个空格来代替制表符(tab) – 这是唯一能保证在所有环境 ...

  5. 牛客练习赛43D(贪心)

    有生之年我居然也能不看题解做出来题QAQ-- 发现c.d是0.1序列而不是随机数列说明有蹊跷,于是发现负数直接配0,正数配1即可.不知道哪个最小,那就全求一下吧--我的做法的坑点是数正好为1时不可以选 ...

  6. 1101 Quick Sort(25 分

    There is a classical process named partition in the famous quick sort algorithm. In this process we ...

  7. Sqoop架构

    Sqoop 架构 Sqoop 架构是非常简单的,它主要由三个部分组成:Sqoop client.HDFS/HBase/Hive.Database.下面我们来看一下 Sqoop 的架构图. 用户向 Sq ...

  8. 【Java】在eclipse中使用maven进行项目构建 入门篇

    maven配置的简单说明 从\192.168.30.150\103.初级人员培训资料\新建文件夹 (2)\环境下提取apache-maven-3.0.4.zip压缩包,解压缩至E盘下 在E盘下新建&q ...

  9. sed 处理一行,替换 删除

    sed option 'action' filename (文件可多个) option: -i 直接在原文件中修改! -n 安静模式,默认情况所有数据都会被列出,但-n只有经过动作处理的那一行才被列出 ...

  10. pat1098. Insertion or Heap Sort (25)

    1098. Insertion or Heap Sort (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...