某互联网公司正在开发一个大型电商平台,技术团队需要选择合适的软件架构风格。在架构设计评审会上,不同的架构师提出了不同的意见:
💡 架构师意见
| 架构师 A | ||
| 架构师 B | ||
| 架构师 C | ||
| 架构师 D |
📝 试题部分
【问题 1】(8 分)
请解释软件架构的基本概念,并填写以下内容:
(1) 架构设计就是______,即将满足需求的职责分配到组件上。(2 分)
(2) 软件架构为软件系统提供了一个______。(2 分)
(3) 软件架构风格是特定应用领域的______。(2 分)
(4) 架构定义______。(2 分)
【问题 2】(9 分)
在架构设计过程中,需要使用多种视图来描述系统。请填写以下视图相关的内容:
(1) UML 4+1 视图包括:______、______、______、______、______。(5 分)
(2) 架构 4+1 视图包括:______、______、______、______、______。(5 分)
【问题 3】(8 分)
请根据五大架构风格,填写其子风格:
✅ 参考答案
【问题 1 答案】(8 分)
| 组件设计/将系统分解为组件 | |
| 结构、行为和属性的高级抽象 | |
| 惯用模式 | |
| 一个词汇表和约束 |
【问题 2 答案】(9 分)
(1)UML 4+1 视图:
(2)架构 4+1 视图:
【问题 3 答案】(8 分)
| 批处理序列、管道 - 过滤器 | |
| 主程序/子程序、面向对象风格、层次结构风格 | |
| 进程通信、事件系统 | |
| 解释器、基于规则的系统 | |
| 数据库系统、超文本系统、黑板系统 |
📚 深度解析
【问题 1 深度解析】
一、软件架构基础概念详解
1. 软件架构的定义
| 核心定义 | |
| 组成要素 | |
| 关注点 |
2. 架构设计的本质
| 架构设计 | |
| 核心任务 | |
| 关键决策 |
📊 架构设计过程:
3. 软件架构风格
| 定义 | |
| 作用 | |
| 选择依据 |
4. 架构定义的内容
| 词汇表 | |
| 约束 | |
| 系统家族 |
📋 架构定义示例(管道 - 过滤器风格):
【问题 2 深度解析】
一、UML 4+1 视图详解
1. 用例视图(Use Case View)
| 关注点 | |
| 描述内容 | |
| 受众 | |
| 作用 |
2. 逻辑视图(Logical View)
| 关注点 | |
| 描述内容 | |
| 受众 | |
| 作用 |
3. 进程视图(Process View)
| 关注点 | |
| 描述内容 | |
| 受众 | |
| 作用 |
4. 实现视图(Implementation View)
| 关注点 | |
| 描述内容 | |
| 受众 | |
| 作用 |
5. 部署视图(Deployment View)
| 关注点 | |
| 描述内容 | |
| 受众 | |
| 作用 |
二、架构 4+1 视图详解
1. 逻辑视图(Logical View)
| 关注点 | |
| 描述内容 | |
| 表示方法 | |
| 设计原则 |
2. 进程视图(Process View)
| 关注点 | |
| 描述内容 | |
| 表示方法 | |
| 设计原则 |
3. 物理视图(Physical View)
| 关注点 | |
| 描述内容 | |
| 表示方法 | |
| 设计原则 |
4. 开发视图(Development View)
| 关注点 | |
| 描述内容 | |
| 表示方法 | |
| 设计原则 |
5. 场景视图/用例视图(Scenarios View)
| 关注点 | |
| 描述内容 | |
| 表示方法 | |
| 作用 |
📊 UML 4+1 视图与架构 4+1 视图对比:
【问题 3 深度解析】
一、五大架构风格详解
1. 数据流风格(Data Flow Style)
(1)批处理序列
| 特点 | |
| 数据传递 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
(2)管道 - 过滤器
| 特点 | |
| 数据传递 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
📊 数据流风格对比:
2. 调用/返回风格(Call/Return Style)
(1)主程序/子程序
| 特点 | |
| 调用机制 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
(2)面向对象风格
| 特点 | |
| 核心机制 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
(3)层次结构风格
| 特点 | |
| 核心机制 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
📋 层次结构示例:
3. 独立构件风格(Independent Components Style)
(1)进程通信
| 特点 | |
| 通信机制 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
(2)事件系统
| 特点 | |
| 核心机制 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
4. 虚拟机风格(Virtual Machine Style)
(1)解释器
| 特点 | |
| 核心组件 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
(2)基于规则的系统
| 特点 | |
| 核心组件 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
5. 仓库风格(Repository Style)
(1)数据库系统
| 特点 | |
| 核心机制 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
(2)超文本系统
| 特点 | |
| 核心机制 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
(3)黑板系统
| 特点 | |
| 核心组件 | |
| 典型应用 | |
| 优点 | |
| 缺点 |
易混淆点:仓库风格的黑板系统 和 虚拟机风格的规则系统 有相似但不同
| 共享数据区 | ||
| 知识单元 | ||
| 触发机制 | ||
| 执行模式 | ||
| 适用场景 |
但,不同的是:
黑板系统 = "多个专家围着一块黑板协作解题"
重点是"协作"
知识源之间可以互不知晓
控制是调度和协调
规则系统 = "一个法官拿着法典判案"
重点是"推理"
规则是静态的,引擎是动态的
控制是匹配和执行
总结:
相似:都是数据驱动,都有共享数据区和独立知识单元;
区别:黑板系统是架构级别的协作模式,规则系统是组件级别的推理引擎;
📋 核心知识点速查表
一、软件架构基础速查
| 软件架构 | ||
| 架构设计 | ||
| 架构风格 |
二、4+1 视图速查
三、五大架构风格速查
四、架构风格选择指南
💡 备考建议
📌 记忆口诀
架构基础:组件设计、高级抽象、惯用模式、系统家族
4+1 视图:逻物开进景(逻辑、物理、开发、进程、场景)
五大风格:数调独虚仓(数据流、调用/返回、独立构件、虚拟机、仓库)
🎯 答题技巧
- 填空题:准确记忆专业术语,注意大小写规范
- 视图题:区分 UML 4+1 和架构 4+1 视图的异同
- 风格题:记住五大风格及其子风格,理解适用场景
- 案例题:结合背景材料,选择合适的架构风格并说明理由
夜雨聆风