27
omas BAILET Pour une approche organisationnelle, fonctionnelle et technique Architecture logicielle 2 e édition

Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

Thomas BAILET

Arc

hite

ctur

e lo

gici

elle

Pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

Architecture logicielle Pour une approche organisationnelle,fonctionnelle et techniqueCe livre s’adresse aux DSI, chefs de projets, maîtres d’ouvrage, architectes, administrateurs ou développeurs ; il peut également intéresser les étudiants en informatique ou toute personne impliquée dans un projet logiciel exigeant. Tout au long du livre, l’auteur propose une approche didactique et accessible qui permet de donner au lecteur une vision claire de la dimension architecturale des systèmes informatiques.Le livre révèle les liens tissés par les disciplines afférentes à la réalisation d’un pro-jet logiciel d’envergure, agile et réactif. Il permet au lecteur de comprendre comment bâtir un système qui soit à la fois capable de répondre aux besoins du client, de réaliser les objectifs métiers de l’entreprise, tout en optimisant sa pro-duction, en facilitant sa maintenance, en s’intégrant aux infrastructures existantes, en rationalisant les coûts et en anticipant sa montée en charge.Le lecteur progresse du niveau fonctionnel jusqu’à la technique pure. Il commence par appréhender les processus de développement les plus répan-dus, qu’ils soient agiles ou formels. Il découvre ensuite les techniques de recueil des exigences et d’élaboration des cas d’utilisation. Il aboutit enfin aux différents concepts d’architectures multi-tiers, distribuées, orientées ser-vices/messages et mobiles avant d’approfondir les tests automatisés, la mo-délisation, la conception orientée objet, la programmation fonctionnelle et les design patterns en passant par les bases de données NoSQL. Cette deuxième édition s’enrichit de trois nouveaux chapitres couvrant les briques fondamentales du Big Data, tant au niveau des modes de stockage distribués que des techniques de traitements massivement parallèles, les principes de λ-Architecture et le design d’applications réactives grâce à la programma-tion fonctionnelle.

Thomas BAILET est consultant en Architecture de systèmes Big Data. Mathématicien diplômé de l’univer-sité de Toulouse, il a effectué une car-rière professionnelle dans l’apprentis-sage automatique et le génie logiciel auprès de grandes entreprises dans le domaine de la micro-électronique comme Motorola, au sein de sociétés de service et de start-up innovantes. Il a fondé un studio de création multimé-dia, a participé à la conception de logi-ciels de synchronisation de données, d’applications mobiles et d’applica-tions distribuées. Il est depuis quelques années directeur technique d’Hurence, une des entreprises leader du consul-ting Big Data en France. Son expérience dans l’élaboration d’architectures com-plexes est riche. Il la partage à travers ce livre pour fournir au lecteur un manuel didactique qui expose de façon claire l’essentiel de l’architecture logicielle.

Avant-propos • Ingénierie pilotée par les modèles • Approche processus • Mé-thodes agiles • Spécifications • Cas d’utilisation • Test et assurance qualité • Archi-tectures d’application • Architectures d’intégration • Conception orientée objet • Stockages distribués  • Traitements et architectures distribués  • Modélisation  • Design patterns • Programmation fonctionnelle • Boîte à outils • Bibliographie

Les chapitres du livre

isbn

: 978

-2-7

460-

9921

-0

45 €

2e édition

Nouvelle édition

Pour plus d’informations :

Page 2: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

1Table des matières

Avant-propos

1. Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2. Public visé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3. Organisation de l’ouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Chapitre 1Ingénierie pilotée par les modèles

1. Sémantique introductive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.1 Designer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.2 Finitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.3 Conjectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2. Architecture logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.1 Architecte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.2 Points clés d’une architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.3 Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.4 Agilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.5 Spécification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.5.1 Le System Architecture Document (SAD) . . . . . . . . . . . . 292.5.2 Le Guide de design des composants . . . . . . . . . . . . . . . . . 302.5.3 Le Prototype architectural . . . . . . . . . . . . . . . . . . . . . . . . . 302.5.4 Le Modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.6 Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.6.1 Spécification des exigences . . . . . . . . . . . . . . . . . . . . . . . . 312.6.2 Analyse architecturale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.6.3 Design architectural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.6.4 Design orienté objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3. Architecture pilotée par les modèles (MDA) . . . . . . . . . . . . . . . . . . . 333.1 Fondations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.1.1 MOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.1.2 XMI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.1.3 UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Page 3: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

2pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

