Méthodes agiles d'ingénierie logicielle
Enseignant responsable :
Volume horaire : 24Description du contenu de l'enseignement :
La nouvelle économie met à rude épreuve les équipes des projets informatiques. L'instabilité notoire des spécifications et le raccourcissement des délais de livraison imposent une amélioration drastique de la réactivité et de la productivité du développement, sans tolérer pour autant une quelconque négligence en matière de stabilité et d'évolutivité des applications déployées. Les méthodologies dites "agiles" tentent de répondre à ces exigences, en adoptant un investissement minimaliste et prônant des résultats tangibles et fréquents, par opposition aux méthodologies classiques qui - tout en imposant des organisations coûteuses - n'arrivent plus à prouver leur efficacité dans ces conditions extrêmement dynamiques. Ce cours propose un panorama des méthodes et techniques efficaces applicables dès les projets de petite taille, y compris pour assurer la traçabilité complète entre les besoins et les composants techniques en continue évolution. Les étudiants pourront les mettre en œuvre avantageusement, preuve comprise, aussi bien pour leurs projets pédagogiques qu'industriels, une fois dans l'entreprise.
- Introduction. Evolution des modèles du cycle de vie des projets. Manifeste agile: valeurs et principes.
- Offre des méthodologies agiles : XP, Scrum, FDD, Kanban, Lean, etc.
- eXtremeProgramming : cycle de négociation, métaphore & storytelling, développement piloté par les tests, refactoring permanent, etc.
- Gestion des exigences et de configuration logicielles. CMMi vs agile.
- Zoom sur le testing automatique fonctionnel : Behaviour Driven Développement utilisant des solutions en Gherkin avec Cucumber ou Behave.
- Modélisation, patterns, stratégies et styles architecturaux agiles: Design Patterns, Analysis Patterns, Metapatterns, Hexagonal, CQRS, DDD.
- Techniques encourageant l'agilité : RAD, AOP, Assemblage de composants, MDA, métriques & audits, EventModeling, Impact et StoryMapping.
Il lustrations en Java et Python, tout au long du cours.
Pré-requis recommandés :
Expérience en conception et programmation orientée-objet.
Pré-requis obligatoires :
Avoir des connaissances de programmation Java ou Python et de conception orientée-objet.
Compétence à acquérir :
- Découvrir, comprendre et appliquer les principes et les pratiques agiles les plus efficaces.
- Collaborer en équipe pour atteindre rapidement un objectif fonctionnel ou technique.
- Renforcer les compétences de spécification, conception, planification, communication, développement et tests automatisés.
- Fournir des résultats tangibles et fréquents, avec le sourire
Mode de contrôle des connaissances :
Projet évolutif avec soutenance validant les connaissances individuelles acquises.
Bibliographie, lectures recommandées
Agile Ownership in a nutshell (vidéo) — youtu.be/502ILHjX9EE Scrum and XP from the Trenches — leanagiletraining.com/wp-content/uploads/2020/03/Scrum-and-XP-from-the-Trenches-2nd-edition.pdf The Pragmatic Programmer — pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/ Le blog de Martin Fowler — martinfowler.com Le manifeste agile — agilemanifesto.org Extreme programming: a gentle introduction — www.extremeprogramming.org The Scrum Guide — www.scrum.org/resources/scrum-guide