用例(UML重要概念)

UseCase(用例)是一个UML中非常重要的概念,在使用UML的整个软件开发过程中,UseCase处于一个中心地位。用例是对一组动作序列的抽象描述,系统执行这些动作序列,产生相应的结果。这些结果要么反馈给参与者,要么作为其他用例的参数。

用例被认为是第二代面向对象技术的标志。

【拼音】:yònglì

袁谁言直【注音】:ㄩㄥˋㄌㄧˋ

释义:(1).援用成例。

【出处】:《宋史·寇准传》:"宰相,所以进贤退不肖也,若用例,一吏职尔。"

释义:(2).动用中的实例。

那么,到底什么是UseCase呢在UML的文档中,UseCase的定义是:在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的教曲损左功能单元的定义和描述。有点县慢酒她盾友程拗口,对吧其实UseCase就是对系统功能的描述而已,不过一个UseCase描述的是整个系统功能的一部分,这一部分一定要是在逻辑上相对完整的功能流程。在使用UML的开发过程触号房谈乙中,需求是用UseCase来表达的,界面是在Use只只轮均格极Case的辅助下设计的,很多类是根据UseCase来发现的,测试实例是根据UseCase来生成的,包括整个开发的管理和任务分配,也是依据UseCase来组织的。

对不同的Actor来说,他要使用问种胡述唱系统的某项功能也不同。所以河入滑者陆存,在识别和分析U法日见审论检统稳重秋外seCase时,我们要对每个Actor逐一进行。对于ToDoUser,我们可以轻易的识别出两个UseCase:AddTask和RemoveTask。ToDoUser主动使用这两个UseCase所描述的系统功能,所以在我们的UseCase图上,ToDoUser和这两个UseCase的关系是用从ToDoUser发出的箭来表示的。对于FileSystem,我们识别出的也是同样的两个UseCase,不过这次箭头从UseCase指向FileSystem,表示FileSystem是被动的。

UseCase由以下元素组成:

名称

简单描述

事件流

关系

UseCase图

特殊需求

前条件

后条件

1.用户插入信用卡2.输入密码3.输入提款金额4.提取现金5.退出系统,取回信用卡但是这只描述了提款用例中最顺利的一种情况,作为一个实用的系统,我们还必须考虑可能发生的各种其他情况,如信用卡无效、输入密码错、用户帐号中的现金余额不够等,所有这些可能发生的各种情况(包括正常的和异常的)被称之为用例的场景(Scenario),场景也被称作是用例的实例(Instance)。在用例的各种场景中,最常见的场景是用基本流(B住活穿各术asicFlow)来描述的球怎均式举,其他的场景则是用备选流(AlternativeFlow)来描述。对于ATM系统中的"提款"用例,我们可以得到如下一些备选流:

备选流一:用户可以在角工己基本流中的任何一步选择退出,转至基本流步骤5。

备选流二:在基本流步骤1中,用户插入无效信用卡,系统显示错误星歌游表并退出信用卡,用例结束。

备选流三:在基本流步骤2中,用户输入济列交端错误密码,系统显示错误并提示用户重新输入到们千向越将已义看数室密码,重新回到基本流步骤2;三次输入密码错误后,信用卡被系统没收,用例结束。…通过基本流与备选流的组合,就可以将用例所有可能发生的各种场景全部描述清楚。我们在描述黄句象联某有曾念现用例的事件流的时候,就是要尽可能地将所有可能的场景都描述出来,以保证需求的完备性。

IvarJacobson在1967年定义爱立信AXE系统的构架时开始书写使用场境usagescenarios。

二十世纪八十年代中期Jacobson花了很多精力来思考过去十多年的工作方法。他造了一个术语anvendningsfall,大意是"使用情况"(situationofusage)或用况(usagecase)。但当用英文出版的时候,他发现"useagecase"在英语里说不通,所以写作用例"usecase"

用例是短文

用例可以是一个场景,包括动作和互交。

用例可以是一组场景,描述不同场景下的行为。这种书写格式可以在任何时候描述有变体的行为,例如黑盒需求,业务流程,系统设计说明。

用例里不要有系统设计

用例里不要有界面设计

用例里不要有特性列表

用例里不要有测试

用例应该描述行为需求

用例的主场景不要超过九步。可以在适当的层次上得到子目标和移除设计说明。