3.1.4 OCL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2 Architecture MDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.2.1 Cycle de vie du développement. . . . . . . . . . . . . . . . . . . . . 353.2.2 Modèle indépendant de la plateforme (PIM) . . . . . . . . . . 363.2.3 Modèle spécifique à la plateforme (PSM). . . . . . . . . . . . . 373.2.4 Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.3 Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.3.1 PIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.2 PSM base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.3 PSM Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.3.4 Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Chapitre 2Approche processus

1. Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431.1 Arborescence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431.2 Machine à café . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441.3 Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451.4 Kanban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461.5 PMBOK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2. Processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492.1 Manifeste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.2 Cycle vertueux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.3 Qualité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522.4 Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532.5 Choix cornélien. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

3. Maturité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4. Épistémologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.1 Le formalisme libère ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.2 Waterfall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Page 4: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

3Table des matières

4.3 Prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.4 Spirale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.5 Itération. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.6 SADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5. Agilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.1 Manifeste Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.2 Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.3 Gourous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.4 Le grand mix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.5 Détracteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

Chapitre 3Méthodes agiles

1. Extreme Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731.1 Quatre valeurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731.2 Douze pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

1.2.1 Développement piloté par les tests (TDD) . . . . . . . . . . . 741.2.2 Le jeu du planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741.2.3 Client dans l’équipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751.2.4 Petites livraisons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751.2.5 Usage des métaphores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751.2.6 Design simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761.2.7 Refactorisation à outrance . . . . . . . . . . . . . . . . . . . . . . . . 761.2.8 Propriété collective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761.2.9 Programmation par binômes . . . . . . . . . . . . . . . . . . . . . . . 771.2.10 Intégration continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771.2.11 Rythme de travail raisonnable . . . . . . . . . . . . . . . . . . . . . 771.2.12 Conventions de nommage. . . . . . . . . . . . . . . . . . . . . . . . . 77

1.3 Particularités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771.3.1 Humanisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771.3.2 Vélocité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781.3.3 YAGNI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

Page 5: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

4pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

1.3.4 Espace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

1.4.1 Architecture émergente . . . . . . . . . . . . . . . . . . . . . . . . . . . 801.4.2 Exosquelette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801.4.3 Entropie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

2. Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822.1 Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822.2 Processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832.3 Rôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

2.3.1 Product Owner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842.3.2 Team . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852.3.3 Scrum Master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

2.4 Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862.5 Sprint Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872.6 Daily Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882.7 Burndown Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882.8 Bénéfices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892.9 Questions socratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892.10 Tour d’ivoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

3. Processus Unifié Ouvert (Open UP) . . . . . . . . . . . . . . . . . . . . . . . . . . 913.1 Rational Unified Process (RUP). . . . . . . . . . . . . . . . . . . . . . . . . . 913.2 Open UP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923.3 Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923.4 Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

3.4.1 Zone de contenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933.4.2 Rôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

3.5 Cycle de vie du projet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963.5.1 Inception. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963.5.2 Élaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963.5.3 Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963.5.4 Transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

3.6 Itérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

Page 6: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

5Table des matières

Chapitre 4Spécifications

1. Exigences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011.1 Formulations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

1.1.1 Café . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021.1.2 Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021.1.3 Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031.1.4 Modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031.1.5 Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031.1.6 Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

1.2 Les parties prenantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041.3 Typologie des exigences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

1.3.1 Fonctionnalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051.3.2 Exigences fonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . 1051.3.3 Cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051.3.4 Prototype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

1.4 Exigences non fonctionnelles. . . . . . . . . . . . . . . . . . . . . . . . . . . 1061.4.1 Disponibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061.4.2 Fiabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061.4.3 Souplesse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061.4.4 Flexibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071.4.5 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071.4.6 Montée en charge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071.4.7 Réutilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081.4.8 Sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

2. Ingénierie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082.1 Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082.2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092.3 Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102.4 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102.5 Gestion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

Page 7: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

6pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

3. Vision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103.1 Exigences d’entreprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

3.1.1 Fondements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1113.1.2 Opportunité commerciale . . . . . . . . . . . . . . . . . . . . . . . . 1113.1.3 Objectifs commerciaux et critères de succès . . . . . . . . . 1113.1.4 Besoins clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123.1.5 Risques métier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

3.2 Vision de la solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123.2.1 Énoncé de la vision. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123.2.2 Fonctionnalités majeures. . . . . . . . . . . . . . . . . . . . . . . . . 1123.2.3 Hypothèses et dépendances . . . . . . . . . . . . . . . . . . . . . . 1123.2.4 Périmètre et limitations . . . . . . . . . . . . . . . . . . . . . . . . . . 1133.2.5 Périmètre de la version initiale . . . . . . . . . . . . . . . . . . . . 1133.2.6 Périmètre des versions ultérieures . . . . . . . . . . . . . . . . . . 1133.2.7 Limitations et exclusions. . . . . . . . . . . . . . . . . . . . . . . . . 113

