Maintenance du logiciel : Focus sur la rétro-ingénierie

1)

Introduction

Dans la pratique les développeurs sont le plus souvent confrontés à “maintenir” des codes que ce soit pour les comprendre, les adapter, les corriger ou en intégrer de nouveau. Cette étape cruciale dans le cycle de vie du logiciel requiert différentes connaissances, dont certaines seront abordées dans ce cours.

Un sondage auquel ont répondu 217 personnes a permis d'établir quelques éléments factuels relativement aux pratiques et besoins des entreprises, voir les résultats brutes ici.

Objectifs de ce cours

L'ambition de ce module est de donner aux étudiants une nouvelle vision sur le code, et de fait de leur permettre d'être de meilleurs développeurs et, en fonction des questions posées, de meilleurs chefs de projets ou architectes.

Pour cela, la démarche globale du cours s'appuiera sur de l'auto-apprentissage et du partage de connaissances :

  1. Les interventions visent à partager aux étudiants des outils et problématiques différentes de ce dont ils ont l'habitude,
  2. les TDs visent à permettre aux étudiants de se mettre en situation de (i) se poser des questions, (ii) de mettre en place des méthodes pour répondre à ces questions, (iii) d'utiliser des outils pour répondre à ces questions avec quelquefois, des approches très différentes d'une démarche de développement.

Intervenants

Nom Adresse
Mireille Blay-Fornarino(MBF) Bâtiment Templiers :Bureau 449 (https://mireilleblayfornarino.i3s.unice.fr/)
Sébastien Mosser (SM) Bâtiment Templiers Bureau XXX
Philippe Collet (SL) Bâtiment Templiers : Bureau XXX

Planning

  1. mar.19 déc. 2017
    • 08:00 – 10:00 : Cours - Introduction (MBF)
    • 10:00 - 11h00 : Autonomie
    • 11:15 – 12:15 : TD - Choix et caractérisation du sujet d'étude (MBF,SM,PC)
    • lundi 8 janv. 2018 à 15h au plus tard Livrable L.1
  2. mar.9 janv. 2018
    • 8:00 – 9:00 : TD - Compléments sur le sujet en mode “coaching” (MBF,SM,PC)
    • 9:00 – 10:00 : TD - Compléments sur le sujet en mode “coaching” (MBF)
    • 10:00 – 12:15 : Autonomie
  3. mar.16 janv. 2018
    • 08:00 – 09:30 : Cours - Comprendre un logiciel en regardant son histoire Xavier Blanc(XB) (https://promyze.com/)
    • 09:45 – 12:15 : TD - Validations Métrics/KPI (MBF,XB)
  4. mar.23 janv. 2018
    • 08:00 – 11:00 : Oral (10mn exposé + 10mn questions) (MBF,PC) Exposé E.1
  5. mar.30 janv. 2018
    • 09:45 – 12:15 : Autonomie
  6. mar.6 févr. 2018
    • 08:00 – 10:00 : TD - Travail sur les articles sélectionnés par les étudiants, démarche & Métrics/KPI (SM,PC)
    • 09:45 – 12:15 : Autonomie
    • lundi 12 février 18h Livrable L.2
  7. mar.13 févr. 2018
    • 08:00 – 9:00 : Intervention d'un industriel
  8. mar.20 févr. 2018
    • Annonce de la sélection des articles utilisés pour l'examen
    • 08:00 – 11:00 : Autonomie
  9. mar.27 févr. 2018
    • 08:00 – 11:00 : Examen Livrable L.3 & Livrable 4

Evaluation du module

Les étudiants forment des groupes d'au maximum 4 étudiants.

Il y a maximum 10 groupes.

La communication passe par Slack

Livrables du module : détails

Ecriture collaborative d'un livre sur "Apprendre du code"

Approche inspirée de : https://www.gitbook.com/book/delftswa/desosa2016/details

Le Livre en cours Il contient un exemple de chapitre de l'an dernier et le format attendu pour cette année.

Propositions de sujets d'étude

Vous avez la possibilité de proposer d'autres sujets d'études. Pensez cependant à bien les faire valider avant de vous lancer dans les études.

Nous n'avons pas proposé de sujets que sur l'analyse des codes sans proposer de sujets portant sur la maintenance elle-même (corrective, perfective, …). Il est cependant possible de proposer un tel sujet, mais en prenant bien en compte la complexité et la durée de la tâche relativement au temps accordé à ce module.

Propositions de sujet

Références

Voici quelques proposition d'articles. Vous pouvez proposer d'autres articles, mais dans ce cas, les faire valider par les enseignants.

Références

Outils

Attention, il ne s'agit pas de donner une liste exhaustive d'outils mais de donner des exemples d'outils glanés au fil des lectures.

  1. The Evolution Radar is a tool for analyzing the evolution of software systems from the logical coupling perspectives. Attention nécessite de charger “ HotDraw graphical framework”.
  2. PAPRIKA is available on Github. It's just a java project so there should be no problem to compile it, however an executable jar is available in out/artifacts/Paprika_jar . You will need the android platforms (sdk) installed on your computer depending of the Android SDK of the analysed apps. You can find some of them here : https://github.com/Sable/android-platforms. You can analyse apps and detects code smells as presented in the readme. However if something is not clear or does not work properly, you can contactGeoffrey Hecht
  3. DECOR: It would be my pleasure to give you access to our code but first you must agree that it must be used only for research purposes. If you do agree, then please have a look into http://www.ptidej.net/material/development/ and http://wiki.ptidej.net/doku.php The Git repository is available here Please do not hesitate to contact me or Yann-Gaël Guéhéneuc if you have any questions/comments.
  4. Vos IDE fournissent également des outils directement ou sous la forme de plugins, à vous de voir.

Hypothèses et Limites

Hypothèses

  • Les DP sont connus
  • Les bases de la notion d'architectures logicielles sont acquises
  • Les étudiants savent ce qu'est un “modèle” et ont des capacités d'abstraction
  • Les étudiants sont des développeurs.

Sujets non traités par choix

Comme il n'est pas possible de tout analyser sur 8 semaines, voici au moins les aspects que nous avons fait le choix de ne pas traiter :

ARCHIVES

  • Retours d'expérience sur le module lors des journées du GDR Génie de la Programmation et du Logiciel :
1) SOFTWARE MAINTENANCE : From Analysis to Implementation