第13章基于用例的需求分析方法软件学院代飞2013.春基于用例的需求分析方法1992年由Jacobson提出了Usecase的概念及可视化的表示方法-Usecase图,并加入由他提出的面向对象的软件工程(OOSE)。Usecase的概念收到了IT界的欢迎,被广泛应用到了面向对象的系统分析中。基于用例的需求方法,已成为面向对象分析方法的主流。用例方法的思想从用户的角度来看,他们并不想了解系统的内部结构和设计,他们所关心的是系统所能提供的服务,也就是被开发出来的系统将是如何被使用的。通讯关联参与者系统外部并与该系统发生交互的人或其他系统系统基本事件流,代表用户期望系统提供的基本功能用例4问:一个自动饮料售货机的功能是什么?答:通过自动饮料售货机购买一听饮料(买饮料)参与者用例顾客买饮料收款员收款供应商提供饮料通信用例:站在用户角度定义软件系统的外部特征(1)四个特征:行为序列(sequencesofactions):一个用例由一组可产生某些特定结果的行为构成,这些行为是不可再分解的(接收用户输入、执行、产生结果)。用例:是系统执行的动作集合规格说明系统执行(systemperforms):系统为外部角色提供服务。可观测到的、有价值的结果(observableresultofvalue):用例必须对用户产生价值。特定的角色(particularactor):某人、某台设备、某外部系统、等等,能够触发某些行为。Usecase图采用“基于用例的方法”来识别和获取需求,是从外部的角度来看系统功能,建立系统的Usecase模型。Usecase模型由若干Usecase图组成,描述外部执行者(Actor)所理解的系统功能,即待开发系统的功能需求。在Usecase图中,Usecase(用例)表示一个子系统,或者一个对立的功能。用例图的主要基本元素执行者(角色):是系统外部的一个人或物,它以某种方式参与了系统的执行过程。用例:待开发系统的一个独立功能,由一系列动作组成。用例间的关系:泛化、包含和扩展关系参与者用例8学生成绩管理员注册员输入分数注册讨论班分发成绩单用例图的组成参与者(actor);用例;系统边界;参与者与用例的通信关联(communicationassociation);简单大学用例图用例图是由执行者驱动的创建用例模型的基本步骤1、确定执行者(参与者)2、确定用例(包括描述用例)3、定义系统的边界4、确定用例间的关系5、确认用例模型1)参与者(actor)参与者的种类:人担当的角色计算机系统机械或电子设备11发起参与者(initiatoractor)参加参与者(participatingactor)12确定参与者(actor)你系统的主要客户是谁?系统从什么地方得到信息?谁从你的系统取得的信息?使用信息?谁为你的系统提供信息?删除信息?谁安装、操作、关闭系统(次要角色)?在某一个预定时间,是否有什么事情自动发生?其他系统与该系统交互信息是什么?特殊的参与者:系统时钟有时需要在系统内部定时的执行一些操作,如检测系统资源使用情况、定期生成统计报表等,但这些操作并不是由外部的人或系统触发的,这样可以抽象出一个系统时钟或定时器参与者,利用该参与者来触发这一类定时操作。从逻辑上,这一参与者应该被理解成是系统外部的,由它来触发系统所提供的用例对话。系统时钟周期性任务触发14在使用参与者为角色建模中是一种抽象,不为具体的人、机构、系统建模。输入分数分发成绩单刘老师注意张助教任职教授李主任2)确定用例用例描述一个事件发生,产生动作步骤的集合。15(2)基于参与者的方法#识别出与系统或组织有关的参与者#对每个参与者,识别出他们发起或参加的执行过程(1)基于事件的方法#识别出系统必须响应的外部事件#把事件与参与者和用例联系起来以编制好的需求规格说明文档为基础用例描述:登记借书1.目标:本用例允许图书管理员登记普通读者的借书记录2事件流:2.1常规流程当读者希望借书、图书管理员准备登记有关的借书记录时,本用例开始执行。(1)系统要求管理员输入读者的注册号和所借图书号。(2)图书管理员输入信息后,系统产生一个唯一的借书记录号。(3)系统显示新生成的借书记录。(4)图书管理员确认后,系统增加一个新的借书记录。用例描述:登记借书2.2备选流程(1)读者没有注册在主流程中,如果系统没有读者的注册信息,系统将显示错误信息,用例结束。(2)所借图书不存在在主流程中,如果所借图书已被借出或者系统中无该图书,系统将显示错误信息,用例结束。3前提条件:用例开始前,图书管理员必须在系统登录成功。4后置条件:如果用例执行成功,该读者的借书记录被更新,否则,系统状态不变。18确定用例角色需要系统做什么?从系统获得那些功能?确定用例从参与者角度向系统提问,确定可能的服务。角色需要读取、产生、删除、修改、存储系统中什么信息?角色需要知道系统发生了什么事件?这些事件做些什么?系统提供给角色的信息是否简化了?系统需要的I/O是什么信息?信息流怎样流动(也可能与当前角色无关)?例:ATM系统的用例参与者:银行客户用例:银行客户使用自动提款机来进行银行帐户的查询、提款和转帐交易银行客户查询取款转帐存款银行客户维护人员后台服务器例:ATM系统,有哪些参与者和用例?银行客户查询存款、取款转账用例ATM维护人员维护系统后台服务器周期性操作ATM系统的参与者与角色之间的通讯关联查询存、取款转帐周期性任务操作员维护系统•参与者确定用例•参与者与用例对应系统时钟后台服务器银行客户22顾客购买商品退还商品商店顾客购买商品登录退还商品POST出纳员3)关于边界的选择定义系统的边界是为了识别出什么在系统之内,什么在系统之外,进而识别出什么是系统的职责。•典型的系统边界包括:硬件设备或硬件/软件边界一个组织中的部门或整个组织。4)确定用例间的关系在基本的用例图中,只需表述参与者和用例之间的通讯关系。此外,还可以描述:参与者与参与者之间的泛化关系(generalization)用例和用例之间的包含(include)关系用例和用例之间的扩展(extend)关系用例和用例之间的泛化(generalization)关系利用这些关系来调整已有的用例模型,把一些公共的信息抽取出来复用,使得用例模型更易于维护。参与者之间的关系参与者之间的泛化(Generalization)关系actor2actor1普通用户常规操作管理操作配置操作系统维护员管理员用户常规操作管理操作配置操作系统维护员管理员客户电话登记客户保险登记客户用例之间的关系:(1)泛化(generalization)当多个用例共同拥有一种类似的结构和行为的时候,可将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。子用例继承了父用例所有的结构、行为和关系。用例1用例2采购员采购物料采购钢材采购办公用品买票个人购买团体购买26身份验证密码验证智能卡验证付费现金支付信用卡支付例:标出下面用例图上的关系?用例之间的关系:(2)包含(include)包含关系是通过在关联关系上加入include标记来表示。基本用例指向包含用例。用例1用例2include语义:用例1会用到用例2,用例2的事件流将被插入到用例1的事件流中。银行客户查询取款转帐卡片验证includeincludeinclude基本用例包含用例基本用例不能独立存在,依赖于包含用例。包含用例一定要执行。许多用例的公共部分移到一个单独的被包含用例中。公共部分需求变化时,只改变被包含用例的需求。×include包含关系的几种可能性includeincludeincludeincludeincludeincludeincludeinclude1234用例之间的关系:(3)扩展(extend)扩展关系是通过在关联关系上加入extend标记来表示。扩展用例指向基本用例(被扩展用例)。用例1用例2extend一个用例中有许多选择时,使用扩展关系。管理变更。呼叫转移银行客户extend打电话呼叫等待extend语义:用例1在某些特定情况下会用到用例2,用例2的事件流将被插入到用例1的事件流中。扩展用例(可变部分)基本用例(不变部分)基本用例能独立存在,不依赖于它的扩展用例。扩展用例可以不执行。用例之间的关系:扩展(extend)常规流:1拨号2建立通话链路3通话4挂机常规流:1如果应答方正忙,用铃声提示应答方并保持拨号呼叫常规流:1如果应答方无应答,进行呼叫转移打电话呼叫等待呼叫转移extendextend实际上相当于第一个用例的“备选流”扩展点(Point)识别用例行为中的点,指明扩展时机的点。WithdrawPrintReceiptextendExtensionPointPrint提款(Withdraw)用例记载了一个打印的扩展点,打印收据(PrintReceipt)的行为会被插入到打印扩展点。ExtensionPointPrintWithdrawUseCase::Mainflow1.顾客插入银行卡2.输入密码3.输入提款金额4.退卡5.吐钞6.选择是否打印收据:打印扩展点PrintReceiptUseCase1.进纸2.打印3.吐纸ExtendingUseCaseextend扩展关系的几种可能性extendextendextendextendextend1234extendextendextend34extend登记借书查询读者查询读书参加考试补考extendextendinclude创建新账户Login删除账户修改账户登记借书登记还书验证读者includeinclude标出下面用例图上的关系?35includeincludeextend提供客户数据订货系统订货项目例:查询存款打印收据includeextend查询存款打印收据includeextend打印收据订货系统请求目录37例:确定下面用例模型中的几种关系《extend》泛化《include》通信关联注册进大学注册讨论班在大学生中注册家庭成员在大学中注册国际学生注册员学生国际学生NameoftheUseCase(用例的名字)Description(描述)Actor(s)(参与者)Flowofevents(事件流)Basicflow(常规流)Event1(事件)Event2……Alternateflow(备选流)Pre-conditions(前置条件)Post-conditions(后置条件)……用例=椭圆+名字?——NO!用例规约...用例模型参与者用例术语表一些错误的用例分类查询题名查询作者查询馆藏查询图书借阅管理期刊借阅管理续借借阅管理includeincludeinclude图书预订信息更新图书推荐读者书籍检索includeincludeincludeinclude书籍和期刊检索期刊检索includeincludeincludeincludeincludeinclude图书数据统计图书登记管理采购记录管理结帐报账记录includeinclude新书通报图书采购人员季度报表年度报表月报表includeincludeinclude书籍借阅期刊借阅光盘借阅书籍归还期刊归还光盘归还图书超期罚款借书管理includeincludeinclude还书管理includeincludeincludeextend图书馆借阅人员谢谢!