架构师修炼之道(读书笔记)
2022-08-10 09:15:56 23 举报
AI智能生成
架构师修炼之道(读书笔记)
作者其他创作
大纲/内容
一、软件架构导论
1、成为软件架构师
架构师要做什么
从工程角度定义问题
分解系统,分配职责
关注大局
在质量属性之间做出取舍
提升团队的架构技能
开发出色的软件
架构将大问题分解为容易处理的小问题
软件架构告诉大家如何协同工作
软件架构为讨论复杂设计提供了基本词汇
软件架构关注的不仅仅是功能
软件架构让你避免犯重大错误
架构让软件更灵活
2、设计思维基础
四条原则(HART)
以人为本(human)
推迟决策(ambiguity)
善于借鉴(redesign)
化虚为实(tangibility)
运用思维模式
理解问题
探索想法
展示想法
评估适用性
TDC循环
思考(Think)
动手(Do)
检查(Check)
二、架构设计原理
3、制定设计策略
找到够用的设计
将解决方案看成实验
设法降低风险
努力简化问题
快速迭代学习
同时考虑问题和解决方案
决定前期做多少架构设计
寻找设计的最佳平衡点
软件系统越大,前期做架构设计的获益就越大
软件系统越小,前期做架构设计的获益就越小
前期架构设计做的不够,要对后期返工做好心理准备
前期架构设计投入的越多,后期返工就越少
用风险做导向
确定条件和后果
如何降低风险
降低概率
减少影响
减小风险发生的时间窗口
移除条件
接受现状,什么也不做
借助风险选择思维模式
风险降低后转为被动设计
制定设计计划
结束设计的条件
必要的设计成果
时间节点
重大风险
概念架构设计
4、换位思考(同理心)
找合适的人交谈
创建利益相关方关系图
了解业务目标
主体
结果
背景
5、挖掘关键架构需求(ASR)
关键架构需求(ASR)
约束
质量属性
影响较大的功能性需求
其它影响因素
用约束限制设计选择
定义质量属性
用场景描述质量属性
环境背景
刺激
来源
软件部件
响应
响应度量
寻找具体可衡量的响应度量
对功能需求分类
找出其它影响架构的因素
6、主动选择架构
发散探索,聚合决策
探索架构关键点
探索元素及其作用,确定架构的结构组成
探索关系及接口,确定元素的交互方式
探索问题领域,理解架构所处的环境
探索技术和框架,提升质量属性
探索构建和部署方法,确保架构可以交付
探索以往的设计,获得启发,指导决策
接受约束
提升质量属性
借助质量属性探索架构模式
运用决策矩阵
为架构元素分配功能
设计,应变而生
推迟决策
将设计决策移出架构
7、架构模式
什么是架构模式
架构失配
分层模式
分层实现了层间低耦合,层内高内聚,提升了可维护性
分层模式有许多变种,但无论分多少层,它的元素、关系、使用规则是不变的
端口适配器模式
管道过滤器模式和批处理模式
面向服务架构模式
发布订阅模式
共享数据模式
多层模式
能力中心模型
开源贡献模式
大泥球模式
发现新架构模式
以问题为中心
以解决方案为中心
8、建立模型,化繁为简
推演架构
协作和抽象是我们思考、分析、理解、架构的基本方法
优秀架构模型的优点
构建设计词汇
引导我们关注重要的细节
帮助推演质量属性和其它系统特性
展示架构师的构思
设计元模型
元模型
创建元模型,首先要定义概念,也就是架构中的元素和关系。
定义概念后,再建立这些概念的使用规则
分离新概念
先提问
然后验证模型
再通过修改或添加规则更新模型
选择架构模式作为基础
保持一致性
向模型添加新概念时务必附上使用规则
取好名称
七个阶段
空白
凑合
沾边
反应功能
反应角色
反应意图
领域抽象
让模型融入代码
统一使用架构词汇
组织代码,突显架构
贯彻落实元素关系
模块结构
组件连接器机构
分配结构
添加代码注释
用代码生成模型
9、召开架构设计研讨会
筹划架构设计研讨会
准备阶段
确定研讨会目标及参会人员
启动研讨会
创建、分享、评判-CSC迭代
迭代
会议总结,确定后续行动
挑选设计方法
轮转设计
集体海报
白板涂鸦
架构拟人化
挑选参与者
调整研讨会规模
邀请多样化受众
充分发挥团队的力量
会议管理
为研讨会留足时间
设立期望
解说-展示-再解说
分享诀窍
设置截至时间
适时指定参与者
使用“停车场”
与远程团队协作
使用远程协作工作
增加议程时间
备用沟通渠道
准备共享资料
创造面对面的机会
离线运转
10、展示设计决策(ADR)
用不同的视图展示架构
元素功能视图
精细视图
质量属性视图
映射视图
粗略视图
自定义视图
绘制出色的图表
使用图例
突出模式
简洁与一致
描述性文字
11、描述架构
讲述完整的故事
架构描述的重要性
组织有序
在开发人员和业务相关方之间建立通用语言
突出质量属性
理清思路
创建可评估的媒介
展示架构
因地制宜,选择描述方法
部落描述:口述历史
社区描述:传播的更远
正式描述:必要时才使用
徒劳描述
创建传统的软件架构描述(SAD)
两个模版
views and beyond
ISO/IEC/IEEE 42010标准模版
包含的部分
引言和导读信息
文档综述和简介
利益相关方诉求、业务目标和关键架构需求概述
系统情景图
相关视图
风险、未解决问题及后续工作
附录
出色描述的四个特征
根据受众的需求定制
用多个视图展示架构
清晰定义元素及其功能
解释设计决策的逻辑依据
尊重受众
提高可理解性
围绕利益相关方关注点组织视图
建立视点
自定义视点
阐述决策的逻辑依据
描述为选择的道路
12、架构评估
评估得真知
检验设计
准备评估对象
定义评估准则
评估标准包括两部分
指标(criteria)
评分(rating)
根据关键架构需求选择指标
举足轻重、不可或缺
互不重叠
易观察、可衡量
准确不模糊
选择评分标准
形成判断
举办评估研讨会
准备工作
定义评估目标
制定评估准则
帮助评估者做好准备
项目背景
关键架构需求
待评估的架构设计
评估
方法
场景排查
问题-评论-关注事项
风险风暴
绘制草图做比较
代码评审
回顾架构决策记录
分析与结论
结论应该清晰表达架构满足指标的程度
提出架构改进建议
后续行动
尽早评估、反复评估、持续评估
用评估金字塔平衡成本与价值
发现各种类型的问题
风险
信息空白
麻烦
认知偏差
架构变异
情境偏移
从仪式感弱的评估方法开始
13、鼓励团队参与架构设计
提倡架构思维
传授技能,辅助决策
为团队创造实践机会
结对设计
搭建支架
引入架构导轨
举办交流会
设计下放
何时保留设计权限
何时下放设计权限
共同设计架构
从工程角度定义问题
分配系统,分配职责
关注大局,保证全局设计的一致性
在质量属性之间做出取舍
管理技术债务
提升团队的架构技能
三、架构师的工具箱(TODO)
14、理解问题的常用方法
二选一
移情图
GQM研讨会
利益相关方访谈
假设清单
质量属性网络
微型质量属性研讨会
观点填空
响应度量稻草人
利益相关方关系图
15、探索解决方案的常用方法
架构拟人化
架构演变记录
组件-功能-协作者卡片
概念图
分而治之
事件风暴
团队海报
循环设计
白板涂鸦
16、展示设计的常用方法
架构决策记录
架构主旨
背景图
精选阅读列表
启动计划书
模块化分解
未采纳的决策
制作模型,用于学习或决策
时序图
系统隐喻
17、评估设计方案的常用方法
架构简报
代码评审
决策矩阵
观察系统表现
问题-评论-关注事项
风险风暴
合理性检查
场景排查
画草图做比较
0 条评论
下一页