架构师训练营 Week 01
一、食堂就餐卡系统设计
1 设计概述
食堂就餐卡系统是一个利用现代信息技术和自动控制技术的计算机网络系统,它的使用对于加强校园后勤服务的信息化建设,提高服务质量、管理水平和经济效益有重要的作用。
1.1 功能概述
系统中每个消费者都有一张卡,在管理中心注册缴费,卡内记着消费者的身份、余额。使用时将卡插入窗口机则显示卡上金额,服务员按窗口机上数字键,窗口机自动计算并显示消费额及余额。管理中心监视每一笔消费,可打印出消费情况的相关统计数据。
1.2 功能用例图
系统功能包括注册账户、缴费、扣费、查询余额、统计账目,使用者包括消费者、服务员、管理员。
2 系统部署图与整体设计
系统上线时预计部署1台服务器及若干台收银机,3个子系统。
2.1 系统部署图
服务器负责存储消费者账户数据、承担消费事项核算,部署1台服务器,实现接受收银机的查询、扣费功能。
收银机界面的功能职责为查询、扣费等,实现向服务器发出的查询、扣费等请求。
管理员界面的功能职责为维护消费账户数据、打印报表等,实现向服务器发出的查询、更新消费账户、统计账目、报表生成等功能。
3 系统设计
系统的主要功能是存储消费者账户数据、承担消费事项核算、统计账目、报表生成,包含了4个组件。
3.1 系统组件图
消费者账户数据库的功能是存储消费者账户数据。
消费事项的主要功能是承担消费事项核算,需要依赖消费者账户数据库完成用户数据的永久存储,是系统的核心组件,用户的查询、扣费请求主要通过消费事项完成。
收银机界面的主要功能是查询、扣费,需要依赖消费事项完成查询、扣费请求。
管理员界面的主要功能是维护消费账户数据、打印报表,需要依赖消费者账户数据库完成用户数据的永久存储,
3.1.1 注册账户系统时序图
对于注册账户,首先管理员界面生成用户信息,然后管理员界面调用消费者账户数据库的插入消费者数据方法,完成用户注册。之后管理员界面处理缴费信息,管理员界面调用消费者账户数据库的更新消费者数据方法。
3.1.2 消费时序图
在消费场景,首先收银机界面发出请求扣费到消费事项,消费事项需要执行扣费方法完成扣费处理,然后执行消费者账户数据库的更新消费者数据库方法,更新的数据中包含扣费事项数据。
二、学习总结
1 什么是软件架构
软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件架构不限于大型网络架构(如,淘宝网),中小项目也需要有架构。架构师的工作产出是一个软件架构,而软件架构需要架构文档来体现。
架构文档是系统架构的描述,包含架构视图,如,部署图、时序图、类图等。
相关方是架构文档的接受者,如,老板、项目经理、产品经理、工程师、运维测试等,因为他们各自有不同的额关注点,所以需要向他们分别提供不同版本的架构文档,更好地展现系统架构中他们所关注的重点。
架构设计,首先要了解相关方的诉求,相关方需要什么内容,而且架构的设计要与相关的能力匹配。面对不同相关方,软件架构的侧重点也是不同的;同样,不同的时间、不同的场景,软件架构侧重点也不同。架构设计,应该要设计出适合的架构,而不是最好的架构。
2 什么是模型
模型是系统的抽象,将某个领域的问题进行抽象,设计者对于该领域的理解都放在模型之中,将思考付诸于图形的方式。
2.1 4+1视图模型
“4+1”视图模型从5个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。
每一个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容。
2.2 UML统一建模语言
2.2.1 UML图的分类
静态图--通过描述类、对象和数据结构以及它们之间存在的关系,来描述软件要素中不变的逻辑结构。
用例图(Use Case Diagrams)
对象图(Object Diagrams)
类图(Class Diagrams)
组件图(Component Diagrams)
包图(Package Diagrams)
部署图(Deployment Diagrams)
动态图--通过描绘执行流程或者实体状态变化的方式,来展示软件实体在执行过程张的变化过程。
协作图(Collaboration Diagrams)
序列图(Sequence Diagrams)
活动图(Activity Diagrams)
状态图(State Diagrams)
2.2.2 模型元素间关系
模型元素与模型元素之间的连接关系也是模型元素
泛化与继承,继承关系是泛化关系的反关系,也就是说子类是从父类继承的,子类是对父类的泛化。
聚合与组合的区别,在于声明周期的不同,组合的对象是具有同一生命周期的,而聚合则不是。
3 架构视图
3.1 需求分析阶段
用例图--功能场景
活动图--关键业务的处理流程
状态图--关键的状态对象业务变迁
时序图--当前系统和外部系统的调用关系
3.2 概要设计阶段
部署图--整体的架构设计
时序图--子系统间的调用
活动图--子系统的处理过程
组件图
3.3 详细设计阶段
类图
时序图--类间的调用
状态图--如枚举变量或布尔变量的变化
活动图--方法的调用
版权声明: 本文为 InfoQ 作者【Wancho】的原创文章。
原文链接:【http://xie.infoq.cn/article/09f40c7b55979ea4b28c441a5】。文章转载请联系作者。
评论