Lors de la dernière PDC 2008 à Los Angeles, Microsoft a dévoilé les dernières avancées sur Oslo, sa plateforme de développement guidé par les modèles.

Mais qu’est-ce donc finalement, Oslo ?
Comment l’utilise-t-on ?
À quels besoins répond-il ?

3 questions auxquelles je tenterai de répondre en 3 épisodes, dont voici le premier.

Une plateforme de modélisation

Oslo est présenté par Microsoft comme une nouvelle plateforme de modélisation. Cette plateforme se compose d’un ensemble d’outils :

  • Intellipad, un éditeur de textes,
  • Quadrant, un outil de design graphique,
  • et un référentiel de stockage de modèles, basé sur SQL Server.

Un compilateur et un certain nombre d’assemblies .NET sont fournis avec la plateforme.

Oslo met à disposition plusieurs langages permettant de décrire les divers éléments d’un DSL.

  • MSchema permet de définir des structures de données. L’ensemble des structures de données définies forme le modèle sémantique d’un domaine.
  • MGraph est le langage utilisé pour décrire les instances des structures de données MSchema.
  • MGrammar permet, quant à lui, de définir la syntaxe d’un DSL. Il est conceptuellement équivalent à des langages comme Lex et Yacc.

Structures de données avec MSchema

Voici un exemple de structure de donnée définie grâce au langage MSchema.

type Personne {     Id : Integer32 = AutoNumber();     Nom : Text where value.Count <= 100;     Prenom : Text#50;      Age : Integer32?; } where identity Id;

Règles syntaxiques avec MGrammar

Voici un exemple de règles syntaxiques définies grâce au langage MGrammar.

interleave Ignore = '\r' | '\n' | ' ' | '\t'; token Lettre = ('A'..'Z' | 'a'..'z' | 'ç'); token Chiffre = '0'..'9'; token Identifier = (Lettre|Chiffre|'-')+; syntax Nom = n:Identifier => n; syntax Prenom = p:Identifier => p; syntax Personne = p:Prenom n:Nom v:Vehicules        => Personne         {             Prenom {p},             Nom {n},             v         };

Le code, qui respecte les règles MGrammar du DSL, est contenu dans un script. MGrammar joue un rôle central. Il décrit d’une part la syntaxe, et d’autre part les règles de transformation d’un script en une représentation MGraph. Il utilise pour cela les structures de données MSchema. On parle de traduction guidée par la syntaxe.

Instances de structures de données avec MGraph

Voici un exemple de représentation MGraph générée à partir du contenu d’un script.

Personnes{   Personne{     Prenom{         "Hugues"     },     Nom{         "Martin"     },     Voitures{       Vehicule{         Type{           "voiture"         },         Marque{           "Renault"         },         Modele{           "Scenic"         },         Couleur{           "grenat"         },         Annee{           "2002"         }       }     }   } }

La représentation MGraph générée est équivalente à un arbre syntaxique correspondant à la traduction du script. MGraph n’est donc pas un langage directement manipulé par l’analyste, ni par le développeur.

Et tout ensemble

Avec Oslo, un domaine est définit via un modèle sémantique, d’une part, et un DSL, d’autre part. Le domaine est au centre de la démarche souhaitée par Microsoft. L’idée est de permettre de décrire certains problèmes avec une granularité spécifique, et donc adaptée.

Et UML dans tout ça ?

En ce sens, Oslo se veut une alternative à UML. En effet, le langage UML est parfois excessivement générique, et s’appuie sur des concepts finalement trop élémentaires pour modéliser un problème complexe (classes, attributs, etc.).

Références

Billets sur le même thème

Oslo

Les DSL