php的用例图箭头怎么画,需求中如何画用例图 - china008的个人空间 - OSCHINA - 中文开源技术交流社区...

UML用例图

用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,所以是 设计系统分析阶段的起点,设计人员根据客户的需求来创建和解释用例图,用来描述软件应具备哪些功能模块以及这些模块之间的调用关系,用例图包含了用例和参 与者,用例之间用关联来连接以求把系统的整个结构和功能反映给非技术人员(通常是软件的用户),对应的是软件的结构和功能分解。

用例是从系统外部可见的行为,是系统为某一个或几个参与者(Actor)提供的一段完整的服务。从原则上来讲,用例之间都是独立、并列的,它们之间并不存 在着包含从属关系。但是为了体现一些用例之间的业务关系,提高可维护性和一致性,用例之间可以抽象出包含(include)、扩展(extend)和泛 (generalization)几种关系。

共性:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。

1、包含(include)

包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。基用例控制与包含用例的 关系,以及被包含用例的事件流是否会插入到基用例的事件流中。基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。

包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个 被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个 子过程,然后再从主程序中调用这一子过程。

例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。这时包含关系可以用来理清关系。

f798b5356ebfa03ee2a693a6c31cfe36.png

2、扩展(extend)

扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点 (Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展 点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。

对于一个扩展用例,可以在基用例上有几个扩展点。

例如,系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导入、打印和查询相对独立,而且为查询添加了新行为。因此可以采用扩展关系来描述:

b0e9faaf8c075b0acc1758158358d744.png

4、泛化(generalization)

泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。

例如,业务中可能存在许多需要部门领导审批的事情,但是领导审批的流程是很相似的,这时可以做成泛化关系表示:

fd110dd9bbcc9328b76476591f98cedb.png

上面是我参考的一篇文章,觉得将三种关系的区别讲得很清晰,在此基础上结合自己的系统,对项目(在线购物系统)的用例做了整体的描绘。

*****************************************************************

(1)系统整体用例图

b73b6fcf751241dd2c675baefe738306.png

(商品用例图)

5ab2096201a8e7c02146d90f2cd549f2.png

(购买信息用例)

aa1e73aa9270c70306a6c218c0ee8b50.png

(用户资料用例)

8b0106ef95faa07d43bfcfc16f9de436.png

按照先整体用例,后子系统用例来进行描绘的,欢迎大家提出好的建议!

转:UML中扩展和泛化的区别

泛化表示类似于OO术语“继承”或“多态”。UML中的Use Case泛化过程是将不同Use Case之间的可合并部分抽象成独立的父Use Case,并将不可合并部分单独成各自的子Use Case;包含以及扩展过程与泛化过程类似,但三者对用例关系的优化侧重点是不同的。如下:

●泛化侧重表示子用例间的互斥性;

●包含侧重表示被包含用例对Actor提供服务的间接性;

●扩展侧重表示扩展用例的触发不定性;详述如下:

既然用例是系统提供服务的UML表述,那么服务这个过程在所有用例场景中是必然发生的,但发生按照发生条件可分为如下两种情况:

⒈无条件发生:肯定发生的;

⒉有条件发生:未必发生,发生与否取决于系统状态;

因此,针对用例的三种关系结合系统状态考虑,泛化与包含用例属于无条件发生的用例,而扩展属于有条件发生的用例。进一步,用例的存在是为Actor提供服 务,但用例提供服务的方式可分为间接和直接两种,依据于此,泛化中的子用例提供的是直接服务,而包含中的被包含用例提供的是间接服务。同样,扩展用例提供 的也是直接服务,但扩展用例的发生是有条件的。

另外一点需要提及的是:泛化中的子用例和扩展中的扩展用例均可以作为基本用例事件的备选择流而存在

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php stmp 授权码问题,PHPmailer 使用网易126发送邮件的问题

最近使用PHPMailer库连接网易的smtp.126.com邮件服务发送邮件总是返回连接失败Mailer Error: SMTP connect() failed.换过swiftmailer库也是一样的结果。这是使用新的网易帐号才会有的问题,因为新的网易帐号需要开启客户端授权码才能使用SMTP服务。旧帐号是没有这个…

oracle学习数据,Oracle从入门到精通的学习笔记

本次知识点:1.认识SQL的介绍2.掌握scott用户的数据结构3.查询语句之简单查询1.SQL:SQL是指结构化查询语言,在80年代的时候,基本存在80多种数据库,每一种数据库都有自己的的操作命令,也就导致了程序员从一个数据库到另一个数据库的转化时变的极为麻烦,基本就要从新学习.在70年代…

linux创建新进程就分配空间,linux几种创建进程的方法

在Linux中主要提供了fork、vfork、clone三个进程创建方法。在linux源码中这三个调用的执行过程是执行fork(),vfork(),clone()时,通过一个系统调用表映射到sys_fork(),sys_vfork(),sys_clone(),再在这三个函数中去调用do_fork()去做具体的创建进程工作。forkfork创建…

java文件下载至linux乱码,JAVA 文件下载乱码问题解决办法

页面设置隐藏的iframe页面下载按钮id"btnDown" href"javascript:void(download(btnDown))" >下载模板页面JS脚本function download(id){$("#reqFrame").attr("src",encodeURI("/servlet/Common?actiondownloadByPath&fil…

强行更改linux服务器时间,加强Linux服务器安全的20项建议

一般情况下用 Linux 做桌面在默认配置下是很安全的,我在一定程度上同意这个说法(很值得商榷的话题)。不过 Linux 内置的安全模型和工具做得确实很到位,用户只需进行简单的调整和自定义就可以加强 Linux 服务器安全。与恶意用户做斗争对于所有 Linux 系统…

webshell提权教程linux,Linux下WEBSHELL提权

用phpshell2.0和Linux Kernel2.6x 本地溢出代码配合提ROOT,现在不少LINUX主机都还有这个本地溢出漏洞。前提&#xff1a;1、目标机上安装了GCC能编译源码2、Kernel 2.6.x (> 2.6.13 && < 2.6.17.4)因为是在webshell里溢出成功也得不到返回的ROOT SHELL,所…

Linux宏定义实现类成员函数,全面解析Linux内核的同步与互斥机制

http://blog.csdn.net/sailor_8318/archive/2008/06/30/2599357.aspx【摘要】本文分析了内核的同步及互斥的几种机制&#xff1a;原子运算符(atomicoperator)、自旋锁Spinlock、等待队列Waitqueue、事件Event、completion、信号量Semaphore及其优化版互斥锁&#xff0c;详细分析…

Linux命令sngre,linux gre隧道创建

linux gre隧道创建实验环境两台可以相互通信的虚拟机&#xff0c;两个虚拟机在不通的网段。如下所示host A:[[email protected] ~]# ip a1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127…

linux终端提示符含义,Linux:终端提示符 (prompt) 不如期生效原因

前言先来简单介绍下, prompt是什么鬼? 顾名思义就是提示符的意思, 看起来和我们遥远, 但实际上只要是每个接触shell的童鞋, 都有看到, 那就是我们在输命令时前面的那串提示符.例如:当然, 这个样式是可以修改的, 这就涉及到我们的PS1和PS2了, 有经验或者以前有设置过的童鞋估计…

skyeye linux qt,ARM仿真器SkyEye的安装及使用

SkyEye是一个开源软件(OpenSource Software)项目&#xff0c;中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境&#xff0c;模拟常见的嵌入式系统&#xff0c;可在SkyEye上运行μCLinux以及μC/OS-II等&#xff0c;以及各种…

Linux 读写 优化 ssd,linux ssd 优化

一、修改默认的固态硬盘(SSD)柱面大小提升Linux下固态硬盘的使用率&#xff0c;在安装Linux操作系统前就应该做相关工作。系统会先在磁盘上创建分区&#xff0c;通常创建的分区包含固定数量的柱面&#xff0c;而默认情况下&#xff0c;每个柱面由16065512个字节的扇区组成。现在…

linux中dev目录的作用,Linux 的dev目录详解和Linux系统各个目录的作用

Linux /dev目录详解在linux下&#xff0c;/dev目录是很重要的&#xff0c;各种设备都在下面。下面简单总结一下&#xff1a; dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部…

linux 类型排序,Linux命令之排序命令sort使用实例

名称&#xff1a;sort位置&#xff1a;/usr/bin/sort权限&#xff1a;所有用户用法&#xff1a; sort [OPTION]... [FILE]...sort [OPTION]... --files0-fromF选项&#xff1a;-b --ignore-leading-blanks 忽略最前面的空格-f --ignore-case fold lower case to…

2g 双核电脑 linux,9208)(奔腾双核E5200/2G/320G)电脑详细技术

处理器型&#xff1a;intel 酷睿2双核 p7350 intel 酷睿2双核 p7450 intel 酷睿2双核 t6600 intel 奔腾双核t4300 intel 奔腾双核 t4400 intel 赛扬双核 t1600 intel 赛扬双核 t3000操作系统&#xff1a;windowsvista home basic dos标配内存&#xff1a;1gb 2gb 硬盘容量&…

linux shell 高级编程,shell高级编程

条件选择if语句选择执行&#xff1a; 注意&#xff1a;if语句可嵌套单分支if 判断条件;then条件为真的分支代码fi双分支if 判断条件; then条件为真的分支代码else条件为假的分支代码fi多分支if 判断条件1; then条件为真的分支代码elif 判断条件2; then条件为真的分支代码elif 判…

linux menuconfig usb,[Linux]make menuconfig里面的选项很重要

最近在用USB摄像头&#xff0c;发现驱动正常加载&#xff0c;插上USB摄像头&#xff0c;内核设备总是无法加载摄像头的驱动&#xff0c;也没有vidoe0设备&#xff0c;但我以前在2410上是可以的。如下&#xff1a;/ # usb 1-1: new full speed USB device using s1r72v27 and ad…

linux apache 大文件,Apache下error.log文件太大的处理方法

Apache下error.log文件太大的处理方法2019年05月03日| 萬仟网网络运营| 我要评论清除error.log、access.log并限制apache日志文件大小的方法 有个客户反映vps网站打不开&#xff0c;登录系统检查下&#xff0c;客户是win2003系统&#xff0c;发现放置网站文件的清除error.log、…

c语言程序设计臧,清华大学出版社-图书详情-《C程序设计基础(第2版)》

前言C语言是在由UNIX的研制者(美国贝尔实验室的Dennis Ritchie和Ken Thompson)于1970年研制出的B语言的基础上发展和完善起来的。1972年&#xff0c;在DEC PDP-11计算机上实现了最初的C语言&#xff0c;此后C语言伴随着计算机的发展一直走到了今天。C语言是一种支持过程化的、实…

c语言程序设计实践课选题,c语言程序设计实践实验题目

c语言程序设计实践实验题目 绥化学院程序设计实践实验报告范例 参考1实验题目&#xff1a;循环结构程序设计实验目的&#xff1a;1.熟悉 VC6.0 的运行环境&#xff0c;掌握 C 程序的执行方法&#xff1b;2.掌握三种基本数据类型、部分运算符号和常用函数&#xff1b;3.掌握三种…

c语言上机指导答案清华,第一章自测练习答案清华大学c语言习题实验指导及课程设计...

第一章自测练习答案清华大学c语言习题实验指导及课程设计 第一章 自测练习参考答案 一&#xff0e;简答题 1&#xff0e;源程序是程序员创建的&#xff0c;目标程序是编译器创建的&#xff0c;可执行程序是连接器创建的。 2&#xff0e;步骤如下&#xff1a;1)说明程序需求&…