架构师训练营 - 学习总结 - 第一周
前言
本人也是一个架构师,虽然做着架构师的工作,但一些地方有时还是不那么完善,就想找个前辈看看,人家的经历和工作方法论,通过向他人的学习,来丰富自己的认知,让自己的架构做的更好,从而让生活变的更好。看到李智慧老师的经历,而且这么多的直播课,面面俱到,深入浅出,讲了很多原理的原理,第一节我听了三遍。从简历、学习时代等实际问题出发,阐述了为什么讲架构,什么是架构,怎么做架构?通过方法、例子,总结套路,不断丰富自己的认知,构建好自己的知识技术体系,做一个以深度为基础,有广度的架构师。
参加架构师训练营,主要解决我们的什么问题——
用什么样的思维方式去面对架构问题,领悟到问题背后的本质,解决问题的思路是什么?思路和方法的关系是什么?
软件架构解决的问题是什么?用的方法是什么?如何做是最重要的。从不懂到懂,是怎么思考,怎么形成的?难点和痛点在哪?最终达到心有灵犀,灵活自如,浑如天然地使用它。所以架构心法是架构走多久,做多高的决定性因素。
一、架构方法
什么是软件架构?
软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
架构的构成有哪些?
架构有架构元素和元素之间的关系构成,架构本身包含各个系统,对外体现的是架构文档——相关方,内容有架构视图,体现了架构的关注点。
架构的详细程度,是根据架构的目的来衡量的,针对的是相关方,也就是人。人搞清楚了,那架构就算完成了。
架构师需要协调、满足各方的(客户、老板、开发、测试、运维等)诉求
架构师要面对不同的受众,用不同的方式,展现系统不同的侧面
什么是架构师?
架构师是做架构设计、对系统架构负责的那个人。
架构师是一个帽子不是一把椅子;架构师是一个角色而不是一个职位。
架构师的主要职责?(也就是参加训练营的内容)
编写架构设计文档
开发编程框架
重构软件代码
设计系统架构
进行技术选型,解决应用中的问题
优化系统性能
模块分解与微服务架构
保障系统安全与高可用
大数据应用
技术创新
沟通管理
优秀架构师的评判标准?
夸夸其谈能帮你带来掌声。
解决棘手问题能帮你带来名声。
奠定架构师地位的,是让别人依赖你写的代码-核心的代码
优秀架构师必须是软件开发的全才
1、卓越的编程能力
2、解决棘手问题的能力
3、广阔的知识面
4、洞悉技术背后的本质和规律
5、沟通和打动人心的能力
如何成为架构师?
跳槽、晋升、靠关系。。。
如果一个项目或系统没人去做架构,你主动去做架构设计、去做解决方案,形成设计文档,然后给大家做评审,得到大家的认可,就成为一个架构师了。不要怕意见和批评,当别人有评论在指三道四的时候,你就是架构师了,真挚朴素的语言,阐述了一个架构师的成长历程,不是等来的,是主动争取的。
体现了一个主观能动性,不是为了工作而工作,只要做架构的事就是架构师。
二、架构文档
软件的生命周期
软件的生命周期:问题定义——需求分析——软件设计——程序编码——软件测试——运行维护
架构是给人做的,满足相关方的诉求。
架构文档的体现也就是架构生命周期的体现。从这个角度来看,架构的生命周期也就是软件的生命周期,贯穿整个软件生命周期的始终。
架构文档,最重要的一项便是画图,没有任何语言比图更能给人视觉的冲击,让人更加直观形象的表达设计的意图,一图胜千言。当然图文并茂更好。
架构的视图模型
4+1,逻辑视图、开发视图、过程视图、物理视图,围绕着场景视图进行展开。
这个也是一个问题解决的过程,由领域问题——概念模型——系统需求——解决方案。
构建传统模型的目的—— 为了证明某件事物能否工作 ,前提模型的成本远远低于构建实物的成本
构建软件模型的目的—— 前提:除非模型比代码更说问题
为了和他人沟通
为了保存软件设计的最终成果
何时画图?
讨论、交流时
最终设计文档
少量,重要的图
避免涉及过多的内容和实现细节
何处画图?
白板
绘图工具:viso、Astash
draw.io
UML 简介
UML 是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,软件设计(解决问题)的过程就是一个持续建模的过程,把问题反映出来的过程,在不同的设计阶段,画不同的 uml 视图,达成设计意图,
图画出来了,设计文档也就出来了。
uml 本身画图不难,难的是要表达清楚作者的意图,让相关方容易明白。
UML 分类:静态图、动态图。
静态图:通过类、对象和数据结构以及它们存在的关系,来描述软件要素不变的逻辑结构。包含用例图、对象图、类图、组件图、包图、部署图。
动态图:时序图、活动图、状态图、合作图(可由时序图产生)
使用场景
需求分析:用例图,部署图,时序图,活动图,状态图
概要设计:框架图,部署图,组件图,时序图,活动图
详细设计:类图,时序图,活动图,状态图
画图达到的程度-标准:
面向相关方,相关方看懂的程度也就是画图细化到的程度。
对象之间的关系:依赖、关联、聚合、组合、继承和依赖 6 种关系。
实线和实体的东西都表示生命周期绑定状态有更高的一致性。
评论