---
title: "Coulée de lave (programmation)"
type: "antipattern"
slug: "lava-flow"
url: "http://localhost:3000/fr/antipatterns/lava-flow.md"
description: "Problème lié au déploiement d'un logiciel incomplet"
---
# Coulée de lave (programmation)

> Problème lié au déploiement d'un logiciel incomplet

Dans le [jargon](https://en.wikipedia.org/wiki/Jargon "Jargon") de la [programmation informatique](https://en.wikipedia.org/wiki/Computer%5Fprogramming "Computer programming"), la **coulée de lave** est un [anti-pattern](https://en.wikipedia.org/wiki/Anti-pattern "Anti-pattern") qui survient lorsqu'un [code source](https://en.wikipedia.org/wiki/Source%5Fcode "Source code") écrit dans des conditions sous-optimales est déployé dans un environnement de production puis étendu alors qu'il est encore à l'état de développement. Le terme dérive du phénomène naturel de la lave qui, une fois refroidie, se solidifie en roche difficile à enlever. De même, un tel code devient difficile à refactoriser ou à remplacer en raison des dépendances qui apparaissent au fil du temps, obligeant à maintenir la compatibilité ascendante avec la conception d'origine, incomplète.

## Causes

La **coulée de lave** peut survenir pour diverses raisons au sein d'un [processus de développement logiciel](https://en.wikipedia.org/wiki/Software%5Fdevelopment%5Fprocess "Software development process") :

* La pression des délais qui transforme des solutions temporaires en solutions permanentes
* Une documentation insuffisante qui empêche de comprendre l'objet du code
* L'absence de tests automatisés qui rend le refactoring risqué
* Des changements fréquents dans l'équipe de développement entraînant une perte de connaissances

## Conséquences

Un code non affiné qui devient partie intégrante de l'infrastructure du logiciel accroît la complexité du système, et la base de code devient de plus en plus difficile à comprendre et à maintenir. Cela entraîne :

* Le besoin de [compatibilité ascendante](https://en.wikipedia.org/wiki/Backward%5Fcompatibility "Backward compatibility") qui peut étouffer l'innovation et empêcher l'adoption de solutions plus récentes et plus efficaces
* Une [dette technique](https://en.wikipedia.org/wiki/Technical%5Fdebt "Technical debt") accrue qui s'accumule au fil du temps, augmentant les coûts de modification et de maintenance
* Des obstacles au [refactoring](https://en.wikipedia.org/wiki/Refactoring "Refactoring") ou à l'amélioration du système par crainte de casser les composants dépendants

## Impact sur les équipes

Les équipes de développement subissent souvent l'impact de la **coulée de lave** lorsque les membres de l'équipe se renouvellent :

* Perte de connaissances sur certains aspects du code du système lorsque les développeurs d'origine partent
* Réticence des nouveaux développeurs à refactoriser un code qu'ils ne connaissent pas, ce qui accroît encore la complexité car ils ajoutent au lieu de nettoyer

## Stratégies d'atténuation

Plusieurs pratiques peuvent atténuer les effets de l'anti-pattern de la **coulée de lave** :

* Promouvoir de bonnes pratiques de documentation pour une compréhension claire du code
* Encourager des [revues de code](https://en.wikipedia.org/wiki/Code%5Freview "Code review") régulières pour détecter tôt les pratiques sous-optimales
* Prioriser le [refactoring](https://en.wikipedia.org/wiki/Refactoring "Refactoring") comme partie intégrante du cycle de vie du développement
* Maintenir une suite complète de [tests automatisés](https://en.wikipedia.org/wiki/Automated%5Ftest "Automated test") pour réduire le risque lors des changements
