Méthodologies agiles. Argument. Plan. Résumé des épisodes précédents. Cinquième et dernière partie. 5. Itinéraire d un objet gâté 1

Documents pareils
LOG4430 : Architecture logicielle et conception avancée

Patrons de Conception (Design Patterns)

Analyse,, Conception des Systèmes Informatiques

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

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

Vérifier la qualité de vos applications logicielle de manière continue

Génie logiciel (Un aperçu)

Développement ebusiness

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Visual Paradigm Contraintes inter-associations

Cours en ligne Développement Java pour le web

IFT2255 : Génie logiciel

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

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)

W4 - Workflow La base des applications agiles

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Analyse,, Conception Objet

Projet de développement

CC30 Certificat de compétence Conception, développement et animation de sites Web

Eclipse Process Framework et Telelogic Harmony/ITSW

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

Chapitre I : le langage UML et le processus unifié

DotNet. Plan. Les outils de développement

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Introduction Les processus traditionnels extreme Programming Conclusion. extreme Programming. vers plus d agilité. F. Miller francois.miller@inpg.

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

Séance 1 Méthodologies du génie logiciel

Générer du code à partir d une description de haut niveau

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Agile 360 Product Owner Scrum Master

Méthodes agiles. CONSEIL & DÉVELOPPEMENT DE SOLUTIONS E-BUSINESS. Jean-Louis Bénard jlb@businessinteractif.

Introduction au génie logiciel

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

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

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Chef de projet H/F. Vous avez au minimum 3 ans d expérience en pilotage de projet de préférence dans le monde du PLM et de management d équipe.

Christian Soutou UML 2. pour les. bases de données. Avec 20 exercices corrigés. Groupe Eyrolles, 2007, ISBN :

RÉUSSIR L AUTOMATISATION DU PROCESSUS DE TEST FONCTIONNEL

Évaluation et implémentation des langages

Cours Gestion de projet

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

CQP Développeur Nouvelles Technologies (DNT)

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Programmation en Java IUT GEII (MC-II1) 1

Module BD et sites WEB

Conception, architecture et urbanisation des systèmes d information

SECTION 5 BANQUE DE PROJETS

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

Cours 1: Java et les objets

L enseignement de méthodes agiles dans un contexte d apprentissage actif

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

Le pilotage des collaborations et l interopérabilité des systèmes d information Vers une démarche intégrée

Introduction à la modélisation

Semarchy Convergence for MDM La Plate-Forme MDM Évolutionnaire

Conduite de projets SI. Les méthodes «Agiles» N QUAL/1995/3660e ORESYS

Extensions à la formation. Laurent Pérochon, avril 2008, RMT Modelia, modélisation conceptuelle, formation UML, INRA Castanet Tolosan

Environnements de développement (intégrés)

Le développement d'applications informatiques

Chapitre 5 Vision Informatique Logique Architectures Applicative et Logicielle

Mise en œuvre des serveurs d application

Cursus Sage ERP X3 Outils & Développement. CURSUS Sage ERP X3 Outils & Développement ADVANCED. Outils avancés. 2 jours X3A-ADM. Développement 1 &2

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

La démarche MDA. Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)*

RTDS G3. Emmanuel Gaudin

Les méthodes itératives. Hugues MEUNIER

Fidéliser les collaborateurs tout en améliorant leurs compétences

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

Refonte front-office / back-office - Architecture & Conception -

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Description de la formation

Gouvernance IT : par où commencer? Hubert Lalanne DE, Chief Architect for Industries IBM Software France

UML (Diagramme de classes) Unified Modeling Language

IBM Tivoli Monitoring, version 6.1

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

Méthodologies de développement de logiciels de gestion

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

Augmenter la vélocité Agile avec l usine-service sur Azure

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Vers l urbanisation agile d un client mobile ios/android natif, économique, flexible et pérenne

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

WHITE PAPER Une revue de solution par Talend & Infosense

Comment initialiser une démarche SOA

J2EE in practice. Olivier Liechti Patrik Fuhrer. Department of Informatics. Computer Science Master Course - SH 2004/05

WEB15 IBM Software for Business Process Management. un offre complète et modulaire. Alain DARMON consultant avant-vente BPM

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

La Gouvernance IT en France : de nombreuses avancées, encore beaucoup à faire

Jean-Pierre Vickoff J-P Vickoff

CATALOGUE DE FORMATIONS BUSINESS INTELLIGENCE. Edition 2012

Processus d Informatisation

1 JBoss Entreprise Middleware

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

