软件架构案例研究(三)——巡航控制 / CIMS / 混合风格架构

来源:田浩然上传的资料 / 0B105-SoftwareArchitecture / Lecture-4 / Case Study 3.pdf 讲师:周立新博士(北京大学软件与微电子学院) 页数:36 页 语言:英文 + 中文混合

概述

本讲是软件架构课程的案例研究第三讲,通过三个不同领域的案例,展示不同架构风格在实际系统中的应用,以及架构风格的选择对设计质量的决定性影响。

三大案例:

  1. 巡航控制系统(Cruise Control) — 过程控制风格 vs 面向对象风格的对比
  2. 计算机集成制造系统(CIMS) — 仓库(Repository)风格在企业级系统中的应用
  3. 混合风格架构(Mixed Styles) — 实际系统往往是多种架构风格的组合

一、巡航控制系统(Cruise Control)

1. 系统概述

巡航控制系统的作用是即使在地形变化的情况下,也能维持汽车的行驶速度。

输入(8项):

  • System on/off — 系统开关
  • Engine on/off — 发动机开关
  • Pulses from wheel — 车轮脉冲(车速检测)
  • Accelerator — 油门信号
  • Brake — 刹车信号
  • Increase/decrease speed — 提速/降速指令
  • Resume speed — 恢复车速指令
  • Clock — 时钟信号

输出:

  • Throttle — 节气门控制信号

2. 面向对象视图(Object View)

Booch 的面向对象设计将巡航控制系统分解为 9 个对象:

对象角色
Driver驾驶员(外部交互主体)
Clock时钟(时间基准)
Wheel车轮(执行部件)
Current speed当前速度(计算/存储)
Desired speed期望速度(目标车速存储)
Brake制动器
Engine发动机
Accelerator油门
Throttle节气门(控制输出)

对象间交互:

  • Driver → Brake / Desired speed(驾驶员操作刹车、设定速度)
  • Clock → Current speed(时钟用于速度计算)
  • Wheel → Current speed(车轮信号计算当前速度)
  • Desired speed → Throttle(期望速度控制节气门)
  • Throttle → Engine / Current speed(节气门调节动力、影响车速)

问题: 面向对象方法将系统分解为真实世界的实体对象,但巡航控制的核心——控制逻辑和时序——在对象模型中被分散和隐藏,不容易从对象图中直接看出系统的控制策略。

3. 过程控制视图(Process-Control View)

过程控制风格将系统建模为闭环反馈控制系统,核心是控制单元和反馈回路。

完整系统组成(5 个模块):

模块功能
State machine for toggle切换状态机(巡航启停切换逻辑)
Event table for set point设定点事件表(目标车速管理)
Control unit控制单元(核心处理)
Clock时钟(时序基准)
Wheel rotation车轮转动(被控对象)

信号流向:

  • 状态机 → 控制单元:激活/停用切换信号
  • 事件表 → 控制单元:期望车速
  • 时钟 → 控制单元 / 事件表:时序同步
  • 控制单元 → 车轮转动:控制输出

4. 激活状态机

巡航控制系统的工作状态机(5 种状态):

状态含义
OFF系统完全关闭
Inactive nil发动机已启动,巡航未激活、无设定速度
ACTIVE巡航激活,正在工作(核心状态)
Inactive fast临时非激活,车速高于设定值
Inactive slow临时非激活,车速低于设定值

关键状态切换:

  • OFF ↔ Inactive nil:Engine on/off
  • Inactive nil ↔ ACTIVE:System on/off
  • ACTIVE ↔ Inactive fast:车速超过 / 回落至设定值
  • ACTIVE → Inactive slow:踩下刹车(Brake)
  • Inactive slow → ACTIVE:Resume 恢复

全局规则: 所有状态在 Engine off 时回到 OFF;除 OFF 外所有状态在 System off 时回到 Inactive nil。

5. 分析与讨论

架构与问题的对应关系:

  • 面向对象方法 → 关注对象识别和交互
  • 过程控制方法 → 关注反馈回路、控制策略、性能指标

方法论启示:

  • 自上而下的设计方法论(top-down methodology)
  • 系统修改的便利性:过程控制风格下修改控制策略更直接

