[全程建模]关于Actor与外部系统的对话

北京-FireSpider 2013/2/4 20:45:25

青润老师在线吗?

北京-FireSpider 2013/2/4 20:51:30

 被动的Actor好像真的存在呀。在邱郁惠的《系统分析师UML用例实战》的第47页有一个例子:购物网站中有一个用例“刷卡结账”,它有一个被动的Actor,是“信用卡系统”。

青润  21:59:21

呵呵,邱的做法也是错误的。

我看过她的那本书,里面在这方面,确实错了。

北京-FireSpider   22:00:21

这个问题值得关注,因为涉及对外接口这一块。

哪比如“打印”用例需要连接到“打印机设备”,应该如何表示呢?

青润  22:01:14

这些都属于外部系统

只需要通过系统表示即可。

至于这些系统内部如何运行,是不需要考虑的,因为这不是你要开发的部分。

北京-FireSpider   22:01:47

画成一个方框?

青润  22:02:42

系统本来就分为外部和内部,内部还要分为各个实施阶段,也就会出现本次开发需要实现的,和不需要实现的。

不需要实现的部分与外部系统是同等的表示方式。

如果不是这样表示,难道你也要把这些uc表示成actor么?

北京-FireSpider   22:03:23

嗯,画成Actor感觉是挺怪异的。

但,如果一个用例是一个WebService的方法,是需要外部系统主动调用的。哪这个外部系统作为主动调用方,可以画成Actor吗?

青润  22:04:21

我从02年开始就一直强调actor必须是可以主动发起行为的,因此数据库,时钟等都不是actor

另外,还有一个很多人都犯的错误,那就是对actor上进行类设计。

那也不是actor,因为这也只是外部的接口调用,如果不是接口调用,那就不是外部系统了。

如果外部系统可以通过非接口对你的系统中的方法进行调用操作,那你的系统就会出现严重的安全隐患,或者属于被操控。

青润  22:05:21

这在系统设计中是完全不能容忍的。

北京-FireSpider   22:07:55

主动发起系统行为的,通常是人,但也可以是系统,还可以是设备的按钮等。

青润  22:08:11

设备的按钮,也是人去操作的。

如果是时间控制器,那也是人进行的设定,然后才能启动,所以,一切非主动行为者,都不能定义为actor

北京-FireSpider   22:08:34

但如果是一个远程系统的话,就不是了。

青润  22:09:04

那就是接口,也同样不是actor

北京-FireSpider   22:09:46

比如,一个C# Remoting服务器在运行时暴漏了Rometing的接口,客户端通过接口来调用他的功能。

青润  22:10:31

无论任何一种,你都可以找到actor的存在,如果找不到,那就肯定是系统设计中出现了问题,或者没有调研清楚需求。这一点,不容置疑。

北京-FireSpider   22:11:57

不过,要是通过关注客户端的的人,是不是有点太间接了?

青润  22:12:19

这是个原则,不是说可以谈判的,对于系统,必须弄清楚原委,否则,肯定会出现设计问题。

如果你找不到实际的actor,那就会出现问题,或者隐藏的actor出现。

北京-FireSpider   22:12:51

主要是,不知道哦客户端的系统是怎么开发的,人触发的操作经过多少个接口调用以后,才调用到服务器端接口的。

青润  22:13:32

你自己思考一下你假设得这个过程,这个过程如果出现了这么多的接口调用,是否违反了系统设计原则?

北京-FireSpider   22:15:31

我想想

青润  22:16:53

嗯。考虑一下OOAD的设计原则,然后再来思考你刚才提出的这些问题。

北京-FireSpider   22:19:01

好的

先谢谢老师,我思考思考。

青润  22:19:25

好的。不客气。

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

转载于:http://blog.itpub.net/257598/viewspace-759434/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值