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