GlossaryScript

Exemples

L’exemple ci-dessous n’a aucun sens. Il est seulement utilisé pour illustrer la syntaxe du langage GlossaryScript.

Note

Le glossaire fourni ci-dessous n’est pas complet. Certaines définitions sont manquantes bien qu’elles soient référencées.

glossary model Medium
    | `Description` de `un` élément
    | dans `un` contexte `uno` et `deux`
    | `un` `test`


//------------------------------------------------------------
//   Glossaire du domaine
//------------------------------------------------------------

package GlossaireDuDomaine

FilDeDiscussion
    | Suite ordonnée de `Messages`
    synonyms: Uno One
    inflections: unite uns
    texts:
        fr: "Fil de discussion"
        en: "Thread"

Reference
    | Mot ou suite de mots faisant référence à
    | un `Concept` déjà défini. Attention à l'`Indentation`
    | qui doit être toujours de `huit` espaces.
    synonyms : a b c

//------------------------------------------------------------
//   Glossaire technique
//------------------------------------------------------------

package GlossaireTechnique

MVC
    | Patron de conception utilisé lors de la définition
    | d'interface homme machine.
    | Voir https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
    | In the context of this project ...

GlossaryScript

Le langage GlossaryScript, tel que défini ci-dessus par l’exemple, permet d’exprimer des glossaires. Plusieurs glossaires peuvent être défini dans un même modèle. Par exemple il est possible de définir un glossaire de domaine bancaire et à coté de cela un glossaire technique définissant les termes de J2EE. Tous les glossaires sont définis dans le même fichier. La notion de paquetage (packages) permet de séparer ce fichier en plusieurs glossaires. Les scripts GlossaryScript ont l’extension .gls.

Concepts

Un glossaire est une collection d’entrées optionnellement organisée en paquetages. Le but d’un glossaire est de définir tous les termes utilisés dans le contexte d’un projet donné.

Un glossaire est composé de :

  • un ensemble d’entrées composé d’un terme principal ainsi que de termes alternatifs (synonymes, abbréviations, etc.),
  • la définition des relations entre ces différents termes,
  • une définition pour chaque entrée, définition pouvant faire référence aux différents termes du glossaire.

Entrées

Une entrée est essentiellement :

  • un terme principal (p.e. Fil dans l’exemple ci-dessous)
  • un ensemble de termes alternatifs (synonymes, abbréviations, etc.)
  • une définition qui correspond bien à l’ensemble des termes,
  • un ensemble optionnel de traductions définissant pour différents langages la représentation concrète de l’entrée.
Fil
    | Séquence de `Messages` en réponse à un `Initial`. Un fil
    | peut être `Bloque` ou `Ouvert` et est identifié par
    | un `Theme` et un ensemble de `Cles`.
    synonyms: Discussion, FilDeDiscussion
    inflections; Fils
    translations
        fr: "fil de discussion"
        en: "thread"
        es: "conversacion"
...

Le terme principal (Fil ici) est celui sensé être référencé :

  • dans le reste du glossaire,
  • et dans les textes techniques lorsque ceux-ci sont réécrits avec le glossaire.

Note

Un même mot peut parfois avoir plusieurs acceptions (plusieurs significations). Si c’est le cas numéroter les termes principaux pour chaque acception. Par exemple Fil1 et Fil2 peuvent correspondre à deux acceptions du mot Fil. Les différentes occurrences du mot Fil dans les différents textes devront bien évidemment être remplacées par Fil1 ou Fil2 .

Synonymes

Plusieurs synonymes peuvent être associés à une entrée :

Fil
    | Définition
    | ...
    synonyms: Discussion, FilDeDiscussion

Les synonymes sont des termes qui ont la même signification que le terme principal. Par exemple dans l’exemple ci-dessus Discussion et Fil ont la même signification, mais Fil est le terme principal. Cela signifie que toutes les occurrences de Discussion dans les textes devraient être remplacées par Fil.

Inflexions

Les inflexions sont des dérivations du terme principal, tel que pluriels, formes avec des genres différents, formes verbales vs. nominales, conjugaisons, etc.

Fil
    | Définition
    | ...
    inflections: Fils

Au contraire des synonymes les inflexions sont des variations “normales” du terme principal et ne sont pas supposées être remplacé par celui-ci.

Traductions

Alors qu’une entrée est définie par son terme principal, cette entrée peut posséder plusieurs traductions. Chaque traduction est définie par :

  • la langue utilisée pour la traduction (encodée en iso-639),
  • la chaîne de caractères correspondant à la traduction.
Fil
    translations
        fr: "fil de discussion"
        en: "thread"
        es: "conversacion"

