Les concepts d’UML - Le langage OCL -

Slides:



Advertisements
Présentations similaires
Transformation de documents XML
Advertisements

Unified Modeling Language
Spécification et qualité du logiciel
Systèmes de Gestion de Bases de Données Orientés Objet
UML : Unified Modeling Language A. Madani
M.E.D.A.L. Module dEnseignement à Distance pour lArchitecture Logicielle Alain VAILLY Diapositive n° 1 IUP MIAGE - Université de NANTES IUP-MIAGE 3ème.
UML - Présentation.
Approfondissement du langage
O.C.L. Object Constraint Language
Les fonctions de XPath et XSLT
Méta-modélisation et Référentiels d’Entreprise
Introduction aux Web Services Partie 1. Technologies HTML-XML
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
UML : GENERALITES Rappel Diagrammes Niveaux de visions
Création d’un langage d’action pour un logiciel MDA
Principes de la technologie orientée objets
le profil UML en temps réel MARTE
Les Cas d’utilisation.
Algorithmique et Programmation
Expressions et assignations
Initiation à la conception de systèmes d'information
Modélisation E/R des Données
Introduction à la conception de Bases de Données Relationnelles
Spécification et Vérification de Modèles de Procédés de Développement
Algorithmique et Programmation
Complément Le diagramme des classes
Xpath XML Path language par Yves Bekkers
Unified Modeling Langage
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
Le formulaire Les chaînes de requêtes. Les chaînes de requêtes (QueryStrings) correspondent à des informations associées à l'adresse URL avec un point.
Semaine #1 INF130 par Frédérick Henri.
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
Sensibilisation a la modelisation
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
Structures alternative et répétitive
Stage essaim 3 ème année Stage DRT 1 ère année P ROTOTYPING S UITE Intégration à P ROTOTYPING S UITE O BJECT C ONSTRAINT L ANGAGE Développement d’un Interpréteur.
Animateur : Med HAIJOUBI
Jacques Nicolas INRIA /IRISA Rennes
Les assertions en Java.
Javascript 1° PARTIE : LES BASES
Paradigmes des Langages de Programmation
Javascript 2° PARTIE : EVENEMENTS ET OBJETS
UML.
UML - Présentation.
XML-schema. Pourquoi XML-schema Les DTD : Pas de typage, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1.
3 Les instructions. Cours 32 Plan du cours 3 Instruction Bloc Portée L’alternative Affectations =, +=, *=… Comment comparer –Comparer des réels –Comparer.
XPath XML Path UP Web Année universitaire
Programmation objet La base.
Algorithmes de tri et de recherche
Les variables et les types standard des données
Créer des packages.
Sélection de colonnes (la projection)
Méta-modélisation Olivier Barais kezaqo (Univ. Rennes 1 & INRIA)
2 Processus de conception de BD
Conception Formelle en PVS Master 2 ISC Chef de Projet: M. Pierre Castéran Présenté par: Roland Atoui Xavier Dumas Sébastien Jardel Laurent Vendredi.
Réalisé avec le soutien de Pied de page fixe Pied de page 1 Titre Sous titre.
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Chapitre 2 Rappels objet et Présentation des diagrammes UML
(UML) Unified Modeling Language
Nouvelles Technologies Internet & Mobile
UML : DIAGRAMME DE CLASSES
Le langage SQL.
Chapitre 21 Collections partie III Set Une collection qui contient des éléments uniques. Deux implémentation :  HashSet : stock les éléments.
** Flash séance 2 Action script. ** Action Script Ajoute de l’interactivité Permet de contrôler les clips  Langage de programmation orienté objet.
1 Spécifications de Problèmes. 2 Plan Définition Motivation Qualités attendues Types de formalismes Rappels du cours de programmation Spécifications structurées.
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
Transcription de la présentation:

Les concepts d’UML - Le langage OCL - 2003/2004 Cours d'UML

