贝贝 2019-8-24 10:56
潘老师,这个图是不是不太对。插卡,输入密码并不是ATM的职责?
UMLChina潘加宇:
这种图用建模思维一挤压,脓包太多了。
问题一、几个生命线上的实例,抽象级别不一致。
ATM用户--系统(人肉系统)
ATM--系统(非人肉系统)
Bank的意思是银行,那是个组织,不应和系统并列,应该写清楚是和银行的哪个系统交互,可能是一个人肉系统,也可能是一个非人肉系统。
问题二、责任大小不清
既然是系统之间的交互,责任就不能是插卡,而是系统之间交互的目标,例如"取现金"。
什么情况下可以在消息里写"插卡"?
情况1:分析序列图,这时,对应的实例是"储户界面",而不是"ATM"
情况2:决定使用序列图来表达ATM系统的需求。这种做法不推荐,但如果硬要这样做也不是不行。如果是这样,"插卡"是一个步骤是可以的,但要做以下修改:
a、"ATM"三个字应该改为"系统",不需要出现系统的名字。
b、"银行系统"的自反消息“验证”属于目标系统能检测的范围之外,删掉。
问题三、责任主体不清
"提示输入密码"是ATM的责任,不是人的责任,如果要画,应该改为自己指自己。
问题四、返回消息的问题
a、能不画就不画
b、即使画,上面写的东西相当于调用的返回值,应该是一个名词,例如"验证结果",而不是一个动词。
问题五、执行者的名字
ATM的执行者叫"ATM用户","系统给谁用,给用户用呗"这种命名是没有经过任何思考得到的,没有价值,和"可乐卖给谁,卖给想喝可乐的人"、"该出哪张牌,出最该出的那张"一样,属于正确而无用的废话。
改名为领域的用语"储户"甚至"市民"、"白领"、"大妈"都要更好。