---
title: 软件系统的生命——概念一致性
canonical: "https://xiaofeng.dev/en/writing/conceptual-integrity-software-system/"
pubDate: 2016-08-07
author: 唐小锋 Xiaofeng TANG
description: 什么是概念一致性？ 来自《人月神话》的一个比喻： “绝大多数欧洲的大教堂中，由不同时代、不同建筑师所建造的各个部分之间，在设计或结构风格上都存在着许多差异。后来的建筑师总是试图在原有建筑师的基础上有所“提高”，以反映他们在设计风格和个人品味
tags: [Software Architecture, Engineering]
---

**什么是概念一致性？**

来自《人月神话》的一个比喻：

“绝大多数欧洲的大教堂中，由不同时代、不同建筑师所建造的各个部分之间，在设计或结构风格上都存在着许多差异。后来的建筑师总是试图在原有建筑师的基础上有所“提高”，以反映他们在设计风格和个人品味上的改变。所以，在雄伟的哥特式的教堂上，依附着祥和的诺曼第风格十字架，它在显示上帝荣耀的同时，展示了同样属于建筑师的骄傲。

与之对应的是，法国城市兰斯（Reims）在建筑风格上的一致性和上面所说的大教堂形 成了鲜明的对比。设计的一致性和那些独到之处一样，同样让人们赞叹和喜悦。如同旅游指南所述，风格的一致和完整性来自8代拥有自我约束和牺牲精神的建筑师们，他们每一个人牺牲了自己的一些创意，以获得纯粹的设计。同样，这不仅显示了上帝的荣耀，同时也体现了他拯救那些沉醉在自我骄傲中的人们的力量。”

如果把生命的定义放宽一点，软件系统也有生命和演化诉求。软件设计师仅仅在系统的发展早期扮演了造物主角色，系统到了成长期会衍生出她自己的需求；设计者并不能完全控制她，而是要帮助她演化出自己的个性。

这并不是出于情怀，而是出于现实用途：拥有概念一致性的系统增强了易用性，扩大了设计师的能力。

**你创造的东西开始约束你**

无论在哪个行业，设计师都会面临多种多样的需求，这些需求超出了原有的设计方式，挑战系统的实现能力。在toC的互联网行业里，产品经理作为主要的需求归集方已经承担了综合各方需求，进行妥协和选择，以便限制复杂度的无序增长。但是在toB的行业内，客户定制需求作为一种刚需，会更频繁超出原有的系统能力，匆忙地满足客户定制，只会让系统的设计思路支离破碎。这时候通常有两种选择：

- 方式1：强制植入你的新需求或者新设计，开启系统的多元化之路
- 方式2：重新构建系统的概念，以囊括新的需求和设计

软件系统有高昂的研发成本和研发周期，这决定了她天生就喜欢标准的、固定模式的需求，而厌恶多元化，讨厌变化。你植入的新东西越多，她就越分裂，这种疯狂的增长总有一天会反噬设计者，摧毁设计者的交付能力。多数情况下，设计者不得不抛弃旧系统，重写一个新系统。即便系统从一开始设计时就考虑到了需求的多样性，从而可以包容部分变化的需求，也迟早会有超出的那一天。

在今天的互联网行业，以精益的观念来对待这种困境便是：如果第一次碰到新状况，请强制植入，当你第二次碰到，请务必重建概念，扩张内涵，督促系统走上适合她的演化之路——寻求属于她的概念一致性。

**如何获得一致性？**

**精英统治还是民主政治？**

《人月神话》的结论是：概念的完整性要求设计必须由一个人，或者非常少数互有默契的人员来实现。今天的场景下，不太容易碰到原书中那么大型的开发团队，以个人的经历来改写下这句话：一个模块的概念完整性需要由一个人来保证。在密切合作的小团队里，每个人之间的思路和代码或多或少都有些差异，要5个人对10个模块的所有设计都达成一致，不仅难度高，也非常浪费时间；每个模块都有它细分的特征，分而治之，让不同的技术人员成为某个模块里的“精英统治”，可以很好地保证概念一致性。

**精英专制是否意味着其他技术人员的创造性天分和构思被压制？**

答案是否定的，因为确定模块规范并不是比具体设计实现更富有创造性，它只是一项性质不同的创造工作而已。在给定规范下的设计实现，同样需要同确定模块规范一样的创造性、同样新的思路和卓越的才华。实际上，产品的成本性能比很大程度上依靠实现人员，就如同易用性很大程度上依赖模块规范设计者一样。有很多行业和领域中的案例让人相信纪律和规则对行业是有益的。实际上，如同某艺术家的格言所述，“没有规矩，不成方圆。”最差的建筑往往是那些预算远远超过起始目标的项目。巴赫曾被要求每周创作一篇形式严格的歌剧，但这似乎并没有被压制他的创造性。

类似的，外部的体系结构规定实际上是增强，而不是限制实现小组的创造性。一旦他们将注意力集中在没有人解决过的问题上，创意就开始奔涌而出。在毫无限制的实现小组中，在进行结构上的决策时，会出现大量的想法和争议，对具体实现的关注反而会比较少。

**其他领域的概念一致性**

题图的正弦波里，主轴便是概念一致性，上下的波动便是偏离原有概念的那些意外事物，无论振幅多大，终究还是会回归主轴。

这种模式不仅在建筑行业、软件行业频繁出现，也巧妙地描述了人是如何形成自己的世界观——那些所有的意外要么被剔除，要么成为主轴的一部分；主轴是经纬，那些波动则是权变。
