Studiengang: Informatik und Kommunikationssysteme
Vertiefung: Software Engineering
Module: IS-Integration und -Optimierung

Kursbeschreibung

Zum Modul Optimisation logicielle

  • Angestrebte Kompetenzen und Lernziele

    But général : saisir le fait qu'un logiciel n'est jamais parfait. Même s'il remplit parfaitement les exigences de la spécification en apparence, un logiciel pourra toujours être pris en défaut : incapacité à prendre en compte des cas spéciaux, non résistance à la charge, failles de sécurité, etc.

    On passe dans une phase ' d'optimisation logicielle ' lorsqu'on essaie de limiter les impacts de ces défauts, à périmètre constant, donc sans modifier le fonctionnement même du logiciel. Pour limiter les impacts, il faut connaître l'existence des défauts, et pour bien les connaître, il faut mesurer.

    A la fin du cours, l'étudiant est capable de :

    • Prouver pourquoi un logiciel ne peut être parfait
    • Comprendre que dès lors qu'un logiciel ne peut être parfait, le but de l'ingénieur est de trouver un équilibre entre risques qu'on est prêt à courir et moyens (financiers, temps) pour les réduire.
    • Décrire la notion de rendement, que l'on souhaite augmenter à travers l'optimisation
    • Citer selon quels axes un logiciel peut être optimisé, mentionner si ces axes sont quantitatifs ou qualitatifs, et pour les axes quantitatifs, indiquer quelle unité est utilisée.
    • Décrire et expliquer la notion d'optimisation prématurée.
    • Expliquer le concept de limite absolue de performance.
    • Identifier certains déterminants de la performance et de la scalabilité d'un logiciel, par exemple le nombre de requêtes par seconde, la taille des requêtes, la mémoire à disposition, etc.
    • Maîtriser les ordres de grandeurs de l'informatique : kilo/mega/giga/terabytes, requêtes par seconde, milli/microseconde, méga/giga-instructions par seconde, etc.
    • Esquisser un ordre de grandeur pour une performance cible d'un logiciel simple.
    • Mesurer la performance d'un logiciel selon plusieurs critères, d'une manière reproductible, documentée.
    • Valider et expliquer les mesures recueillies.
    • Automatiser la mesure de performance, et l'inclure dans le processus de vérification CI/CD du logiciel.
    • Prioriser les optimisations possibles, défendre ces choix de priorités
    • Comprendre que les gains réalisables par l'optimisation ne sont jamais infinis, et qu'un logiciel a toujours une limite fondamentale.
  • Kursinhalte

    Le cours consiste à analyser un logiciel existant (codé en Java) selon plusieurs métriques, et à établir un premier rapport listant les principales limitations, si possible quantitativement. Pour chaque limitation, un objectif d'amélioration sera fixé. Dans la deuxième partie du cours, des améliorations seront réalisées en vue d'atteindre les objectifs visés. Un second rapport sera rédigé pour documenter l'atteinte ou non des objectifs.

    Durant le cours, des apports théoriques ou des démonstrations pratiques de technologies seront apportées au cas par cas par les enseignants, entre autres :

    • Profiler et outils d'analyse dynamique
    • Outils d'analyses mémoire, en particulier VisualVM pour Java
    • Outils de test de charge tels que k6
    • Outils de reporting de problèmes, tels que Sentry
    • Outils de monitoring bas-niveau (prometheus, top)

Unterrichtsform

Vorlesungen inkl. Übungen
10 Unterrichtseinheiten
Laborarbeit
26 Unterrichtseinheiten
Travail personnel
9 Unterrichtseinheiten

Kursbeschreibung

Gültigkeit
2023-2024
Studienjahr
3. Jahr
Semester
Frühling
Programm
Französisch,Zweisprachig
Studiengang
Informatik und Kommunikationssysteme
Kurssprache
Französisch
Code
B3C-OPLO-S
Niveau
Fortgeschrittene Stufe
Typ
Ergänzungskurs
Art der Ausbildung
Bachelor

Lernkontrolle

  • Schlussprüfung Lernkontrolle Berichte, Mündliche Prüfung

Dozierende

Sébastien Rumley