Argument Méthodologies agiles Première partie Contexte Les projets informatiques. Statistiques embarrassantes. Problématique récente Le changement fréquent, permanent, d ampleur, continu Évolution fonctionnelle : dynamique économique, mondialisation, concurrence, rachats & fusions, euro, bulle internet, recentrages, etc. Évolution technologique : Matériel, OS, SGBD, Langage, API, drivers, protocoles, versions, etc. Les méthodologies (façons de faire) «classiques» sont trop rigides Coût certain, résultats discutables, délais trop longs (incompressibles) Exemple : mise en ligne de la nouvelle offre en quelques semaines Émergence d autres façons de faire dites «agiles» Marginales, résultats, curiosité, médiatisation, discours généralisé Efficaces dès les petits projets Principes : flux tendus (informationnels), simplicité, aspects humains Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 1 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 2 Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value : Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas 2001, the above authors this declaration may be freely copied in any form, but only in its entirety through this notice. Plan 1.1 Introduction Cycle de vie des projets (oo) Analyse, Conception, Développement, Test Le paradigme orienté objet Encapsulation, Héritage, Polymorphisme Aspects méthodologiques couverts Modélisation, Patterns, Processus 1.2 Modélisation Rappels de la notation UML / exemple Outils de modélisation : BlueJ, Rose, Together Design Pattern par un exemple UML 1.3 Modèles de processus (oo) Démarches : RUP, ICONIX, FDD, ZOE, (XP) http://agilemanifesto.org/ Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 3 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 4
Cycle de vie d un projet 1.1 Introduction Phases et activités (simplification) Analyse, Conception, Développement, Test Test : exécution Exécutable + autres ressources (BD, fichiers) Développement : programmation Sources : C++, Java, C#, Analyse : compréhension du problème Cahier de charges Conception : ébauche de la solution Modèle Element de continuité : l objet monaie unique, matière première, pâte à modeler, coder et tester Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 5 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 6 Le paradigme orienté objet Principes Encapsulation : objet, classe/type, méthodes/opérations Héritage : nouveaux types, substitution (Liskov) Polymorphisme : comportement dynamique Avantages Maintenabilité : évolutivité, extensibilité, maintenabilité Intuitivité : apprentissage, assimilation, mémorisation Usage (omniprésent) Langages de programmation : Smalltalk, C++, Java, C# Langages de modélisation : UML (OMT, Schlaer-Mellor, Coad, OOD, OOSE) Persistance orientée objet SGBDOO (Versant, ObjectStore) SGBDR + mapping O/R (TopLink, JDO, Lido, ObjectDriver, SQLJ, etc.) IHM OO menu principal simplifié : opérations / menu local, état / options grisées, etc Programmation et modélisation orientée objet Abstraire Occulter des informations jugées de moindre importance pour en garder les infos les «plus importantes» Ex. Structure d un objet => classe Syntaxe du langage vs. symboles Indépendance du langage de programmation Code -> diagrammes : aspects multiples et complémentaires structurel/dynamique/temporel, individuel/collectif, besoins/solution, métier/technique, conceptuel/implémentation/déploiement Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 7 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 8
Du code au diagramme Aspects méthodologiques class Personne { String nom; Integer age; void bonjour() { } } class Employe extends Personne { String metier; void bonjour() { } } Personne nom : String age : Integer bonjour () Employe metier : string bonjour () Modélisation : notation, outils (1.2) Patterns : DP, Idiômes, AP, P -1, MP (2-4) Processus/démarche (1.3) Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 9 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 10 Rappel de la notation UML 1.2 UML Rappel de la notation UML Outils de modélisation Exemple de Design Pattern Système Ce que l on veut modéliser (application / organisation) Modèle Description du système Concepts Acteur, cas d utilisation Objet, classe, attribut Vue Diagrammes de Cas d utilisation, Classe, Objet Séquence, Collaboration, État, Activité Composants et Déploiement Symboles Icônes spécialisées : classe, objet Session nom : String code : Integer 1104 : Session code = 1104 nom = MyUML Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 11 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 12
Diagramme de cas d utilisation Acteurs, cas d utilisation, participation Le système Cas d utilisation Diagramme de cas d utilisation But But --Entrer Entrer dans dans la la conférence Acteurs, cas d utilisation, participation Déroulement principal --Le Le participant se se présente à l'accueil et et donne donne son son nom nom --L'hôtesse (système ou ou l'organisateur) lui lui fournit fournit un un badge badge --Le Le participant montre son son badge badgeà l'entrée de de la la session Le système Déroulement alternatif --Si Si le le participant n'est n'est pas pas inscrit inscrit => => inscription ad-hoc ad-hoc --...... Cas d utilisation Acteur Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 13 Acteur accueil badge badge entrée entrée inscription nom nom organisateur participant session Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 14 Diagramme d activités Activité Diagramme d activités Activité Proposition Flux Inscription Flux Couloir Couloir Accueil Session Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 15 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 16
Diagramme de classes Classe, attribut, opération, association, agrégation, gation, généralisation, multiplicité Diagramme de séquence Objet, ligne de vie, message, activation Personne # Nom : String + Société : String + email : String : Organisateur : Participant : Conférence Inscription(Date, Conférence) <<Actor>> Participant accueil badge badge entrée entrée inscription nom nom organisateur participant session Inscription() Inscription + DateInscription : Date Conférence Thème 1104 : Session code = 1104 nom = MyUML <<Act or>> Organisateur Accueil() Session + Code : String nom : String <<Ac tor>> +orateur code : Integer Intervenant est animée par 1 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 17 Accueil(P artic ipant) Entrée( ) Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 18 Diagramme de collaboration Diagramme d état-transitions Objet, message, lien État, transition Invitable 1: Ins cription(date, Conférence) 3: Entrée( ) : Conférence Invitat ion Invité Classe = Participant 2: Accueil(Participant) : Organis ateur : Parti cipant Inscription fin conférence Inscrit Entrée Badgé Séquence Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 19 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 20
Diagrammes d implémentation Outils de modélisation Composants et déploiement <<Application>> SvApp SGBD BC2006.gdb <<Application>> BC2006.exe BlueJ Apprentissage des concepts objet par l expérimentation Rational Rose Leader du marché, bonne navigation Racheté par IBM en 2002 Together/J Leader du RoundTrip synchrône Racheté par Borland en 2002 Bien d autres outils Objecteering, ArgoUML, ModelMaker, WithClass, Voir aussi www.objectsbydesign.com http://www.objectsbydesign.com/tools/umltools_bycompany.html Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 21 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 22 BlueJ Rational Rose Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 23 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 24
Together/J État des lieux Complexité objets : répartition de la responsabilité et délégation (sous-traitance) Documentation structurelle/comportementale, individuelle/collective : bien Pertes en performances : Client.CalcCA() ->> Cde.CalcTotal()->>Ligne.GetTotal() Caractère intuitif : pas évident pour «tous»; courbe d apprentissage allongée Productivité dégradée Instabilité observée très fréquemment Réutilisation à large échelle composants «industriels», utilisables et connectables aisément (sans développement lourd) Pas encore çà : applications = ensemble de gros modules utilisant des centaines de composants Évolutivité par extensibilité : héritage, encapsulation et polymorphisme => insuffisant Traçabilité chaîne de production «complètement» orientée objet : spécification->réalisation->exploitation : «round-trip» très peu adopté Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 25 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 26 Obstacles, critiques et coupables Exemples Sous-évaluation de l importance des «cas d utilisation» Relations entre les diagrammes peu évidentes Discours abstrait des évangélistes Maturité et coût des outils Intégration avec les librairies : JDK, Struts Intégration objet-relationnel Intégration modélisation / programmation / IHM Processus ouvert, non dirigé, non unifié Bilan UML = nécessaire, mais insuffisant Coupables potentiels OMG, éditeurs d outils & plateformes, clients, préconisateurs, prestataires, utilisateurs, nos attentes, le genre humain? Design Patterns Défauts courants de conception [GoF94] Créer un objet en spécifiant explicitement sa classe Assujettissement à une opération particulière Dépendance d une librairie particulière Assujettissement à une représentation interne Assujettissement à un algorithme Couplage fort Extension des fonctionnalités par sous-classement => Besoin de repères plus forts, de cas d école Design Patterns Solutions efficaces à des problèmes récurrents Enregistrement du passé Formalisation réutilisable : fiches de cuisine Traduction : «Modèle de conception» ou «Patron» Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 27 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 28
Composite «H» «T» 1.3 Processus Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 29 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 30 Quel processus pour UML? Caractéristiques Itératif Incrémental Plusieurs démarches Guidé Rational Iconix FDD Opportunisme éclairé (Z) XP Processus pour UML «Rational Unified Process» Phases Itérations Jalons (milestones) Workflow Activités Collaborateur (worker) Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 31 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 32
Rational Unified Process Une itération traverse les workflows Workflow du processus Spécifications Analyse & Conception Implémentation Test Deploiement Workflow auxiliaires Gestion de configurations / changements Gestion de projet et du processus Inception #-1 #0 Elaboration #1 #2 Phases Itérations Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 33 #n Construction #n+1 #n+2 [Rational99] Transition #m #m+1 System Analyst Architect Use Case Specifier User Interface Designer Workflow Use Case and Actor identification Use Case Prioritization Les workflow peuvent être adaptés Un diagramme d activité Use Case Detailing Use Case model Structuring User Interface Prototyping [Rational99] Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 34 Rational Unified Process Adoption RUP Assimiler la notation UML et les stéréotypes Apprendre les extensions orientés gestion «business specific extensions» Intégrer le processus unifié et ses «workflows» Le spécialiser pour son entreprise / équipe Enfin, l instancier dans un projet Processus Iconix [ros] Inspiré d Objectory, simplifié articulations : dia. robustesse ; conseils et AP Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 35 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 36
FDD Peter Coad Zoé Modèles théoriques de processus En cascade, «V», spirale, «Y» Le modèle en «Z» : un anti-modèle Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 37 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 38 Opportunisme éclairé Bibliographie UML Correspondances microscopiques légitimes / sémantique transformations vérifications Use Case Invitable Invité Inscrit Composants Déploiement Activité Classe.PAS.H,.CPP.JAVA Collaboration Etat-transition Séquence OMG www.omg.org, guide de notation [UML/Not] Los 3 amigos Booch, Rumbaugh & Jacobson, AW, 3 livres / 1 CD Introduction facile Fowler & Scott : «UML Distilled» [fow] Rosenberg & Scott : «Use Case Driven Object Modeling With UML» Autres Pierre-Alain Muller : «Modélisation OO avec UML» [pam] James Rumbaugh : «OMT» [rum] Larman : «Applying UML And Patterns» P. Coad : «Java Modeling with Colors» Rational Unified Process, 99 Badgé.EXE,.DLL Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 39 Méthodologies agiles - POLEINFO3 TIO - (c) 2006 zam@lamsade.dauphine.fr 40