知识卡片
康威定律:架构结构与团队组织结构的双向映射
内容
架构驱动软件开发的一个显著特点是:软件架构结构与开发团队组织结构具有一致性——开发团队的组织结构必须反映到软件架构结构上,反过来也一样。这个观察早在40多年前就由Conway提出(即著名的康威定律),书中的表述强调这种关系是双向的:既可以从软件架构结构推导出应该建立什么样的开发团队组织结构,也可以反过来从已有的开发团队组织结构推断出系统实际呈现出的架构结构。这个双向性带来的实践意义是:一旦确定了在建系统的架构,团队就会被分配到对应的主要组件上,并按照这些组件创建反映团队工作任务的分解结构,每个团队各自开展内部工作(对于大型系统,不同团队甚至可能属于不同外包商);每个团队的工作内容(通信功能开发、网页制作、文件命名约定、版本控制系统维护等)可能彼此不同,且每个团队会建立各自的质量保证和测试程序,还需要与其他团队建立联络协调、努力达到低耦合高内聚的效果。理解康威定律的价值不只是”解释现象”,更是一个可操作的诊断工具:如果发现某个系统的架构耦合度异常高、模块边界混乱,未必是架构设计本身的问题,很可能是背后团队的沟通结构本来就是混乱耦合的——这时候单纯重构代码架构解决不了根本问题,需要同步调整团队组织结构;反过来,如果想让架构朝某个方向演化(例如从单体拆分为微服务),也必须同步拆分团队组织,否则架构会被团队的实际协作模式”拉回”到原来的耦合状态。
参考来源
- 位置:《软件架构理论与实践》第7章《架构驱动的软件开发》"7.4.1 架构的实现"节(源文件:_epub-src/OEBPS/text00059.html)
- 结论依据:原文说明"架构驱动的软件开发的特点之一是软件架构结构与开发团队组织结构具有一致性……这一点Conway在40多年前就已经强调过了。Conway描述了如何从软件架构结构中获得软件开发团队的组织结构。同样,因为开发团队的组织结构和系统结构之间的关系是双向的,也要能够从开发团队的组织结构映射出软件架构结构",直接支撑本卡片结论。
- 原始内容:也就是说,开发团队的组织结构必须反映到软件架构结构上,反之亦然。这一点Conway在40多年前就已经强调过了……因此,架构结构对开发团队组织结构的影响是显而易见的。一旦同意在建的系统的架构,团队即被分配相应的主要组件。