Académique Documents
Professionnel Documents
Culture Documents
1287779617xb Model Engineering
1287779617xb Model Engineering
1287779617xb Model Engineering
Modèles
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Plan
Lundi 18 Octobre : Un curieux besoin de modèles
Etude d’une application Java
Etude d’une application WS
Introduction à UML
Introduction à l’ingénierie des modèles
Lundi 25 Octobre : Des modèles productifs
UML pour la génération de documentation
UML pour la génération d’application
Lundi 01 Novembre : Opération sur les modèles
Utilisation du langage J sur UML
Lundi 08 Novembre : Modèles et méta-modèle
Architecture à 4 niveaux
MOF, JMI
Lundi 15 Novembre : l’approche MDA
PIM, PSM, Code
Modèle de transformation de modèles
Interopérabilité des modèles
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Un curieux besoin de
modèles
Etude d’une application Java
Etude d’une application WS
Introduction à UML
Introduction à l’ingénierie des modèles
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 1
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 1
Objectif
Vous devez fournir un document
expliquant l’application afin qu’une autre
équipe puisse faire évoluer cette
application en y ajoutant une nouvelle
fonctionnalité!
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 1
Scénario d’utilisation
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 1
IHM BD
Personne
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 1
Classes de l’application
Repertoire
Personne
Adresse
UIRepertoire
UIPersonne ?
UIActionListener
MyAssistant
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 1
IHM BD
UIPersonne Adresses
UIRepertoire Personne
Repertoire
UIActionListener
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 1
Méthode Main
public UIRepertoire() {
super("Mon Repertoire");
menuListener = new UIMenuActionListener(this);
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
?
}
public void windowClosed(WindowEvent e) {
System.exit(0);
}
};
addWindowListener(l);
init();
}
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 1
IHM BD
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 2
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 2
Objectif
Vous devez décrire précisement mais
simplement l’architecture de cette
application
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 2
Feuille WSDL
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas 2
Utilisation de Spy
Demo
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas
Synthèse
Le code n’est pas un bon média de
capitalisation
L’abstraction nécessite
Une bonne connaissance technique
Un format de représentation commun
=> Modéliser
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Trop de Méthodes
Entre 89 et 94 : le nombre de méthodes
orientées objet est passé de 10 à plus de 50
Toutes les méthodes avaient pourtant
d’énormes points communs (objets, méthode,
paramètres, …)
Au milieu des années 90, G. Booch, I. Jacobson
et J. Rumbaugh ont chacun commencé à
adopter les idées des autres. Les 3 auteurs ont
souhaité créer un langage de modélisation unifié
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Historique
Définition en cours par une UML 2.0
commission de révision
Soumission à l’OMG UML 1.x 1999-2002
Booch’93 OMT-2
Aujourd’hui
UML est le langage de modélisation orienté objet le plus connu et le
plus utilisé au monde
UML s’applique à plusieurs domaines
OO, RT, Deployment, Requirement, …
UML n’est pas une méthode
RUP
Peut d’utilisateurs connaissent le standard, ils ont une vision outillée
d’UML (Vision Utilisateur)
5% forte compréhension, 45% faible compréhension, 50% aucune
compréhension
UML est fortement critiqué car pas assez formel
Le marché UML est important et s’accroît
IBM, Sun, Borland, Microsoft
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Diagramme de Classes
Un diagramme de classes est un graphe de
classes connectés par des relations.
Un diagramme de classes est une vue
graphique de la structure statique d’un système.
Company
Person
members
Company Employee
0..1 *
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Classes
Une classe représente la structure commune
d’un ensemble d’objets.
Une classe est représentée par un rectangle qui
contient une chaîne de caractères
correspondant au nom de la classe
Ce rectangle peut être séparé en trois parties (nom,
attributs, opérations).
Le nom de la classe doit commencer par un caractère
alphabétique et ne pas contenir le caractère ‘::’
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Classes
Employee Person
+name : string
+firstName : string
#id : string
nbPerson : integer
/completeName : string
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Attributs
Une classe peut contenir des attributs
La syntaxe d’un attribut est :
visibilité nom : type
La visibilité est:
‘+’ pour public
‘#’ pour protected
‘-’ pour private
UML définit son propre ensemble de types
Integer, real, string, …
Un attribut peut être un attribut de classe, il est alors souligné.
Un attribut peut être dérivé, il est alors préfixé par le caractère ‘/’
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Attributs
Person
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Opérations
Une opération est un service qu’une
instance de la classe peut exécuter
La syntaxe d’une opération est:
visibility name(parameter):return
La syntaxe des paramètres est:
kind name : type
Le kind peut être:
in, out, inout
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Opérations
Company
Employee
+stopWork():boolean
+startWork(In work:string):boolean
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Héritage
L’héritage est une relation entre un élément plus
général et un élément plus spécifique. L’héritage
existe entre des classes, des packages, …
L’héritage multiple est possible en UML
S hape
Rectangle Circle
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Associations
Les associations binaires connectent deux
éléments entre eux
Une association binaire est composée de deux
associations ends.
Une association end est paramétrée par:
Un nom (le role joué par l’entité connectée)
Une multiplicity (0, 1, *, 1..*, …)
Un genre d’aggregation (composite, aggregation,
none)
De plusieurs propriétés: isNavigable, isChangeable
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Associations
students attendedCourses
S tudent Course
* attends *
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Associations
Composition
has
S chool Department
1 1..*
Aggrégation 1..*
member
S tudent
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Associations
Les associations N-aire connectent
plusieurs éléments entre eux.
Les associations N-aire sont très peu
utilisées.
Class
Class1
Class2
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Classes-Associations
Une classe-association est une association qui
est aussi une classe.
Les classes-associations sont utilisées lorsque
les associations doivent porter des informations
Il est toujours possible de se passer des
classes-associations.
Company Employee
* 1..*
Job
salary : undefined
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Interfaces
Une interface est la spécification externe (en
terme d’opérations) d’une classe.
Une interface peut donc contenir des opérations
Une classe réalise une interface si elle est
capable d’exécuter toutes les opérations de
l’interface
On utilisera une relation de dépendance pour
exprimer le fait qu’une classe est cliente d’une
interface.
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Interfaces
Element
Parser
+addChild(In child:Element)
Engine
+getChildren(): [*] Element
Parser
Element
Engine
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Contraintes et Notes
Il est possible de contraindre ou d’annoter
n’importe quel élément du modèle
Les contraintes et les notes sont bien
souvent écrites en langage naturel
Le langage OCL est cependant préconiser
pour décrire des contraintes
self.age<60
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Contraintes et Notes
<<comment>>
Une association n'est pas
une company
Company Employee
* 1..*
ageLimit
{self.age<60}
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Packages
Un package permet de grouper des
éléments
Un package sert d’espace de désignation
Un package peut inclure d’autres package
Un package peut importer d’autres
package
L’héritage entre package est possible
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Packages
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Ing. Modele
A vous de jouer
Définir le diagramme
de classe d’un tournoi
de foot (type
mondial)
Définir le diagramme
de classe de
l’application
MyAssitant
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Ing. Modele
Reverse Engineering
Le reverse engineering consiste à créer
automatiquement un diagramme de classe
à partir de n’importe quelle application
Nous avons réalisé un reverse
engineering sur l’application MyAssistant
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Ing. Modele
Reverse de MyAssistant
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Ing. Modele
A vous de jouer
Comment marche un
reverse engineering?
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Ing. Modele
A vous de jouer
Pourquoi n’y a-t-il pas
de lien entre répertoire
et personne?
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Ing. Modele
Diagramme d’implémentation vs
diagramme conceptuel
Le diagramme obtenu après reverse
engineering est une copie graphique du
code : c’est un diagramme
d’implémentation
Le diagramme réalisé en analysant
l’application est un diagramme conceptuel
(ex: le diagramme de MyAssistant réalisé
précédemment)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Ing. Modele
A vous de jouer
Est-il possible de passer
d’un diagramme
conceptuel à un
diagramme
d’implémentation?
Et l’inverse ?
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Ing. Modele
Comment Modéliser ?
The choice of what models to create has profound
influence on how a problem is attacked and how a
solution is shaped
Every model may be expressed at different levels of
precision
The best models are connected to reality
No single model is sufficient. Every non trivial system is
best approached through a small set of nearly
independant models
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Des modèles
productifs
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
L’Electricien et l’Informaticien
Un problème, des besoins
Un composant virtuel
(des entrées des sorties)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Des Modèles plutôt que du Code
Un modèle est la simplification/abstraction de la
réalité
Nous construisons donc des modèles afin de
mieux comprendre les systèmes que nous
développons
Nous modélisons des systèmes complexes
parce que nous somme incapables de les
comprendre dans leur totalité
Le code ne permet pas de simplifier/abstraire la
réalité
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Un problème - Un diagramme
Diagramme de classes / Class Diagram UML 1.x
Classe, Opération, Attribut, Association, …
Diagramme d’objet / Object Diagram
Diagramme de cas d’utilisation / Use Case Diagram
Cas d’utilisation, Acteur, ..
Diagramme de séquence / Sequence Diagram
Instance, message, relation
Diagramme de collaboration / Collaboration Diagram
Diagramme d’état / Statechart Diagram
Diagramme d’activité / Activity Diagram
Diagramme de composant / Component Diagram
Diagramme de déploiement / Deployment Diagram
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme de Cas d’Utilisation
Un diagramme de cas d’utilisation décrit des
acteurs et leurs relations avec des cas
d’utilisation
Les diagrammes de cas d’utilisation décrivent
les fonctionnalités d’un système
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Acteurs
Un acteur représente un utilisateur externe
du système
Un acteur est en relation avec un ou
plusieurs cas d’utilisation
Il est possible de définir des relations
d’héritage entre Acteurs
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas d’Utilisation
Un cas d’utilisation représente une fonctionnalité
du système
Il est possible de définir des relations de
dépendance entre cas d’utilisation
Il est possible de définir des relations d’inclusion
entre cas d’utilisation
Il est possible de définir des relations d’héritage
entre cas d’utilisation
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme de Cas d’Utilisation
M agisterTest1
Bill customer
Ship order
CommercialCustomer
Ship partial order
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cas d’Utilisation -Fin
Les diagrammes de cas d’utilisation sont
souvent employés
Ils permettent de décrire le système de façon très
abstraite
Ils offrent une vue fonctionnelle (par opposition à une
vue Orienté Objet)
Ils sont très simples …
La difficulté consiste à passer des cas
d’utilisation aux classes
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
A vous de jouer
Définir le diagramme
de cas d’utilisation de
yahoo!
Définir le diagramme
de cas d’utilisation de
Air Senegal
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme de Séquence
Un diagramme de séquence représente une
interaction entre plusieurs éléments
Les éléments interagissent par envoi de
messages
Les éléments interagissant sont des instances
jouant des rôles.
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Instances
Un diagramme de séquence met en œuvre des
instances
Instance de classe, Instance d’acteur
Graphiquement une instance se distingue de son type
car elle est soulignée
Il est possible de définir des instances sans préciser leur
classe
La durée de vie des instances est définie sur l’axe
vertical du diagramme
Graphiquement l’activité d’une instance se voit grâce à
un rectangle sur l’axe du temps
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Messages
Creation: Une instance peut créer une autre instance
grâce à un message de création
Destruction: Une instance peut détruire une autre
instance grâce à un message de destruction
Message de Séquence: Une instance peut envoyer un
message de séquence à une autre instance pour
demander l’exécution d’une opération
Message Asynchrone: Une instance peut envoyer un
message asynchrone à une autre instance (événement)
Branche de messages: Il est possible de spécifier des
conditions sur l’envoi de message (if then else)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme de Séquence
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme de Séquence - Fin
Les diagrammes de séquence sont de plus en
plus utilisé
Ils permettent de décrire la dynamique d’un système
Ils permettent de faire le lien entre les diagrammes de
cas d’utilisation et les diagrammes de classes
La sémantique de ces diagrammes est encore
un peu flou
Les techniques de génération de code n’exploitent
pas encore très pleinement ces diagrammes
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
A vous de jouer
Définir le diagramme
de séquence d’un
examen scolaire
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme d’Objets
Un diagramme d’objet représente la vue
statique d’un ensemble d’instance de
classes
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme de Collaboration
Un diagramme de collaboration représente la
vue statique et la vue dynamique d’un ensemble
d’élément
Une collaboration définit des rôles (et non pas
des classes!)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme d’Etat
Un diagramme d’état représente la vue
dynamique d’un ensemble d’éléments
sous forme d’état
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme d’Activité
Un diagramme d’activité représente la vue
dynamique d’un ensemble d’éléments sous de
flux d’exécution
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme de composant
Un diagramme de composant représente
les composants logiciels d’un système
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Diagramme de déploiement
Un diagramme de déploiement représente la
façon dont déployer les différentes éléments
d’un système
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le Besoin d’Organisation
Un modèle UML représente un système et son
environnement
Les diagrammes UML offrent différentes vues d’un
même modèle
Certains diagrammes sont complémentaires, d’autres
non
Certains diagrammes sont très abstrait, d’autres non
Il est nécessaire de définir une organisation entre les
diagrammes (Une méthode)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Exemple: Mini Bibliothèque
Le système doit permettre aux abonnés
d’emprunter des livres.
L’inscription est annuelle.
Une personne non abonnée ne peut pas
emprunter de livres.
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Use Case Diagram
M agisterTest1
S'Abonner
Personne
Vérifier les empruns
<<include>> Authentifier
Se désabonner
Abonné
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Sequence Diagram
System:
Instance1:Abonné
chercher le livre
authentification
emprunter
vérifier les empruns
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Class Diagram
* exemplaires
Exemplaire
*
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Conception = Comment ?
On considère souvent que la conception
doit être un raffinement de l’analyse.
L’idée est que l’on doit facilement tracer
les liens entre classes d’analyse et
classes de conception
Les classes de conception serviront à la
génération du code
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Objecteering UML Modeler
Atelier UML
Tout les diagrammes UML1.4
Module de production
Génération Java, C++, C#
Génération de Documentation
Génération SQL
Génération IDL, EJB,
…
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Modèle vs Diagramme
M agisterTest1
S'Abonner
Personne
Vérifier les empruns
<<include>> Authentifier
Se désabonner
Abonné
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Créer un nouveau projet
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Editeur de modèles
Vue hierarchique
de tous les
éléments du
modèle.
Vue graphique
d’un diagramme.
Console.
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Module de Production
JavaModule
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Objecteering Java
Configuration des
module de production
Utilisation du module
Java
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Opération sur les
modèles
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Outils Objecteering
UML Modeler
Edition de modèle UML
Utilisation de module Objecteering
UML Profil Builder
Création de module Objecteering
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Codage des production
Règles d'implémentation
(langage J)
Expert Informaticien
Transformation
de modèle - Profile UML
Expert du domaine Modélisation du problème Modélisation de l'implémentation
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Profile Builder
PAR LES MENUS :
Programmes\Objecteering\Objecteering UML
Profile Builder
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Création d’un projet de profil
1) cliquer dans l’icône
« new »
ou l’item « new »
Du menu File
3’) ou par
navigation
2) Renseigner le
nom du projet
3) saisir sa
localisation
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Fenêtre Principale
Barre de menus
Boîte de propriétés
Console
Barre de status
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Création d’un profil
3) cliquer sur le bouton
« Créer un profil fils » 1) Expanser
le profil « default »
2) Expanser
le profil « external »
4) Donner le nom du
nouveau profile (ex:
Scan)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Référencement au concept UML
Le code J s’attache sur les concepts UML!
1) Sélectionner le nouveau profil
3) Donner le nom
de la nouvelle opération
(ex: AfficherStatus)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Création d’un opération J (2)
1) Double-cliquer sur l ’opération
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Saisie d’une opération J (1)
1) Sélectionner l'opération
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Création d’un module
1) Sélectionner le projet
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Caractéristiques d’un module
3) Saisir la version
4) Éventuellement un commentaire
de la release
5) Éventuellement la compatibilité
Avec une autre version
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Lien avec les profils (1)
1) Sélectionner le module
2) Cliquer sur l ’icône
« Référencer le profile UML »
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Créer une commande
1) Sélectionner le module
2) Cliquer sur
l'icône « Créer
une Commande »
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Tester la commande
1) Sélectionner une classe
puis faire « clic droit »
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Pourquoi packager un module ?
OBJECTIF :
PERMETTRE L’INSTALLATION DU MODULE SUR LES
BASES DU SITE
AVOIR LE MODULE SOUS FORMAT FICHIER (.prof) POUR
L’ECHANGER
LE PACKAGING D’UN MODULE PEUT CONTENIR :
RESSOURCES : ICÔNES DE STÉRÉOTYPES, DE PRODUITS
DE GÉNÉRATION, …
FICHIERS : TRADUCTION DES MESSAGES, DTD XMI, …
BINAIRES ET SCRIPTS : EXÉCUTABLES DÉCLENCHÉS
DEPUIS DES MÉTHODES J POUR TOUS TYPES DE
TRAITEMENTS : parsers, wizards, …
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Packager (1)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Packager (2)
Lieu de stockage physique
du module packagé
Release du module
Ressources liées aux modules
Module packagé
Répertoire des
Ressources du
module
Un répertoire pour
Chaque version
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Livraison d’un module
Double clic sur le fichier .prof
Résultat dans fenêtre DOS
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Selection d’un module
1) Lancer Objecteering
5) Valider
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le langage J
LE LANGAGE J EST LE LANGAGE SUPPORT
DE OBJECTEERING / UML PROFILE
BUILDER.
IL PERMET :
DE PILOTER ET DE PARAMÉTRER L'OUTIL
OBJECTEERING,
DE PARTICULARISER LES GÉNÉRATEURS
EXISTANTS,
D'ÉCRIRE DE NOUVEAUX GÉNÉRATEURS.
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les classes de J
Classes « mères » (Object, MetaClass, …)
Classes de base (int, float, boolean, String,
enumerate)
Classes entrée/sortie (stream, outStream,
inStream)
Classes des concepts UML (Class, Attribute,
Operation, ...)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les classes « Mères »
La classe « Object »
Object
Toutes les classes du langage J héritent de la classe « Object »
Elle définit deux opérateurs : == (égalité) et != (différent)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Classes de Base
« int »
GÈRE LES ENTIERS.
LES OPÉRATEURS :
< « inférieur »
<= « inférieur ou égal »
> « supérieur »
>= « supérieur ou égal »
+ « addition »
- « soustraction »
* « multiplication »
/ « division »
% « modulo » (reste de le division entière)
LES MÉTHODES :
float toFloat() conversion en « float »
String toString() conversion en « String »
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Classes de Base
« String »
GÈRE LES CHAÎNES DE CARACTÈRES.
LES OPÉRATEURS :
< « inférieur »
<= « inférieur ou égal »
> « supérieur »
>= « supérieur ou égal »
+ « concaténation »
LES MÉTHODES :
int size() : renvoie la taille de la chaîne
substitute (in String ToSubstitute, in String NewValue) : remplace toutes les occurrences
de « ToSubstitute » par « NewValue »
toUpper() : conversion en majuscule
toLower() : conversion en minuscule
int findFirst (in String Pattern, in int StartIndex) : renvoie la position de la première
occurrence de « Pattern » à partir de « StartIndex » ou -1 si « Pattern » n’est pas trouvé
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les Classes« entrée/sortie » (1)
« stream » (stream, outStream, inStream) : utilisée pour gérer les
entrée/sorties.
trois instances prédéfinies de outStream pour les sorties standards :
stdOut, stdErr, stdFile.
La Classe OutStream
représente le flux de sortie
boolean open(in String FileName) : ouvre le fichier « FileName » en
écriture
write (in basic_class p1, in basic_class p2, ...) : écrit dans le fichier
la liste des valeurs passées en paramètres
close () : ferme le fichier
existFile (in String FileName, out boolean answer)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les Classes« entrée/sortie » (2)
La Classe InStream
représente le flux d’entrée
boolean open(in String FileName) : ouvre le
fichier « FileName » en lecture
read (in String buffer) : lit « buffer » dans le
fichier
close () : ferme le fichier
existFile (in String FileName, out boolean
answer) : teste l’existence du fichier
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les Classes de concepts UML
J permet d’accéder à toutes les
informations de tout élément du modèle
Classe:
Name, Visibility, …
PartAttribute, PartOperation
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les opérations J
L’appel d’une opération se fait avec le
symbole « . »
Ex: StdOut.write
Possibilité de diffuser une opération sur un
ensemble
Ex: ParOperation.<write()
Polymorphisme supporté
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Méthodes anonymes
Concaténation de tous les attributs d'une
classe dans une chaîne de caractères.
Class:printAttribute ( ) {
String line;
PartAttribute // diffusion aux attributs
{ // début de la méthode anonyme
// nous sommes ici dans un contexte d’ « Attribute »
String buffer = "," + Name; // variable locale
line = line + buffer; // accès à une variable englobante
} // fin de la méthode anonyme
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les ensembles (1)
FACILITER LA NAVIGATION DANS UN MODÈLE
les classes d’un package
les méthodes d’une classe
les paramètres d’une méthode
…
NOTATION
Les ensembles sont définis par la classe « class of the elements [
] », telle que Object[], String[], Class[], etc.
DÉCLARATION
La déclaration suivante, permet d'obtenir un ensemble vide
d'objets « Object » :
Object[] E;
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les ensembles (2)
ORDRE DES ÉLÉMENTS
Les ensembles sont ordonnés.
L'ordre d'insertion des éléments dans l'ensemble sera l'ordre de parcours de ces
éléments lors d'une diffusion ou de l'application de méthodes anonymes.
Par exemple, l'ordre des méthodes d'une classe est accédé dans l'objet
« PartOperation » dans l'ordre où celles-ci apparaissent dans le modèle, de
même que pour les paramètres d'une méthode (IOParameter), …
AFFECTATION ENTRES ENSEMBLES
Les ensembles sont considérés comme des classes de base.
L'affectation entre ensembles recopie donc la valeur d'un ensemble dans un
autre ensemble.
ENSEMBLE VIDE
Le service « notVoid » permet de tester si un ensemble est vide ou pas.
If (notVoid (mySet)) // ensemble non vide
else // ensemble vide
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les ensembles (3)
ACCÈS AU IÈME ÉLÉMENT
J n’autorise pas les instructions du type « E[i]=V; » ou
« v=E[i]; ».
Les services suivants doivent êtres utilisés :
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les ensembles (4)
« size » : renvoie le nombre d’éléments de l’ensemble
Exemple :
PartAttribute .size(); // ou PartAttribute .length();
« addElement »
addElement : ajoute un élément dans l’ensemble
Exemple :
PartOperation.<select(Visibility == Public) { E.addElement (this); }
« retract »
retract : retire le dernier élément d’un ensemble
Exemple :
E1.retract(); // le dernier élément est enlevé de l’ensemble
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
« select » sur les ensembles
« select »
select
Faire une sélection sur les occurrences d'un ensemble, selon
l'expression booléenne fournie en paramètre.
Le résultat est un sous-ensemble de l'ensemble initial.
Sur ce résultat, il est possible d'appliquer soit une méthode
anonyme, soit un nouveau "select", soit une diffusion
3 exemples équivalents :
PartOperation.<select(Visibility == Public) { display (); }//1: méthode Anonyme
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
« while » sur les ensembles
« while »
while :
arrêter la scrutation d'un ensemble, lorsqu'une certaine condition
est atteinte.
parcourt toutes les occurrences jusqu'à obtention de la condition
d'arrêt de scrutation.
boolean found;
PartAttribute.<while(found) {
found = Name == "Size";
if (not(found) ) { StdOut.write(Name); }
}
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Structure de contrôle (1)
« If »
If
if (condition1) { // instructions }
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Service « eval »
PERMET D'ÉVALUER DYNAMIQUEMENT UNE CHAÎNE DE
CARACTÈRES, EN CONSIDÉRANT QUE SON CONTENU EST
COMPOSÉ D'INSTRUCTIONS J.
Exemple :
Object:Storage() {
Fic.open ("Example");
Fic.write ("i1 = 15; s1 = "hello"; b1=false");
}
Object:Recover() {
String read_buffer;
outStream Fic;
int i1 = 15;
String s1 = "hello";
boolean b1 = false;
Fic.open ("Example");
Fic.read (read_buffer);
eval (read_buffer);
StdOut.write ("i1=", i1, NL, "s1=", s1, NL "b1=", b1, NL);
}
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
A vous de jouer
Faire un mini
générateur de code (un
fichier par classe avec
« public class » Name?
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Bilan
J permet de créer des opérations sur les
Modèles UML
J permet de rendre les profils UML productifs
Puissance importante que l’on aimerait avoir en
dehors de UML
Il est intéressant de sortir du domaine UML
=> Ouverture vers les profiles UML
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Profile UML
Un profile UML permet d’étendre la
sémantique de UML
Ex : Table RDB plutôt que classe UML
<<table>>
Repertoire
Repertoire
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Transformation vers Profile
Personne
Repertoire
{persistence(persistent)}
{persistence(persistent)} repertoire personnes
name : undefined Contient
id : string Contient * firstName : undefined
id : string
{primaryKey(1)}
{primaryKey(1)}
Adresse
{persistence(persistent)} Repertoire Personne
rue : string
num : integer
ville : string adresse_of_Personne_FK
pays : string
id : string
{primaryKey(1)}
Adresse
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Profile UML
LES STÉRÉOTYPES :
Ajout de nouveaux éléments de modélisation dans le contexte métier ou
technique
Exemples : « interface », « entity_bean », …
Il est possible de stéréotyper tout concept UML (Classe, Attribut,
Association, Use Case)
LES TAGGED VALUES :
Annotation des éléments de modélisation
Exemples : {virtual}, {primary key}, …
Il est possible d’associer des tagged values à tout concept UML
(Classe, Attribut, Association, Use Case)
LES CONTRAINTES :
Préciser les conditions d’emploi des éléments du modèle
Exemples : {disjoint}, {age >= 18}, …
Il est possible d’associer des contrainte à tout concept UML (Classe,
Attribut, Association, Use Case)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Exemple Profile
SQL
Stereotype
Table, ForeignKey, PrimayKey
Contrainte
Une table ne peut avoir deux PrimaryKey, …
EJB
Stereotype
EJBBean, EJBHomeInterface, …
Tagged-Value
Type de l’EJBBean (entity, session)
Contrainte
Un EJBBean doit avoir une EJBHomeInterface
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Objecteering et les Profiles
Il est possible de créer des stereoypes,
des tagged value, des contraintes dans un
profil Objecteering
Il est en J possible de connaître les
stereotypes ou tagged value portés par un
élément (ainsi on peut bénéficier de ces
informations pour être productif)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
A vous de jouer
Construisons un profil
pour modéliser les
LAN?
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Modèles et méta-
modèles
MOF
JMI & XMI
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
UML et Profil
UML permet de modéliser les applications
Orientées Objet
Grâce aux profils, il est possible de modéliser
autre chose que des applications orientées objet
(Ex: SQL)
Cependant, un modèle profilé est toujours un
modèle UML!!!
Sémantique OO sous-jacente (classes, héritage,
instance, …)
Manque de liberté
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Objectif
Il serait intéressant de disposer d’autres
langages spécifiques à certains domaines tout
en ayant la même productivité que celle des
modèles UML
Langage pour modéliser les échanges entre
applications
Langage pour modéliser les processus
Langage pour modéliser les éxigences
Langage pour modéliser les flux bancaires
…
Question ouverte : est-ce que les profils sont si
contraingnants ?
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
L’approche modèle de modèles
Seriez-vous capable de
construire le diagramme
de classes expliquant les
concepts d’un diagramme
de Use Case?
Seriez-vous capable de
construire le diagramme
de classes d’un
diagramme de classe ?
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Modèles et méta-modèles
Un méta-modèle est une sorte de
diagramme de classes qui définit la
structure d’un ensemble de modèles
Un méta-modèle est un formalisme
(langage) permettant d’élaborer des
modèles
Méta-modèle = grammaire
Modèle = phrase
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le méta-modèle UML Objecteering (1)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le méta-modèle UML Objecteering (4)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le méta-modèle UML Objecteering (2)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le méta-modèle UML Objecteering (3)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le méta-modèle UML Objecteering (5)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le méta-modèle standard UML 1.4
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le méta-modèle standard UML 1.4
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le méta-modèle standard UML 1.4
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
L’approche modèle de modèles de
modèles
Seriez-vous capable
de construire le
diagramme de
classes expliquant les
concepts des méta-
modèles?
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Méta-modèles et méta-méta-modèle
Un méta-méta-modèle est une sorte de
diagramme de classes qui définit la
structure d’un ensemble de méta-modèles
Un méta-méta-modèle est un formalisme
(langage) permettant d’élaborer des
formalismes (langage)
Méta-méta-modèle = grammaire de
grammaire
Méta-Modèle = grammaire
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le MOF (Meta Object Facility)
Le standard MOF est le seul méta-méta-
modèle défini par l’OMG
Il définit les concepts nécessaires et
suffisants pour élaborer des méta-modèles
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle /DependsOn
+dependent
0..n
{ordered}
+provider ModelElement
0..n name : String
/ qualifiedName : String
annotation : String
<<reference>> requiredElements : ModelElement
...
{ordered} 0..n <<reference>> container : Namespace
<<reference>> constraints : Constraint
+containedElement
findRequiredElements()
isRequiredBecause()
isFrozen()
isVisible()
Contains
Namespace
<<reference>> contents : ModelElement
...
0..1 lookupElement()
resolveQualifiedName()
+container findElementsByType()
nameIsValid()
+supertype
{ordered} 0..n
Generalizes GeneralizableElement
isRoot : Boolean
isLeaf : Boolean
+subtype isAbstract : Boolean
visibility : VisibilityKind
0..n <<reference>> supertypes : GeneralizableElement
allSupertypes()
lookupElementExtended()
findElementsByTypeExtended()
IsOfType TypedElement
Classifier 1..1 0..n
<<reference>> type : Classifier
+type +typedElements
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
Generalizes
+supertype
{ordered} 0..n
GeneralizableElement
isRoot : Boolean
isLeaf : Boolean
+subtype
isAbstract : Boolean
0..n visibility : VisibilityKind
<<reference>> supertypes : GeneralizableElement
allSupertypes()
lookupElementExtended()
findElementsByTypeExtended()
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
ModelElement
Feature TypedElement
Namespace
GeneralizableElement StructuralFeature
AssociationEnd
isNavigable : Boolean
aggregation : AggregationKind
multiplicity : MultiplicityType
RefersTo +referencedEnd isChangeable : Boolean
Classifier
1..1 otherEnd()
+referent 1..1
0..n +exposedEnd
Association Reference
+referrer /Exposes
isDerived : Boolean <<reference>> exposedEnd : AssociationEnd
<<reference>> referencedEnd : AssociationEnd
0..n
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
ModelElement
Feature
Namespace scope : ScopeKind TypedElement
visibility : VisibilityKind
StructuralFeature
BehavioralFeature
multiplicity : MultiplicityType
...
isChangeable : Boolean
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
TypedElement
Classifier +type +typedElements
<<reference>> type : Classifier
1..1 IsOfType 0..n
DataType Structure
Field
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
<<structure>>
MultiplicityType
lower : Integer
upper : Integer
isOrdered : Boolean
isUnique : Boolean
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
AttachesTo
+modelElement
ModelElement 1..*
1..* +constrainedElement Constrains
0..n
{ordered}
+tag
Constraint TypedElement
Tag
expression : String <<reference>> type : Classifier
tagId : String
language : String +constraint
values : String
evaluationPolicy : EvaluationKind
<<reference>> elements : ModelElement
<<reference>> constrainedElements : ModelElement 0..n
Constant Parameter
value : String direction : DirectionKind
multiplicity : MultiplicityType
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
L’approche modèle de modèles de
modèles
Quel est le méta du
MOF?
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Architecture à 4 Niveaux
Méta-méta-modèle
MOF
Monde Réel
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
L’approche modèle de modèles de
modèles
Faire le méta-modèle
pour les LAN?
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Statuts des Modèles
Un modèle est une entité abstraite
Un modèle est structuré par son méta-modèle
Un méta-modèle est une entité abstraite
Un méta-modèle est structuré par le MOF
Le MOF est une entité abstraite!
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Représentation concrète de modèles
Textuelle
Représenter un modèle sous forme de texte
Objet
Représenter un modèle sous forme d’objets
Graphique
Représenter un modèle sous forme de fichier
SVG (réduction à la représentation textuelle)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Représentation des modèles en XML
Le standard XMI (XML Metadata
Interchange) permet le passage des
modèles aux documents XML
Il définit des règles permettant de
construire des schéma XML à partir de
méta-modèle
Ainsi il est possible d’encoder un modèle
dans un document XML
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
La passerelle OMG : XMI
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
XMI dans la pratique
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
XMI dans la pratique
Tout package va donner la définition d’un
élément
Toute classe va donner la définition d’un
élément
Contenu dans un package
Toute association va donner la définition
d’un élément
Contenu dans la classe
…
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
XMI dans la pratique
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
XMI dans la pratique
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
XMI pour UML
XMI a été utilisé sur UML pour construire
le Schéma XML des modèles UML
Ainsi il est possible d’encoder un modèle
UML dans un document XML
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Représentation des modèles en Objets
Le standard JMI permet le passage des
modèles aux objets Java
Il définit des règles permettant de
construire des interfaces Java à partir de
méta-modèle
Ainsi il est possible d’encoder un modèle
sous forme d’objet Java
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
JMI
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
JMI dans la pratique
Tout package va donner la définition d’un
package
Toute classe va donner la définition d’une
interface
Contenu dans un package
Toute association va donner la définition
d’une interface
Contenu dans la classe
…
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Tester les prototypes
http://modfact.lip6.fr
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
L’approche MDA
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Pourquoi c’est un problème ?
Quelques soient le middleware, la
méthode et les techniques utilisés
(patterns, framework, …); le code métier
est toujours, d’une manière ou d’une
autre, liés à la technique.
L’évolution est alors problématique car il
faut distinguer le code métier (à préserver)
du code technique (à jeter).
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Une Solution
La solution n’est pas nouvelle : séparation
des préoccupations.
Il faut séparer la partie métier de la partie
technique.
Il faut donc s’abstraire de la technique (et
du code)
Il faut donc modéliser et surtout faire que
le modèle soit productif (!= contemplatif)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Pourquoi cette solution est bonne
Rien ne permet d’affirmer à 100% que cette solution est
la bonne !
La pérennité des modèles est meilleure que la pérennité
du code
la réutilisation du code ne marche pas en terme de coût
Les techniques de génération de code commencent à
être productives
parallèle avec C et assembleur
Les techniques de modélisation sont industrielles (UML)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
L’approche MDA
Elaborer des modèles métiers (PIM) puis les
transformer en modèles techniques (PSM) afin
de pouvoir facilement générer du code.
La transformation des PIMs en PSMs devra, à
long terme, être entièrement automatique et
réversible.
La transformation des PSMs devra, à court
terme, être entièrement automatique, réversible
et paramétrable.
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
PIM vers PSM
Business
requirements
Standards supporting MDA
Analysis & design
PSM notation
PSM PSM PSM ... Standards for
platforms
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Concepts
PIM (Plateform Independent Model) : Un PIM est un
modèle métier entièrement indépendant d’une plate-
forme technique. Par exemple, un modèle UML sans
aucun stéréotype est un PIM. Les PIM sont pérenne,
leur durée de vie doit dépasser 10 ans.
PSM (Plateform Specific Model) : Un PSM est un
modèle lié fortement à une plate-forme technique. Par
exemple, un modèle UML stéréotypé EJB est un PSM.
Les PSMs doivent être générés à partir de PIMs. Ils ne
sont pas pérennes.
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Les standards
MOF (Méta Object Facility) : Langage de définition de
méta-modèles. Règles de mapping vers IDL CORBA
pour permettre la construction de référentiels de
modèles.
UML (Unified Modeling Language) : Langage de
définition de modèle d’application OO. Largement utilisé,
outillé, connu.
XMI (XML Metadata Interchange) : Règles permettant de
représenter tout modèle sous format XML.
JMI : Règles permettant de représenter tout modèle
sous format Java.
CWM (Common Warehouse Metamodel) : Langage de
définition de modèle de data warehouse.
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Des Challenges
Relations Modèles, Méta-modèles, Méta-
méta-modèle, …
Transformations de modèles
Définition de Plates-formes standards
Méthode MDA (Cycle en Y ?)
Stratégie
Evangélisation
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Un chantier commence
Le MDA est un chantier qui commence. Il
devrait durer environ 10 ans (ou plus)
A l’heure actuelle
UML 2.0
MOF 2.0
XMI 2.0
MOF 2.0 Q/V/T
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Transformation de modèles
MOF 2.0 Q/V/T
Méta-modèle pour la transformation de
modèles
Appel de proposition de standard
Huit propositions initiales
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Transformation de modèles
Un modèle de
transformation
Un modèle (ex : UML2Java) Un modèle
(ex : Mon (ex : Mon
modèle UML) Exécution modèle Java)
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Intéropérabilité
Considérer les services de modélisation
Une transformation est un service de
modélisation au même titre que l’exécution de
modèles ou la génération de tests
Interopérabilité de service
Proposition de ModelBus
Redaction d’un RFP en cours
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Bilan
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Résumé
Le code n’est que le langage de la machine
La construction et la maintenance d’applications nécessitent
d’autres langage (différents niveaux d’abstraction, différents
intervenants)
L’ingénierie des modèles consiste à définir les techniques
nécessaires à la définition et à la mise en production de ces
différents langages
UML est un langage de modélisation qui entre intégralement dans
l’ingénierie des modèles (c’est même le langage précurseur)
Il est important de savoir maitriser la diversité des langages de
modélisation
Il est plus qu’important de rendre ces langages de modélisation
produtifs
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Recherche
Les transformations de modèles
Des opérations sur les modèles
Vérification de contraintes
Exécution / Simulation de modèles
Interopérabilité des opérations
Les aspects méthodologiques
Le déploiement d’application dirigé par les modèles
Le passage du code aux modèles (Reverse Engineering,
ADM)
La génération automatique de code
…
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6
Merci
N’hésitez pas à me contacter
Xavier Blanc
Xavier.Blanc@lip6.fr
http://modfact.lip6.fr
http://meta.lip6.fr
Cours de Hatem Ben Sta Lille Mars 2008 X. Blanc – Université Paris 6