什么是概念完整性?
- 定义: 系统只反映唯一的设计理念, 每个部分反映相同的原理、原则和一致的折衷机制;
- 语法上: 每个部分使用相同的技巧;
- 语义上: 各个部分具有同样的相似性;
- 判断: 为了反映一系列连贯的设计思路, 宁可省略一些不规则的特性和改进, 也不提倡独立和无法整合的系统;
- 例证: 兰斯大教堂风格一致, 靠的是 8 代建筑师每人牺牲自己的一部分创意;
为什么易用性的判据是"功能与复杂度的比值"?
- 目标: 编程系统的目的是使计算机更易用, 而软件外部说明的规模是计算机系统本身说明的十倍;
- 成本: 用户要记住太多选项和格式, 功能说明节约的时间必须大于学习、记忆和搜索手册的时间;
- 判据: 功能与理解上复杂程度的比值, 才是系统设计的最终测试标准;
- 常见误解: 单独的功能(OS/360)或单独的简洁(PDP-10 分时)都只达到目标的一半;
- 前提: 简洁(simplicity)不够, 还要直白(straightforward)--用意料不到的复杂组合才能表达一件事, 就是不够直白;
简洁、直白与概念完整性是什么关系?
- 简洁不是充分条件: TRAC 语言和 Algol 68 用很多独特的基本概念达到简洁, 但不直白;
- 直白的来源: 仅仅了解基本要素和组合规则还不够, 还要学习晦涩的用法和实际组合方式;
- 结论: 简洁和直白来自概念的完整性--每个部分反映相同的原理和折衷机制;
- 推论: 易用性实际上需要设计的一致性和概念上的完整性;
为什么概念完整性要求设计由少数人完成?
- 矛盾: 概念完整性要求设计由一个人或少数互有默契的人完成, 进度压力却要求很多人参与;
- 解法一: 仔细区分设计方法和具体实现, 把体系结构工作与实现分离;
- 解法二: 采用"外科手术队伍"式的团队组建方法;
- 分散设计的后果: 概念差异和不一致性会超过欧洲大教堂, 因为设计被分成了由若干人完成的若干任务;
贵族专制和民主政治的争论如何回答?
- 问题一(好的想法能否来自全体): 能。新概念经常来自实现者或用户;
- 但: 不能与系统基本概念整合的好想法, 最好放到一边; 若不兼容的构想太多, 应合并概念后重新开始;
- 问题二(是否需要少数结构师): 是。必须只能存在少数结构师, 他们的产物生命周期更长, 处在解决用户问题的核心;
- 问题三(实现是否缺乏创造性): 否。实现同样需要创造性, 产品性价比很大程度依赖实现人员;
- 反直觉结论: 外部的体系结构规定实际增强了实现小组的创造性, 因为限制消除了无谓争议, 让人专注没人解决过的问题;