INDUSTRIALISATION ET RATIONALISATION

GL Processus de développement Cycles de vie

Cours STIM P8 TD 1 Génie Logiciel

Valorisez vos actifs logiciels avec Rational Asset Manager. Jean-Michel Athané, Certified IT Specialist IBM Rational Software

Objecteering. La convergence SOA, UML2, BPMN, EA, pour le développement guidé par le modèle.

Les BRMS Business Rules Management System. Groupe GENITECH

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

Transcription:

Résumé des épisodes précédents Méthodologies agiles Cinquième et dernière partie Contexte : projets informatiques Problématique : Changements permanents : fonctionnels et technologiques => réactivité & qualité Méthodologies classiques : trop rigides, lourdes, chères Solutions (méthodologies) OOP : Java UML (modèle visuel) : formalisme très riche Patterns : micro-solutions réutilisables. Exemple : Composite. Offre méthodologique : RUP, ICONIX, FDD, ZOE, (XP) XP : une introduction. Pratiques. Tests unitaires et refactoring : illustration. Chemin de l adoption : dialogue virtuel, ROI, limites : blocages Biblio commentée et annexes Itérations agiles Gestion des exigences. CaliberRM. Articulation avec la modélisation. Gestion de Configuration Logicielle. Flux tendu. Intégration Revisions + info. StarTeam. Cycle de vie agile : miniprocess. High-tech vs low-tech. Design Patterns (DP) Défauts classiques, patterns, classification des DP Structure, catalogue : proxy, stratégie, façade, adaptateur, composite, Patterns J2EE, Analysis Patterns (Fowler), Construction d un pattern (Bergin) Conclusion : difficultés d adoption (dogmatisme, abstraction forte, outillage) MAN : junit / IDE & BlueJ MAN2 : CVS / cmd & IDE 2 Argument Constat Ces méthodologies semblent répondre à la problématique du changement, mais Questions Quelle courbe de l apprentissage? Ne sont-elles pas trop nombreuses? Comment les articuler efficacement? Retour sur investissement dès le premier usage (projet, exemple, cours)? ROI étudiant? Sont-elles vraiment agiles? Ce cours n est-il pas dogmatique à son tour? Objectifs Synthétiser, articuler (colle et compléments), simplifier, démystifier & démasquer les rigidités restantes, illustrer des perspectives (technologies adaptées) et vous libérer du poids dogmatique de nos enseignements éphémères Plan Exigences EOO 5. Itinéraire d un objet gâté Analyse et conception Implémentation UML+DP OOP XP SCM 5. Modélisation agile UML : exemple, méta, plan de route minimaliste, couleurs Coad / archétypes, stéréotypes / navigation IHM Metapatterns [Pree]. Exemple évolutif : startup. 5.2 Implémentation agile Correspondance UML-Java Métriques, exemple de découplage : Loi Demeter Modéliser une BD relationnelle : placement / Newton ;-) Technologies agiles : AOP, MDA, XUML, DCC 5.3 Conclusion : bilan et perspectives Bilan et perspectives de l agilité Nos attentes & devoir [Biblio : le kit de survie] Déploiement 3 () toute ressemblance avec des personnes physiques suivant ce cours est évidement fortuite 4

UML 5. Modélisation agile UML & DP Complexité? Dans UML. => 23 concepts (classe de MM) Comment apprendre et retenir rapidement et efficacement les symboles et les concepts UML? Mes astuces Représenter visuellement (dessins) : parce que je le vaux bien. Effectuer / tourner des exemples Métamodéliser : modéliser les concepts et leurs connexions (UML), même si c est incomplet Placement de symboles unifiés et adaptés (loi de Newton) Couleurs de Peter Coad. IHM : diag. robustesse Articuler avec les éléments connus : java => 5.2 (implem agile) 5 6 Exemple UML : jeu de dès Méta-uml UML en UML (modélisation sélective et naïve) Dynamique minimaliste : chemins microscopiques 7 8