3.3 Contexte métier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133.3.1 Profil des parties prenantes . . . . . . . . . . . . . . . . . . . . . . . 1143.3.2 Priorités du projet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143.3.3 Environnement d’exécution . . . . . . . . . . . . . . . . . . . . . . 114

4. Spécification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

4.1.1 Intention. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.1.2 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.1.3 Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.1.4 Cadre du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.1.5 Références. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

4.2 Description générale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.2.1 Perspective du produit . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.2.2 Fonctionnalités du produit . . . . . . . . . . . . . . . . . . . . . . . 1164.2.3 Classes d’utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164.2.4 Environnement opérationnel . . . . . . . . . . . . . . . . . . . . . 1164.2.5 Contraintes de design et d’implémentation. . . . . . . . . . 1164.2.6 Documentation utilisateur . . . . . . . . . . . . . . . . . . . . . . . 116

Page 8: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

7Table des matières

4.2.7 Hypothèses et dépendances . . . . . . . . . . . . . . . . . . . . . . 1164.3 Fonctionnalités du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174.4 Exigences des interfaces externes . . . . . . . . . . . . . . . . . . . . . . . 118

4.4.1 Interfaces utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184.4.2 Interfaces matérielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184.4.3 Interfaces logicielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184.4.4 Interfaces de communication . . . . . . . . . . . . . . . . . . . . . 1184.4.5 Exigences non fonctionnelles . . . . . . . . . . . . . . . . . . . . . 118

4.5 Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

5. Modélisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205.1 Modèle fonctionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

5.1.1 Exigences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205.1.2 Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215.1.3 Diagrammes d’exigences . . . . . . . . . . . . . . . . . . . . . . . . . 1235.1.4 Diagrammes de cas d’utilisation . . . . . . . . . . . . . . . . . . . 123

5.2 Gestion du changement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1245.2.1 Traçabilité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1255.2.2 Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

Chapitre 5Cas d’utilisation

1. Histoires d’usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1281.2 Terminologie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

1.2.1 Acteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1281.2.2 Scénario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1281.2.3 Étape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

1.3 Formalisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1291.3.1 Tout habillé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1291.3.2 Relaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

Page 9: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

8pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

1.4 Rédaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1311.5 Erreurs classiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

2. Diagrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

3. Use Case points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1333.1 Pourquoi l’utiliser ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1333.2 Adoption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1333.3 Auteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343.4 Méthode de Karner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

4. Étude de cas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1384.1 Exigences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1384.2 Cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

4.2.1 Version intégrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1394.2.2 Version allégée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

4.3 Modèle UML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1434.4 Estimation de coûts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

4.4.1 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1454.4.2 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

Chapitre 6Test et assurance qualité

1. Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1491.1 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

1.1.1 Agilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1491.1.2 Refactorisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1511.1.3 Intégration continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

1.2 Granularité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1541.2.1 Tests d’acceptance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1551.2.2 Tests unitaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

1.3 Plan de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1561.3.1 Smoke testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1571.3.2 Positive/Negative testing. . . . . . . . . . . . . . . . . . . . . . . . . 157

Page 10: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

9Table des matières

1.3.3 Performance testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1571.3.4 Stress testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

1.4 Testabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1581.4.1 Membres statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1591.4.2 Encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1591.4.3 Non-MVC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1591.4.4 IOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1591.4.5 Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2. Outils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1592.1 JUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1592.2 JMeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1602.3 Code coverage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

3. Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1643.1 Boîte noire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

3.1.1 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1653.1.2 Corollaire de Gödel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

3.2 Boîte blanche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1673.3 Tests d’interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1683.4 Mock object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

Chapitre 7Architectures d’application

1. Principes d’architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

2. Couches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1732.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1742.2 Logique métier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1752.3 Accès aux données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

3. Tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1753.1 Monolithique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

3.1.1 Mise à jour automatique . . . . . . . . . . . . . . . . . . . . . . . . . 1763.1.2 Compatibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

Page 11: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

10pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

3.1.3 Business model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1783.2 Le deuxième tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1783.3 Architectures n-tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

3.3.1 Schéma conceptuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1793.3.2 Avantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803.3.3 Linéarité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803.3.4 Client léger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813.3.5 Middle-tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

4. MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1824.1 Bénéfices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1824.2 Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1834.3 Différences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

5. Applications mobiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1845.1 Développement natif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1855.2 Application web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1865.3 Approche hybride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

6. Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1876.1 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

6.1.1 3-tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1876.1.2 Modèle MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

6.2 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1886.2.1 Vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1896.2.2 Contrôleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1926.2.3 Modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

