Ces dernières années, le logiciel a augmenté de façon continue en taille et en complexité, devenant une valeur ajoutée de nombreux produits, un avantage concurrentiel. Le développement peut être clairement vu dans les entreprises productrices de produits industriels comme les contrôles numériques, les appareils ménagers, etc. Dans ces produits, le logiciel est passé d'être un élément périphérique à être l'élément le plus important.
Cependant, en général, le développement du logiciel reste le même dans ces entreprises. La plupart des entreprises développent un système unique par période. En outre, l'achèvement précoce du produit est fixé comme objectif principal, laissant de côté d'autres critères tels que la qualité. Et en travaillant pour que le produit se termine à temps, ils ne prennent pas en compte la nécessité de maintenir le même système lors du développement du système, de sorte que les changements ultérieurs qui se produisent dans le système sont difficiles. Et comme si c'était peu, la plupart des entreprises continuent d'utiliser des méthodologies anciennes.
Cela génère de nombreux problèmes et casse-tête dans les entreprises. Le plus grand problème peut être la perte progressive de compétitivité. Dans les entreprises qui n'ont pas modifié le processus de développement du logiciel, le travail de la plupart des employés est la maintenance de systèmes développés précédemment, dont la phase de maintenance suppose plus de 80% du coût total des systèmes, de sorte qu'il existe peu de ressources pour le développement de nouveaux systèmes. Cela entraîne une perte de capacité d'innovation.
Comme le logiciel devient de plus en plus nécessaire, les entreprises voient la nécessité de changer le processus de développement. Il s'agit de réduire le coût de chaque produit logiciel, d'améliorer la qualité du logiciel, de réduire le temps de commercialisation et surtout de réduire le coût de maintenance. Et comment l'obtenir? La réutilisation et les lignes de produit sont la voie.
La réutilisation du logiciel a toujours été l'un des objectifs de l'ingénierie du logiciel. À la fin des années 1960, on a commencé à utiliser les sous-routines, tandis que dans les années 70 on a commencé à utiliser les modules et dans les années 80 la programmation orientée objet.
Cependant, la réutilisation était opportuniste, c'est-à-dire non planifiée, réalisée individuellement et de bas niveau. Dans les années 90, l'idée de développement basé sur les composants émerge. Cette philosophie proposait la réutilisation d'unités ou de composants de plus grande taille, en faisant un pas ferme dans leur réutilisation.
Les premiers indices sur les lignes de produits sont apparus à la fin des années 1990 et l'intérêt a explosé à partir de 2000. Ils abordent une vision plus large que d'autres philosophies, puisqu'ils travaillent à la réutilisation planifiée et stratégique, en tenant compte de leurs caractéristiques techniques et critères d'affaires, en cherchant l'industrialisation du secteur logiciel. Dans d'autres secteurs industriels, comme l'automobile ou la machine-outil, on a avancé beaucoup plus tôt sur cette voie, en utilisant actuellement l'économie d'échelle.
Et dans le logiciel ? Pourquoi l'industrialisation n'est-elle pas encore arrivée? Manque de technologie, de méthodologie et d'outils de conception adaptés. Nous avons maintenant à portée de main: Les produits .NET de CORBA, J2EE et Microsoft sont l'exemple des nouvelles technologies et il y a de plus en plus de méthodologie et d'outils de conception.
Ce sont des systèmes logiciels intensifs avec des caractéristiques communes qui répondent aux besoins d'un certain secteur du marché. Ces systèmes sont développés à partir de bases actives communes suivant un processus déjà établi.
Un actif est un produit de travail que l'organisation utilise et réutilise. Il est conçu pour la réutilisation, intègre la partie commune du domaine et permet la polyvalence, c'est-à-dire s'adapte à différentes situations. Par conséquent, les bases actives constituent l'axe de la ligne de produit. Architecture, composants logiciels réutilisables, modèles de domaine, documents et cas de test sont des exemples de bases actives.
La clé du succès d'une ligne de produit est basée sur la gestion systématique des changements planifiés. Il est donc essentiel d'identifier, de contrôler et de gérer la variabilité de la ligne de produit, caractéristique qui sépare les membres de la famille.
Une ligne de produit doit être dirigée vers un domaine (domaine de connaissance avec terminologie commune). Et tous les domaines ne sont pas adaptés à l'application des lignes de produits, il est nécessaire qu'il y ait des applications similaires. Dans le développement des produits de ce domaine, il est indispensable de disposer de connaissances et d'expérience interne.
Les lignes de produits supposent un changement dans le cycle de vie des produits: du point de vue du projet, nous allons à la vue du domaine. La vue de domaine permet de distinguer deux activités : ingénierie de domaine et ingénierie d'applications ou développement de produits.
En ingénierie de domaine, après une analyse approfondie des produits, des actifs réutilisables sont développés. L'objectif est d'identifier la partie commune et variable des produits et de créer l'infrastructure ou la base nécessaire pour atteindre le plus haut degré de réutilisation possible. Ces actifs recueillent toute l'expérience et la connaissance des entreprises sur les produits. Le principal atout est l'architecture générale des produits, basée sur la ligne de produit. L'architecture d'une ligne de produit couvre globalement tous les produits.
Cependant, l'ingénierie des applications vise à créer des applications, mais pas à zéro, mais en utilisant des bases actives générées en ingénierie de domaine.
Pour développer les actifs, il est avantageux d'utiliser une approche de développement basée sur les composants, c'est-à-dire de créer des systèmes basés sur les composants, de développer et de stocker ces composants.
D'autre part, il est indispensable de prendre en compte une autre performance, la gestion. Pour gérer la ligne de produit, tant au niveau technique qu'organisationnel de l'entreprise, il est nécessaire de garantir que l'approche de la ligne de produit va sur la bonne voie et avec succès. En outre, l'adéquation de la ligne de produit doit être garantie aux nouvelles circonstances.
La stratégie des lignes de produits est applicable aux entreprises de très divers type et taille: Sociétés de développement de logiciels, consultants logiciels et départements de développement de logiciels internes.
Jusqu'à présent, l'idée des lignes de produits était liée aux grandes entreprises, qui pouvaient consacrer plus de ressources et d'efforts au développement de la ligne de produit. Cependant, les petites entreprises peuvent également l’appliquer et obtenir des avantages économiques en utilisant des versions ‘plus
légères’ des pratiques utilisées. En outre, les changements de structure et de rôle nécessaires pour appliquer une ligne de produit peuvent être plus faciles dans les petites entreprises.
Par conséquent, avec la stratégie offerte par la philosophie des lignes de produits, les entreprises engagées dans le développement de logiciels pourront réaliser une réutilisation systématique de leurs produits et obtenir des avantages compétitifs.
Un nouveau système ne sera pas développé à partir de zéro, mais il sera développé à l'aide de bases actives existantes, ce qui permettra d'économiser du temps. Augmenter la part de marché, réduire les coûts, les systèmes plus fiables, la satisfaction des clients et le temps de commercialisation réduit sont les avantages offerts par cette méthodologie de développement logiciel.
Investissement méritantLa mise en service d'une ligne de produit nécessite de grands investissements et efforts. Il est nécessaire de réaliser une analyse coût-bénéfice qui vise et contrôle les risques entre autres. Les lignes de produits nécessitent un investissement initial, mais ensuite on obtient des bénéfices en couvrant les produits. |
Méthodologies
Il existe différentes méthodologies pour le développement de lignes de produits. Si l'on analyse les activités à développer dans une ligne de produit : ingénierie de domaine, ingénierie d'application, gestion et évolution, certaines méthodologies offrent un soutien à tous les domaines, tandis que d'autres sont limitées à un domaine spécifique. Parmi les méthodologies de soutien à toutes les activités se trouvent: PuLSE (Product Line Software Engineering), Cuivre, COPA (Component-Oriented Platform Architecting), FAST (Family-Oriented Abstraction, Specification and Translation). En outre, FORM, SREB + FODA, etc. sont limités à l'ingénierie de domaine et l'ingénierie des applications, sans tenir compte de la gestion et de l'évolution. Il existe des méthodologies qui se limitent à des actions plus concrètes: FODA (Feature-Oriented Domain Analysis) est une méthodologie d'analyse de domaine pour la conception architecturale d'une ligne de produit ADD (Attribute Driven Design) et FBAD (Functionality-Based Architectural Desing).
Réutilisation : plusieurs options
Pour le développement de produits logiciels aux caractéristiques communes, les organisations disposent de plusieurs options de différents niveaux de réutilisation. Chacune de ces options suppose un plus grand investissement, mais aussi un plus grand degré de réutilisation.
• Produit à produit : c'est la vision de toujours. Il consiste à développer chaque produit à partir de zéro.
• Infrastructure standardisée: consiste en la standardisation de l'infrastructure produit (avec système d'exploitation et composants commerciaux habituels).
• Plateforme: Les produits sont développés à partir d'une plate-forme d'infrastructure standardisée qui comprend les fonctions communes de tous les produits.
• Ligne de produits logiciels: En plus de la plateforme, le produit est basé sur des fonctions communes à la plupart des produits ; les fonctions spécifiques d'un ou plusieurs produits sont développées lorsque le produit provient de cette base.
• Base de produit configurable: Il est de développer
une base pour la création de produits. Cette base peut être configurée pour créer le produit. Il est principalement utilisé dans les domaines stables.