架构师 3 期 3 班 -week1- 作业
题目:
食堂就餐卡系统设计
* 系统中每个消费者都有一张卡,在管理中心注册缴费,卡内记着消费者的身份、余额。
* 使用时将卡插入收款机则显示卡上金额,服务员按收款机上数字键,收款机自动计算并显示消费额及余额。
* 管理中心的管理员监视每一笔消费,可打印出消费情况的相关统计数据。
请设计系统用例图,组件图,组件时序图,部署图。
作业
用例图
说明:
插卡和输入金额,都是收款机本身提供的功能,而不是系统提供的,系统只给收款机提供读卡和扣款功能,所以在交易过程中,我只画了收款机一个角色。消费者和收银员都只是收款机这个角色的功能。
题目只描述了用户办卡和消费的信息,不确定是否需要管理服务员、管理员的相关信息。所以用例中没有服务员和管理员的维护用例
组件图
说明
服务员:由于题目中的部分,服务员的信息太少,是从属店铺,还是食堂没有店铺的概念,服务员都从属管理中心都未知,所以未考虑服务员的信息维护
管理员:这里我只把管理员当作是需要维护信息的对象,管理员不直接使用用户主件,而是通过登录管理中心,查询用户及统计报告
疑惑
是否需要将卡和用户分离?
用户这个组件是肯定需要的,考虑单一职责的原则,我个人觉得卡应该被分离出来,也为了后续卡的管理(包括挂失,补卡等),不知道算不算过度设计。
组件时序图
消费者消费时序图
消费者注册/缴费时序图
注:这里把注册和充值分开了,实际操作中可能是管理员合并注册和首充这2步操作。
管理员查询/统计时序图
疑惑:
我将消费者注册和充值都放在了同一个时序图中,我不清楚这样是不是合理的,还是说要分开?
还有管理员查询和统计,实际上也是2个功能,都放在一个时序图是否合理?
部署图
说明
没有量化要求,未考虑缓存,消息队列等其他中间件,只做最简单的部署
版权声明: 本文为 InfoQ 作者【zbest】的原创文章。
原文链接:【http://xie.infoq.cn/article/0884da961ae9127fcf750b3f5】。未经作者许可,禁止转载。
评论