1、2023-1-3第3.1页第三章第三章 用例和用例图用例和用例图3.1 用例用例3.2 参与者参与者3.3 脚本脚本3.4 用例间的关系用例间的关系3.5 用例图用例图3.6 用例的描述用例的描述3.7 寻找用例的方法寻找用例的方法3.8 常见问题分析常见问题分析3.9 小结小结2023-1-3第3.2页3.1 用例用例v定义定义1:用例是对一个参与者用例是对一个参与者(actor)使用系统使用系统的的一项功能一项功能时所进行的交互过程的一个文字时所进行的交互过程的一个文字描述序列。描述序列。v定义定义2:用例是系统、子系统或类和外部的参:用例是系统、子系统或类和外部的参与者与者(actor)
2、交互的动作序列的说明,包括可交互的动作序列的说明,包括可选的动作序列和会出现异常的动作序列。选的动作序列和会出现异常的动作序列。第三章第三章 用例和用例图用例和用例图一、定义一、定义2023-1-3第3.3页3.1 用例用例例例1:用例的表示方法:用例的表示方法:Withdraw Money第三章第三章 用例和用例图用例和用例图二、例子二、例子?置正文为黑体置正文为黑体创建索引创建索引图图31 用例的例子用例的例子2023-1-3第3.4页3.1 用例用例例例2:银行业务系统中的用例:银行业务系统中的用例:第三章第三章 用例和用例图用例和用例图二、例子二、例子NewUseCase浏览账户余额浏
3、览账户余额NewUseCase列出交易内容列出交易内容NewUseCase划拨资金划拨资金NewUseCase支付账款支付账款NewUseCase登录登录NewUseCase退出系统退出系统NewUseCase编辑配置文件编辑配置文件NewUseCase买进证券买进证券NewUseCase卖出证券卖出证券2023-1-3第3.5页3.1 用例用例第三章第三章 用例和用例图用例和用例图三、采用三、采用用例进行需求分析的特点用例进行需求分析的特点1、用例从使用系统的角度描述系统中的信、用例从使用系统的角度描述系统中的信息;息;2、用例描述了用户提出的一些可见需求,、用例描述了用户提出的一些可见需求
4、,对应一个具体的用户目标对应一个具体的用户目标;3、用例是对系统行为的动态描述。、用例是对系统行为的动态描述。进行用例分析时,只把进行用例分析时,只把重要,交互过程复杂重要,交互过程复杂的用例找出来。的用例找出来。用例表示功能性需求用例表示功能性需求,非功能性需求用补充,非功能性需求用补充文档描述。文档描述。2023-1-3第3.6页3.1 用例用例第三章第三章 用例和用例图用例和用例图四、四、UML的建模机制的建模机制UML的建模机制的建模机制静态建模静态建模动态建模动态建模类图、对象图类图、对象图构件图、部署图构件图、部署图用例图、顺序图用例图、顺序图协作图、状态机图协作图、状态机图活动图
5、活动图2023-1-3第3.7页五、用例在需求分析中的地位五、用例在需求分析中的地位 1、需求分析说明书的内容:、需求分析说明书的内容:v系统的目的和内容;系统的目的和内容;v系统中的术语表系统中的术语表v用例用例v系统采用的技术系统采用的技术v开发过程中的参加人员、业务规则、系统运行所依开发过程中的参加人员、业务规则、系统运行所依赖的条件、安全要求、文档要求等各种其它需求赖的条件、安全要求、文档要求等各种其它需求v法律、政治、组织机构等方面的问题法律、政治、组织机构等方面的问题2、用例的本质、用例的本质3.1 用例用例第三章第三章 用例和用例图用例和用例图2023-1-3第3.8页五、用例在
6、需求分析中的地位五、用例在需求分析中的地位 2、用例的本质、用例的本质 (1)用例只是所有需求中的一部分内容)用例只是所有需求中的一部分内容 (2)用例分析是一种)用例分析是一种功能分解功能分解的技术的技术 (3)用例是与实现无关的关于系统功能的描述。)用例是与实现无关的关于系统功能的描述。用用例分析做得好坏,影响系统的开发例分析做得好坏,影响系统的开发。(4)一般情况下,一个用例由一个协作实现)一般情况下,一个用例由一个协作实现3、协作的定义、协作的定义 协作是对由共同工作的类、接口和别的元素所组协作是对由共同工作的类、接口和别的元素所组成的群体的命名,这组群体提供合作的行为。成的群体的命名
7、,这组群体提供合作的行为。3.1 用例用例第三章第三章 用例和用例图用例和用例图2023-1-3第3.9页4、用例及其实现、用例及其实现 3.1 用例用例第三章第三章 用例和用例图用例和用例图loginlogin realizationlogin realization(with security)图图32 用例及其实现用例及其实现协作协作实现实现简单实现简单实现带安全验证功能的实现带安全验证功能的实现2023-1-3第3.10页1、定义定义:参与者(参与者(actor)指系统以外的,需要使用系统或)指系统以外的,需要使用系统或与系统交互的东西,包括与系统交互的东西,包括人、设备、外部系统人、
8、设备、外部系统等。等。2、例;、例;例例33 在一个银行业务系统中可能有如下的参与者;在一个银行业务系统中可能有如下的参与者;v客户:从系统获取信息并执行金融交易客户:从系统获取信息并执行金融交易v管理人员:管理系统的用户。获取并更新信息管理人员:管理系统的用户。获取并更新信息v厂商:接收作为转账支付结果的资金。厂商:接收作为转账支付结果的资金。vMail系统。系统。3.2 参与者参与者第三章第三章 用例和用例图用例和用例图2023-1-3第3.11页3、参与者表示形式:、参与者表示形式:3.2 参与者参与者第三章第三章 用例和用例图用例和用例图Actor1Icon形式形式图图3.3 参与者的
9、参与者的3种表示形式种表示形式Label 形式形式Actor1Decoration形式形式Actor12023-1-3第3.12页4、参与者与用例之间的关系、参与者与用例之间的关系 用例和参与者之间有关联关系。一个参与者用例和参与者之间有关联关系。一个参与者可以执行多个用例可以执行多个用例.第三章第三章 用例和用例图用例和用例图3.2 参与者参与者NewUseCaseNewUseCase2Actor1客户客户买进证券买进证券卖出证券卖出证券图图3.4 一个参与者执行多个用例一个参与者执行多个用例2023-1-3第3.13页4、参与者与用例之间的关系、参与者与用例之间的关系一个用例也可以由多个参
10、与者执行。一个用例也可以由多个参与者执行。第三章第三章 用例和用例图用例和用例图3.2 参与者参与者Actor1Actor2NewUseCase浏览账户余额浏览账户余额客户客户管理人员管理人员图图3.5 一个用例由多个参与者执行一个用例由多个参与者执行2023-1-3第3.14页5、参与者之间的关系、参与者之间的关系参与者事实上是一个类参与者事实上是一个类,因此因此,参与者之间有继承参与者之间有继承关系。关系。第三章第三章 用例和用例图用例和用例图3.2 参与者参与者图图3.6 参与者之间的泛化关系参与者之间的泛化关系CustomerCommercial Cusromer2023-1-3第3.
11、15页1、定义、定义 在在UML中中,脚本指贯穿用例的一条单一路径脚本指贯穿用例的一条单一路径,用用来显示用例中的某种特殊情况。来显示用例中的某种特殊情况。脚本是用例的实例。脚本是用例的实例。每个用例都有一系列的脚本,其中包括一个每个用例都有一系列的脚本,其中包括一个主要脚本,以及多个次要脚本。相对于主要脚主要脚本,以及多个次要脚本。相对于主要脚本来说,次要脚本描述了执行路径中的异常或本来说,次要脚本描述了执行路径中的异常或可选的情况。可选的情况。第三章第三章 用例和用例图用例和用例图3.3 脚本脚本2023-1-3第3.16页2、例子、例子 例例34 在划拨资金这个用例中,包含几个相关在划拨
12、资金这个用例中,包含几个相关的脚本。一个是账上资金足够,划拨顺利的脚的脚本。一个是账上资金足够,划拨顺利的脚本,一个是账上资金不足的脚本,一个是有新本,一个是账上资金不足的脚本,一个是有新资金划入后再划拨的脚本。资金划入后再划拨的脚本。一个脚本要用具体的文字来描述。一个脚本要用具体的文字来描述。第三章第三章 用例和用例图用例和用例图3.3 脚本脚本2023-1-3第3.17页 第三章第三章 用例和用例图用例和用例图3.4 用例间的关系用例间的关系用例之间的关系用例之间的关系泛化关系泛化关系包含关系包含关系扩展关系扩展关系依赖关系的版型依赖关系的版型 依赖性代表的是一种客户依赖性代表的是一种客户
13、/提供者的关系,如果提供者发提供者的关系,如果提供者发生了变动,那么客户也要做出相应的改动。生了变动,那么客户也要做出相应的改动。关系描述的是一个用例需要某种类型的行为,关系描述的是一个用例需要某种类型的行为,而另一个用例定义了该行为,那么在用例的执行过程中,就可而另一个用例定义了该行为,那么在用例的执行过程中,就可以调用已经定义好的用例。以调用已经定义好的用例。关系的特点是由调用关系的特点是由调用用例决定是否进行调用,被调用的对象对调用对象一无所知,用例决定是否进行调用,被调用的对象对调用对象一无所知,并且不参与其中的选择判断。并且不参与其中的选择判断。2023-1-3第3.18页 第三章第
14、三章 用例和用例图用例和用例图3.4.1 泛化关系泛化关系3.4 用例间的关系用例间的关系泛化(泛化(generalization)代表一般与特殊的关系)代表一般与特殊的关系。泛化的意思与泛化的意思与OO程序设计中的继承概念类似,在程序设计中的继承概念类似,在分析和设计阶段,用泛化术语较多一些。分析和设计阶段,用泛化术语较多一些。图图3.7 用例之间的泛化关系用例之间的泛化关系父用例父用例(抽象用例)(抽象用例)子用例子用例Check Passwordretinal scanValidate User2023-1-3第3.19页 第三章第三章 用例和用例图用例和用例图3.4.2 包含包含关系关
15、系3.4 用例间的关系用例间的关系包含(包含(include)指的是两个用例间的关系,其中一个用例(称作)指的是两个用例间的关系,其中一个用例(称作基本用例)的行为包含了另一个用例(称作包含用例)的行为基本用例)的行为包含了另一个用例(称作包含用例)的行为。使用使用关系的约束:关系的约束:调用用例只能依赖被调用用例的返回结果,它对被调用用例的内调用用例只能依赖被调用用例的返回结果,它对被调用用例的内部结构没有了解;部结构没有了解;调用用例总会要求被调用用例执行,对被调用用例的使用是无条调用用例总会要求被调用用例执行,对被调用用例的使用是无条件的。件的。图图3.8 用例之间的包含关系用例之间的包
16、含关系基用例基用例Validate AccountATM SessionIdentify Customer包含用例包含用例基本用例依赖于包含用例基本用例依赖于包含用例虚线箭头表示,虚线箭头表示,由调用用例指向由调用用例指向被调用用例被调用用例2023-1-3第3.20页 第三章第三章 用例和用例图用例和用例图3.4.3 扩展扩展关系关系3.4 用例间的关系用例间的关系扩展扩展关系指的是一个用例可以增强另一个用关系指的是一个用例可以增强另一个用例的行为,扩展用例提供了一个离散的行为例的行为,扩展用例提供了一个离散的行为,可以将自己可以将自己添加到基用例中添加到基用例中。表示的时候箭头由扩展用例指
17、向执行用例表示的时候箭头由扩展用例指向执行用例,箭头的尾部在箭头的尾部在扩展用例一侧表示扩展取决于扩展用例扩展用例一侧表示扩展取决于扩展用例,而不是执行用例而不是执行用例,执行用例对扩展是毫无所知的。执行用例对扩展是毫无所知的。应用扩展关系的四个要素:应用扩展关系的四个要素:基用例(执行用例):需要被扩展用例加强的用例基用例(执行用例):需要被扩展用例加强的用例扩展用例:提供所添加的行为的用例扩展用例:提供所添加的行为的用例关系:使用虚线箭头表示,箭尾在扩展用例关系:使用虚线箭头表示,箭尾在扩展用例上,箭头指向基用例上,箭头指向基用例扩展点:基用例中的一个或多个位置,在该位置会衡量扩展点:基用
18、例中的一个或多个位置,在该位置会衡量某个条件以决定扩展是否打断基用例的执行。某个条件以决定扩展是否打断基用例的执行。2023-1-3第3.21页ReschedulePerformance cancelPerformanceReschedule Eventextension pointsIf event moved to new date rangeIf end date set earlier 第三章第三章 用例和用例图用例和用例图3.4.3 扩展扩展关系关系3.4 用例间的关系用例间的关系图图3.9 用例之间的扩展关系用例之间的扩展关系扩展用例依赖于基本用例扩展用例依赖于基本用例扩展用例扩展
19、用例基用例基用例(执行用例)(执行用例)扩展用例的执行是有条件的扩展用例的执行是有条件的2023-1-3第3.22页CustomerBuy MerchandiseBrowse Web SiteAdd Order to Warehouse System 第三章第三章 用例和用例图用例和用例图3.4.3 扩展扩展关系关系3.4 用例间的关系用例间的关系图图3.10 包含用例和扩展用例包含用例和扩展用例扩展用例扩展用例(对扩展关系)(对扩展关系)基本用例基本用例(对扩展关系)(对扩展关系)基本用例基本用例(对包含关系)(对包含关系)包含用例包含用例(对包含关系)(对包含关系)2023-1-3第3.2
20、3页3.4.4 用例的泛化、包含、扩展关系的比较用例的泛化、包含、扩展关系的比较一、从判断的角度一、从判断的角度v 泛化关系和扩展关系表示的是用例之间的泛化关系和扩展关系表示的是用例之间的“is a”关系关系v包含关系表示的是用例之间的包含关系表示的是用例之间的”has a”关系。关系。二、从执行的角度二、从执行的角度v在扩展关系中基本用例是可以独立存在的用例。一在扩展关系中基本用例是可以独立存在的用例。一个基本用例执行时,可以执行、也可以不执行扩展个基本用例执行时,可以执行、也可以不执行扩展部分。部分。v在包含关系中,基本用例可能是、也可能不是独立在包含关系中,基本用例可能是、也可能不是独立
21、存在的用例,在基本用例执行时,一定会执行包含存在的用例,在基本用例执行时,一定会执行包含用例部分。用例部分。第三章第三章 用例和用例图用例和用例图2023-1-3第3.24页3.4.4 用例的泛化、包含、扩展关系的比较用例的泛化、包含、扩展关系的比较 三、从使用的角度三、从使用的角度v如果需要重复处理两个或多个用例时,可以考虑使如果需要重复处理两个或多个用例时,可以考虑使用包含关系,实现一个用例对另一个用例的引用;用包含关系,实现一个用例对另一个用例的引用;v当描述正常行为的变型而且希望采用更多的控制方当描述正常行为的变型而且希望采用更多的控制方式时,可以在基本用例中设置扩展点,使用扩展关式时
22、,可以在基本用例中设置扩展点,使用扩展关系;系;v当处理正常行为的变型而且只是偶尔描述时,可以当处理正常行为的变型而且只是偶尔描述时,可以考虑只使用泛化关系。考虑只使用泛化关系。v包含和扩展关系表示用例的重用。包含和扩展关系表示用例的重用。第三章第三章 用例和用例图用例和用例图2023-1-3第3.25页3.4.4 用例的泛化、包含、扩展关系的比较用例的泛化、包含、扩展关系的比较四、四、UML中的关系中的关系第三章第三章 用例和用例图用例和用例图关联(关联(association)泛化泛化(generalization)依赖依赖(dependency)UML中的关系中的关系关系是模型关系是模型
23、元素之间具元素之间具体的语义联体的语义联系系关联是两个或多个类元(关联是两个或多个类元(classfier)之间的关系,之间的关系,它描述了类元的实例之间的联系它描述了类元的实例之间的联系泛化关系表示的是两个类元之间的关系。这两个泛化关系表示的是两个类元之间的关系。这两个类元中,一个相对通用,一个相对特殊。类元中,一个相对通用,一个相对特殊。依赖关系代表的是一种客户依赖关系代表的是一种客户/提供者的关系,如提供者的关系,如果提供者发生了变动,那么客户也要做出相应的改果提供者发生了变动,那么客户也要做出相应的改动。动。类元(类元(classfier)是一种建模元素,常见的类元是一种建模元素,常见
24、的类元有:类、参与者、组件、数据类型、接口、结有:类、参与者、组件、数据类型、接口、结点、信号、子系统、用例等点、信号、子系统、用例等2023-1-3第3.26页3.4.4 用例的泛化、包含、扩展关系的比较用例的泛化、包含、扩展关系的比较第三章第三章 用例和用例图用例和用例图关系类型关系类型说明说明表示符号表示符号关联(关联(association)actor和和use case之间的关系之间的关系 泛化泛化(generalization)actor之间或之间或use case之间的关系之间的关系 包含(包含(include)use case 之间的关系之间的关系 扩展(扩展(extend)u
25、se case 之间的关系之间的关系表表31 参与者、用例间的关系类型参与者、用例间的关系类型2023-1-3第3.27页3.5 用例图用例图v定义:定义:用例图(用例图(use case disgram)是显示一组用是显示一组用例、参与者以及它们之间关系的图。在例、参与者以及它们之间关系的图。在UML中,一个用例模型由若干个用例图描述。中,一个用例模型由若干个用例图描述。第三章第三章 用例和用例图用例和用例图2023-1-3第3.28页3.5 用例图用例图第三章第三章 用例和用例图用例和用例图2023-1-3第3.29页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图v没有
26、描述的用例就像是一本书的目录,我们没有描述的用例就像是一本书的目录,我们只知道该目录标题,并不知道该目录下的具只知道该目录标题,并不知道该目录下的具体内容是什么。体内容是什么。v在在31节中对用例的定义中,说了用例是一个节中对用例的定义中,说了用例是一个“文字描述序列文字描述序列”,是,是“动作序列的说明动作序列的说明”。因此,用例的描述是用例的主要部分,是后因此,用例的描述是用例的主要部分,是后续的交互图分析和类图分析必不可少的部分。续的交互图分析和类图分析必不可少的部分。v一般来说,用例采用自然语言描述参与者与一般来说,用例采用自然语言描述参与者与系统进行交互时双方的行为,不追求形式化系统
27、进行交互时双方的行为,不追求形式化的语言表达。的语言表达。2023-1-3第3.30页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图一、用例描述应包括的内容一、用例描述应包括的内容v用例的目标用例的目标v用例是怎么启动的用例是怎么启动的v参与者和用例之间的消息是如何传递的参与者和用例之间的消息是如何传递的v用例中除了主路径外,其他路径是什么用例中除了主路径外,其他路径是什么v用例结束后的系统状态用例结束后的系统状态v其它需要描述的内容其它需要描述的内容2023-1-3第3.31页3.6 用例的描述用例的描述 表表3.2 用例的描述格式用例的描述格式 (用例模板)(用例模板)
28、第三章第三章 用例和用例图用例和用例图描述项描述项 说明说明用例名称用例名称表明用户的意图或用例的用途,如表明用户的意图或用例的用途,如“划拨资金划拨资金”标识符标识符可选可选惟一标识符,如惟一标识符,如“UC1701”,在文档的别处可以用,在文档的别处可以用标识符来引用这个用例标识符来引用这个用例用例描述用例描述概述用例的几句话概述用例的几句话参与者参与者与此用例相关的参与者列表与此用例相关的参与者列表优先级优先级一个有序的排列,一个有序的排列,1代表优先级最高代表优先级最高状态状态可选可选用例的状态:进行中,等待审查,通过审查或未通用例的状态:进行中,等待审查,通过审查或未通过审查过审查前
29、置条件前置条件一个条件列表,如果其中包含条件,则这些条件必一个条件列表,如果其中包含条件,则这些条件必须在访问用例之前得到满足须在访问用例之前得到满足后置条件后置条件一个条件列表,如果其中包含条件,则这些条件将一个条件列表,如果其中包含条件,则这些条件将在用例完成以后得到满足在用例完成以后得到满足2023-1-3第3.32页3.6 用例的描述用例的描述表表3.2用例的描述格式用例的描述格式 (用例模板续)(用例模板续)第三章第三章 用例和用例图用例和用例图描述项描述项 说明说明基本操作流程基本操作流程描述用例中各项工作都正常进行时用例的工作方式描述用例中各项工作都正常进行时用例的工作方式可选操
30、作流程可选操作流程描述变更工作方式、出现异常功发生错误的情描述变更工作方式、出现异常功发生错误的情况下所遵循的路径况下所遵循的路径被泛化的用例被泛化的用例此用例所泛化的用例列表此用例所泛化的用例列表被包含的用例被包含的用例此用例所包含的用例列表此用例所包含的用例列表被扩展的用例被扩展的用例此用例所扩展的用例列表此用例所扩展的用例列表修改历史记录修改历史记录可选可选 关于用例的修改时间、修改原因和修改人的详关于用例的修改时间、修改原因和修改人的详细信息细信息问题问题可选可选与此用例的开发相关的问题列表与此用例的开发相关的问题列表决策决策可选可选关键决策的列表关键决策的列表,将这些决策记录下来以便
31、维将这些决策记录下来以便维护护频率频率可选可选参与者访问此用例的频率参与者访问此用例的频率.2023-1-3第3.33页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图用例名称用例名称 处理订单处理订单标识符标识符UC1701用例描述用例描述当一个订单初始化或者被查询的时候是这个当一个订单初始化或者被查询的时候是这个用例的开始用例的开始,它处理有关订单的初始化定义和它处理有关订单的初始化定义和授权等问题授权等问题,但订单业务员完成了同一个顾客但订单业务员完成了同一个顾客的对话的时候的对话的时候,它就结束了它就结束了.参与者参与者订单业务员订单业务员优先级优先级1状态状态通过审
32、查通过审查前置条件前置条件订单业务员登录进入系统订单业务员登录进入系统后置条件后置条件下订单下订单,库存数目减少库存数目减少表表3.3 用例用例”处理订单处理订单”的描述的描述2023-1-3第3.34页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图基本操作流程基本操作流程 1.顾客来订购一个吉他顾客来订购一个吉他,并且提供信用卡作为支付手段并且提供信用卡作为支付手段2.可选操作流程可选操作流程(可能有可能有4个可选操作流程个可选操作流程)顾客来订购一个吉他顾客来订购一个吉他,并且使用汇票的方式并且使用汇票的方式顾客来订购一个风琴顾客来订购一个风琴,并用信用卡支付并用信用卡
33、支付.顾客使用信用卡下订单顾客使用信用卡下订单,但那张信用卡是无效的但那张信用卡是无效的顾客来下订单顾客来下订单,但他想要的商品没有存货但他想要的商品没有存货.被泛化的用例被泛化的用例无无被包含的用例被包含的用例无无被扩展的用例被扩展的用例无无修改历史记录修改历史记录张三张三,定义基本操作流程定义基本操作流程,2019年年5月月4日日张三张三,定义可选操作流程定义可选操作流程,2019年年5月月8日日表表3.3 用例用例”处理订单处理订单”的描述的描述(续续)2023-1-3第3.35页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图三、用例描述的例子三、用例描述的例子初学者
34、在用例描述中往往容易犯下面的错误初学者在用例描述中往往容易犯下面的错误:v只描述系统的行为只描述系统的行为,没有描述参与者的行为没有描述参与者的行为v只描述参与者的行为只描述参与者的行为,没有描述系统的行为没有描述系统的行为v在用例描述中就设定对用户界面的设计的要在用例描述中就设定对用户界面的设计的要求求v描述过于冗长描述过于冗长2023-1-3第3.36页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图三、用例描述的例子三、用例描述的例子例例35 下面是一个用例描述的例子下面是一个用例描述的例子Use Case:Withdraw Cash参与者参与者:Customer主事件
35、流主事件流:(1)储户插入储户插入ATM卡卡,并键入密码并键入密码.(2)储户按储户按Withdrawal按钮按钮,并键入取款数目并键入取款数目.(3)储户取走现金、储户取走现金、ATM卡并拿走收据。卡并拿走收据。(4)储户离开储户离开这种描述的问题是这种描述的问题是:只描述了参与者的动作序列只描述了参与者的动作序列,而没有描述系统的行为而没有描述系统的行为2023-1-3第3.37页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图三、用例描述的例子三、用例描述的例子例例35 改进的描述如下改进的描述如下:Use Case:Withdraw Cash参与者参与者:Custom
36、er主事件流主事件流:(1)通过读卡机通过读卡机,储户插入储户插入ATM卡卡.(2)ATM系统从卡上读取银行系统从卡上读取银行ID、账号、加密密码、并用主银行、账号、加密密码、并用主银行系统验证银行系统验证银行ID和账号和账号.(3)储户键入密码,储户键入密码,ATM系统根据上面读出的卡上加密密码,对系统根据上面读出的卡上加密密码,对密码加以验证。密码加以验证。(4)储户按储户按FASTCASH按钮,并键入取款数量,取款数量应该是按钮,并键入取款数量,取款数量应该是5美元的倍数。美元的倍数。(5)ATM系统通知主银行系统系统通知主银行系统,传递储户账号和取款数量传递储户账号和取款数量,并接收返
37、并接收返回的确认信息和储户账户余额回的确认信息和储户账户余额.(6)ATM系统输出现金系统输出现金,ATM卡和显示账户余额和收据卡和显示账户余额和收据(7)ATM系统记录事务到日志文件系统记录事务到日志文件2023-1-3第3.38页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图三、用例描述的例子三、用例描述的例子例例36 下面是一个用例描述的片断下面是一个用例描述的片断Use Case:Withdraw Cash参与者参与者:Customer主事件流主事件流:(1)ATM系统获得系统获得ATM卡和密码卡和密码.(2)设置事务类型为设置事务类型为Withdrawal.(3)
38、ATM系统获取要提取的现金数目系统获取要提取的现金数目.(4)验证账户上是否有足够储蓄金额验证账户上是否有足够储蓄金额.(5)输出现金、数据和输出现金、数据和ATM卡。卡。(6)系统复位系统复位这种描述的问题是这种描述的问题是:只描述了只描述了ATM系统的行为系统的行为,而没有描述参与者的行为,改进的描述同例而没有描述参与者的行为,改进的描述同例3.52023-1-3第3.39页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图三、用例描述的例子三、用例描述的例子例例37 下面是一个用例描述的片断下面是一个用例描述的片断Use case:Buy Something参与者:参与者
39、:Customer主事件流:主事件流:(1)系统显示)系统显示ID and Password窗口窗口(2)顾客键入)顾客键入ID和密码,然后按和密码,然后按OK按钮按钮(3)系统验证顾客)系统验证顾客ID和密码,并显示和密码,并显示personal Information窗口窗口(4)顾客键入姓名、街道地址、城市、邮政编码、电话号码,)顾客键入姓名、街道地址、城市、邮政编码、电话号码,然后按然后按OK按钮。按钮。(5)系统验证用户是否为老顾客。)系统验证用户是否为老顾客。(6)系统显示可以卖的商品列表。)系统显示可以卖的商品列表。(7)顾客在准备购买的商品图片上单击,并在图片旁边输入)顾客在准
40、备购买的商品图片上单击,并在图片旁边输入要购买的数量。选购商品完毕后按要购买的数量。选购商品完毕后按Done按钮。按钮。(8)系统通过库存系统验证要购买的商品是否有足够库存。)系统通过库存系统验证要购买的商品是否有足够库存。2023-1-3第3.40页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图三、用例描述的例子三、用例描述的例子例例37 改进的描述如下:改进的描述如下:Use case:Buy Something参与者:参与者:Customer主事件流:主事件流:(1)顾客使用)顾客使用ID and Password进入系统。进入系统。(2)系统验证顾客身份。)系统验证
41、顾客身份。(3)顾客提供姓名、地址、电话号码。)顾客提供姓名、地址、电话号码。(4)系统验证顾客是否为老顾客。)系统验证顾客是否为老顾客。(5)顾客选择要购买的商品和数量。)顾客选择要购买的商品和数量。(6)系统通过库存系统验证要购买的商品是否有足)系统通过库存系统验证要购买的商品是否有足够库存。够库存。2023-1-3第3.41页3.6 用例的描述用例的描述第三章第三章 用例和用例图用例和用例图三、用例描述的例子三、用例描述的例子例例38 下面是一个用例描述的片断下面是一个用例描述的片断Use Case:Buy Something参与者:参与者:Customer主事件流:主事件流:(1)顾客
42、使用)顾客使用ID和密码进入系统。和密码进入系统。(2)系统验证顾客身份)系统验证顾客身份(3)顾客提供姓名)顾客提供姓名(4)顾客提供地址)顾客提供地址(5)顾客提供电话号码)顾客提供电话号码(6)顾客选取商品)顾客选取商品(7)顾客确定商品的数量)顾客确定商品的数量(8)系统验证顾客是否为老顾客。)系统验证顾客是否为老顾客。(9)系统打开到库存系统的连接)系统打开到库存系统的连接(10)系统通过库存系统请求当前库存量。)系统通过库存系统请求当前库存量。(11)库存系统返回当前库存量。)库存系统返回当前库存量。(12)系统验证购买商品的数量是否少于库存量。)系统验证购买商品的数量是否少于库存
43、量。顾客提供个人信息(包括姓名、地址、电话号码),顾客提供个人信息(包括姓名、地址、电话号码),选择要购买的商品及数量选择要购买的商品及数量系统使用库存系统验证要购系统使用库存系统验证要购买商品的数量是否少于库存量买商品的数量是否少于库存量2023-1-3第3.42页3.7 寻找用例的方法寻找用例的方法第三章第三章 用例和用例图用例和用例图一、用例分析的步骤可以按下面的顺序进行:一、用例分析的步骤可以按下面的顺序进行:(1)找出系统外部的参与者和外部系统,确定系统)找出系统外部的参与者和外部系统,确定系统的边界和范围;的边界和范围;(2)确定每一个参与者所期望的系统行为;)确定每一个参与者所期
44、望的系统行为;(3)把这些系统行为命名为用例;)把这些系统行为命名为用例;(4)使用泛化、包含、扩展等关系处理系统行为的)使用泛化、包含、扩展等关系处理系统行为的公共部分或变更部分;公共部分或变更部分;(5)编制每一个用例的脚本;)编制每一个用例的脚本;(6)绘制用例图)绘制用例图(7)区分主事件流和异常事件流,如果需要,可以)区分主事件流和异常事件流,如果需要,可以把表示异常的事件流作为单独的用例处理;把表示异常的事件流作为单独的用例处理;(8)细化用例图,解决用例间的重复与冲突问题。)细化用例图,解决用例间的重复与冲突问题。用例实质上是系统行为用例实质上是系统行为2023-1-3第3.43
45、页3.7 寻找用例的方法寻找用例的方法第三章第三章 用例和用例图用例和用例图二、发现用例的启发性原则:二、发现用例的启发性原则:v和用户交互和用户交互v 把自己当作参与者,与设想中的系统交互把自己当作参与者,与设想中的系统交互v确定用例和参与者不能截然分开确定用例和参与者不能截然分开三、三、Jacobson提出的帮助分析的方法提出的帮助分析的方法v参与者的主要任务是什么?参与者的主要任务是什么?v参与者需要了解系统的什么信息?参与者需要了解系统的什么信息?v参与者是否需要把系统外部的变化通知系统?参与者是否需要把系统外部的变化通知系统?v参与者是否希望系统把异常情况的变化通知自己?参与者是否希
46、望系统把异常情况的变化通知自己?寻找用例依赖于分析人员的个人经验和领域知识寻找用例依赖于分析人员的个人经验和领域知识2023-1-3第3.44页3.8 常见问题分析常见问题分析v什么是粒度(什么是粒度(granularity):):粒度粒度,顾名思义,就是取不同大小的对象。也,顾名思义,就是取不同大小的对象。也就是说,比如就是说,比如,将原来将原来“粗粒度粗粒度”的大对象分的大对象分割为若干割为若干“细粒度细粒度”的小对象,或者把若干的小对象,或者把若干小对象合并成一个大的粗粒度对象,都是粒小对象合并成一个大的粗粒度对象,都是粒度之间的转换计算度之间的转换计算.(摘自博客园摘自博客园)第三章第
47、三章 用例和用例图用例和用例图2023-1-3第3.45页3.8 常见问题分析常见问题分析v(1)用例的粒度问题:)用例的粒度问题:如果用例粒度很大,那么得到的用例数就会如果用例粒度很大,那么得到的用例数就会很少,如果用例粒度很小,那么得到的用例很少,如果用例粒度很小,那么得到的用例数就会很多。那么用例数目多少比较合适?数就会很多。那么用例数目多少比较合适?不同的人会得出不同的答案。不同的人会得出不同的答案。对一个对一个10人年的项目,人年的项目,Ivar Jacobson认为认为需要大约需要大约20个用例,而在一个相同规模的项个用例,而在一个相同规模的项目中,目中,Martin Fowler
48、则用了则用了100多个用例。多个用例。第三章第三章 用例和用例图用例和用例图2023-1-3第3.46页3.8 常见问题分析常见问题分析v(2)在一个系统中,有几个相似的功能,是将它们放在)在一个系统中,有几个相似的功能,是将它们放在同一个用例中,还是分成几个用例?同一个用例中,还是分成几个用例?例:例:假设在学生档案管理中,管理员经常要做假设在学生档案管理中,管理员经常要做3件事:增件事:增加一条学生记录、修改一条学生记录、删除一条学生记录。加一条学生记录、修改一条学生记录、删除一条学生记录。在下面的两种方法中,哪种更合适?在下面的两种方法中,哪种更合适?方法方法1:用例图如图:用例图如图3
49、11所示,所示,并分成并分成3个脚本,分别画个脚本,分别画3个交互图。个交互图。脚本脚本1为增加学生记录,脚本为增加学生记录,脚本2为修改学生记录,脚本为修改学生记录,脚本3为删除学生记录为删除学生记录第三章第三章 用例和用例图用例和用例图N e w U seC a seN e w C la ss管理员管理员学生记录管理学生记录管理图图311 3件事用一个用例件事用一个用例2023-1-3第3.47页3.8 常见问题分析常见问题分析方法方法2:用例图如图:用例图如图312所示,所示,以后每个画一个交互图以后每个画一个交互图第三章第三章 用例和用例图用例和用例图图图312 3件事用件事用3个用例
50、个用例NewUseCaseNewUseCase2NewU seCase3NewClass管理员管理员增加学生记录增加学生记录修改学生记录修改学生记录删除学生记录删除学生记录方法方法1是从捕获用户需求是从捕获用户需求的角度考虑设计用例的的角度考虑设计用例的方法方法2是从数据处理的角是从数据处理的角度考虑设计用例的度考虑设计用例的从需求分析的角度,方从需求分析的角度,方法法1比较好,这样不会忽比较好,这样不会忽略了用户的真正需求略了用户的真正需求2023-1-3第3.48页3.8 常见问题分析常见问题分析(3)三层结构如何用用例表示?)三层结构如何用用例表示?第三章第三章 用例和用例图用例和用例图