《用例驱动的需求分析.pptx》由会员分享,可在线阅读,更多相关《用例驱动的需求分析.pptx(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、什么是用例什么是用例(Use Case)?用例(Use Case):表示系统所提供的服务或可执行的某种行为 定义了系统是如何被参与者所使用的,描述了参与者为了使用系统所提供的某一完整功能而与系统之间发生的一段“对话”。用例的概念在1986年由Ivar Jacobson正式提出之后被广泛接受,迅速发展,已成为OO、UML、RUP的标准规范和方法。描述需求的时候:系统有谁在用?这些人通过系统来做什么?第1页/共65页用例图的要素 用例方法的基本思想:从用户的角度来看,他们并不想了解系统的内部结构和设计,他们所关心的是系统所能提供的服务,也就是被开发出来的系统将是如何被使用的。用例模型主要由以下模型
2、元素构成:参与者(Actor):存在于被定义系统外部并与该系统发生交互的人或其他系统,代表系统的使用者或使用环境。用例(Use Case)通讯关联(Communication Association):用于表示参与者和用例之间的对应 关系,它表示参与者使用了系统中的哪些服务(用例)、系统所提供的服务(用 例)是被哪些参与者所使用的。参与者用例通讯关联第2页/共65页一种新的需求分析技术:用例第3页/共65页用例方法的优点系统被看作是一个黑箱,并不关心系统内部是如何完成它所提供的功能的。首先描述了被定义系统有哪些外部使用者(抽象为Actor)、这些使用者与被定义系统发生交互;针对每一执行者,又描
3、述了系统为这些执行者提供了什么样的服务(抽象成为Use Case)、或者说系统是如何被这些执行者使用的;第4页/共65页用例建模的基本过程Step 1:确定系统边界Step 2:识别并描述参与者(actor);Step 3:识别用例(use case),并给出简要描述;Step 4:识别执行者与用例之间的关联(Association);Step 5:给出每一个用例的详细描述Step 6:细化用例模型第5页/共65页Step 1:确定系统边界:确定系统边界 系统目标 系统范围例:学生成绩管理系统目标:大学?中小学?范围:单机、网络?学籍?课程?第6页/共65页Step 2:识别并描述参与者(ac
4、tor)参与者(actor)是指在系统外部系统外部与系统交互的人或其他系统,他以某种方式参与了系统内用例的执行。第7页/共65页参与者的类型参与者一般分为三种:人:与系统存在交互关系的使用者,管理员,用户等设备:与系统存在交互关系的外部设备,条码扫描仪,ic读卡器,监控摄像头等其他系统:与系统存在交互关系的其他系统,成绩管理系统的选课数据由选课系统提供。时间:有些用例需要系统时钟定时触发,如员工生日祝福操作由系统时钟检测到生日时间后出发第8页/共65页识别参与者通过以下问题来识别Actor:谁使用这个系统的功能?谁从该系统获得信息?谁向该系统提供信息?该系统需要访问(读写)那些外部硬件设备?谁
5、来负责维护和管理这个系统以保证其正常运行?该系统需要与其他系统进行交互吗?系统的主要功能使用者系统的硬件设备系统的维护、管理人员其他系统第9页/共65页 例1:对一个图书管理系统来说,有哪些参与者?读者图书管理者 例2:对ATM系统来说,有哪些参与者?银行客户ATM维护人员后台服务器读者图书管理员银行客户维护人员后台服务器第10页/共65页参与者的特点在建模参与者过程中,记住以下要点。(1)参与者对于系统而言总是外部的,因此它们在你的控制之外。(2)参与者直接同系统交互,这可以帮助定义系统边界。(3)参与者表示人和事物与系统发生交互时所扮演的角色,而不是特定的人或特定的事物。(4)一个人或事物
6、在与系统发生交互时,可以同时或不同时扮演多个角色。例如,某研究生担任某教授的助教,同职业的角度看,他扮演了两个角色学生和助教。(5)每一个参与者需要有一个具有业务一样的名字,在建模中,不推荐使用诸如NewActor这样的名字。(6)每个参与者必须有简短的描述,从业务角度描述参与者是什么。(7)像类一样,参与者可以具有分栏,表示参与者属性和它可接受的事件。一般情况下,这种分栏使用的并不多,很少显示在用例图中。第11页/共65页分组讨论:找出参与者按照分组选择题目进行讨论时间:5分钟1、图书管理系统的参与者(1-4组)2、学生餐饮管理系统的参与者(5-8组)第12页/共65页Step 3:识别用例
7、(use case)找到参与者之后,据此来确定系统的用例,主要是看各参与者需要系统提供什么样的服务,或者说执行者是如何使用系统的。寻找用例可以从以下问题入手(针对每一个参与者):参与者使用该系统执行什么任务?参与者是否会在系统中创建、修改、删除、访问、存储数据?如果是的话,执行者又是如何来完成这些操作的?参与者是否会将外部的某些事件通知给该系统?系统是否会将内部的某些事件通知该执行者?第13页/共65页用例的特征v这件事必须由一个执行者发起,执行者的愿望是用例存在的原因。不存在没有执行者的用例,也不应该主动启动另一个用例。第14页/共65页v用例是相对独立的,即用例的“功能”是完备的第15页/
8、共65页v用例的执行结果对执行者来说是可观测和有意义的第16页/共65页v用例必然是以动宾短语形式出现的。第17页/共65页识别用例 例1:对图书馆管理系统来说,有哪些参与者和用例?图书管理员管理读者信息管理图书信息登记借书登记还书 例2:对ATM系统来说,有哪些参与者和用例?银行客户查询取款转账 普通读者:预订图书取消预订查询浏览图书信息 ATM维护人员维护系统 后台服务器周期性操作第18页/共65页Step 4:识别执行者与用例之间的关联数据流向由谁启动第19页/共65页Step 3:识别执行者与用例之间的关联数据流向由谁启动第20页/共65页Step 3:识别执行者与用例之间的关联数据流
9、向由谁启动第21页/共65页参与者与用例的关系启动用例第22页/共65页获取用例的服务为用例提供服务第23页/共65页给系统提供信息第24页/共65页讨论讨论下面的用例图,有什么问题?第25页/共65页目标和步骤的误区目标和步骤的误区第26页/共65页用户观点而非系统观点用户观点用户观点系统观点系统观点第27页/共65页用例的粒度ATM取钱的场景中,取钱,读卡,验证账号,打印回执单等都是可能的用例?用例粒度的划分最标准的方法应该是:以该用例是否完成了执行者的某个完整目的为依据的。第28页/共65页 案例:ATM的用例客户代表客户代表说:我希望这台ATM能支持跨行业务,我插入卡片并输入密码后,可
10、以让我选择是取钱还是存钱;为了方便,可以设置一些默认的存取金额按钮;我可以修改密码,也可以挂失;还有我希望可以交纳水费、电费和电话等费用;为了安全起见,ATM上应当有警示小心骗子的提示条,还有摄像头;如果输入三次密码错误,卡片应当被自动吞没。第29页/共65页判断下列操作,哪些是用例支持跨行业务插入卡片输入密码选择服务取钱存钱修改密码挂失卡片交纳费用警示骗子三次错误吞没卡片第30页/共65页支持跨行业务错,这是一个业务规则,限定业务的范围插入卡片错,这是一个过程步骤,不是完整目标输入密码错,这是一个过程步骤,不是完整目标选择服务错,这是一个过程步骤,不是完整目标取钱对,这是一个完整有效的目标存
11、钱对,这是一个完整有效的目标修改密码对,这是一个完整有效的目标挂失卡片对,这是一个完整有效的目标交纳费用对,这是一个完整有效的目标警示骗子错,已超出了边界范围三次错误吞没卡片错,这是一个业务规则,限定业务的范围ATM的用例第31页/共65页“四轮马车”C(Create)R(Read)U(Update)D(Delete)所有业务最终对会成为CRUD?CRUD能为Actor提供价值?CRUD掩盖业务,锐变成关系数据库的建模:“系统就是数据的增删改查”关心数据的存储和维护,反而忽略了用户的目的用例的粒度2第32页/共65页如果确实是CRUD?如果CRUD不涉及复杂的交互,一个用例“管理”即可不管是C
12、、R、U、D,都是为了完成“管理”目标甚至很多种的基本数据管理都可以用一个用例表示第33页/共65页讨论电子邮件系统,有如下功能:发件人A发送邮件给B,系统提醒B你有“新邮件”,收件人B接收邮件。画出用例图第34页/共65页Step 5:给出用例的详细描述单纯的用例图并不能描述完整的信息,需要用文字描述不能反映在图形上的信息。用例名称用例标识涉及的参与者描述用例的规格说明前置条件 PreConditions后置条件 PostConditions正常事件流 Flow of events备选事件流 Alternate flow其它非功能需求、设计约束、尚存在的问题第35页/共65页前置、后置条件前
13、置条件约束在用例开始前系统的状态把它们看做是看门人,它阻止参与者触发该用例直到满足所有条件说明在用例触发之前什么必须为真后置条件约束用例执行后系统的状态用例执行后什么必须为真对于有多个事件流的用例,则应该有多个后置条件某些用例依赖于其他用例一个用例在离开系统时,可能是另一个用例的前置条件(例如:“登录”和“管理系统”)有助于识别漏掉的用例如果一个用例的前置条件不能有执行其他用例满足,可能意味着丢失了用例(例如:“管理订单”却没有“登录”用例)第36页/共65页事件流用例的事件流:说明用例如何启动,即哪些执行者在何种情况下启动用例?说明执行者与用例之间的信息处理过程;说明用例在不同条件下可以选择
14、执行的多种方案;说明用例在什么情况下才能被视作完成;分为常规流和备选流两类:常规流:描述该用例最正常的一种场景,系统执行一系列活动步骤来响应执行者提出的服务请求;备选流:负责描述用例执行过程中异常的或偶尔发生的一些情况。第37页/共65页常规事件流每一个步骤都需要用数字编号以清楚地标明步骤的先后顺序。用一句简短的标题来概括每一步骤的主要内容。对每一步骤,从两个方面来描述:执行者向系统提交了什么信息;对此系统有什么样的响应。第38页/共65页备选事件流备选流的描述格式可以与基本流的格式一致,也需要编号并以标题概述其内容。起点:该备选流从事件流的哪一步开始;条件:在什么条件下会触发该备选流;动作:
15、系统在该备选流下会采取哪些动作;恢复:该备选流结束之后,该用例应如何继续执行。第39页/共65页事件流描述要点1.只书写“可观测”的(说人话)2.使用主动语句3.句子必须以参与者或系统作为主语4.不要涉及界面细节5.分支和循环第40页/共65页只写“可观测”的系统通过ADO建立数据库连接,传送SQL查询语句,从“商品表”查询商品的详细信息系统按照查询条件搜索商品的详细信息第41页/共65页主动语句欧文丛贝克汉姆处得到传球,守门员贝克汉姆传球给欧文,欧文射门,守门员扑救出纳员系统第42页/共65页以参与者或系统作主语参与者系统出纳员接收顾客的付款顾客的付款数可能高于商品总额出纳员录入顾客所付的现
16、金总额系统显示出应找还给顾客的余额,打印付款收据第43页/共65页不涉及界面细节会员从下拉框中选择类别会员在相应文本框中输入查询条件会员点击“确定”按钮第44页/共65页分支和循环分支:放到扩展路径(备选事件流)参与者的选择另一条成功线路系统进行验证循环:直接描述第45页/共65页处理销售处理销售1.顾客携带所购商品或服务到收银台通过POS机付款。2.收银员开始一次新的销售交易。3.收银员输入商品条码。4.系统逐条记录出售的商品,并显示该商品的描述、价格和累计金额。价格通过一组价格规则来计算。5.收银员重复3-4步,直到输入结束。6.收银员告知顾客总额,并请顾客付款。7.顾客付款,系统显示找零
17、信息,并处理支付。8.系统记录完整的销售信息,并将销售和支付信息发送到外部的账务系统(进行账务处理和提成)和库存系统(更新库存)。9.系统打印票据。10.顾客携带商品和票据离开。第46页/共65页处理销售的用例描述处理销售的用例描述用例名称:处理销售 参与者与关注点:收银员:希望准确、快速地输入,而且没有支付错误,因为如果少收货款,将从其工资中扣除。前置条件:收银员必须经过确认和认证 后置条件:存储销售信息。准确计算税金。更新账务和库存信息。基本流程:1.顾客携带所购商品或服务到收银台通过POS机付款。2.收银员开始一次新的销售交易。3.收银员输入商品条码 扩展流程:3a.无效商品ID(在系统
18、中未发现):系统提示错误并拒绝输入该ID。收银员响应该错误 特殊需求:使用大尺寸平面显示器触摸屏,文本信息可见距离为1米发生频率:可能会不断地发生未解决问题:提成处理规则不确定 收银员换班时如何处理 第47页/共65页Step6:细化用例模型执行者与执行者之间的泛化(generalization)用例和用例之间的包含(include)用例和用例之间的扩展(extend)用例和用例之间的泛化(generalization)关系 利用这些关系来调整已有的用例模型,把一些公共的信息抽取出来复用,使得用例模型更易于维护。第48页/共65页泛化(Generalization)关系执行者之间的泛化第49页
19、/共65页泛化(Generalization)用例之间的泛化用例间的泛化关系表明子用例包含父用例中定义的所有属性、行为序列和扩展点,并且参与父用例中所有的关系第50页/共65页包含(Include)箭头指向的用例为被包含的用例,称为包含用例;箭头出发的用例为基本用例。包含用例是必选的,如果缺少包含用例,基础用例就不完整;包含用例必须被执行,不需要满足某种条件;其执行并不会改变基用例的行为。第51页/共65页包含(Include)某些步骤在多个用例重复出现,且单独形成价值用例步骤较多时,可用Include简化第52页/共65页银行客户查询取款转帐打印回执第53页/共65页第54页/共65页第55
20、页/共65页扩展(Extend)将扩展用例的事件流在一定的条件下按照相应的扩展点插入到基础用例中。基础用例不必知道扩展用例的任何细节,它仅为其提供扩展点。扩展用例的行为是否被执行要取决于主事件流中的判定点。箭头指向的用例为被扩展的用例,称为扩展用例;箭头出发的用例为基本用例。扩展用例是可选的,如果缺少扩展用例,不会影响到基用例的完整性;扩展用例在一定条件下才会执行,并且其执行会改变基用例的行为。第56页/共65页扩展(Extend)第57页/共65页包含与扩展的区别第58页/共65页扩展(Extend)扩展举例(一):第59页/共65页扩展(Extend)扩展举例(二):第60页/共65页extend图书馆系统中有如下用例,请确定用例之间的关系借书还书验证读者超期罚款includeinclude密码验证智能卡验证练习第61页/共65页面向对象的需求分析1 结构化分析方法的不足2面向对象的软件工程3用例是什么?用例建模的基本过程4 用例模型的提交物第62页/共65页1 用例模型2 每个用例的详细描述3 术语表:所用到的术语说明4 补充规约:非功能性需求的说明第63页/共65页第64页/共65页感谢您的观看!第65页/共65页