OCL: what is it? OCL: Object Constraint Language Chapter 6 of UML 1.5 Langage formel pour exprimer les contraintes. Expression des invariants d’un système modélisé. Les expressions OCL sont évaluées, n’ont aucun effet de bord. Celui-ci s’applique non seulement au méta-modèle mais aussi au modèle. 2003/2004 Cours d'UML

Pourquoi OCL? Un diagramme UML peut manquer de précision pour exprimer tous les aspects d’une spécification. Besoin de décrire des contraintes additionnelles au modèle. Le langage naturel est souvent utilisé Pb: apparition d’ambiguïtés. OCL a pour but de combler ce manque! Langage formel  aucune ambiguïté Pure langage d’expressionaucun effet de bord Ce n’est pas un langage de programmationne modifie pas le modèle. 2003/2004 Cours d'UML

OCL: Comment l’utiliser Utilisation d’OCL dans plusieurs cas: Spécifier les invariants des classes et types du modèle de classes Spécifier les invariants pour les stéréotypes Décrire les pre et post conditions sur les opérations et méthodes. Décrire les gardes L’utiliser comme langage de navigation Spécifier les contraintes sur les opérations 2003/2004 Cours d'UML

OCL: Comment l’écrire? De manière graphique: De manière textuelle: Contexte Expression OCL Ex: context Compagny inv: self.numberOfEmployees > 50 Entité UML {Règle OCL} 2003/2004 Cours d'UML

Le contexte s’écrit de la manière suivante : OCL: Le contexte (1/2) Le contexte s’écrit de la manière suivante : Context entitéUML typeDecontexte [nomDeLaRègle]: Ex: Context compagny inv: Context c:Compagny inv enoughEmployees: 2003/2004 Cours d'UML

Dans le cas d’un contexte invariant: Context entitéUML inv: Expression OCL Ex: context Compagny inv: self.numberOfEmployees > 50 2003/2004 Cours d'UML

Dans le cas d’un contexte pre et postconditions OCL: Le contexte (2/2) Dans le cas d’un contexte pre et postconditions S’applique aux opérations Context typeName::opérationName(param1: type1, . . .):ReturnType pre : param1>. . . post: result =. . . Ex: Context Person::income(date:Date):Integer post: result = 5000 2003/2004 Cours d'UML

OCL: Écriture d’une expression Type de base: Booléen : Boolean Entier : Integer Réel : Real Chaîne de caractères : String Opération sur les types: Booléen : and, or, xor, not, implies, if-then-else Entier : +, -,*, /, abs(), max()… Réel : +, -,*, /, floor(),max()… Chaîne de caractères : toUpper(), concat(),size()… 2003/2004 Cours d'UML

OCL: Écriture d’une expression Accès au propriété d’un objet: Objet.propriété Accès à un attribut: Ex: context Person inv: self.age > 0 Accès à une opération: Ex : aPerson.income(aDate) 2003/2004 Cours d'UML

OCL: Écriture d’une expression Accès à une fin d’association Objet.nomDuRôleOpposé context Company inv: self.manager.isUnemployed = false inv: self.employee->notEmpty() context Person inv: self.employer->isEmpty() -- Ensemble de personnes qui ont -- le rôle employeur 2003/2004 Cours d'UML

OCL: Écriture d’une expression Navigation vers la classe associations Context Person inv: self.employeeRanking[bosses]->sum() > 0  Ensemble des « employeeRanking » qui appartiennent à la collection « bosses » 2003/2004 Cours d'UML

OCL: Écriture d’une expression Quelques opérateurs Accès aux propriétés des supertypes Context B inv: Self.oclAsType(A).attributeA Self.attributeA Nous avons accès à la propriété définie dans la classe A. Ensuite, nous accédons à la propriété définie dans la classe B. 2003/2004 Cours d'UML

OCL: Écriture d’une expression Les notions d’ensemble: Set C’est un ensemble au sens mathématique, les doublons ne sont pas admis. {1, 5, 4, 8} Bag Cet ensemble accepte plusieurs même éléments, les doublons sont admis. {1, 1, 5, 4, 4, 8} Sequence Cet ensemble peut contenir des doublons et tous ses éléments sont ordonnés. {1, 1, 4, 4, 5, 8} 2003/2004 Cours d'UML

