User Tools

Site Tools


teaching:reverse:2017:start

This is an old revision of the document!


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)
    • 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
    • Remise des articles à avoir lu pour l'examen
    • 09:45 – 12:15 : Autonomie Livrable L.3
  6. mar.6 févr. 2018
    • 08:00 – 10:00 : TD - Travail sur les choix d'articles, démarche & Métrics/KPI (SM,PC)
    • 09:45 – 12:15 : Autonomie Livrable L.2 & L.4
  7. mar.13 févr. 2018
    • 08:00 – 9:00 : Intervention d'un industriel
  8. mar.20 févr. 2018
    • 08:00 – 11:00 : Autonomie
  9. mar.27 févr. 2018
    • 08:00 – 11:00 : Examen Livrable L.5 & Livrable 6

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

    • Objectifs de ce livrable : Vérifier que vous avez identifié votre sujet et les questions associées.
    • Il comprend sous la forme qui vous convient :
      1. la question générale & pourquoi vous la trouvez intéressante
        1. la décomposition en sous-questions et les métriques/KPI/outils **envisagés** pour y répondre
        2. la démarche prévue
        3. les 2 articles au moins sur lesquels vous pensez vous baser pour répondre à la question. Un doit se trouver dans la rubrique généralité, un autre dans la rubrique études. Vous pouvez avoir vous-même suggéré des articles dans ces 2 rubriques. Dans ce cas, ils doivent être validés par les enseignants.
        • Il ne faut hésiter à évoquer plusieurs pistes si les choix ne sont pas faits.
      2. Chaque groupe a créé un chapitre dans le livre précisant les auteurs, et chaque auteur est bien "associé" au livre
    • date limite : 8/01 à 15h. Le rendu se fait sur Slack.
    • Objectifs de ce livrable : Evaluer l'avancement des projets et préparer la phase en autonomie
      1. 10mn d'exposé, 10mn de questions par groupe : 20mn par groupe.
      2. Date : 23 janvier de 8h à 12h00
      3. Utilisation de Slack pour partager les questions du groupe aux différents sous-projets
    • @todo a revoir
    • Evaluation par plusieurs relecteurs extérieurs
    • Critères d'évaluation :
      • Méthode suivie et argumentaire
      • Rédaction
      • Résultats
        • Recul et Pertinence des remarques
        • Date limite : 27 février à 23h59
    • Livrable en fonction des artefacts utilisés, l'objectif est de rendre l'expérimentation reproductible.
    • Date limite : 27 février à 23h59
    • Date : 27 février @todo forme à préiciser

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

1)
SOFTWARE MAINTENANCE : From Analysis to Implementation
teaching/reverse/2017/start.1513515556.txt.gz · Last modified: 2017/12/17 13:59 by blay