Un plan de route minimaliste Répertorier les interactions typiques (acteurs & use cases / scripts) Couleurs de Peter Coad Use Case Activité Glossaire Classe Script Collaboration Dynamique Séquence Composants Déploiement Applicabilité.PAS.H,.CPP.JAVA Etat-transition irreversibilité?.exe,.dll 9 A green party-place-thing A yellow role A pink moment-interval A blue description Structuration / découpage (Personne vs. Client) par nature : archetype Méthodes & attributs prédéfinis (date, etc.) Met de l ordre dans le diag de classe Accessible pour le client Facilite la lecture / vérification Adapté à la modélisation du métier => contexte Indépendant du métier / problème => technique réutilisable 0 Interacts with its yellow roles or its pink moment-intervals Interacts with its green parties or its pink momentintervals Interacts with its pink moment-intervals serialnumber name address customvalue <<party>> Party assessacrossroles getcustomelsedefaultvalue listroles listparties assessacrossparties 0.. <<role>> PartyRole assignednumber status assessacrossmis listmis listroles assessacrossroles 0..* Components The domain-neutral component type description itemnumber defaultvalue <<description>> PartyDescription assesswithpluginelsedefault assessacrossparties findavailable calcqtyavailable calctotalfor listparties listdescs assessacrossdescs 0.. 0..* <<moment-interval>> PriorMI interface <<plug-in point>> assess IAssess Interacts - With its pink mi-details - With its pink prior moment-intervals - With its pink next moment-intervals - With its coresponding yellow roles, green party/place/things, or blue descriptions 0..* interface <<moment-interval>> number MomentInterval dateordatetimeorinterval priority total status makemomentinterval adddetail calctotal recalctotal complete cancel mi_generatenext mi_assesswrtprior mi_assesswrtnext mi_compareplanvsactual listmis <<plug-in point>> IMakeMomentInterval makemomentinterval assessacrossmis..* <<mi-detail>> actual 0.. MomentIntervalDetail qty calctotal http://www.togethersoft.com/services/tutorials/jmcu/ plan 0..* 0..* 0..* 0..* serialnumber name address customvalue 0..* 0.. <<moment-interval>> NextMI <<place>> Place assessacrossroles getcustomelsedefaultvalue listroles listplaces assessacrossplaces <<role>> PlaceRole assignednumber status assessacrossmis listmis listroles assessacrossroles serialnumber name address customvalue <<thing>> Thing assessacrossroles getcustomelsedefaultvalue listroles listthings assessacrossthings 0.. <<role>> ThingRole assignednumber status assessacrossmis listmis listroles assessacrossroles 0..* 0..* type description itemnumber defaultvalue type description itemnumber defaultvalue 0.. <<description>> ThingDescription assesswithpluginelsedefault assessacrossthings findavailable calcqtyavailable calctotalfor listthings listdescs <<description>> PlaceDescription assesswithpluginelsedefault assessacrossplaces findavailable calcqtyavailable calctotalfor listplaces listdescs assessacrossdescs assessacrossdescs 0.. interface <<plug-in point>> assess interface <<plug-in point>> assess IAssess IAssess Exercice Afin de tester la pertinence des archétypes, proposer des noms de classes pour le diagramme anonyme suivant : << Party >> << Desc >> << Role >> << MI >> << MI-D >> << Place >> << Desc >> << Role >> << Role >> << Desc >> << Thing >> 2

Les 0 meilleures façons de rater un projet objet [Rosenberg] 0.Commencez par un projet critique. 9.Assurez-vous qu il n y a pas de compétences OO dans votre équipe 8.Ne testez surtout pas les classes unitairement, ne testez que l intégration et croisez les doigts. 7.Confiez la réalisation des use cases aux expérimentés et les séquences aux débutants. 6.Ne perdez pas le temps avec la revue des modèles. 5.Séparez soigneusement use case et modèle de classe. Nous savons tous que les UC n affectent pas le code. 4.Implémenter les parties les plus faciles aux début et laissez les plus difficiles à la fin, juste avant le terme. 3.Prenez une équipe de 20 développeurs VB, confiez-leur un compilateur C++ et un outil visuel de modélisation puis laissez-les se débrouiller. 2.Ignorez le modèle d analyse et de conception. Ecrivez le code, et générez un modèle global par reverse engineering. Personne ne s en apercevra..partez de l idée que l outil de modélisation générera un excellent code pour vous et embauchez plein de stagiaires non diplômés pour s occuper du codage. Spécialisation emprunt Classe métier + Use Case = << boundary >> + << controler >> + << entity >> 3 Ex : adaptation pour IHM 4 Spécialisation - IHM Metapatterns Dérouler les scénarii décrits par les Use Case La généralisation de la modélisation objet Contexte actuel : frameworks et objets métier Qualités visées pour les modèles Généralité, robustesse, flexibilité Réutilisabilité, maintenabilité, évolutivité Résultat : notoriété croissante UML et Design Patterns (DP) Malgré tout, des obstacles subsistent Approche souvent dogmatique Solutions «miraculeuses» Cette section Démystification : principes fondateurs des DP Montre comment bien modéliser avec encore moins d effort à travers les metapatterns Prétexte => patterns 5 6