用例的最大价值不在于主场景,而是在于备选行为。主场景可能只占用例长度的四分之一到十分之一。

UseCase具有一个基本事件流(可称为"理想路径")、多个例外流,包括:

基本变化

特殊情况

处理错误情况的异常事件流

UseCase说明书应包括以下内容:

功能描述

可用性

可靠性

性能

可支持性

设计约束

试图决定UseCase的大小是一个很有趣的话题,处理这件事的一个方法是将UseCase的大小跟它的意图和范围关联起来,对于一个真正大的范围来说,一个UseCase并不要在一个系统中处理那么多,但这些系统都用于同一商业领域,称为BusinessUseCase,它把整个公司看作一个黑盒和Actor关于公司目标的说明。这些BusinessUseCase的场景不允许假定任何公司内部的结构,一个客户将向公司下一个定单而不是客户服务部门。

对于系统发展而言,UseCase的范围限制一个单一的系统,这是UseCases最通常的形式,我们称之为SystemUseCase,它把整个系统看作是一个黑盒,它不指定任何内部结构并且仅受限于问题域的语言描述。

UseCases的另一范围是设计子系统和系统内部组件的,称为ImplementationUseCases,它把组件看作一个黑盒,并且这些Actors是区分它的成员。例如:可能会用ImplementationUseCases去说明应用系统中email组件的需求。

给出了这些分类,关于UseCase的大小话题变得容易了,设计这些项的范围来调整整个大小。帮助系统设计者,每个UseCase只描述没有大的分支的行为的单个线索。违背这个规定,UseCase看起来通常是不准确的或含糊的,作为测试说明的资源和参考,它也是很难使用的。

UseCases的好处是一些情节能用不同程度的正规化的文字说明。每个情节涉及UseCases中单一的途径,细节是条件组。

不正规的文本描述也能使用,不过当条件较多和可能失败的情况下它们很难跟随下去。开始试图理解需求时,不正规的叙述风格也是非常有用的,然而随着UseCases的进展,使用更加正规的机制去说明UseCases才是有用的。

下面是客户对UseCase"下定单"的粗略概略:

"确定客户,找出需要的并且仓库里还有的物品并检查客户信用额是否够用"

结构化叙述的格式已经被证明是非常有效的。这个格式所做的事是描述每一个情节的行为者:目标语句对顺序的叙述。在这个顺序中,每一个行为者:目标的语句对都假设前一个的目标是成功的,右面是一个简单的范例:

UseCases认为我们正在设计的系统是一个单一的黑盒,根本没有任何内部结构被记录下来,并且它被认为是一个情节产生的目的及对应单一的行为者(Actor)。这些UseCases没有表示任何关于系统内部的东东,只是表示系统将达到什么样的目标及由什么(人或其它系统)操作和负责。

UseCases已经得到越来越广泛的应用,它与其它需求捕获技术相比,它成功的原因在于:

1UseCases把系统当作一个黑盒

2UseCase使在需求中看到实现的决定变得更加容易

为什么这些需求不指定内部结构的原因是,说明的内部结构给设计者带来了额外的约束,没有这些约束设计者们能更自由地建立一个正确实现客观可见行为的系统,并存在出现突破方案的可能性。

是否每个UseCase都包括至少一个actor

是否每个UseCase都独立于其他UseCase

是否每个UseCase都有一个简单的行为或事件流

是否每个UseCase都有一个唯一的、直观的、可扩展的名称,使它不至于在后期被混淆。

用户是否容易理解UseCase的名称和描述。

UseCase模型显示系统中的UseCase与Actor及其相互关系。其评价标准有:

UseCase模型是可理解的吗

通过对UseCase模型的研究是否能对系统功能有一个清晰的概念。

所有的actor都定义了吗所有的功能需求都满足了吗

UseCase模型是否存在多余的行为。

从模型到UseCase包的划分是否是恰当的。

1使用usecase十大误区

1.系统的boundary没有定义或经常改变;

2.从系统观点而不是actor观点来定义UseCase;

3.Actor的名称不一致;

4.UseCase定义过多;

5.UseCase和actor之间的关系象蜘蛛网一样错综复杂;

6.UseCase的说明太长;

7.UseCase的说明不清楚;

8.UseCase没有正确的描述功能需求;

9.用户无法理解UseCase;

