• Aucun résultat trouvé

Ingénierie du domaineIngénierie du domaine

Ingénierie du domaine

Ingénierie du domaine

Ingénierie du domaine

Assets

Assets

Assets

Assets

Ingénierie d’application

Ingénierie d’applicationIngénierie d’application

Ingénierie d’application

Exigences, modèles, composants,…

Développer par la réutilisation

Développer pour la réutilisation

Niveau lignes de produits

Niveau produit

Fig . 2.14– L’ingénierie des lignes de produits

Vitres Moteur

Climatisation Carrosserie

Électrique Essence Diesel Automatique Manuelle A u t o m o b i l e

Alternatives

Optional

Mandatory

Les résultats de l’ingénierie de domaine (les modèles de features, l’architecture générique, et les composants) contiennent de la variabilité, la dérivation d’un produit particulier a donc besoin de décisions (ou de choix) associées à ces points de variation. La notion de modèle de décision est utilisée pour capturer et enregistrer les décisions nécessaires à la dérivation de produits.

2.4.4 La variabilité logicielle :

La commonalité et la variabilité sont les concepts centraux dans les lignes de produits logiciels. La gestion de la variabilité demande plus d’efforts que pour la commonalité. En effet, les propriétés communes dans la LdP sont identifiées et utilisées telles quelles pour la construction de tous les produits.

Cependant la variabilité demande, en plus de son identification, des mécanismes pour sa

gestion (on parle aussi de résolution de la variabilité). La gestion de la variabilité logicielle

n’est pas un nouveau problème et plusieurs techniques de conception et de programmation permettent de la gérer.

Cependant en dehors du contexte de lignes de produits, la variabilité concerne un seul produit, c.à.d. la variabilité fait partie du produit et elle est résolue après que le produit soit délivré et installé dans son environnement d’exécution. Dans le contexte des lignes de produits, la variabilité doit être explicitement spécifiée et elle fait partie de la ligne de produits et au contraire de la variabilité d’un seul produit, la variabilité dans les lignes de produits est résolue avant que le produit ne soit délivré et installé dans son environnement d’exécution. Atkinson [52] appelle la variabilité contenue dans un seul produit la variabilité de temps d’exécution et la variabilité contenue dans la ligne de produits la variabilité de temps de développement. Nous considérons dans ce document la variabilité de LdP, c.à.d. la variabilité résolue avant la délivrance et l’installation des produits.

a- Les dimensions de la variabilité :

La variabilité logicielle apparaît en deux dimensions : le temps et l’espace (cf.figure 2.16) [52 ,47]:

La dimension du temps concerne la variation dans le temps d’un seul produit logiciel. La Figure 2.16 montre l’évolution dans le temps des produits d’une version à une autre. La dimension de l’espace concerne la variation entre plusieurs produits de la même famille. Les même éléments logiciels sont utilisés dans plusieurs produits et la variation concerne principalement des variations de fonctionnalités, c.à.d. les produits diffèrent dans les fonctionnalités qu’ils supportent. Dans ce document nous considérons les deux dimensions espace, et temps de la variation.

b. Les points de variation :

Dans les lignes de produits, la variabilité est identifiée durant l’ingénierie de domaine et elle est introduite par ce qui est appelé les points de variation. Un point de variation peut être défini comme identifiant un ou plusieurs emplacements auxquels la variation peut se produire.

Un point de variation peut être vu comme un point de décision avec plusieurs choix possibles

appelés variants. Le nœud Moteur dans le diagramme FODA dans la Figure 2.15 est un exemple de point de variation avec trois features variantes : Essence, Électrique et Diesel.

L’optionalité est un cas particulier d’un point de variation où le seul choix possible est la

Un modèle logique pour les architectures logicielles dans l’embarqué Etat de l’art - UML pour la modélisation des systèmes embarqués

Présenté en vue de l’obtention du diplôme de magister en informatique industrielle-concepts avancés- Par Djebar Yacine. 39

En plus, au niveau du modèle de features, les points de variation doivent apparaître à tous les niveaux d’abstraction (exigences, architectures, implantation, tests, etc.). Au niveau des architectures, les travaux ont étudié l’extension des langages de description d’architecture pour la spécification de la variabilité dans les architectures de LdP. Nous présentons les principaux travaux existants autour de la modélisation des architectures de LdP en UML dans la suite du document. c. Gestion de La variabilité au niveau de l’implantation.

Plusieurs techniques au niveau de l’implantation permettent la gestion de la variabilité. Parmi les approches utilisées pour la gestion de la variabilité au niveau de l’implantation, on peut retenir :

Les techniques de compilation. Elles permettent la dérivation d’un produit pendant la phase

de compilation. La compilation conditionnelle et le chargement de bibliothèques sont des exemples de ces techniques. Elles sont utiles si la variabilité concerne les parties de code à inclure ou à exclure par rapport aux bibliothèques qu’elles utilisent.

Les techniques liées aux langages de programmation .Les langages à objets (LAO) ont

apporté quelques techniques utiles pour implanter la variabilité. Citons l’abstraction à travers la notion d’héritage, du polymorphisme ; la surcharge et la liaison dynamique. Les points de variation peuvent être définis comme abstraits dans la LdP et redéfinis par chaque variant du produit d’une manière spécifique. Certains LAO permettent de définir des classes paramétrées, appelées classes templates. La variabilité peut être implantée en utilisant les classes templates lorsque les variantes ne diffèrent que sur un ensemble de types de paramètres (taille mémoire ; type d’un paramètre…).Les diagrammes de classes UML permettent de définir des classes Template et donc de gérer ce type de variabilité.

Les patrons de conception. Les patrons de conception [47] fournissent des solutions

réutilisables pour certains types de problèmes. Dans [49] le patron de conception fabrique

abstraite (Abstract Factory) est utilisé pour la réification des variants. La fabrique abstraite

permet de définir une interface pour la création des produits concrets et propose un ensemble de patrons pour modéliser la variabilité [50].Ces patrons sont basés sur des types de dépendances entre un ensemble de propriétés.

Des approches de programmation. Des approches récentes de génie logiciel peuvent être

utilisées pour implanter et gérer la variabilité dans les systèmes.

La séparation des aspects [51]. est une approche permettant de réduire la complexité des

systèmes. Le principe est de décomposer le problème en un ensemble de composants Vn

V2