6.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

Page 12: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

11Table des matières

Chapitre 8Architectures d’intégration

1. Paysage IT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1971.1 Évolution des SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1971.2 Les limites de l’objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

2. Architecture orientée services (SOA) . . . . . . . . . . . . . . . . . . . . . . . . 1992.1 Le concept de service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1992.2 Vue d’ensemble. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2002.3 Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

2.3.1 Contrat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2012.3.2 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2012.3.3 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2022.3.4 Logique métier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2022.3.5 Données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

2.4 Bus de services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2022.4.1 Journalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2042.4.2 Sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2042.4.3 Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

2.5 Dépôt de services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2052.5.1 Utilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2052.5.2 Liaison. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

2.6 Application front-end. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

3. Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073.1 Systèmes distribués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

3.1.1 Objets distribués (ORB) . . . . . . . . . . . . . . . . . . . . . . . . . 2073.1.2 Middleware orienté messages (MOM) . . . . . . . . . . . . . . 2083.1.3 Serveurs d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

3.2 Services web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2103.2.1 WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2103.2.2 SOAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2123.2.3 UDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2143.2.4 BPMN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Page 13: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

12pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

3.2.5 BPEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2153.3 RESTful web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

3.3.1 REST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193.3.2 WADL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

3.4 Stubs et Dispatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2233.4.1 Top/Down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2243.4.2 Bottom/Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2243.4.3 MDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

Chapitre 9Conception orientée objet

1. L’avènement des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2271.1 Quelles sont les différences ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 2281.2 Complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

1.2.1 Modularité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2281.2.2 Abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291.2.3 Polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

1.3 Entropie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

2. Principes élémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2302.1 Encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

2.1.1 Comment l'appliquer ? . . . . . . . . . . . . . . . . . . . . . . . . . . 2302.1.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

2.2 Cohésion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312.3 Couplage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

