作者 内容
 geyun   有关授权后的用例如何表达?
 

如果在一个系统中,拥护A拥有a权限,但是B用户没有该权限进行a操作.但是在系统中,A可能对B用户对a操作进行授权,这样B用户也可以进行a操作,请问这样的例子该如何用用例表达呢?

 03/08/23 12:08 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 orientphoebus   我觉得这个关系用Use case不能直接表示。因为一直以来:
 

Use case 的缺点就是无法表示连接关系。

这里B的a操作必须以A的受权操作未前提, 这种连接关系是无法用一个Use case表示的。

个人觉得UML的目的是用各种类型的图,分别表示问题的各个方面, 它并没有希望用一个图表示出一个(稍微复杂一些的)问题的所有内容。

所以这个问题可以用Use case简单表示A和B都有a操作, 然后用Activity 和 state 图来表示关系。
 

 03/08/24 03:30 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 zwlpower   回复: 有关授权后的用例如何表达?
 

以我理解如下:
还是Actor 的问题,Actor的定义是具有相同属性和操作的群集,即是在设计中,可转为类。
用户是一个具体的对象。
Actor colA 拥有两个用例一个是a操作,一个授权。
对于如何授权,即是活动图,交互图描述。

这个Actor问题上次已对geyun说过,注意方法。

 03/08/24 03:43 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 orientphoebus   Actor在设计中可转为类? 我想是说具体的Actors能在设计中合并。但是这里问题的
 


A & B如果在一个Use case图中表示, 不应合并成一类。 因为A和B拥有不同的Use Case, 即不同的操作: A拥有“受权其他用户”这一操作, 而B没有。


Use case diagram可以参考这个:
http://umlchina.smiling.com/group/photo/photoshow.ecgi?photo_id=821674&group_id=9986

至于,然后是用activity diagram 或者 sequence diagram 还是state chart 来表示受权关系?其实就决定了具体的设计方案:

比如用这张state chart, 表示Actor A的某个Operation会改变B的状态,对应于B, 他必须拥有一个field/column 来存储自己的状态(对应的class diagram应该心中有数了):
http://umlchina.smiling.com/group/photo/photoshow.ecgi?photo_id=821642&group_id=9986

但是假如您用下面这个activity diagram 和 sequence diagram表示,可能的实现 -- 用一个单独的table来存储所有已经被受权用户的ID:
http://umlchina.smiling.com/group/photo/photoshow.ecgi?photo_id=821646&group_id=9986
http://umlchina.smiling.com/group/photo/photoshow.ecgi?photo_id=821672&group_id=9986

 03/08/24 12:07 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 zwlpower   举个例子吧,就如这个网站。。。
 

角色:管理员和会员

管理员:
1.可以授权会员权限。
2.可以。。。。。

会员:
1.可以发表文章。
2.可以。。。

设计时,你可以把管理员继承会员,并会扩展了管理操作;
也可以把管理员和会员分开。
熊掌和鱼,任君选择。没有必然,只有习惯。

还是老一句,把问题建在自已熟悉的模型上,事半功倍。但不反对学习别人的模型。

 03/08/25 01:53 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 orientphoebus   请看spide的帖子:继承关系不必要在use case图中表示:
 

把A和B用继承关系实现还是分别两个“类”,不用在use case中表现,应该在其他图中表现。

另外正如您在上面帖子说的“Actor的定义是具有相同属性和操作的群集”, 这里A和B具有不同的“操作”,虽然某一个操作"a"是在某种条件下相同, 但是授权(authorization)这个操作对于B来说完全不存在,所以A和B不能合并。

就算以后您在实现的时候把A从B(这个更一般的用户类型)中继承,然后派生出A,他有一个独有的操作--授权,这个关系没有必要也不可能在use case 中表现,但是use case图是最贴近用户业务概念的图,它不能太抽象,所以它必须区分A和B.

除非您理解的是authentication -- 每个用户进入系统的“认证”,那么任何Actor都有这个过程,A和B可以合并,但是这里不是讲“认证”而是“授权”

 03/08/25 02:12 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 geyun   谢了,各位前辈!!
 
 03/08/25 13:38 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首