软件架构文档
架构设计⽂档模板
在软件设计的不同阶段应该设计不同的UML模型,将不同阶段输出的UML模型图放在⼀个⽂ 档中,对每张模型图配以适当的⽂字说明,就构成⼀篇设计⽂档。 对于规模不太⼤的软件系统,我们可以将概要设计⽂档和详细设计⽂档合并成⼀个设计⽂档。 这⾥,我会展现⼀个设计⽂档示例模板,你可以参考这个模板编写你的设计⽂档。 ⽂档开头是设计概述,简单描述业务场景要解决的核⼼问题领域是什么。⾄于业务场景,应该 在专⻔的需求⽂档中描述,但是在设计⽂档中,必须要再简单描述⼀下,以保证设计⽂档的完 整性,这样,即使脱离需求⽂档,阅读者也能理解主要的设计。 此外,在设计概述中,还需要描述设计的⾮功能约束,⽐如关于性能、可⽤性、维护性、安全 性,甚⾄开发和部署成本⽅⾯的设计⽬标。 然后就是具体的设计了,第⼀张设计图应该是部署图,通过部署图描述系统整个物理模型蓝 图,包括未来系统⻓什么样。 如果系统中包含⼏个⼦系统,那么还需要描述⼦系统间的关系,可以通过⼦系统序列图,⼦系 统活动图进⾏描述。 ⼦系统内部的最顶层设计就是组件图,描述⼦系统由哪些组件组成,不同场景中,组件之间的 调⽤序列图是什么样的。 每个组件内部,需要⽤类图进⾏建模描述,对于不同场景,⽤时序图描述类之间的动态调⽤关 系,对于有复杂状态的类,⽤状态图描述其状态转换。 具体示例模板如下:
1 设计概述 ……系统是⼀个……的系统,是公司……战略的核⼼系统,承担着公司……的⽬标任务。
1.1 功能概述
系统主要功能包括……,使⽤者包括……。
1.2 ⾮功能约束
……系统未来预计⼀年⽤户量达到……,⽇订单量达到……,⽇PV达到……,图⽚数量达到 ……。
- 查询性能⽬标:平均响应时间<300ms,95%响应时间<500ms,单机TPS>100;
- 下单性能⽬标:平均响应时间<800ms,95%响应时间<1000ms,单机TPS>30;
- ……性能⽬标:平均响应时间<800ms,95%响应时间<1000ms,单机TPS>30;
- 系统核⼼功能可⽤性⽬标:>99.97%;
- 系统安全性⽬标:系统可拦截…… 、……、……攻击,密码数据散列加密,客户端数据 HTTPS加密,外部系统间通信对称加密;
- 数据持久化⽬标:>99.99999%。
2 系统部署图与整体设计
系统上线时预计部署……台物理机,……个⼦系统,和公司……系统交互,和外部第三⽅…… 个系统交互。
2.1 系统部署图 ⼦系统1的功能职责为……,部署……台服务器,依赖……和……⼦系统,实现 ……功能。 ⼦系统2参照⼦系统1来写。
2.2 下单场景⼦系统序列图
- 下单时,⼦系统先发送……消息到⼦系统3,⼦系统3需要执⾏……完成……处理,然后发 送……消息到财务系统,消息中包含……数据。
- 收到……的处理结果……后,⼦系统1发送……消息到……⼦系统2……。
2.3 退款场景⼦系统序列图
- 退款⼦系统先发送……消息到⼦系统3,⼦系统3需要执⾏……完成……处理,然后发 送……消息到财务系统,消息中包含……数据。
- 收到……的处理结果……后,⼦系统1发送……消息到……⼦系统2……。
2.4 退款场景⼦系统活动图
如图所示:
- 退款开始时,⼦系统1处理XXX,然后判断m的状态,如果m为真,请求⼦系统3处理 ZZZ,如果m为假,⼦系统继续处理ZZZ并结束。
- ⼦系统3处理ZZZ后,⼀⽅⾯继续处理XYZ,⼀⽅⾯将……消息发送给财务通进⾏AAA处 理。
- ⼦系统在处理完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设计 重复上⾯的格式。
软件架构文档
http://yoursite.com/2022/03/16/微服务/架构师训练营/架构方法/1-5、软件架构文档/