写点什么

架构文档编写

用户头像
金桔🍊
关注
发布于: 2020 年 06 月 10 日

本文目前只是对于架构师训练营课程的简单总结,有部分自己的总结,但是大部分还是将李智慧老师的课程内容和文档直接记录一遍,希望在将来进一步运用的过程中,返回来能把文字描述和示图都用自己的方式表达出来



架构文档是架构师表达自己架构设计的呈现方式之一,没有人能知道别人脑子中的想法,除非被表达出来。架构文档中,大到系统部署,小到方法实现都可以通过文字和视图一一呈现,方便与人交流,进一步完善自己的设计。因此编写架构文档也是架构师的基本工作之一。



何为软件架构



软件架构是关于软件整体和组件的抽象描述。架构需要满足相关方的需求

架构的组成包括:



  • 架构元素:系统有些什么,有哪些服务器组成,哪些模块,哪些系统

  • 元素间关系:类之间关系,比如是继承还是依赖关系,服务器之间的关系,系统是如何交互的

  • 架构:架构元素和元素间的关系组成了架构

  • 系统

  • 架构文档:架构元素和元素间关系通过架构文档进行表现

  • 架构视图:架构视图组成了架构文档

  • 相关方:架构视图是为相关方写的。相关方很重要,因为只有从相关方的视觉出发,才能写出合适的文档。你的文档可能很正确,很完美,但是并不是合适的。

  • 关注点:不同的相关方的需求不同,架构视图展现可能不同



架构视图

架构视图组成了架构文档,架构师的基本功之一

4+1架构视图模型

一个架构是无法从一个方面来阐述明白的,面对的相关方不同,大家关注点不同,所以我们需要从不同的视觉去描述一个架构。4+1视图模型就是这样去做的,它传达了的就是也正是这样一种重要理念:根据不同的目的和用途,通过不同的视图去表达架构,是立体的,多方面的,多视角的展现。



4+1视图分别是:【逻辑视图】,【过程视图】,【物理视图】,【开发视图】围绕【场景视图】 展现

各个视图的关注点不同,相关方不同

逻辑视图

关注逻辑功能,相关方是客户,用户,开发组织管理者

开发视图

关注如何实现,相关方是开发,测试,指导开发组织设计和实现

物理视图

关注物理节点的部署,相关方是系统集成商,运维

过程视图

是关于系统运行时线程,进程关系的,相关方是性能优化的人员

场景视图

描述用例的使用场景,相关方是用户



通过UML进行软件架构

4+1使用软件建模语言表现

什么是模型

模型是系统的完整的抽象,是人们对某领域特定文档理解和认识

架构师将头脑中的设计投射到模型上,将现实中的问题抽象成领域问题,抽象成业务问题,提取需求,针对需求对软件进行设计



目的

模型的目的是为了与人沟通,查看验证系统是否合理

何时画

讨论,交流时画

何处画图

任何工具都可以,白板,visio,draw.io



统一建模语言UML



UML用来描述问题领域,构思软件的设计,已完成的软件实现。

通用模型元素

在图中使用的概念统称为模型元素



模型元素与模型元素之间的连接关系也是模型元素

常见关系:



依赖,关联:关联是更强的依赖关系

继承,实现:继承是继承父类,实现是实现接口

聚合,组合:聚合表示整体和部分的关系,组合的部分生命周期一致

UML图的分类

根据对象间关系是否会随着时间变化,大致可以UML图分为静态和动态两类



静态模型

描述类,对象和数据结构间的关系

  • 用例图:描述功能需求,需求分析阶段绘制

  • 对象图:不常用



  • 类图:详细设计阶段



  • 组件图

  • 包图:不常用

  • 部署图:不常用



动态模型

UML中的消息

简单消息:谁调用谁

同步消息:对象间的消息,即方法的调用

异步消息:对象发出消息后继续进行



描绘执行流程或实体状态变化

  • 协作图:不常用

  • 序列图:也叫时序图,是任何对象的时序,调用关系,可以在任何阶段画



  • 活动图:泳道,描述不同领域的关系,可以在任何阶段绘制



  • 状态图:描述状态变迁,需求分析阶段,详细分析阶段



实现模型

描述系统实现时的特性,包括源代码的静态结构和运行时的实现结构

