Niveau d'étude
BAC +3
ECTS
3 crédits
Composante
Sciences économiques, gestion, mathématiques et informatique
Volume horaire
32h
Période de l'année
Enseignement sixième semestre
Description
Ce cours s’intéresse à l’activité de conception d’architectures logicielles (terme à comprendre sous l’angle d’architectures d’interfaces et de classes métier, et de leur implémentation) de qualité. Il est architecturé autour des points suivants :
• Rappels de notation UML (diagrammes de classes, d’objets, de séquence, d’états)
• Notion de conception et d’espace de solutions
• Principes de qualité logicielle, tels que DRY et SOLID
• Odeurs de code et anti-patrons
• Refactoring
• Patrons de conception
Il est mis en oeuvre autour de cours et de TD où différents cas d’étude sont présentés (concevoir une architecture de qualité à partir d’un besoin, juger la qualité d’une architecture existante, refactorer une architecture pour en améliorer la qualité, procéder à la maintenance évolutive d’une architecture tout en maintenant sa qualité architecturale). Dans le cadre de l’utilisation toujours plus importante de l’IA générative et d’agents de code, le cours montrera aussi comment interagir avec ces derniers pour obtenir des solutions logicielles présentant une bonne qualité architecturale.
La notation de modélisation est UML. Les implémentations sont faites dans un langage de programmation à objets.
Objectifs
- Savoir concevoir et développer des architectures logicielles de qualité.
- Savoir détecter des problèmes conduisant à un déficit qualitatif dans une architecture logicielle.
- Savoir refactorer une architecture logicielle pour gagner en qualité / maintenabilité.
Évaluation
Modalités : Mixte : CC + CT
SESSION 1 :
Contrôle Continu
• Type : Écrit
• Durée : --
• Précisions : Le contrôle continu représente 50 % de la note finale,
et comprend deux évaluations comptant chacune pour 25 %.
Contrôle Terminal
• Type : Écrit
• Durée : --
• Précisions : L’examen final représente 50 % de la note finale.
Régime Dérogatoire
• Type : Écrit
• Durée : --
• Précisions : L’examen final représente 100 % de la note finale.
SESSION 2 :
• Type : Écrit
• Durée : --
• Précisions : L’examen final représente 100 % de la note finale.
Utilisation de l'intelligence artificielle :
L’utilisation des équipements électroniques et de l’Intelligence Artificielle sont interdits lors des évaluations.
Heures d'enseignement
- CMCM16h
- TDTD16h
Bibliographie
- M. P. Robillard, Introduction to Software Design with Java, Springer, 2017.
- M. Fowler, Refactoring: Improving the Design of Existing Code, Addison Wesley, 1999.
- J. Bloch, Effective Java (3rd Ed.), Addison Wesley, 2018.
- R. C. Martin, Clean Code: A Handbook of Agile Software Craftmanship, Prentice Hall, 2008.