Classification des patterns Analyse Peter Coad, Martin Fowler Conception Gamma, Vlissides Programmation Coplien, Beck Anti-patterns Mauvaises solutions Meta-patterns Aspect rédactionnel [Meszaros/Doble98] Aspect «modélisationnel» [Pree95] 7 Metapatterns [Pree95] Méta-X Au dessus, avec recul, plus abstrait, mais reste un X à son tour par rapport au niveau inférieur Patterns sur patterns = Métapatterns Patterns = cas d école Classes métier ou framework Matière première des métapatterns Classes, méthodes, associations, appels de méthode Granularité fine : blocs élémentaires de conception Avantage visé (rappel) «Sagesse» hyper-concentrée et ré-applicable plus aisément, sans dogme recul 8 Métapatterns Repère fondamental modélisation/patterns Distinction entre stabilité et variabilité [Pree] Points névralgiques dans un framework Points rigides : méthodes «template» Points flexibles : méthodes «hook» Hooks: points prédéfinis de spécialisation Whitebox : par héritage (et redéfinition de méthode) ou par la réalisation d une interface (Java) => par le bas Blackbox : par composition (et délégation) => par le côté Exemple [Pree99] m : template (méthode complexe) La pièce rigide m2, m3 : hooks (points d extensibilité) Delphi : override; 9 20

Unification Conventions «T» et «H» Méthodes Classes Variations A. Unification vs. Séparation B. Récursivité (ou pas) Métapattern Toute combinaison de T-H selon les variations citées Factory method (VCL) «Définir une interface pour créer un objet, mais laisser les sous-classes décider quelle classe instancier» [GoF] Autre exemple : TTreeView en D6! 2 22 Séparation Récursivité Exemples Abstract factory, Bridge, Builder, Command, Interpreter, Observer, Prototype, State et Strategy : vs. :N Commande [GoF95] Rappel : les noms des DP GoF => selon la variabilité (H) Le composite [GoF95] Composer des objets en structures arborescentes pour représenter des hiérarchies «ensemble-partie». Le composite autorise les clients de traiter des objets individuels et des compositions d objets de façon uniforme. «H» [GoF95] «T» «H» [GoF95] «T» Participants 23 composant, composite, feuille et client 24

Stratégie d application des MP Phase. Start-up Bilan métapatterns «Une méthode (T) appelle une autre (H)». Pffff Utilité Application microscopique des principes des DP Mieux découvrir, comprendre, reconnaître et appliquer les DP C est tout? Le quotidien du développement objet Organisation initiale vs. évolution coûteuse Minimiser le poids de l investissement initial Découpage en classes, accesseurs, interfaces, etc. L opportunisme éclairé appliqué aux métapatterns Evolution incrémentale Refactoring : «Just-in-time modeling» Un cas d école 25 26 Phase 2. Start-up++ Phase 2. Start-up++ Reproductibilité Reproductibilité 27 28

Phase 3. Développement Phase 3. Développement refactoring et hétérogènes et hétérogènes Industrialisation Industrialisation 29 30 Phase 3. Développement Phase 4. Fusion-rachat «TH» et hétérogènes «T» «TH» «H» Industrialisation 3 32

Phase 5. Vers la mondialisation Phase 6. Flexibilité «H» «T» 33 34 Traduction en métapatterns Evolution des classes TH => T-H => T-TH-H => T-TH- >-H Transformations opportunistes Refactoring => préservation de sémantique Avant ou après changement de spécification Remise en cause des points rigides? Même technique! 35 Conclusion MP Modélisation objet des frameworks Pâte à modeler gestes élémentaires avec effet progressif Les éléments (méthodes et classes) N ont pas de densité uniforme Classification par stabilité (T ou H) Assumée a priori, mais peut être remise en cause Les «T» peuvent devenir des «H» Mais au «bon» moment 36

Correspondances UML-Java UML Java 5.2 Implémentation agile Test Du modèle au code : UML Java Métriques (Loi Demeter) BD relationnelle Technologies agiles : AOP, MDA, XUML < < U n i t> > C lie n t C l ie n t. ja v a 37 38 Client + calcca() +cli passe Commande +cde - date : Date n + calctotal() +cde 0..n UML Correspondances UML-Java Java GrandCompte - nom : String + calcca() CommandeElementaire 0.. +cdecplx CommandeComplexe + calctotal() Classe Attribut Tag values Opération Interface Association Nom Rôle Multiplicité (conteneur) Classe Variable (field) Set/Get Méthode Interface Pas de lien direct Rien! Variable (si navigable) Valeur unique / multiple (tableau, vecteur, ) 39 40

