Cours de DEA UCAD Dakar Juillet 2004X' Blanc Universit Paris 6 - PowerPoint PPT Presentation

1 / 194
About This Presentation
Title:

Cours de DEA UCAD Dakar Juillet 2004X' Blanc Universit Paris 6

Description:

Cours de DEA UCAD Dakar Juillet 2004 X. Blanc Universit Paris 6 ... Certains diagrammes sont tr s abstrait, d'autres non. Il est n cessaire de d finir une ... – PowerPoint PPT presentation

Number of Views:131
Avg rating:3.0/5.0
Slides: 195
Provided by: xavier83
Category:

less

Transcript and Presenter's Notes

Title: Cours de DEA UCAD Dakar Juillet 2004X' Blanc Universit Paris 6


1
Ingénierie des Modèles
2
Plan
  • 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

3
Un curieux besoin de modèles
  • Etude dune application Java
  • Etude dune application WS
  • Introduction à UML
  • Introduction à lingénierie des modèles

4
Etude dune application Java
Cas 1
5
Objectif
Cas 1
  • Vous devez fournir un document expliquant
    lapplication afin quune autre équipe puisse
    faire évoluer cette application en y ajoutant une
    nouvelle fonctionnalité!

6
Scénario dutilisation
Cas 1
7
Vision Schématique Abstraite
Cas 1
BD
IHM
Personne
8
Classes de lapplication
Cas 1
  • Repertoire
  • Personne
  • Adresse
  • UIRepertoire
  • UIPersonne
  • UIActionListener
  • MyAssistant

?
9
Vision Schématique Abstraite
Cas 1
BD
IHM
Adresses
UIPersonne
Personne
UIRepertoire
Repertoire
UIActionListener
10
Mé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(
)
?
11
Vision Schématique Abstraite
Cas 1
BD
IHM
Adresses
Personne
UIPersonne
UIRepertoire
Repertoire
UIActionListener
MyAssistant
12
Etude dune application WS
Cas 2
  • Cette application converti un fichier excel CSV
    en un fichier XML

13
Objectif
Cas 2
  • Vous devez décrire précisement mais simplement
    larchitecture de cette application

14
Feuille WSDL
Cas 2
15
Utilisation de Spy
Cas 2
  • Demo

16
Synthè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
17
Des 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

18
Trop 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é

19
Historique
UML
20
Aujourdhui
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

21
Diagramme 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.

22
Classes
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

23
Classes
UML
24
Attributs
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 /

25
Attributs
UML
26
Opé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

27
Opérations
UML
28
Hé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

29
Associations
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

30
Associations
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).
31
Associations
UML
Composition
Aggrégation
32
Associations
UML
  • Les associations N-aire connectent plusieurs
    éléments entre eux.
  • Les associations N-aire sont très peu utilisées.

33
Classes-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.

34
Interfaces
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.

35
Interfaces
UML
36
Contraintes 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

37
Contraintes et Notes
UML
38
Packages
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

39
Packages
UML
40
Diagramme 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

41
A 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

42
Reverse 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

43
Reverse de MyAssistant
Ing. Modele
44
A vous de jouer
Ing. Modele
  • Comment marche un reverse engineering?

45
A vous de jouer
Ing. Modele
  • Pourquoi ny a-t-il pas de lien entre répertoire
    et personne?

46
Diagramme 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)

47
A vous de jouer
Ing. Modele
  • Est-il possible de passer dun diagramme
    conceptuel à un diagramme dimplémentation?
  • Et linverse ?

48
Comment 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
  • Notation Méthode

49
Bilan
  • Nécessité de modéliser
  • Place de UML
  • Modèles vs code
  • Nécessité de lingénierie de la modélisation

50
Des modèles productifs
  • UML pour construire
  • Latelier Objecteering

51
LElectricien et lInformaticien
Un problème, des besoins
UML
52
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é

53
Un 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

54
Diagramme 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

55
Acteurs
  • 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

56
Cas 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

57
Diagramme de Cas dUtilisation
58
Cas 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

59
A vous de jouer
  • Définir le diagramme de cas dutilisation de
    yahoo!
  • Définir le diagramme de cas dutilisation de Air
    Senegal

60
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.

61
Instances
  • 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

62
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 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)

63
Diagramme de Séquence
64
Diagramme 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

65
A vous de jouer
  • Définir le diagramme de séquence dun examen
    scolaire

66
Diagramme dObjets
  • Un diagramme dobjet représente la vue statique
    dun ensemble dinstance de classes

