Conception de Logiciel



Documents pareils
UML (Diagramme de classes) Unified Modeling Language

OCL - Object Constraint Language

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

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

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

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

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

IFT2255 : Génie logiciel

Analyse,, Conception des Systèmes Informatiques

UML et les Bases de Données

Introduction au Génie Logiciel

UML. Diagrammes de classes (suite) Delphine Longuet.

UML (Paquetage) Unified Modeling Language

Object Constraint Language (OCL)

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

Analyse par Objets. avec UML (Unified Modeling Language) Pr. Jean-Marc Jézéquel IRISA - Univ. Rennes I

Patrons de Conception (Design Patterns)

Auto-évaluation Programmation en Java

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)

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Chapitre I : le langage UML et le processus unifié

Cours en ligne Développement Java pour le web

Architecture Agile et développement durable

as Architecture des Systèmes d Information

Les diagrammes de modélisation

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

Formation : Modélisation avec UML 2.0 et Mise en pratique

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Cours de Génie Logiciel

GOL502 Industries de services

Programmation en Java IUT GEII (MC-II1) 1

Génie Logiciel Orienté Objet UML

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Chapitre VI- La validation de la composition.

Le Guide Pratique des Processus Métiers

Information utiles. webpage : Google+ : digiusto/

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

Object Constraint Language (OCL) Une introduction

Objets et Programmation. origine des langages orientés-objet

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

Algorithmique & programmation

Devenez un véritable développeur web en 3 mois!

OpenPaaS Le réseau social d'entreprise

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Introduction aux bases de données

Bases Java - Eclipse / Netbeans

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Programmer en JAVA. par Tama

Génie Logiciel Avancé Cours 3 Le modèle à objets

Université de Bangui. Modélisons en UML

Introduction au génie logiciel

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

Urbanisation des systèmes d information

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

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

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

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Table des matières Sources

Introduction aux systèmes temps réel. Iulian Ober IRIT

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Package Java.util Classe générique

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Le Processus Unifié. Une Démarche Orientée Modèle. IUP NTIE - Master 1 - Jérémie Guiochet - 4/11/09

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

Bases de données cours 1

Chapitre 10. Les interfaces Comparable et Comparator 1

Rational Unified Process

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

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

Pascal Brunot Hadrien Cambazard UML FOR BUSINESS INTELLIGENCE PROJECT

TD/TP PAC - Programmation n 3

ACTIVITÉ DE PROGRAMMATION

Comparaison de trois techniques de modélisation de processus: ADONIS, OSSAD et UML

alg - Classes, instances, objets [oo] Exercices résolus

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

4. Groupement d objets

Cours Bases de données

THÈSE. présentée à TÉLÉCOM PARISTECH. pour obtenir le grade de. DOCTEUR de TÉLÉCOM PARISTECH. Mention Informatique et Réseaux. par.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

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

Programmation Par Objets

2. Comprendre les définitions de classes

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Les BRMS Business Rules Management System. Groupe GENITECH

Développement ebusiness

Bases de données. Chapitre 1. Introduction

Ordonnancement temps réel

Présentation du PL/SQL

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Chapitre 10. Architectures des systèmes de gestion de bases de données

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Description de la formation

Synergies entre Artisan Studio et outils PLM

La technologie Java Card TM

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

Transcription:

Conception de Logiciel avec les Design Patterns et UML (Unified Modeling Language) Pr. Jean-Marc Jézéquel IRISA - Univ. Rennes I Campus de Beaulieu F-35042 Rennes Cedex Tel : +33 299 847 192 Fax : +33 299 842 532 e-mail : jezequel@irisa.fr http://www.irisa.fr/prive/jezequel 1 Processus de développement avec UML Approche itérative, incrémentale, dirigée par les cas? d utilisation Expression des besoins Analyse» Elaboration d un modèle «idéal» Conception» passage du modèle idéal au monde réel Réalisation et Validation 2 1

Générateur de code built-in Compte solde: Somme plancher: Somme créditer (Somme) débiter (Somme) Seulement un point de départ, car dans la vrai vie le code qu on veut est plus complexe => intégration de préoccupation nonfonctionnelles class Compte { private int solde; private int plancher; public int getsolde(){ return solde; } public void crediter(int montant) { } public void crediter(int montant) { } } 3 La conception dans le processus de développement avec UML 4 2

Le rôle du Designer Le designer est celui qui doit simplifier, donner une personnalité forte et invisible à ce qu il crée, élaguer, épurer, désencombrer, créer les produits adaptés (selon Jasper Morrison) There are two ways of constructing a software design (C. A. R. Hoare): One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies. The first way is far more difficult to achieve 5 Processus de développement avec UML Inspiré de OMT, Catalysis, Rapshody Conception Systémique (Architecture) choix stratégiques de réalisation du système beaucoup d ingéniérie, peu d informatique «patrons» d architecture Conception Objet (détaillée) préparation de la projection vers langage programmation» aspects dynamiques, fonctionnels, relations... «patrons» de conception détaillée (GoF) 6 3

Conception Systémique (Architecture) Organisation en sous-systèmes Choix de l implantation du mode de contrôle du logiciel Conception de la concurrence Allocation des sous-systèmes aux tâches et processeurs Choix des modes de stockages des données Gestion de l accès aux ressources globales Prévisions des conditions aux limites Choix des priorités pour les contraintes nonfonctionnelles 7 Organisation et accès aux données Base de données : avantages Prévues pour gérer de grandes quantités de données crash recovery, partage, distribution, intégrité interface standardisée (SQL) Base de données : inconvénients surcoût en performances difficiles à manipuler si traitements complexes interface médiocre avec les langages de programmation Modèle d architecture «3 tiers» GUI CoreBusiness DBMS 8 4

