软件体系结构
与设计模式
Created: 2023-05-16 Tue 01:28
- 一个 程序 或 计算机系统 的 软件体系结构 是指系统的 一个 或者 多个 结构 。
- 结构 中包括软件的 构件 、构件的
外部可见属性 以及它们之间的相互 关系 。
- 外部可见属性 是指软件构件提供的 服务 、 性能 、 使用特性 、
错误处理 、 共享资源使用 等。
这一定义强调在任意体系结构表述中 软件构件 的角色。
软件体系结构是具有一定形式的 结构化元素 ,即 构件 的集合, 包括处理构件、数据构件和连接构件。
- 处理构件 负责对数据进行加工,
- 数据构件 是被加工的信息,
- 连接构件 把体系结构的不同部分组合连接起来。
这一定义注重区分处理构件、数据构件和连接构件。
软件设计模式是从软件设计过程中总结出来的, 是针对特定问题的解决方案。
建筑师 C. Alexander 对模式给出的经典定义是:
每个模式都描述了一个在我们的环境中不断出现的
问题 及该问题 解决方案 的核心。
%%{init: { 'theme': 'forest', 'fontFamily': 'Times New Roman, KaiTi' }}%%
graph LR
P["模式"]
P --- A["体系结构模式(architectural pattern)"]
P --- D["设计模式(design pattern)"]
P --- I["惯用法(idiom)"]
Figure 1: 软件系统中的3类模式
极大地提高系统的性能。
%%{init: { 'theme': 'forest', 'fontFamily': 'Times New Roman, KaiTi' }}%%
flowchart TB
CS["C/S体系结构"]
CS --- CS2["二层C/S体系结构"]
CS --- CS3["三层C/S体系结构"]
subgraph G21[" "]
C21A["服务器:数据管理与应用逻辑层"]
C21B["客户机:表示层"]
end
subgraph G22[" "]
C22A["服务器:数据管理层"]
C22B["客户机:应用逻辑与表示层"]
end
subgraph G3[" "]
CS3R["客户机:表示层"]
CS3A["应用服务器:应用逻辑层"]
CS3D["数据服务器:数据层"]
end
CS2 --- CS2T["瘦客户机模型"]
CS2 --- CS2F["胖客户机模型"]
CS2T -..- G21
CS2F -..- G22
CS3 -..- G3
Figure 2: C/S体系结构
分布式系统设计的更通用方法是去掉 客户机 与 服务器 之间的差别, 用 分布式对象 体系结构来设计系统。
参考教材
代理可以用于构建带有隔离组件的分布式软件系统, 该软件通过远程服务调用进行交互。
一个交互式应用系统由模型(Model)、视图(View)和控制器(Controller)3个部分组成, 分别对应于内部数据、数据表示和输入输出控制部分。
%%{init: { 'theme': 'forest', 'fontFamily': 'Times New Roman, KaiTi' }}%%
flowchart TB
M(("模型"))
V(("视图"))
C(("控制器"))
M --> |"通知改变"| V --> |"状态查询"| M
V --> |"用户请求"| C --> |"视图选择"| V
C --> |"状态改变"| M
subgraph GM[" "]
direction TB
MA["封装应用程序状态"]
MB["相应状态查询"]
MC["通知视图改变"]
end
subgraph GV[" "]
direction TB
VA["解释模型"]
VB["向控制器转发用户输入"]
end
subgraph GC[" "]
direction TB
CA["定义用户行为"]
CB["选择与功能相对应的视图"]
end
M -.- GM
V -.- GV
C -.- GC
Figure 3: MVC框架
J2EE的核心体系结构是在MVC框架的基础上扩展得到的。