接下来考虑本书的贯穿案例PASS系统,如何借助鲁棒图进行初步设计呢?
再次明确以下几点:
初步设计的目标是发现职责,为高层切分奠定基础。
初步设计不是必须的,但当待设计系统对架构师而言并无太多直接经验时,则强烈建议进行初步设计。
基于关键功能(而不是对所有功能),借助鲁棒图(而不是序列图)进行初步设计。
下面,一起思考如何针对"实时检查处方"功能进行初步设计--重点体会"增量建模"的自然和强大。
首先,识别最明显的职责。如图8-9所示,先识别出了最不可或缺的、体现整个功能价值所在的与"处方检查结果"相关的几个职责。
接下来开始考虑职责间的关系,并发现新职责。检查结果是如何产生的呢?检查这个控制对象,读取处方和用药规则信息,最终生成了处方检查结果。如图8-17所示。
OK,如此一来,解决了"结果是怎么来的"这个问题。如图8-18所示。
继续以同样的思维方式解决问题。如图8-19所示,PASS系统自动检查处方,是由HIS系统中医生工作站的调用触发的,处方信息也是通过某种方式(例如参数或XML文件)从HIS医生工作站获得的。
实时检查处方最终的鲁棒图如图8-20所示,它又进一步考虑了"记录违规用药"这一具体功能场景的支持。
如前文所述,概念架构设计时推荐只对关键功能进行鲁棒图建模。例如,另一个关键功能"自动更新用药规则"的鲁棒图如图8-21所示。