系统架构设计方法论
软件架构设计方法体系涵盖了预想架构(PA)概念架构(CA)细化架构(RA)三个阶段和一个贯穿环节。
一、预备架构
预备架构阶段主要是通过系统的理解需求和挖掘潜在需求以此建立需求大局观并根据架构驱动因素及五维关注点来确定架构设计方向和蓝图。
1.1 需求结构化
执行要点:根据重点功能、质量属性、约束条件、五维关注点贯穿可持续演进与设计的原则推导出隐藏或遗漏的需求并整理出各需求之间的关联关系。
需求类型:
功能需求:更多体现各级直接目标的需求。
质量属性:包括运行期属性和开发属性。
约束需求:包括业务环境因素+使用环境因素+构建环境因素+技术环境等因素。
1.2 分析约束影响
在需求结构化的基础上,充分考虑根据架构驱动因素及五维关注点等约束需求,并分析约束影响、识别背后的衍生需求。主要的约束因素有业务环境因素、使用环境因素、构建环境因素、技术环境因素等。
方法一
推导法:在需求二维矩阵基础上,从上往下,从右往左逐步推导分析。
查漏法:检查相关属性和属性是否有遗漏。
1.3 确定关键质量
在需求架构化的基础上确定关键质量,着重完成如下两项任务:
& 根据系统所在领域的特点及系统规模因素,确定架构设计重点支持哪些属性。
& 分析上述质量属性之间的制约关系,制定权衡、折衷、高优先级的具体策略。
确定关键质量的原则:
1.4 确定关键功能(关键需求)
确定关键功能的原则
二、概念架构
重大需求即关键功能(包括功能需求、质量属性、约束需求)塑造慨念架构,针对重大需求、特色需求、高风险需求给出高层次的解决方案。
2.1 根据关键功能并基于鲁棒图完成初步设计
初步设计识别出职责和职责链,系统的每个功能都是由一条“职责协作链”组成的,初步设计的思路正是通过为功能规划职责协作链来发现职责。后续的高层分割都依赖前期识别的职责,因为每个高层分割单元都是职责的承载体,而分割的目的也恰恰在于规划高层的职责模型。
关键功能子集-->职责的协作、职责分组(使用鲁棒图进行分析)-->高层分割
2.2 根据架构原则、约束条件及相关的因素确定系统架构模式并结合初步设计完成高层分割
根据架构原则、约束条件及相关的因素确定系统架构模式并结合初步设计完成高层分割。
2.3 高层分割
系统比较复杂需要进行高层切分,首先把大型的复杂系统按照不同的职责划分成多个较小的独立系统(微服务)然后针对较小的系统进行分层处理。
划分子系统的策略:
1 分层的细化
2 分区的引入
3 机制的提取
划分子系统的原则:
1 职责不同的单元划分到不同的子系统。
2 通用性不同大单元划分到不同的子系统。
3 需要不同开发技能的功能划分到不同的系统。
4 兼顾工作量的均衡,进一步切分较大的系统。
架构细化阶段需要进一步权衡和支撑所有利益相关人的需求并给出完整的架构视图,每个视图都从不同的相关人的角度描述系统。
3.1上下文视图
上下文视图用于描述和显示定义系统范围、职责、边界及与外部环境的依赖关系和交互。其目的是理解目标系统所处的上下文环境(网络,更多范畴)的结构、业务及动态特性,并确定系统与外部的边界以及与外部的实现。
3.2 逻辑视图(功能视图)
主要是针对功能模块。
3.3 数据视图
针对数据
3.4 并发视图
针对分布式并发处理。
3.5 技术视图
针对系统使用到的技术栈。
3.6 开发视图
针对开发人员。
3.7 部署视图
针对软件部署。
3.8 运维视图
针对运维。
3.9 生态视图
针对系统生态。