Modélisation. Construire un bon logiciel : Définir des modèles pour

Documents pareils
Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

GOL502 Industries de services

UML (Diagramme de classes) Unified Modeling Language

Chapitre I : le langage UML et le processus unifié

IFT2255 : Génie logiciel

UML et les Bases de Données

Université de Bangui. Modélisons en UML

Introduction au Génie Logiciel

OCL - Object Constraint Language

Table des matières Sources

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Bases de données. Chapitre 1. Introduction

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

RTDS G3. Emmanuel Gaudin

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Chapitre VI- La validation de la composition.

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Analyse,, Conception des Systèmes Informatiques

3. UML - Unified Modeling Language Diagrammes statiques

Master MIDO 2ème année. Spécification et Conception en UML Maude Manouvrier

Ingénierie des Modèles. Méta-modélisation

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh

CONCEPTION ET IMPLANTATION DES SI PROJET : GESTION DU FOYER DE L ENIT

Cours STIM P8 TD 1 Génie Logiciel

Programmation en Java IUT GEII (MC-II1) 1

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Diagramme de classes

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

Ingénérie logicielle dirigée par les modèles

Les BRMS Business Rules Management System. Groupe GENITECH

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

UML (Paquetage) Unified Modeling Language

Rational Unified Process

Cours 1: Java et les objets

Guichet automatique de banque

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Génie Logiciel avec Ada. 4 février 2013

Diagrammes de Package, de déploiement et de composants UML

Classes et Objets en Ocaml.

TD/TP PAC - Programmation n 3

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Méthodes d évolution de modèle produit dans les systèmes du type PLM

Développement d un interpréteur OCL pour une machine virtuelle UML.

Corrigés des premiers exercices sur les classes

Information utiles. webpage : Google+ : digiusto/

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

Applet pour visualiser les variables «automate» notifiées

Programmer en JAVA. par Tama

TP1 : Initiation à Java et Eclipse

Programmation par les Objets en Java

Structurer ses données : les tableaux. Introduction à la programmation

Projet Active Object

Introduction aux concepts d ez Publish

Retour d expériences avec UML

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

SECTION 5 BANQUE DE PROJETS

Conception, architecture et urbanisation des systèmes d information

Programmation Orientée Objet

Application web de gestion de comptes en banques

Cours en ligne Développement Java pour le web

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Alfstore workflow framework Spécification technique

Traduction des Langages : Le Compilateur Micro Java

Chapitre 2. Classes et objets

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

UML est-il soluble dans les méthodes agiles?

Sommaire. Conduite de projet Méthode d analyse et de conception. Processus unifié. Objectifs d un processus de développement

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur Le 23 novembre 2012

Présentation générale de la méthode orientée objet : O.M.T. (Rumbaugh & al.)

4. Groupement d objets

UML. Diagrammes de classes (suite) Delphine Longuet.

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

R. A. A. Bébian. Mimographie, ou essai d écriture mimique. París, 1825

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Héritage presque multiple en Java (1/2)

Besoins utilisateurs. Quelle démarche pour passer des besoins au code? Code. chapitre1 UNIFIED MODELING LANGUAGE. package LogiqueMetier.

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

Architecture d'entreprise : Guide Pratique de l'architecture Logique

Remote Method Invocation (RMI)

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Modélisation de bases de données : Le modèle relationnel

Cours 1 : La compilation

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Généralités sur le Langage Java et éléments syntaxiques.

Chapitre 10 Arithmétique réelle

Description de la formation

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Bases de données et interfaces Génie logiciel

PROJET 1 : BASE DE DONNÉES REPARTIES

Plan du cours. Historique du langage Nouveautés de Java 7

Génie logiciel pour le commerce électronique Hiver 2003 Prof.: Julie Vachon

Transcription:

Modélisation Construire un bon logiciel : Répondre aux objectifs fixés (satisfaire le client) Avoir une base architecturale solide qui permette l évolution Mettre en place un processus de développement maîtriser coûts et délais Définir des modèles pour Spécifier la structure et les comportements attendus du système Visualiser et contrôler l architecture pour mieux la comprendre simplifier, réutiliser, gérer les risques 2

De la niche à l'immeuble Construire une niche Planches, un marteau, des clous, une personne, quelques heures. Le client (le chien) sera probablement Construire une maison Matériaux et outils plus «complexes» Dessiner des plans, Qualité tenir compte des contraintes (utilisation, besoins en éclairage, chauffage, eau, normes, ) Une seule personne? Délais? Coûts? 3

Construire un immeuble : Prendre l avis des investisseurs (style, forme, taille, etc.) (y compris les modifications) Plannings temps et budget primordiaux De nombreuses personnes réparties en équipes Concevoir de nombreux plans et modèles Le plus souvent, faire une maquette Coordonner les différentes équipes, faciliter la communication entre elles etc. Pour une voiture, démarche similaire... 4

Système logiciel = Immeuble Ecrire beaucoup de lignes de code, même très propres, ne suffit pas Nécessité de penser au préalable l architecture logicielle du système Construction d un modèle indispensable 5

Modèle Qu est-ce que c est? «Une simplification de la réalité» Pourquoi? «Mieux comprendre le système à développer» Servir d interface entre les acteurs du projet Doit être proche de la réalité 4 objectifs : Aider à visualiser un système tel qu il est ou doit être. Préciser la structure ou le comportement d un système. Fournir un canevas pour la construction du système. Permettre de documenter les décisions prises. D autant plus nécessaire que le système est complexe 6