10.UseCase无法正常结束。

2如何避免以上问题

清楚的确定系统的boundary.

使用标准模板书写UseCase说明书

面向UseCase的需求与传统的功能性系统需求之间最显著的区别在于actor,以面向UseCase的观点,系统存在是由于actors要通过该系统实现某些目标,actor与系统进行交互来实现其目标,我们将这些交互行为定义为UseCase。

不要将UseCase说明书与用户接口设计相混淆

将用户接口设计置于UseCase说明书还会出现另一个问题,为了在UseCase之间和接口之间建立一对一的通信,我们会选择反映用户接口的UseCase块而不是反映用户目标的UseCase块,这样,为了表达一个完整的用户目标,我们使用交互UseCase关系,将不同的、基于用户接口的UseCase联接起来,结果在UseCase模型中,我们得到了一幅类似蜘蛛网的关系图。实际上,这副图是用户接口说明图,虽然它在系统文档中是很重要的一部分,但他属于用户接口设计文档,而不是UseCase需求文档。

实现用户接口和UseCase交互之间的松散耦合

松散耦合是比较合适的,低逼真度的用户接口图有助于理解UseCase,但要注意不要过度的将基本交互与用户界面机制相连,用户界面很有可能会改变。在功能说明书中,要注意actor做些什么(如"提交请求")而不是交互是怎样完成的(如"双击提交按钮")。

不要在UseCase和用户接口之间建立通信

试图在UseCase和用户接口之间建立通信可能会存在潜在的、不正确的功能操作。UseCase不仅与只能访问某个接口的actor相联,而且与那些能够更新该接口的actors相连(这可能是例外流),结果就造成了不正确的功能操作。我们应该在基于实际用户目标和功能操作的基础上拆分UseCase,而不是在基于用户接口的基础上组合UseCase,只有这样才能得到正确的UseCase模型。

回顾UseCase模型和UseCase说明书,如果你不能防止所有的误区,你应该尽早认识问题并确定问题

这个观点并不是什么新东西,有关代码检查的经典算法已有大约25年历史了,但怎样将其应用于UseCase呢首先,回顾UseCase模型,回顾一下UseCase的简单说明(UseCase名称、目标、简单描述)。这项工作应在绘制草图时尽早执行,并在写详细的UseCase说明书之前完成。接着是回顾UseCase草图,保证图是正确的,并且详细的UseCase说明书是完整的。最后是正式回顾最终的UseCase图和UseCase说明书。

主要行为者(Actor)和UseCase之间没有连结

情节步骤不需要连续

情节中步骤顺序的情况是没问题的,这里有一些机制去突出可能的并行步骤。在UML中活动图是首选的机制,通过非正式地看UseCase的情节你可以注意到可能的平行步骤;可以看UseCase内一些邻近的步骤;也可以有相同的行为者(Actor)对步骤负责。之前我们举过的例子里,确认数量和确认信用额可能是平行的。有时候在UseCase的说明文档中标记这些可能的平行步骤是有用的。

UseCases的大小

当开始做UseCases的时候有个很显然的危险就是它要么有很多步骤要么就很少步骤。如果在UseCase中有超过15个步骤,它可能包含一些实现明细。如果它只有非常少的步骤则检查它的目标是否是达到一个没有很多分支的活动的单一线索。

较少的人类行为者(Actor)

如果UseCase有较少的人类行为者,而大多数行为者是其它系统,通常的做法是修改这个UseCase。寻找系统必须做出反映或公认的事件胜过会见这些行为者。

需求捕获和系统复杂性

总而言之,这些情节捕获到系统复杂度的同时行为者:目标语句对容许大的系统以相对压缩的格式说明。UseCase的格式的作用是用户和开发者能标志出行为者,然后确认这些行为者工作职责对应(或不对应)的目标,代替一个大的很难读的功能规格说明书。

仅仅这样,用户和开发者就有足够的兴趣进而研究那些情节的细节。

系统不仅仅有应得的功能性需求

一些UseCases并没有捕获所有的客观需求,仅仅是捕获了系统怎么用的那些功能性需求。然而还有许多方面的需求需要去捕获的。其中有的非功能性需求使用关联以至于也能隶属于个别的UseCase,如性能需求和系统容量的需求。另外的一些不是关联的而是要单独地去捕获,它们是以下的需求:

·系统范围

