跳到主要内容

体系结构与实现的分离

体系结构指什么?​

  • 定义: 完整和详细的用户接口说明;
  • 具体对应: 计算机对应编程手册, 编译器对应语言手册, 控制程序对应语言和函数调用手册, 整个系统对应用户完成全部工作所需参考的手册集合;
  • 角色定位: 结构师如同建筑结构师, 是用户的代理人, 用专业技术支持用户的真正利益, 而不是维护销售人员的利益;
  • 一句话区分: 体系结构陈述"发生了什么", 实现描述"如何实现";

为什么要把体系结构同实现分开?​

  • 目的: 这是获得概念完整性的强有力方法, 已在 IBM Stretch 和 360 产品线验证;
  • 例证: 时钟的结构是表面、指针和旋钮, 实现是壳内的动力装置和精度控制方案;
  • 一多对应: System/360 一个体系结构可用 9 种模型实现; 单个 Model 30 实现可服务 4 种体系结构;
  • 编程系统同理: Fortran IV 标准是体系结构, 其下可有文本为核心、编译器为核心、快速编译、侧重语法等多种实现;
  • 收益: 垂直划分从根本上减少劳动量, 简化交流, 概念完整性大幅提高, 系统反而开发更快、测试更少;

三阶段(体系结构、设计实现、物理实现)能并行吗?​

  • 三个阶段: 体系结构(architecture)、设计实现(implementation)、物理实现(realization);
  • 可以并发: 一旦实现人员对手册有模糊设想、对技术有清晰构思、成本和目标定义良好, 就可以开始;
  • 实现人员可先做的事: 设计数据流、控制序列、系统划分、表结构、算法, 选用工具和记录存档系统;
  • 物理实现层可先做的事: 电路、板卡、线缆、机箱、电源和内存分别设计; 编程中则是库的调整、系统管理、搜索排序算法;
  • 前提: 需要花费时间与结构师沟通;

让实现人员写规格说明会付出什么代价?​

  • OS/360 的真实决策: 体系结构经理(10 人, 需 10 个月, 超出允许进度 3 个月)对实现经理(150 人, 声称可按时完成);
  • 选择: 工作交给了实现队伍, 因为进度压力, 也因为不愿让 150 人干等 10 个月;
  • 结果: 结构师的两个判断都被证实--延期 3 个月, 质量更低;
  • 隐性代价: 概念完整性缺乏, 作者估计至少增加了一年调试时间;
  • 教训: 决定性因素是进度压力和"让 150 人干活"的愿望, 这正是致命危险;

等待期间实现人员能做什么?​

  • 顺序上的回答: 正确做法是"说明完成时才雇用实现人员", 这也正是搭建建筑时采用的方法;
  • 现实的回答: 在外部说明完成前, 实现人员有很多事可做--设定时间和空间目标、了解运行平台、设计模块边界和工具;
  • 反对意见的澄清:
    • "说明功能过多、成本考虑少": 这是真实危险, 由第 5 章的结构师准则约束;
    • "剥夺实现人员的创造力": 误解, 规范化反而增强创造性;
    • "实现人员空等": 顺序和阶段化问题, 用上述并行工作化解;