第4章餐馆系统:业务建模接下来的四章将考虑一个简单的案例,并给出一个从需求获取到实现的完整开发过程
我们将考虑一次单独的迭代,它通过统一过程标识的主要工作流之中的四个:即需求、分析、设计和实现,用例子说明UML表示法在软件开发中的使用
由于本案例研究的意图在于强调开发的产品而不是过程,所以不会详细考虑由统一过程定义的这些工作流的结构,而在真正需要的地方将在介绍UML表示法的同时,简略介绍开发中涉及的活动
1非正式的需求要开发的系统的意图是,通过改进为顾客预定和分配餐台的过程,支持一家餐馆的日常经营
这家餐馆当前采用一个手工预约系统,使用的是保存在一个大文件夹中的手写预约单
1是当前的预约单的一个例子,预约单中的每一行对应餐馆中一张特定的餐台
预约是对特定的一个餐台登记的,每个预约中记录有“餐具”的数目,或者预期进餐者的数目,这样就能够分配一个大小适当的餐台
这家餐馆在晚间供应三次餐点,称为“简餐”、“正餐”和“夜点”时段
但如同预约单所表明的,这些时段无须严格遵守,可以预约跨多个时段的时间
最后,每个预约中要记录联系人的姓名和电话
1手工预约单为了记录各种事情,要在预约单上加一个注文
当一行用餐者到来并在他们的餐台就座时,就划掉相应的预约登记
如果他们就座的不是他们预约的餐台,就画一个箭头从最初预约的餐台指向新的餐台
如果顾客打电话取消预约,并不能从表中真正地擦除,而是做一个预约已经取消的注文
其他的信息,比如到什么时间餐台必须空出来,也可以写在预约单上
如果有空闲的餐台,用餐者当然也可以不提前预约就进餐馆用餐,这被称为“未预约的顾客(walk-in)”,并在预约单中作为预约登记以表示餐台的占用,但不记录顾客的姓名或电话
1对计算机化系统的需要这家餐馆的管理人员已经确认了很多与手工系统相关的问题
手工系统速度慢,而且,预约登记单很快就变得难以理解