极客时间 - 架构师训练营 - week1 - 课堂笔记

用户头像
毛聪
关注
发布于: 2020 年 06 月 09 日
极客时间 - 架构师训练营 - week1 - 课堂笔记

作为一位工作4年的大数据开发工程师,自以为在工作中已经没有任何提高的机会,每天也不去学习更深层次的知识。在一个机会下看到了李智慧老师在极客时间的从0开始学大数据的课程,发现自己的认知和知识深度还是太浅,很多看似会了的知识,其实根本没有掌握其核心原理。学完这门课后发现自己还有许多要学习和提高的地方,看到有李智慧老师开讲的架构师训练营就第一时间报了名,希望能学到更多关于软件,关于架构方面的知识,开阔自己的视野。



第一节课

1.架构师训练营的核心目标和思路

2.架构师是什么

3.什么是软件架构



1. 架构师训练营的核心目标和思路

架构师训练营的核心目标主要是训练面对问题、思考问题的一种方式,然后解决问题的思路,和这些思路背后的关系,最后把这些关系整合到一起的能力,而不会讲具体的技术的应用。我觉得这也是架构师最核心的能力,并不是应用的技术有多么牛逼,而是能在场景下解决问题的能力。



2. 架构师是什么

架构师是一顶帽子是说你只有充当了架构师的角色,你就是架构师,而不是只有你拥有架构师这个职位你才是一个架构师。





“任何一个系统,任何一个项目,任何一个软件,都应该有架构师。这个人叫程序员叫工程师也好叫技术负责人也好,职级职位不重要。重要的是他承担的是不是架构设计的事情,只要他做的是这样的事,他就是个架构师”

这句话一下就把我的思路给打开了,这句话不仅可以放在架构师这里,还可以放在其他任何地方,你的身份和角色不是由你固定的头衔职位决定的,而是由你做的事决定的,比如说你不是一定要拿到教师执业证才能称作老师,只要你做了教书育人,传授知识的事情,那么你就是一个老师。



3. 什么是软件架构

软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。--维基百科





这张UML图中最重要的是什么? 是“相关方”和“关注点”

因为:做架构是为了给人做的,不是给系统做的!

架构师在绘制一张架构图架构图之前都要想清楚这张图是给谁看的?给老 板看的?还是给客户看?还是给工程师看的?



  • 架构师的主要职责是什么?

  1. 编写架构设计文档

  2. 开发编程框架

  3. 重构软件代码

  4. 设计系统架构

  5. 技术选型,解决技术应用中的问题

  6. 优化系统性能

  7. 模块分解与微服务架构重构

  8. 保障系统安全与高可用

  9. 大数据应用

  10. 技术创新

  11. 沟通管理



  • 具备什么能力是合格的架构师?

  1. 编程能力

  2. 基础技术掌握能力

  3. 常用技术产品的理解与应用能力

  4. 性能优化与分析故障的能力

  5. 常用架构模式和框架的理解与应用能力

  6. 建模以及设计文档的方法和能力

  7. 业务理解与功能模块及非功能模块拆解能力

  8. 快速学习能力

  9. 沟通与领导能力



第二节课

1.4+1架构视图

2.如何使用UML进行软件架构设计和建模

1. 4+1架构视图

  • 逻辑视图:设计的对象模型

  • 过程视图:捕捉设计的并发和同步特征

  • 物理视图:描述了软件到硬件的映射,反映了部署特性

  • 开发视图:描述了在开发环境中软件的静态组织结构

  • 场景视图:描述用例场景

软件架构要通过多种视图来完成,每种视图的关注面是不同的,要表达的信息也是不同的,所以对不同的相关方和关注点设计不同的视图。



2. 如何使用UML进行软件架构设计和建模

重点是如何通过UML达成设计目标

2.1 什么是模型?

模型是一个系统的完整的抽象。人们对某个领域特定问题的求解及解决方案,对它们的理解和认识都蕴含在模型中。

抽象包括对业务问题的抽象和对系统的抽象。



2.2 UML简介

什么是UML?

  • Unified Modeling Language,统一建模语言

  • 以图形方式描述软件的概念

UML可用来描述:

  • 某个问题领域

  • 构思中的软件设计

  • 描述已经完成的软件实现



语言是用来沟通和帮助思考的,语言是有方言的,重要的不是图画得好不好,而是有没有表达出设计意图。



2.3 UML图的分类

静态图 - 通过描述类,对象和数据结构以及它们之间存在的关系,来描述软件要素中不变的逻辑结构

  • 用例图(Use Case Diagrams)

  • 对象图(Object Diagrams)

  • 类图(Class Diagrams)

  • 组件图(Component Diagrams)

  • 包图(Package Diagrams)

  • 部署图(Deployment Diagrams)



动态图 - 通过描绘执行流程或者实体状态变化的方式,来展示软件实体在执行过程中的变化过程

  • 协作图(Collaboration Diagrams)

  • 序列图(Sequence Diagrams)

  • 活动图(Activity Diagrams)

  • 状态图(State Diagrams)



通用模型元素



关联是一种强依赖

继承是继承父类所有成员

实现是实现接口的方法

组合是一种强聚合,组合中的成员生命周期一致



2.4 用例建模

主要用于需求分析阶段



2.5 类与对象



2.6 时序图

在需求分析、概要设计、详细设计三个阶段都可以使用。



2.7 活动图



活动图关注流程

同样在需求分析、概要设计、详细设计三个阶段都可以使用。



2.8 状态图

在需求分析、详细设计两个阶段使用。



2.9 组件图



2.10 部署图

概要设计阶段,是架构设计的第一张图。



用户头像

毛聪

关注

还未添加个人签名 2020.04.03 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
总结的很完整
2020 年 06 月 13 日 23:09
回复
没有更多了
极客时间 - 架构师训练营 - week1 - 课堂笔记