架构师主要职责
- 编写架构文档
- 开发编程框架
- 重构软件代码
- 设计系统架构
- 技术选型,解决技术中问题
- 优化系统性能
- 模块分解与微服务架构
- 保障系统安全与高可用
- 大数据应用
- 技术创新
- 沟通管理
什么是软件架构
- 元素关系分成2类:动态关系和静态关系
- 静态关系:调用方,被调用方等
- 动态关系:是系统如何协作
- 架构的关键是相关方,做的架构给谁看的
- 你要想清楚你是在给谁在做这件事情,这角色的关注点在什么地方,不是为了工作而工作
- 心里要想着,你做这些事情对方能不能看得懂,是否能接受,如果不能接受看如何进行改进
- 不同的环境你的工作是不一样的,一个新团队,也许需要10篇文档,一个老团队,几句话就可以说清楚。关注合作。架构是关注场景的。
什么是架构师
- 做架构设计,对系统架构负责的那个人
- 架构师是一顶帽子,而不是一把椅子,架构师是一个角色而不是一个职位
架构视图
4+1视图模型
- 逻辑视图(Logical View),设计的对象模型
- 过程视图(Process View),捕捉设计的并发和同步特征
- 物理视图(Physical View),描述软件到硬件的映射,反应了部署特性
- 开发视图(Development View),描述在开发环境中软件的静态组织结构
- 场景视图(scenarios),描述用例场景
逻辑视图
- 相关方:客户、用户、开发组织管理者
- 视角:系统功能元素,以及它们接口、职责、交互
- 主要元素:系统、子系统、功能模块、子功能模块、接口
- 用途:开发组织划分,成本进度的评估
开发视图
- 相关方:开发相关人员、测试人员
- 视角:系统如何开发实现
- 主要元素:描述系统的层,分区,包,框架,系统通用服务,业务通用服务,类和接口,系统平台和相关基础框架
- 用途:指导开发组织设计和开发实现
物理视图
- 相关方:系统集成商、系统运维人员
- 视角:系统逻辑组件到物理节点的物理部署和节点之间的物理网络配置
- 主要元素:物理节点以及节点通信
过程视图
- 相关方:性能优化,开发相关人员
- 视角:系统运行时线程,进程情况
- 主要元素:系统进程,线程以及处理队列等
场景视图
- 相关方:用户,设计和开发人员
- 视角:概括了架构上最重要的场景(最典型或者最具有风险)及其非功能性需求, 通过这些场景的实现,阐明了架构的广度或者众多架构元素的运行方式
什么是模型
- 模型是一个系统的完整的抽象。人们对某个领域特定问题的求解及解决方案 对它们的理解和认识都蕴含在模型中
- 通常,开发一个计算机系统是为了解决某个领域特定问题, 问题的求解过程,就是从领域问题到计算机系统的映射
【领域问题】==分析、抽取==》【概念模型】==提取==》【系统需求】==分析、设计==》【解决方案】
为什么要建造模型
- 和人沟通
- 保存软件设计的最终成果
- 证明某件事能否工作
- 前提:建造模型的成本远远低于建造实物的成本
- 不同的模型在什么阶段呈现,表达什么样的设计意图,给谁看,很重要
UML建模语言
分类
静态图-通过描述类、对象和数据结构以及它们之间存在的关系,来描述软件要是中不变的逻辑结构
- 用例图
- 对象图
- 类图
- 组件图
- 包图
- 部署图
动态图-通过描绘执行流程或者实体状态变化的方式,来展示软件实体在执行过程中的变化过程
- 协作图
- 时序图
- 活动图
- 状态图
用例图
- 用途:功能需求描述,角色(或系统)-做什么
- 使用阶段:需求分析阶段
- 注意:①当一个图太大要进行拆分,让看的人更清晰 ②先可以是主功能用例图,然后每个主功能分别再实现一个功能用例图
类图
- 用途:描述类之间的关系
- 使用阶段:详细设计阶段
- 注意:核心的类关系一定要有
组件图
- 用途:描述系统设计的组件静态关系,如果要动态组件关系可以用组件时序图
- 使用阶段:概要设计第二图
部署图
- 用途:主要是服务器之间的 关系
- 使用阶段:概要设计第一图
时序图
- 用途:描述动态调用关系(任何对象的调用关系)
- 使用阶段:设计的三个阶段都要使用的, ①需求分析阶段,系统级的时序图 ②概要设计阶段,组件-服务器时序图或者组件之间交互的时序图 ③详细设计阶段,方法的时序
活动图
- 用途:描述流程的,对象之间调用关系,整个流程是怎样完成的
- 使用阶段:三个阶段都可以使用, ①需求分析阶段:业务流程 ②概要设计阶段:不同模块,领域,子系统之间处理流程 ③详细设计:方法内部流程设计
状态图
- 用途:描述对象,子系统,系统的生命周期
- 使用阶段:需求分析阶段,详细设计阶段
- 场景:订单状态,不同状态之间是如何变化的,店铺状态,线程状态,审批流程状态
每个阶段画什么图
- 三个阶段分别对应三种类型文档,需求文档,概要设计文档,详细设计文档
- 需求分析阶段:用例图,活动图,状态图,时序图
- 概要设计阶段:①最顶层设计系统级:部署图,服务器或者子系统时序图,子系统级活动图 ②第二层,组件图,组件时序图
- 详细设计阶段:类图、类时序图、状态图、方法活动图、数据库实例图