性能(Performance): 系统响应控制的三种策略

  1. On/Off control — 开关控制(简单但有振荡)
  2. Proportional Control — 比例控制(P 控制)
  3. Proportional plus reset control — 比例+积分控制(PI 控制,消除稳态误差)

正确性(Correctness): 嵌入式实时系统必须保证控制逻辑的正确性

6. 何时选择控制架构?

当满足以下条件时,应当考虑采用闭环控制设计:

  1. 任务需要维持持续的动作、行为或特定状态(continuing action, behavior, or state)
  2. 软件是嵌入在物理系统中的嵌入式软件(embedded in a physical system)
  3. 开环计算无法满足需求,通常是因为存在外部扰动,或是对外部状态的认知不精确(external perturbations or imprecise knowledge)

7. 巡航控制案例总结

设计方法论的很大一部分效力,来源于它能否在恰当的时机将注意力聚焦在重要决策上。

  • 基于过程控制的方法论,比面向对象方法论更能引出巡航控制系统的高层设计决策
  • 巡航控制是一类典型问题:嵌入式软件控制实时过程
  • 这类问题会提早暴露性能与正确性问题 — 这些问题在其他架构风格下可能不会这么早被发现

二、计算机集成制造系统(CIMS)

1. CIMS 的功能结构

CIMS 包含制造企业的设计、制造、经营管理三种主要功能,由分布式数据库和计算机网络作为支撑环境。

四个功能分系统:

分系统核心说明
管理信息分系统以 MRPⅡ 为核心经营管理、生产计划、物料需求
工程设计自动化分系统CAD/CAPP/CAM产品设计、工艺设计、数控编程
制造自动化分系统数控机床 / FMS柔性自动化制造
质量保证分系统CAQ质量检测、评价、控制、跟踪

两个支撑分系统:

  • 计算机网络分系统 — 异种机互联、异构网络互联
  • 数据库分系统 — 覆盖企业全部信息,支撑各分系统

2. CIMS 集成的内涵

集成 ≠ 简单连接。集成是将原来没有联系或联系不紧密的单元,组成为有一定功能、紧密联系的新系统。

五个层面的集成:

  1. 系统运行环境的集成 — 硬件、操作系统、网络的统一
  2. 信息的集成 — 数据共享、一致性、唯一性
  3. 应用功能的集成 — 各业务系统的协同工作
  4. 技术的集成 — 多种技术手段的融合
  5. 人和组织的集成 — 人员、流程、组织结构的整合

3. CIMS 的广泛适用性与效益

广泛适用性:

  • 没有行业限制(企业共同目标:高生产率 + 高柔性)
  • 没有规模限制(可逐步扩大、量力而行)
  • 甚至不用计算机,只要遵循 CIM 哲理寻求最佳经营模式,也可认为是 CIMS

三大效益:

  1. 工程设计自动化方面 — 缩短产品设计与工艺设计周期,支持复杂产品开发
  2. 加工制造方面 — 提高制造柔性与质量,提高设备利用率,缩短制造周期
  3. 经营管理方面 — 报价快速准确,减少在制品,压缩库存,加速资金周转

4. 工业控制系统的层级架构(PROVOX 示例)

典型的工业控制系统采用 5 层金字塔架构:

层级功能系统组成
Level 5Corp. mgmt.(公司管理)Corp. computers(企业级计算机)
Level 4Plant management(工厂管理)PROVOX plus application software
Level 3Process management(过程管理)ENVOX configuration software
Level 2Process supervision(过程监控)PROVUE consoles(操作控制台)
Level 1Process measurement and control(过程测量与控制)PROVOX plus controllers

这是分层架构在工业控制领域的典型应用,每一层负责不同抽象级别的管理和控制。

5. ITCMS 集成式全面成本管理系统

CIMS 思想在成本管理领域的延伸 — 三层架构:

层级模块内容
领导决策层决策战略决策支持
管理业务层成本管理战略 + 成本管理大纲企业使命研究 / 差异化战略 / 组织框架 / 控制机制
作业成本管理体系5 大模块产品开发过程成本 / 生产过程成本 / 存货资金成本 / 生命周期成本效益评价 / 质量成本
作业层(底层)4 类业务系统CAD/PDM/CAPP + MRPII + CAQ + 营销系统