UML Correspondances UML-Java Java Métriques Généralisation Réalisation Classe d association Transformation préliminaire => deux associations Tag-values ====== Extends Implements Autres éléments Découplage : Loi de Demeter loi de Demeter - (987) Ian Holland Le résumé en est Do not talk to strangers. class Demeter { private : A *a; int func() { public example(b& b) { C c; int f = func(); b.invert(); A = new A(); a->setactive(); c.print(); La loi du Demeter pour les fonctions Toute méthode d un objet ne doit appeler que des méthodes apparentant : à soi-même aux objets reçus en paramètre à tout objet créé par soi-même à tout objet possédé directement www.pragmaticprogrammer.com 4 42 TCC / Métriques Métriques orientées objet 43 44

Modélisation d une BD relationnelle Tables Attributs et clés (pk) Références Clés étrangères (fk) Placement Loi de Newton [MZ] Mapping O/R Associations : => même table (ou pas) :N => tables distinctes N:N => table d association Ambler, Keller http://www.agiledata.org/essays/mappingobjects.html Outils TopLink, JDO, Hibernate Technologies agiles Contrainte Résultats optimisés à long, moyen ET court terme Exemples XUML MDA AOP DCC - Assemblage dynamique 45 46 ModelRun/BoldSoft XUML Borland Studio / Delphi / Architect ModelRun/BoldSoft XUML Borland Studio / Delphi / Architect 47 48

www.neosight.com 49 MDA : Architecture pilotée par le modèle Le MDA est une nouvelle façon d écrire des spécifications pour développer des applications, basée sur un modèle indépendant de plateforme (PIM) et accompagné d un ou plusieurs modèles spécifiques à des plateformes (PSM) et d ensembles de définition d interfaces, chacune décrivant comment le modèle de base est implémenté sur chaque plateforme différente. Cibles : CORBA, EJB, MTS, etc. Exemples : IO, Kennedy Carter, Kabira, Secant, Metys Borland Together Architect 2006 Support MDA : UML 2.0, OCL 2.0, QVT, XMI 2.0 50 Transformer un modèle Business Process en un modèle UML Exemple simple Together - Script QVT Couloirs (BPD) => Acteurs UML Tâches => Use Cases 5 52

Exécuter une transformation Model-to-Model Transformation effectuée Acteurs & Use Cases Dans le modèle cible 53 54 Quel est l intérêt de QVT? QVT QVT fournit le socle des transformation model-to-model pour MDA Un langage standardisé pour exprimer les transformations intégrables dans les outils et manipulables par les [sur]humains Together La toute première implémentation QVT commerciale disponible sur le marché et bientôt au CRIO UNIX Fournit un environnement de développement robuste pour les architectes Editeur QVT syntaxe en couleurs, code completion, vérification d erreurs Debuggage interactif Usage facile de QVT dans le workspace Déploiement simplifié Génération du fichier de trace automatisé Navigation dans le modèle depuis le viewer de trace Facilement partageable avec le rôle Designer 55 AOP : Aspect Oriented Programming Avant class Line { private Point p, p2; Point getp() { return p; Point getp2() { return p2; void setp(point p) { this.p = p; Display.update(this); void setp2(point p2) { this.p2 = p2; Display.update(this); class Point { private int x = 0, y = 0; int getx() { return x; int gety() { return y; void setx(int x) { this.x = x; Display.update(this); void sety(int y) { this.y = y; Display.update(this); aspect DisplayUpdating { pointcut move(figureelement figelt): target(figelt) && (call(void FigureElement.moveBy(int, int) call(void Line.setP(Point)) call(void Line.setP2(Point)) call(void Point.setX(int)) call(void Point.setY(int))); after(figureelement fe) returning: move(fe) { Display.update(fe); Réduction des interférences rences Augmentation significative de la lisibilité Après class Line { private Point p, p2; Point getp() { return p; Point getp2() { return p2; void setp(point p) { this.p = p; void setp2(point p2) { this.p2 = p2; class Point { private int x = 0, y = 0; int getx() { return x; int gety() { return y; void setx(int x) { this.x = x; void sety(int y) { this.y = y; 56

Assemblage dynamique (DCC ) Exemple Kilim/ObjectWeb + Kelua Kawana www.kelua.com 57 : DCC : Dynamic Component Composition 5.3 Conclusion Bilan de l agilité. Perspectives. Devoirs. Bonus Bibliographie (Kit de survie) 58 L agilité Définitions. Dictionnaire de L'Académie française, Première édition, 694 Agile (AGIR) Agile. adj. de tout genre, Leger & dispos, qui a une grande facilité à se mouvoir à agir, il ne se dit guère que du corps. Merveilleusement agile. le tigre, le singe sont des animaux fort agiles. Agilité (AGIR). subst. fem. Légèreté, disposition du corps à se mouvoir avec facilité. Il saute avec une grande agilité. Rigidité (RIGUEUR) Rigidité. substant. fem. Grande séverité, inflexibilité. Les Magistrats font observer la loy contre les duels avec une extrême rigidité. la rigidité de ses moeurs. Repères Stimuli ou besoin Vitesse de réaction Facilité => coût minimal / économique. «Besoin-vitesse-coût» Application de la grille dans les SI Performances. «du clic au résultat» Performances individuelles des applications» Mesurables avec des outils de profiling, montée en charge Échanges efficaces entre applications (de générations différentes).» Problématique : partage, répartition, notification Concerne : applis, réseau, matériel, OS, EAI, BD Couverture des besoins Exprimé : analysé, conçu, implémenté, déployé, documenté Non exprimé, mais proche : couvert si flexibilité, généricité, voire générosité de la part d informaticiens visionnaires» Disponibilité directe (documenté ou pas), passage FF->» Réclame une configuration accessible / run-time» Configuration prévue à la conception Non prévu : capacité à l intégrer à faible coût» Maîtrise de l impact, modularisation, productivité» Vision claire, actions planifiées, non régression 59 60

Solutions flexibles Bilan Tableur? Typage absent, sans contraintes, ouvert, parfois utile Allier rigueur et souplesse Table de référence, fichier/table de configuration Orientation objet, modélisation visuelle, UML Patterns (composite) Stratégies évolutives Refactoring, metapatterns & xunit Méthodologie souple Vigilance permanente / performances & robustesse Optimize-it, jprobe, gpprofiler, xunit Tests quotidiens et automatiques Problématique de l agilité : changement fréquents Grille besoin-vitesse-coûts Solutions techniques et méthodologiques L agilité au long du cycle de vie Exigences EOO Analyse et conception UML+DP+MP XUML Implémentation Déploiement SCM OOP+AOP O/R XP DCC 6 MDA 62 Perspectives Spéculation «crédible» (à quel terme?, crise => techno++) Fonctionnel orienté composants IDE / RAD : Drag&Drop de classes métier Pilotage par le modèle : MDA Cibles diverses, coexistantes : Windows, Linux, J2EE, DOTNET Technologie de programmation : souterraine SQL, XML, EJBQL, JDOQL, OCL, UML, L3G Ponts Génération de code, tissage ou assemblage dynamique Nouvelles problématiques Traçabilité au long du cycle de vie : E-A&C-I-D, mais aussi entre itérations : versions et configurations cohérentes Cohabitation entre les applications du SI : niveau d agilité et d évolution non uniforme : versions de schéma et données Historisation, variantes de Base de Données mais ça, c est une autre «histoire» Bibliographie Fowler & Scott : UML Distilled, Second ed., Addison Wesley (AW), 2000 Rosenberg & Scott : Use Case Driven Object Modeling using UML. AW/99 Gamma & al. : Design Patterns / CD. 95 Blaha & Rumbaugh : Object-Oriented Modeling and Design with UML, P/PH, 2005 Coad, Lefebre & DeLuca : Java modeling in Colors, PH99, www.coad.com/peter Pree : Design patterns for Object-Oriented Software Development, AW, 995 Pree W., Hot-Spot-Driven Development, pp.379-394, in Building Application Frameworks, Ed Fayad, M, Wiley, 998 Meszaros & Doble, A Patterns Language for Pattern Writting, pp.530-574, in Patterns Languages of Program Design Vol 3, Ed. Martin R., Riehle D., Buschmann F., Addison- Wesley Longman, 998 Tokuda, PhD disertation http://citeseer.nj.nec.com/tokuda99evolving.html www.extremeprogramming.org http://c2.com/cgi/wiki?extremeprogrammingsummary www.xprogramming.com www.xp23.com Google : AOP, AspectJ, MDA/OMG, Ambler, Keller, JDO 63 70