第 1 周作业 - 学习总结
本周主要学习了四大方面的内容:
1)大厂架构师招聘职位要求以及常见面试题;
2)架构设计的本质以及多视图的方式来描述架构;
3)使用 UML 进行软件架构建模;
4)架构设计文档写作模式。
下面分享一下自己的学习总结:
软件架构是由元素、形式以及关系约束组成,因为架构设计要面向不同的角色如开发人员、测试人员、运维人员甚至管理人员,因此架构设计需要多种视图来表达,一般采用逻辑视图、过程视图、物理视图、开发视图以及用例视图来描述架构。
1)逻辑视图
构成逻辑视图的元素主要包括系统、子系统、功能模块、子功能模块以及交互。逻辑视图主要面向客户、用户以及开发组织管理者。用途是开发组织划分、成本/进度的评估。
2)过程视图
构成过程视图的元素包括系统进程、线程以及处理队列等。过程视图主要面向性能优化人员、开发相关人员。
3)物理视图
构成物理视图包括物理节点以及节点的通信。物理视图主要面向系统集成商、系统运维人员。
4)开发视图
构成开发视图包括层、分区、包、框架、系统通用服务、业务通用服务、类和接口、系统平台和相关基础框架,开发视图主要相关者包括开发相关人员、测试人员。
5)场景视图
构成场景视图包括角色、用例、关系等,场景视图主要用于用户、设计和开发人员。
在实践中并不会设计上面这些视图,而是通过 UML 来建模,但上面这些视图提供了一个思考点和启发。
模式是一个系统的完整的抽象。人们对某个领域特定问题的求解及解决方案,对它们的理解和认识都蕴含在模型中。
通常,开发一个计算机系统是为了解决某个领域特定问题,问题的求解过程,就是从领域问题到计算机系统的映射。
为什么需要建模?
可维护性、可扩展性、代码质量
领域模型设计+系统设计
建造传统模型的目的
为了证明某件事物能否工作
前提:建造模型成本远低于建造实物成本
建造软件模型目的
为了与它人沟通
为了保存软件设计的最终成果
前提:除非模型比代码更说明问题
何时画图?
讨论、交流时
最终设计文档
只保留少量的、重要的图
避免涉及过多内容和实现细节
何处画图?
白板
绘图工具,如 visio,Aastah
draw.io
什么是 UML?
Unified Modeling Language, 统一建模语言
以图形方式描述软件的概念
图是否规范是否不重要,重要的是能正确表达思想,像人的方言一样,是否有用为第一性原理
UML 可用来描述
某个问题领域
构思中的软件设计
描述已经完成的软件实现
评论