架构师训练营 -Week 01 学习总结
什么是架构?什么是软件架构?
架构,是一个抽象的概念,没有统一的说法,软件有软件架构,硬件有硬件架构,公司有公司架构,生活有生活架构,尽管在不同的设计层面,架构有不同的定义,但是我们都是在做架构。
对于软件开发人员来说,我们的关注点主要是软件架构,软件架构在维基百科中有定义,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
看上面的图,描述了软件架构与人之间的基本关系,架构是由架构师针对相关方提出的需求(往往是开发一个系统或迭代一个系统)设计出来的,架构师的架构设计以架构文档的形式将设计表达给相关方,但是相关方不是某一个角色,包括客户、老板、运营、产品、开发人员等,不同的角色关注点不同,比如老板关注重心更可能是开发成本、服务器成本等,开发人员关注的是开发的环境、框架、技术等,所以针对不同的角色的关注点,架构师创作的架构文档中,有不同的架构视图。
什么是架构师?如何成为架构师?
架构师,在软件工程领域中,通俗来讲就是做软件架构设计,对系统架构负责,是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型角色,可以建立一个高效的体系,带领团队攻城略地,在规定的时间内完成项目。
从狭义来说,在互联网行业中,明确说架构师是一个职位,成为架构师的途径有两种,一是公司内部晋升,你的表现和能力得到公司的的认可,公司将你晋升为架构师,二是跳槽面试架构师职位,面试通过成为架构师。
从广义来说,架构在生活中无处不在,每个人都是架构师,道理都是想通的,不管是软件架构还是生活架构,如何把架构设计好是需要思考和实践的。
架构师的主要职责和能力
架构师,这个具有领导力的角色,主要职责如下:
编写架构设计文档
开发编程框架
重构软件代码
设计系统架构
进行技术选型,解决技术应用中的问题
优化系统性能
模块分解和微服务架构重构
保障系统安全和高可用
大数据应用
技术创新
沟通管理
成为架构师不代表就是一个好的架构师,合格的架构师应该具备这些能力如下:
编程能力
基础技术掌握能力
常用技术产品的理解和应用能力
性能优化和分析故障的能力
常用架构模式和框架的理解和应用能力
建模以及设计文档的方法和能力
业务理解与功能模块及非功能模块拆解能力
快速学习能力
沟通与领导能力
4+1视图模型
4+1视图模型由5个视图组成,包括逻辑视图、过程视图、物理视图、开发视图、场景视图,模型实际上使得不同需求的人员(系统的相关方)能够得到他们对于软件系统想要了解的东西。
这是一种架构设计方法,能够让架构师将一个系统进行自顶向下的设计分解,并形成合理的抽象描述。
为什么要建模?使用UML建模?
建模是制作优质软件不可或缺的核心部分,我们建立模型来传达系统所需的结构和行为、展现和控制系统的体系结构和了解我们正在建立的系统,这当中经常揭示简化和重用的机会。我们也会借建模来管理风险。
UML(统一建模语言)是行业内规范的建模工具,在UML中,模型可以表达结构和行为。模型是对现实的简化,提供了一个系统的蓝图。 UML建模的具体重要性如下:
表达和阐述系统的结构和行为;
让系统设计图像化;
提供构建系统的模板;
有助于理解复杂系统;
记录系统的变化及架构的迭代;
降低沟通成本;
UML的分类,分为静态图和动态图两大类。
静态图
用例图
对象图
类图
组件图
包图
部署图
动态图
协作图
序列图
活动图
状态图
UML建模的思考
在工作中,工程师之间往往很少人会真正的去使用UML进行建模进行交流,建模毋庸置疑是一种很好的表达系统设计的方式,大家不愿意或者不去用这种工具和方法,原因可能有以下几点:
建模是一个高度抽象,对人的抽象能力是有比较高的要求;
以为学会了UML就学会了建模,UML只是一种建模工具;
建模思维很重要,没有很好的建模思维,建造的模型不能准确、清晰表达自己的设计意图;
表达的人会UML,被表达的人也需要会UML,对整个团队都有这方面的要求,才能保证高效率的沟通;
技术在发展,各种各样的新的技术架构出来,UML相对比较基础,表达新型的复杂的架构设计,UML不够友好的表达设计意图;
UML建模并不能解决所有的问题,有架构思维和建模思维最重要,表达方式可以因地制宜,有些可以用UML,有些可以用其他的方式建模,只要能将自己的设计意图很好的表达给其他人就够了,好的设计就应该包括好的表达。
评论