3. Principes avancés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323.1 Responsabilité unique (SRP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

3.1.1 Comment l'appliquer ? . . . . . . . . . . . . . . . . . . . . . . . . . . 2333.1.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

3.2 Ouverture/fermeture (OCP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2363.2.1 Comment l'appliquer ? . . . . . . . . . . . . . . . . . . . . . . . . . . 2363.2.2 Exemple 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373.2.3 Exemple 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

Page 14: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

13Table des matières

3.3 Substitution de Liskov (LSP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2383.4 Ségrégation d’interfaces (ISP) . . . . . . . . . . . . . . . . . . . . . . . . . . 2423.5 Inversion de dépendances (DIP) . . . . . . . . . . . . . . . . . . . . . . . . 2433.6 Inversion de contrôle (IOC). . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

3.6.1 Service locator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473.6.2 Injection par container . . . . . . . . . . . . . . . . . . . . . . . . . . 248

4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

Chapitre 10Stockages distribués

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

2. Big Data et scalabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522.1 Les enjeux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522.2 Les nouveaux métiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2532.3 Les cas d’usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

2.3.1 Modélisation des risques . . . . . . . . . . . . . . . . . . . . . . . . . 2542.3.2 Analyse de la perte des clients (churn) . . . . . . . . . . . . . . 2552.3.3 Moteur de recommandations . . . . . . . . . . . . . . . . . . . . . 2552.3.4 Ciblage publicitaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552.3.5 Prédiction de pannes par analyse réseau. . . . . . . . . . . . . 2562.3.6 Détection de fraudes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562.3.7 Recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562.3.8 Bac à sable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

2.4 Les distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572.5 Les grands acteurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

3. Hadoop et le Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2583.1 HDFS : un système de fichiers distribué . . . . . . . . . . . . . . . . . . 259

3.1.1 Architecture HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613.1.2 Réplication des données . . . . . . . . . . . . . . . . . . . . . . . . . 262

3.2 Paradigme MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2623.3 Orchestration des jobs avec YARN . . . . . . . . . . . . . . . . . . . . . . 264

Page 15: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

14pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

3.4 Un exemple en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

4. Stockages NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2684.1 NoSQL ou la fin des formes normales. . . . . . . . . . . . . . . . . . . . 2694.2 Schémas et formats de sérialisation . . . . . . . . . . . . . . . . . . . . . 270

4.2.1 Protocoles d’échange de données . . . . . . . . . . . . . . . . . . 2704.2.2 Apache Parquet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

4.3 HBase, une base de données clé/valeur orientée colonnes . . . . 2754.4 Lucene et les moteurs de recherche . . . . . . . . . . . . . . . . . . . . . . 277

4.4.1 Les annuaires inversés . . . . . . . . . . . . . . . . . . . . . . . . . . . 2784.4.2 Le sharding pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

4.5 Bases de données orientées graphes. . . . . . . . . . . . . . . . . . . . . . 2844.5.1 Que peut-on faire avec des graphes ? . . . . . . . . . . . . . . . 2854.5.2 Quid des performances ? . . . . . . . . . . . . . . . . . . . . . . . . . 287

Chapitre 11Traitements et architectures distribués

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

2. Écosystème Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2892.1 Acquisition des données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

2.1.1 Sqoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2902.1.2 Flume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2922.1.3 Storm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2962.1.4 Kafka. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

2.2 Traitements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3002.2.1 Pig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3002.2.2 Hive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

2.3 Traitements itératifs avec Spark . . . . . . . . . . . . . . . . . . . . . . . . 3022.3.1 Faiblesses d'Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3022.3.2 Jeux de données résilients et distribués (RDD) . . . . . . . 3032.3.3 Modèle d’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3052.3.4 MapReduce avec Spark . . . . . . . . . . . . . . . . . . . . . . . . . . 306

Page 16: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

15Table des matières

3. λ-Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3073.1 Principes et avantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

3.1.1 Batch layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3093.1.2 Realtime layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3103.1.3 Serving layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

3.2 Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3113.3 Pile technologique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3123.4 Architecture log-centric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

3.4.1 Concept de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3133.4.2 Systèmes distribués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3143.4.3 Intégration des données. . . . . . . . . . . . . . . . . . . . . . . . . . 315

Chapitre 12Modélisation

1. MERISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3171.1 Origine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3181.2 Cycle de vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3181.3 Modèle conceptuel de données (MCD). . . . . . . . . . . . . . . . . . . 319

1.3.1 Entités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3191.3.2 Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3201.3.3 Cardinalités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3211.3.4 Dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3221.3.5 Méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3231.3.6 Formes normales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

1.4 Modèle logique des données (MLD) . . . . . . . . . . . . . . . . . . . . . 3251.4.1 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3251.4.2 Relations n/m. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3261.4.3 Relations 1/n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

1.5 Modèle physique des données (MPD). . . . . . . . . . . . . . . . . . . . 327

Page 17: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

16pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

2. UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3282.1 Modèles et vues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3302.2 Éléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

2.2.1 Classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3312.2.2 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3332.2.3 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3342.2.4 Composant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3342.2.5 Nœud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3352.2.6 État . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

2.3 Relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3362.3.1 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3362.3.2 Multiplicité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

2.4 Notes et stéréotypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3382.5 Diagrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

2.5.1 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 3402.5.2 Diagramme de structure composite . . . . . . . . . . . . . . . . 3412.5.3 Diagramme de composants . . . . . . . . . . . . . . . . . . . . . . . 3422.5.4 Diagramme de déploiement . . . . . . . . . . . . . . . . . . . . . . 3432.5.5 Diagramme d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3442.5.6 Diagramme de packages . . . . . . . . . . . . . . . . . . . . . . . . . 3442.5.7 Diagramme de profils . . . . . . . . . . . . . . . . . . . . . . . . . . . 3452.5.8 Diagramme d’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . 3462.5.9 Diagramme de cas d’utilisation. . . . . . . . . . . . . . . . . . . . 3472.5.10 Machine à états . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3482.5.11 Diagramme de timing . . . . . . . . . . . . . . . . . . . . . . . . . . . 3492.5.12 Diagramme de séquence . . . . . . . . . . . . . . . . . . . . . . . . . 3492.5.13 Diagramme de communication. . . . . . . . . . . . . . . . . . . . 3512.5.14 Diagramme global d’interaction . . . . . . . . . . . . . . . . . . . 352

Page 18: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

17Table des matières

Chapitre 13Design patterns

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3551.1 Genèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3561.2 Origine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3561.3 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3571.4 Intérêt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3571.5 Formalisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

2. Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3592.1 Création. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

2.1.1 Abstract Factory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3602.1.2 Builder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3622.1.3 Factory Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3642.1.4 Prototype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3652.1.5 Singleton. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

2.2 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3682.2.1 Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3682.2.2 Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3702.2.3 Composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3712.2.4 Decorator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3732.2.5 Facade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3742.2.6 Flyweight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3762.2.7 Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

2.3 Comportement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3792.3.1 Chain of Responsibility . . . . . . . . . . . . . . . . . . . . . . . . . . 3792.3.2 Command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3812.3.3 Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3822.3.4 Iterator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3842.3.5 Mediator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3852.3.6 Memento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3872.3.7 Observer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

Page 19: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

18pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

2.3.8 State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3892.3.9 Strategy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3902.3.10 Template Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3922.3.11 Visitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

Chapitre 14Programmation fonctionnelle

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

2. Programmation fonctionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3972.1 Brève introduction à Scala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

2.1.1 Mutable/Immutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3992.1.2 Fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3992.1.3 Une classe simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3992.1.4 Les collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4002.1.5 Les itérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4002.1.6 Fonctions récursives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4012.1.7 Petit script pour compter les mots dans un fichier . . . . 401

2.2 Principes de programmation fonctionnelle. . . . . . . . . . . . . . . . 4022.2.1 Effets de bord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4022.2.2 Transparence référentielle et fonctions pures . . . . . . . . 4042.2.3 Des états immutables . . . . . . . . . . . . . . . . . . . . . . . . . . . 4062.2.4 Options et pattern matching . . . . . . . . . . . . . . . . . . . . . 4072.2.5 Boucles for-comprehension . . . . . . . . . . . . . . . . . . . . . . . 4082.2.6 Fainéantise et structures infinies . . . . . . . . . . . . . . . . . . 408

3. Théorie des catégories et design patterns . . . . . . . . . . . . . . . . . . . . . 4093.1 Monoïdes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

3.1.1 Quelques exemples mathématiques simples . . . . . . . . . 4103.1.2 Généralisation de la première équation : la fermeture. . 4113.1.3 Généralisation de la deuxième

équation : l’associativité . . . . . . . . . . . . . . . . . . . . . . . . . 4123.1.4 Généralisation de la troisième équation :

l’élément neutre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412

Page 20: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

19Table des matières

3.1.5 Récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4133.1.6 Usage des monoïdes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4133.1.7 Définition théorique en Scala . . . . . . . . . . . . . . . . . . . . . 414

3.2 Monades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4153.2.1 Un exemple concret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4163.2.2 La monade Option[T] . . . . . . . . . . . . . . . . . . . . . . . . . . . 4173.2.3 Utilisation fonctionnelle de la monade Option . . . . . . . 4183.2.4 Travail sur les listes et les boucles for-comprehension . 4193.2.5 Try[T] au secours des exceptions . . . . . . . . . . . . . . . . . . 4203.2.6 Définition théorique d’une monade . . . . . . . . . . . . . . . . 4243.2.7 Les lois des monades . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

4. Systèmes réactifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4274.1 Reactive manifesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4284.2 Le modèle d'acteurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

4.2.1 Concepts fondamentaux . . . . . . . . . . . . . . . . . . . . . . . . . 4304.2.2 Un système d’acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 4314.2.3 Un exemple avec Akka. . . . . . . . . . . . . . . . . . . . . . . . . . . 4314.2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

Chapitre 15Boîte à outils

1. Métrologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4351.1 Productivité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

1.1.1 Métriques d’ordre général . . . . . . . . . . . . . . . . . . . . . . . . 4361.1.2 Lignes de code (LOC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436

1.2 Qualité du design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4371.2.1 Complexité cyclomatique . . . . . . . . . . . . . . . . . . . . . . . . 4371.2.2 Couplage entre objets (CBO) . . . . . . . . . . . . . . . . . . . . . 4371.2.3 Manque de cohésion des méthodes (LCOM) . . . . . . . . . 438

1.3 Qualité de service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4381.3.1 Durée moyenne de panne (MTTF) . . . . . . . . . . . . . . . . . 4381.3.2 Défauts par ligne de code. . . . . . . . . . . . . . . . . . . . . . . . . 438

Page 21: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

20pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

1.4 Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4391.4.1 Classe à l’étude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4391.4.2 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441

2. Outils CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4422.1 Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

2.1.1 ArgoUML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4432.1.2 Rational software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4432.1.3 PowerAMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4432.1.4 Objecteering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4442.1.5 Enterprise Architect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444

2.2 Génie logiciel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4442.2.1 Génération de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4442.2.2 Reverse engineering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4502.2.3 Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452

2.3 Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4522.4 Analyse d’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452

3. Traité d’esthétisme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4533.1 Théorie constructale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4533.2 Le nombre d’or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4543.3 Émergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455

Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459

Page 22: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

43

Chapitre 2

Approche processus

Approche processus1. Management

Dans son ouvrage « Le mythe du mois-homme » – dont on ne saurait troprecommander la lecture –, Frederick P. Brooks cite le projet de la Tour de Babelet le décrit comme le premier fiasco de l’histoire du génie civil ; il analyse ceratage sous l’angle de l’ingénierie et en explique les raisons : malgré un objectifclair, de la main-d'œuvre et des matériaux en quantité, sans contrainte ni detemps ni de technologie, le projet échouera bien avant d’atteindre l’une de seslimites. Les causes de cet échec sont pour lui amplement imputables à undéfaut de communication et, par extension, à un manque d’organisation.Selon lui, lorsque la coordination échoue, le projet s’arrête.

1.1 Arborescence

Pour éviter les inévitables conflits organisationnels, on a longtemps considéré– et c’est encore largement le cas aujourd’hui – qu’un employé ne pouvaitrendre de comptes à plus d’un chef à la fois. Ce principe induit naturellementune structure arborescente des responsabilités. Attention toutefois à ne pasconfondre hiérarchie et communication : ce n’est pas parce qu’on en réfèrequ’à un supérieur qu’on n’obtiendra d'informations que de lui. Même si l’arbreest la structure la plus simple pour faire transiter des messages du haut vers lebas, c’est loin d’être la panacée lorsqu’on cherche à faire communiquer deux

Page 23: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

© E

dit

ions

EN

I -

All r

ights

rese

rved

44pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

nœuds du même niveau. Il faudra alors privilégier une structure sous forme degraphe.

De plus, si l’on regarde cette arborescence de responsabilités en cascade sousl’angle financier, on s’aperçoit aussi qu’elle n’est pas optimale. En effet, lathéorie de la gestion par activités, rendue publique en 1988 par le Consortiumfor Advanced Manufacturing, donne une méthodologie pour estimer le coût desactivités par processus. Il s’agit alors d’une approche horizontale, à l’instard’une chaîne de production, et qui permet aux dirigeants de piloter la consom-mation des ressources par activités plutôt que par enveloppes allouées auxobjectifs de ses subordonnés. Grâce à ces méthodes, on peut faire émerger lesprocessus fondamentaux de l’entreprise ainsi que les rendements entre activi-tés et production, ce qui facilitera grandement l’optimisation des processus.

Voici l’une des raisons qui renforce encore la fonction transversale de l’archi-tecte. En effet, étant placé au cœur de la communication technique et fonc-tionnelle, il doit être en contact avec une foule d’intervenants qui serontplacés à différents endroits de l’arbre des responsabilités et à la confluence dediverses activités inter-processus. Aussi doit-il partiellement s’abstraire du tra-ditionnel flux d’informations top-down. Mais certains managers ont encoretrop tendance à filtrer les informations, notamment celles d’ordre stratégique,ce qui nuit à la vision globale que doit impérativement avoir l’architecte.

Ce qu’il faut retenir, c’est qu’un processus est transversal et qu’il se fondra trèsdifficilement sur le décalque de l’organigramme.

1.2 Machine à café

Il est surprenant qu’en Europe, pour ne pas dire en France, le télétravail prennesi peu d’essor. On pourrait croire de prime abord qu’il s’agit d’un problème deconfiance, les managers ayant un besoin pathologique de surveillance de leursressources. En fait, les causes de ce manque d’engouement pour le travail délo-calisé sont plus à chercher vers le domaine de la communication.

On pourrait objecter que les technologies apportées par la première décenniedu vingt-et-unième siècle permettent à un employé de travailler de chez luisans perte de productivité, en lui fournissant un accès sans limitation auxinformations dont il a besoin pour remplir sa fonction.

Page 24: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

45Approche processusChapitre 2

Les réseaux privés virtuels (VPN), les extranets, les ordinateurs portables, lavirtualisation, le très haut débit, sont censés offrir un accès sécurisé, rapide etexhaustif aux données de l’entreprise à l’extérieur de celle-ci. De plus, une éco-nomie substantielle dans les coûts d’infrastructure qui seraient déportés sur ledomicile du travailleur (encore une fois à l’extérieur de l’entreprise) plaideraitaussi en faveur du télétravail.

Alors pourquoi n’assiste-t-on pas à une migration significative des travailleursvers leur domicile, ou tout du moins à l’extérieur des locaux de l’entreprise ?

On peut parler du syndrome de la machine à café : lorsqu’on n’est plus encontact physique avec ses collègues, il nous manque une source fondamentalede communication, celle où s’échange le maximum de données informelles surl’entreprise, qui ne sont plus dictées par les castes de la hiérarchie et la bien-séance corporatiste, mais par les affinités entre individus. On y apprend beau-coup sur ce qui fait l’essence des relations humaines et que la documentationtechnique néglige sciemment.

1.3 Organisation

Dans une équipe, l’organisation et la communication sont intimement liées.Sans organisation, aucun délai ni budget ne saura être tenu, et aucun projetne risquera d’aboutir, même par hasard ; cet aspect de la gestion d’un projetest fondamental. L’un des grands principes de la communication est que l’ondoit limiter le nombre d’échanges sous peine d’inverser les bénéfices de l’orga-nisation, car à trop se réunir ou échanger de courrier, on finit par être submer-gé d’informations, ce qui a une influence néfaste sur la productivité : à défautde produire, on passe son temps à s’organiser.

L’organisation des activités d’une équipe de développement (ou autre) estmodélisable sous la forme de processus. C’est la gestion par l’étude, la défini-tion, la mesure, l’analyse de ces processus qui permet de rationaliser l’organi-sation d’une entreprise pour en optimiser la production.

Page 25: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

© E

dit

ions

EN

I -

All r

ights

rese

rved

46pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

1.4 Kanban

En 1935, K. Toyoda, patron de Toyota (qui était alors une petite firme), pro-pose un concept permettant la réduction des fonds de roulement de la sociétébasé sur la minimisation des stocks à l’entrée comme à la sortie de la chaîne deproduction. L’idée étant de n’acheter les pièces aux fournisseurs qu’aumoment de leur assemblage et d’ainsi court-circuiter les concessionnairespour éviter tout stockage des voitures. Ce concept, baptisé Just In Time (JIT)ou Kanban (système de circulation d’étiquettes) en japonais, révolutionneral’industrie automobile en permettant à l’entreprise d’économiser sur lestockage des pièces et de ne les utiliser que lorsqu’elle en a besoin, au momentde la production.

En plus d’éliminer les stocks, ce processus de production maximise l’emploides ressources humaines, repense toute l’organisation de la chaîne de produc-tion qui doit être reconfigurable en fonction des demandes client, mais encontrepartie elle rend l’entreprise très dépendante de ses fournisseurs tant entermes de qualité des pièces que de délais d’approvisionnement.

Cette forme d’organisation du travail succède au fordisme et au taylorismequi s’occupaient plus à décomposer la production en tâches précises et sta-tiques qu’à penser l’organisation sous forme dynamique et transversale.

Enfin, la plus grande évolution apportée par ce nouveau mode d’organisationest sans doute d’ordre socioculturel, car elle implique une remise en cause per-pétuelle de l’organisation du travail dans un souci d’amélioration constante.

1.5 PMBOK

Le Project Management Book Of Knowledge (PMBOK) est un guide de gestion deprojet établi par le Project Management Institute (PMI) qui agrège l’état de l’artdes connaissances dans le domaine de la gestion de projet. Ce guide identifieet décrit l’ensemble des pratiques généralement acceptées, c'est-à-dire appli-cables dans la majorité des projets, même si évidemment chaque équipe estresponsable des processus qu’elle met en place.

Page 26: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

47Approche processusChapitre 2

Ce guide présente une approche processus « orientée projet ». Lesdits processustombent sous deux catégories principales : les processus de gestion de projetqui se préoccupent de décrire et d’organiser le travail et les processus orientésproduit qui se focalisent sur la spécification et la création du produit du pro-jet. Ces derniers sont typiquement définis par le cycle de vie du produit. Cesdeux catégories se recouvrent assez régulièrement à travers le projet, car parexemple, on peut définir le contenu d’un projet sans avoir a priori uneconnaissance basique de la création du produit.

Les processus de gestion de projet peuvent être organisés en cinq groupes : ini-tialisation (reconnaître qu’un projet ou une phase doit démarrer), planifica-tion (inventer un schéma permettant d’accomplir le besoin), exécution(coordonner les hommes et autres ressources afin d’accomplir le plan), pilo-tage (s’assurer que les objectifs du projet sont atteints en mesurant la progres-sion puis prendre les mesures qui s’imposent) et recette (formaliserl’acceptation du projet ou de la phase pour lui donner une fin officielle).

Figure 2.1 : Superposition des processus dans une phase

À travers chaque groupe de processus, les processus individuels sont liés parleurs entrées et leurs sorties (documents livrables). On peut alors les décrire àl’aide de ces livrables et des techniques et outils mis en place pour les produire.

Page 27: Thomas BAILET logicielle - fnac-static.com€¦ · l’essentiel de l’architecture logicielle. Avant-propos • Ingénierie pilotée par les modèles • Approche processus •

© E

dit

ions

EN

I -

All r

ights

rese

rved

48pour une approche organisationnelle, fonctionnelle et technique

Architecture logicielle

Figure 2.2 : Interactions entre phases

Dans une deuxième partie, le guide propose un partitionnement des connais-sances (et des processus les formalisant) liées à la gestion de projet. Les diffé-rents domaines sont l’intégration (tous les processus utiles à la bonnecoordination des différents éléments du projet), le contenu (tous les proces-sus permettant de s’assurer que le projet comporte toutes les tâches requises– et seulement celles-ci – à l’accomplissement du projet), les délais (tous lesprocessus nécessaires à la livraison dans les temps du projet), les coûts (les