架构师训练营第 2 期 第 1 周 作业二:学习总结.md
架构师训练营第1周学习总结
通过第1周的学习,对架构师的技能要求和职责有了更清晰的认识,熟悉了常用的建模工具和方法,了解了如何输出架构设计文档。本周学习到的内容总结如下:
一、软件架构的定义
软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
软件架构 = {元素,形式,关系/约束}
二、架构师的定义
架构师是做架构设计、对系统架构负责的那个人。
架构师是一顶帽子,而不是一把椅子;架构师是一个角色而不是一个职位。
三、架构师技能要求
1. 优秀的编程能力
2. 常用技术的理解与编程能力
3. 定位性能瓶颈、性能优化与分析故障的能力
4. 常用架构模式和框架的理解与应用能力
5. UML建模以及编写设计文档的能力
6. 业务理解以及模块拆解能力
7. 软技能:沟通组织能力、解决问题能力、学习能力、创新能力、项目管理能力、总结归纳能力
四、架构师职责
1. 负责项目的整体架构设计,组织研发工作
2. 带领团队技术攻坚,优化系统性能
3. 搭建开发框架,编写核心业务代码
4. 技术选型、模块分解、代码重构
5. 编写架构设计文档
6. 沟通协调,实现项目落地
五、4+1架构视图
单一的视图无法完整的表达架构,因此需要具备完整的视图集
• 逻辑视图(Logical View),设计的对象模型,用于开发组织划分,成本/进度的评估。
• 过程视图(Process View),捕捉设计的并发和同步特征。
• 物理视图(Physical View),描述了软件到硬件的映射,反映了部署特性。
• 开发视图(Development View),描述了在开发环境中软件的静态组织结构。指导开发组织设计和开发实现。
• 场景视图(scenarios),描述用例场景。
六、模型的定义
模型是一个系统的完整的抽象。人们对某个领域特定问题的求解及解决方案,对它们的
理解和认识都蕴涵在模型中。
通常,开发一个计算机系统是为了解决某个领域特定问题,问题的求解过程,就是从领
域问题到计算机系统的映射。
建造软件模型的目的
为了与它人沟通
为了保存软件设计的最终成果
前提:除非模型比代码更说问题
七、UML图
1. UML图分类
- 静态图 :通过描述类、对象和数据结构以及它们之间存在的关系,来描述软件要素中不
变的逻辑结构。包括用例图、对象图、类图、组件图、 包图、部署图。
- 动态图:通过描绘执行流程或者实体状态变化的方式,来展示软件实体在执行过程 中
的变化过程。包括协作图、序列图、 活动图、状态图。
2. 通用模型元素
3. 用例图
用例图描述了系统的功能需求,它是从执行者的角度来理解系统。
用例图示例如下:
4. 时序图
时序图用来描述对象之间动态的交互行为,着重体现对象间消息传递的时间顺序。
5. 活动图
活动图(Activity Diagram)的应用非常广泛,它既可用来描述操作(类的方法)的行为,
也可以描述用例和对象内部的工作过程,并可用于表示并行过程。
构成活动图的模型元素有:活动、转移、对象、信号、泳道等。
6. 状态图
状态图用来描述一个特定对象的所有可能的状态及其引起状态转移的事件。一个状态图包括一系列的状态以及状态之间的转移。
7. 组件图
组件可以看作包与类对应的物理代码模块,逻辑上与包,类对应,实际上是一个文件,
可以有源代码构件、二进制构件、可执行构件。组件之间的依赖关系是指结构之间在编译,连接或执行时的依赖关系。
组件图示例:
8. 部署图
部署图用来描述系统硬件的物理拓扑结构以及在此结构上执行的软件,即系统运行时刻
的结构。
部署图示例如下:
八、软件架构设计文档的写作模式
没有设计文档就没有软件设计!
没有软件设计就没有技术进步!
评论