Professional Documents
Culture Documents
Christine Solnon
INSA de Lyon - 4IF
2014 - 2015
1/106
Contexte
Domaines denseignement du dpartement IF :
Systme dInformation
Rseaux
Architectures matrielles
Logiciel Systme
Mthodes et Outils Mathmatiques
Formation gnrale
Dveloppement logiciel :
En 3IF :
En 4IF :
C++
Modlisation UML
Gnie logiciel
Qualit logicielle
Grammaires et langages
2/106
Organisation
Cours
du 23/09 au 9/10 : 6 cours DevOO
Partie 1 (3 cours) : USDP
Partie 2 (1 cours) : Mthodes Agiles par S. Sorlin (Esker)
Partie 3 (1 cours) : Ingnierie des modles
Partie 4 (1 cours) : Prsentation du projet
du 22/10 au 07/10 : 6 cours Ingnierie des IHM" par La Laporte
Mise-en-pratique : Projet Gestion de tournes de livraisons"
5 sances de 4h
Dveloppement objet
3 sances de 4h
IHM
Introduction
Motivations
Plan du cours
Introduction
Motivations
Quelques rappels (rapides) sur le contexte
7/106
Introduction
Motivations
Crise du logiciel ?
1979 : Etude du Government Accounting Office sur 163 projets
29% des logiciels nont jamais t livrs
45% des logiciels ont t livrs... mais nont pas t utiliss
19% des logiciels ont t livrs mais ont du tre modifis
... ce qui laisse 7% de logiciels livrs et utiliss en ltat
1994 : Systme de convoyage des bagages / aroport de Denver
193 M$ et 16 mois de retard (1,1 M$ perdus par jour de retard )
Remplac par un systme manuel en 2005
1999
2011 : New York City Automated Payroll (NYCAP) System
Budget estim = 66 M$
Budget rel > 360 M$
Et quelques bugs qui ont cout trs cher...
1996 : Explosion dAriane 5
1999 : Perte de NASA Mars Climate Orbiter
8/106
Introduction
Motivations
2004
29%
18%
53%
2006
35%
19%
46%
2008
32%
24%
44%
2010
37%
21%
42%
2012
39%
18%
43%
Dpassement temps
Dpassement cot
Fonctionnalits livres
2004
84%
56%
64%
2006
72%
47%
68%
2008
79%
54%
67%
2010
71%
46%
74%
2012
74%
59%
69%
Introduction
Motivations
Introduction
Motivations
Agile et XP compatible !
11/106
Introduction
Motivations
Lean
Iterative (UP)
Agile
AdHoc
Traditionnel
0%
20%
Succs
40%
Mitig
60%
80%
100%
Echec
12/106
Introduction
Plan du cours
Introduction
Motivations
Quelques rappels (rapides) sur le contexte
13/106
Introduction
14/106
Introduction
Ce que a fait ?
Comment a le fait ?
Combien a cote/rapporte ?
15/106
Introduction
16/106
Introduction
Introduction
Maintenance et volution
Utilisation des fonctionnalits spcifies / cycle en cascade [C. Larman] :
Jamais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45%
Rarement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19%
Parfois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16%
Souvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13%
Toujours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7%
Rpartition des cots de maintenance [C. Larman] :
Extensions utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41,8%
Correction derreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21,4%
Modification format de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17,4%
Modification de matriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6,2%
Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5,5%
Efficacit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4%
If you think writing software is difficult, try re-writting software
Bertrand Meyer
18/106
Introduction
19/106
Introduction
20/106
Plan du cours
Introduction
21/106
22/106
23/106
Plan du cours
Introduction
24/106
25/106
Phase 2 : Elaboration
Quelques itrations courtes et de dure fixe, pilotes par les risques
Identification et stabilisation de la plupart des besoins
Spcification de la plupart des cas dutilisation
Conception de larchitecture de base
Squelette du systme raliser
Programmation et test des lments darchitecture les + importants
Ralisation des cas dutilisation critiques (<10% des besoins)
Tester au plus tt, souvent et de manire raliste
Estimation fiable du calendrier et des cots
Besoins et architecture stables ? Risques contrls ?
26/106
Phase 3 : Construction
27/106
Phase 4 : Transition
28/106
Plan du cours
Introduction
29/106
30/106
31/106
Architecture :
Vue des aspects les plus significatifs du systme
Abstraction des principaux modles du systme
Conue et stabilise lors des premires itrations
Traiter en premier les cas dutilisation pertinents" :
les plus risqus / critiques
les plus importants pour le client
les plus reprsentatifs du systme
32/106
33/106
34/106
Plan du cours
Introduction
35/106
36/106
37/106
Plan du cours
Introduction
38/106
Buts et Artefacts
Buts
Comprendre le contexte du
systme
Artefacts
Modles du domaine et
du mtier
Glossaire
Exigences
supplmentaires
40/106
Modle du domaine
Quest-ce quun modle du domaine ?
Diagramme de classes conceptuelles
Peu dattributs, pas dopration, pas de classes logicielles
Comment construire un modle du domaine ?
Rutiliser (et modifier) des modles existants !
Utiliser une liste de catgories :
Classes : Transactions mtier, Lignes de transactions, Produits/services
lis aux transactions, Acteurs, Lieux, ...
Associations : est-une-description-de, est-membre-de, ...
Identifier les noms et groupes nominaux des descriptions textuelles
Modlisation itrative et agile
Objectifs : Comprendre les concepts cls et leurs relations... et communiquer !
Il nexiste pas de modle du domaine exhaustif et correct
Le modle du domaine volue sur plusieurs itrations
Travailler en mode esquisse"
41/106
42/106
Au travail !
Extrait du projet donn en 2011 : Gestion des bagages dun aroport
Lapplication a pour but de grer les bagages dans un aroport depuis le guichet de
lenregistrement de dpart jusque dans lavion, ou bien de larrive de lavion jusquau
carrousel de rcupration des bagages. Les bagages sont transports par des
chariots autonomes circulant sur des rails relis par des embranchements. Chaque
bagage est muni dune puce RFID permettant des capteurs de communiquer sa
position au systme. Les postes de supervision affichent des vues sur lensemble du
systme de transport avec la position des chariots et des bagages, ltat des lments
(panne, batterie dcharge...).
(...)
A lenregistrement, chaque bagage est pos sur un tapis roulant qui lachemine
jusque sur un chariot. Le chariot circule sur des rails de faon autonome jusquau
toboggan de destination ( chaque embranchement, il choisit son chemin).
(...)
A larrive dun avion, les bagages sont achemins par un train jusqu un tapis
roulant sur lequel ils sont dposs un un par un oprateur. Le tapis roulant
achemine chaque bagage jusque sur un chariot qui circule ensuite de faon
autonome jusquau carroussel de rcupration des bagages.
(...)
43/106
Buts et Artefacts
Buts
Comprendre le contexte du
systme
Artefacts
Modles du domaine et
du mtier
Glossaire
Exigences
supplmentaires
44/106
cas particuliers)
45/106
Limites du systme
nom du systme
Client
Ouvrir la caisse
Caissier
<<actor>>
Service
dautorisation
des paiements
<<actor>>
Systme des
ressources
humaines
Traiter un retour
notation alternative
pour un acteur
Communication
acteur
Grant
Grer la scurit
cas dutilisation
Administrateur systme
47/106
Systme XXX
Faire un virement
Client local
<<tend>>
montant > 500 euros
<<inclut>>
Identifier client
Client distant
48/106
49/106
Martin Fowler :
There is no standard way to write the content of a use case, and different
formats work well in different cases.
Structuration propose par Martin Fowler :
Titre : But que lacteur principal souhaite atteindre avec ce cas
dutilisation
Verbe linfinitif suivi dun complment dobjet
Scnario de base : Liste numrote dinteractions entre les acteurs et le
systme
Extensions : Une liste numrote dinteractions pour chaque cas
particulier possible
50/106
4
5
6
Extensions :
2a. Le code de larticle est invalide
1
2
3
4
: Systme
: Caissier
crerNouvelleVente()
loop [reste des articles]
saisirArticle(codeArt,Qte)
description, total
terminerVente()
total HT et TTC
crerPaiement(montant)
rendu de la monnaie, reu
52/106
53/106
User story :
Courte description dune utilisation du logiciel
Potentiellement incomplte ou imprcise
Description informelle dun cas dutilisation, mais pas ncessairement en
termes dinteractions avec le systme
54/106
Au travail !
Extrait du projet donn en 2011 : Gestion des bagages dun aroport
55/106
Buts et Artefacts
Buts
Comprendre le contexte du
systme
Artefacts
Modles du domaine et
du mtier
Glossaire
Exigences
supplmentaires
56/106
Activit Conception"
Plan du cours
Introduction
59/106
Activit Conception"
Conception
Objectif premier de la modlisation pendant la conception :
Comprendre et communiquer :
Quelles sont les responsabilits des objets ?
Quelles sont les collaborations entre objets ?
Quels patterns de conception peut-on utiliser ?
La doc. peut tre gnre partir du code (reverse engineering)
Modlisation Agile
Modliser en groupe
Crer plusieurs modles en parallle
Diagrammes dynamiques (interactions)
Diagrammes statiques (classes, packages et dploiement)
Concevoir avec les programmeurs et non pour eux !
60/106
Activit Conception"
Buts et Artefacts
Buts
Artefacts
Apprhender la logique
comportementale (interactions
entre objets)
Diagrammes dinteraction
Apprhender la logique
structurelle
Diagrammes de classes,
de packages et de
dploiement
Documenter larchitecture
Document darchitecture
du logiciel (N+1 vues)
61/106
Activit Conception"
62/106
Activit Conception"
Diagrammes de communication :
Structuration en termes de
Structuration en multigraphe
temps
axe vertical
objets
axe horizontal
Exemple :
o2:T2
o1:T1
1: ret1=msg1(p1)
o3:T3
o2:T2
o1:T1
msg1(p1)
msg2(p2)
ret2
msg3(p3)
ret1
ret3
1.1: ret2=msg2(p2)
1.2: ret3=msg3(p3)
o3:T3
63/106
Activit Conception"
Buts et Artefacts
Buts
Artefacts
Apprhender la logique
comportementale (interactions
entre objets)
Diagrammes dinteraction
Apprhender la logique
structurelle
Diagrammes de classes,
de packages et de
dploiement
Documenter larchitecture
Document darchitecture
du logiciel (N+1 vues)
64/106
Activit Conception"
65/106
Activit Conception"
66/106
Activit Conception"
Activit Conception"
Activit Conception"
Activit Conception"
Activit Conception"
71/106
Activit Conception"
72/106
Activit Conception"
Au travail !
Exemple de simulation pour le projet de gestion des bagages dun aroport
73/106
Activit Conception"
Architecture de dploiement
Objectif
Dcrire :
la distribution des lments logiciels sur les composants physiques
la communication entre les composants physiques (rseau)
Utilisation de diagrammes de dploiement
Nuds physiques
dispositifs physiques (ordinateur, tlphone, ...)
Nuds denvironnement dexcution
Ressource logicielle :
sexcutant au sein dun nud physique
offrant un service pour hberger/excuter dautres logiciels
(par ex. : O.S., Machine virtuelle, Navigateur Web, SGBD, ...)
Liens
Moyens de communication entre les nuds
74/106
Activit Conception"
75/106
Activit Conception"
Buts et Artefacts
Buts
Artefacts
Apprhender la logique
comportementale (interactions
entre objets)
Diagrammes dinteraction
Apprhender la logique
structurelle
Diagrammes de classes,
de packages et de
dploiement
Documenter larchitecture
Document darchitecture
du logiciel (N+1 vues)
76/106
Activit Conception"
77/106
Activit Conception"
Documenter larchitecture
Objectif : Dcrire les grandes lignes de larchitecture
Comprendre rapidement les ides essentielles du systme
Structure du Document dArchitecture du Logiciel
Reprsentation architecturale : Comment larchi. est dcrite dans ce doc.
Facteurs architecturaux : Rfrence au Tableau des facteurs
Dcisions architecturales : Ensemble de mmos techniques
Nom du problme
Rsum de la solution
Facteurs architecturaux concerns
Solution
Motivation
Problmes non rsolus
Autres solutions envisages
N+1 vues : Logique, Processus, Implmentation, Physique, ..., + Cas dutil.
Pour chaque vue :
Dcrire les modles les plus importants
Motiver et commenter les choix
78/106
Plan du cours
Introduction
79/106
De la conception la ralisation
Objectifs :
Ecrire le code implmentant les cas dutilisation cibls
Vrifier que ce code rpond bien aux besoins
Ordre dimplmentation des packages et classes :
Du moins coupl au plus coupl
Gnration automatique dun squelette de code
Diagrammes de classes
Dfinition des classes, attributs, signatures de mthodes, ...
Codage des associations 1-n par des collections
...
Diagrammes dinteraction :
Corps (partiel) des mthodes
Signature des constructeurs
80/106
Visibilit temporaire :
Visibilit de paramtre : b est paramtre dune mthode de a
Visibilit locale : b est variable locale dune mthode de a
Echec !
82/106
83/106
84/106
Refactoring rgulier
Objectif :
Transformer/restructurer du code sans en modifier le comportement
Supprimer les code smells"
Attention : re-excuter les tests aprs chaque tape
Transformations par tapes
Eliminer la duplication de code
Amliorer la lisibilit
Cration de procdures
Renommer
85/106
86/106
Gestion de projet
Plan du cours
Introduction
87/106
Gestion de projet
Gestion de projet
Gestion des versions
Structurer les artefacts par discipline
un rpertoire / discipline
(sauf implmentation qui est parfois sur plusieurs rpertoires)
Utiliser un outil de gestion de versions / travail collaboratif (Git, SVN, ...)
Crer un point de contrle la fin de chaque itration
Planification deux niveaux diffrents :
Plan de phase
Macro plan visible de lextrieur sur lequel lquipe sengage
Jalons et objectifs gnraux
Peu de jalons : fins de phases, tests pilotes" mi-phase
1re estimation peu fiable des jalons la fin de linception
Estimation fiable et contractuelle la fin de llaboration
Engagement de lquipe sur la livraison du projet
Plan ditration
Micro organisation interne dune itration
Le plan de litration n est fait la fin de litration n 1
Adapter les plans ditrations en fonction des volutions
88/106
Gestion de projet
Plan ditration
En fin ditr. n, planifier litr. n+1 avec toutes les parties prenantes :
Clients, Developpeurs, Architecte, Chef de projet, ...
Dterminer la dure de litration (en gnral de 2 6 semaines)
Lister les objectifs potentiels :
nouvelles fonctionnalits / cas dutilisation / scnarios de cas
dutilisation, traitement danomalies, ...
Classer les objectifs par ordre de priorit :
Obj. commerciaux du client / Obj. techniques de larchitecte
Pour chaque objectif pris par ordre de priorit :
Etudier rapidement lobjectif
Estimer les tches faire pour latteindre
Quantifier temps ncessaire / ressources humaines disponibles
Planning poker (http ://www.planningpoker.com/)
Jusqu ce que volume de travail total = dure de litration
Impliquer toute lquipe dans le processus de planification, et non juste le
chef de projet
89/106
Gestion de projet
90/106
Plan du cours
Introduction
91/106
92/106
93/106
94/106
Phase 2 : Elaboration
Plan du cours
Introduction
95/106
Phase 2 : Elaboration
Phase 2 : Elaboration
96/106
Phase 2 : Elaboration
Phase 2 : Elaboration
Livrables de llaboration
Modle du domaine / mtier quasi complet
Modle des cas dutilisation quasi complet
Modles de conception (diagrammes de classes et dinteractions,
diagramme de dploiement, ...) partiels
Architecture de base excutable
Implmentation de quelques fonctionnalits
Document darchitecture du logiciel / modles en cours
Planification des phases
valuation du cot du projet
...
98/106
Phase 3 : Construction
Plan du cours
Introduction
99/106
Phase 3 : Construction
Phase 3 : Construction
100/106
Phase 3 : Construction
101/106
Phase 3 : Construction
Livrables de la construction
Un excutable
Tous les documents et les modles du systme
Document darchitecture du logiciel jour
Un manuel utilisateur suffisamment dtaill pour les tests
...
102/106
Phase 4 : Transition
Plan du cours
Introduction
103/106
Phase 4 : Transition
Phase 4 : Transition
104/106
Phase 4 : Transition
105/106
Phase 4 : Transition
Livrables de la transition
106/106