购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 康威定律
对软件架构的影响

在进行软件系统架构设计时,要始终牢记的一个关键概念是康威定律(Conway's Law)。康威定律是一条广为人知的格言,它认为组织中引入的软件系统反映了组织结构的沟通模式(https://www.thoughtworks.com/insights/articles/demystifying-conways-law):

任何组织在设计一个系统(广义的)时,都会产生如下设计结果,即其结构就是该组织沟通结构的写照。

——Melvin E.Conway

这意味着构成组织内人员的架构会被复制,无论是显式地还是以其他方式,并基于此形成组织所创建的软件架构。来看一个非常简单的例子,某家有两个大部门(比如采购部和销售部)的公司会倾向于创建两个大的系统,其中一个专注于物资采购,另一个专注于产品销售,两个部门之间互相沟通时不可能采用其他的架构,比如一个按产品划分的系统。

这看起来是自然而然的事情。毕竟,团队之间的沟通比团队内部的沟通更困难。团队之间的沟通需要更多有组织的、更积极主动的工作。单个团队内部的沟通则会更顺畅,不会那么刻板。这些因素是设计一个好的软件系统架构的关键。

对于任何软件架构的成功实施,最主要的一点是,开发团队的架构要尽可能贴近所设计的软件架构。试图偏离太多则将形成阻碍,因为软件应用会趋同于组织架构,事实上,所有业务都是依据团队的划分而开展的。同样,系统架构的调整很可能需要对组织进行重构。这是一个艰难而痛苦的过程,所有经历过公司重组的人都深有体会。

职责分工也是一个关键因素。每个独立的软件单元都应当有一个明确的所有者,且所有者不应位于多个团队中。不同的开发团队有不同的任务目标和关注重点,否则会导致系统的长期愿景复杂化并带来麻烦。

反过来说,一个团队负责多个单元肯定是可行的,但也需要仔细考虑,以确保这不会给团队带来过大压力。

如果工作单元与开发团队的映射存在明显的不平衡(例如,一个团队的工作任务太多,而另一个团队的工作任务太少),则很可能是系统的架构出现了问题。

随着远程工作变得越来越普遍,越来越多的团队位于世界的不同地方,沟通也会受到影响。这就是要设立不同的分支机构来处理构成系统的不同单元的原因,同时还要使用详细设计的API来克服地理距离差异所带来的物理上的屏障。网络通信能力的改善也对协作能力产生了影响,它使远程工作变得更加有效,各团队可以完全远程地基于同一代码库进行紧密合作。

近年受新冠疫情影响,远程工作的趋势大幅增加,特别是在软件领域。这导致了更多的人基于远程的方式进行工作,也催生出更适应于这种工作方式的工具。虽然时差问题仍然是远程沟通面临的一大障碍,但越来越多的公司和团队正在学习如何在完全远程的模式下有效开展工作。请记住,虽然康威定律在很大程度上取决于组织的沟通依赖性,但沟通本身是可以进行调整和改善的。

康威定律不应被看作一个需要克服的障碍,而是反映了组织结构对软件系统架构的影响。软件系统架构与不同团队间的沟通协调和责任划分方式密切相关,人际沟通因素是其重要内容。

牢记这一点将有助于你设计出一个良好的软件系统架构,使得沟通过程始终保持顺畅,从而可以提前发现问题。当然,软件架构与人的因素密切相关,因为架构最终也将由工程师来实施和维护。 SaSUopWqh/oGkIxdtgMEZ1/EiWea51QKs5vBY8QrMg32tpcltL0ZSmlmcAw2Ragm

点击中间区域
呼出菜单
上一章
目录
下一章
×