Upload
christia-launay
View
122
Download
0
Tags:
Embed Size (px)
Citation preview
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Ingénierie des Modèles
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Plan Lundi : 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
Mardi : Des modèles productifs UML pour la génération de documentation UML pour la génération d’application
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 : l’approche MDA PIM, PSM, Code Modèle de transformation de modèles Interopérabilité des modèles
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Un curieux besoin de modèles
Etude d’une application JavaEtude d’une application WSIntroduction à UMLIntroduction à l’ingénierie des modèles
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Etude d’une application JavaCas 1
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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é!
Cas 1
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Scénario d’utilisationCas 1
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Vision Schématique Abstraite
IHM BDPersonne
Cas 1
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Classes de l’application Repertoire Personne Adresse UIRepertoire UIPersonne UIActionListener MyAssistant
?
Cas 1
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Vision Schématique Abstraite
IHM BD
Personne
Repertoire
AdressesUIPersonneUIRepertoire
UIActionListener
Cas 1
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Méthode Main
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);}public void windowClosed(WindowEvent e) {System.exit(0);}};addWindowListener(l);init();}
?
Cas 1
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Vision Schématique Abstraite
IHM BD
Personne
Repertoire
AdressesUIPersonneUIRepertoire
UIActionListener
MyAssistant
Cas 1
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Etude d’une application WS
Cette application converti un fichier excel CSV en un fichier XML
Cas 2
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Objectif
Vous devez décrire précisement mais simplement l’architecture de cette application
Cas 2
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Feuille WSDLCas 2
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Utilisation de Spy
Demo
Cas 2
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Synthèse
Le code n’est pas un bon média de capitalisation
L’abstraction nécessiteUne bonne connaissance techniqueUn format de représentation commun
Cas
=> Modéliser
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Des Méthodes de modélisation
L’apparition du paradigme objet à permis la naissance de plusieurs méthodes de modélisationOMT, 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
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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é
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Historique
Autres méthodes Booch’91 OMT-1 OOSE Partenaires
Booch’93 OMT-2
Méthode unifiée 0.8
UML 0.9
UML 1.0
UML 1.1
UML 1.2
UML 1.x
UML 2.0
1999-2002
Juin 1998
Novembre 1997Septembre 1997
Janvier 1997
Juin 1996
Octobre 1995
Définition en cours par une commission de révision
Soumission à l’OMG
Standardisation par l’OMGSoumission à l’OMG
Soumission à l’OMG
Version bêta OOPSLA’96
OOPSLA’95
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
Company
Person
Employeemembers
0..1 *
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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 ‘::’
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Classes
Person
+name : string
+firstName : string
#id : string
nbPerson : integer
/completeName : string
Employee
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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 ‘/’
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Attributs
Person
+name : string
+firstName : string
#id : string
nbPerson : integer
/completeName : string
Company
url [3] : string
name : string
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Opérations
Company
url [3] : string
name : string
+makeProfit():real
+getWorkingEmployee(): [*] Employee
Employee
+stopWork():boolean
+startWork(In work:string):boolean
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
Shape
Rectangle Circle
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Associations
Student Course
attends
students attendedCourses
* *
Un étudiant suit des cours (0 ou plusieurs). A partir d’un étudiants, il est possible d’identifier les cours suivis (navigable).
Un cours est suivi par plusieurs étudiants (0 ou plusieurs).
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Associations
Student
School Departmenthas
1 1..*
member
1..*
*
Composition
Aggrégation
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Associations
Les associations N-aire connectent plusieurs éléments entre eux.
Les associations N-aire sont très peu utilisées.
Class
Class1
Class2
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
Job
* 1..*
salary : undefined
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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.
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Interfaces
Element
Parser
Engine+addChild(In child:Element)
+getChildren(): [*] Element
ElementParser
Engine
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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 contraintesself.age<60
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Contraintes et Notes
Company Employee
<<comment>>
Une association n'est pas une company
ageLimit
{self.age<60}
* 1..*
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
PackagesUML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Diagramme de Classe - Fin 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 d’abstraction
UML
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
Ing. Modele
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
Ing. Modele
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Reverse de MyAssistantIng. Modele
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
A vous de jouer Comment marche un
reverse engineering?
Ing. Modele
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
A vous de jouer Pourquoi n’y a-t-il pas
de lien entre répertoire et personne?
Ing. Modele
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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)
Ing. Modele
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
A vous de jouer Est-il possible de passer
d’un diagramme conceptuel à un diagramme d’implémentation?
Et l’inverse ?
Ing. Modele
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
Notation & Méthode
Ing. Modele
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Bilan
Nécessité de modéliser Place de UML Modèles vs code Nécessité de l’ingénierie de la
modélisation
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Des modèles productifs
UML pour construire
L’atelier Objecteering
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
L’Electricien et l’Informaticien
Un problème, des besoins
Un composant virtuel (des entrées des sorties)
Des portes AND, OR, NOR, …
Un schéma électrique
Le composant électrique Le programme informatique
UML
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Un problème - Un diagramme Diagramme de classes / Class Diagram
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
UML 1.x
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Diagramme de Cas d’Utilisation
MagisterTest1
CommercialCustomer
Customer
Bill customer
Validate user
Place order
Check Password
Ship order
Ship partial order
<<include>>
<<include>>
<<extend>>
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Diagramme de Séquence
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
A vous de jouer Définir le diagramme
de séquence d’un examen scolaire
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Diagramme de composant
Un diagramme de composant représente les composants logiciels d’un système
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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)
Objectif: Gagner du temps
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
La méthode IL (pédagogique)
1. Cahier des charges
2. Analyse (Quoi ?) Identifier les Actors et les Use Case 1 Diagramme de Séquence / Use Case Diagramme de Classe
3. Conception (Comment ?) Diagramme de Séquence Diagramme de Classe
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Use Case Diagram
MagisterTest1
Abonné
Personne
Emprunter Un Livre
Authentifier
S'Abonner
Se désabonner
Vérifier les empruns
<<include>>
<<include>>
<<include>>
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Sequence Diagram
Instance1:Abonné
System:
authentification
emprunter
chercher le livre
vérifier les empruns
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Class Diagram
Bibliothèque Livre
Exemplaire
références
0..1 *
exemplaires
0..1
*
*
1
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DocumentationGénération SQLGénération IDL, EJB,…
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Modèle vs DiagrammeMagisterTest1
Abonné
Personne
Emprunter Un Livre
Authentifier
S'Abonner
Se désabonner
Vérifier les empruns
<<include>>
<<include>>
<<include>>
Base contenant tous les éléments du modèle
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Créer un nouveau projet
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Editeur de modèles
Vue hierarchique de tous les éléments du modèle.
Vue de tous les diagrammes du modèle.
Vue graphique d’un diagramme.
Console.
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Module de Production
JavaModule
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Objecteering Java
Configuration des module de production
Utilisation du module Java
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Opération sur les modèles
Profil et Module Objecteering
Le Langage J
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Outils Objecteering
UML ModelerEdition de modèle UMLUtilisation de module Objecteering
UML Profil BuilderCréation de module Objecteering
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Modélisation de l'implémentationExpert du domaine Modélisation du problème
Expert Informaticien
Règles d'implémentation (langage J)
Transformation de modèle - Profile UML
Codage des production
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Profile Builder
PAR LES MENUS :Programmes\Objecteering\Objecteering UML
Profile Builder
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) cliquer dans l’icône« new »
ou l’item « new »Du menu File
3) saisir sa localisation
2) Renseigner le nom du projet
3’) ou parnavigation
Création d’un projet de profil
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Barre de menus
Console
Barre de status
NavigateurBarre de raccourcis des menus
Boîte de propriétés
Fenêtre Principale
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) Expanserle profil « default »
3) cliquer sur le bouton « Créer un profil fils »
4) Donner le nom du nouveau profile (ex: Scan)
Création d’un profil
2) Expanserle profil « external »
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) Sélectionner le nouveau profil
3) Sélectionner « Class » dans la liste déroulante
2) Cliquer sur l'icône « Créer une référence de méta-classe »
Référencement au concept UML
Le code J s’attache sur les concepts UML!
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) Sélectionner la méta-classe
3) Donner le nomde la nouvelle opération (ex: AfficherStatus)
2) Cliquer sur l'icône « Ajouter une opération J »
Création d’un opération J (1)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) Double-cliquer sur l ’opération
2) Modifier les caractéristiques de l ’opération
Création d’un opération J (2)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) Sélectionner l'opération
3) Double cliquer sur l'icône « Jcode »
2) Sélectionner l‘onglet « items » de la boite de propriétés
Saisie d’une opération J (1)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Saisir le code
Saisie d’une opération J (2)
StdOut.write("La classe <",Name,"> a pour visibilité " , Visibility);
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
2) Cliquer sur l'icône« Créer un module »
1) Sélectionner le projet
Création d’un module
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) Saisir le nom
2) Saisir le libellé
3) Saisir la version
4) Éventuellement un commentairede la release
5) Éventuellement la compatibilitéAvec une autre version
Caractéristiques d’un module
MonModule
Mon Premier Module
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) Sélectionner le module
2) Cliquer sur l ’icône« Référencer le profile UML »
3) Rechercher tous les profiles disponibles
4) sélectionner le(s) profile(s) et valider
Lien avec les profils (1)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Lien avec les profils (2)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
2) Cliquer sur l'icône « Créer une Commande »
3) Remplir les propriétésde la commande
•Profile•Méthode J
1) Sélectionner le module
Créer une commande
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) cliquer sur le Menu « Test » puis « Create a test project »
2) Entrer le nom du projet de test
3) Cliquer sur « OK »
Créer un projet un Test
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) Sélectionner une classe puis faire « clic droit »
2) Vérifier le résultat dans la console
Tester la commande
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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, …
Pourquoi packager un module ?
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Packager (1)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Lieu de stockage physiquedu module packagé
Versions majeure etmineure du module
Release du module
Code en mode read only
XXXXXXX
Ressources liées aux modules
Manque la documentation du module
Manque le fichier de traduction des messages
Packager (2)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Packager (3)
Module packagé
Répertoire des Ressources du module
Un répertoire pourChaque version
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Livraison d’un module
Double clic sur le fichier .profRésultat dans fenêtre DOS
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
1) Lancer Objecteering
2) Menu « Tools » item « modules »
3) Sélectionner le module
5) Valider
4) Ajouter
Selection d’un module
Cours de DEA UCAD – Dakar – Juillet 2004 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.
J EST UN LANGAGE OBJET DÉDIÉ À LA MANIPULATION DE MODÈLES.
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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, ...)
Les classes de J
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
La classe « ObjectObject » 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 [ ]Object [ ] » La classe Object[] représente un ensemble d’objets. Elle définit un constructeur « [] » qui est défini sur toutes les
classes de J. ex: Attribute [ ], String [ ], …
Les classes « Mères »
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
GÈRE LES ENTIERS. LES OPÉRATEURS :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 :LES MÉTHODES : float toFloat() conversion en « float » String toString() conversion en « String »
Classes de Base « int »
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Classes de Base « String » GÈRE LES CHAÎNES DE CARACTÈRES.
LES OPÉRATEURS :LES OPÉRATEURS : < « inférieur » <= « inférieur ou égal » > « supérieur » >= « supérieur ou égal » + « concaténation »
LES MÉTHODES :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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
« 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 n’offre 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)
Les Classes« entrée/sortie » (1)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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
Les Classes« entrée/sortie » (2)
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 ensembleEx: ParOperation.<write()
Polymorphisme supporté
Cours de DEA UCAD – Dakar – Juillet 2004 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
// de retour dans un contexte de « Class »StdOut.write("the ", Name, " class's attributes are ", line, NL);}
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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 …
NOTATIONNOTATIONLes ensembles sont définis par la classe « class of the
elements [ ] », telle que Object[], String[], Class[], etc.
DÉCLARATIONDÉCLARATIONLa déclaration suivante, permet d'obtenir un ensemble vide
d'objets « Object » :Object[] E;
Les ensembles (1)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
ORDRE DES ÉLÉMENTSORDRE 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 ENSEMBLESAFFECTATION 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 VIDEENSEMBLE VIDE
Le service « notVoid » permet de tester si un ensemble est vide ou pas.If (notVoid (mySet)) // ensemble non vide
else // ensemble vide
Les ensembles (2)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
ACCÈS AU IÈME ÉLÉMENTACCÈ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 :
Object:getItemSet (inObject[] pSet, in int pIndex, out Object pElt) : Renvoie dans l’objet « pElt » le « pIndex » ième élément de l’ensemble « pSet » .
Le 1er élément a l’index 0. Les types de « pSet » et « pElt » peuvent être plus précis (String[] and String
par exemple) Object:setItemSet (inout Object[] pSet, in int pIndex, in Object
pElt) : Remplace le « pIndex » ième élément de l’ensemble « pSet » par l’objet « pElt ».
Les ensembles (3)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
« size size » : renvoie le nombre d’éléments de l’ensembleExemple :
PartAttribute .size(); // ou PartAttribute .length();
« addElementaddElement » : ajoute un élément dans l’ensemble Exemple :PartOperation.<select(Visibility == Public) { E.addElement (this); }
« addadd » : concatène deux ensemblesExemple :
E1.add(E2); // les éléments de E2 sont ajoutés à la fin de E1
« retractretract » : retire le dernier élément d’un ensembleExemple :E1.retract(); // le dernier élément est enlevé de l’ensemble
Les ensembles (4)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
« selectselect » 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
PartOperation.<select(Visibility == Public).<display ();//2: diffusion de display()
Operation [] E = PartOperation.<select(Visibility == Public); E.<display(); //3: variable intermédiaire
« select » sur les ensembles
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
« while » sur les ensembles « whilewhile » :
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.<while(Name != "Size") { StdOut.write(Name); }
boolean found;PartAttribute.<while(found) {
found = Name == "Size";if (not(found) ) { StdOut.write(Name); }
}
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
« IfIf »
if (condition1) { // instructions }
if (condition1) {// instructions } else { // instructions }
if (condition1) { // instructions } else if (condition2) { // instructions } else { // instructions }
Structure de contrôle (1)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
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);
}
Service « eval »
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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
Repertoire
<<table>>
Repertoire
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Transformation vers Profile
Repertoire Personne
Contient
Adresse
adresse_of_Personne_FK
repertoire_of_Contient_FK personnes_of_Contient_FK
{persistence(persistent)}
Repertoire{persistence(persistent)}
Personne
{persistence(persistent)}
Adresse
name : undefined
firstName : undefined
rue : string
num : integer
ville : string
pays : string
{primaryKey(1)}
id : string
{primaryKey(1)}
id : string{primaryKey(1)}
id : string Contient
repertoire personnes
*
habitepersonne
adresse
*
0..1
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
A vous de jouer Construisons un profil
pour modéliser les LAN?
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Modèles et méta-modèles
MOF
JMI & XMI
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le méta-modèle UML Objecteering (1)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le méta-modèle UML Objecteering (4)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le méta-modèle UML Objecteering (2)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le méta-modèle UML Objecteering (3)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le méta-modèle UML Objecteering (5)
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le méta-modèle standard UML 1.4
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le méta-modèle standard UML 1.4
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le méta-modèle standard UML 1.4
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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
grammaireMéta-Modèle = grammaire
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
GeneralizableElement
isRoot : BooleanisLeaf : BooleanisAbstract : Booleanvisibility : VisibilityKind<<reference>> supertypes : GeneralizableElement
allSupertypes()lookupElementExtended()findElementsByTypeExtended()
0..n
0..n
+supertype
0..n{ordered}
Generalizes
+subtype
0..n
ModelElement
name : String/ qualifiedName : Stringannotation : String<<reference>> requiredElements : ModelElement...<<reference>> container : Namespace<<reference>> constraints : Constraint
findRequiredElements()isRequiredBecause()isFrozen()isVisible()
0..n
0..n
+dependent0..n{ordered}
/DependsOn
+provider0..n
Namespace
<<reference>> contents : ModelElement...
lookupElement()resolveQualifiedName()findElementsByType()nameIsValid()
0..n
0..1
+containedElement
0..n{ordered}
+container
0..1
Contains
TypedElement
<<reference>> type : ClassifierClassifier 0..n1..1
+typedElements
0..n
+type
1..1 IsOfType
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
GeneralizableElement
isRoot : BooleanisLeaf : BooleanisAbstract : Booleanvisibility : VisibilityKind<<reference>> supertypes : GeneralizableElement
allSupertypes()lookupElementExtended()findElementsByTypeExtended()
0..n
0..n
+supertype
0..n{ordered}
Generalizes
+subtype
0..n
Association
isDerived : Boolean
Class
isSingleton : BooleanDataType
TypedElement
<<reference>> type : ClassifierClassifier
0..n1..1
+typedElements
0..n
+type
1..1 IsOfType
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
Namespace
ModelElement
GeneralizableElement
Association
isDerived : Boolean
Feature
StructuralFeature
Classifier
TypedElement
AssociationEnd
isNavigable : Booleanaggregation : AggregationKindmultiplicity : MultiplicityTypeisChangeable : Boolean
otherEnd()
Reference
<<reference>> exposedEnd : AssociationEnd<<reference>> referencedEnd : AssociationEnd
1..1
0..n
+exposedEnd1..1
+referrer
0..n
/Exposes
1..1
0..n
+referencedEnd
1..1
+referent0..n
RefersTo
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
ModelElement
Namespace
Feature
scope : ScopeKindvisibility : VisibilityKind
StructuralFeature
multiplicity : MultiplicityType...isChangeable : Boolean
TypedElement
Reference
<<reference>> exposedEnd : AssociationEnd<<reference>> referencedEnd : AssociationEnd
BehavioralFeature
Attribute
isDerived : Boolean
ExceptionOperation
isQuery : Boolean<<reference>> exceptions : Exception
0..n0..n
+except
0..n
{ordered}
+operation
0..n CanRaise
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
TypedElement
<<reference>> type : ClassifierClassifier
0..n1..1
+typedElements
0..n
+type
1..1 IsOfType
DataType
PrimitiveType StructureType EnumerationType
labels : String
AliasType CollectionType
multiplicity : MultiplicityType
StructureField
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
MultiplicityType
lower : Integerupper : IntegerisOrdered : BooleanisUnique : Boolean
<<structure>>
String(from PrimitiveTypes)
<<primitive>>Integer
(from PrimitiveTypes)
<<primitive>>Boolean
(from PrimitiveTypes)
<<primitive>>
VisibilityKind
public_visprotected_visprivate_vis
<<enumeration>>DirectionKind
in_dirout_dirinout_dirreturn_dir
<<enumeration>>EvaluationKind
immediatedeferred
<<enumeration>>AggregationKind
nonesharedcomposite
<<enumeration>>ScopeKind
instance_levelclass_level
<<enumeration>>
Contained in Constraint
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Le MOF Méta-meta-modèle
Tag
tagId : Stringvalues : String<<reference>> elements : ModelElement
ModelElement
0..n
1..*
+tag
0..n
{ordered}
+modelElement
1..*
AttachesTo
Constraint
expression : Stringlanguage : StringevaluationPolicy : EvaluationKind<<reference>> constrainedElements : ModelElement
1..*
0..n
+constrainedElement
1..*
+constraint
0..n
Constrains
Constant
value : String
TypedElement
<<reference>> type : Classifier
Parameter
direction : DirectionKindmultipl icity : Multipl icityType
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
L’approche modèle de modèles de modèles Quel est le méta du
MOF?
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Architecture à 4 Niveaux
MOF
UML SPEM CWM
Modèle
…
ModèleModèleUML
Méta-méta-modèle
méta-modèles
modèles
Monde Réel
ModèleModèle
ModèleSPEM
ModèleModèle
ModèleCWM
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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!
Pour manipuler les (méta*)modèles il faut donc les représenter sous format informatique
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Représentation concrète de modèles
TextuelleReprésenter un modèle sous forme de texte
ObjetReprésenter un modèle sous forme d’objets
GraphiqueReprésenter un modèle sous forme de fichier
SVG (réduction à la représentation textuelle)
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
La passerelle OMG : XMI
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
XMI dans la pratique
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
XMI dans la pratique
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
XMI dans la pratique
Cours de DEA UCAD – Dakar – Juillet 2004 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
Les règles XMI peuvent quasiment s’appliquer sur les diagramme de classe UML
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
JMI
Méta-modèle
modèles
Interface Java
Objets Java
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Tester les prototypes
http://modfact.lip6.fr
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
L’approche MDA
PIM, PSM, CodeTransformation de modèlesInteropérabilité de modèles
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Problè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
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
PIM vers PSM
PIM
PSM ...PSMPSM
Businessrequirements
Modification for each required platform
Mapping to implementation
Implemen-tation ・・・Implemen-
tationImplemen-
tation
Analysis & design
Standards forapplication areas
Standards forplatforms
standardized PIM
standardizedmapping to PSMs
PSM notation
standardized mappingto implementation codes
Standards supporting MDA
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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
! Plan d’actions orienté utilisateur
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Transformation de modèles
MOF 2.0 Q/V/TMéta-modèle pour la transformation de
modèlesAppel de proposition de standardHuit propositions initiales
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Transformation de modèles
Méta-modèleMOF2.0 Q/V/T
Méta-modèle d’entrée (ex : UML)
Méta-modèle de sortie (ex : Java)
Un modèle de transformation(ex : UML2Java)Un modèle
(ex : Mon modèle UML)
Un modèle (ex : Mon modèle Java)Exécution
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Intéropérabilité
Considérer les services de modélisationUne 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 serviceProposition de ModelBusRedaction d’un RFP en cours
Cours de DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Bilan
Que faut-il retenir ?
Cours de DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 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 DEA UCAD – Dakar – Juillet 2004 X. Blanc – Université Paris 6
Merci
N’hésitez pas à me contacter
Xavier Blanc [email protected] http://modfact.lip6.fr http://meta.lip6.fr