·用户界面原型

·一般规则

·约束

·算法

运行时期和建立时期的需求比较

一个重要的因数要记住,就是系统的赞助者是大过用户团体的。系统中有许多的风险承担者,UseCases仅仅捕获其中一些风险承担者的需要,具体说,UseCases仅仅捕获系统运行时期的需求而忽略做为系统开发组织的风险承担者的需求,开发组织最有兴趣的是对建立时期需求的描述。

运行时期需求包括:系统范围、用户组织对产品的期望和目标、UseCases、其它非功能性需求。

建立时期的需求可以部分的由UseCases把握。但许多方面是需要由开发组织的处理的。

·项目范围和目标:项目必须提交什么。(和系统范围的区别是它提交的是所有项目的东西)

·开发负责人的约束:包括标准、习惯、工具、品质度量标准、品质保证原则、及品质保证的习惯。

UseCases首先用于需要响应客观事件的系统。它们能用于提供了一个有很容易理解的目标的清楚的行为者的环境。当结果不可定义或不清晰时不能用UseCases。意思是如果目标成功或目标失败不能有一个明确的定义,那么UseCases不能用来捕获需求。

然而说到这,现在大部分对象方法都使用UseCases。因为UseCases被证明是捕获需求的非常有效的机制。

UseCase是系统提供的功能块,换句话来说UseCase演示了人们如何使用系统。通过UseCase观察系统,能够将系统实现与系统目标分开,有助于了解最重要的部分――满足用户要求和期望,而不会沉浸于实现细节。通过UseCase用户可以看到系统提供的功能,先确定系统范围再深入开展项目工作。

