Automatisation des lignes de produits logiciels en entreprise

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.

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela chatpfe.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

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

Rapport PFE, mémoire et thèse PDFTélécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *