Par : THOMAS PETIT
Lโinformatique
Lโessor de lโinformatique au dรฉbut du XXรจme siรจcle, puis dโinternet ร la fin du XXรจme siรจcle ont rรฉvolutionnรฉ notre quotidien et notre faรงon de vivre. En France, La transformation numรฉrique a fait basculer les mรฉtiers de lโindustrie vers le tertiaire et les services faisant accroitre de maniรจre exponentielle le dรฉveloppement dโoutils informatique. Lโinformatique, puis internet ont largement contribuรฉ ร cette rรฉvolution. Cette digitalisation a permis entre autres dโautomatiser des taches par des algorithmes en passant par des applications et logiciels. Aujourd’hui, l’informatique occupe une place immense dans notre quotidien. Les nouvelles technologies รฉvoluent constamment chaque jour, cherchant toujours ร automatiser ces processus de la vie courante. La demande croissante de nouveaux logiciels oblige les fabricants ร accรฉlรฉrer le processus dรฉveloppement ainsi que des logiciels ร plus grande รฉchelle. Les programmes sont constituรฉs de code et de donnรฉes. Le code est la sรฉrie d’instructions qui indiquent ร l’ordinateur la tรขche ร accomplir ensuite et la maniรจre dont il doit hiรฉrarchiser les tรขches. Les programmeurs utilisent ces instructions pour ordonner ร l’ordinateur d’exรฉcuter des tรขches spรฉcifiques, comme l’enregistrement de fichiers ou l’organisation d’images sur votre bureau ; ce sont les programmes, qui doivent รชtre รฉcrits dans un ou plusieurs langages de programmation. Ces logiciels ont pour but dโautomatiser des taches souvent avec une interface graphique permettant ร lโutilisateur dโinteragir avec le logiciel. Un logiciel, parfois appelรฉ programme, est un ensemble d’instructions qui indiquent ร l’ordinateur ce qu’il doit faire.
Les entreprises face aux dรฉfis de la rรฉutilisationย
De plus les entreprises se confrontent ร des problรจmes de maintenances et dโรฉvolutions des logiciels qui entrainent des pertes de temps et donc dโargent. En effet la maintenance et le support des applications, sont trรจs chronophages pour les dรฉveloppeurs, qui sont parfois contraints de se relayer pour pouvoir assurer ce service en continue. Les dรฉveloppeurs dans les entreprises ne maitrisent pas forcement lโhistorique de lโensemble des modifications et des amรฉliorations acquises ร travers le temps. Ils doivent parfois ainsi se plonger dans le logiciel parfois mal implรฉmentรฉ avant de pouvoir y apporter une modification. Ceci entraine une perte de temps considรฉrable. La construction des logiciels est relativement statique au dรฉpart, une fois celui-ci dรฉveloppรฉ et livrรฉ au client, toute maintenance requise et envisagรฉe pour ces systรจmes nรฉcessite des modifications potentiellement importantes du code source existant. Ceci n’est plus acceptable pour les systรจmes logiciels contemporains, car la complexitรฉ de la production et de la maintenance gรฉnรจre souvent des coรปts qu’il faut prendre en compte. La rรฉutilisation du code source est donc un point important qui peut aider les entreprises ร accรฉlรฉrer le processus de dรฉveloppement maximiser la rรฉutilisation dans un ensemble de produits logiciels crรฉera un ensemble de Le logiciel est conรงu autour de fonctionnalitรฉs communes. Pour les fabricants, cela offre des possibilitรฉs de conception Ce n’est plus un produit sรฉparรฉ, mais une sรฉrie de produits. Ce changement L’รฉchelle (passage d’un produit unique ร une sรฉrie de produits) leur permettra de produire plus L’important est que la quantitรฉ de logiciels augmente, mais cela amรฉliore รฉgalement la qualitรฉ et rรฉduit les coรปts. Les lignes de produits logiciels sont un outil permettant de rรฉpondre ร ces problรฉmatiques.
Les lignes de produits logicielsย
La ยซ recherche ยป sur l’ingรฉnierie des lignes de produits logiciels s’est avรฉrรฉe utile pour lโindustrie notamment les petites et moyennes entreprise (PME). Mais elle reste largement peu utilisรฉe dans les entreprises. Lโobjectif envisagรฉ des LPL n’est plus d’obtenir un systรจme logiciel unique, mais de partir de bases et caractรฉristiques communes pour dรฉvelopper et affiner les fonctionnalitรฉs du logiciel. En somme faire sรฉrie de produits logiciels avec des caractรฉristiques communes. Mais garde cet ensemble. Les logiciels peuvent dรฉvelopper de maniรจre laborieuse, et peuvent รฉgalement engendrer des couts considรฉrables pour les entreprises.
Lโingรฉnierie les lignes de produits logiciels a rencontrรฉ de nombreux succรจs ces derniรจres annรฉes. Cependant, il est rapide de constater quโencore peu dโentreprise du logiciels informatique (tous secteurs confondu) ont adoptรฉ le dรฉveloppement de LPL. Ce phรฉnomรจne peut รชtre expliquรฉ par au moins plusieurs facteurs : la difficultรฉ dโappliquer les trois approches dโadoptions existantes au contexte des PME couplรฉe ร une rรฉticence ร lโadoption de pratiques ร risques dans lโentreprise. La rรฉutilisation logiciel peut jouer un rรดle crucial dans cette diminution du temps de dรฉveloppement. Intuitivement, nous observons chez les dรฉveloppeurs une tendance ร la rรฉutilisation, qui prend la forme de copiรฉ collรฉ successif, depuis des logiciels dรฉjร conรงu vers ceux en cours de conception. A terme, cette pratique nommรฉ Clone&Own en anglais, fait รฉmerger des familles de logiciels, ce sont des logiciels qui partagent des caractรฉristiques communes. Cette pratique est toutefois chaotique, et peut parfois รชtre plus couteuse que de commencer le projet de zรฉro De plus, elle fait รฉmerger des familles de logiciels dont la maintenance doit รชtre assurรฉe de faรงon individuelle. Cโest pourquoi il est prรฉfรฉrable pour les entreprises de considรฉrer lโutilisation de Lโingรฉnierie des Lignes de Produits Logiciels (LPL) comme paradigme de dรฉveloppement pour leurs logiciels. Lโobjectif est de rendre la rรฉutilisation systรฉmique : les logiciels sont conรงus par la rรฉutilisation et pour la rรฉutilisation. La conception dโune famille de logiciels partageant des caractรฉristiques communes. Pour cela, les lignes de produits logiciels reposent sur la rรฉutilisation et la configuration en masse. De faรงon gรฉnรฉrale, lโadoption des LPL dans le processus de dรฉveloppement permet : une diminution des temps de dรฉveloppement ; une augmentation de la qualitรฉ des logiciels ; et une amรฉlioration de la maintenabilitรฉ des logiciels Concevoir une sรฉrie de produits ร partir de zรฉro peut รชtre compliquรฉe, il y a de nombreux paramรจtres ร prendre en compte comme le domaine d’activitรฉ, le domaine d’expertise du dรฉveloppeur, la technologie utilisรฉe.
La demande de nouveaux logiciels a suivi l’augmentation de la popularitรฉ des appareils informatiques tels que les ordinateurs personnels, les smartphones, les voitures, appareils Et avec cette augmentation de la demande, les logiciels sont devenus plus complexes ร concevoir, nรฉcessitant de plus en plus de temps et d’efforts pour les dรฉveloppeurs de plus en plus de temps et d’efforts de la part des dรฉveloppeurs. Le domaine du gรฉnie logiciel s’intรฉresse ร la recherche de mรฉthodologies et des techniques pour faciliter le dรฉveloppement d’un systรจme logiciel. Par exemple, ces mรฉthodes concernent l’amรฉlioration de la qualitรฉ du logiciel, son accessibilitรฉ ร la maintenance et ร l’รฉvolution dans le temps, ainsi quโร la description de nouvelles approches pour faciliter son dรฉveloppement. Parmi ces mรฉthodes, l’ingรฉnierie des lignes de produits logiciels se concentre sur la conception de familles de logiciels de maniรจre systรฉmatique. Une famille de logiciels est un ensemble de logiciels qui partage plusieurs fonctionnalitรฉs ou aspects logiciels en commun. Le dรฉveloppement d’un logiciel standard permet de proposer une mรชme solution globale pour l’ensemble des clients. Dans lโindustrie, chaque utilisateur client accรจde ร un logiciel contenant l’ensemble des fonctionnalitรฉs logicielles dรฉveloppรฉes. Pour concevoir ce logiciel, l’entreprise s’adonne d’abord ร une รฉtude de marchรฉ pour dรฉterminer les fonctionnalitรฉs logicielles les plus demandรฉes. Puis, l’entreprise conรงoit un logiciel qui implรฉmente toutes ces fonctionnalitรฉs, par exemple la rรฉservation, la crรฉation de comptes utilisateur ou encore un systรจme de notation. Elle livre ensuite un seul et mรชme logiciel ร chacun des clients contenant l’ensemble des fonctionnalitรฉs. Le logiciel standard permet de n’avoir qu’un seul logiciel ร maintenir par les dรฉveloppeurs. Avec le dรฉveloppement de logiciels individuels, une version du logiciel est conรงue spรฉcifiquement autour des besoins deย chaque utilisateur.
Dans l’entreprise cliente, celle-ci dรฉveloppe trois versions de son logiciel pour convenir aux besoins spรฉcifiques de ses clients. Cette stratรฉgie de dรฉveloppement permet de rรฉduire les coรปts des logiciels ร proposer aux utilisateurs, et de faire un logiciel qui correspond mieux ร leurs besoins. On obtient alors une famille de produits logiciels au sens dรฉfini par David Parnas (1976) : ยซ Une famille de produits logiciels est un ensemble de logiciels partageant une certaine proximitรฉ dans leurs objectifs et qui disposent de suffisamment de similaritรฉ pour justifier dโune mutualisation de leurs concepts et leur maintenance. ยป
Lโalternance
Lors de cette annรฉe 2018/2019, jโai eu lโhonneur de faire mon alternance dans une petite entreprise cliente du groupe Accenture. Cette sociรฉtรฉ sโoccupe de la crรฉation et la maintenance de multiples logiciels pour des PME et autres sociรฉtรฉs. Ces logiciels peuvent รชtre variรฉs, lโentreprise possรฉdant de nombreux clients trรจs divers, dโoรน le possible nรฉcessitรฉ dโavoir recours ร des LPL. Les domaines dโactivitรฉ sont surtout autour du numรฉrique mais aussi de lโaviation ainsi que lโautomobile. Dรจs mon intรฉgration en Septembre 2018, jโai eu lโoccasion de travailler sur les lignes de produits logiciel au sein de lโentreprise et de participer ร la maintenance des multiples outils pour le dรฉveloppement des diffรฉrentes gammes de logiciel ร la demande des clients. Outre la maintenance et le support quotidien des logiciels en production, jโai pu participer ร lโรฉlaboration dโun outil dโautomatisation de la gรฉnรฉration des lignes de produits logiciels. Pour cela il a fallu effectuer une รฉtude de lโart des diffรฉrentes recherche industrielles sur lignes de produits pour pouvoir par la suite proposer une nouvelle approche innovante avec les รฉquipes R&D et IT. La ligne directrice de mon alternance รฉtait, dans un premier temps, dโamรฉliorer lโimplรฉmentation la ligne de produit et dans un second, de trouver un moyen dโautomatiser lโintรฉgration de nouvelles fonctionnalitรฉs dans cette ligne de produit logiciel. Jโai pu lors de mon alternance travailler avec diffรฉrentes รฉquipes :
Lโรฉquipe IT, qui sโoccupe du support des logiciels et du bon fonctionnement de la ligne de produit se compose dโune dizaine de personne, elle sโoccupe de la maintenance et des รฉvolutions des logiciels avec lโรฉquipe commerciale et les maitrises dโouvrages.
Lโรฉquipe commerciale et les Maitres dโOuvrages MOA : ces รฉquipes sont au plus proches de lโenvironnement mรฉtier et dictent les projets ainsi que les nouvelles amรฉliorations ร intรฉgrer dans les logiciels dans le but de satisfaire au mieux les attentes des clients. Ils prennent en compte les modification et changements du marchรฉ et ont une trรจs bonne connaissance dans le domaine.
Lโรฉquipe Recherche et Dรฉveloppement, principalement composรฉs dโingรฉnieurs et de chercheurs en ingรฉnierie, cette รฉquipe effectue une veille des derniรจres รฉtudes de recherche dans diffรฉrent domaine (gรฉnie logiciel, IAโฆ) Leur but est dโadapter les travaux de recherche existant ร notre entreprise, mais aussi de faire de la recherche en trouvant de nouvelles solutions innovantes. Le but de mon alternance sโinscrivait dans lโoptique de la crรฉation de lโoutil ยซ SPL Generator ยป, un gรฉnรฉrateur automatique de ligne de produit logiciel qui prend en compte une automatisation complรจte de la rรฉingรฉnie de la ligne de produit.
Lors de mon alternance, jโai donc pu รชtre en lien permanant tout au long de lโannรฉe entre ces diffรฉrentes รฉquipes, cela mโa permis dโavoir une vision complรจte du fonctionnement des รฉquipes prรฉsentes au sein dโune PME. Ce projet, considรฉrรฉ comme de la recherche industrielle, sโinscrit dans une approche innovante dโautomatisation du processus de rรฉingรฉnierie des lignes de produit logiciel liant plusieurs domaine autour du gรฉnie logiciel. Lโoutil dรฉveloppรฉ par mes soins ยซ SPL_Generator ยป est le travail de 10 mois de recherche et dโimplรฉmentation,( 4 mois รฉtude de lโart et dรฉcouverte des LPL, 2 mois pour la proposition de la solution,3 mois pour la conception 1 mois de test). Ce fut la tรขche majeure de mon alternance en plus du support quotidien des diffรฉrents logiciel, et lโรฉlaboration dโautres outils pour les รฉquipes IT et R&D. Les autres outils dรฉveloppรฉs en marge de mon alternance sont des applications qui permettent de dรฉplacer des dossiers ou des fichiers a des heures prรฉcises et de faire tourner des processus permettant le bon fonctionnement des autres applications en production dans lโentreprise. ยซ Lโorchestre ยป .
La rรฉduction des couts de dรฉveloppementย
Les avantages et bรฉnรฉfices de l’adoption de l’ingรฉnierie des LPL se mesurent par comparaison avec un dรฉveloppement ยซย traditionnelย ยป L’ingรฉnierie des lignes de produits logiciels promeut une rรฉutilisation logicielle ร grande รฉchelle lors du dรฉveloppement de nouveaux produits. Au cours du dรฉveloppement, les artefacts de la ligne sont rรฉutilisรฉs pour la conception de nouveaux logiciels, ce qui rรฉduit ses coรปts de conception. Le gain est รฉgalement visible sur le temps de dรฉveloppement qui tend ร diminuer grรขce ร la rรฉutilisation (c’est d’ailleurs la principale cause de rรฉduction des coรปts). Cependant, cette rรฉduction des coรปts est seulement visible sur le temps long : des coรปts survient ร partir du troisiรจme produit dรฉveloppรฉ grรขce ร la ligne de produits comparativement aux coรปts de dรฉveloppement produit par produit. De plus, la rรฉduction des coรปts nรฉcessite un investissement initial consรฉquent. Cet investissement permet la conception des artefacts rรฉutilisables en amont du dรฉveloppement des produits.
Rรฉduction du dรฉlai de mise sur le marchรฉ des logicielsย
Comme nous l’avons mentionnรฉ pour la rรฉduction des coรปts, l’application de cette ingรฉnierie permet de rรฉduire les temps de dรฉveloppement de nouveaux produits. Cette rรฉduction de temps amรฉliore les dรฉlais de mise sur le marchรฉ ou de livraison des produits logiciels. Il en dรฉcoule des retours sur investissement plus rapides pour les entreprises, ร condition lร encore de concevoir les artefacts en amont.
Rรฉduction des efforts de maintenabilitรฉ des logiciels
ร travers la plateforme configurable d’une LPL, la maintenance d’un artefact se propage virtuellement ร tous les produits oรน cet artefact est implรฉmentรฉ. La plateforme supprime la nรฉcessitรฉ de maintenir individuellement chaque produit et permet de factoriser les opรฉrations de maintenance. ร terme, cela permet de rรฉduire l’effort de maintenance. De plus, la maintenance peut se faire sans connaรฎtre et maรฎtriser l’intรฉgralitรฉ des implรฉmentations des produits, ce qui rรฉduit l’effort de comprรฉhension.
|
Table des matiรจres
INTRODUCTION
Lโinformatique
Les entreprises face aux dรฉfis de la rรฉutilisation
Les lignes de produits logiciels
Lโalternance
Le plan du mรฉmoire dโalternance
LE BUT
La rรฉduction des couts de dรฉveloppement
Rรฉduction du dรฉlai de mise sur le marchรฉ des logiciels
Rรฉduction des efforts de maintenabilitรฉ des logiciels
Amรฉlioration de la qualitรฉ des logiciels
Etat de lโart et prรฉrequis
La ligne de produit logiciel
Ingรฉnierie du domaine et ingรฉnierie dโapplication
Analyse du domaine
Conception du domaine
Rรฉalisation du domaine
Ingรฉnierie d’application
Configuration des produits
Gรฉnรฉration des produits
Les approches de conceptions traditionnelles
Le dรฉveloppement from scratch
Le clone and own
Le rรฉpertoire commun
Les approches fondamentales pour les LPL
Lโapproche Proactive
Lโapproche Extractive
Lโapproche Rรฉactive
Quelle approche adaptรฉe aux PME ?
Lโanalyse Formelle
La variabilitรฉ dโune Ligne de produit logiciel
La gestion de la variabilitรฉ
Caractรฉristique logicielle
Modรจle des caractรฉristiques
Lโimplรฉmentation LPL par annotation et par composition
Annotation
Lโimplรฉmentation en compositionnel
Le degrรฉ de granularitรฉ
Localisation des caractรฉristiques
Rรฉsumรฉ LPL
SPL generator
Les objectifs de lโapproche
Mon alternance
Les รฉtapes de Lโintรฉgration
Identification des assets et lโentrรฉe des produits
Problรฉmatiques lors de mon alternance
Lโentrรฉe des produits
Lโentrรฉe des caractรฉristiques du produit
Lโidentification des assets du code source du produit.
Lโunicitรฉ des Identifiants
Acquisition des artefacts
Les modรจles de variabilitรฉ et leur extraction
Quโest-ce quโun modรจle de variabilitรฉ ?
Comment peut t on extraire automatiquement la variabilitรฉ SPL et ses contraintes ?
FCA pour la variabilitรฉ
Le calcul de la variabilitรฉ dans notre Outils SLP generator
Crรฉation du contexte formel (PCM) ร partir des assets
Extraction de la variabilitรฉ ร partir du Treillis
La localisation des caractรฉristiques.
L’analyse de concepts formels (ACF) pour rรฉaliser la localisation
Conclusion
Tรฉlรฉcharger le rapport complet