资源描述
用例建模1用例建模1用例建模用例建模用例建模概念用例建模过程用例建模精讲建模工具介绍2用例建模用例建模概念2用例模型的表示用例模型的表示-用例用例图银联银行客户自动提款机(ATM)转账转账日常日常维护维护系统维护人员 存款存款收取存款收取存款 柜员取款取款3用例模型的表示-用例图银联银行客户自动提款机(ATM)转账系系统统系系统统是指待开是指待开发发的任何事物,包括的任何事物,包括软软件、硬件或者件、硬件或者过过程。程。系系统边统边界界:一个系一个系统统所包含的所有系所包含的所有系统统成分与系成分与系统统以外各种事物的分界以外各种事物的分界线线 系系统边统边界会界会对对用例以及用例以及Actor的定的定义义有所影响有所影响 考考虑虑用于零售店用于零售店销销售管理的系售管理的系统统的用例的用例图图 :4零售店销售管理零售店销售管理系统系统系统系统是指待开发的任何事物,包括软件、硬件或者过程。4零售系系统边界定界定义之一之一5系统边界定义之一5系系统边界定界定义之二之二6系统边界定义之二6系系统边界定界定义之三之三7系统边界定义之三7用例用例图的主要元素的主要元素参与者(参与者(Actor)与系与系统统交互的人或外部系交互的人或外部系统统用例(用例(Use case)系系统为统为参与者提供的有价参与者提供的有价值值的服的服务务功能功能关关联联(Association)用例用例图图中用例与参与者之中用例与参与者之间间的交互关系的交互关系Use CaseActorActor8用例图的主要元素参与者(Actor)用例(Use case)参与者的定参与者的定义:关注角色:关注角色 与系统交互的人与系统交互的人 与系统交互的硬件组件与系统交互的硬件组件 或者其他的外部系统或者其他的外部系统关注的重点是所承担的关注的重点是所承担的“角色角色”参与者的名参与者的名字字要明确定义其角色要明确定义其角色9参与者的定义:关注角色 与系统交互的人关注的重点是所承担的参与者定参与者定义与角色划分与角色划分张跃和和李玫李玫都都具有学生角色具有学生角色张跃同同时时也具也具有教授的角色有教授的角色学生学生教教师注册注册课课程程提交成提交成绩绩韩蕾蕾:数学系的数学系的教教师 软件件学院的博士生学院的博士生李明李明:软软件学院本科生件学院本科生10参与者定义与角色划分张跃和李玫都具有学生角色张跃同时也具有教 定定义义一个参与者要用到的一个参与者要用到的系系统统功能功能 描述系描述系统为实现统为实现参与者价参与者价值值所开展的所开展的行行为为序列序列 对对参与者与系参与者与系统统之之间间的的交互活交互活动动进进行建模行建模 从特定的用从特定的用户户角度出角度出发发是完整的,是完整的,实现实现特定用特定用户户价价值值的事件的事件流流11定义系系统统的一系列行行为为,通过此可为参与者参与者提供有价有价值值且可可观测观测的结果。一个用例一个用例Use Case Name什么是用例什么是用例11定义系统的一系列行为,通过此可为参与者提供有价值且可观测交互交互-关关联(Association)Actor 1Actor 2Actor 3Use Case 参与者与用例之参与者与用例之间间的交互通道的交互通道 用一用一条条直直线线表示交互表示交互关关联联 有箭有箭头头的关的关联联指出是指出是谁发谁发起的交互起的交互 没有箭没有箭头则头则表明双方都可以表明双方都可以发发起交互起交互12交互-关联(Association)Actor 1Acto用例建型的步骤(1)找出系统外部的参与者和外部系统,确定系统的边界和范围;(2)确定每一个参与者所期望的系统行为;(3)把这些系统行为命名为Use Case;(4)使用泛化、包含、扩展等关系处理系统行为的公共或变更部分;(5)编制每一个Use Case的脚本;(6)绘制Use Case图;(7)区分主事件流和异常情况的事件流,可以把表示异常情况的事件流作为单独的Use Case处理;(8)细化Use Case图,解决Use Case间的重复与冲突问题。13用例建型的步骤(1)找出系统外部的参与者和外部系统,确定系寻找参与者找参与者谁谁使用系使用系统统的功能?的功能?谁谁需要系需要系统统支持他支持他们们的日常工作?的日常工作?谁谁来来维护维护、管理系、管理系统统使其正常工作?使其正常工作?哪些其他系哪些其他系统统使用使用该该系系统统?系系统统需要与其他哪些系需要与其他哪些系统统交互?交互?系系统统需要控制哪些硬件?需要控制哪些硬件?对对系系统产统产生生结结果感果感兴兴趣的是哪些人或物?趣的是哪些人或物?是否有事情在是否有事情在预计预计的的时间时间自自动发动发生?生?14寻找参与者14参与者的描述参与者的描述15参与者参与者规格格说明明参与者名称参与者名称:顾客 是否抽象参与者是否抽象参与者:否简要描述要描述:使用ATM系统提取现金、转移资金和存款的所有用户,这些用户持有相应的银行卡且知道银行卡对应账号的密码。参与者的描述15参与者规格说明参与者名称:顾客 参与者建模的参与者建模的检查项 是否找全所有的参与者?是否是否找全所有的参与者?是否对对系系统环统环境中所有的角境中所有的角色色进进行了描述和建模?行了描述和建模?每个参与者是否至少与一个用例每个参与者是否至少与一个用例发发生了交互?生了交互?是否可以是否可以为为每一个角色找到至少两个每一个角色找到至少两个实实例?例?不同参与者与系不同参与者与系统统的交互是否一致,扮演的角色是否的交互是否一致,扮演的角色是否相似?如果有,相似?如果有,则应该则应该要合并要合并这这些参与者作些参与者作为为同一种同一种角色角色 16参与者建模的检查项 是否找全所有的参与者?是否对系统环境中寻找用例找用例参与者目目标标2我想通我想通过这过这个系个系统统达到什么目的?达到什么目的?目目标标1基本策略:基本策略:把自己当作参与者,与把自己当作参与者,与设想中的系想中的系统进行交互。行交互。注意:注意:寻寻找用例和找用例和寻寻找参与者的找参与者的过过程是程是不能截然分开的不能截然分开的17寻找用例参与者目标 2我想通过这个系统达到什么目的?目标 1识别用例用例参与者希望系参与者希望系统统提供哪些功能?提供哪些功能?系系统统存存储储信息信息吗吗?参与者将要?参与者将要创创建、建、读读取、更新或取、更新或删删除什么信息?除什么信息?系系统统是否需要把自身内部状是否需要把自身内部状态态的的变变化通知化通知给给参与者?参与者?系系统统必必须须知道哪些外部事件?参与者如何通知系知道哪些外部事件?参与者如何通知系统这统这些事件?些事件?系系统统需要需要进进行哪些行哪些维护维护工作?工作?18识别用例参与者希望系统提供哪些功能?18用例的描述用例的描述19用例用例简简述述:一段简洁的摘要,主要描述用例的成功场景 下下订单:客户带着要购买的货物到收款处,收银员使用POS机扫描记录每一种预购买的货物。系统计算总价并打印清单。客户付款,系统验证并保存销售记录。系统更新库存,客户得到收条并带着货物离开。用例的描述19用例简述:用例的描述用例的描述20用例的描述20用例的描述用例的描述21客客户代表代表系系统记帐系系统 1.收到一个取消订单的请求 2.输入订单的标识号 4.选择取消 3.显示订单内容 5.给该订单打上取消标记 6.向客户账号增加订单 支付的资金用例的描述21客户代表系统记帐系统 1.收到一个取消订单用例建模用例建模过程中的程中的检查项 用用例例建建模模是是为了了表表示示系系统的的行行为。通通过模模型型可可以以很很容容易理解系易理解系统进行的操作行的操作 应该识别出所有的用例,用来表达所有的需求。出所有的用例,用来表达所有的需求。系系统的任何一个特性都可以找到的任何一个特性都可以找到对应的用例的用例 用用例例模模型型并并不不包包含含多多余余的的行行为;所所有有的的用用例例可可以以追追溯溯到系到系统的功能性需求作的功能性需求作为验证。去掉所有的去掉所有的CRUD类的用例的用例创创建建(Create),查找(Retrieve),更新(Update),删除(Delete)22用例建模过程中的检查项 用例建模是为了表示系统的行为。通过功能分解功能分解选择转选择转入入账账号号选择选择“查询查询余余额额”选择选择“取款取款”23功能分解选择转入账号选择“查询余额”选择“取款”23走出功能分解:正确的用例建模走出功能分解:正确的用例建模转账(Transfer Funds)24走出功能分解:正确的用例建模转账24如何避免功能性分解如何避免功能性分解 问题现象象 非常非常细小的用例小的用例 用例用例过多多 没有没有实际价价值的用例的用例 通通过底底层操作操作进行命名行命名“操作操作”+“对象象”“功能功能”+“数据数据”例如:例如:“插入卡片插入卡片”修改思路:修改思路:寻寻找更大的找更大的应应用用场场景景“为为什么要构建什么要构建这这个系个系统统?”从一个用从一个用户户的角度出的角度出发发“用用户户希望达到什么目的希望达到什么目的?”“这这个用例可以个用例可以满满足足谁谁的目的目标标?”“这这个用例的意个用例的意义义是什么是什么?有什么价有什么价值值?”“这这个用例背后的用个用例背后的用户户故事是什么故事是什么?”25如何避免功能性分解 问题现象修改思路:寻找更大的应用场景何何时使用包含关系使用包含关系 当多个用例有共享行当多个用例有共享行为时为时,使用包含关系,使用包含关系 为为共享行共享行为单为单独独创创建用例,被相关用例建用例,被相关用例“包含包含”26何时使用包含关系 当多个用例有共享行为时,使用包含关系26何何时使用使用扩展关系展关系 一个用例与另外一个用例近似,只有少一个用例与另外一个用例近似,只有少许额许额外的活外的活动动 将代表普遍或基本行将代表普遍或基本行为为的情况定的情况定义为义为一个用例一个用例 将特殊的、例外的部分定将特殊的、例外的部分定义为扩义为扩展用例展用例27何时使用扩展关系 一个用例与另外一个用例近似,只有少许额外详细的用例的用例规约28详细的用例规约28顺序序图举例例 顺序图用来刻画系统实现某个功能的必要步骤小明小明:学生学生选课选课登登记记表表选课选课管理管理员员线线性代数性代数1:填写个人信息填写个人信息2:提交提交3:将将马马小跳加入小跳加入线线代代选课选课名名单单 4:添加添加马马小跳小跳 5:还还有位置有位置吗吗?6:如果有,添加如果有,添加马马小跳小跳线线性代数性代数A段段顺序图举例 顺序图用来刻画系统实现某个功能的必要步骤小明:顺序序图建模元素建模元素-对象(象(Object)及其生命)及其生命线(Lifeline)对对象象以某种以某种角色角色参与交互参与交互可以是人可以是人、物物、其他系其他系统统或者子系或者子系统统 控制焦点控制焦点/激活期激活期(FocusofControl/Activation):表示:表示对对象象进进行操作的行操作的时间时间片段片段 生命生命线线:表示:表示对对象存在的象存在的时间时间顺序图建模元素-对象(Object)及其生命线(Lifel顺序序图建模元素建模元素-消息(消息(Message)消消息息(Message)用用于于描描述述对象象间的的交交互互操操作作和和值传递过程程m消息类型消息类型:mSynchronousSynchronous同步消息(同步消息(调用消息)用消息)mAsynchronousAsynchronous 异步消息异步消息mReturn Return 返回消息返回消息m Self-message Self-message 自关自关联消息消息m Time-out Time-out 超超时等待等待mUncommittedUncommittedBalkingBalking 阻塞阻塞顺序图建模元素-消息(Message)消息(Message绘绘制制顺顺序序图图1 1.在顺序图顶端绘制矩形框,定义参与交互的在顺序图顶端绘制矩形框,定义参与交互的类实例类实例(对象)名;(对象)名;2.2.在每个对象下面绘制竖直虚线,表示该对象的在每个对象下面绘制竖直虚线,表示该对象的生命线生命线;3.3.在对象间添加箭头表示各种类型的在对象间添加箭头表示各种类型的消息消息,跟踪对象间的控制流;,跟踪对象间的控制流;4.4.生命线加竖直矩形定义对象生命线加竖直矩形定义对象激活期激活期,表明对象正在执行某操作;表明对象正在执行某操作;5.5.根据需要添加根据需要添加框框的组合与关联,表示复杂的控制结构。的组合与关联,表示复杂的控制结构。绘制顺序图1.在顺序图顶端绘制矩形框,定义参与交互的类实绘绘制制顺顺序序图图绘制顺序图顺序序图的作用的作用 帮助分析人帮助分析人员对员对照照检查检查用例中描述用例中描述的的需求是否已需求是否已经经落落实给实给具体具体对对象去象去实现实现 提醒分析人提醒分析人员员去去补补充充遗遗漏的漏的对对象象类类或操作或操作 帮助分析人帮助分析人员识别员识别哪些哪些对对象是主象是主动对动对象象 通通过对过对一个特定的一个特定的对对象群体的象群体的动态动态行行为建模,深入地建模,深入地理解理解对对象之象之间间的交互的交互顺序图的作用 帮助分析人员对照检查用例中描述的需求是否已经 所有的所有的对对象都有象都有“状状态态”对对象存在或者不存在象存在或者不存在 对对象不存在也是一种状象不存在也是一种状态态 如果如果对对象存在,象存在,则则具有相具有相应应表示其属性的表示其属性的值值 每一种状每一种状态态表示一种可能的状表示一种可能的状态赋值态赋值 对于大部分于大部分对象而言,状象而言,状态空空间是非常是非常庞大的大的 状状态空空间大小是大小是对象每个属性取象每个属性取值空空间的乘的乘积加加1 1 例如例如.具有具有5 5个布个布尔值属性的属性的对象有象有 2 25 5+1+1 个状个状态 例如例如.具有具有5 5个整数个整数值属性的属性的对象有象有(maxint)(maxint)5 5+1+1个状个状态 例如例如.具有具有5 5个个实数数值属性的属性的对象具有?象具有?个状个状态 如果忽略如果忽略计算机表示的局限性,状算机表示的局限性,状态空空间是无限的是无限的 状状态态建模建模-什么是状什么是状态态?所有的对象都有“状态”对于大部分对象而言,状态空间是状状态的抽象表示的抽象表示 但往往状但往往状态态空空间间中的局部更有探究的价中的局部更有探究的价值值 有一些状有一些状态态是不可能出是不可能出现现的状的状态态 整数或整数或实实数数值值属性往往只在一定范属性往往只在一定范围围内取内取值值 通常,我通常,我们们只关注特定只关注特定约约束下的束下的对对象及其象及其行行为为 例如例如,对对于年于年龄龄,我我们经们经常常选择选择以下的范以下的范围围:age 65例如例如,对对于于费费用信息用信息,我我们们更关注的更关注的约约束划分束划分为为:cost budget,cost=0,cost budget,cost(budget+10%)状态的抽象表示 但往往状态空间中的局部更有探究的价值状状态图建模建模 建模元素建模元素 状状态 事件事件 状状态转移移 状状态图的的绘制制empty1 itemPush()Push()Pop()Pop()new()new()状状态图态图用来表示一个用来表示一个类类的全生命周期的全生命周期过过程程状态图建模 建模元素empty1 itemPush()P状状态(State)定定义义:一个一个对对象生命期的一个象生命期的一个阶阶段段,该阶该阶段中段中对对象要象要满满足足一些特定的条件一些特定的条件、执执行特定的活行特定的活动动或等待某个或等待某个(些些)事事件的件的发发生生 体体现为对现为对象属性的取象属性的取值值 包含状包含状态态入口或出口入口或出口、行行为为描述描述 从不同的抽象从不同的抽象层层次分析次分析对对象,因此其状象,因此其状态态是可嵌是可嵌套(套(组组合)的合)的 在在给给定的定的场场景下,景下,对对象状象状态态是确定的,可是确定的,可满满足或足或不不满满足某个状足某个状态态状态(State)定义:状状态迁移迁移迁移包括五部分:迁移包括五部分:源状源状态态(source(source state)state)、触、触发发事件事件 (event(event trigger),trigger),警戒条件警戒条件(guard(guard condition),condition),动动作作(action),(action),目目标标状状态态(target(target state).state).源状态目标状态事件名事件名(用逗号分隔的参数表用逗号分隔的参数表)警戒条件警戒条件 /动动作表达式作表达式 对对于于给给定的状定的状态态,最,最终终只能只能产产生一个迁移,因此从相同的生一个迁移,因此从相同的状状态态出来的、事件相同的几个迁移之出来的、事件相同的几个迁移之间间的条件的条件应该应该是互斥是互斥的。的。状态迁移迁移包括五部分:源状态目标状态事件名(用逗号分事件(事件(Events)事件事件(Events)(Events)的意的意义义在于系在于系统统需要了解正在需要了解正在发发生什么生什么 状状态图态图中,事件中,事件仅仅需和系需和系统统或当前建模的或当前建模的对对象相关象相关 从系从系统统角度出角度出发发,事件必,事件必须须建模成一个瞬建模成一个瞬间间可完成的可完成的动动作作 例如例如.完成工作,考完成工作,考试试未通未通过过,系,系统统崩崩溃溃 在在OOD(OOD(面向面向对对象象设计设计)中通中通过传递过传递消息的方式消息的方式实现实现事件事件 在在UMLUML中,有四种中,有四种类类型的事件型的事件 变变更事件更事件(Change(Change events)events)当当给给定条件成立定条件成立时时就会就会发发生生变变更事件更事件 调调用事件用事件(Call(Call events)events)当当给给定定对对象的操作被象的操作被调调用用执执行行时时会会发发生生调调用事件用事件 时间时间事件事件(Elapsed-time(Elapsed-time events)events)表明表明时间时间段段过过去,或某个特殊去,或某个特殊时间时间点的触点的触发发 信号事件信号事件(Signal(Signal events)events)当当给给定定对对象收到某象收到某实时实时信号信号事件(Events)事件(Events)的意义在于系统需例:例:订单处理理Orderdo:checkitemStartgetnextitemNotallitemscheckedCheckingAllitemschecked&allitemsavailable Dispatchingdo:initiatedeliveryWaitingItemReceivedsomeitemsnotinstockAllitemschecked&someitemsnotinstockDelivered/getfirstitemItemReceivedallitemsavailableDelivered例:订单处理Orderdo:check itemStart
展开阅读全文