Enseignants
Langue
d'enseignement
d'enseignement
Thèmes abordés
Alors que de nombreux cours de génie logiciel se concentrent sur la création de nouveaux systèmes logiciels à partir de zéro, dans la pratique industrielle, les développeurs de logiciels sont souvent confrontés à des systèmes logiciels déjà existants qui doivent être maintenus, réutilisés ou évolués. Cela nécessite des compétences spécifiques pour comprendre la conception et la mise en œuvre d'un système existant et quelles composantes doivent être modifiées, pour construire des systèmes logiciels plus faciles à maintenir et pour concevoir des systèmes, dès le départ, tenant compte de leur réutilisation et leur évolution.
Ce cours étudiera une variété de techniques, d'outils et de méthodes pour aider à construire des systèmes logiciels plus faciles à maintenir, réutiliser et faire évoluer, tels que :
Préliminaires et définitions :
- raisons et problèmes de la maintenance et l'évolution logicielle
- définitions, différences et types de maintenance et d'évolution logicielle
- dette technique
- lois de l'évolution logicielle
Modélisation du domaine :
- lignes de produits logicielles
- analyse de domaine
- modélisation de features
- points communs et variabilités
- diagrammes de features
Réutilisation du logiciel :
- définition et raisons de la réutilisation logicielle
- techniques de réutilisation et conception pour la réutilisation
- techniques orientées objet pour la réutilisation et la maintenabilité
- frameworks applicatifs orientés objet
Maintenance et évolution logicielle :
- Meilleures pratiques de programmation et normes de codage
- Refactoring et reengineering du code
- Les mauvais codes
- Les motifs de conception
- Principes et heuristiques de conception
Une étude de cas industrielle
Ce cours étudiera une variété de techniques, d'outils et de méthodes pour aider à construire des systèmes logiciels plus faciles à maintenir, réutiliser et faire évoluer, tels que :
Préliminaires et définitions :
- raisons et problèmes de la maintenance et l'évolution logicielle
- définitions, différences et types de maintenance et d'évolution logicielle
- dette technique
- lois de l'évolution logicielle
Modélisation du domaine :
- lignes de produits logicielles
- analyse de domaine
- modélisation de features
- points communs et variabilités
- diagrammes de features
Réutilisation du logiciel :
- définition et raisons de la réutilisation logicielle
- techniques de réutilisation et conception pour la réutilisation
- techniques orientées objet pour la réutilisation et la maintenabilité
- frameworks applicatifs orientés objet
Maintenance et évolution logicielle :
- Meilleures pratiques de programmation et normes de codage
- Refactoring et reengineering du code
- Les mauvais codes
- Les motifs de conception
- Principes et heuristiques de conception
Une étude de cas industrielle
Acquis
d'apprentissage
d'apprentissage
A la fin de cette unité d’enseignement, l’étudiant est capable de : | |
1 |
Eu égard au référentiel AA du programme « Master ingénieur civil en informatique », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :
|
Contenu
Le cours couvre une variété de techniques, outils et méthodes pour aider la construction de systèmes logiciels qui sont plus faciles à comprendre, maintenir, réutiliser et évoluer:
- Définitions et motivations préliminaires
- La modélisation de domaine
- La réutilisation logicielle
- Le mauvais code
- Le refactoring
- Les patrons de conception
- Les heuristiques de conception
- Les frameworks applicatifs
- Une étude de cas industrielle
- Sessions supplémentaires liées à des sujets de recherche sélectionnés
Méthodes d'enseignement
- Cours magistraux couvrant les différents sujets du cours.
- Travaux pratiques pour appliquer les concepts de manière pratique.
- Missions pour expérimenter les problèmes liés et les solutions pour développer et faire évoluer un système logiciel maintenable et réutilisable.
- Présentation par une entreprise invitée pour illustrer certains des sujets de cours appliqués dans la pratique industrielle.
- Optionnellement, des sessions sur un thème lié à la recherche dans le domaine de la maintenance, de la réutilisation et de l'évolution logicielle.
Modes d'évaluation
des acquis des étudiants
des acquis des étudiants
Dans le cadre de ce cours, les étudiant·es sont évalué·es par :
Comme le cours même, toutes les évaluations de ce cours seront en anglais.
- une évaluation continue certificative du projet, qui se repose sur 2 ou 3 missions différentes, réalisés en binôme, à délivrér pendant le quadrimestre;
- une présentation et/ou démonstration en binôme, réalisé en session, où les missions réalisés pendant le quadrimestre sont mis en perspective avec les concepts vus dans le cours;
- un examen individuel sur la matière du cours, réalisé en session.
- 50% pour les 2 à 3 missions réalisées en binôme pendant le quadrimestre; cette note peut inclure jusqu'à 10% de la note finale pour la participation active lors des séances pratiques;
- 20% pour l'examen ecrit (individuel)
- 30% pour la présentation/démonstration et la réponses aux questions (en binôme)
Comme le cours même, toutes les évaluations de ce cours seront en anglais.
Autres infos
Même si un logiciel de bonne qualité peut être plus facile à maintenir et à faire évoluer, les techniques d'assurance de la qualité des logiciels ne seront pas abordées explicitement dans ce cours car ils font l'objet d'un cours distinct sur l'assurance qualité du logiciel [LINFO2251]
Préalables:
Préalables:
- Avoir une bonne connaissance et expérience avec les concepts de la programmation orientée objet, les algorithmes et les structures de données.
- Avoir une expérience préalable ou simultanée avec le développement d'un logiciel de taille moyenne à grande.
Ressources
en ligne
en ligne
Site du cours Moodle
Les transparents de cours ainsi que d'autres informations pertinentes et pratiques relatives au cours seront accessibles sur Moodle. La même plate-forme sera également le moyen de communication entre l'enseignant et les étudiants.
Les transparents de cours ainsi que d'autres informations pertinentes et pratiques relatives au cours seront accessibles sur Moodle. La même plate-forme sera également le moyen de communication entre l'enseignant et les étudiants.
Bibliographie
French
Compte tenu de la variété des sujets abordés, ce cours ne suivra pas un seul livre de référence, mais sera basé sur du matériel provenant de nombreuses sources différentes. Les slides de cours seront le matériel de référence principale pour ce cours et des pointeurs vers des lectures supplémentaires seront fournis par la plate-forme de cours en ligne.
Given the variety of topics covered, this course will not follow a single textbook but is based on material from many different sources. As such, the course slides will be the main reference material for this course and pointers to additional reading material will be provided through the online course platform.
Faculté ou entité
en charge
en charge