Les Lignes de Produits Logiciels (Software Product Lines)
Tewfik Ziadi UPMC/LIP6
tewfik.ziadi@lip6.fr
● University of the Sciences
○ 31,000 Students (20% foreign students)
○ 3000 PhD students
● 120 Research Labs
○ More than 5 000 publications per year
○ 700 PhD thesis defenses per year
● LIP6 (Computer Science Lab)
○ 495 persons
■ 220 permanents
■ 188 PhD students
UNIVERSITÉ PIERRE ET MARIE
CURIE
L’exemple de Notepad
• Nous souhaitons développer en Java une application implémentant l’éditeur « Notepad ».
– Fonctionnalités classiques:
• Edition (E)
• Ouvrir (O)
• Copier/Coller.Couper (Cut)
• Recherche (Finder)
• Annuler (Undo)
è Java (Swing..etc)
L’exemple de Notepad
• Question : comment modifier le code source de cette application pour produire plusieurs variantes:
– V 1 : Notepad sans Copier/Coller sans Recherche sans Annuler – V 2 : Notepad avec Copier/Coller avec Recherche sans Annuler – V 3 : Notepad sans Copier/Coller avec Recherche avec Annuler
Une idée?
Une idée?
• Prendre la version complète et enlever “manuellement”
le fragment de code concernant les deux fonctionnalités Copier/Coller, Recherche, Annuler.
Clone-and-own
(copier è coller è modifier)
Decomposition Block
identification
Visualisation
Feature identification and naming
Feature location
Feature constraints
discovery
Reusable assets construction Feature model
synthesis Extractive SPL adoption
Software product
line Artefact
variants
Adapter
Decomposition Block
identification
Visualisation
Feature identification and naming
Feature location
Feature constraints
discovery
Reusable assets construction Feature model
synthesis Extractive SPL adoption
Software product
line Artefact
variants
Adapter
Decomposition Block
identification
Visualisation
Feature identification and naming
Feature location
Feature constraints
discovery
Reusable assets construction Feature model
synthesis Extractive SPL adoption
Software product
line Artefact
variants
Adapter
Decomposition
Block
identification
Visualisation
Feature identification and naming
Feature location
Feature constraints
discovery
Reusable assets construction Feature model
synthesis Extractive SPL adoption
Software product
line Artefact
variants
Adapter
F1 F2 F3F1 F2 F3F1 F3 F4F1 F2 F3
F1 F3 F4 F5 F1 F2 F4 F5
50% des industriels utilisent cette approche pour gérer la variabilité.
Berger et al. A Survey of Variability Modeling in Industrial Practice, VaMoS ’13
Clone-and-own
• Avantages ?
– Solution Facile!
– Rapide pour répondre aux nouveaux besoins de création de variantes!
• Inconvénients ?
Clone-and-own
Quels sont les problèmes?
Decomposition Block
identification
Visualisation
Feature identification and naming
Feature location
Feature constraints
discovery
Reusable assets construction Feature model
synthesis Extractive SPL adoption
Software product
line Artefact
variants
Adapter
Decomposition Block
identification
Visualisation
Feature identification and naming
Feature location
Feature constraints
discovery
Reusable assets construction Feature model
synthesis Extractive SPL adoption
Software product
line Artefact
variants
Adapter
Decomposition Block
identification
Visualisation
Feature identification and naming
Feature location
Feature constraints
discovery
Reusable assets construction Feature model
synthesis Extractive SPL adoption
Software product
line Artefact
variants
Adapter
Decomposition
Block
identification
Visualisation
Feature identification and naming
Feature location
Feature constraints
discovery
Reusable assets construction Feature model
synthesis Extractive SPL adoption
Software product
line Artefact
variants
Adapter
F1 F2 F3F1 F2 F3F1 F3 F4F1 F2 F3
F1 F3 F4 F5 F1 F2 F4 F5
Clone-and-own
(C) Tewfik ZIADI UPMC 2017
• Correction de bugs!
– Des bugs decouverts dans plusieurs variantes.
• Evolution!
– Si on veut évoluer l’éditeur Notepad :
• Evoluer les fonctionnalités Copier/Coller, Recherche,
Annuler. eg., Modifier les icones dans l’interface graphique.
• Comment propager toutes les corrections de bugs / évolutions modifications à toutes les variantes?
Clone-and-own : problèmes
Solution : Utilisation des “Lignes de Produits Logiciels”
DEMO
Les lignes de produits logiciels
Variants
Software Product Lines in the industry
• Boeing
• Bosch Group
• CelsiusTech Systems AB
• Cummins, Inc.
• Ericsson AXE
• FISCAN
• General Motors Powertrain (GMPT)
• Hewlett Packard
• HomeAway
• LSI Logic
• Lucent
• Market Maker
• Nokia
• Philips (Medical Systems)
• Philips (Software for Television Sets)
• Philips (Telecommunication Switching System)
• Salion, Inc.
• Siemens (syngo.via)
• Toshiba
• U.S. Naval Research Laboratory
Recognized by the SPLC community http://splc.net/fame.html
Le point clé : La variabilité Logicielle
• Définition : La capacité d’un logiciel de varier et de
s’adapter en fonction des différents facteurs de variation
• Les facteurs de variabilité :
– Economique
• une version complète du logiciel, une version gratuite,..
– Culturel
• Ex. la langue déployée pour le logiciel.
– Technique :
• Lié au matériel utilisé
1. Plusieurs modèles de téléphones.
2. Des utilisateurs à travers le monde
Plusieurs variantes de la même application
Variante version
temps
Variante vs. Version
• Version :
– La variabilité dans le temps
V1 V1.2 Vn
……..
Le même logiciel qui évolue dans le temps
è Systèmes de gestion de versions (git, svn..)
Variante vs. Version
• Variante :
– La variabilité dans l’espace
V1 V1.2 Vn
Variante 1 ……..
V1 V1.2 Vn
Variante 2 ……..
…….
V1 V1.2 Vn
Variante N ……..
Au même temps, plusieurs variantes cohabitent è Ligne de produits.
Dans ce cours (4H30)
• Partie 1: Les Lignes de Produits : (1h30)
– L’approche générale et les principes :
– IMPLEMENTATION : un framework de LdP (FeatureIDE/FeatureHouse)
• Partie 2: TP : vous codez des LdP! (1h30 )
– TP FeatureIDE/FeatureHouse (Eclipse / java) – TP BUT4Reuse (Eclipse / Java)
• Partie 3: De clone-and-own vers les ligneq de produits : (1h30)
– Une approche générique et extensible – IMPLEMENTATION : BUT4Reuse.
Restructuration
&
Rétro-ingénierie
Lignes de Produits Logiciels : Vue
« Top-Down »
Une ligne de produits logiciels (LdP)
Produit 1 Produit 2 Produit n
…
ü Dimension 1 : Implémentation de la variabilité dans des LdP.
ü Dimension 2 : Dérivation automatique des produits.
Variabilité logicielle
Software Product Line Engineering
Development for reuse
Development
with reuse
Feature model
Software Product Line Engineering
(C) Tewfik ZIADI UPMC 2017
Feature model Reusable assets
Software Product Line Engineering
Feature model Configuration
Software Product Line Engineering
(C) Tewfik ZIADI UPMC 2017
Reusable assets
Configuration
Product
Software Product Line Engineering
Exemple d’illustration : la LdP banque
• Un famille de systèmes du domaine bancaire.
• Variabilité :
• Le support des découverts sur les compte est optionnelle.
• La gestion de devises de comptes et les opérations de conversion de devises sont optionnelles.
• La connexion au consortium est optionnelle.
Feature model
Software Product Line Engineering
Exemple d’illustration : la LdP banque
• Un famille de systèmes du domaine bancaire.
• Variabilité :
• La possibilité de découvert sur les compte est optionnelle.
• L’opération de conversion de devise est optionnelle.
• La connexion au consortium est optionnelle.
Feature model Reusable assets
Software Product Line Engineering
Implémentation du domaine
• Il s’agit principalement de construire les assets.
• Un « asset » : un artefact logiciel nécessaire au développement de produits.
– Des fichiers de code source – Des bibliothèques
– Des modèles..ect
Implémentation
• Comment implémenté les artefacts de la ligne de produits?
– Comment associé les artefacts logiciels aux features?
• eg.; Le code source, modèles (architecture).
• Deux familles d’approches :
– Approches basées sur des annotations – Approches compositionnelles
Approches basées sur des annotations
• Principes :
– Un produit MAXIMAL.
– Des annotations pour spécifier les fragments qui sont associés à chaque feature.
L’outil Cide+ [Cide+, 2010]
Source: [Cide+, 10]
Munge (FeatureIDE)
Annotative approaches: Model
Approches basées sur des annotations
• Principes :
– Un produit MAXIMAL.
– Des annotations pour spécifier les fragments qui sont associés à chaque feature.
• Dérivation de produits
– Un produit particulier est dérivé par la suppression des fragments associés aux features qui sont désactivées.
Approches compositionnelles
• Gestion de la variabilité
– Les features de la ligne de produits sont implémentés comme des fragments séparés.
• Dérivation de produits
– Un composer qui compose les fragments qui correspondent aux features sélectionnées.
États de l ’ art
• Niveau code :
– FeatureHouse [Apel et al. 09 ]. Une feature è des fichiers de code
– AspectJ. Une feature è un aspect (Aspect Oriented Programing)
• Niveau modèles:
– Feature Oriented Modeling [Czarnecki et al.]
– Kompose [INRIA]
– CVL(Common Variable Language) : Un standard de
l ’ OMG
Exemple : FeatureHouse
• FeatureHouse:
– Une approche proposée par le groupe SPL de l’université Passau, Allemagne.
– Une approche supportant plusieurs langages de programmation :
• C, C++, Java, CSharp,..
– Une approche intégrée dans l’outil FeatureIDE (cf. TP)
FeatureHouse
• Une LdP selon FeatureHouse:
– Un ensemble de fichiers de code source commun (Base) – Chaque feature ajoute un raffinement :
• Ajoutant des nouveaux fichiers de code source
• Raffine les fichiers communs de base:
– Ajouter des attributs
– Ajouter des méthodes/fonctions
– Modifier le code des méthode existantes (surcharge)
Feature : Base
Feature : Limit
Feature : Conversion
Reusable assets
Configuration
Product
Software Product Line Engineering
(C) Tewfik ZIADI UPMC 2017
Dérivation de produits
• Comment générer (dériver) un produit spécifique à partir
de la ligne de produits?
• Une « configuration » : une instantiation de feature modèle.
– Choix des features optionelles, alternatives
– Mais des choix qui respectent les contraintes de cohérence.
Dérivation de produits
Dérivation de produits avec FeatureHouse
1. Un mécanisme de dérivation automatique de code basé sur le raffinement de code.
Feature : Base Feature : Limit
Composition(Base, Limit)?
Feature : Base
Feature : Consortium
FeatureHouse
Source: Sven Apel, and al. Language-Independent and Automated Software Composition: The FEATUREHOUSE Experience, IEEE-TSE, 2012
FeatureHouse
Source: Sven Apel, and al. Language-Independent and Automated Software Composition: The FEATUREHOUSE Experience, IEEE-TSE, 2012
TP: la suite FeatureIDE &
FeatureHouse
• Un plugin Eclipse les LdP.
http://wwwiti.cs.unimagdeburg.de/iti_db/research/featureide/
– Open source
• Éditeur de feature modèles.
• Intégration d’approche annotatives et compositionnelles (Munge, FeatureHouse)
• La possibilité d’intégrer un mécanisme de composition.
Exemple de l’approche Kompose [INRIA-Rennes]
LdP « Top down » : Bilan
• Lignes de Produits Logiciels (Software Product Lines)
– Un paradigme récent du génie logiciel – Une approche en 2 niveaux (ID, IA) – Feature Model : élément central
• Un domaine de recherche très active et qui intéresse les industriels
– Un vrai besoin de gestion de variabilité