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
Cette année, 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.
Par exemple,
Pour cela, la démarche globale du cours s'appuiera sur de l'auto-apprentissage et du partage de connaissances :
Approche inspirée de : https://www.gitbook.com/book/delftswa/desosa2016/details
Les sous-chapitres sont des propositions, mais les étudiants sont invités à en faire d'autres.
Toute partie du livre comprend ses auteurs.
Exemple de chapitre : Fouiller
Tous les étudiants participant à un chapitre doivent compléter ces différentes parties
Vous devez étayer votre sous-chapitre en faisant référence 2) à au moins 3 des références données ci-dessous. Vous pouvez ajouter des références, évidemment, et si besoin demander à en prendre en compte d'autres non prévues, mais avec l'accord de l'enseignant.
Pour 2018 ⇒ beaucoup d'articles dans ASE 2016
Les rubriques sont données à titre indicatif, mais plusieurs des articles peuvent être utilisés dans plusieurs rubriques. Certaines références sont encore partielles (manque auteur, date etc.), cela sera fait ultérieurement.
Si les articles ne sont pas “cliquables” me les demander. Dans vos recherches vous serez surement conduits à regarder d'autres articles. Bien sûr vous y faîtes référence dans votre chapitre.
Les rubriques sont là pour vous aider mais un article par exemple en visualisation peut très bien être tout à fait pertinent en fouille de données.
- Avelino G, Passos LT, Hora AC, Valente MT (2017) Assessing Code Authorship: The Case of the Linux Kernel. CoRR abs/1703.0:
- Lal H, Pahwa G (2017) Code review analysis of software system using machine learning techniques. 2017 11th Int. Conf. Intell. Syst. Control. pp 8–13
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.
En fonction de la question que vous vous posez, vous ne regardez pas forcément les mêmes codes. Voici quelques suggestions, mais vous pouvez en proposer d'autres. Dans tous les cas, on veut pouvoir “reproduire” vos expérimentations, c'est pourquoi du code “non publique”, ne pourra pas servir de tests sauf cas particulier où en complément à une étude reproductible.
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 :