Avant-propos 1. Objectifs 17 2. Public visé 18 3. Organisation de l ouvrage 18 Ingénierie pilotée par les modèles 1. Sémantique introductive 19 1.1 Designer 21 1.2 Finitude 21 1.3 Conjectures 22 2. Architecture logicielle 23 2.1 Architecte 23 2.2 Points clés d une architecture 24 2.3 Challenges 24 2.4 Agilité 25 2.5 Spécification 25 2.5.1 Le System Architecture Document (SAD) 25 2.5.2 Le Guide de design des composants 26 2.5.3 Le Prototype architectural 26 2.5.4 Le Modèle 26 2.6 Workflow 27 2.6.1 Spécification des exigences 27 2.6.2 Analyse architecturale 28 2.6.3 Design architectural 28 2.6.4 Design orienté objet 29 3. Architecture pilotée par les modèles (MDA) 29 1/16
3.1 Fondations 30 3.1.1 MOF 30 3.1.2 XMI 30 3.1.3 UML 31 3.1.4 OCL 31 3.2 Architecture MDA 31 3.2.1 Cycle de vie du développement 31 3.2.2 Modèle indépendant de la plateforme (PIM) 32 3.2.3 Modèle spécifique à la plateforme (PSM) 33 3.2.4 Code 33 3.3 Exemple 33 3.3.1 PIM 34 3.3.2 PSM base de données 34 3.3.3 PSM Java 36 3.3.4 Code 37 3.4 Conclusion 38 Approche processus 1. Management 39 1.1 Arborescence 39 1.2 Machine à café 40 1.3 Organisation 41 1.4 Kanban 42 1.5 PMBOK 42 2. Processus 45 2.1 Manifeste 46 2.2 Cycle vertueux 47 2.3 Qualité 48 2.4 Classification 49 2.5 Choix cornélien 49 3. Maturité 50 2/16
4. Épistémologie 53 4.1 Le formalisme libère! 53 4.2 Waterfall 54 4.3 Prototype 57 4.4 Spirale 58 4.5 Itération 60 4.6 SADD 61 5. Agilité 63 5.1 Manifeste Agile 63 5.2 Principes 64 5.3 Gourous 65 5.4 Le grand mix 66 5.5 Détracteurs 67 Méthodes agiles 1. Extreme Programming 69 1.1 Quatre valeurs 69 1.2 Douze pratiques 70 1.2.1 Développement piloté par les tests (TDD) 70 1.2.2 Le jeu du planning 70 1.2.3 Client dans l équipe 71 1.2.4 Petites livraisons 71 1.2.5 Usage des métaphores 71 1.2.6 Design simple 72 1.2.7 Refactorisation à outrance 72 1.2.8 Propriété collective 72 1.2.9 Programmation par binômes 73 1.2.10 Intégration continue 73 1.2.11 Rythme de travail raisonnable 73 1.2.12 Conventions de nommage 73 1.3 Particularités 73 3/16
1.3.1 Humanisme 73 1.3.2 Vélocité 74 1.3.3 YAGNI 75 1.3.4 Espace 75 1.4 Conclusion 75 1.4.1 Architecture émergente 76 1.4.2 Exosquelette 76 1.4.3 Entropie 77 2. Scrum 78 2.1 Concept 78 2.2 Processus 79 2.3 Rôles 80 2.3.1 Product Owner 80 2.3.2 Team 81 2.3.3 Scrum Master 81 2.4 Backlog 82 2.5 Sprint Planning 83 2.6 Daily Scrum 84 2.7 Burndown Chart 84 2.8 Bénéfices 85 2.9 Questions socratiques 85 2.10 Tour d ivoire 86 3. Processus Unifié Ouvert (Open UP) 87 3.1 Rational Unified Process (RUP) 87 3.2 Open UP 88 3.3 Principes 88 3.4 Organisation 89 3.4.1 Zone de contenu 89 3.4.2 Rôles 90 3.5 Cycle de vie du projet 91 3.5.1 Inception 92 3.5.2 Élaboration 92 3.5.3 Construction 92 4/16
3.5.4 Transition 92 3.6 Itérations 92 Spécifications 1. Exigences 97 1.1 Formulations 97 1.1.1 Café 98 1.1.2 Code 98 1.1.3 Tests 99 1.1.4 Modèle 99 1.1.5 Backlog 99 1.1.6 Documents 100 1.2 Les parties prenantes 100 1.3 Typologie des exigences 100 1.3.1 Fonctionnalité 101 1.3.2 Exigences fonctionnelles 101 1.3.3 Cas d utilisation 101 1.3.4 Prototype 102 1.4 Exigences non fonctionnelles 102 1.4.1 Disponibilité 102 1.4.2 Fiabilité 102 1.4.3 Souplesse 102 1.4.4 Flexibilité 103 1.4.5 Performance 103 1.4.6 Montée en charge 103 1.4.7 Réutilisation 104 1.4.8 Sécurité 104 2. Ingénierie 104 2.1 Capture 104 2.2 Analyse 105 2.3 Documentation 106 2.4 Validation 106 5/16
2.5 Gestion 106 3. Vision 106 3.1 Exigences d entreprise 107 3.1.1 Fondements 107 3.1.2 Opportunité commerciale 107 3.1.3 Objectifs commerciaux et critères de succès 107 3.1.4 Besoins clients 108 3.1.5 Risques métier 108 3.2 Vision de la solution 108 3.2.1 Énoncé de la vision 108 3.2.2 Fonctionnalités majeures 108 3.2.3 Hypothèses et dépendances 108 3.2.4 Périmètre et limitations 109 3.2.5 Périmètre de la version initiale 109 3.2.6 Périmètre des versions ultérieures 109 3.2.7 Limitations et exclusions 109 3.3 Contexte métier 109 3.3.1 Profil des parties prenantes 110 3.3.2 Priorités du projet 110 3.3.3 Environnement d exécution 110 4. Spécification 110 4.1 Introduction 111 4.1.1 Intention 111 4.1.2 Conventions 111 4.1.3 Audience 111 4.1.4 Cadre du projet 111 4.1.5 Références 111 4.2 Description générale 111 4.2.1 Perspective du produit 111 4.2.2 Fonctionnalités du produit 112 4.2.3 Classes d utilisateurs 112 4.2.4 Environnement opérationnel 112 4.2.5 Contraintes de design et d implémentation 112 6/16
4.2.6 Documentation utilisateur 112 4.2.7 Hypothèses et dépendances 112 4.3 Fonctionnalités du système 113 4.4 Exigences des interfaces externes 114 4.4.1 Interfaces utilisateur 114 4.4.2 Interfaces matérielles 114 4.4.3 Interfaces logicielles 114 4.4.4 Interfaces de communication 114 4.4.5 Exigences non fonctionnelles 114 4.5 Appendices 115 5. Modélisation 116 5.1 Modèle fonctionnel 116 5.1.1 Exigences 116 5.1.2 Reporting 117 5.1.3 Diagrammes d exigences 119 5.1.4 Diagrammes de cas d utilisation 119 5.2 Gestion du changement 120 5.2.1 Traçabilité 121 5.2.2 Matrice 122 Cas d utilisation 1. Histoires d usage 123 1.1 Historique 124 1.2 Terminologie 124 1.2.1 Acteur 124 1.2.2 Scénario 124 1.2.3 Étape 125 1.3 Formalisme 125 1.3.1 Tout habillé 125 1.3.2 Relaxe 127 1.4 Rédaction 127 1.5 Erreurs classiques 128 7/16
2. Diagrammes 128 3. Use Case points 129 3.1 Pourquoi l utiliser? 129 3.2 Adoption 129 3.3 Auteurs 130 3.4 Méthode de Karner 130 4. Étude de cas 134 4.1 Exigences 134 4.2 Cas d utilisation 135 4.2.1 Version intégrale 135 4.2.2 Version allégée 138 4.3 Modèle UML 139 4.4 Estimation de coûts 140 4.4.1 Estimation 141 4.4.2 Conclusion 143 Test et assurance qualité 1. Contexte 145 1.1 Utilisation 145 1.1.1 Agilité 145 1.1.2 Refactorisation 147 1.1.3 Intégration continue 148 1.2 Granularité 150 1.2.1 Tests d acceptance 151 1.2.2 Tests unitaires 152 1.3 Plan de test 152 1.3.1 Smoke testing 153 1.3.2 Positive/Negative testing 153 1.3.3 Performance testing 153 1.3.4 Stress testing 154 8/16
1.4 Testabilité 154 1.4.1 Membres statiques 155 1.4.2 Encapsulation 155 1.4.3 Non-MVC 155 1.4.4 IOC 155 1.4.5 Factory 155 2. Outils 155 2.1 JUnit 155 2.2 JMeter 156 2.3 Code coverage 157 3. Techniques 160 3.1 Boîte noire 160 3.1.1 Exemple 161 3.1.2 Corolaire de Gödel 162 3.2 Boîte blanche 163 3.3 Tests d interface 164 3.4 Mock object 165 Architectures d application 1. Principes d architecture 169 2. Couches 169 2.1 Présentation 170 2.2 Logique métier 171 2.3 Accès aux données 171 3. Tier 171 3.1 Monolithique 172 3.1.1 Mise à jour automatique 172 3.1.2 Compatibilité 174 9/16
3.1.3 Business model 174 3.2 Le deuxième tier 174 3.3 Architectures n-tier 175 3.3.1 Schéma conceptuel 175 3.3.2 Avantages 176 3.3.3 Linéarité 176 3.3.4 Client léger 177 3.3.5 Middle-tier 177 4. MVC 178 4.1 Bénéfices 178 4.2 Workflow 179 4.3 Différences 180 5. Applications mobiles 180 5.1 Développement natif 181 5.2 Application web 182 5.3 Approche hybride 182 6. Exemple 183 6.1 Architecture 183 6.1.1 3-tier 183 6.1.2 Modèle MVC 184 6.2 Implémentation 184 6.2.1 Vue 185 6.2.2 Contrôleur 188 6.2.3 Modèle 190 6.3 Conclusion 192 Architectures d intégration 1. Paysage IT 193 1.1 Évolution des SI 193 1.2 Les limites de l objet 194 10/16
2. Architecture orientée services (SOA) 195 2.1 Le concept de service 195 2.2 Vue d ensemble 196 2.3 Service 197 2.3.1 Contrat 197 2.3.2 Interface 197 2.3.3 Implémentation 198 2.3.4 Logique métier 198 2.3.5 Données 198 2.4 Bus de services 198 2.4.1 Journalisation 200 2.4.2 Sécurité 200 2.4.3 Transaction 201 2.5 Dépôt de services 201 2.5.1 Utilité 201 2.5.2 Liaison 202 2.6 Application front-end 202 3. Technologies 203 3.1 Systèmes distribués 203 3.1.1 Objets distribués (ORB) 203 3.1.2 Middleware orienté messages (MOM) 204 3.1.3 Serveurs d application 205 3.2 Services web 206 3.2.1 WSDL 206 3.2.2 SOAP 208 3.2.3 UDDI 210 3.2.4 BPMN 210 3.2.5 BPEL 210 3.3 RESTful web services 215 3.3.1 REST 215 3.3.2 WADL 217 3.4 Stubs et Dispatcher 219 3.4.1 Top/Down 220 11/16
3.4.2 Bottom/Up 220 3.4.3 MDA 221 Modélisation 1. MERISE 223 1.1 Origine 224 1.2 Cycle de vie 224 1.3 Modèle conceptuel de données (MCD) 225 1.3.1 Entités 225 1.3.2 Associations 226 1.3.3 Cardinalités 227 1.3.4 Dimension 228 1.3.5 Méthode 229 1.3.6 Formes normales 230 1.4 Modèle logique des données (MLD) 231 1.4.1 Tables 231 1.4.2 Relations n/m 232 1.4.3 Relations 1/n 233 1.5 Modèle physique des données (MPD) 233 2. UML 234 2.1 Modèles et vues 236 2.2 Éléments 236 2.2.1 Classe 237 2.2.2 Interface 239 2.2.3 Package 240 2.2.4 Composant 240 2.2.5 Nœud 241 2.2.6 État 241 2.3 Relations 242 2.3.1 Types 242 2.3.2 Multiplicité 243 2.4 Notes et stéréotypes 244 12/16
2.5 Diagrammes 245 2.5.1 Diagramme de classes 245 2.5.2 Diagramme de structure composite 247 2.5.3 Diagramme de composants 248 2.5.4 Diagramme de déploiement 249 2.5.5 Diagramme d objets 250 2.5.6 Diagramme de packages 250 2.5.7 Diagramme de profils 251 2.5.8 Diagramme d activité 252 2.5.9 Diagramme de cas d utilisation 253 2.5.10 Machine à états 254 2.5.11 Diagramme de timing 255 2.5.12 Diagramme de séquence 255 2.5.13 Diagramme de communication 257 2.5.14 Diagramme global d interaction 258 Conception orientée objet 1. L avènement des objets 261 1.1 Quelles sont les différences? 262 1.2 Complexité 262 1.2.1 Modularité 262 1.2.2 Abstraction 263 1.2.3 Polymorphisme 263 1.3 Entropie 263 2. Principes élémentaires 264 2.1 Encapsulation 264 2.1.1 Comment l'appliquer? 264 2.1.2 Exemple 264 2.2 Cohésion 265 2.3 Couplage 266 3. Principes avancés 266 13/16
3.1 Responsabilité unique (SRP) 266 3.1.1 Comment l'appliquer? 267 3.1.2 Exemple 268 3.2 Ouverture/fermeture (OCP) 270 3.2.1 Comment l'appliquer? 270 3.2.2 Exemple 1 271 3.2.3 Exemple 2 271 3.3 Substitution de Liskov (LSP) 272 3.4 Ségrégation d interfaces (ISP) 276 3.5 Inversion de dépendances (DIP) 277 3.6 Inversion de contrôle (IOC) 280 3.6.1 Service locator 282 3.6.2 Injection par container 283 4. Conclusion 285 Design Patterns 1. Introduction 287 1.1 Genèse 288 1.2 Origine 288 1.3 Définition 289 1.4 Intérêt 289 1.5 Formalisme 290 2. Patterns 291 2.1 Création 292 2.1.1 Abstract Factory 292 2.1.2 Builder 294 2.1.3 Factory Method 296 2.1.4 Prototype 297 2.1.5 Singleton 299 2.2 Structure 300 2.2.1 Adapter 300 14/16
2.2.2 Bridge 302 2.2.3 Composite 303 2.2.4 Decorator 305 2.2.5 Facade 306 2.2.6 Flyweight 308 2.2.7 Proxy 309 2.3 Comportement 311 2.3.1 Chain of Responsibility 311 2.3.2 Command 313 2.3.3 Interpreter 314 2.3.4 Iterator 316 2.3.5 Mediator 317 2.3.6 Memento 319 2.3.7 Observer 320 2.3.8 State 321 2.3.9 Strategy 322 2.3.10 Template Method 324 2.3.11 Visitor 325 Boîte à outils 1. Métrologie 329 1.1 Productivité 329 1.1.1 Métriques d ordre général 330 1.1.2 Lignes de code (LOC) 330 1.2 Qualité du design 331 1.2.1 Complexité cyclomatique 331 1.2.2 Couplage entre objets (CBO) 331 1.2.3 Manque de cohésion des méthodes (LCOM) 332 1.3 Qualité de service 332 1.3.1 Durée moyenne de panne (MTTF) 332 1.3.2 Défauts par lignes de code 332 1.4 Exemple 333 1.4.1 Classe à l étude 333 15/16
1.4.2 Résultats 335 2. Outils CASE 336 2.1 Références 337 2.1.1 ArgoUML 337 2.1.2 Rational software 337 2.1.3 PowerAMC 337 2.1.4 Objecteering 338 2.1.5 Entreprise Architect 338 2.2 Génie logiciel 338 2.2.1 Génération de code 338 2.2.2 Reverse engineering 344 2.2.3 Synchronisation 346 2.3 Documentation 346 2.4 Analyse d exécution 346 3. Traité d esthétisme 347 3.1 Théorie constructale 347 3.2 Le nombre d or 348 3.3 Émergence 349 Bibliographie 351 Index 353 16/16