底层支撑:数据库 / 网络支撑系统


三、混合风格架构(Mixed Styles)

实际软件系统很少只使用单一架构风格,更多是多种风格的混合与组合。

1. 分层设计中的不同风格

一个系统的不同层次可以采用不同的架构风格:

层次风格
Level 1面向对象模型
Level 2面向对象(使用点集)
Level 3面向对象模型
Level 4(待补充)
Level 5数据处理仓库模型

关键洞见: 架构风格不是非此即彼的选择,而是可以按层次组合。下层偏数据表示,上层偏业务处理,不同层次使用最适合的风格。

2. 基于规则的系统(Rule-Based System)

基于规则的专家系统是一种特殊的仓库/解释器混合架构:

四大模块:

模块组成功能
工作记忆(Working Memory)多维工作记忆暂存输入、中间数据;Inputs/Outputs 接口
知识库(Knowledge Base)规则记忆(激活/非激活)+ 事实记忆(激活/非激活)存储规则和事实
规则与数据选择规则编译器 + 数据流网络 + 元规则 + Agenda 议程匹配规则、冲突消解、优先级排序
规则解释器Scheduler 调度器 + Interpreter 解释器 + Execution stack 执行栈执行规则、控制系统

运行循环(匹配-选择-执行):

  1. 输入进入工作记忆,与激活的规则/事实匹配
  2. 匹配成功的候选规则按元规则优先级排序,存入 Agenda
  3. 调度器选中优先级最高的规则,交给解释器执行
  4. 执行结果更新工作记忆,触发下一轮循环

3. 黑板架构(Blackboard Architecture)—— Hearsay-II

Hearsay-II 是黑板架构的经典实现(最初用于语音理解)。

三大核心组成:

组件作用
Blackboard(黑板)全局共享的分层数据结构(Level 1 ~ Level n),存储所有中间结果
Knowledge Sources(知识源 KS)独立的领域知识模块,每个 KS = Condition + Action(条件-动作对)
控制模块黑板监控器 + 调度队列 + 调度器 + 控制焦点数据库

运行流程:

  1. 初始数据写入黑板底层
  2. 黑板监控器检测变化,匹配 KS 条件,满足的 KS 放入调度队列
  3. 调度器按优先级选择 KS 执行
  4. KS 的 Action 修改黑板内容
  5. 新变化再次触发监控,循环往复直到求解完成

核心特征:

  • 知识源之间不直接通信,所有信息通过黑板传递
  • 机会主义求解 — 哪个 KS 的条件满足就执行哪个
  • 控制流与数据流分离

4. 黑板重铸为解释器(Blackboard as Interpreter)

黑板架构可以从另一个视角看:它本质上也是一个解释器架构。

Hearsay-II 的解释器视图:

解释器组件对应黑板概念
Program State(程序状态 / 工作内存)Blackboard 黑板(分层结构)
Pseudocode(伪代码 / 知识库)KS 知识源(Condition + Action)
Control State(控制状态)调度队列 + 刺激响应帧
Interpretation Engine(解释引擎)黑板监控器 + 调度器 + 控制焦点数据库

关键洞见:

  • 同一个系统可以用不同的架构风格来理解和描述
  • 黑板视图 → 强调数据共享和机会主义求解
  • 解释器视图 → 强调程序状态 + 知识库 + 解释引擎的循环
  • 选择哪种视图取决于设计关注点:是关注数据组织?还是关注执行过程?

Actions are also part of interpretation engine. (知识源的动作部分也属于解释引擎的组成部分。)


核心收获

  1. 架构风格决定设计视野 — 选择面向对象还是过程控制,会导致你关注的设计决策完全不同
  2. 嵌入式实时系统适合控制架构 — 当软件嵌入物理系统、需要维持持续状态时,闭环控制比 OO 更合适
  3. 企业级系统适合仓库风格 — CIMS 是仓库/分层架构在制造业的典型应用,集成是核心理念
  4. 实际系统都是混合风格 — 很少有系统只用一种架构风格,分层组合、视角转换是常见做法
  5. 同一系统可以有多种架构视图 — 黑板和解释器是对同一系统的两种抽象,各有适用场景

关联笔记