架构学习(一)架构到底是什么?
模块和组件
从逻辑的角度来拆分系统后,得到的单元就是“模块”;
从物理的角度来拆分系统后,得到的单元就是“组件”。
划分模块的主要目的是职责分离;
划分组件的主要目的是单元复用。
框架和架构
软件框架(Software framework)通常指的是为了实现某个业界标准或完成特定基础任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
关键部分:
1.框架是组件规范:例如,MVC就是一种最常见的开发规范,类似的还有MVP、MVVM、J2EE等框架。
2.框架提供基础功能的产品:例如,Spring MVC 是 MVC 的开发框架,除了满足 MVC 的规范,Spring 提供了很多基础功能来帮助我们实现功能,包括注解(@Controller 等)、Spring Security、Spring JPA 等很多基础功能。
软件架构(Software Architecture)指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。
框架关注的是规范,架构关注的是结构。
软件架构视图:“4+1视图”
- 逻辑视图(Logical View):按照系统功能性区分模块。
可用UML的活动图、状态图、交互图表现。 - 物理视图(Physical View):描述硬件配置。
可用UML的活动图、状态图、交互图表现。 - 过程视图(Process View):过程是构成一系列单独的任务。软件被划分为一系列单独的任务。消息流、过程负载可以基于过程视图来进行评估。
可用UML的活动图、状态图、交互图、类图表现。 - 配置视图(Development View):描述了在开发环境中软件的静态组织结构。由模块和子系统图来表达,显示了输出和输入关系。子系统可以组织成分层结构,每个层为上一层提供良好定义的接口。
配置视图是各种活动的基础,如:需求分配、团队工作的分配、成本评估和计划、项目进度的监控、软件重用性、移植性和安全性,是建立产品线的基础。
可用UML的组件图、类图表现。 - 用例视图或场景视图(Use-Case View):即4+1中的1。是需求分析技术,可以正确识别系统的用户和其他系统Actor、系统边界Boundary和用例Use Case,并对系统的场景功能进行充分的分析,以确定系统提供的功能可以满足用户需求。
可用UML的用例图表现。
软件架构指软件系统的顶层结构。
系统是一群关联个体组成,个体可以是子系统、模块、组件等。
参考:
https://time.geekbang.org/column/article/6458
https://www.sohu.com/a/420535301_671228