Paquetages

Un ensemble d’entrées peut être scindé en plusieurs paquetages en utilisant le mot clé package suivi du nom de paquetage. Deux possibilités sont offertes par ModelScript : (1) utiliser le mot clé de manière globale suivi d’un ensemble d’entrées, ou (2) d’indiquer pour chaque entrée le paquetage à laquelle elle appartient.

Paquetages globaux

Toutes les entrées entre un mot clé package et le suivant sont rangées dans ce paquetage. De plus toutes les entrées avant le premier mot clé package font partie du paquetage unamed.

Note

Pour éviter une indentation supplémentaire les entrées et les paquetages sont définis au même niveau.

glossary model CyberForum


//------------------------------------------------------------
//   Glossaire du domaine
//------------------------------------------------------------

package GlossaireDuDomaine

Forum
    ...
Fil
    ...
...

//------------------------------------------------------------
//   Glossaire technique
//------------------------------------------------------------

package GlossaireTechnique

MVC
    | Patron de conception utilisé lors de la définition
    | d'interface homme machine.

...

Paquetages en ligne

Une entrée peut être à n’importe quel moment associée à un paquetage particulier, existant ou non. Il suffit d’utiliser pour cela le mot clé package à l’intérieur de l’entrée ; voir par exemple Numbers ci-dessous :

...
package Letters              // Toplevel package

Alpha

One
    package: Numbers         // Inline package

Beta

Règles

Les règles suivantes doivent être appliquées dans l’élaboration des glossaires :

  • Dans les définitions, les références à d’autres termes du glossaire doivent être entre backquotes (p.e. `Backquote`). Ces termes doivent être définis.
  • Dans les textes les mots sans `Backquote` font référence aux mots du dictionnaire. Les deux peuvent cohéxister.
  • Les définitions doivent normallement commencer par une forme nominale, tout comme dans un dictionnaire. La définition "Singe : Animal ... est adaptée. Le premier terme (“Animal” ici) peut faire partie du glossaire entre backquotes ou être un terme d’usage courant (sans backquotes).
  • Toutes les définitions doivent correspondre au contexte particulier du projet. Omettre les définitions générales. Par exemple “Personne : Etre humain” n’apporte rien si le terme “Personne” n’a pas de signification différente de “personne” d’usage courant. Mettre “Personne” dans le glossaire s’il s’agit d’un terme spécifique au projet.

Réécriture de textes

Au fur et à mesure qu’un glossaire est défini, il faut réécrire les textes utilisant “informellement” le glossaire. En pratique pour chaque terme apparaissant dans un texte il faut déterminer s’il s’agit :

  • d’un terme d’usage général : aucune action n’est nécessaire.
  • d’un terme du domaine mais non défini : l’ajouter au glossaire.
  • d’un terme déjà défini comme terme principal dans le glossaire. il faut alors créer une référence (entre backquotes) vers ce terme.
  • d’un synonyme déjà défini : il faut le remplacer par le terme principal entre .

Ce travail de réécriture / définition du glossaire est bien évidemment itératif. L’objectif final est d’obtenir des textes les moins ambigüs et plus cohérents possible avec le glossaire.

Réécriture des identificateurs

La plupart des identificateurs (UML, Class, Java, SQL, etc.) devraient faire référence à un ou plusieurs termes d’un glossaire du domaine et/ou technique. C’est le cas par exemple pour l’identificateur suivant :

getCartLayout

Le terme Cart provient sans doute du glossaire du domaine alors que Layout peut provenir d’un domaine technique correpondant à un framework utilisé.

Dans certains cas des abbréviations sont utilisées pour obtenir des identificateurs plus courts. Celles-ci doivent être ajoutées dans le glossaire technique (p.e. DAO) ou dans le glossaire de domaine (num pour numéro). Le glossaire doit assurer l’usage des termes de manière homogéne et consistante dans tous les modèles et dans tout le code.

Un identificateur qui ne fait référence ni au domaine ni aux aspects techniques est sujet à suspicion.

Dans tous les cas il est fondamental, lorsque les glossaires changent ou lorsque de nouveaux identificateurs sont définis, de s’assurer de l’alignement entre glossaire et les autres artefacts.

Dépendances

Le graphe ci-dessous montrent les dépendances entre langages et en particulier avec le glossaire. Comme on peut le voir le glossaire dépend de tous les éléments issus de la capture des besoins. Le glossaire est en fait extrait des différents documents existants. Dans la direction opposée tous les modèles dépendent du glossaire dans la mesure où tous ces modèles peuvent avoir de la documentation et sont certainement basés sur des identificateurs.

../../_images/language-graph-gls.png