This is an old revision of the document!
Table of Contents
Maintenance du logiciel : Focus sur la rétro-ingénierie
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 :
- Les interventions visent à partager aux étudiants des outils et problématiques différentes de ce dont ils ont l'habitude,
- 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
- 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
- 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
- mar.16 janv. 2018
- 08:00 – 09:30 : Cours - Comprendre un logiciel en regardant son histoire Xavier Blanc(XB)
- 09:45 – 12:15 : TD - Validations Métrics/KPI (MBF,XB)
- mar.23 janv. 2018
- 08:00 – 11:00 : Oral (10mn exposé + 10mn questions) (MBF,PC) Exposé E.1
- mar.30 janv. 2018
- 09:45 – 12:15 : Autonomie
- 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
- mar.13 févr. 2018
- 08:00 – 9:00 : Intervention d'un industriel
- mar.20 févr. 2018
- Annonce de la sélection des articles utilisés pour l'examen
- 08:00 – 11:00 : Autonomie
- mar.27 févr. 2018
- 08:00 – 11:00 : Examen Livrable L.3 & Livrable 4
Evaluation du module
Il y a maximum 10 groupes.
La communication passe par Slack
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.
Références
Voici quelques proposition d'articles. Vous pouvez proposer d'autres articles, mais dans ce cas, les faire valider par les enseignants.
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.
- 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”.
- 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
- 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.
- 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 :
- Idioms pour un code plus facilement maintenanable (pas directement en tous cas…)
- Reverse for disassembled binary files
- Reverse for illegal activities