用例&需求(上)UML培训ThinkmingshgTel:13756509803mingshgTel:13756509803开发过程--利用UML的20%就可以为80%的问题建模--《UML用户指南》平台mingshgTel:13956509803需求问题的代价mingshgTel:13956509803需求--石头问题mingshgTel:13956509803需求问题--对策mingshgTel:13956509803mingshgTel:13956509803R公司是一家有悠久历史的零件代理商,为基础工业的各个行业(制造业、建筑业…)提供零件,它想要开发一个在线销售系统。R公司代理的零件的种类非常多,有螺母、螺钉、铆钉、销、垫圈等,所以每年R公司都要出版一套零件目录,供顾客查询。以前的业务流程是:顾客在目录上查到所需要的零件后,打来电话或发来传真,请求购买,销售员根据顾客的购买数量,与供应商查询后,告知顾客价格。顾客通过电话或传真告知销售员进行订购。案例描述:零件销售系统(1)mingshgTel:13756509803案例描述:零件销售系统(2)mingshgTel:13756509803在基于Web的新系统中,顾客可以通过Internet进行购买。顾客先预付一定金额存入内部账户中成为会员,然后才能购买零件。顾客可以根据自己所知道的零件的形状,大小、零件编号等指标,搜索出所需要的零件。结帐使用内部帐户支付。系统根据会员提供的送货地址和订购数量,从库存中搜索出离送货地址最近的供应商,通知供应商发货。内部工作人员不定期地根据供应商方面的价格变动,对某些零件的销售价格进行更新。每个星期,各个供应商会把记录自己最新库存情况的Excel文件寄来,系统根据这些文件更新库存信息。因简化的需要,以下因素略去不考虑:折扣,延迟交货…识别系统边界和参与者列出事件识别用例书写用例文档识别用例的关系对用例进行排序和分包步骤mingshgTel:13756509803识别系统边界和参与者mingshgTel:13756509803在系统之外,透过系统边界与系统进行有意义交互的任何事物引入参与者帮助确定系统边界识别系统边界和参与者mingshgTel:13756509803——参与者(Actor)参与者代表在系统边界之外的真实事物,并不是系统的成分参与者透过系统边界直接与系统交互,参与者的确定代表着系统边界的确定交互是有意义的参与者可以是任何事物识别系统边界和参与者mingshgTel:13756509803——参与者要点识别系统边界和参与者mingshgTel:13756509803——参与者在系统外面顾客Donald参与者:顾客类:顾客边界顾客Mickey顾客唐纳德参与者:顾客参与者:经理经理唐纳德参与者不同,所需的领域知识和交互技巧不同识别系统边界和参与者mingshgTel:13756509803——一个人可以担任多个参与者多少钱一桶?买多少?季度销售报告?识别系统边界和参与者mingshgTel:13756509803——直接与系统交互不属于系统责任不属于系统责任不属于系统责任识别系统边界和参与者mingshgTel:13756509803——有意义的交互识别系统边界和参与者mingshgTel:13756509803——任何事物识别系统边界和参与者mingshgTel:13756509803——讨论和练习商品销售系统。顾客通过网络下单之后,系统计算出总计金额,税金,运费,并将数目传递给一个外挂的会计系统,该系统是另外购买的。有几个Actor?答案顾客,(会计系统)mingshgTel:13756509803识别参与者谁使用系统的主要功能?谁改变系统的数据谁从系统获取信息谁需要系统的支持以完成日常工作任务?谁负责维护、管理并保持系统正常运行?系统需要应付(处理)哪些硬设备?系统需要和哪些外部系统交互?谁(或什么)对系统运行产生的结果(值)感兴趣?时间、气温等内部外部条件识别系统边界和参与者mingshgTel:13756509803——识别参与者的思路谁使用系统的主要功能?—潜在会员,会员谁改变系统的数据?—会员,货管员,经理谁从系统获得信息—潜在会员,会员,经理,货管员谁需要系统的支持以完成日常工作任务?—经理,货管员谁负责维护、管理并保持系统正常运行?—经理,货管员系统需要应付(处理)哪些硬设备?—没有特殊硬设备系统需要和哪些外部系统交互?—可能与供应商的系统交互谁(或什么)对系统运行产生的结果(值)感兴趣?—会员,经理时间、气温等内部外部条件识别系统边界和参与者mingshgTel:13756509803——零件销售系统识别系统边界和参与者mingshgTel:13756509803——候选参与者——参与者泛化关系识别系统边界和参与者mingshgTel:13756509803用例1用例2用例3职员经理经理可以参与职员参与的所有用例识别系统边界和参与者mingshgTel:13756509803——参与者的地位(1)——参与者的地位(2)识别系统边界和参与者mingshgTel:13756509803识别用例之前--重要有助于识别用例,宁多勿少测试和部署阶段--重要需要从参与者的角度考虑开始书写用例文档以后--不重要涉及的参与者太多识别系统边界和Actor(参与者)列出事件识别用例书写用例文档识别用例的关系对用例进行优先级排序步骤mingshgTel:13756509803系统必须响应的外部事件和内部事件外部事件:来自系统外部顾客+下定单内部事件:来自系统内部可以看作由时间引发如:每天晚上检查账户,自动进行批处理列出事件mingshgTel:13756509803——事件——头脑风暴法列出事件mingshgTel:13756509803“主语+动词(+宾语)”主语:Actor的候选,例如:乘客,顾客,店员。动词:表示行为。例如:买,发送,修改…宾语:动词所代表行为的目标——零件销售系统事件表格Actor事件业务目的Actor事件业务目的会员检索零件会员修改个人资料会员输入查询条件经理开放账户会员提交查询条件经理打印销售情况报表会员查看零件的特征经理打印会员情况报表会员查看零件的价格经理检索会员会员决定购买某零件的数量货管员更新库存会员输入送货地址货管员更新价格会员结账供应商发货会员改变购买数量会员收货会员从订单中删除某一项会员付款会员取消订单潜在会员注册潜在会员提供会员资料会员登录会员提交用户名、密码会员修改密码列出事件mingshgTel:13756509803识别系统边界和Actor(参与者)列出事件识别用例书写用例文档识别用例的关系对用例进行优先级排序步骤mingshgTel:13756509803识别用例mingshgTel:13756509803——用例定义用例实例是系统执行的一系列动作,这些动作将生成特定主角(参与者)可观测的结果值。一个用例定义一组用例实例。通俗一些Actor使用系统达到某个目标识别用例mingshgTel:13756509803——用例要点可观测用例止于系统边界结果值用例是目标导向的系统执行结果值由系统生成由参与者观测业务语言,用户观点一组用例实例用例的粒度识别用例mingshgTel:13756509803——用例止于系统边界识别用例mingshgTel:13756509803描述交互,而不是内在的系统活动——用例是目标导向的系统的存在是因为:参与者有一些需要使用它来满足的目标记账:媒介变了,目标没变识别用例mingshgTel:13756509803——结果值由系统生成识别用例mingshgTel:13756509803?——结果值由系统生成识别用例mingshgTel:13756509803——业务语言而非技术语言识别用例mingshgTel:13756509803——用户观点而非系统观点用户观点系统观点识别用例mingshgTel:13756509803——用例vs.功能用例•呼叫某人•接听电话•发送短消息•记住电话号码•......用户观点功能•传输/接收•电源/基站•输入输出(显示,键盘)•电话簿管理•......系统观点识别用例mingshgTel:13756509803——用例命名:参与者视角识别用例mingshgTel:13756509803(状语+)动词(+定语)(+宾语)——用例命名:慎用弱动词弱名词识别用例mingshgTel:13756509803弱动词:进行、使用、复制、加载、重复…弱名词:数据、报表、表格、表单、系统…会掩盖真正的业务——用例的粒度(1)粒度过细,陷入功能分解过细的粒度,一般都会导致技术语言的描述,而不再是业务语言识别用例mingshgTel:13756509803——用例的粒度(2)常见错误:把交互的某个步骤当作用例把系统活动当作用例识别用例mingshgTel:13756509803——用例的粒度(3):四轮马车的错误CRUD:Create,Read,Update,Delete蜕变成关系数据库的建模“系统就是数据的增删改查”。这是常犯的错误,先关心数据的存储和维护,反而忽略了用户的目的。识别用例mingshgTel:13756509803——用例的粒度(4):CRUD?业务?识别用例mingshgTel:13756509803人力资源系统识别用例mingshgTel:13756509803——用例的粒度(5):CRUD的处理如果CRUD不涉及复杂的交互,一个用例“管理××”即可。不管是C、R、U、D,都是为了完成“管理”的目标——用例的粒度(6):灵活处理CRUD识别用例mingshgTel:13756509803也可以把包含复杂交互的路径独立出去形成用例mingshgTel:13756509803识别用例:讨论和练习•Email客户端(如:outlookexpress),A在北京发邮件给深圳的B,系统提醒B”你有新邮件”,B收邮件mingshgTel:13756509803识别用例:讨论和练习——用例的用途:捕获功能需求识别用例mingshgTel:13756509803功能需求由客户或其他stakeholder(利益相关者)要求的一项功能或功能特性。是客户真正关心的目标。——从事件识别出用例Actor事件业务目的Actor事件业务目的会员检索零件会员修改个人资料会员输入查询条件经理开放账户会员提交查询条件经理打印销售情况报表会员查看零件的特征经理打印会员情况报表会员查看零件的价格经理检索会员会员决定购买某零件的数量货管员更新库存会员输入送货地址货管员更新价格会员结账供应商发货会员改变购买数量会员收货会员从订单中删除某一项会员付款会员取消订单潜在会员注册潜在会员提供会员资料会员登录会员提交用户名、密码会员修改密码识别用例mingshgTel:13756509803——用例:零件销售系统识别用例mingshgTel:13756509803潜在会员注册货管员登录管理价格货管员管理库存经理登录检索会员开放帐号经理打印报表会员登录管理订单修改个人信息检索零件查询历史记录结帐会员购物