1UML面向对象技术教程第三章用例及用例图2本章中所涉及的内容用例参与者脚本用例间关系(泛化、包含、扩展、三种关系的比较)用例图用例的描述寻找用例的方法常见问题的分析小结3§3.1用例用例(usecase)用例就是对包含变量在内的一组活动序列的描述,系统执行这些活动,并产生传递特定参与者的价值的可观察结果。定义一:用例是对一个活动者(actor)使用系统的一项功能时所进行的交互过程的一个文字描述。定义二:用例是系统、子系统或类和外部的参与者(actor)交互动作序列的说明,包括可选的动作序列和会出现异常的动作序列。如何在UML中表示用例:用例用一个椭圆来表示,用例名下在下面,其用例名往往是一个动宾结构。如“取钱”是一个用例,它的表示如下:取钱WithDraweMoney用例名4§3.1用例(续)用例的特点:1、从系统外看系统功能。2、描述一个系统可见需求,对应于一个具体的用户目标。3、是系统行为的动态描述,属于动态建模范畴。软件开发过程是由用例驱动的。用例将软件开发过程中各个阶段捆绑在一起,以实现功能的系统行为作为所达成的契约。例如:来看银行对外业务系统的简单描述:查询账户余额列出业务菜单项转账存款与支付登录与退出系统5用例是UML建模过程中一个非常重要概念,它处于核心位置。不能指望在一个系统分析中列出全部的用例。用例是外部可见的一个系统功能单元。用途在于不揭示系统内部构造的情况下定义一组连贯的行为。用例可大可小,但它必须是对一个具体的用户实现目标的完整描述。用例的动态执行过程在UML中可以交互表现在‘用例图’、‘顺序图’、‘协作图’或文字描述来表示。功能的执行过程用“类”之间的协作来实现。§3.1用例(续二)6寻找用例及识别用例的方法参与者希望系统提供什么功能?参与者是否会读取、创建、修改、删除、存储系统的某种信息?若是又是如何完成这些操作?参与者是否会将外部的某些事件通知系统的?系统中发生的事件是否会通知参与者?是否存在影响系统的外部事件?§3.1用例(续三)7参与者是系统外部的一个实体(人和事物)参与者的种类:系统用户、系统管理员、与所建造的系统相关的其他系统和一些可以运行的进程。在UML中的有三种表现形式:1、图标形式:2、符号形式:(Icon)(Label)3、修饰形式:为二者的合成(Decoration)§3.2参与者(actor)参与者名actorActor1Actor18参与者事实上就是一个类。继承关系泛化关系(在系统分析阶段是相等的)参与者可以被一组定义它状态的属性加以描述,代表一个角色。参与者的重要性有分级:主要角色、次要角色参与者的性质有主动参与(执行主要功能)、被动参与(执行次要功能)。§3.2参与者(actor)续参与者父类参与者子类9参与者也是类,因此它拥有与类相同的关系主要是继承(泛化)关系。参与者之间大量地反映出的“权限”关系。公司管理系统参与者之间的关系职员人事经理销售经理销售管理人事管理常规操作10参与者之间的关系的泛化职员人事经理销售经理销售管理人事管理常规操作将销售经理与人事经理看成是特殊的参与者,不仅有职员的功能,还有其特殊职务所赋予的功能,是职员的泛化。11系统开发出来后,是谁使用系统的主要功能。谁需要借助系统来完成日常工作。系统需要从哪些人或其他系统中获取数据。系统会为哪些人或其他系统提供数据。系统会与哪些系统交互?这些系统分为两类,一是该系统要使用的系统,二是启动该系统的系统,包括其他软件。系统由谁来维护和管理的,以保证系统处于工作状态?系统控制的硬件设备有哪些?谁对系统产生的结果感兴趣?寻找参与者的参考方法12§3.3脚本(scenario)脚本又称为情景、场景、情节、剧本等在UML中,脚本贯穿用例的一条单一路径。脚本的定义:脚本是用例的实例(instance)。脚本与用例之间是对象与类的关系。例如:针对‘取钱’的用例,脚本就会有1、正常完成取钱的脚本。2、账户拒绝、取不出钱的处理脚本。3、取出钱不对后的处理脚本。但是有1、2、3、…构成了一个用例。脚本的描述:一个脚本是用具体的文字加以描述的。13针对用例的描述要遵循的几个要点:清楚地确定系统的边界。用标准模板书写用例说明。关注用例的真正目的。不能将用例说明与用户接口设计相混淆。实现使用例交互与用户接口之间的松散耦合。不要在用例与用户接口之间建立通信。§3.4用例间关系14用例之间关系有以下几种:关系所表示的功能在UML中表示法关联参与者与用例之间通信扩展在基础用例上插入扩展部分泛化表示用例间的一般和特殊关系(包含参与者之间的泛化表示方法)包含在基础用例上插入附加的行为______________________________________________§3.4用例间关系(续)includeextend15关联关系(association)用来描述参与者与用例之间的通信。通俗地讲就是参与者与用例之间所形成的关系。§3.4用例间关系(续二)参与者用例16泛化(generalization)代表一般和特殊的关系。例如:付款、订票等。§3.4.1泛化关系付款现金付款转账付款父用例子用例,它继承了父用例的行为和含义,同时也可以增加新行为在UML中泛化关系的表示,由子用例指向父用例17包含(include)基本用例依赖于包含用例。代表两个用例之间的关系,其中一个用例(基本用例baseusecase)的行为包含另一个用例(包含用例inclusionusecase)的行为的关系。例子一:§3.4.2包含关系确认转账取款查询余额18例子二:从基本用例指向包含用例。基本用例:ATMSystem包含用例:IdentifyCustomer;ValidateAccount包含用例就是基础用例的一部分,基础用例的执行应该必然引起被包含用例的执行。§3.4.2包含关系(续)ATMsystemValidateAccountIdentifyCustomerincludeinclude19扩展关系(extend)扩展用例依赖于基本用例。类似于泛化关系,一个用例也可以被定义为基本用例的增量扩展,成为扩展关系。基本用例必须声明若干个扩展点(extensionpoint),而扩展用例只能在这些扩展点上增加新的行为和含义。§3.4.3扩展关系基本用例扩展用例1扩展用例220一个用例相对于包含和扩展关系来讲是变换的。例如:网上买东西§3.4.3扩展关系(续)CustomerBuyMerchandiseAddOrdertoWarehouseSyatemBrowseWebSiteextendinclude对应于包含关系来讲是基本用例对应于扩展关系来讲是扩展用例对应于包含关系来讲是基本用例对应于扩展关系来讲是扩展用例对应于包含关系来讲是包含用例21例如:还书的扩展用例借书学生还书缴纳过期或破损罚款22关系是模型元素之间的语义联系。关联是两个或多个类元(classfier)之间的关系类元包括:类、参与者、组件、数据类型、接口、结点、信号、子系统、用例等,在UML中用表示关联。泛化表示的是两个类元之间(通用和特殊)的关系。二者的结构和行为上一致,其特殊类元包含更多信息。在UML中用表示泛化,特殊指向通用。依赖关系的二种形式:包含和扩展依赖是指两个元素或元素类集之间(行为涵盖)的关系。它们之间存在依赖关系,被依赖元素目标元素,依赖元素源元素,源元素随目标元素改变而调整。包含:基本指向包含,UML中用表示。扩展:扩展指向基本,UML中用表示。§3.4.4用例的泛化、包含、扩展关系的比较includeextend23显示一组用例、参与者以及它们之间关系的图。在UML中,由若干个用例图组成一组用例模型。用例图又称为‘用户模型图’,属于OOA的第一步。是系统功能细节的最高形式。只关注系统功能不关心内部实现细节。教材上的用例图例子可见P29中图3.9金融贸易系统用例图,这个例子是使用RationalRose2003绘制的。例子:银行日常业务用例图:§3.5用例图(usecasediagram)客户登陆系统存款取款查询余额修改密码转账退出系统24用例需要详细的用例描述,是图无法完整地表现细节。用例是目录,描述是对用例的内容说明,因此用例描述才是用例的主要部分。用例描述不追求形式化语言,是自然语言描述。描述的是参与者与系统之间进行交互式时双方的行为。用例描述总结出的大致原则:用例的目标?怎样启动用例?参与者与用例之间的消息如何传递?用例的各种路径?用例结束时的系统状态?其他描述,备注等。用例描述的要求为充分。§3.6用例的描述25§3.6用例的描述(续)p30表3.2用例的描述格式(参考的描述问题样本)p31表3.3用例处理订单的描述(参考的具体)P31例3.5WithdrawCase的用例描述(缺少系统行为)p32例3.6WithdrawCase的用例描述(缺少参与者行为)p32例3.7Buysomething的用例描述(界面描述过于详细)p33例3.8Buysomething的用例描述(描述冗长,应合并)由以上例子看出:其用例描述并无一个固定的模式可循,各自有理解和侧重,关键是要多加练习。26用例分析可遵循的步骤:1、找出系统外部的参与者和外部系统,确定系统的边界;2、确定每一个参与者所期望的系统行为;3、命名这些系统行为为用例;4、使用泛化\包含\扩展关系处理系统行为的公共或变更部分;5、编制每一个用例的脚本;6、绘制用例图;7、区分主事件流和异常事件流,单独处理异常事件流用例;8、细化用例图,去掉重复与冲突;用‘启发性原则’检验用例分析的方法:和用户交互和系统交互参与者与用例的关系不可分割。§3.7寻找用例的方法27§3.8常见问题分析问题:同学们自己看书即可,不再赘述。根据看书关注思考一下问题?1、用例的粒度问题?2、组合用例还是分解用例?并注意着重理解细化用例与合并用例。28用例驱动的方法论。用例是各种交互的动作序列之间的说明与描述。用例的描述、表示与命名方法、规律。用例描述的是系统功能性的需求。理解用例之间相互关系(泛化、包含、扩展)。脚本是用例的实例。参与者在系统中的含义。参与者之间同样有泛化关系。用例描述是用例的主要部分。用例描述无统一的标准。用例分析结果与分析人员的水平与领域知识相关§3.9第三章用例章节小结29几个常见的用例图例子人事管理系统用例图人事管理干部查询人事信息生成统计报表管理人事关系调动人事关系评定职称聘任员工奖惩员工提供数据输出统计表财务系统30描述现金购买商品的用例图:需求描述:顾客选择商品,带选好的商品到收银台,收银员扫描每件商品标识号(不正确报错),系统查询商品价格并将这些商品信息汇总成一个交易,一旦扫描完全部商品收银员告诉系统商品统计完成,系统将计算并打印总销售金额,收银员告诉顾客应付多少金额,顾客用现金支付(如现金不够,收银员取消此次交易),收银员记录收到的现金总额,系统显示应找金额并打印收据,收银员找零并将收据交给顾客,当用户带着商品离开时,用例结束。1、商场系统用例图查询商品信息商场管理员打印交易总额打印收据报错显示找零计算交易总额31商场收银员的用例图取消交易收银员扫描商品告诉商品统计完成给收据告诉应付账款找零收款32顾客的用例图选择商品顾客去收银台支付金额收回余额离开33第三章用例图--练习题:试画出学院班级管理系统的用例图。用例有:登录;找回密码;查看、修改、删除、录入班级基本信息,参与者有管理员与系院领导。试画出学生成绩管理的用例图。用例有:登录;找回密码;录入、修改、保存、查询、删除成绩,参与者有教师与学生。试画出网上选课系统的用例图。用例有:登录;找回密码;查看课程信息;按课程编号查询;按课程名查询;选择课程;删除已选课程;维护课程信息;参与者