《一线架构师》主要讲述了软件架构从需求中产生的过程。书中介绍了几种辅助思维的工具:分析需求结构的二维工具;分析非功能需求的目标-场景-决策表等工具。
《一线架构师》介绍的方法分为三步:
第一步:把需求结构化,并分析约束的影响,确定关键功能,确定关键质量。此步中借助的工具,如下所示:
功能 | 质量 | 约束 | |
业务级需求 | |||
用户级需求 | |||
开发级需求 |
质量:在三种需求中需要的质量属性,比如安全性、扩展性等。
约束:约束分为四种:业务约束、用户约束、开发约束、当前技术趋势的约束。
此步的产品是:关键功能、关键质量、重要约束。
第二步:根据第一步的结果,经过初步设计,高层细化,非功能考虑等三步后,产生出概念架构。
在初步设计步骤中,需要用到鲁棒图工具,此工具针对每个关键功能画出鲁棒图。
在高层细化步骤中,根据初步设计中的各个关键功能的鲁棒图,确定各个功能职责模块,并对各个功能职责进行分层。
通过对非功能的考虑来完善上步中的概念架构图。
在第二步中,产生的概念架构,只是关注高度抽象的模块,并不关心模块之间的交互。
第三步:细化架构设计,根据第二步得到的概念架构,进行五视图分析方法,五视图包括:逻辑架构、物理架构、运行架构、开发架构、数据架构。
进行逻辑架构的步骤是:分层细化、分区、机制提取。此三步是从不同维、不同角度去分析,分层属于职责维,分区根据粒度划分,机制属于通用性维。此三步是从结构角度去考虑,然后为了验证完整性,需要利用协作图来查看各个组件组合起来能否协作完成某一关键功能。在此功能中个,完善缺少的功能组件和操作组件。
物理架构:主要考虑节点的物理拓扑、节点间的通信消耗等。
运行架构:主要考虑控制流方面的问题,控制流由进程、线程、中断程序来实现。
开发架构:主要考虑如何进行并行开发,如何划分Project等。
数据架构:主要考虑数据的存贮方式。数据组织方式可分为:独立、集中、子集、复制、组合、分区等六种。
独立是分别存放不同的数据。
集中是所有数据都放在同一数据库中。
复制是两个数据库之间完全复制。
子集是把一个数据库的数据的子集发给其它数据库。
组合是把一个数据库中的数据统计一下发给其它的数据库。
分区是把一个数据库中的数据按水平/垂直方式切分,并发给其它的数据库。
鲁棒图的三个元素:
边界对象:
控制对象:
实体对象:
它们之间的关系:
目标-场景-决策表结构:
目标 | 场景 | 决策 |