• Aucun résultat trouvé

CHAPITRE 7 FACTEURS DE SUCCÈS ET ATTRIBUTS DE QUALITÉ DES DSL

7.1 Facteurs de succès des DSL

Portée du domaine : la portée du domaine est d’une grande importance et doit être soigneusement déterminée. Elle constitue un facteur déterminant pour le succès du DSL. Si la portée est trop large, le DSL sera moins précis et moins expressif et si elle est trop étroite, le DSL sera trop spécifique et ses opportunités d’utilisation seront très limitées.

Connaissance du domaine : le développement de DSL requiert une connaissance approfondie du domaine. Une bonne connaissance du domaine permet d’identifier correctement les concepts du domaine et d’exprimer convenablement ses règles et ses contraintes.

Niveau d’abstraction : travailler au juste niveau d’abstraction permet de définir des abstractions pertinentes et d’un fort niveau d’abstraction et, par conséquent, d’offrir un DSL avec des concepts plus familiers aux utilisateurs et aux experts de domaine.

Notation : la notation est souvent prise à la légère par les concepteurs des DSL alors qu’elle constitue l’interface principale d’interaction avec les utilisateurs. Une notation justifiée par une analyse détaillée des besoins, des attentes et des habitudes de ces utilisateurs est plus susceptible d’être acceptée et utilisée. Le concepteur du DSL doit utiliser, autant que possible, les notations et les représentations utilisées par les experts du domaine.

Infrastructure technique : consiste en les méthodes d’analyse de domaine et les approches de conception et d’implémentation de DSL.

• L’utilisation des méthodes d’analyse de domaine permet de systématiser le processus d’analyse de domaine, soit la collecte, l’organisation et la modélisation de la connaissance du domaine (section 2.6.2). Toutefois, il faut choisir la méthode la plus adéquate au développement de DSL, c'est-à-dire une méthode dont les artefacts sont plus facilement exploités dans la conception et l’implémentation du DSL. Nous pensons que les méthodes qui se basent sur l’analyse des points communs et des variations sont plus facilement exploitables dans l’analyse de DSL, et ce en raison du fait que les DSL sont utilisés, généralement, soit comme des interfaces d’accès aux fonctionnalités des actifs fondamentaux de la famille, soit comme des outils de configuration permettant de spécifier les paramètres de variations pour les membres de la famille (Coplien, Hoffman et Weiss, 1998) ;

• L’infrastructure de conception consiste en les approches, les techniques et les patrons de conception utilisés pour la définition des DSL. Cette infrastructure devrait offrir les éléments nécessaires pour définir les aspects principaux du DSL, soit la syntaxe abstraite, la syntaxe concrète et la sémantique.

Voici quelques caractéristiques à considérer lors de la mise en place d’une telle infrastructure :

• Unification : caractérise la possibilité à définir les DSL d’une manière unifiée qui leur permet de coexister sans conflit. Comme cela, les DSL peuvent être gérés et manipulés de manière uniforme, ce qui aide à surmonter le problème de la diversité des langages ; • Simplicité : caractérise la capacité de l’infrastructure à offrir les éléments permettant

d’accomplir les tâches de définition du DSL d’une manière simple et intuitive ;

• Clarté : caractérise la capacité à rendre la compréhension de la définition du DSL plus facile ;

• Capacité fonctionnelle : caractérise la capacité de l’infrastructure à offrir des fonctions qui répondent aux besoins des développeurs de DSL.

L’infrastructure d’implémentation consiste en les approches, les techniques et les patrons utilisés pour l’implémentation des DSL. Cette infrastructure est de loin la plus importante et la plus décisive pour le succès d’un DSL. Elle détermine la capacité de générer des applications à partir des modèles du DSL. Un DSL dont les modèles ne sont pas exécutables est de peu de valeur.

Outils de support: couvrent les outils d’analyse de domaine, les outils de conception et les outils d’implémentation. Les outils d’analyse de domaine supportent, entre autres, la collecte, l’organisation et la structuration de la connaissance du domaine. Les outils de conception supportent principalement la création et le stockage des définitions des DSL (syntaxe abstraite, syntaxe concrète et règles de grammaire). Les outils d’implémentation servent à la création des interfaces d’utilisation du DSL (éditeurs de modélisation, outils de vérification/validation des modèles, etc.) et des outils de génération de code (compilateurs, transformateurs de modèles, librairies, etc.).

Expertise en développement de langage : le développement de DSL est un processus délicat qui demande des connaissances solides en développement de langages. Le manque de connaissances en ce domaine peut affecternégativement la qualité d’un DSL. Idéalement, le développement de DSL devrait se réaliser par une équipe d’ingénierie de domaine qui possède une connaissance dans le domaine et une expertise en développement de langages. Ces deux compétences augmentent considérablement les chances d’aboutir à un DSL utile et pratique pour les utilisateurs (Mernik, Heering et Sloane, 2005).

Soutien des parties prenantes : l’approbation du DSL par les différentes parties prenantes et en particulier les experts de domaines est essentielle pour son adoption. Les développeurs de DSL doivent faire en sorte qu'ils construisent des DSL qui répondent bien aux besoins de leurs utilisateurs.

Processus de développement : Contrairement aux langages généralistes, le développement des DSL se fait toujours d’une manière ad hoc. Afin de mieux maitriser cette activité, il va falloir rassembler l'ensemble des activités et des pratiques et les intégrer dans un processus

cohérent décrivant explicitement les activités à réaliser, les artefacts à produire et les intervenants impliqués.

Documents relatifs