Software Maintenance and Evolution

lingi2252  2019-2020  Louvain-la-Neuve

Software Maintenance and Evolution
Note du 29 juin 2020
Sans connaitre encore le temps que dureront les mesures de distances sociales liées à la pandémie de Covid-19, et quels que soient les changements qui ont dû être opérés dans l’évaluation de la session de juin 2020 par rapport à ce que prévoit la présente fiche descriptive, de nouvelles modalités d’évaluation des unités d’enseignement peuvent encore être adoptées par l’enseignant ; des précisions sur ces modalités ont été -ou seront-communiquées par les enseignant·es aux étudiant·es dans les plus brefs délais.
5 crédits
30.0 h + 15.0 h
Q1
Enseignants
Mens Kim;
Langue
d'enseignement
Anglais
Préalables
LINGI2255 (ou un cours équivalent ) https://uclouvain.be/cours-2019-LINGI2255
Thèmes abordés
  • Tandis que de nombreux cours de génie logiciel se focalisent sur la création de nouveaux systèmes logiciels à partir de zéro, dans la pratique industrielle les développeurs sont souvent confrontés à des systèmes existants qui doivent être maintenus, réutilisés ou développés. Cela nécessite des compétences spécifiques pour comprendre la meilleure manière pour construire des systèmes logiciels plus faciles à mettre en oeuvre, à comprendre et à maintenir, et pour concevoir des systèmes avec pour objectif la réutilisation et l’évolution.
     
    Ce cours étudiera donc une variété de techniques, d’outils et de méthodologies pour vous aider à concevoir des logiciels plus faciles à comprendre, à maintenir, à réutiliser et à faire évoluer:
     
    • Développement de logiciels dans le contexte d'une base de code existante, par opposition au développement dans un "champ vert”
      • La compréhension de logiciels
      • La localisation de features
      • L'analyse d'impact de changements
      • La rétro-ingénierie de logiciels;
    • La maintenance logicielle
      • Les "bonnes pratiques" de la programmation
      • Les conventions et normes de codage
      • Les principes et heuristiques de conception
      • Les modèles de conception ("design patterns”)
      • La réingénierie et réusinage de logiciels (“refactoring”);
    • Réutilisation et évolution du logiciel
      • Les lois de l'évolution logicielle
      • Techniques de réutilisation et conception pour la réutilisation
      • Bibliothèques vs cadres ou frameworks d’application
    • Lignes de produits logiciels, modélisation de domaine, et modélisation de features
Acquis
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 :
  • INFO1.1 , INFO1.3
  • INFO2.5
  • INFO5.5
Eu égard au référentiel AA du programme « Master [120] en sciences informatiques », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :
  • SINF1.M3
  • SINF2.5
  • SINF5.5
Les étudiants ayant suivi avec fruit ce cours seront capables de
  • Comprendre les difficultés de développement de code dans un contexte de changement, par opposition au développement à partir de rien
  • Évaluer l'impact d'une demande de modification d'un produit existant de taille moyenne.
  • Décrire les techniques, les idiomatiques de codage et d'autres mécanismes de mise en 'uvre des conceptions qui sont plus maintenables.
  • Comprendre comment les modèles de conception peuvent améliorer la conception d'un système de logiciel.
  • Refactoriser une implémentation logicielle existante pour améliorer certains aspects de sa conception.
  • Identifier les principaux problèmes liés à l'évolution d'un logiciel et expliquer leur impact sur le cycle de vie du logiciel.
  • Discuter des avantages et inconvénients des différents types de réutilisation de logiciels.
 

La contribution de cette UE au développement et à la maîtrise des compétences et acquis du (des) programme(s) est accessible à la fin de cette fiche, dans la partie « Programmes/formations proposant cette unité d’enseignement (UE) ».
Contenu
Le cours sera organisé en 3 modules différents qui répondent à une variété de techniques, outils et méthodologies pour aider la construction de systèmes logiciels qui sont plus faciles à comprendre, à maintenir, réutiliser et d'évoluer:
  1. La compréhension d'un logiciel: comment comprendre les systèmes existants
  2. La maintenance d"un logiciel: comment construire un logiciel qui est plus maintenable, ou comment améliorer le logiciel existant pour le rendre plus maintenable
  3. La réutilisation d'un logiciel et son évolution: comment construire des logiciels réutilisables et comment réutiliser les logiciels existants
Méthodes d'enseignement
ORGANISATION DU COURS :
Cours magistraux couvrant les différents sujets du cours
Travaux pratiques pour appliquer les concepts de manière pratique
  • développer et faire évoluer un système logiciel maintenable et réutilisable
Missions pour compléter et faire évoluer une application développée lors des travaux pratiques
Modes d'évaluation
des acquis des étudiants
ÉVALUATION DU COURS
  • [10%] Participation obligatoire lors des travaux pratiques
    • portant sur la révision des travaux d'autres groupes
  • [40%] Missions intermédiaires entre sessions pratiques
    • présentation et démonstration des produits livrables.
    • 2 missions (10% + 20%) par semestre
    • démo de la 3ème mission (10%) en fin de semestre
  • [50%] pendant la session d'examen
    • [25%] examen écrit
    • [25%] présentation et discussion
      • portant sur la troisiième mission + les leçons apprises pendant le cours
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 [LINGI2251]
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 taill moyenne à grande.
Ressources
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 (s) 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.
 
English
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
INFO


Programmes / formations proposant cette unité d'enseignement (UE)

Intitulé du programme
Sigle
Crédits
Prérequis
Acquis
d'apprentissage
Master [120] en sciences informatiques

Master [120] : ingénieur civil en informatique