OCL: Écriture d’une expression L’opérateur @pre Celui-ci est utilisé pour spécifier les pre et post-conditions sur les opérations et méthodes dans UML. Il indique la valeur de la propriété au début de l’opération. Il est post fixé Ex: context Person::birthdayHappens() post: age=age@pre + 1 2003/2004 Cours d'UML

OCL: Écriture d’une expression Sélection dans un sous ensemble Collection->select(…) Ex : context Company inv: self.employee->select(age>50)->notEmpty() Rejet d’un élément d’une collection Collection->reject(…) Ex: self.employee->reject(isMarried)->isEmpty() 2003/2004 Cours d'UML

OCL: Écriture d’une expression Existence Collection->exist(…) Ex : context Company inv: self.employee->exists(forename =‘Jack’) Iteration collection->iterate(elem:Type;acc:type=<expression>)| expression-with-elem-and-acc) self.employee->iterate(p:Person;acc=Bag{} |acc->including (p.forename<>’Jack’) 2003/2004 Cours d'UML

OCL : l’expression « let » ‘Let’ permet de définir un attribut ou une opération dans une contrainte Ex: context Person inv: let income: Integer=self.job.salary-> sum() let hasTitle(t: string):Boolean= self.job->exists(title=t) in if isUnemployed then self.income <100 else self.income>=100 and self.hasTitle(‘manager’) endif 2003/2004 Cours d'UML

Manipulation des collections Opérations sur les collections: Collection->size(), Collection->includes(objet), Collection->excludes(objet), Collection->count(objet), Collection->includesAll(collection), Collection->excludesAll(collection), Collection->isEmpty(), Collection->notEmpty(), Collection->sum(), Collection->exist(expressionOCL), Collection->sortedBy(expressionOCL) 2003/2004 Cours d'UML

Opérations sur les collections de type Set et Bag set->union (set2:Set(T)) ou Bag->union(bag2:Bag(T)) = set->intersection(set2:Set(T)) ou set->intersection(bag2:Bag(T)) (set ou bag)->select(expressionOCL (set ou bag)->reject(expressionOCL) (set ou bag)->count(object) 2003/2004 Cours d'UML

Système de gestion pour le prêt d’un livre. Etude de Cas Système de gestion pour le prêt d’un livre. L’étudiant ne peut emprunter que 4 livres au maximum. La durée de l’emprunt dure 3 semaines. Si le livre est rendu N jours en retard, l’étudiant ne peut pas emprunter de livres pendant N jours. … 2003/2004 Cours d'UML

Analyse rapide Déterminons les classes: Les attributs Livre Auteur Étudiant Emprunt Les attributs Livre: titre Étudiant: nom, prénom, age Auteur: nom, prénom Emprunt: dateDébut, DateFin 2003/2004 Cours d'UML

Diagramme de classe 1/2 2003/2004 Cours d'UML

Diagramme de classes 2/2 2003/2004 Cours d'UML

Cas d’études Les contraintes OCL L’étudiant peut emprunter si il a moins de 4 emprunts en cours. Vérifier la cohérence des dates. Le livre ne peut pas être emprunter s’il est déjà. Lorsqu’un livre est acheté, il peut être emprunté 2003/2004 Cours d'UML

Règles OCL Context Etudiant::effectuerEmprunt(livre:Livre) pre :emprunt->size()<4 post : emprunt->size()=emprunt@pre->size()+1 Context Emprunt::emprunt(livre:Livre) Post : dateDebut=System.currentdate Context Livre::emprunter() pre : libre=true post : libre= false Context Etudiant inv: self.dateDebut<=dateFin Context Livre::livre() Post : libre=true 2003/2004 Cours d'UML

Améliorations !! Exprimer le fait que la durée de l’emprunt ne doit pas excéder 3 semaines (21 jours). Nous avons oublié que l’étudiant pouvait rendre le livre. Quels sont les éléments à ajouter? Quels sont les contraintes OCL à ajouter? 2003/2004 Cours d'UML