- 性能之道:分布式系统全栈性能优化
- 于君泽 曹洪伟 李伟山 秦金卫 陈龙泉
- 1161字
- 2025-02-21 17:02:48
1.2 软件架构的分类
既然软件架构是空间体系结构和时间决策流程的结合,我们就可以从时空视角来对软件架构进行分类了。当然,时空是一体的,只是侧重的视角不同而已。
1.2.1 体系结构上的分类
软件架构是面向计算机系统的。因此,回顾计算机系统的体系结构有助于理解软件架构的分类视角。尽管计算机系统的体系结构不断演变,但基本的抽象仍然是冯·诺依曼提出的计算机体系结构,如图1-1所示。

图1-1 冯·诺依曼的计算机体系结构
冯·诺依曼体系的核心是将需要的程序和数据送入计算机中。计算机必须具备长期记忆程序、数据、中间结果和最终运算结果的能力。计算机能完成各种算术运算、逻辑运算和数据传送等加工处理工作,并能根据需要控制程序的执行路径,同时根据指令控制机器的各个部件协调工作,以便将处理结果按照要求输出给用户。
将指令和数据同时存放在存储器中是冯·诺依曼计算机方案的一个特点。在计算机体系结构中,软件架构可以分为逻辑架构、数据架构和物理拓扑架构。
1.逻辑架构
逻辑架构是由软件(用户)需求驱动的,是基于对用户需求的考量形成的。软件的逻辑架构是对整个系统进行抽象分解,将系统划分为多个逻辑单元,每个逻辑单元都能实现自己的功能。
逻辑架构关注功能模块的职责划分和接口定义。其中,需要特别注意的是不同粒度的功能职责,如逻辑层、功能子系统、模块和关键类等。不同通用程度的功能需要进行分离,并分别封装到专门模块、通用模块或通用机制中。
2.数据架构
数据架构是根据业务功能需求的数量来设计的,所有业务都是围绕数据展开的。数据是软件的核心,数据架构将逻辑架构中确定的功能映射到数据处理中。数据架构明确了支持业务所需的各种数据以及这些数据之间的关系。
3.物理拓扑架构
物理拓扑架构指的是软件具体的部署和运行环境。它描述了软件运行所需的计算机、网络、硬件设施等情况,以及将软件部署到硬件资源的情况、运行期间的配置情况。换句话说,物理拓扑架构明确了程序在计算机系统上的映射方式,以及数据在计算机系统中的存储、读写和传输方式。它同时考虑了具体业务功能在逻辑架构中的分布和数据处理功能在数据架构中的分布。
1.2.2 流程决策上的架构分类
架构的本质就是对系统进行有序化重构,不断降低系统无序的程度,使系统不断进化。从这个角度看,软件架构可以分为开发架构、运行架构。
1.开发架构
开发架构明确了软件开发流程中的重要决策。它涵盖了具体模块(如源代码、程序包、编译后的目标文件、第三方库和配置文件等)的组织方式。开发架构确保了软件开发期间的质量,包括代码的可扩展性、可重用性、可移植性、易理解性和易测试性等。
2.运行架构
运行架构描述了软件的运行状态,如软件中的对象交互、用户与软件之间的交互、系统间通信等。运行架构还涵盖了软件的非功能性需求,如安全性、可靠性、可伸缩性等质量相关的需求,以及系统响应时间、吞吐量等性能相关的需求。