Title: Cours de DEA UCAD Dakar Juillet 2004X' Blanc Universit Paris 6
1Ingénierie des Modèles
2Plan
- Lundi Un curieux besoin de modèles
- Etude dune application Java
- Etude dune application WS
- Introduction à UML
- Introduction à lingénierie des modèles
- Mardi Des modèles productifs
- UML pour la génération de documentation
- UML pour la génération dapplication
- Mercredi Opération sur les modèles
- Utilisation du langage J sur UML
- Jeudi Modèles et méta-modèle
- Architecture à 4 niveaux
- MOF, JMI
- Vendredi lapproche MDA
- PIM, PSM, Code
- Modèle de transformation de modèles
- Interopérabilité des modèles
3Un curieux besoin de modèles
- Etude dune application Java
- Etude dune application WS
- Introduction à UML
- Introduction à lingénierie des modèles
4Etude dune application Java
Cas 1
5Objectif
Cas 1
- Vous devez fournir un document expliquant
lapplication afin quune autre équipe puisse
faire évoluer cette application en y ajoutant une
nouvelle fonctionnalité!
6Scénario dutilisation
Cas 1
7Vision Schématique Abstraite
Cas 1
BD
IHM
Personne
8Classes de lapplication
Cas 1
- Repertoire
- Personne
- Adresse
- UIRepertoire
- UIPersonne
- UIActionListener
- MyAssistant
?
9Vision Schématique Abstraite
Cas 1
BD
IHM
Adresses
UIPersonne
Personne
UIRepertoire
Repertoire
UIActionListener
10Méthode Main
Cas 1
public static void main(String args)
UIRepertoire ihm new UIRepertoire()
public UIRepertoire() super("Mon
Repertoire") menuListener new
UIMenuActionListener(this) WindowListener l
new WindowAdapter() public void
windowClosing(WindowEvent e) System.exit(0) p
ublic void windowClosed(WindowEvent e)
System.exit(0) addWindowListener(l) init(
)
?
11Vision Schématique Abstraite
Cas 1
BD
IHM
Adresses
Personne
UIPersonne
UIRepertoire
Repertoire
UIActionListener
MyAssistant
12Etude dune application WS
Cas 2
- Cette application converti un fichier excel CSV
en un fichier XML
13Objectif
Cas 2
- Vous devez décrire précisement mais simplement
larchitecture de cette application
14Feuille WSDL
Cas 2
15Utilisation de Spy
Cas 2
16Synthèse
Cas
- Le code nest pas un bon média de capitalisation
- Labstraction nécessite
- Une bonne connaissance technique
- Un format de représentation commun
gt Modéliser
17Des Méthodes de modélisation
UML
- Lapparition du paradigme objet à permis la
naissance de plusieurs méthodes de modélisation - OMT, OOSE, Booch, Fusion,
- Chacune de ces méthodes fournie une notation
graphique et des règles pour élaborer les modèles - Certaines méthodes sont outillées
18Trop de Méthodes
UML
- 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é
19Historique
UML
20Aujourdhui
UML
- UML est le langage de modélisation orienté objet
le plus connu et le plus utilisé au monde - UML sapplique à plusieurs domaines
- OO, RT, Deployment, Requirement,
- UML nest pas une méthode
- RUP
- Peut dutilisateurs connaissent le standard, ils
ont une vision outillée dUML (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 saccroît
- IBM, Sun, Borland, Microsoft
21Diagramme de Classes
UML
- 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 dun système.
22Classes
UML
- Une classe représente la structure commune dun
ensemble dobjets. - 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
23Classes
UML
24Attributs
UML
- Une classe peut contenir des attributs
- La syntaxe dun 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 /
25Attributs
UML
26Opérations
UML
- Une opération est un service quune instance de
la classe peut exécuter - La syntaxe dune opération est visibility
name(parameter)return - La syntaxe des paramètres est kind name type
- Le kind peut être
- in, out, inout
27Opérations
UML
28Héritage
UML
- Lhéritage est une relation entre un élément plus
général et un élément plus spécifique. Lhéritage
existe entre des classes, des packages, - Lhéritage multiple est possible en UML
29Associations
UML
- 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 lentité connectée)
- Une multiplicity (0, 1, , 1.., )
- Un genre daggregation (composite, aggregation,
none) - De plusieurs propriétés isNavigable, isChangeable
30Associations
UML
Un étudiant suit des cours (0 ou plusieurs). A
partir dun étudiants, il est possible
didentifier les cours suivis (navigable).
Un cours est suivi par plusieurs étudiants (0 ou
plusieurs).
31Associations
UML
Composition
Aggrégation
32Associations
UML
- Les associations N-aire connectent plusieurs
éléments entre eux. - Les associations N-aire sont très peu utilisées.
33Classes-Associations
UML
- 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.
34Interfaces
UML
- Une interface est la spécification externe (en
terme dopérations) dune classe. - Une interface peut donc contenir des opérations
- Une classe réalise une interface si elle est
capable dexécuter toutes les opérations de
linterface - On utilisera une relation de dépendance pour
exprimer le fait quune classe est cliente dune
interface.
35Interfaces
UML
36Contraintes et Notes
UML
- Il est possible de contraindre ou dannoter
nimporte 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.agelt60
37Contraintes et Notes
UML
38Packages
UML
- Un package permet de grouper des éléments
- Un package sert despace de désignation
- Un package peut inclure dautres package
- Un package peut importer dautres package
- Lhéritage entre package est possible
39Packages
UML
40Diagramme de Classe - Fin
UML
- Les diagrammes de classes sont les diagrammes les
plus utilisés - Ils permettent la décrire des programmes objet
- Ils permettent de décrire le schéma logique de
bases de données - Ils permettent de décrire des relations de
concepts (modèle métier) - Les diagrammes de classes peuvent être de
différents niveaux dabstraction
41A vous de jouer
Ing. Modele
- Définir le diagramme de classe dun tournoi de
foot (type mondial) - Définir le diagramme de classe de lapplication
MyAssitant
42Reverse Engineering
Ing. Modele
- Le reverse engineering consiste à créer
automatiquement un diagramme de classe à partir
de nimporte quelle application - Nous avons réalisé un reverse engineering sur
lapplication MyAssistant
43Reverse de MyAssistant
Ing. Modele
44A vous de jouer
Ing. Modele
- Comment marche un reverse engineering?
45A vous de jouer
Ing. Modele
- Pourquoi ny a-t-il pas de lien entre répertoire
et personne?
46Diagramme dimplémentation vs diagramme conceptuel
Ing. Modele
- Le diagramme obtenu après reverse engineering est
une copie graphique du code cest un diagramme
dimplémentation - Le diagramme réalisé en analysant lapplication
est un diagramme conceptuel (ex le diagramme de
MyAssistant réalisé précédemment)
47A vous de jouer
Ing. Modele
- Est-il possible de passer dun diagramme
conceptuel à un diagramme dimplémentation? - Et linverse ?
48Comment Modéliser ?
Ing. Modele
- 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
49Bilan
- Nécessité de modéliser
- Place de UML
- Modèles vs code
- Nécessité de lingénierie de la modélisation
50Des modèles productifs
- UML pour construire
- Latelier Objecteering
51LElectricien et lInformaticien
Un problème, des besoins
UML
52Des 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é
53Un problème - Un diagramme
UML 1.x
- Diagramme de classes / Class Diagram
- Classe, Opération, Attribut, Association,
- Diagramme dobjet / Object Diagram
- Diagramme de cas dutilisation / Use Case Diagram
- Cas dutilisation, Acteur, ..
- Diagramme de séquence / Sequence Diagram
- Instance, message, relation
- Diagramme de collaboration / Collaboration
Diagram - Diagramme détat / Statechart Diagram
- Diagramme dactivité / Activity Diagram
- Diagramme de composant / Component Diagram
- Diagramme de déploiement / Deployment Diagram
54Diagramme de Cas dUtilisation
- Un diagramme de cas dutilisation décrit des
acteurs et leurs relations avec des cas
dutilisation - Les diagrammes de cas dutilisation décrivent les
fonctionnalités dun système
55Acteurs
- Un acteur représente un utilisateur externe du
système - Un acteur est en relation avec un ou plusieurs
cas dutilisation - Il est possible de définir des relations
dhéritage entre Acteurs
56Cas dUtilisation
- Un cas dutilisation représente une
fonctionnalité du système - Il est possible de définir des relations de
dépendance entre cas dutilisation - Il est possible de définir des relations
dinclusion entre cas dutilisation - Il est possible de définir des relations
dhéritage entre cas dutilisation
57Diagramme de Cas dUtilisation
58Cas dUtilisation -Fin
- Les diagrammes de cas dutilisation 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
dutilisation aux classes
59A vous de jouer
- Définir le diagramme de cas dutilisation de
yahoo! - Définir le diagramme de cas dutilisation de Air
Senegal
60Diagramme 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.
61Instances
- Un diagramme de séquence met en uvre des
instances - Instance de classe, Instance dacteur
- 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
laxe vertical du diagramme - Graphiquement lactivité dune instance se voit
grâce à un rectangle sur laxe du temps
62Messages
- 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 lexécution dune 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 lenvoi de message (if then
else)
63Diagramme de Séquence
64Diagramme de Séquence - Fin
- Les diagrammes de séquence sont de plus en plus
utilisé - Ils permettent de décrire la dynamique dun
système - Ils permettent de faire le lien entre les
diagrammes de cas dutilisation et les diagrammes
de classes - La sémantique de ces diagrammes est encore un peu
flou - Les techniques de génération de code nexploitent
pas encore très pleinement ces diagrammes
65A vous de jouer
- Définir le diagramme de séquence dun examen
scolaire
66Diagramme dObjets
- Un diagramme dobjet représente la vue statique
dun ensemble dinstance de classes
67Diagramme de Collaboration
- Un diagramme de collaboration représente la vue
statique et la vue dynamique dun ensemble
délément - Une collaboration définit des rôles (et non pas
des classes!)
68Diagramme dEtat
- Un diagramme détat représente la vue dynamique
dun ensemble déléments sous forme détat
69Diagramme dActivité
- Un diagramme dactivité représente la vue
dynamique dun ensemble déléments sous de flux
dexécution
70Diagramme de composant
- Un diagramme de composant représente les
composants logiciels dun système
71Diagramme de déploiement
- Un diagramme de déploiement représente la façon
dont déployer les différentes éléments dun
système
72Le Besoin dOrganisation
- Un modèle UML représente un système et son
environnement - Les diagrammes UML offrent différentes vues dun
même modèle - Certains diagrammes sont complémentaires,
dautres non - Certains diagrammes sont très abstrait, dautres
non - Il est nécessaire de définir une organisation
entre les diagrammes (Une méthode)
73La méthode IL (pédagogique)
- Cahier des charges
- Analyse (Quoi ?)
- Identifier les Actors et les Use Case
- 1 Diagramme de Séquence / Use Case
- Diagramme de Classe
- Conception (Comment ?)
- Diagramme de Séquence
- Diagramme de Classe
74Exemple Mini Bibliothèque
- Le système doit permettre aux abonnés demprunter
des livres. - Linscription est annuelle.
- Une personne non abonnée ne peut pas emprunter de
livres.
75Use Case Diagram
76Sequence Diagram
77Class Diagram
78Conception Comment ?
- On considère souvent que la conception doit être
un raffinement de lanalyse. Lidée est que lon
doit facilement tracer les liens entre classes
danalyse et classes de conception - Les classes de conception serviront à la
génération du code
79Objecteering 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,
-
80Modèle vs Diagramme
Base contenant tous les éléments du modèle
81Créer un nouveau projet
82Editeur de modèles
Vue hierarchique de tous les éléments du modèle.
Vue de tous les diagrammes du modèle.
Vue graphique dun diagramme.
Console.
83Module de Production
JavaModule
84Objecteering Java
Configuration des module de production
Utilisation du module Java
85Opération sur les modèles
- Profil et Module Objecteering
- Le Langage J
86Outils Objecteering
- UML Modeler
- Edition de modèle UML
- Utilisation de module Objecteering
- UML Profil Builder
- Création de module Objecteering
87Codage des production
88Profile Builder
- PAR LES MENUS
- Programmes\Objecteering\Objecteering UML Profile
Builder
89Création dun projet de profil
1) cliquer dans licône new ou litem
new Du menu File
3) ou par navigation
2) Renseigner le nom du projet
3) saisir sa localisation
90Fenêtre Principale
Barre de menus
Barre de raccourcis des menus
Navigateur
Boîte de propriétés
Console
Barre de status
91Création dun 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)
92Référencement au concept UML
- Le code J sattache sur les concepts UML!
93Création dun opération J (1)
1) Sélectionner la méta-classe
2) Cliquer sur l'icône Ajouter une opération
J
3) Donner le nom de la nouvelle opération (ex
AfficherStatus)
94Création dun opération J (2)
1) Double-cliquer sur l opération
2) Modifier les caractéristiques de l opération
95Saisie dune opération J (1)
96Saisie dune opération J (2)
Saisir le code
StdOut.write("La classe lt",Name,"gt a pour
visibilité " , Visibility)
97Création dun module
98Caractéristiques dun module
MonModule
Mon Premier Module
99Lien avec les profils (1)
100Lien avec les profils (2)
101Créer une commande
102Créer un projet un Test
103Tester la commande
2) Vérifier le résultat dans la console
104Pourquoi packager un module ?
- OBJECTIF
- PERMETTRE LINSTALLATION DU MODULE SUR LES BASES
DU SITE - AVOIR LE MODULE SOUS FORMAT FICHIER (.prof) POUR
LECHANGER - LE PACKAGING DUN 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,
105Packager (1)
106Packager (2)
Lieu de stockage physique du module packagé
Code en mode read only
Versions majeure et mineure du module
XXXXXXX
Release du module
Ressources liées aux modules
Manque le fichier de traduction des messages
Manque la documentation du module
107Packager (3)
Module packagé
Répertoire des Ressources du module
Un répertoire pour Chaque version
108Livraison dun module
- Double clic sur le fichier .prof
- Résultat dans fenêtre DOS
109Selection dun module
1) Lancer Objecteering
2) Menu Tools item modules
4) Ajouter
3) Sélectionner le module
5) Valider
110Le 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.
- J EST UN LANGAGE OBJET DÉDIÉ À LA MANIPULATION DE
MODÈLES.
111Les 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, ...)
112Les classes Mères
- La classe Object
- Toutes les classes du langage J héritent de la
classe Object - Elle définit deux opérateurs (égalité) et !
(différent) - La classe Object
- La classe Object représente un ensemble
dobjets. - Elle définit un constructeur qui est
défini sur toutes les classes de J. - ex Attribute , String ,
113Classes de Base int
- GÈRE LES ENTIERS.
- LES OPÉRATEURS
- lt inférieur
- lt inférieur ou égal
- gt supérieur
- gt 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
114Classes de Base String
- GÈRE LES CHAÎNES DE CARACTÈRES.
- LES OPÉRATEURS
- lt inférieur
- lt inférieur ou égal
- gt supérieur
- gt 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 nest pas
trouvé
115Les 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 Stream noffre pas de service
- 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)
116Les Classes entrée/sortie (2)
- La Classe InStream
- représente le flux dentré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 lexistence du fichier
117Les Classes de concepts UML
- J permet daccéder à toutes les informations de
tout élément du modèle - Classe
- Name, Visibility,
- PartAttribute, PartOperation
118Les opérations J
- Lappel dune opération se fait avec le symbole
. - Ex StdOut.write
- Possibilité de diffuser une opération sur un
ensemble - Ex ParOperation.ltwrite()
- Polymorphisme supporté
119Méthodes anonymes
- Concaténation de tous les attributs d'une classe
dans une chaîne de caractères. - ClassprintAttribute ( ) String
linePartAttribute // 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 - // de retour dans un contexte de
Class StdOut.write("the ", Name, " class's
attributes are ", line, NL)
120Les ensembles (1)
- FACILITER LA NAVIGATION DANS UN MODÈLE
- les classes dun package
- les méthodes dune classe
- les paramètres dune 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
121Les 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 videelse
// ensemble vide
122Les ensembles (3)
- ACCÈS AU IÈME ÉLÉMENT
- J nautorise pas les instructions du type
EiV ou vEi . - Les services suivants doivent êtres utilisés
- ObjectgetItemSet (inObject pSet, in int
pIndex, out Object pElt) Renvoie dans lobjet
pElt le pIndex ième élément de lensemble
pSet . - Le 1er élément a lindex 0.
- Les types de pSet et pElt peuvent être
plus précis (String and String par exemple) - ObjectsetItemSet (inout Object pSet, in int
pIndex, in Object pElt) Remplace le pIndex
ième élément de lensemble pSet par lobjet
pElt .
123Les ensembles (4)
- size renvoie le nombre déléments de
lensemble Exemple PartAttribute .size() //
ou PartAttribute .length() - addElement ajoute un élément dans
lensemble Exemple PartOperation.ltselect(Visibi
lity Public) E.addElement (this) - add concatène deux ensembles Exemple
E1.add(E2) // les éléments de E2 sont ajoutés
à la fin de E1 - retract retire le dernier élément dun
ensemble - Exemple E1.retract() // le dernier élément
est enlevé de lensemble
124 select sur les ensembles
- 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 diffusion3 exemples équivalents - PartOperation.ltselect(Visibility Public)
display () //1 méthode Anonyme - PartOperation.ltselect(Visibility
Public).ltdisplay ()//2 diffusion de display() - Operation E PartOperation.ltselect(Visibilit
y Public) - E.ltdisplay() //3 variable
intermédiaire
125 while sur les ensembles
- 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. - Ces 2 exemples sont équivalents
- PartAttribute.ltwhile(Name ! "Size")
StdOut.write(Name) - boolean foundPartAttribute.ltwhile(found)
found Name "Size" if (not(found) )
StdOut.write(Name)
126Structure de contrôle (1)
- If
- if (condition1) // instructions
- if (condition1) // instructions else //
instructions - if (condition1) // instructions else if
(condition2) // instructions else //
instructions
127Service eval
- PERMET D'ÉVALUER DYNAMIQUEMENT UNE CHAÎNE DE
CARACTÈRES, EN CONSIDÉRANT QUE SON CONTENU EST
COMPOSÉ D'INSTRUCTIONS J. - Exemple
- ObjectStorage() Fic.open ("Example") Fic.wri
te ("i1 15 s1 "hello" b1false")
ObjectRecover() String read_buffer outStrea
m 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)
128A vous de jouer
- Faire un mini générateur de code (un fichier par
classe avec public class Name?
129Bilan
- J permet de créer des opérations sur les Modèles
UML - J permet de rendre les profils UML productifs
- Puissance importante que lon aimerait avoir en
dehors de UML - Il est intéressant de sortir du domaine UML
- gt Ouverture vers les profiles UML
130Profile UML
- Un profile UML permet détendre la sémantique de
UML - Ex Table RDB plutôt que classe UML
131Transformation vers Profile
132Profile 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 dassocier des tagged values à
tout concept UML (Classe, Attribut, Association,
Use Case) - LES CONTRAINTES
- Préciser les conditions demploi des éléments du
modèle - Exemples disjoint, age gt 18,
- Il est possible dassocier des contrainte à tout
concept UML (Classe, Attribut, Association, Use
Case)
133Exemple Profile
- SQL
- Stereotype
- Table, ForeignKey, PrimayKey
- Contrainte
- Une table ne peut avoir deux PrimaryKey,
- EJB
- Stereotype
- EJBBean, EJBHomeInterface,
- Tagged-Value
- Type de lEJBBean (entity, session)
- Contrainte
- Un EJBBean doit avoir une EJBHomeInterface
134Objecteering 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)
135A vous de jouer
- Construisons un profil pour modéliser les LAN?
136Modèles et méta-modèles
137UML 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é
138Objectif
- Il serait intéressant de disposer dautres
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 ?
139Lapproche modèle de modèles
- Seriez-vous capable de construire le diagramme de
classes expliquant les concepts dun diagramme de
Use Case? - Seriez-vous capable de construire le diagramme de
classes dun diagramme de classe ?
140Modèles et méta-modèles
- Un méta-modèle est une sorte de diagramme de
classes qui définit la structure dun 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
141Le méta-modèle UML Objecteering (1)
142Le méta-modèle UML Objecteering (4)
143Le méta-modèle UML Objecteering (2)
144Le méta-modèle UML Objecteering (3)
145Le méta-modèle UML Objecteering (5)
146Le méta-modèle standard UML 1.4
147Le méta-modèle standard UML 1.4
148Le méta-modèle standard UML 1.4
149(No Transcript)
150Lapproche 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?
151Mé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 dun 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
152Le MOF (Meta Object Facility)
- Le standard MOF est le seul méta-méta-modèle
défini par lOMG - Il définit les concepts nécessaires et suffisants
pour élaborer des méta-modèles
153Le MOF Méta-meta-modèle
154Le MOF Méta-meta-modèle
155Le MOF Méta-meta-modèle
156Le MOF Méta-meta-modèle
157Le MOF Méta-meta-modèle
158Le MOF Méta-meta-modèle
159Le MOF Méta-meta-modèle
160Lapproche modèle de modèles de modèles
161Architecture à 4 Niveaux
Méta-méta-modèle
méta-modèles
modèles
Monde Réel
162Lapproche modèle de modèles de modèles
- Faire le méta-modèle pour les LAN?
163Statuts 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!
- Pour manipuler les (méta)modèles il faut donc
les représenter sous format informatique
164Représentation concrète de modèles
- Textuelle
- Représenter un modèle sous forme de texte
- Objet
- Représenter un modèle sous forme dobjets
- Graphique
- Représenter un modèle sous forme de fichier SVG
(réduction à la représentation textuelle)
165Repré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 dencoder un modèle dans un
document XML
166La passerelle OMG XMI
167XMI dans la pratique
168XMI dans la pratique
- Tout package va donner la définition dun élément
- Toute classe va donner la définition dun élément
- Contenu dans un package
- Toute association va donner la définition dun
élément - Contenu dans la classe
169XMI dans la pratique
170XMI dans la pratique
171XMI pour UML
- XMI a été utilisé sur UML pour construire le
Schéma XML des modèles UML - Ainsi il est possible dencoder un modèle UML
dans un document XML - Les règles XMI peuvent quasiment sappliquer sur
les diagramme de classe UML
172Repré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 dencoder un modèle sous
forme dobjet Java
173JMI
Interface Java
Méta-modèle
modèles
Objets Java
174JMI dans la pratique
- Tout package va donner la définition dun package
- Toute classe va donner la définition dune
interface - Contenu dans un package
- Toute association va donner la définition dune
interface - Contenu dans la classe
175Tester les prototypes
176Lapproche MDA
- PIM, PSM, Code
- Transformation de modèles
- Interopérabilité de modèles
177Problème ?
- RPC, DCE, CORBA, DCOM, EJB, .Net, Web Service,
- Evolution sans fin des middleware. Les
entreprises subissent ces changements en terme de
coût mais bénéficient de nouveaux avantages. - Over the past decade or more, companies have
endured a succession of middleware
platforms. Jon Siegel, OMG Director of
Technology Transfer
178Pourquoi cest un problème ?
- Quelques soient le middleware, la méthode et les
techniques utilisés (patterns, framework, ) le
code métier est toujours, dune manière ou dune
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).
179Une Solution
- La solution nest pas nouvelle séparation des
préoccupations. - Il faut séparer la partie métier de la partie
technique. - Il faut donc sabstraire de la technique (et du
code) - Il faut donc modéliser et surtout faire que le
modèle soit productif (! contemplatif)
180Pourquoi cette solution est bonne
- Rien ne permet daffirmer à 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)
181Lapproche 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.
182PIM vers PSM
Business requirements
Standards supporting MDA
Analysis design
Standards for application areas
standardized PIM
PIM
standardized mapping to PSMs
Modification for each required platform
PSM notation
PSM
...
PSM
PSM
Standards for platforms
standardized mapping to implementation codes
Mapping to implementation
Implemen- tation
Implemen- tation
Implemen- tation
183Concepts
- PIM (Plateform Independent Model) Un PIM est un
modèle métier entièrement indépendant dune
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.
184Les 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 dapplication 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.
185Des 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
- ! Plan dactions orienté utilisateur
186Un chantier commence
- Le MDA est un chantier qui commence. Il devrait
durer environ 10 ans (ou plus) - A lheure actuelle
- UML 2.0
- MOF 2.0
- XMI 2.0
- MOF 2.0 Q/V/T
187(No Transcript)
188Transformation 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
189Transformation de modèles
Exécution
190Intéropérabilité
- Considérer les services de modélisation
- Une transformation est un service de modélisation
au même titre que lexécution de modèles ou la
génération de tests - Interopérabilité de service
- Proposition de ModelBus
- Redaction dun RFP en cours
191Bilan
192Résumé
- Le code nest que le langage de la machine
- La construction et la maintenance dapplications
nécessitent dautres langage (différents niveaux
dabstraction, différents intervenants) - Lingé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 lingénierie des modèles
(cest même le langage précurseur) - Il est important de savoir maitriser la diversité
des langages de modélisation - Il est plus quimportant de rendre ces langages
de modélisation produtifs
193Recherche
- 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 dapplication dirigé par les
modèles - Le passage du code aux modèles (Reverse
Engineering, ADM) - La génération automatique de code
194Merci
- Nhésitez pas à me contacter
- Xavier Blanc
- Xavier.Blanc_at_lip6.fr
- http//modfact.lip6.fr
- http//meta.lip6.fr