Le concepteur de logiciel peut industrialiser son processus de production en utilisant une approche similaire aux projets de construction ou de production industrielle. A l’instar des lignes de produits industriels, on parle alors de lignes de produits logiciels. Tout comme les produits industriels, les produits logiciels peuvent être construits en utilisant des composants réutilisables ou interchangeables et un processus de production qui tient compte de la variabilité entre les différents produits.
Date: 2 juillet 2013
Expertises:
Ingénierie des systèmes IT complexes ⊕
Domaine: Secteur numérique ⊕
La théorie de la gestion des projets de développement de logiciels s’appuie en grande partie sur des principes de gestion de projets classiques tels que les projets de construction ou de production industrielle. En effet, on peut considérer en quelque sorte que le développement et la production d’un logiciel s’apparentent à la construction d’un immeuble ou à la conception d’un nouveau produit.
Et pourtant, malgré la maitrise de ces processus dans le monde industriel et les efforts de réutilisation de code dans le monde logiciel, le déroulement des projets de développement de logiciels est rarement aussi prévisible que celui du développement d’autres produits industriels.
Comment expliquer que là où il est aisé pour un fabricant de voitures de produire différentes versions d’un modèle en ajoutant ou en enlevant des options au moment de la production, il est beaucoup plus difficile pour un producteur de logiciel de personnaliser ses produits selon les désirs de chacun de ses clients ?
La réponse à cette question réside dans l’approche utilisée pour concevoir les produits. Le fabricant de voiture conçoit ses modèles et son processus de production en prévoyant que chaque véhicule qui sortira de l’usine doit pouvoir être adapté aux demandes du client.
Dans une ligne de produits logiciels où les composants de base et les exigences sur leur configuration sont nombreux, la gestion de la variabilité peut rapidement devenir problématique. Une mauvaise gestion peut résulter en une complexité inutile et en la production de produits présentant des incohérences ou des dysfonctionnements. De plus, l’évolution d’une telle ligne de produits, lors de l’ajout de nouveaux composants et de nouvelles fonctionnalités devient compliquée.
La conception d’une ligne de produits logiciels demande une réflexion qui tient compte de ces aspects du début à la fin du projet. Dès l’élicitation des besoins, il est important de commencer à identifier les parties communes et les parties variables des différents logiciels qui seront produits. Lors de la conception de l’architecture, il faudra identifier les points de variation et s’assurer que la découpe en composants soit cohérente et permette d’aisément remplacer un composant par un autre au moment voulu.
L’identification du moment lors duquel et du moyen par lequel les différents composants seront sélectionnés et inclus dans le produit a également une importance. En effet en fonction du composant, certains mécanismes d’inclusion peuvent être disponibles ou non à différents moments. Et inversement, le moment choisi peut restreindre les types de mécanismes d’inclusion possibles. Il conviendra donc de choisir pour chaque composant un ou plusieurs mécanismes d’inclusion et les moments d’inclusion compatibles.
Toujours en matière d’architecture, des composants peuvent nécessiter la présence d’autres composants (dépendances) ou ne peuvent pas cohabiter avec certains autres (exclusion). Ces contraintes impactent naturellement la configuration du produit considéré. Il est également possible que pour certains produits le concepteur décide d’exclure ou de rendre obligatoires certaines combinaisons de composants, par choix ou pour des raisons légales, stratégiques ou organisationnelles.
En définitive, il s’agira donc de s’assurer qu’au moment de la sélection des différents composants, toutes ces contraintes sur la configuration des produits soient respectées et que leur assemblage se fasse de manière optimale. Ceci ne peut évidemment se faire ni manuellement, ni de manière improvisée, c’est un processus qui demande des méthodes et des outils adaptés.
Une approche de type ligne de produits appliquée au développement de logiciels permet donc d’atteindre un niveau de personnalisation, de ré-utilisabilité et un processus de production aussi répétitif et prévisible que ce qui existe depuis plus d’un siècle dans l’industrie de l’automobile par exemple, mais au prix des efforts de planification et de gestion de la variabilité dès le début du projet, tels que ceux fournis dans les lignes de produits industriels.
N’hésitez pas à contacter Raphaël Michel, Ingénieur de Recherche au CETIC, pour plus de détails à propos des lignes de produits logiciels.
Si vous désirez en savoir plus, n’hésitez pas à vous inscrire au groupe de discussion : Optimiser la réutilisation de vos développements avec une approche ligne de produits. Nos experts illustreront plus en détails les méthodes et les outils disponibles et pourront répondre à vos questions.