共享信息系统 - 软件架构课程 Lecture-4

授课教师:周立新(Dr. Lixin Zhou) 课程:0B105 - Software Architecture 来源:北京大学软件与微电子学院

课程概述

本讲探讨**共享信息系统(Shared Information Systems)**这一类系统的架构风格,通过三个领域的历史演进案例,揭示信息系统架构从批处理顺序模型向集成式、分布式、交互式系统演进的共同规律,并讨论领域特定设计支持(domain-specific design support)的问题。

三个典型领域案例:

  1. 数据库系统(Database Systems)
  2. CASE 环境(Computer Aided Software Engineering)
  3. 建筑设计系统(Building Design Systems)

一、数据库系统的架构演进

1. 批处理顺序模型(Batch Sequential)

早期数据库系统采用批处理顺序架构,典型特征:

  • 处理步骤是独立的程序(Processing steps are independent programs)
  • 每一步必须全部运行完成后才能开始下一步(Each step runs to completion before next step starts)
  • 数据通过磁带(magtape)在程序间传递

典型数据流(Figure 4.1/4.3):

Tape → Validate → Tape → Sort → Tape → Update → Tape → Report
                                  ↑
                                 Tape(回环)

批处理更新程序的内部结构(Figure 4.2):

  • 驱动程序函数(Driver program functions):对所有应用通用(Generic to all applications)
    • “Access next trans” 模块
    • Batch unique functions
  • 子程序函数(Subprogram functions):特定于每个事务
    • Basic consistency checks(基本一致性检查)
    • Account/item access(账目/项访问)
    • Account/item validation(账目/项验证)
    • Account/item posting(账目/项过账)

Note: The driver calls a different set of subprograms for each transaction type.

2. 交互式处理模型(Interactive Processing)

技术进步和用户需求推动了从批处理向交互式的转变:

  • 并发操作(concurrent operation)
  • 更快的更新速度(faster updates)
  • 更新与报告不再同步(updates are out of synch with reports)
  • 采用**仓库模型(Repository model)**加外部控制

交互式数据库数据流图(Figure 4.4):

  • Transaction database(事务数据库)
  • Account/item database(账目/项数据库)
  • Extract database(提取数据库)

六大处理节点:

  1. Batch transaction updates(批处理事务更新)
  2. On-line validation and update(在线验证与更新)
  3. Sequential processing facilities(顺序处理设施)
  4. Output processing(输出处理)
  5. On-line inquiry(在线查询)
  6. Exception data changes(异常数据变更)

输入输出:Direct input、Pre-formatted transactions、On-line information、Computer output

3. 统一模式集成(Unified Schemas)

当信息分布在多个不同数据库中时,采用统一模式方法:

  • 抽象方法:多路复用数据库(Multiplex the database),在查询/更新上放置过滤器以匹配不同视图
  • 通过定义(被动的)一致转换映射到多个数据库,创建一个虚拟数据库

示例:多图书馆系统的模式多样性(Figure 4.8 Diversity of Schemas for a Single Construct)

同一个”图书”概念在四个不同图书馆数据库中模式完全不同:

