La Loi de Conway

Si vous travaillez dans le domaine du développement logiciel, vous avez sûrement entendu parler de cette loi. Elle est connue et souvent reprise dans les conférences comme un moyen d’expliquer pourquoi les logiciels ne sont jamais ceux que l’on attend. Mais que dit elle vraiment?

Cette loi est en fait une citation prise d’un article écrit par Melvin Conway [1,2] dans les années 1960 (How committees invent ?) au sein même de la conclusion de cet article:

Ou dit en d’autres mots: Les organisations qui conçoivent des systèmes produisent inévitablement des modèles de communication qui reflètent leur structure organisationnelle. C’est à dire, que la structure d’une organisation aura tendance à se refléter dans l’architecture des systèmes logiciels qu’elle développe.

Cette loi a donc des implications importantes car elle suggère que la qualité du code produit dépend en grande partie de l’organisation de l’équipe de développement et qu’ainsi, pour produire un code de qualité, il est nécessaire de mettre en place une structure d’équipe efficace et adaptée aux besoins du projet.

Il n’y a donc qu’un pas pour faire un lien de causalité (ou du moins de corrélation) entre architecture solution et architecture d’entreprise! Car on sent bien du coup que le second aura, par les choix d’organisations qu’il fera, un impact sur les solutions qui pourront être envisagé par le premier!

Il importe donc de discriminer plus précisément et sous quelle forme, comment l’organisation va influencer l’architecture logicielle. On pourra noter donc la prise en compte des propriétés suivantes:

  • Couplage et Cohésion : Dans une organisation horizontale, les équipes de développement logiciel vont tendre à produire des composants logiciels couplés, ce qui peut entraîner des difficultés lors des changements et des mises à jour. A l’inverse, si les équipes sont organisées autour des composants fonctionnels du système, cela permet de converger vers une architecture plus modulaire et d’atteindre une meilleure cohésion et une plus grande flexibilité.
  • Communication et Collaboration : Les flux de communication sont un element majeur de l’architecture que peut prendre un système logiciel. La Loi de Conway souligne l’importance de celle ci ainsi que de la collaboration entre les équipes de développement logiciel car elles conditionneront les interfaces et l’intégration de ces systèmes logiciels entre eux.
  • Agilité et Autonomie : Enfin dans une organisation rigide et peu adaptée pour faire face au changement, il sera plus difficile de concevoir des systèmes évolutif. Il convient de prendre conscience de l’impact de la structure organisationnelle sur l’architecture logicielle. Les approches plus agiles peuvent favoriser l’acceptation du changement autant fonctionnel que technique et aideront les équipes a gagner en autonomes. Cela aidera également a gagner en indépendances, a accélérer les cycles de développement et améliorer la capacité à s’adapter rapidement aux changements.

Dans la pratique, architecte d’entreprise et architecte applicatif doivent travailler de concert afin de guider au mieux la mise en œuvre des applications en adéquation avec la mise en place d’une organisation qui sera la plus prompt à la matricer.

Cela passe par:

  • Une conception organisationnelle : Une entreprise peut structurer ses départements et ses équipes de manière à optimiser l’architecture logicielle souhaitée. Par exemple, pour développer des microservices, il est possible d’organiser des équipes autour de chaque service pour maximiser la cohésion et minimiser le couplage.
  • Une communication interdisciplinaire : Il faut favoriser la communication et la collaboration entre les équipes de développement logiciel et les autres départements, par le choix d’outils adaptés méthodologique (DDD par exemple dont nous parlerons rapidement) ou technique, pour favoriser une compréhension commune des besoins et aligner les conceptions logicielles.

Enfin, il est important de noter que la loi de Conway n’est pas une règle absolue. Elle ne s’applique pas à toutes les organisations ni à tous les projets de manière uniforme. D’autres facteurs peuvent également influencer la qualité du code produit, comme les compétences techniques de l’équipe de développement ou les outils utilisés. Cependant, la prise en compte de cette loi peut être un outil utile pour comprendre les relations entre la structure d’une organisation et la qualité des systèmes qu’elle produit.

Pour conclure, la Loi de Conway souligne le lien étroit entre l’organisation d’une entreprise et l’architecture logicielle de ses systèmes. En comprenant cette relation, les architectes de solutions logicielles peuvent concevoir des architectures plus adaptées, flexibles et évolutives mais elle peut aussi être appliqué en retour sur l’organisation en fonction des types d’architecture logicielle que l’organisation souhaite construire.

Laisser un commentaire