Modélisation orientée objet UML : Unified Modeling Language langage conçu pour l écriture de plans d élaboration de logiciels (pas une méthode) né de la fusion de plusieurs méthodes objet, standard de fait utilisable pour visualiser, spécifier, construire et documenter un méta-modèle : Langage sans ambiguïtés Peut servir de support pour tout langage objet Notation graphique simple compréhensible par des non informaticiens et facilitant la communication 7

Statique et Dynamique Vues statiques diagrammes d objets, diagrammes de classes, diagrammes des cas d utilisation, diagrammes de déploiement. Vues dynamiques diagrammes de séquences, diagrammes de collaboration, diagrammes d états-transitions, diagrammes d activités. 8

Classes nom attributs Rectangle largeur hauteur Classe documentée méthodes draw() moveto() resize() Classe non documentée nom «complet», intégrant le paquetage appli::geom::triangle 9

privé UneClasse + attpublic - attprivate - attstatic statique publique + methpublic() - methprivate() 10

Rectangle - largeur : float - hauteur : float - estvisible : boolean = true Classe détaillée note + draw() + moveto( newp : Position) + resize( scale : Float) + tostring() : String return rectangle +largeur+, +hauteur; 11

Objets (instances) Objet1 stylo:crayon :Rectangle :Rectangle largeur = 10 hauteur = 20 estvisible = true stylo relation de visibilité 12

Relations Identifier les classes ne suffit pas, elles coopèrent/ interagissent entre elles, il faut exprimer ces relations (le plus souvent binaires). Dépendances relations d utilisation Associations relations structurelles, connexion sémantique Agrégation, composition Généralisations : interfaces + relations d héritage (relation «is a», cf. UE COO du S6) 13

Association C est une relation structurelle qui exprime une relation sémantique entre (le plus souvent) deux classes. Elle est le plus souvent réflexive. On peut la compléter de 4 informations : Nom Rôles Multiplicité Agrégation 14

Exemple nom cardinalités direction Personne 1..* Travaille pour 0..1 employé employeur Entreprise rôles association 15

Cardinalités Définissent la multiplicité des rôles Une cardinalité à une extrémité signifie qu à l autre extrémité ce nombre d éléments doit exister pour tout objet de la classe. Expressions possibles : n : exactement n n..m : de n à m * : quelconque (équivalent à «0..n» ou «0..») n..* : n ou plus liste de cardinalités : 1..2,3..5 = 1 à 5 sauf 4 16

Il peut exister plusieurs relations entre les mêmes classes Travaille pour employé 1..* Personne 0..1 employeur Entreprise 1 0..n directeur est dirigée par 17

Dépendance Exprimer le fait qu une classe en utilise une autre. Toute modification de la classe utilisée risque d'avoir un impact sur la classe utilisatrice. Relation d'obsolescence. Rectangle largeur hauteur draw() moveto() resize() java::awt::color dépendance 18

Navigabilité restreinte Rendre unidirectionnelle la relation Pour indiquer que les instances d'une classe ne "connaissent" pas les instances d'une autre. Electeur * vote pour 0..1 Candidat 19

Classe-association quand on veut exprimer les propriétés d une relation Personne 1..* Travaille pour 0..1 employé employeur Entreprise classe-association Emploi salaire dateembauche fonction... 20

Interfaces 21

Agrégation/Composition Association «tout/partie», relation de possession «has-a» Agrégation : le tout est responsable de la gestion de ses parties. Relation de subordination. agrégation Zoo 1 tout Un animal peut appartenir à un zoo (qui peut posséder plusieurs animaux). Un objet animal peut être lié à un autre objet. * Animal partie 22

la partie est éventuellement partagée Port Compagnie 0..1 1 appartient * Bateau * 23

Composition : agrégation forte, la partie n est pas partagée composition Zoo 0..1 tout Un animal peut appartenir à un zoo (qui peut posséder plusieurs animaux). Un objet animal ne peut pas être lié à un autre objet. Si on détruit l'objet zoo, on détruit aussi les instances animaux liées. 1..* Animal partie 24

Exemple : compteur Counter #value : int #incf:incrementfunction +getvalue() : int +increment() +initvalue(value:int) 1 * affiche IncrementFunction CounterGraphicInterface Javax::swing::JFrame value = incf.increment(value); «interface» IncrementFunction increment(value : int) : int SimpleIncrement AnotherIncrement ModularIncrement 25

Cas d'utilisation (use cases) représenter le modèle conceptuel identifier les acteurs et leurs interactions avec le système permettre de structurer les besoins des utilisateurs et les objectifs du système permettre de définir le comportement attendu du système, sans en préciser la réalisation on ne s occupe que des objectifs, pas des solutions d implémentation clarification et organisation des besoins 26

Représentation acteur : une personne ou un composant à l origine d une interaction avec le système cas d utilisation : un objectif du système, un besoin d un acteur acteur cas d utilisation traiter login gestionnaire de sécurité noms 27

Inclusion relation d utilisation imprimer solde compte «include» consulter solde compte «include» imprimer ticket débite client retirer argent 28

Diagramme de cas d'utilisation package DAB client retrait possible dans la limite du stock du coffre visualise débite consulter solde compte retirer argent mise en service ravitailler billets technicien éteint DAB avant de le ravitailler technicien 29

Counter * 1 affiche * CounterGraphicInterface 1 IncrementFunction incremente utilisateur donne valeur visualise initialise affiche interface afficher valeur 30