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

Exemple de feature model

Objectif

modifier

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

modifier

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

modifier

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

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

📚 Artikel Terkait di Wikipedia

Python (langage)

deux en Python » (en) Mark Lutz, Learning Python : Powerful Object-Oriented Programming, O'Reilly, 2009, 4e éd. (ISBN 978-1-4493-7932-2, lire en ligne). 

Rust (langage)

« RustBelt: securing the foundations of the Rust programming language », Proceedings of the ACM on Programming Languages, vol. 2, no POPL,‎ 27 décembre 2017

Liste d'abréviations en informatique

(Microsoft) API : Application Programming Interface APIPA : Automatic Private Internet Protocol Addressing APL : A Programming Language APM : Advanced Power

Comparaison des langages de programmation multi-paradigmes

implementation [9] - Visual programming tool based on Common Lisp [10] rule-based programming extension Meta Object Protocol D Language Feature Table Phobos std

Fortran

projets Wikimedia : Fortran, sur le Wiktionnaire Ed Akin, Object-Oriented Programming via Fortran 90/95, Cambridge University Press, 13 janvier 2003, 1re éd

Comparaisons des logiciels d'analyse numérique

Oct-Files » (consulté le 22 août 2017) (en) « GNU Octave: Object Oriented Programming » (consulté le 22 août 2017) (en) « GUI Development » (consulté le

Trait (programmation)

$o->sayExclamationMark(); (en) Rachid Guerraoui, ECOOP '99 : Object-Oriented Programming : 13th European Conference Lisbon, Portugal, June 14-18, 1999 Proceedings

Java (langage)

 », sur JavaWorld, 4 octobre 1996 Core Web Programming, Marty Hall, Larry Brown Object-oriented Programming with Java, Barry J. Holmes, Daniel T. Joyce