- Zulassung : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/zulassung/
- Ausbildungsprogramm : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/ausbildungsprogramm/
- Studienaufbau : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/studienaufbau/
- Berufliche Perspektiven : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/berufliche-perspektiven/
- Mobilität : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/mobilitat/
- Personen : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/personen/
- Zulassung : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/zulassung/
- Ausbildungsprogramm : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/ausbildungsprogramm/
- Studienaufbau : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/studienaufbau/
- Berufliche Perspektiven : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/berufliche-perspektiven/
- Mobilität : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/mobilitat/
- Personen : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/personen/
Ausbildungsprogramm
Kursbeschreibung
Zum Modul-
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
Kursbeschreibung
Lernkontrolle
- Schlussprüfung Lernkontrolle Berichte, Mündliche Prüfung
Dozierende
Sébastien Rumley