学习总结—第一周
架构是什么?
架构是一种系统化解决问题的思维模式,每个人都应该具备一定的架构思维和能力。
面对不同的问题,应该选用什么样的组件、工具、模式去解决?面对不同的相关方,应该用什么样的文档、图去交流和解决?都属于架构的范畴,属于架构师的工作。
广义的架构可以延伸到日常生活的方方面面,如何解决问题?用什么策略?如何选取方案?
架构师主要职责?
编写架构设计文档
开发变成框架
重构软件代码
设计系统架构
技术选型,解决技术应用中的问题
优化系统性能
模块分解与微服务架构重构
保障系统安全与高可用
大数据应用
技术创新
沟通管理
架构师主要能力?
编程能力
基础技术掌握能力
常用技术产品的理解和应用能力
性能优化和分析故障的能力
常用架构模式和框架的理解与应用能力
建模以及设计文档的方法和能力
业务理解和功能模块以及非功能模块拆解能力
快速学习能力
沟通和领导能力
4 + 1 视图模型
4 + 1 的理念就是不同人和相关方的关注点是不同的,在做设计的时候需要针对相关方进行设计。你不能通过一种视图完成架构设计,每一种视图关注点是不一样的。当你给老板做架构的时候,要用一种视图,介绍相关服务器资源等。当分配给你团队等,要求你在两个月开发出来,这时候你需要为工程师再提供另一种视图,让他们完全明白然后进行开发。
UML
在表达视图的时候,我们通常使用 UML 来进行绘图。
通过建造模型,可以低成本的进行验证、梳理思路,同时遵循同样的标准方便跟他人进行交流,减少沟通成本。
几种重要的图
静态图(描述类、对象、数据结构等之间的关系):
用例图:大概介绍用户的需求功能点
部署图:物理硬件和资源以及更大力度的系统分布划分
组件图:大概的组件划分和之间的交互
类图:详细的类设计
动态图(描述运行时的一些流程和状态变化过程):
序列图:时序图等,包括组件的生命周期和调用顺序、流程
活动图:泳道图等,包括组件的具体实现流程和交互过程
状态图:类似状态机,描述核心组件的不同状态的变化和转移
架构设计画图顺序
需求分析(通常是产品经理设计)
1. 用例图,功能场景
2. 活动图,关键流程
3. 状态图,关键状态转换关系
4. 时序图,内部和外部的依赖关系
概要设计(组件级)
1. 部署图,有个整体的感觉,从高往下,看到一些子系统等关系
2. 时序图,核心子系统的系统序列图,时序图
3. 活动图
详细设计(类级别)
1. 活动图,组件图和组件依赖关系
2. 时序图,细节组件的序列图
3. 类图,具体 API 设计
4. 状态图
画到什么为止?
画到相关方都能明白为止。比如:给大老板汇报颗粒度高,给高级程序员精确到组件级,给初级程序员精确到类。
版权声明: 本文为 InfoQ 作者【于江水】的原创文章。
原文链接:【http://xie.infoq.cn/article/c14d7cdc5439dd82df38a5a4c】。未经作者许可,禁止转载。
评论