| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 442 人关注过本帖
标题:[原创]分析师如何看用例?
只看楼主 加入收藏
guoyu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-10-15
收藏
 问题点数:0 回复次数:0 
[原创]分析师如何看用例?
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: guoyu
*/ 时间: 2007-10-17 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------




[size=5]1.5.1用例不能清晰表达吗?
分析师R在阅读了需求分析师N的用例后,颇有一些想法,于是R去找N进行探讨。原因是这样的,请见用例模型,如图1.17所示。
[/size]

图1.17 系统用例1

这个用例模型是需求分析师N在完成了需求调研后所画的,N的说法是“库存管理员在查询分销商的信息后,将得到分销商一览界面,接着库存管理员可以选择一个分销商,对该分销商的详细信息进行修改”。在N的脑海中,这样的用例模型将会产生如下的界面原型,如图1.18、1.19所示。


图1.18 分销商一览


图1.19 分销商修改

图1.18所表示的是“分销商一览界面”,通过对每个分销商名字链接的单击,可以进入图1.19的“分销商修改界面”。N认为自己的用例没有画错,图1.17用例的字面上解释是“查询分销商信息用例包含了修改分销商信息用例”,所以图1.18和1.19完全可以通过图1.17的用例模型来画出。但是事实怎么样呢?R是怎么理解的呢?

1.5.2 另一张用例模型图
对于N的解释,R并没有去争辩什么,只是,R也画了一张用例模型图,并作出了解释。如图1.20所示。

图1.20 系统用例2

图1.20的用例模型与图1.17的用例模型最大的不同,在于“查询分销商业信息”和“修改分销商信息”之间的箭头被改成了反向,并且线上的注解从“include”变成了“extend”。R说图1.20的用例模型的含义是“修改分销商信息用例从查询分销商信息用例扩展而来”,同样可以表述图1.18和1.19。
这下N也觉得诧异了,R的说法不无道理,从字面上说,先通过得到分销商信息的一览界面,然后扩展出修改分销商信息的界面是很正确的。难道两个不同的画法可以表明同一个问题吗?或者extend和include是可以互相转换的吗?

1.5.3 更多的用例模型画法
在解释1.5.2节所提出的问题前,请读者不妨再看另两张用例模型的画法,请不要吃惊和迷惑,因为从字面上来看,这两张用例模型的画法同样可以达到图1.17的用例模型所要表述的内容。如图1.21、图1.22所示。

图1.21 系统用例3


图1.22 系统用例4

图1.21字面上的意思是,在修改分销商信息的用例中,将会包含查询分销商信息的用例,所以,同样是先查询分销商信息一览然后进行修改。
图1.22字面上的意思是,查询分销商信息的用例是从修改分销商信息扩展而来的,因为主业务是要做修改分销商信息。
这又如何呢?读者是不是觉得已经很混乱了呢?

1.5.4 理解extend和include
要想找到真正的答案,理解清楚extend和include是非常重要的,这是关键。
(1)extend是扩展的意思,它的含义是当B用例是从A用例扩展而来的,那么就应该用箭头从B指向A,并注明extend。所谓扩展,就是对于A用例来说,并不一定要存在的,即就算把B用例去除,A用例依然可以运转下去。
(2)include是包含的意思,它的含义是当B用例是被A用例包含的,那么就应该用箭头从A指向B,并注明include。所谓包含,就是对于A用例来说必须存在,即不能把B用例去除,否则A用例将无法运转。
注意:从主动和被动方面,可以轻松记得箭头的指向,包含(include)必然是己方主动的,那箭头应该对着对方,扩展(extend)必然是他方主动的,那箭头就应该指向己方。

1.5.5 再来看图
究竟哪一张用例模型图是正确表达了N的意思呢?根据extend和include的理论,看图说话是最清晰的。extend意味着即使把B用例去掉也不影响A用例,从extend来下手是最妥当的。把图1.20和图1.22中extend的用例去掉,看看是否满足了N的需求呢?如图1.23和1.24所示。

图1.23 系统用例图1.20改

把extend的用例去掉后,图1.20改成了图1.23,可以看到库存管理员一开始需要查询分销商信息,然后什么都不做。这很明显是符合了N先查询一览的思想。


图1.24 系统用例图1.22改

* 把extend用例去掉后,图1.22改成了图1.24,库存管理员一进来就需要修改分销商信息,而事实是,库存管理员需要先使得系统状态转变为分销商信息一览,然后选择一个分销商进行修改。所以图1.22是不满足N的想法的。

* 图1.17根据include的理论,对于图1.17来说,修改分销商信息是必须存在的,否则就不能称其为“查询分销商信息”,当查询分销商信息时,必须同时修改分销商信息。这不满足N的想法。
* 图1.21说明查询分销商信息是必须存在的,否则就不能称其为“修改分销商信息”,听起来没错,但是请仔细看一下图,参与者业务角色“库存管理员”第一步是去做的“修改分销商信息”,在这步里面去“查询分销商信息”,这也是不正确的(针对这张图的界面是另一种结果,将在下一节中展示).

1.5.6 看图说话
在之前所给出的四张图中,只有图1.20是最符合N的想法的,其余三张用例模型虽然在这个例子中是不正确的,但是在其他需求的可能中却会是正确的。作为一名分析师,做用例和看用例都要学会“看图说话”,因为用例模型本身是用来交流的,做用例的人想把自己的想法表达给别人,而不会造成别人误解是关键。下面就将图1.17、图1.21、图1.22真正想表达的含义用界面原型和文字来阐述一下,以加深印象。
* 对于N所画的图1.17,其真正表达的含义是这样的:在查询分销商信息的同时,需要修改分销商信息。对于一个业务要求“每次查询分销商信息的时候,必须记录下查询者的身份,并修改所有被查询分销商的访问率”来说,图1.17就是正确的了。如图1.25所示的业务流程。

图1.25 业务流程

* 对于图1.21,其真正表达的含义是这样的:在修改分销商信息的同时,必须查询分销商信息,就是批量修改的概念。其界面原型如图1.26所示。分销商名称作为条件,通过模糊查询查询出一览页面,以此作为前提,修改分销商的信息。

图1.26 批量修改的界面原型

* 对于图1.22,其真正表达的含义是这样的:在修改分销商信息的时候,可以查询分销商信息,通过界面原型可以更好的理解其意义,如图1.27所示。

图1.27扩展的查询用例


用例如何画,分析师如何看是必须掌握的,这样对于一个团队项目的成功有很大的好处。

摘自:人民邮电出版社的《揭密J2EE项目开发的70个问题》.

搜索更多相关主题的帖子: 分析师 
2007-10-17 10:33
快速回复:[原创]分析师如何看用例?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017287 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved