Feature model

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 12 janvier 2022 à 12:02 et modifiée en dernier par 2a01:e0a:2ba:d120:9db7:5659:a045:e2c3 (discuter). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
Exemple de feature model

En développement logiciel, les Feature model sont une technique de modélisation des gammes de produits logiciels (Software product lines). Ils ont été introduits pour la première fois dans la méthode de feature-oriented domain analysis par Kang en 1990[1].

Objectif

Les feature models sont utilisés pour identifier les différences et similitudes entre tous les produits d'une même software product line. Chaque caractéristique, ou feature, peut être un préalable, un composant ou un morceau de code[2].

Formalisme

Les feature models se présentent comme des arbres dans lesquels chaque nœud est une caractéristique et chaque arête peut avoir quatre valeurs possibles :

  • Obligatoire : Si le nœud parent est présent, alors le nœud enfant aussi.
  • Optionnel : Le nœud enfant peut ou peut ne pas être présent alors que le nœud parent l'est.
  • Alternative : Si le nœud parent est présent, alors un seul des nœuds enfants reliés par une arête alternative l'est.
  • Ou : Si le nœud parent est présent, alors au moins un des nœuds enfants reliés par une arête l'est.

À cela s'ajoutent des relations non hiérarchiques entre nœuds :

  • Préalable : Si le nœud A est présent alors le nœud B aussi.
  • Exclusion : les nœuds A et B ne peuvent pas être présents en même temps.

Dans les extended feature model, chaque caractéristique peut aussi avoir un ou plusieurs paramètres ou attributs ayant chacun un domaine de définition.

Caractéristiques

Benavides et al. définissent deux caractéristiques des feature models[3] : d'une part, la variabilité d'un modèle entier, définie comme le rapport entre l'ensemble des produits représentés par un feature model et l'ensemble des produits représentables en gardant les caractéristiques mais en supprimant les relations entre les deux ; la communalité d'une caractéristique, d'autre part, correspond au rapport entre l'ensemble des solutions où cette caractéristique est présente sur l'ensemble des solutions.

Références

  1. (en)Kang, K.C. and Cohen, S.G. and Hess, J.A. and Novak, W.E. and Peterson, A.S., "Feature-oriented domain analysis (FODA) feasibility study", Technical Report CMU/SEI-90-TR-021, SEI, Carnegie Mellon University, November 1990, lire en ligne.
  2. C. Preofer. Feature-oriented programming : A new way of object composition. Concurrency and Computation : Practice and Experience, 13(6):465-501, 2001 lire en ligne
  3. (en)Benavides, D., Ruiz-Cortes, A., & Trinidad, P. (2005, July). Using constraint programming to reason on feature models. In The Seventeenth International Conference on Software Engineering and Knowledge Engineering, SEKE (Vol. 2005, pp. 677-682). Voir en ligne.