架构师思维
这是对架构师训练营第一周课程的学习总结,如何理解架构师训练营的目的?
道和术
老师在直播中一再强调了架构师训练营所要达到的目标,在我理解,就是要构建起我们的架构师思维。知识点是死的,但其背后的前因后果是灵活的,我们要的不是干巴巴地将一个个知识点讲完就算了,而是要学会将知识点融会贯通的本领,并在日后的工作中发挥指导作用。用道和术来比喻的话,训练营注重的是道,然后才是术。术固然重要,但更要的是术的灵活运用,即道。
根据自身的学习工作经验,我非常认同老师的理念,这也是我参加训练营最主要的目的,就是希望能从老师身上学习解决问题的思路,从老师分享的实际案例中感受针对具体场景到最终解决方案落地背后各种考量的思考过程,我认为这些才是训练营能给我们带来的独特价值。
明确了目的,自然而然我们需要明确几个概念:
什么是软件架构?
如何定义架构师?
架构师的职责是什么?
架构师需要具备哪些能力?
如何编写架构设计文档?
因为架构师思维,源于我们对架构师和架构师所要面对的世界的深刻理解。
什么是软件架构
软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
从该图可看出,架构师是一个协调者角色,需统筹多方人员和资源才能将架构工作开展下去。
如何定义架构师
架构师是做架构设计,对系统架构负责的那个人,它是一个角色,并不局限于架构师职位。如果我们所负责的系统没有人做架构,我们把它承担起来,我们就是架构师,这也是我们成长为架构师的一个途径。
架构师的职责是什么
编写架构设计文档
开发编程框架
重构软件代码
设计系统架构
进行技术选型,解决技术运用中的问题
优化系统性能
模块分解与微服务架构重构
保障系统安全与高可用
大数据应用
技术创新
沟通管理
架构师需要具备哪些能力
编程能力
基础技术掌握能力
常用技术产品的理解与应用能力
性能优化与分析故障的能力
常用架构模式和框架的理解与应用能力
建模以及设计文档的方法和能力
业务理解和功能模块及非功能模块拆解能力
快速学习能力
沟通与领导能力
如何编写架构设计文档
4+1视图
单一的视图无法完整的表达架构,因此需要具备完整的视图集
逻辑视图
相关方:客户,用户,开发组织管理者
视角:系统的功能元素,以及它们的接口,职责,交互
主要元素:系统,子系统,功能模块,子功能模块,接口
用途:开发组织划分,成本/进度的评估
过程视图
相关方:性能优化,开发相关人员
视角:系统运行时线程,进程的情况
主要元素:系统进程,线程以及处理队列等
部署视图
相关方:系统集成商,系统运维人员
视角:系统逻辑组件到物理节点的物理部署和节点之间的物理网络配置
主要元素:物理节点以及节点的通信
开发视图
相关方:开发相关人员,测试人员
视角:系统如何开发实现
主要元素:描述系统的层,分区,包,框架,系统通用服务,业务通用服务,类和接口,系统平台和相关基础框架
用途:指导开发组织设计和开发实现
场景视图
相关方:用户,设计和开发人员
视角:概况了架构上最重要的场景(最典型或者最有风险)及其非功能性需求,通过这些场景的实现,阐明了架构的广度或众多架构元素运行的方式
UML建模
概述
Unified Modeling Language,统一建模语言
以图形方式描述软件的概念
用来描述:
某个问题领域
构思中的软件设计
描述已经完成的软件实现
模型
模型是一个系统的完整抽象。人们对某个领域特定问题的求解和解决方案,对它们的理解和认识都蕴含在模型中。
通常,开发一个计算机系统是为了解决某个领域特定问题,问题的求解过程,就是从领域问题到计算机系统的映射。
建立模型的目的
传统模型
验证某件事物能否工作
软件模型
为了与他人沟通
保存软件设计的最终成果
UML图的分类
静态图
用例图
类图
组件图
部署图
对象图(不重要)
包图(不重要)
动态图
序列图
活动图
状态图
协作图(不重要)
元素连接关系
依赖、关联、继承、实现、聚合、组合等。
综上,架构设计的产出物是:借助上述建模工具,通过各类视图将系统整体结构和关键组件之间的关系表达出来,形成最终的架构设计文档。
版权声明: 本文为 InfoQ 作者【林昱榕】的原创文章。
原文链接:【http://xie.infoq.cn/article/de5ff6bb89a3eb4043f625f5f】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论