67
Diagramme 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!)

68
Diagramme dEtat
  • Un diagramme détat représente la vue dynamique
    dun ensemble déléments sous forme détat

69
Diagramme dActivité
  • Un diagramme dactivité représente la vue
    dynamique dun ensemble déléments sous de flux
    dexécution

70
Diagramme de composant
  • Un diagramme de composant représente les
    composants logiciels dun système

71
Diagramme de déploiement
  • Un diagramme de déploiement représente la façon
    dont déployer les différentes éléments dun
    système

72
Le 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)
  • Objectif Gagner du temps

73
La 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

74
Exemple 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.

75
Use Case Diagram
76
Sequence Diagram
77
Class Diagram
78
Conception 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

79
Objecteering UML Modeler
  • Atelier UML
  • Tout les diagrammes UML1.4
  • Module de production
  • Génération Java, C, C
  • Génération de Documentation
  • Génération SQL
  • Génération IDL, EJB,

80
Modèle vs Diagramme
Base contenant tous les éléments du modèle
81
Créer un nouveau projet
82
Editeur 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.
83
Module de Production
JavaModule
84
Objecteering Java
Configuration des module de production
Utilisation du module Java
85
Opération sur les modèles
  • Profil et Module Objecteering
  • Le Langage J

86
Outils Objecteering
  • UML Modeler
  • Edition de modèle UML
  • Utilisation de module Objecteering
  • UML Profil Builder
  • Création de module Objecteering

87
Codage des production
88
Profile Builder
  • PAR LES MENUS
  • Programmes\Objecteering\Objecteering UML Profile
    Builder

89
Cré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
90
Fenêtre Principale
Barre de menus
Barre de raccourcis des menus
Navigateur
Boîte de propriétés
Console
Barre de status
91
Cré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)
92
Référencement au concept UML
  • Le code J sattache sur les concepts UML!

93
Création dun opération J (1)
1) Sélectionner la méta-classe
2) Cliquer sur l'icône  Ajouter une opération

3) Donner le nom de la nouvelle opération (ex
AfficherStatus)
94
Création dun opération J (2)
1) Double-cliquer sur l opération
2) Modifier les caractéristiques de l opération
95
Saisie dune opération J (1)
96
Saisie dune opération J (2)
Saisir le code
StdOut.write("La classe lt",Name,"gt a pour
visibilité " , Visibility)
97
Création dun module
98
Caractéristiques dun module
MonModule
Mon Premier Module
99
Lien avec les profils (1)
100
Lien avec les profils (2)
101
Créer une commande
102
Créer un projet un Test
103
Tester la commande
2) Vérifier le résultat dans la console
104
Pourquoi 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,

105
Packager (1)
106
Packager (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
107
Packager (3)
Module packagé
Répertoire des Ressources du module
Un répertoire pour Chaque version
108
Livraison dun module
  • Double clic sur le fichier .prof
  • Résultat dans fenêtre DOS

109
Selection dun module
1) Lancer Objecteering
2) Menu  Tools  item  modules 
4) Ajouter
3) Sélectionner le module
5) Valider
110
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.

111
Les classes de J
  • Classes  mères  (Object, MetaClass, )
  • Classes de base (int, float, boolean, String,
    enumerate)
  • Classes entrée/sortie (stream, outStream,
    inStream)
  • Classes des concepts UML (Class, Attribute,
    Operation, ...)

112
Les 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 ,

113
Classes 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 

114
Classes 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é

115
Les Classes entrée/sortie  (1)
  •  stream  (stream, outStream, inStream)
    utilisée pour gérer les entrée/sorties.
  • trois instances prédéfinies de outStream pour les
    sorties standards stdOut, stdErr, stdFile.
  • La Classe 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)

116
Les 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

117
Les Classes de concepts UML
  • J permet daccéder à toutes les informations de
    tout élément du modèle
  • Classe
  • Name, Visibility,
  • PartAttribute, PartOperation

118
Les 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é

119
Mé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)

120
Les 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

