

结构优于制度,软件开发中的康威定律 - peida
source link: https://www.cnblogs.com/peida/p/17263807.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

hi,我是熵减,见字如面。
从事软件开发的人,都非常的清楚:大部分的软件工程不是一个人的英雄之旅,而是一项非常依赖团队的协作的、共同创造的系统性的工程。
在复杂的团队协作中,仅仅依赖软性的制度和流程规范,在很多的时候,可能不一定能很好的解决问题。在涉及到人的部分,就需要考虑到人们协作的职责结构,能否更加有利于目标的达成,这就涉及到康威定律。
什么是康威定律
康威定律是由计算机科学家 Melvin Conway 提出的。是一条关于组织设计和系统架构的经验法则。
康威定律的内容可以简单地概括为:“组织设计产生系统设计的影响”,通俗地说就是:“系统的结构受到设计它的组织结构的影响”。
这条定律的具体表述是:“在一个组织中,任何一个设计出来的系统,其结构都会与该组织的沟通结构保持一致。”
换句话说,如果一个组织的结构是分为多个小组分别独立开发某个系统的各个模块,那么最终这个系统的结构也会被划分为许多模块,并呈现出分布式的特点。

康威定律是软件工程中的一个经典理论,其提醒我们,在设计系统时要考虑到组织结构对系统设计的影响,并尽可能地将组织结构与系统结构相匹配,以便更好地管理和维护系统。
康威定律的延伸
康威定律的经验法则,启发了人们对组织设计和系统架构的思考,因此在此基础上又产生了一些延伸的定律。
以下是几个比较常见的康威定律的延伸定律:
-
组织分解定律(Conway's Law of Organization Decomposition):这个定律认为,当一个组织在设计一个系统时,会首先将系统分解成一些子系统,然后再将这些子系统分配给不同的团队或个人来开发。这个过程中,组织的划分方式会对系统的结构产生重要影响,因为团队或个人之间的沟通和合作需要遵循组织的结构。
-
系统复杂性定律(Conway's Law of System Complexity):这个定律认为,当一个系统被设计出来后,它的复杂性会和设计它的组织结构的复杂性保持一致。换言之,一个简单的组织通常会设计出一个简单的系统,而一个复杂的组织则可能会设计出一个复杂的系统。
-
沟通代价定律(Conway's Law of Communication Costs):这个定律认为,当一个系统被设计出来后,它的沟通代价会和设计它的组织结构的沟通代价保持一致。这是因为沟通需要消耗时间和精力,如果组织结构不合理,沟通代价会变得很高。
这3条主要的延伸定律,进一步强调了康威定律的核心思想:组织结构和系统结构之间存在紧密的关联,因此在设计系统时需要考虑到组织结构对系统的影响。
康威定律的意义
康威定律的意义在于提醒我们,在设计系统时要考虑到组织结构对系统设计的影响,并尽可能地将组织结构与系统结构相匹配,以便更好地管理和维护系统。
具体来说,康威定律的意义包括以下3点:
-
指导系统设计:康威定律提醒我们,系统的结构受到设计它的组织结构的影响,因此在设计系统时需要考虑到组织结构对系统的影响,尽可能地将组织结构与系统结构相匹配,以便更好地管理和维护系统。
-
优化组织结构:康威定律也提醒我们,系统结构与组织结构之间的匹配是双向的,优化组织结构可以促进系统设计的优化。因此,我们可以根据康威定律的启示,优化组织结构,以期提高系统的质量和效率。
-
增强团队合作:康威定律认为,系统的结构受到组织结构的影响,这意味着团队之间的沟通和协作至关重要。为了提高系统的质量和效率,团队之间需要建立良好的沟通和合作机制,以便有效地交换信息和协调工作。
实践中的康威定律
以下是一些更好地实践康威定律的建议:
-
模块化设计:在设计系统时,将系统分成相互独立的模块,并将每个模块分配给适当的团队。这样可以减少不同团队之间的依赖和交流,使团队更专注于自己的工作。
-
明确接口和职责:在模块化设计的基础上,为每个模块定义清晰的接口和职责,并确保模块之间的接口相互独立和互通。这可以帮助团队更好地理解自己的职责和作用,并减少团队之间的不必要的依赖和冲突。
-
定期协作和交流:虽然模块化设计可以减少团队之间的交流和依赖,但团队之间的协作和交流仍然是至关重要的。定期召开会议或者通过在线沟通工具交流,可以促进团队之间的理解和协调。
-
优化组织结构:组织结构的优化可以更好地匹配系统的结构,提高团队的协作效率。例如,可以根据不同团队的技能和职能划分团队,或者根据项目的特点划分团队。这样可以更好地匹配系统的结构,提高团队的效率和质量。
-
定期评估和调整:由于团队和组织结构可能会发生变化,因此需要定期评估和调整系统的结构和组织结构。这可以帮助系统保持与组织结构的匹配,并提高系统的质量和效率。
综上所述,更好地实践康威定律需要从模块化设计、明确接口和职责、定期协作和交流、优化组织结构以及定期评估和调整等方面入手,以期更好地匹配系统的结构和组织结构,提高团队的效率和质量。
软件工程不仅仅是代码的技术性的问题,更多的是涉及到人性的问题。所以,好的软件工程和软件系统的交付,会依赖于一个设计合理的组织架构和沟通协作的体系的支撑。
正如康威所说,软件系统的架构和设计方案往往与设计团队的组织结构和沟通方式密切相关,设计团队的沟通结构越合理、清晰,软件系统的设计也就越合理、清晰,反之亦然。
总之,在软件开发和交付中,系统设计方案与设计团队的组织结构和沟通方式密切相关,要想设计出高质量的系统,需要建立有效的沟通和协作机制,优化组织内部的沟通结构和社交网络,从而提高系统设计的质量和效率。
组织的结构优于制度,而制度胜于开会。
结构是一个决策性问题,会议只是一个决定性问题。
决策 > 决定。
Recommend
-
29
架构师们常讲的设计定律之中最为重要的是康威定律,康威定律的定义: Conway's law is an adage named after computer programmer Melvin Conway, who introduced the idea in 1967. It states that. organizations which desi...
-
49
你好,这是【一文一点】的第4篇文章,不拘泥于篇幅字数,用一篇文章说清一个知识点。 康威定律,也有反康威定律...
-
16
这是“辞海一瓢”系列第二期。这个系列用来介绍一些相对冷僻的词、梗、概念。 “TFW”是“that feel when”(感觉就像是)的缩写。明显这个词并不用于口头,而是主要出现在文本中,比如同事给你的代码或设计文档的评论中。 根据字面意思,能想到这...
-
11
第2期 康威定律 (一周阅读与记录) 2021年5月4日 阮一峰还有其他互联网中的许多人,让我相信互联网的精神就是分享。
-
9
康威定律的各种解读 - ThinkingLabs随着时间的推移,不同的人以各种不同的方式阐明了康威定律。这是我最近在阅读康威定律文献时发现的变化的概述。Melvin Conway对康威定律的原始定义: 设计系统的组织被限制生产设计,这些设计是这些组织的通...
-
7
康威定律的作者:什么是"涌现"分析建模方法? - Conway 在这里,我将揭开“涌现Emergence”的神秘面纱,并将其完全具体化。 大多数人都将其视为哲学家和神秘主义者的一种模糊概念。如果您尝...
-
10
规则引擎并不灵:康威定律不适用于刚性设计 - verraes ...
-
2
分层、分步与康威定律 Posted by: Phodal Huang Aug. 7, 2022, 8:17 p.m. 最近,遇到几个有意思的案例,刚好与康威定律有关。于是乎,就决定简单写一篇文章做个记录。
-
7
康威定律 - martinfowler 解道Jdon ...
-
6
hi,我是熵减,见字如面。 在软件项目开发中,你是否遇到过这种情况: 你的项目进度落后了,你的老板或客户不满意,你的团队压力很大,你觉得需要增加一些人手来加快速度。但是,当你增加了新的成员后,你发现项目的进度并没有提高,...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK