IDM

Ingénierie Des Modèles

Théo Le Calvar

theo.le-calvar@imt-atlantique.fr

Mots clefs du cours

  • UML
  • Modèle / Métamodèle
  • Génération de code
  • Transformation de modèle
  • EMF
  • Ecore

Ressources

Organisation du cours

  • Concepts de l'IMD
  • Prise en main d'outils de l'IMD
    • EMF, Ecore, Génération de code

Contexte

Les systèmes informatiques occupent une position centrale dans nos vies.

En France en 2019, 77% des personnes de plus de 12 ans
possèdent un smartphone.
1^1

[1] - Baromètre du numérique 2019

À des endroits qu'on oublie :

  • Box internet, télévision, player TV, enceinte connectée
  • Prise connectée, ampoule connectée, compteur électrique
  • Voiture, avion, vélo électrique
  • Fusées, satellites

Une quantité importante de code

  • Noyau linux (5.15.10)
  • Firefox (latest)
  • Chromium (latest)

Une quantité importante de code

  • Noyau linux (5.15.10) ~16M loc
  • Firefox (latest) ~10M loc
  • Chromium (latest) ~12M loc

Comparaison de tailles de différents projets

Il faut des outils et des méthodes pour concevoir et maintenir ces logiciels

Il n'est pas possible de gérer de tels projets sans une conception solide.

UML

un langage de modélisation

Unified Modeling Language

UML est un langage de modélisation graphique à
base de pictogrammes conçu comme une méthode
normalisée de visualisation dans les domaines du
développement logiciel et en conception orientée objet.

Wikipedia

En pratique UML c'est :

  • un langage de conception avec différents diagrammes :
    • diagramme de classes
    • diagramme de séquences
    • diagramme d'objets
    • timming diagramme
    • cas d'utilisation
    • ...

Diagramme de classes

S'intéresse aux composants d'un système.
Permet de représenter les classes et interfaces avec leurs attributs, méthodes et relations.

Une personne est caractérisée par un nom, un prénom et une date de naissance.

Indiquez les accesseurs sur le diagramme.

Un agenda appartient à une personne contient les informations d'autres personnes. Pour chaque personne on sauvegarde dans l'agenda sont nom, prenom, adresse et numéro de téléphone.

Modélisation d'un cabinet médical :

  • personnel : personnel soignant (médecin, spécialiste), secrétaire, maintenance
  • patient : nom, prénom, contact
  • rendez vous : date, un personel soignant et un ou plusieurs patients
  • prescriptions : délivré lors d'un rendez vous, liste de médicaments avec une fréquence et quantité

Décrire le système modélisé

Le chien et le chat sont des animaux.
Il existe plusieurs races de chat comme le thaï, le chartreux ou le maine coon.

Décrire le système modélisé

Permet la réprésentation d'expression mathématiques simples avec variables.

  • La constante est une expression et sauvegarde une valeur entière.
  • La variable est une expression et possède un nom pour l'identifier.
  • Une expression unaire est une expression et possède un nom (operator) ainsi qu'une référence vers l'expression sur laquelle effectuer l'opération (right).
  • Une expression bninaire est une expression unaire avec un argument suplémentaire (left).

Diagramme de séquences

Met en évidence les interactions entre différents composants d'un système.
Il permet de visualiser les échanges de messages entre les différents objets.

Déroulement d'un échange TCP entre un client et un serveur

Ces diagrammes UML forment une spécification du système.

À partir de cette spécification il est aisé d'implémenter le système.

En somme, UML est langage de modélisation permettant de décrire un système avant de l'implémenter.

Avec UML les diagrammes sont des artéfacts privilégiés dans le cycle de vie de l'application. Ils gardent une placent centrale tout au long du cycle de vie car ils servent de référence.

L'Ingénierie Dirigée par les Modèles

Le modèle de domaine au coeur de la production

Qu'est ce qu'un modèle ?

Un modèle est une abstraction / simplification de la réalité.

Un modèle doit permettre de :

  • comprendre le fonctionnement du système
  • communiquer facilement
  • détecter les erreurs tôt
  • comparer facilement des alternatives

Différentes modélisation d'un clavier

L'objet physique

Modélisation de la disposition des touches

Le schema du PCB

Le schema électrique

Un bon modèle doit être :
  • abstrait : se concentre sur les aspets importants
  • compréhensible : pour permettre un échange simple
  • précis : il doit représenter correctement le système réel
  • prédictif : doit pouvoir se substituer au modèle réel
  • peu cher : moins couteux que le système réel

Le modèle d'un système informatique

Contrairement à beaucoup d'autres domaines, le modèle d'un système informatique et son implémentation utilisent la même sphère technique.

Le modèle d'un système informatique

  • Le modèle peut donc parfaitement refléter le système final
  • Il est possible de transformer le modèle jusqu'à avoir le système final

Il existe de nombreux modèles pour des concepts informatiques

  • Dataflow diagrams
  • Réseau de Petri
  • Diagramme d'état
  • UML
  • Feature diagrams
  • ...
Un réseau de Petri

Exemples interactifs en ligne

Feature diagram

Éditeur en ligne

L'idée de l'IDM :

Placer la connaissance métier au coeur du cycle de conception car ce sont là que sont exprimés le plus facilement les besoins spécifique au système.

Il faut donc des langages adaptés pour représenter ces connaissances métier.

Comment se structurent ces langages ?

Les deux parties d'un langage

  • syntaxe : comment le langage s'écrit ?
  • sémantique : que veut dire le langage ?
Cas du diagramme de classes - Syntaxe

  • Les rectangles représentent des classes,
  • Les liens entre les classes des relations,
  • Les attributs / méthodes sont notés dans les rectangles,
  • ...
Cas du diagramme de classes - Sémantique

  • Les classes représentent des structures de données
  • Les attributs / méthodes représentent des champs et fonctions dans ces structures de données
Détails de la syntaxe d'un langage
  • La syntaxe d'un langage est composée de deux parties :

    • la syntaxe concrète : la partie visible par l'utilisateur
    • la syntaxe abstraite : la représentation en mémoire pour l'ordinateur
  • Il peut y avoir plusieurs syntaxes concrètes pour une syntaxe abstraite (et vice versa)

Deux syntaxes concrètes pour un même langage

Diagramme de classes

class Client {
    nom: String
    addresse: String
    codePostal: String
}

class Commande {
    total: float
}

Commande "1" - "*" Client

Code PlantUML correspondant

Plusieurs syntaxes abstraites pour une même syntaxe concrète
#include <stdio.h>

int main(int argc, char* argv[]) {
    printf("Hello world!\n");
    return 0;
}

Exemple de code C

De nombreux compilateurs C :

  • GCC
  • CLang
  • ICC
  • MSVC
  • CompCert C

Chacun avec sa syntaxe abstraite

Les langages de méta-modélisation

Faciliter la conception de langages de modélisation

La méta-modélisation c'est la spécification d'un langage de modélisation en utilisant un langage de modélisation. Ce dernier est aussi appelé méta-langage.

Un méta-langage est un langage permettant la spécification de langages.

  • Un méta-langage est un langage.
  • Et ce peu importe le niveau de méta. Un méta-méta-méta-langage est un langage.

Le méta-modèle

Un modèle qui représente la partie syntaxe d'un langage.

Langages de méta-modélisation

Ils sont utilisés pour spécifier la syntaxe d'autres langages de modélisation.

On parle de méta-méta-modèle.

Exemples de méta-méta-modèles :

  • MOF (OMG)
  • Ecore (Eclipse Foundation)

Visualisation de la hiérarchie

Les différents étages de méta formant un hiérarchie

Cette structure en couche se retrouve dans d'autres domaines

MOF - Meta Object Facility

Langage de méta-modélisation de l'OMG

Il sert de langage de pour plusieurs des langages standardisés par l'OMG comme :

  • UML, SysML, CWM

MOF est similaire au diagramme de classe d'UML dont il reprend la notation graphique.

MOF est assez expressif pour se décrire lui même.

EMF - Eclipse Modeling Framework

Framework de modélisation porté par la fondation Eclipse et inspiré de MOF.

C'est devenu l'implémentation de référence d'EMOF (Essential MOF)

Le méta-méta-langage : Ecore

Ecore (simplified) méta-modèle

Suite d'outils dans l'écosystème EMF

EMF permet l'interopérabilité entre de nombreux outils :

  • Outils de Modélisation : EcoreTools, Papyrus, UML
  • Transformation : ATL, Epsilon, ...
  • Conception de langages :
    • Textuel : Xtext
    • Graphique : Sirius, GMF, ...
  • Stockage : CDO, EMFStore, ...

Principes de l'IDM

  • On peut modéliser toutes les activités liées au développement
  • La méta-modélisation permet de créer des langages spécialisés
  • On spécifie les méta-modèles avec des langages de méta-modélisation
  • On peut modéliser le processus de développement logiciel comme une suite de transformations appliqués aux modèles

conclusion

  • Les méta-modèles définissent des langages spécifiques
  • On peut rafiner ces langages par la transformation de modèles
  • Il existe des outils pour concevoir facilement ces méta-modèles

loc = line of code

On a l'objet physique qui est assez complexe avec plusieurs aspets à considérer : - la disposition des touches sur le clavier - le design du PCB - le schéma électrique du clavier et les composants utilisés

OMG = Object Management Group -> organisme de spécification de nombreux standards dont UML

--- ### La transformation de modèles -

--- <iframe src="https://animuml.kher.nl/AnimUML.html" width="100%" height="95%"></iframe>