@[toc]
什么是软件架构
软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
核心点是: 相关方(使用系统的人,汇报的人)
什么是架构师?
架构师是做架构设计、对系统架构负责的那个人。
架构师是一顶帽子,而不是一把椅子;架构师是一个角色而不是一个职位。
架构师的主要能力
- 编程能力
- 基础技术掌握能力
- 常用技术产品的理解与应用能力
- 性能优化与分析故障的能力
- 常用架构模式和框架的理解与应用能力
- 建模以及设计文档的方法和能力
- 业务理解与功能模块及非功能模块拆解能力
- 快速学习能力
- 沟通与领导能力
4+1视图模型
软件开发的本质是什么?如何进行软件架构设计?
软件架构={元素,形式,关系/约束}
单—的视图无法完整的表达架构,因此需要具备完整的视图集。
- 逻辑视图(Logical View),设计的对象模型。
- 过程视图(Process View),捕捉设计的并发和同步特征
- 物理视图(Physical View),描述了软件到硬件的映射,反映了部署特性。
- 开发视图(Development View),描述了在开发环境中软件的静态组织结构。
- 场景视图(scenarios),描述用例场景。
逻辑视图(Logical View)
- 相关方:客户,用户,开发组织管理者。
- 视角:系统的功能元素,以及它们接口,职责,交互。
- 主要元素:系统,子系统,功能模块,子功能模块,接口。
- 用途:开发组织划分,成本进度的评估。
开发视图(Development View)
- 相关者:开发相关人员,测试人员。
- 视角:系统如何开发实现。
- 主要元素:描述系统的层,分区,包,框架,系统通用服务,业务通用服务,类和接口,系统平台和相关基础框架。
- 用途:指导开发组织设计和开发实现。
物理视图(Physical View)
- 相关者:系统集成商,系统运维人员。
- 视角:系统逻辑组件到物理节点的物理部署和节点之间的物理网络配置。
- 主要元素:物理节点以及节点的通信。
过程视图(Process View)
- 相关者:性能优化,开发相关人员。
- 视角:系统运行时线程,进程的情况。
- 主要元素:系统进程,线程以及处理队列等。
场景视图(scenarios)
- 相关者:用户,设计和开发人员
- 视角:概括了架构上最重要的场景(最典型或者最有风险)及其非功能性需求,通过这
些场景的实现,阐明了架构的广度或众多架构元素运行的方式。
---------------