THE END
1.用例图详解文章浏览阅读9.9k次,点赞22次,收藏65次。用例图是一种描述系统功能和用户交互的动态视图,通过参与者、用例及它们之间的关系构成。_用例图https://blog.csdn.net/weixin_62688213/article/details/137076544
2.软考架构案例分析必背知识点51CTO博客1.1.5.3.超文本系统 构件以网状链接方式相互连接,用户可以在构件之间进行按照人类的联想思维方式任意跳转到相关构件,超文本是一种非线性的网状信息组织方法,它以结点为基本单位,链作为结点之间的联想式关联。 1.2.典型层次结构 1.2.1.MVC Model是对应用状态和业务功能的封装,我们可以将它理解为同时包含数据和行为的领域http://jowin.blog.51cto.com/10090021/5424618
3.用例图与用例描述UML是很多种技术的综合体,包括类图、用例图、交互图(顺序图)、状态图和对象约束语言(OCL)。 本篇只介绍用例图与用例描述,首先认识一下UML定义的用例“在系统(或者子系统或者类)和外部对象的交互中所执行的行为序列的描述,包括各种不同的序列和错误的序列,它们能够联合提供一种有价值的服务。”【Rumbaugh2004】。换https://www.jianshu.com/p/e1ff96af7e8c
4.解析常用UML图中用例图,类图,序列图UML图你是否熟悉,本文就向大家简单介绍一下几个最常用的UML图,主要包括包括:用例图、类图、序列图、状态图、活动图、组件图和部署图。 ? https://www.iteye.com/blog/752553
5.UML图绘制的注意点和实例分析UML可以看做用于系统设计阶段给开发做参考的一种方式,其很多图需要用到面向对象程序的思维。画UML图是产品经理的必备技能之一。 废话不多说,本文介绍一下最常见的几个UML图:类图、用例图、状态图、序列图、活动图,以及一个并不属于UML,但也有很大作用的数据流图。每张图详细介绍一下画法、注意点和具体案例。相关https://maimai.cn/article/detail?fid=1673189358&efid=BZwzYtibW4hUe18tVtdhpQ
6.读书笔记(用其他工具把书里的图画了一遍)(1本章节主要讨论的是业务建模中最繁重的工作——描述业务用例的实现,即业务流程,然后改进它,推导出待引入系统的用例。目前描述业务流程的可选择手段有文本、活动图和序列图,它们的主要区别如下(以财务部“员工→报销”用例的实现为样例): ● 文本 文本的缺点是不够生动,所以在描述业务流程时很少使用文本方式。不过,描https://cloud.tencent.com/developer/article/1661424
7.VisualParadigm破解版设计和管理工具VisualParad通过我们的代码和数据库工程工具,缩小系统设计和实现之间的差距。 源代码工程工具: 代码正向和反向生成(适用于 10 多种语言) 从Java 生成序列图 Hibernate (对象关系映射) 状态机代码正向/逆向生成 REST API 设计与生成 数据库工程工具: 从ERD 导出数据库 / DDL 从数据库 / DDL 生成 ERD 10、流程图设计工具 http://www.sd173.com/soft/8267.html
8.UML序列图:准则MicrosoftLearn如果您具有汇总了系统用户及其目标的用例图,则可以绘制序列图以描述系统的主要组件如何交互以实现每个用例的目标。有关更多信息,请参见UML 用例图:准则。 如果您已标识到达组件接口的消息,则可以绘制序列图以描述组件的内部部件如何交互以实现每个传入消息所需的结果。有关更多信息,请参见UML 组件图:准则。 https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2012/dd409389(v=vs.110)
9.UML概述及UML图详解(三)图[Diagrams]:图是事物和关系的可视化表示 1.用例图[Use Case Diagram]:用例图是从用户角度描述系统功能, 是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元 深入学习,请阅读:用例图详解 2.类图[Class Diagram]:(1)类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联https://developer.aliyun.com/article/1290780
10.UML图的几种类型,全给你总结在这了!参与者是系统的用户,通过系统外部与系统发生交互来实现。 关系: 参与者与用例之间的关系,主要包括关联、归纳、包含、拓展和依赖。 UML用例图模板 (2)序列图 序列图通过描述对象之间发送消息的时间顺利显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,序列图中的每条消息对应了一个类操作https://boardmix.cn/article/umltapy/
11.基于UML的系统测试用例自动生成①用创新性地结合图论知识,对用例图和序列图进行抽象,定义了相应的测试覆盖准则以生成测试用例.通过两 级遍历,自动生成系统测试向量,并且达到所提的系统测试覆盖率的要求.能够覆盖所有用例,用例依赖性, 以及交互中所有的消息序列.实现最大化的覆盖范围. 关键词:系统测试;UML;用例图;序列图;用例自动生成;图论 Automatichttps://c-s-a.org.cn/csaen/ch/reader/create_pdf.aspx?file_no=20110242&year_id=2011&quarter_id=2&falg=1
12.plantuml画图实现代码画时序图UML用例图java这篇文章主要为大家介绍了plantuml画图实现代码画时序图示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪+ 目录 引言 最近通过代码来画时序图,UML用例图,感觉很不错,所以给大家分享一下。 日常开发,一般在设计阶段,我们都需要画时序图、用例图等等。大家平时画图的时候,是用draw.https://www.jb51.net/article/255936.htm
13.基于姿态估计及图卷积神经网络的人体行为识别系统的设计与实现(3) 行为识别系统的设计与实现 设计并实现了一款基于人体骨架的行为识别系统.该系统能够通过摄像头或者上 传视频的方式采集视频数据.然后,它会使用 OpenPose 算法来分析视频中的人体姿 势,提取关键节点信息并将其转换为骨架序列.最后,系统基于图卷积神经网络来识 别行为类型,并在前端进行可视化展示. 1.4 文章结构https://lwtj.shzu.edu.cn/openfile?dbid=72&objid=51_57_49_57_50&lwsing=4f3f189e47db81211ee4eb108b2fe893
14.uml基础教程第三章用例图讲义教材.pptuml 基础教程 第三章-用例图讲义教材.ppt,(4)特殊需求 指的是一个用例的非功能性需求和设计约束。非功能性需求包括可靠性、性能、可用性和可扩展性等。设计约束可以包括开发工具、操作系统及环境、兼容性。 (5)前置条件 执行用例之前系统必须所处的状态。 (6)后置条件https://max.book118.com/html/2018/1127/8057063134001134.shtm
15.信息系统集成专业技术用例图 Scenario Diagrams Scenario Diagrams 协作图 State Diagrams State Diagrams 构件图 Component Diagrams Component Diagrams 部署图 State Diagrams State Diagrams 对象图 Scenario Diagrams Scenario Diagrams 状态图 Use Case Diagrams Use Case Diagrams 序列图 State Diagrams State Diagrams 类图活动图 UML UMLhttps://doc.mbalib.com/view/f3121948cd7c80c36f7b72c80f329f90.html