Conway 法则

康威定律最早可以追溯到1968年梅尔文·康威的论文(Conway, Melvin, 1968,第31页):

“设计系统的组织 (…) 被迫产生与其组织沟通结构相似的设计。”
— 梅尔文·E·康威

这一法律并不限于软件或系统架构,而是适用于任何系统的设计。需要注意的是,它并不是指一个组织的管理结构,而是其沟通结构。这两者可能是相同的,但在某些情况下并不相同。通常,如果组织架构与软件设计不匹配,你可以去查看沟通流程,通常它与组织架构是不同的。

例如,如果有许多小团队或单个开发人员接收来自不同客户或顾问的需求,他们可能会没有组织边界地相互沟通。他们所工作的系统将反映出这一点,可能会由许多具有高度内聚的模块组成,这些模块相互引用,这就是所谓的“意大利面架构”。而如果团队之间是协作密切的,并且通过一个沟通渠道(例如产品负责人)来接收输入,他们所构建的系统将会表现出团队之间的模块内聚力较高,而其他团队所工作的部分系统之间的关联则较少。用埃里克·S·雷蒙德(Eric S. Raymond)的话来说,“如果三个团队在开发一个编译器,你会得到一个三遍编译器”(参见雷蒙德,埃里克·S.,1996,第124页)。图17.1展示了这两种基于沟通结构的不同软件设计示例:

image 2024 12 27 17 32 22 937
Figure 1. 图17.1 – 基于沟通结构的不同软件设计示例

那么,哪种沟通结构是理想的,能够促使系统设计帮助团队加速工程开发速度呢?