图书馆表名关键属性
Main (CDB1)item(i#, title, author-name, subject, type, language)
Engineering (CDB1)items(i#, title, a-name, type, c-letter, f-digit, …)
City public (CDB3)books(i#, lc-num, name, title, subject)
Comm college (CDB4)item(i#, lc-number, title, a-name)

即使是同一领域的同一概念,不同系统的 schema 设计差异也很大,集成需要复杂的模式映射。

4. 多数据库系统(Multi-database)

当数据库有很多用户时,被动映射不再足够:

  • 使用主动代理(active agents)
  • 采用分层体系结构(Layered hierarchy)
  • 受限于:数据量、映射复杂性、数据不一致性处理

5. 数据库架构演进总结

阶段架构模型特点
批处理独立程序 + 磁带传递顺序执行,离线处理
交互式仓库模型 + 外部控制并发操作,实时更新
分布式多数据库分散信息分布在多个DB中
统一模式虚拟数据库 + 被动映射模式转换实现集成
多数据库主动代理 + 分层层次复杂映射 + 不一致处理

二、CASE 环境的架构演进

1. 从编译器到 CASE 工具

CASE(Computer Aided Software Engineering)的演进轨迹:

  • 最初:只是源代码到目标代码的翻译——编译器、库、链接器、make
  • 扩展:设计记录、文档、分析、配置管理、增量性
  • 集成需求:被呼吁了20年,但始终未能真正实现

CASE vs DBMS 对比:

维度CASEDBMS
数据类型更多类型相对较少
每种类型实例数更少大量
查询速率更慢更快
信息特点更大、更复杂、更少离散结构化、离散
生命周期不更短较长

2. 编译器架构的演进

传统编译器(Traditional Compiler):流水线式处理

现代典范编译器(Modern Canonical Compiler, Figure 4.15):

Text → Lex → Syn → Sem → Opt → Code → Code
              ↓       ↓       ↓
            Sym tab  Tree  Sym tab
  • Lex(词法分析)→ Syn(语法分析)→ Sem(语义分析)→ Opt(优化)→ Code(代码生成)
  • 共享表示:符号表(Sym tab)、语法树(Tree)
  • 数据流(Vestigal data flow)vs 内存访问(Memory / Data fetch/store)
  • 计算(transducers and transforms)

仓库视角的现代编译器(Canonical Compiler, Revisited, Figure 4.16):

  • 以中央仓库为核心(Tree / Sym tab)
  • 多个工具(Lex、Syn、Sem、Opt1、Opt2、Code、Edit、Syn)围绕共享表示工作
  • 可能是基于规则的(Might be Rule-Based)
  • 体现了从管道过滤器向仓库架构的转变

3. 共享表示的软件工具(Figure 4.17)

两种集成模式对比:

专有项目字典(Proprietary project dictionary):

  • 左侧:tool 1/2/3/4 直接 Query/update 专有字典(封闭系统)
  • 右侧:tool a/b 通过 Conversion 转换与 Open representation 交互
  • 右侧:tool x/y 通过 conv 转换层访问
  • loser 工具——无法集成的工具

关键洞察:

  • 封闭系统:工具为系统专门构建,深度集成但扩展性差
  • 开放系统:通过转换层集成外部工具,灵活但转换成本高

4. NIST/ECMA 环境集成参考模型(Figure 4.18)

六层架构模型(从下到上):

层级服务说明
1Message services(消息服务)最底层通信基础设施
2User-interface services(用户界面服务)统一界面交互
3Process-management services(过程管理服务)工具执行与协调
4Tool layer(工具层)Vertical tools(纵向工具)+ Horizontal tools(横向工具),Open tool slots(开放工具槽)
5Data-integration services(数据集成服务)数据转换与集成
6Repository services(仓库服务)最顶层,统一数据存储

特点:即插即用新工具(Plug and use a new tool),分层架构支持开放性和可扩展性。

5. CASE 环境演进总结

演进路径(与数据库高度相似):

  • 交互方式:批处理 → 交互式
  • 粒度:完整处理 → 增量式处理
  • 覆盖范围:编译 → 全生命周期
  • 集成方式:批处理顺序 → 刚性控制的仓库 → 分层开放系统

集成仍薄弱的原因:

  • 被动转换、刚性排序(Passive conversions, rigid ordering)
  • 只有系统级概念的知识(文件、日期)
  • 需要学会处理复杂依赖关系和工具选择,但目前尚未做到

三、建筑设计系统的架构演进

1. 建筑设计行业特点

建筑业(Construction industry):

  • 完善的责任分解(Well-established decomposition of responsibilities)
  • 地理上分散的子问题解决方案(Geographically dispersed solutions)
  • 每次不同的组织组合(Different collection of organizations each time)
  • 任务相互交互,协调本身就是专门技能(Tasks interact, coordination is its own specialty)

计算的自底向上演进:

  • 早期:各子行业独立的算法设计系统
  • 下一步:整个设施开发过程的集成

第三个案例(建筑设计)在独立交互式系统出现之前的阶段,与前两个案例类似——从早期集成努力中可以观察到相同的演进模式。

2. 集成建筑设计系统(Integrated Building Design Systems)

核心挑战:

  • 各个工具结果的选择和组合需要判断、经验和经验法则(judgment, experience, rules of thumb)
    • 不是算法式的(Not algorithmic)
    • 需要规划(Requires planning)

早期努力:支持-监控系统(support-supervisory systems)

  • 向工具添加数据管理、信息流控制

目标:数据、设计决策、知识的集成

  • 紧密耦合的”大师建造者”模式(Closely-coupled Master Builder),或
  • 协作工具组成的设计环境(Design environment with cooperating tools)

3. 80年代设计控制问题求解(Problem-Solving for Design Control)

五个维度的分析:

维度80年代的典型做法
数据主要是仓库:共享公共表示 + 转换为工具的私有表示
通信主要是共享数据,部分消息传递
工具封闭(为系统专门构建)vs 开放(可集成外部工具)
控制主要是单层层次结构:工具在底层,协调在顶层
规划主要是固定的种类和处理顺序划分;脚本有时允许有限的灵活性

4. 集成建筑设计环境(IBDE, Figure 4.19)

典型架构:

  • User(用户)
  • Controller(控制器)
  • Data manager(数据管理器)
  • Global data(全局数据)
  • 多种专业工具:Archplan、Strypes、Stanlay、Spex、Footer、Planex 等

5. 智能 IBDE 的架构(Figures 4.20 & 4.21)

高层架构(High-Level Architecture for Intelligent IBDE):

  • Agent 网格架构 + 操作系统(Oper Sys, fixed)
  • GI data / Archplan / Strypes / Stanlay / Core / Spex / Footer / Planex 等专业模块

Soar/IBDE 详细架构:

  • Knowledge of task(任务知识)
  • Knowledge for using ESSs(使用专家系统的知识)
    • Formulate subtask(制定子任务)
    • Create input(创建输入)
    • Simulate ESS(模拟专家系统)
    • Operate SW sys(操作软件系统)
    • Interpret result(解释结果)
    • Convert output(转换输出)
  • I/O (fixed)(固定 I/O 层)
  • Oper Sys (fixed)(固定操作系统层)

四、架构风格对比与总结

批处理顺序 vs 管道过滤器(Figure 4.22)

维度(a) Batch Sequential(b) Pipe/Filter
数据载体Tape(磁带/文件)Stream(流)
处理单元Validate / Sort / Update / ReportFilter(过滤器)
执行方式每步运行完整后进入下一步流式、增量式处理
耦合度高(完整数据文件传递)低(流式接口)

批处理顺序架构可以看作管道过滤器架构的”粗粒度”版本——以完整文件为数据单元而非数据流。

黑板架构(Blackboard Architecture, Figure 4.23)

共享信息系统的终极架构形式——黑板架构:

         ks1      ks2
          \      /
           \    /
    ks3 — Blackboard (shared data) — ks4
           /    \
          /      \
         ks5      ks6
          \      /
           ks7  ks8
  • 中央共享数据区:Blackboard (shared data)
  • 多个独立知识源(ks1 ~ ks8)
  • 知识源通过黑板间接通信
  • 没有中央控制,知识源自主响应黑板状态变化
  • 适用于问题求解路径不明确、需要多领域知识协作的系统

三个领域的共同演进规律

阶段数据库CASE建筑设计
1批处理顺序独立编译工具独立专业工具
2交互式仓库交互式设计工具交互式建筑工具
3多数据库分布式仓库式CASE环境支持-监控系统
4统一模式 / 多数据库分层开放环境智能IBDE / 黑板

共同主题:

  1. 从批处理到交互式
  2. 从独立工具到集成环境
  3. 从刚性控制到分层开放
  4. 共享表示 vs 私有表示的平衡
  5. 数据集成始终是核心挑战

关键概念索引

  • Batch sequential model(批处理顺序模型)
  • Repository model(仓库模型)
  • Unified schema(统一模式)
  • Multi-database / Federated database(多数据库/联邦数据库)
  • CASE environment(CASE 环境)
  • Canonical compiler(典范编译器)
  • Shared representation(共享表示)
  • Proprietary vs open repository(专有 vs 开放仓库)
  • NIST/ECMA reference model(NIST/ECMA 参考模型)
  • IBDE(Integrated Building Design Environment,集成建筑设计环境)
  • Blackboard architecture(黑板架构)
  • Knowledge source(知识源)
  • Master Builder model(大师建造者模式)
  • Support-supervisory systems(支持-监控系统)

与其他知识的关联