设计(掌控)系统--五大视图就够了

当需要设计一个系统或者掌握一个系统时,总是有很多边界、架构需要掌握,但是既要整理需求、规划业务架构,又要技术选型、指定技术架构,甚至还要考虑系统性能、安全性、可靠性等非功能需求,最后要落实到物理架构。很容易乱,遗漏关键内容,导致架构设计的质量不高。

当面对复杂问题时,最有效的解决思路就是“分而治之”。同样的在架构设计上可以使用“5视图法”,将设计的复杂系统从5个不同的维度、用5个不同的视图进行分析思考。只要把这5个维度的问题都思考清楚、做出来的架构设计就是全面的、高质量的。

五大视图参见 温昱《软件架构设计》及孙玄《架构真意》

五大视图

  1. 逻辑视图: 以需求为设计依据,业务驱动技术
  2. 数据视图:数据是对业务流程的梳理,抓住了数据结构、以及这些数据架构的处理,就抓住了功能性需求的核心。
  3. 开发视图:通过数据架构和逻辑架构,就可以选定开发架构,比如技术选型。
  4. 运行视图:对非功能性需求的分析,包括系统运行态的性能、安全、响应速度、吞吐量。这块不好通过图形表达。
  5. 物理视图:所有的架构最终都要落到物理机或虚拟机上。包括网络拓扑、资源设备、带宽等等。才可以支撑起运行架构。

逻辑视图

  • 相关方:客户、用户、开发组织管理者、BA
  • 视角:系统的功能元素,以及他们接口、职责、交互
  • 主要元素:系统、子系统、功能模块、子功能模块、接口。
  • 用途:开发组织划分(如订单、会员、客服模块分不同项目小组来完成),成本/进度的评估。

数据视图

开发视图

  • 相关者: 开发及测试
  • 视角:系统如何开发实现
  • 主要元素:描述系统的层,分区,包,架构,系统通用服务,业务通用服务。类和接口,系统平台和相关基础框架。异常处理边界。
  • 用途:知道开发组织设计和开发实现

运行视图

物理视图

运维人员、devops关注的点,部署应用需要什么规格的机器,多少台,网路如何连通,内外网隔离、硬件软件负载均衡等等。

  • 相关者:系统集成商,系统运维人员
  • 视角:系统逻辑组件到物理节点的物理部署和节点之间的物理网络配置
  • 主要元素:物理节点以及节点的通信

软件建模

UML

流程图

流程图扩展可以用上泳道,描述不同应用或者层次流程的流转。

用例图

类图

时序图

状态图

描述业务主体的状态变迁和触发契机。比如订单状态、用户状态等。

你可能感兴趣的:(java,javaweb,nginx,服务器,运维)