我们经常需要向团队里的新人、一起合作的同事、应用负责人等解释应用软件是如何工作的,那么如何才能清晰的阐述整个应用是如何构建并工作的呢?
UML通过使用图表的形式来展现软件组件。主要可以分成两大类:
下方示例并不是完整的各种图表类别,仅选了几种我认为常用的形式
对一个活动和另一个活动之间的协作进行建模,可以看做是流程图的更高版本。 比如可以通过加上泳道来描述销售去会见新客户的一些逻辑
详见活动图表解释
实体的行为不仅依赖于输入,而且和之前的状态有关。比如订单配送状态机
详见状态机图表
以读书逾期为例,可以分别用序列图和通信图来做如下陈述: 序列图:用来阐述对象之间的协作通信
详见序列图
通信图:用来展示对象之间是如何进行通信的
详见通信图
通信图 vs 序列图:二者语义上是一样的,都展示的是一样的信息,不同的是序列图的图表是按照时间进行陈列,而通信图是按照空间
类图表用图表来阐述面向对象系统类、属性、方法、对象之间的关系。比如订单系统的类图可能是这样的:
详见类图
组件图将整个系统分解成各种高层次的抽象(功能),每个组件在系统中都负责一个确定的事情。一个订单的组件可能就是这样
详见组件图
当系统描述过于庞大,可能可读性就会不太好
可以通过这个下图来看到更细节4+1视图模型
详见4+1视图
使用4种不同的粒度的层级来描写软件架构,从最顶层放大可以看到“里层”的实现细节,根据诉求对应到相应层级即可
可以想象看地图的场景,最大级别是可以看到亚洲国家,然后缩放能看到省,依次可以看到更细节的东西,这就是C4的基本思路
以日志的形式记录下来当时选择这种架构的原因。可以自行拟定这个日志的格式,或参考github ADR说明