Syndrome du plat de spaghettis
# Syndrome du plat de spaghettis

En informatique, le syndrome du plat de spaghettis est une dégradation qui touche les systèmes informatiques trop fortement couplés. Le système devient coûteux à maintenir et sujet aux pannes.

## Étymologie

L'origine de l'expression provient de l'analogie suivante : « Un système informatique désordonné c'est comme une assiette de spaghettis: il suffit de tirer sur un fil d'un côté de l'assiette pour que l'enchevêtrement des fils provoque des mouvements jusqu'au côté opposé. »

## Le phénomène

Le syndrome touche les systèmes informatiques trop fortement couplés, dans lesquels chaque composant est dépendant de nombreux autres composants, selon une organisation désordonnée et fortement entremêlée.

Le déroulement de l'apparition du syndrome sur un logiciel est le suivant : une suite de modifications consécutives dans le même logiciel ont entraîné un accroissement du couplage et de la complexité. Le logiciel devient de plus en plus difficile, voire impossible à comprendre. Les modifications sur le logiciel deviennent alors de plus en plus coûteuses en temps et en argent, et s'accompagnent d'une baisse de la qualité logicielle. La programmation spaghetti est un style de programmation qui encourage et accélère l'apparition de ce syndrome dans les logiciels.

Le code spaghetti est parfois créé intentionnellement par son auteur dans le but de rendre le code impénétrable par offuscation et lutter notamment contre la rétro-ingénierie. L'opération se fait à l'aide d'un logiciel qui transformera un code source ordonné et facile à lire en un plat de spaghettis incompréhensible dont la logique est identique au code original.

Sur un système d'information d'une entreprise : au cours de son existence, plusieurs composants ont été remplacés et le système d'information a évolué de manière désordonnée. Les divers composants (serveurs, logiciels) sont souvent dédoublés (plusieurs composants font le même travail selon des technologies différentes), et le fort couplage entraîne une baisse des performances et une augmentation des pannes dues à des problèmes récurrents de communication, et rend risquées et coûteuses les opérations de migration.

## Les recettes

### La jungle de câbles

Des branchements désordonnés de câbles d'alimentation, de télécommunication et d'informatique rendent difficiles et coûteuses les opérations de transformation et de nettoyage, et amènent à des pannes dues à des débranchements involontaires.

### La programmation Spaghetti

On appelle Programmation spaghetti un type particulier de codage dans lequel la lecture et la compréhension du programme est rendue difficile, volontairement ou non, par l'abus de renvois et un manque de structure de l'ensemble. Encore une fois, les risques sont une maintenance rendue difficile.

## Les contre-mesures

La réalisation d'un schéma d'architecture du système informatique permet de rendre visible l'important réseau de dépendance entre les composants.

Des opérations de refactoring, c'est-à-dire des modifications du code source d'un logiciel sans apporter de corrections ni de nouveautés sont effectuées en vue de restructurer le code source et ainsi prévenir ou guérir du syndrome du plat de spaghetti dans le logiciel.

La réalisation d'un schéma directeur du système d'information, une feuille de route des futures modifications du système assure l'organisation à long terme et évite l'apparition du syndrome.

Par analogie au métier du génie civil, l'urbanisation d'un système d'information est l'étude des voies d'échange entre les différents composants d'un système d'informations. L'étude vise à améliorer l'organisation d'un système existant et permet de prévenir ou de guérir du syndrome du plat de spaghetti.

L'utilisation d'un progiciel de gestion intégré, un logiciel unifié et modulaire qui traite de l'ensemble des processus opérationnels d'une entreprise (commandes, achats, facturation, salaire, planification, ...) en lieu et place d'un réseau de logiciels disparates permet également de prévenir ou de guérir du syndrome.

