• Aucun résultat trouvé

Dans ce chapitre, nous avons décrit brièvement comment un logiciel d’optimisation est mis en œuvre pour améliorer l’efficacité énergétique d’un bâtiment ou d’un groupe de bâti- ments. Nous avons passé en revue les méthodes d’optimisation les plus courantes, ainsi que l’infrastructure matérielle et les architectures logicielles permettant de les mettre en œuvre. Nous avons décrit l’architecture logicielle sur laquelle la suite de nos travaux s’appuie. Pour permettre sa mise en œuvre (qui sort du cadre de cette étude) nous avons proposé un nouveau modèle de bâtiments permettant de palier les manques identifiés dans les modèles existants.

nécessite l’identification des types d’optimisation qui pourront être appliqués. L’instrumen- tation de certaines zones et les attentes des utilisateurs peuvent contraindre le choix du type d’optimisation. Cela peut conduire à utiliser des méthodes d’optimisation différentes dans un même bâtiment, et de façon plus générale, impose une adaptation du logiciel pour chaque installation dans un bâtiment.

C

HAPITRE

3

Introduction aux lignes de produits

logiciels et modèles de

caractéristiques

Sommaire

3.1 Les lignes de produits logiciels et leur cycle de vie . . . 28 3.2 Les différents types de variabilité . . . 29 3.3 Modèles de caractéristiques . . . 32 3.4 Conclusion . . . 37

Notre contribution se plaçant dans le contexte des lignes de produit, nous présentons en premier lieu ce contexte de développement de façon générale, puis nous introduisons plus précisément le concept de “modèle de caractéristiques”

Nous présentons tout d’abord dans la section 3.1 les lignes de produits logiciels de fa- çon générale et leur cycle de vie. Nous décrivons dans la section 3.2 les différents types de variations qui peuvent être rencontrés parmi un ensemble de produits d’une même famille. Ensuite, nous définissons dans la section 3.3 ce qu’est un modèle de caractéristiques, les dif- férents usages possibles avec les méta-modèles existants, et les différentes approches per- mettant d’adapter un modèle de caractéristiques selon l’environnement d’exécution d’un futur produit. La section 3.4 présente les problématiques que nous avons identifiées et que nous allons aborder dans la suite de ce mémoire.

3.1 Les lignes de produits logiciels et leur cycle de vie

Une ligne de produits logiciels est un ensemble de logiciels qui partagent des propriétés communes satisfaisant les besoins d’un domaine métier particulier, et qui sont développés à partir d’un ensemble commun de composants logiciels [Linda M. Northrop et Paul C. Cle- ments, 2007; ISO/IEC/IEEE, 2010; Clements et al., 2005].

La réalisation d’une ligne de produits se base sur deux processus distincts : l’ingénierie

du domaine (domain engineering), et l’ingénierie de l’application (application enginee- ring) [Böckle et al., 2005; Klaus Pohl et al., 2005].

Le processus d’ingénierie du domaine. Ce processus vise à créer et organiser l’ensemble des artefacts (par exemple, documents, code, composants logiciels, librairies, . . . ), aussi ap- pelés assets, nécessaires pour produire des logiciels dans un domaine clairement identifié (par exemple, firmware d’imprimante, logiciel de gestion d’entreprise, système d’exploita- tion de téléphone portable, . . . ). Ces artefacts sont organisés de façon à pouvoir déterminer lesquels sont indispensables, interchangeables ou dépendants d’autres, dans le cadre d’une même architecture logicielle.

Le processus d’ingénierie de l’application. Ce processus consiste à réutiliser les artefacts existants pour produire un nouveau produit répondant à des besoins spécifiques. L’étape du choix des artefacts à réutiliser s’appelle aussi la configuration d’un produit. Si certains besoins ne peuvent pas être satisfaits par les artefacts existants de la ligne de produits, de nouveaux artefacts sont développés et sont ensuite intégrés dans la ligne de produits pour une réutilisation future.

Le choix des différents artefacts constituant un nouveau produit est soumis à des contraintes de variabilité. La variabilité d’une ligne de produits est généralement exprimée à l’aide d’un modèle de caractéristiques [Istoan et al., 2011]. Une caractéristique décrit tout aspect, ou fonctionnalité visible pour les parties prenantes d’un système [Kang et al., 1990; Bontemps et al., 2004; Schobbens et al., 2007]. Un modèle de caractéristiques a pour but de représenter l’ensemble des caractéristiques d’une ligne de produits à l’aide de :

• diagrammes de caractéristiques, représentant hiérarchiquement les caractéristiques de la ligne de produits,

• contraintes déterminant la variabilité de la ligne de produits.

Les contraintes peuvent notamment être liées à la compatibilité des différents composants logiciels (par exemple, dans un système d’exploitation de téléphone, une caractéristique ap-

pareil photo nécessite une caractéristique galerie photos). Un point de variabilité rend pos-

sible un choix entre plusieurs caractéristiques. Cela permet de décrire les caractéristiques communes à tout produit, et les caractéristiques décrivant des variantes possibles entre les produits issus de la ligne de produits. La variabilité au sein d’un modèle de caractéristiques sera décrite plus loin dans ce chapitre dans la section 3.3.

tif de proposer une approche par ingénierie des modèles pour générer des produits décrits par un méta-modèle et dont les contraintes de variabilité sont décrites dans un modèle de caractéristiques. Il permet de représenter les liens entre le modèle de caractéristiques et un modèle représentant les artefacts et leurs interrelations (par exemple, un schéma d’archi- tecture logicielle). CVL est encore en cours de standardisation par l’OMG mais permettra à terme de gérer une ligne de produits et d’automatiser la configuration de nouveaux pro- duits.

Nous ne traitons pas dans le cadre de cette thèse l’intégration de ces deux processus dans les cycles de développement d’un logiciel. Cet aspect est décrit notamment par Linda M. Northrop et Paul C. Clements [2007], Clements et al. [2005] et Klaus Pohl et al. [2005]. Nous nous concentrons, dans la suite de cette introduction, sur la description de la variabilité au moyen d’un modèle de caractéristiques dans le processus de domain engineering, et à sa configuration dans le processus du product engineering.