Résumé
Le noyau du système d’exploitation Linux réalise l’ensemble des interfaces entre le matériel et les logiciels d’application. C’est un logiciel très gros (13 millions de lignes de code) et très complexe, écrit par plusieurs milliers de contributeurs. Il est développé de façon modulaire, les modules du cœur et les pilotes de périphériques (drivers) interagissant à travers des API (Application Programming Interfaces) qui spécifient comment leur parler. Ce noyau évolue en permanence, avec de d’ordre de 15 000 modifications par trimestre, les API étant souvent modifiées pour corriger des erreurs ou introduire de nouvelles fonctionnalités. Chacune de ces modifications d’API entraîne de nombreuses modifications dans de nombreuses parties du code, qu’il est très pénible à faire à la main et à valider. Fondé sur des analyses automatiques fines de la sémantique des codes concernés, le logiciel Coccinelle développé par Julia Lawall et Gilles Muller permet d’automatiser presque complètement la mise à jour du système. Il est maintenant utilisé à grande échelle pour le développement de Linux.