Une ligne de produits corrects par construction Thi-Kim-Dung Pham 1 , Catherine Dubois 2 , Nicole Levy 1 1. Conservatoire National des Arts et Métiers, lab. Cedric, Paris 2. ENSIIE, lab. Samovar, Évry Résumé L’ingénierie des lignes de produits logiciels met l’accent sur la gestion de la variabilité et la réutilisation. Dans cet article, nous complétons cette approche avec la recherche de garanties de correction sur les produits issus d’une ligne de produits. Nous proposons une méthode permettant de produire des produits corrects par construction à partir d’une ligne de produits. Cette méthode s’appuie sur un langage, FFML, inspiré de FoCaLiZe et incorporant des mécanismes pour exprimer la variabilité, et deux outils : un compilateur vers FoCaLiZe et un composeur. Le composeur permet de générer automa- tiquement des produits corrects par construction à partir d’une configuration valide. Les outils de FoCaLiZe permettent de vérifier les preuves de correc- tion et de générer du code exécutable OCaml. La méthode est illustrée dans cet article sur un exemple simple de ligne de produits. 1 Introduction D’après Clements et Northrop dans [3], une ligne de produits décrit un en- semble (fini) de systèmes qui partagent un ensemble commun de caractéristiques (features en anglais) répondant à des besoins spécifiques, par exemple ceux d’un segment de marché ou d’un domaine. Ces systèmes sont développés par une com- position précise d’un ensemble commun d’artefacts de base (assets en anglais). Ainsi, l’utilisation d’une ligne de produits a principalement deux objectifs : l’expression de la variabilité et la réutilisation. Une ligne de produits est spécifique à un domaine et exprime la variabilité du domaine et des besoins du problème dé- crit. Elle identifie systématiquement les points communs et les points variables. Ces points sont les caractéristiques mentionnées dans la définition de Clements et Northrop. Pour les visualiser, il est fréquent d’utiliser un diagramme de caracté- ristiques (Feature diagram) qui permet de structurer les décisions sous forme d’un arbre FODA (pour Feature Oriented Domain Analysis)[5] avec des relations entre nœuds père et fils qui peuvent être Obligatoires ou Optionnelles, ou décrire des choix exclusifs ou multiples. Le deuxième objectif essentiel des lignes de produit est la réutilisation. Pour cela, à chaque caractéristique sont associés des artefacts à réutiliser. Ainsi, configu- rer un système c’est choisir des caractéristiques et réutiliser les artefacts associés. 1