所在位置:答疑 - 内容   
某本书上的一张序列图评点
 

贝贝 2019-8-24 10:56

潘老师,这个图是不是不太对。插卡,输入密码并不是ATM的职责?

UMLChina潘加宇:

这种图用建模思维一挤压,脓包太多了。

问题一、几个生命线上的实例,抽象级别不一致。

ATM用户--系统(人肉系统)

ATM--系统(非人肉系统)

Bank的意思是银行,那是个组织,不应和系统并列,应该写清楚是和银行的哪个系统交互,可能是一个人肉系统,也可能是一个人肉系统。

问题二、责任大小不清

既然是系统之间的交互,责任就不能是插卡,而是系统之间交互的目标,例如"取现金"。

什么情况下可以在消息里写"插卡"?

情况1:分析序列图,这时,对应的实例是"储户界面",而不是"ATM"

情况2:决定使用序列图来表达ATM系统的需求。这种做法不推荐,但如果硬要这样做也不是不行。如果是这样,"插卡"是一个步骤是可以的,但要做以下修改:

a、"ATM"三个字应该改为"系统",不需要出现系统的名字。

b、"银行系统"的自反消息“验证”属于目标系统能检测的范围之外,删掉。

问题三、责任主体不清

"提示输入密码"是ATM的责任,不是人的责任,如果要画,应该改为自己指自己。

问题四、返回消息的问题

a、能不画就不画

b、即使画,上面写的东西相当于调用的返回值,应该是一个名词,例如"验证结果",而不是一个动词。

问题五、执行者的名字

ATM的执行者叫"ATM用户","系统给谁用,给用户用呗"这种命名是没有经过任何思考得到的,没有价值,和"可乐卖给谁,卖给想喝可乐的人"、"该出哪张牌,出最该出的那张"一样,属于正确而无用的废话。

改名为领域的用语"储户"甚至"市民"、"白领"、"大妈"都要更好。