Cours de Développement Web
Processus de développement d'un logiciel
Frédéric Flouvat
Université de la Nouvelle-Calédonie
[Link]@[Link]
Quelques références bibliographiques
"CS 5150 Software Engineering", W.Y. Arms, Cornell University,
[Link]
"Software development life cycle", Tutorials point,
[Link]
"Software development life cycle", Movistar – GSL MIT, [Link]
summer-2014/materials/t04-_software_development_life_cycle.pdf
"The SDLC: 7 phases, popular models, benefits & more", D. Swersky,
[Link]
"Manifeste pour le développement Agile de logiciel", [Link]
"Agile Web Development – a Comprehensive Overview", Cody Arsenault,
[Link]
"Thoughts on Design and Agile", M. E. Miller, Stanford Web Services Blog,
[Link]
"La méthodologie Scrum expliquée simplement – Le Guide Ultime de la Méthode Agile Scrum", S.
Boyer, [Link]
"Agile in a nutshell", [Link]
"Agile Modeling Home Page", [Link]
2
Les différentes étapes de la vie d'un logiciel
Etude de faisabilité et planification
• Objectifs du projet ? réalisabilité technique ? coûts ? calendrier ? ressources ?
risques ? décision
Définition des besoins clients
• Identification des profils des utilisateurs (personas),
recensement des besoins (fonctionnalités,
performances, matériels, organisation, etc.),
définition de scénarios/cas d'utilisation
Design de l'interface utilisateur
• Diagrammes d'expérience utilisateur (UX flow charts), squelettes graphiques
(wireframes), maquettes graphiques, prototypes, tests et validations clients
3
Les différentes étapes de la vie d'un logiciel
Design de l'architecture du logiciel
• Organisation des données (diagramme E/A), architecture du code (diagramme de
classes), architecture physique et réseau (diagrammes de composants), sécurité,
technologies et outils utilisés pour le développement
Programmation du logiciel
• Coder, tester (à automatiser si possible),
partager et faire valider le code à l'équipe
Test utilisateur du logiciel et déploiement
• Test complet par les clients et comparaison aux besoins, livraison et mise en
production
Utilisation et maintenance
4
Les modèles de développement logiciel
Différentes façons de s'organiser autour de ces étapes
Différents modèles de développement en fonction des projets et des équipes
• Chacun à des avantages et des inconvénients
• Mais toujours les mêmes objectifs
– avoir un bon logiciel (fonctionnalités, utilisabilité, maintenabilité, efficacité, etc.)
– limiter les risques (ne répond pas aux besoins, coût trop élevé, durée de
développement trop longue, etc.)
– faciliter le suivi du projet par le responsable
– favoriser le travail en équipe
Exemples de processus de développement logiciel
• Modèle en cascade
• Modèle itératif
• Modèle en spiral
• Modèle en V
• Modèle Agile
• …
5
Le modèle en cascade (waterfall)
Un développement séquentiel / linéaire
• Finir chaque étape avant de
commencer la suivante
• Possibilité de revenir en arrière
en fonction des retours clients à
la fin de chaque étape
Une approche adaptée si
• Des besoins fixes, clairs et bien • Une technologie maîtrisée
documentés
Avantages & Inconvénients
+ Simple à comprendre / utiliser - Pas de logiciel opérationnel avant les
+ Facile à manager dernières étapes du processus
+ Des étapes clairement définies - Beaucoup de risques et d'incertitudes
+ Un processus et des résultats - Difficile d'évaluer l'avancement
bien documentés - Difficile d'intégrer de nouveaux besoins
6
L'approche Agile
Un développement adaptatif, itératif et incrémental
• Projet découpé en petites tâches (sprints)
• Un sprint = toutes les étapes du
développement logiciel
• A chaque fin de sprint, une version
utilisable du logiciel présentée aux clients
Une approche adaptée si
• Des besoins pouvant changer • Des clients / utilisateurs avec
• Une équipe localisée à un seul endroit une bonne disponibilité
Avantages & Inconvénients
+ Flexible - Dépend beaucoup des interactions
+ Met en avant la satisfaction client et avec les clients
le travail d'équipe - Importance de l'expérience de l'équipe
+ Des livraisons régulières de - Risque de retravailler continuellement
logiciels opérationnels le code et les besoins
+ Des ressources et des coûts limités - Peu de documentation
7
Le manifeste pour un développement Agile
Agile = avant tout des principes, un condensé de bonnes pratiques
[Link]
• Priorité à la satisfaction client en livrant rapidement et régulièrement des
fonctionnalités à grande valeur ajoutée
• Accepter les changements même tard dans le projet
• Livrer fréquemment un logiciel opérationnel avec des cycles de quelques
semaines
• Travailler avec les utilisateurs quotidiennement tout au long du projet
• Motiver l'équipe de développement, lui fournir du soutien, et lui faire confiance
• Favoriser le dialogue en face à face
• Un logiciel opérationnel comme principale mesure d'avancement
• Encourager un rythme de travail soutenable
• Focus sur l'excellence technique et une bonne conception
• Importance de la simplicité (minimiser le travail inutile)
• Mettre en place des équipes s'auto-organisant
• Essayer continuellement de trouver des moyens de devenir plus efficace et
modifier son comportement
8
Méthodologies Agiles
Plus d'une vingtaine de méthodes dites "Agiles": RAD, XP, RUP, Kanban,
LeSS, Scrum, …
La plus connue: Scrum
Product Backlog: liste des
fonctionnalités (avec des priorités)
Sprint Backlog: liste des tâches à
accomplir pendant un sprint
(construit à partir du Product
Backlog)
Scrum Meetings: réunion
journalière, courte, pour analyser ce
qui a été fait et planifier la suite
Scrum Master: personne chargée
d'organiser les réunions et la Idéalement, chaque sprint aboutit à une
communications entre les membres application totalement opérationnelle
de l'équipe
9
Les processus hybrides
En réalité, souvent plusieurs modèles combinés
Par exemple, Cascade + Agile
• Etude de faisabilité
(description haut-
• Définition des besoins clients
Cascade
niveau)
• Design de l'interface utilisateur
• Design de l'architecture du logiciel
• Planification des sprints
• Planification détaillée du sprint courant
•
(détails)
Design détaillé de l'interface utilisateur
Agile
• Design détaillé de l'architecture du logiciel sprint suivant
• Programmation
• Test utilisateur du logiciel (UAT) et déploiement
10