UE Méthodes et outils pour la conception avancée

Diplômes intégrant cet élément pédagogique :

Descriptif

Dans de nombreux secteurs, concevoir le plus efficacement et sûrement possible des logiciels de qualité représente un enjeu économique ou sociétal majeur (IoT grand public, énergie, santé, avionique,...). Les concepteurs et développeurs doivent maîtriser les concepts, méthodes, et outils permettant d'atteindre ce but.
La notion de qualité du logiciel s'appuie généralement sur des critères et indicateurs, parfois sujets à des normes [1]. Le but de cette option n'est pas l'apprentissage de ce contexte normatif.

L'objectif ici est de familiariser les étudiants à quelques "bonnes pratiques" liées à certains de ces critères de conception logicielle (à noter toutefois que la plupart de ces bonnes pratiques se retrouveront, sous d'autres formes, aussi dans la conception matérielle). Le langage C étant toujours l'un des plus communément utilisés (pour les applications de bureau, les applications mobiles, ou l'embarqué)[2], notre contexte de travail sera le développement d'applications en C sous Unix, mais les concepts abordés seront bien sûr déclinables dans d'autres contextes..

Cette option se voudra très pratique. Les séances de 3h se présenteront sous la forme de 1h30 de cours + 1h30 de TP. L'objectif pratique sera de partir d'une application (fournie) présentant divers défauts et de l'améliorer au cours des séances de TP. Du travail (en contrôle continu) sera nécessaire entre les séances, afin d'assurer le rythme de celles-ci. Le produit final sera l'application améliorée, sa documentation, et ses tests documentés (+ un makefile pour sa compilation, permettant aussi de re-générer la documentation et d'exécuter les tests).

Pré-requis

Aisance à la programmation en C sous Unix.

Compétences visées

Les bonnes pratiques que nous considérerons viseront essentiellement à : la maintenabilité et la réutilisabilité du code, la détection de défauts et d'erreurs difficilement identifiables dans des cas d'utilisation nominaux (mauvaise gestion de la mémoire, itérations mal conçues,...), l'analyse et l'amélioration des performances, mais aussi l'analyse de la vulnérabilité à certaines attaques, et l'identification de la qualité des tests utilisés pour valider l'application.

Informations complémentaires

Méthode d'enseignement : En présence
Lieu(x) : Grenoble - Domaine universitaire
Langue(s) : Francais