当需要设计一个系统或者掌握一个系统时,总是有很多边界、架构需要掌握,但是既要整理需求、规划业务架构,又要技术选型、指定技术架构,甚至还要考虑系统性能、安全性、可靠性等非功能需求,最后要落实到物理架构。很容易乱,遗漏关键内容,导致架构设计的质量不高。
当面对复杂问题时,最有效的解决思路就是“分而治之”。同样的在架构设计上可以使用“5视图法”,将设计的复杂系统从5个不同的维度、用5个不同的视图进行分析思考。只要把这5个维度的问题都思考清楚、做出来的架构设计就是全面的、高质量的。
五大视图参见 温昱《软件架构设计》及孙玄《架构真意》
五大视图
- 逻辑视图: 以需求为设计依据,业务驱动技术
- 数据视图:数据是对业务流程的梳理,抓住了数据结构、以及这些数据架构的处理,就抓住了功能性需求的核心。
- 开发视图:通过数据架构和逻辑架构,就可以选定开发架构,比如技术选型。
- 运行视图:对非功能性需求的分析,包括系统运行态的性能、安全、响应速度、吞吐量。这块不好通过图形表达。
- 物理视图:所有的架构最终都要落到物理机或虚拟机上。包括网络拓扑、资源设备、带宽等等。才可以支撑起运行架构。
逻辑视图
- 相关方:客户、用户、开发组织管理者、BA
- 视角:系统的功能元素,以及他们接口、职责、交互
- 主要元素:系统、子系统、功能模块、子功能模块、接口。
- 用途:开发组织划分(如订单、会员、客服模块分不同项目小组来完成),成本/进度的评估。