121
Les ensembles (2)
  • ORDRE DES ÉLÉMENTS
  • Les ensembles sont ordonnés.
  • L'ordre d'insertion des éléments dans l'ensemble
    sera l'ordre de parcours de ces éléments lors
    d'une diffusion ou de l'application de méthodes
    anonymes.
  • Par exemple, l'ordre des méthodes d'une classe
    est accédé dans l'objet  PartOperation  dans
    l'ordre où celles-ci apparaissent dans le modèle,
    de même que pour les paramètres d'une méthode
    (IOParameter),
  • AFFECTATION ENTRES ENSEMBLES
  • Les ensembles sont considérés comme des classes
    de base.
  • L'affectation entre ensembles recopie donc la
    valeur d'un ensemble dans un autre ensemble.
  • ENSEMBLE VIDE
  • Le service  notVoid  permet de tester si un
    ensemble est vide ou pas.
  • If (notVoid (mySet)) // ensemble non videelse
    // ensemble vide

122
Les 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 .

123
Les 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)

126
Structure de contrôle (1)
  •  If 
  • if (condition1) // instructions
  • if (condition1) // instructions else //
    instructions
  • if (condition1) // instructions else if
    (condition2) // instructions else //
    instructions

127
Service  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)

128
A vous de jouer
  • Faire un mini générateur de code (un fichier par
    classe avec  public class  Name?

129
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 lon aimerait avoir en
    dehors de UML
  • Il est intéressant de sortir du domaine UML
  • gt Ouverture vers les profiles UML

130
Profile UML
  • Un profile UML permet détendre la sémantique de
    UML
  • Ex Table RDB plutôt que classe UML

131
Transformation vers Profile
132
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 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)

133
Exemple 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

134
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)

135
A vous de jouer
  • Construisons un profil pour modéliser les LAN?

136
Modèles et méta-modèles
  • MOF
  • JMI XMI

137
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é

138
Objectif
  • 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 ?

139
Lapproche 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 ?

140
Modè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

141
Le méta-modèle UML Objecteering (1)
142
Le méta-modèle UML Objecteering (4)
143
Le méta-modèle UML Objecteering (2)
144
Le méta-modèle UML Objecteering (3)
145
Le méta-modèle UML Objecteering (5)
146
Le méta-modèle standard UML 1.4
147
Le méta-modèle standard UML 1.4
148
Le méta-modèle standard UML 1.4
149
(No Transcript)
150
Lapproche 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?

151
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 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

152
Le 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

153
Le MOF Méta-meta-modèle
154
Le MOF Méta-meta-modèle
155
Le MOF Méta-meta-modèle
156
Le MOF Méta-meta-modèle
157
Le MOF Méta-meta-modèle
158
Le MOF Méta-meta-modèle
159
Le MOF Méta-meta-modèle
160
Lapproche modèle de modèles de modèles
  • Quel est le méta du MOF?

161
Architecture à 4 Niveaux
Méta-méta-modèle
méta-modèles
modèles
Monde Réel
162
Lapproche modèle de modèles de modèles
  • Faire le méta-modèle pour les LAN?

163
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

164
Représentation concrète de modèles
  • Textuelle
  • Représenter un modèle sous forme de texte
  • Objet
  • Représenter un modèle sous forme dobjets
  • Graphique
  • Représenter un modèle sous forme de fichier SVG
    (réduction à la représentation textuelle)

165
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 dencoder un modèle dans un
    document XML

166
La passerelle OMG XMI
167
XMI dans la pratique
168
XMI 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

169
XMI dans la pratique
170
XMI dans la pratique
171
XMI 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

172
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 dencoder un modèle sous
    forme dobjet Java

173
JMI
Interface Java
Méta-modèle
modèles
Objets Java
174
JMI 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

175
Tester les prototypes
  • http//modfact.lip6.fr

176
Lapproche MDA
  • PIM, PSM, Code
  • Transformation de modèles
  • Interopérabilité de modèles

177
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

178
Pourquoi 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).

179
Une 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)

180
Pourquoi 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)

181
Lapproche 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.

182
PIM 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
183
Concepts
  • 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.

184
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 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.

185
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 dactions orienté utilisateur

186
Un 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)
188
Transformation de modèles
  • MOF 2.0 Q/V/T
  • Méta-modèle pour la transformation de modèles
  • Appel de proposition de standard
  • Huit propositions initiales

189
Transformation de modèles
Exécution
190
Inté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

191
Bilan
  • Que faut-il retenir ?

192
Ré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

193
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 dapplication dirigé par les
    modèles
  • Le passage du code aux modèles (Reverse
    Engineering, ADM)
  • La génération automatique de code

194
Merci
  • Nhésitez pas à me contacter
  • Xavier Blanc
  • Xavier.Blanc_at_lip6.fr
  • http//modfact.lip6.fr
  • http//meta.lip6.fr
Write a Comment
User Comments (0)
About PowerShow.com