架构师训练营学习心得【第一周】
1. 架构方法
1.1 什么是架构
软件架构,是有关软件整体与组件的抽象描述,用于指导大型软件系统各个方面的设计。
架构是给谁做的?—— 相关方
架构需要重点关注什么?—— 相关方的关注点
架构由什么组成?—— 一系列架构元素及元素间的关系
架构师的产出是什么? —— 架构文档
架构怎么描述? —— 架构视图。根据不同相关方的关注点,来描述架构视图
架构元素间的关系? —— 静态关系和动态关系
1.2 什么是架构师
架构师是做架构设计,对系统架构负责的那个人。
1.3 架构师主要职责
编写架构设计文档
开发编程框架
重构软件代码
设计系统架构
进行技术选型,解决技术应用中的问题
优化系统性能
模块分解与微服务架构重构
大数据应用
沟通管理
1.4 架构师主要能力
编程能力
基础技术掌握能力
常用技术产品的理解与应用能力
性能优化与分析故障的能力
常用架构模式和框架的理解与应用能力
建模以及设计文档的方法和能力
业务理解与功能模块及非功能模块拆解能力
快速学习能力
沟通与领导能力
2. 软件建模与设计文档
2.1 什么是模型
模型是一个系统的完整的抽象。人们对某个领域特定问题的求解及解决方案,对它们的理解和认识都蕴含在模型中。
通常,开发一个计算机系统是为了解决某个领域特定问题,问题的求解过程,就是从领域问题到计算机系统的映射。
领域问题经过分析抽取得到概念模型,从概念模型中提取系统需求,分析系统需求,设计得到问题的解决方案。
2.2 为什么要建造模型
建造传统模型的目的:为了证明某件事物能够工作
建造传统模型的前提:建造模型的成本低于建造实物的成本
建造软件模型的目的:
为了与他人沟通
为了保存软件设计的最终成功
前提:除非模型比代码更能说明问题
2.3 何时何处画图
2.3.1 何时画图
讨论交流时
最终设计文档(只保留少量的、重要的图,避免设计过多内容和实现细节)
2.3.2 何处画图
白板
绘图工具,如Visio,Aastah
draw.io
2.4 UML
2.4.1UML简介
什么是UML?
Unified Modeling Language,统一建模语言,以图形方式描述软件的概念
UML可用来描述:
某个问题领域、构思中的软件设计、已经完成的软件实现
2.4.2 UML图的分类
2.4.2.1 静态图
静态图——通过描述类、对象和数据结构以及它们之间存在的关系,来描述软件要素中不变的结构。
用例图
对象图
类图
组件图
包图
部署图
2.4.2.1 动态图
动态图——通过描绘执行流程或者实体状态变化的方式,来展示软件实体在执行过程中的变化过程。
协作图
活动图
时序图
状态图
2.5 4+1视图模型
软件架构 = { 元素,形式,关系/约束}
单一的视图无法完整地表达架构,因此需要具备完备的视图集
2.5.1 逻辑视图
相关方:客户、用户、开发组织管理者
视角:系统的功能元素,以及它们的接口、职责、交互
主要元素:系统、子系统、功能模块、子功能模块,接口
用途:开发组织划分,成本/进度的评估
2.5.2 开发视图
相关方:开发相关人员、测试人员
视角:系统如何开发实现。
主要元素:描述系统的层,分区,包,框架,系统统用服务,业务统用服务,类和接口,系统平台和相关基础框架。
用途:指导开发组织设计和开发实现。
2.5.3 物理视图
相关方:系统集成商、系统运维人员。
视角:系统逻辑组件到物理节点的物理部署和节点之间的物理网络配置。
主要元素:物理节点以及节点的通信。
2.5.4 过程视图
相关方:性能优化,开发相关人员。
视角:系统运行时线程、进程的情况。
主要元素:系统进程,线程以及处理队列等。
2.5.5 场景视图
相关方:用户,设计和开发人员
视角:概括了架构上最重要的场景(最典型或者最有风险)及其非功能性需求,通过这些场景的实现, 阐明了架构的广度或众多架构元素运行的方式。
评论