包括

  • 组件图

指出模块的边界和关系,在概要设计阶段绘制,关键是组件的划分

  • 部署图



如何写文档

文档应该从粗到细,从大到小

以下取自李智慧老师提供的架构文档模板

1 设计概述

……系统是⼀个……的系统,是公司……战略的核⼼系统,承担着公司……的⽬标任务。

1.1 功能概述

系统主要功能包括……,使⽤者包括……。

1.2 ⾮功能约束

……系统未来预计⼀年⽤户量达到……,⽇订单量达到……,⽇PV达到……,图⽚数量达到

……。

1. 查询性能⽬标:平均响应时间<300ms,95%响应时间<500ms,单机TPS>100;

2. 下单性能⽬标:平均响应时间<800ms,95%响应时间<1000ms,单机TPS>30;

3. ……性能⽬标:平均响应时间<800ms,95%响应时间<1000ms,单机TPS>30;

4. 系统核⼼功能可⽤性⽬标:>99.97%;

5. 系统安全性⽬标:系统可拦截…… 、……、……攻击,密码数据散列加密,客户端数据

HTTPS加密,外部系统间通信对称加密;

6. 数据持久化⽬标:>99.99999%。

2 系统部署图与整体设计

系统上线时预计部署……台物理机,……个⼦系统,和公司……系统交互,和外部第三⽅……

个系统交互。

2.1 系统部署图



⼦系统1的功能职责为……,部署……台服务器,依赖……和……⼦系统,实现 ……功能。

⼦系统2参照⼦系统1来写。

2.2 下单场景⼦系统序列图



1. 下单时,⼦系统先发送……消息到⼦系统3,⼦系统3需要执⾏……完成……处理,然后发

送……消息到财务系统,消息中包含……数据。

2. 收到……的处理结果……后,⼦系统1发送……消息到……⼦系统2……。

2.3 退款场景⼦系统序列图



1. 退款⼦系统先发送……消息到⼦系统3,⼦系统3需要执⾏……完成……处理,然后发

送……消息到财务系统,消息中包含……数据。

2. 收到……的处理结果……后,⼦系统1发送……消息到……⼦系统2……。

2.4 退款场景⼦系统活动图如图所示:



1. 退款开始时,⼦系统1处理XXX,然后判断m的状态,如果m为真,请求⼦系统3处理

ZZZ,如果m为假,⼦系统继续处理ZZZ并结束。

2. ⼦系统3处理ZZZ后,⼀⽅⾯继续处理XYZ,⼀⽅⾯将……消息发送给财务通进⾏AAA处

理。

3. ⼦系统在处理完XYZ后,返回⼦系统继续梳理YYY,然后退款处理结束。

3 ⼦系统1设计

⼦系统1的主要功能职责是……,其中主要包含了……组件。

3.1 ⼦系统1组件图



⼦系统1包含6个组件:

组件1的功能主要是……,需要依赖组件2完成……,是⼦系统1的核⼼组件,⽤户……请求主

要通过组件1完成。

同样的,组件2也可以参照组件1来这样写。

3.1.1 场景A组件序列图



对于场景A,⾸先组件1收到⽤户消息CCC,然后组件1调⽤组件2的XXX⽅法……。

3.1.2 场景B组件活动图

在场景B中,⾸先组件收到……消息,开始处理……,然后判断……,如果为true,那

么……,如果为false,那么……。

3.2 组件1设计

组件1的主要功能职责是……,其中主要包含了……类。

3.2.1 组件1 类图Class1



实现接⼝Interface1,主要功能是……,Class1聚合了Class2和Class3,共同对外提

供……服务,Class1依赖Class4实现……功能,Class4……。

3.2.2 场景A 类序列图

在场景A中,当外部应⽤调⽤类1的create⽅法时,类1……。

3.2.3 对象1状态图对象1

运⾏时有4种状态,初始状态是状态1,当条件1满⾜是,状态1转换为状态2,当条件3

满⾜时,状态2转换为状态4……。

3.3 组件2设计

重复上⾯的格式。

4 ⼦系统2设计

重复上⾯的格式



用户头像

金桔🍊

关注

还未添加个人签名 2018.04.11 加入

还未添加个人简介

评论

发布
暂无评论
架构文档编写