参考答案:
【问题1】(2分,各1分)
(注:四行顺序可以不同,但是每行必须对应,其中,用例名称及其对应的参与者都正确给2分,只有用例名正确给1分,其余情况不得分)
【问题3】(4分,各1分)
A1:工资系统 A2:菜单管理员
【问题2】(8分,每行2分)
泛化关系(一般/特殊关系、继承关系)。泛化关系描述了一个参与者可以完成另一个参与者同样的任务,并可补充额外的角色功能。
详细解析:
本题考查面向对象系统开发时,采用UML模型进行建模的方法。
此类题目要求考生认真阅读题目说明中对现实问题的描述,使用UML建模时的原则,从中确定用例图、活动图以及图中的各种关系。题目给出了未完成的用例图和活动图,需要根据描述给出参与者、用例、活动图中的活动和符号,以及参与者之间的关系内涵。
用例图是用例建模的一个重要产物,它以图形化的方式将系统描述成用例、参与者及其之间的关系。用例图在高层交流了系统必须处理的业务事件的范围,是描述系统与其他外部系统以及用户之间交互的图形。发起或者触发用例的外部用户称为参与者。为了完成某些业务任务,参与者发起系统活动,即用例。在构建用例图时,常用的方式是先识别参与者,然后确定用例以及用例之间的关系。
UML活动图用于建模系统的过程步骤或活动。构造活动图通常先为用例添加开始和结束点,为用例的主要步骤添加一个活动,从每个活动到其他活动、决策点和终点添加转换,并行活动的地方添加同步条。
【问题1】
识别参与者时,考查和系统交互的人员和外部系统。本题中,与系统交互的人员包括员工、注册到系统的员工(顾客)、餐厅员工、菜单管理员、送餐员以及工资系统。
由“菜单管理员是餐厅特定员工”以及图中A2和图中餐厅员工之间的“是一种”关系可知,A2为菜单管理员;图中还缺少描述中与工资系统的交互,由“……并发送给工资系统”可知,A1为工资系统。
【问题2】
考查用例及其和参与者之间的关系时,通过判断哪一个特定参与者发起或者触发了与系统的哪些交互,来识别用例并建立和参与者之间的关联。
本题中,由“任何员工都可以查看菜单和今日特价”可知,图中缺少用例查看今日特价,对应参与者是员工;由“系统的顾客是……,注册工资支付、……”可知,图中缺少用例注册工资支付,对应参与者是顾客和工资系统;由“餐厅员工是……,可以进行备餐、生成付费请求……发送给工资系统”可知,图中缺少用例“生成付费请求”,对应的参与者是餐厅员工和工资系统;由“菜单管理员是餐厅特定员工,可以管理菜单”可知,图中缺少用例管理菜单,对应的参与者是菜单管理员。
需要注意的是,在注册工资支付所对应的参与者中,虽然没有明确说明要和工资系统交互,但是由“对于注册工资支付的顾客生成付费请求并发送给工资系统”可知,工资支付是由工资系统控制,所以注册也需要和工资系统交互。
【问题3】
在顾客订餐过程的描述中,在“顾客选菜”之前,图中缺少符号和活动。由说明中顾客“可以订餐(如果未登录,需先登录)”可以判断,在系统“显示菜单和今日特价”之后“顾客选菜”之前,需要判断(判定符号 )当前用户身份是否为顾客,如果不是,需先登录;由“……发送E-mail给顾客以确认订餐,同时发送相关订餐信息通知给餐于员工”可知,发送E-mail和通知餐厅员工为并行活动,需要在前后有同步条(或纵向)。
【问题4】
参与者之间的关系表示子类型“是一种”父类型,即泛化关系。其中父类型通常是一个抽象泛化的参与者,可以完成子类型可完成的共同行为,每个具体的子类型继承它,可以完成父类型参与者同样的任务,并可以补充额外的角色功能。