本周主要学习内容:
- 大厂架构师招聘JD解读
- 架构师面试常见面试题解读
- 4+1视图模型:软件开发的本质是什么?
- UML:软件架构建模的一般方法和工具
- 架构设计文档:软件架构设计文档的写作模式
我自己的理解,学到的知识点为:
- 什么是软件架构?
- 4+1视图是什么,怎么用?
- UML模型的使用方法
没有设计文档就没有软件设计,没有软件设计就没有技术进步。
一个优秀的程序员需要熟悉对软件架构的理解以及相关工具的使用。不断培养锻炼自己的抽象能力,架构能力,这样自己的成长和视野会得到提升。
那么什么是软件架构呢?
软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
架构由架构元素和各元素之间的关系组成。
而架构需要由一些具体的内容来实现,也即是架构文档、架构视图。
其中目前比较常用的架构视图即所谓的 4+1 架构视图。
分别为:
- 逻辑视图
- 过程视图
- 物理视图
- 开发视图
- 场景视图
其中,场景视图是和其它所有视图是相关的。
4+1视图是架构视图实现的理论指导,而具体进行编写架构视图的工具一般是使用 UML 视图模型来实现。
UML 模型整体上分为2类,分别为:
- 静态图
- 动态图
静态图是通过描述类、对象和数据结构以及它们之间存在的关系,来描述软件要素中不变的逻辑架构。
具体描述的模型图有:
- 用例图
- 对象图
- 类图
- 组件图
- 包图
- 部署图
动态图是通过描述执行流程或者实体状态变化的方式,来展示软件实体在执行过程中的变化过程。
具体描述的模型图有:
- 协作图
- 时序图
- 活动图
- 状态图
一般来说,一个完整的架构设计流程主要分三个阶段,即:
- 需求分析阶段
- 概要设计阶段
- 详细设计阶段
而不同的架构模型图一般也会对应着不同的阶段。整体上来看,他们之间的对应关系是:
这样,在我们后续编写架构文档的时候,就有了一个比较清楚实现思路和路径了。
学习完上述各个知识点后的一点感受:
在工作过程中,其实也有断断续续来通过各种视图来表达系统架构设计意图,公司内部也有一些架构设计文档的学习模板和编写指导,但针对自己来说,一直没有很好的掌握其中的精髓,往往新的架构设计需求来临时,找几个好的架构设计文档做参考,临时抱佛脚,没有系统性的理解。而架构师训练营的第一周学习知识正好弥补了这一个系统性学习盲区。
值得一提的是,架构视图工具的熟练掌握并不能让你在软件架构和技术实现上有直接的提升,关键还是得回归到需求本身,回归到对复杂系统和各类型技术的深刻理解和熟练掌握上,而架构视图工具的理解能很好的帮助你以一种最优解的方式最快梳理清楚并找到复杂需求的解法。