一、定义
软件架构:可以简单理解为满足干系人关键诉求的一系列宏观决策。
二、软件质量属性
软件架构师大部分时间在解决以下产品质量模型中的质量属性问题。
三、程序员和架构师区别
从思维逻辑方面来看,
程序员从功能和业务逻辑方面去想问题。
架构师更多的从质量属性和约束方面考虑问题。
架构师相较于程序员,会向功能需求方面倾向多一些。
从视野角度来看,
左侧为程序员的视角,更多关注与目标软件的设计与开发;
右侧为架构师的视角,视野更宽,要兼顾技术发展与行业发展。
从输出物的角度来看,程序员更多的是输出程序源码;架构师是输出方案。
从工作流程上看,程序员的工作是线性工作流程;而架构师的工作则是放射型的内容居多,要兼顾技术与沟通等方面的工作,工作经常会反复,迭代式进行。
四、架构设计工作的过程要素
五、架构师的知识和技能体系
六、如何发展架构能力
七、学习路径
记忆背诵 → 理解 → 应用 → 创造、分析、计算、评价
八、常见的软件架构模式
所有的软件方法学知识,其最终的目的都是为了降低软件复杂度。
所有的软件工程反面的知识体系,其最终目的都是为了提高可预测性。