Génération du shéma de base de données Si BD relationelle Class => Table Associations, attributs => colonnes» Gestion des clés pour les associations Gestion de l héritage Si BD «moderne» e.g. BigTable, NoSql Idem tables de hachage contenant tous les objets Pour certaines applications, tout en mémoire avec sérialization à la demande + journaling Pas de BD! 9 Conception Objet (détaillée) Projection des aspects dynamiques Exemples d implantation de StateCharts» Cas le plus simple, Réification d événements, Réification d état, Réification d état et d événement Conception des algorithmes Optimisations Ajustement de l héritage Conception des relations cas simples Réification d une relation Principes de conception objet Révision de la hiérarchie de classes 10 5

Projection des aspects dynamiques Présence d une méthode par opération possible dans chaque classe diagramme de séquences => méthodes et constructeurs statecharts => m = f (state, event) Solution simple : pour chaque événement e (signal, condition, expiration de délai) du diagramme d état Créer une méthode process_e (paramètres optionnels) avec un traitement par cas selon l état de l objet Utilisation possible des design patterns COMMAND : réification des événements STATE : réification des états ou les deux => double dispatch 11 Exemples d implantation de StateChart book borrow * 0..1 person borrowlink (book, person) borrowunlink(book,person) reservation * * Reserve(p) Reserve(p) Unavailable Ordered [not reservations-> Borrow(p) isempty] Deliver isempty] Deliver size>1] delay Available size=1] delay Borrow(p) Reserved Borrowed [not reservations-> isempty] Return isempty] Return 12 6

Cas le plus simple Coder l état sur un type énuméré booléen, entier Introduire méthode d accès à l état (idem OCL) Pour chaque événement e : Créer une méthode : process_e (paramètres) avec traitement par cas selon l état de l objet Reserve(p) Ordered isempty] Deliver Available [not reservations-> isempty] Deliver size=1] delay Borrow(p) Unavailable Borrow(p) size>1] delay Reserved Reserve(p) Borrowed [not reservations-> isempty] Return isempty] Return if Ordered() or Unavailable() then addreservation(this,p) end if Reserved() then if reservations.size = 1 then state := available end -- else stay in Reserved() removereservation(reservations.first) end -- else ignore book # state : Integer +Ordered() : Boolean +Available() : Boolean +Unavailable() : Boolean +Reserved() : Boolean +Borrowed() : Boolean +ProcessDeliver() +ProcessBorrow(p:person) +ProcessReturn() +ProcessReserve(p:person) +ProcessTimeout() 13 Gestion des délais sur les transitions Pattern SoftTimer TimerManager register (SoftTimer) remove (SoftTimer) istimerringing() processring() 1 manage * {ordered} Sur chaque transition entrante» mytimer.set(awakingdate) Sur chaque transition sortante SoftTimer ringtime : Date isringing : Boolean make(ringable) set (Date) reset() ring() * 1 Ringable ProcessRing() Book Process_Ring()» mytimer.reset() TimerManager : regarde périodiquement t.isringing en tête de sa file, et si oui appelle t.ring() 14 7

Réification d événements Pattern «command» une classe par événement, possibilité d héritage BookEvent Execute(Book) Deliver Borrow Execute(book) Execute(book) book # state : Integer +Ordered() : Boolean +Available() : Boolean +Unavailable() : Boolean +Reserved() : Boolean +Borrowed() : Boolean +ProcessEvent(ev : BookEvent) { ev.execute(this) } 15 Pattern «state» Réification d état une sous-classe par sous-état hiérarchie d états correspond à la hiérarchie de classes» priorité aux transitions les plus internes BookState Deliver(Book) 1 State Borrow(Book,p)... book +ProcessDeliver() +ProcessBorrow(p:person) +ProcessReturn() +ProcessReserve(p:person) +ProcessTimeout() Ordered Unavailable Available Borrowed Reserved State.Deliver(this) 16 8

Réification d état et d événement Patterns State et Command simultanément BookState ev.execute(this) Deliver(Book) 1 State Borrow(Book,p)... b.state.deliver(b) book +ProcessEvent(BookEvent) Ordered Unavailable Available BookEvent Execute(b:book) Borrowed Reserved Deliver Execute(b:book) Borrow Execute(b:book) 17 Conception des associations Analyse des sens de traversée des relations A sens unique, selon la multiplicité : vers 1 => attribut (référence) vers n => Liste ou Map Bi-directionnels, selon la fréquence : un sens peu fréquent => attribut (référence) + recherche dans l autre sens si mise à jour peu fréquentes => attributs dans les 2 sens, mais structure complexe à mettre à jour sinon, à l aide d un objet matérialisant cette relation» Exemple : relation être-membre d un groupe de multicast 21 9

Reification d une association Personne * participe * Reunion Personne Reunion 1 1 Participation a * * contient 22 Principes de conception Object Single Responsibility Principle (SRP) Une classe par concept, et un concept par classe Open/Closed Principle (OCP) Ouvert aux extensions par héritage, mais stable vs client Liskov Substitution Principle (LSP) a.k.a. Design by Contract : une sous-classe doit honorer les contrats de ses super-classes Dependency Inversion Principle (DIP) Le concret doit dépendre de l abstrait (interfaces) Interface Segregation Principle (ISP) Un programme ne doit pas dépendre de méthodes qu'il n'utilise pas 23 10

Révision de la hiérarchie de classes Essayer de simplifier le modèle Einstein «as simple as possible, but no simpler» St Exupéry «un bon design n est pas un design auquel on ne peut rien ajouter, mais un design auquel on ne peut rien enlever» Revoir la découpe en paquetages Classes groupées afin que les paquetages soient le plus faiblement couplés possible (cibles des tests unitaires) Documenter toutes les décisions de conception 24 11