上周,极客大学推出的李智慧老师《架构师训练营》正式开营了。第一周的内容主要讲述了如何作架构设计,尤其对使用UML进行软件系统建模进行了详细的讲解。
我之前有接触过UML,但并没有很严谨地画过,李老师在课上也说UML其实有很多方言变种,但了解标准的画法和含义有助于我们在工作中更好地进行沟通,既能准确展示自己的想法,又能快速理解别人的设计。
本周的作业如下:
食堂就餐卡系统设计
系统中每个消费者都有一张卡,在管理中心注册缴费,卡内记着消费者的身份、余额。
使用时将卡插入收款机则显示卡上金额,服务员按收款机上数字键,收款机自动计算并显示消费额及余额。
管理中心的管理员监视每一笔消费,可打印出消费情况的相关统计数据。请设计系统用例图,组件图,组件时序图,部署图。
以下是我绘制的图:
用例图
用例图这张图在绘制的时候,我先从作业要求中提取出了参与者和与其相关的动作,因为用例的简单表达就是动宾短语,而参与者就是用例的执行角色。这里“管理中心”稍微有点疑虑,按理说管理中心应该属于系统的组件,而不是使用方,并且还有一个单独的角色叫管理员,但是考虑到消费者去注册卡的时候,接待的人可以算作是管理中心,他不一定是管理员,他要负责在系统中创建卡记录,因此与管理中心直接相关的用例就只有创建卡记录。而查询余额的操作由于是系统内部的操作,所以没有直接的参与者,而是由显示卡余额这个案例来使用。
组件图
组件图组件图相对比较简单,但从实际的代码实现上考虑,尤其是分层架构方面的考虑,显然还有更多隐含的接口层没有展现出来。例如,界面不会直接与ORM/DAO进行交互,之间肯定会有Controller、Gateway等等,这里只是根据用例图提取出了表达用例所必要的组件。
组件时序图
组件时序图需求描述中涉及到的业务场景主要有三种:注册卡、使用卡、统计消费记录,这三个场景是相对独立的、异步的,因此时序图也应当有三幅。这三个场景中都会用到记录操作组件。由于题中没有详细描述管理员可能进行的操作,因此假设其只需要获取统计信息。
部署图
部署图部署图由组件图演化而来,考虑到注册卡、消费、打印统计信息分别会在不同的机器上进行,而管理中心的数据库负责存储所有的卡信息和消费信息,因此部署图大致分为四个节点。
网友评论