2-3 架构设计过程
一、ADD概述
- What is ADD
属性驱动设计
这种方法在软件设计过程中特别关注软件质量属性
完美的架构方案方向是:ADD+DDD(软件质量+业务) -
架构设计流程
ADD架构设计流程 - 架构设计驱动
- 架构需求
- 架构需求(如usercase)
a. 对于售前建议,通常设计快速设计初始解决方案以方便估算
b. 对于全新系统,通常先是确保最小功能上线
c. 对于不断发展的系统,则是新的增量和迭代
- 非功能性需求(质量属性)
a. 性能,可用性、安全性、可测试性等
b. 系统完整(比如异常输入处理)
- 约束
a. 技术或组织能力限制
b. 客户或者团队成员
c. 约束是我们可以利用的点(化劣势为优势) - 其他驱动
- 设计目标
- 特别关注
a. 输入验证
b. 通讯
c. 异常管理和日志记录
d. 部署和更新
e. 数据迁移和备份
f. 代码库的组织
ACDM: Architecting centric design method
process of software Architecting
...
- 为什么需要架构设计方法
- 架构设计决策有共同和可重复利用的部分
- 确保设计内容符合其驱动因素
- 为经营不足的人提供指导
- 架构设计需要广泛的领域知识和多方面因素的思考,系统性方法不容易产生遗漏
二、ADD具体步骤
- step 1评审输入
得到经过评审的需求是ADD开展的前置条件。
架构设计目标
架构的非功能性参数 - step 2选择输入和确定目标
需求任务拆分,分解成很多小目标。
为研发选择参考架构(大数据架构参考)、部署模式、架构风格/模式
- step 3主要做什么
任务分解
分解后端的选择原则(技术难度和复杂度,技术风险,业务重要程度,组织的标准) - step 4选择一个或多个满足迭代中考虑的输入的设计概念
明确设计理念
评估和解决矛盾
- step 5实例化架构元素,分配职责和定义接口
做技术与组件选型(思维导图辅助) - step 6 形成设计结果
形成文档与设计图 - step 7 形成结果进行确认
三、质量属性研讨会QAW
- 为何需要QAW
决策功能的最重要两个影响因素功能需求和非功能性需求分别由不同人掌管
2.QAW是什么
Quality Attribute Workshop是一个促进头脑风暴的会议,设计一系列利益相关者,涵盖获取、指定、优先排序和就质量属性达成共识的研讨活动。
架构师可用使用有效树(utility tree)根据技术难度和风险对质量属性要求进行优先级排序。
Operational\Development\sustainment - 了解自己使用语言的相关中间件
利用utility进行讨论的具体化
利用kibana对质量属性优先级进行展示与管理
问:QAW需要哪些人参与?
答:懂QAW的主持人
理解业务需求的人员,并能确定业务优先级
懂技术风险和实现的架构师,能对所实现的技术难度做评估
问:QAW需要得到什么结果?
经过讨论确认的实现功能的列表
大家确认的此次迭代的内容
业务重要性和技术风险的二维表
如果想深度学习QAW可以去学习MTW
四、ADD具体案例
FCAPS案例
-1. 公司的初步架构设想
-2. 需求输入(如usercase)
-3. 功能详细解释
-4. 质量需求
-5. 约束
-6. 关注
第一次迭代确定基本架构
-1. 使用何系统实现(参考架构)
-2. 微服务三层架构
-3. 是否正在使用云服务
-4. 确定这些内容是否涵盖
-5. 第二次迭代:实现主要功能
-6. usercase
-7. 模块图
第三次迭代:解决QA-3
-1. 确定输入
-2. 确定QA-3目标
-3. 选择系统的一个或多个元素进行优化
-4. 选择一个或多个满足所选驱动因素的设计概念
-5. 实例化架构元素、分配职责和定义接口
-6. 草图视图和记录设计决策
-7. 对当前进行分析并审查迭代目标和设计目的的实现
网友评论