Les Lignes de Produits Logiciels (Software Product Lines)

55  Download (0)

Full text

(1)

Les Lignes de Produits Logiciels (Software Product Lines)

Tewfik Ziadi UPMC/LIP6

tewfik.ziadi@lip6.fr

(2)

● 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

(3)

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)

(4)

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

(5)

Une idée?

(6)

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)

(7)

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

(8)

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?

(9)

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

(10)

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

(11)

Solution : Utilisation des “Lignes de Produits Logiciels”

DEMO

(12)

Les lignes de produits logiciels

Variants

(13)

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

(14)

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é

(15)

1. Plusieurs modèles de téléphones.

2. Des utilisateurs à travers le monde

Plusieurs variantes de la même application

Variante version

(16)

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..)

(17)

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.

(18)

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

(19)

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

(20)

Software Product Line Engineering

Development for reuse

Development

with reuse

(21)

Feature model

Software Product Line Engineering

(C) Tewfik ZIADI UPMC 2017

(22)

Feature model Reusable assets

Software Product Line Engineering

(23)

Feature model Configuration

Software Product Line Engineering

(C) Tewfik ZIADI UPMC 2017

(24)

Reusable assets

Configuration

Product

Software Product Line Engineering

(25)

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.

(26)

Feature model

Software Product Line Engineering

(27)

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.

(28)

Feature model Reusable assets

Software Product Line Engineering

(29)

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

(30)

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

(31)

Approches basées sur des annotations

Principes :

– Un produit MAXIMAL.

– Des annotations pour spécifier les fragments qui sont associés à chaque feature.

(32)

L’outil Cide+ [Cide+, 2010]

Source: [Cide+, 10]

(33)

Munge (FeatureIDE)

(34)

Annotative approaches: Model

(35)

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.

(36)

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.

(37)

É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

(38)

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)

(39)

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)

(40)

Feature : Base

(41)

Feature : Limit

(42)

Feature : Conversion

(43)

Reusable assets

Configuration

Product

Software Product Line Engineering

(C) Tewfik ZIADI UPMC 2017

(44)

Dérivation de produits

• Comment générer (dériver) un produit spécifique à partir

de la ligne de produits?

(45)

• 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

(46)

Dérivation de produits avec FeatureHouse

1. Un mécanisme de dérivation automatique de code basé sur le raffinement de code.

(47)

Feature : Base Feature : Limit

Composition(Base, Limit)?

(48)
(49)

Feature : Base

Feature : Consortium

(50)
(51)

FeatureHouse

Source: Sven Apel, and al. Language-Independent and Automated Software Composition: The FEATUREHOUSE Experience, IEEE-TSE, 2012

(52)

FeatureHouse

Source: Sven Apel, and al. Language-Independent and Automated Software Composition: The FEATUREHOUSE Experience, IEEE-TSE, 2012

(53)

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.

(54)

Exemple de l’approche Kompose [INRIA-Rennes]

(55)

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é

Figure

Updating...

References

Related subjects :