Table des matières
SM 10&11 | Dominante(s) : Informatique | |
Campus : Saclay | Langue : Français | |
Responsable de la mention : Frédéric Boulanger (Département Informatique) |
Mention Sciences du logiciel
Organisation de la SM10 (117 HPE/210 HEE) Organisation de la SM10
Contenu du cours n°1 (24 HPE/40 HEE)
- Code : 3IF2020
- Titre : Principes de fonctionnement des ordinateurs
- Enseignant(s) : Frédéric Boulanger, Safouan Taha
- Brève description
Ce cours présente les principes fondamentaux de fonctionnement des ordinateurs et les illustre par la conception d'un microprocesseur, la traduction d'instructions Python en langage d'assemblage, la gestion des entrées-sorties et les interruptions. Le microprocesseur est réalisé sous Logisim, les entrées-sorties et les interruptions sont présentées sous MicroPython.
Contenu du cours n°2 (15 HPE/30 HEE)
- Code : 3IF2030
- Titre : Traitement des langages
- Enseignant(s) : Benoît Valiron
- Brève description
Les langages sont l’outil fondamental de la modélisation des systèmes, de la spécification à la vérification en passant par les différentes étapes de la conception, y compris la programmation. Ce cours présente les concepts fondamentaux du traitement informatique des langages textuels, avec les notions de grammaire, d’analyses lexicale et syntaxique. Il s’appuie sur les outils actuels (ANTLR, Xtext) pour mettre en œuvre ces concepts dans un mini-projet qui se déroule tout au long du cours. Les HPE se décomposent en 4 séances de 3h de cours et une séance de 3h de travaux dirigés permettant le suivi du mini-projet.
Contenu du cours n°3 (15 HPE/30 HEE)
- Code : 3IF2040
- Titre : Ingénierie des modèles
- Enseignant(s) : Frédéric Boulanger
- Brève description
Les modèles sont au cœur de la conception des systèmes, et les modèles informatiques peuvent eux-mêmes être considérés comme des systèmes que l’on modélise, ce qui crée toute une hiérarchie de modèles auxquels s’appliquent les techniques de l’ingénierie des modèles. Ce cours aborde le rôle des modèles, les relations entre modèles, systèmes et langages afin d’éclairer les fondements de l’ingénierie des modèles et de tout l’outillage disponible pour créer des métamodèles, définir des transformations de modèles, valider des modèles. Ces outils sont mis en œuvre et exploités pour limiter les redondances, éviter les incohérences et réutiliser au mieux l’information codée dans les modèles. Un mini-projet sous Eclipse EMF avec QVT-operational et Acceleo se déroule en parallèle du cours, avec une séance finale de 3h de travaux dirigés pour le suivi. Le cours proprement dit comporte 4 séances de 3h, dont deux sur machine (bureaux d'étude)
Contenu du cours n°4 (24 HPE/40 HEE)
- Code : 3IF2211
- Titre : Logique et systèmes déductifs
- Enseignant(s) : Benoît Valiron
- Brève description
La logique est l’outil de modélisation le plus fondamental. Le choix d’une logique est toutefois un compromis entre pouvoir expressif et décidabilité. Ce cours présente les fondements de la logique : calcul des propositions, logique du premier ordre (prédicats) et logique d’ordre supérieur ainsi que le lambda calcul typé qui permet de définir des langages de spécification et de programmation. Ces éléments permettront d’aborder la preuve dans les systèmes déductifs (logique du premier ordre dans la méthode B, logique d’ordre supérieur dans Coq ou Isabelle/HOL).
Contenu du cours n°5 (18 HPE/30 HEE)
- Code : 3IF2070
- Titre : Test
- Enseignant(s) : Safouan Taha, Lina Ye
- Brève description
Le test demeure un des piliers de la vérification des systèmes : si on vous donne le choix entre voyager dans un avion prouvé ou dans un avion testé, que choisissez-vous ? Toutefois, les tests coûtent cher, et il est primordial d’assurer le meilleur taux de détection d’erreur par euro dépensé en tests. Ce cours aborde les fondamentaux de la théorie du test, les différents types de tests (unitaire, d’intégration, fonctionnel, fondé sur les modèles etc.), la qualimétrie des tests (taux de couverture), et les méthodes de génération de scénario de test.
Contenu du cours n°6 (21 HPE/40 HEE)
- Titre : Cours électif
- Enseignant(s) : xxx
- Brève description
Cours électif à choisir parmi :
- 3IF2090 Programmation quantique pour le machine learning (Benoît Valiron)
- 3IF2250 Développement de systèmes critiques avec la méthode B (Idir Ait-Sadoune, RATP, CLEARSY, Systerel)
- 3IF2260 SCADE et le synchrone pour les systèmes critiques (Xavier Fornari (Ansys))
- 3IF2270 Spécification et test de systèmes temps-réel (Pascale Le Gall, Paolo Ballarini, Boutheina Bannour (CEA))
Organisation de la SM11 (99 HPE/205 HEE) Organisation de la SM11
Contenu du cours n°1 (9 HPE/20 HEE)
- 3IF2050
- Titre : Analyse statique
- Enseignant(s) : Virgile Prevosto
- Brève description
L’analyse statique permet de déterminer des propriétés d’un système en examinant ses modèles, sans l’exécuter ni le simuler. Il s’agit d’une approche de la vérification qui est automatique, mais qui peut rapporter de faux positifs (problèmes qui n’existent pas réellement) et passer sous silence des problèmes bien présents (faux négatifs). Ce cours vise à présenter les différentes techniques d’analyse statique, les domaines où elle est la plus pertinente, ses limites et ses avantages.
Contenu du cours n°2 (9 HPE/20 HEE)
- Code : 3IF2060
- Titre : Systèmes hybrides
- Enseignant(s) : Lina Ye
- Brève description
L'informatique étant souvent utilisée pour contrôler des processus physiques, ce cours met l'accent sur les problèmes qui se posent à l'interface entre le logiciel, discret, et les phénomènes physiques, dont la dynamique est continue.
Contenu du cours n°3 (15 HPE/30 HEE)
- Code : 3IF2225
- Titre : Génie Logiciel
- Enseignant(s) : Paolo Ballarini
- Brève description
Présentation succincte du génie logiciel et de la modélisation objet :
- Cycles de conception : cycle en V, expression des besoins, spécification, implémentation, vérification, validation
- UML (diagrammes de classes et de séquences), éventuellement OCL
- Patrons de conception (6 HPE, avec TD ou cours dirigé)
Évaluation sur un mini-projet avec patrons de type visiteur (génération de code), wrapper (réutilisation d'une bibliothèque) ou autre.
Contenu du cours n°4 (21 HPE/40 HEE)
- Code : 3IF2220
- Titre : Sémantique des modèles et des langages
- Enseignant(s) : Frédéric Boulanger et Nikolaï Kosmatov (CEA)
- Brève description
La valeur d’un modèle tient au sens qu’il porte et aux outils qu’on peut lui appliquer. Il est primordial que les différents outils interprètent un modèle donné de la même façon. Ce cours présente les techniques sémantiques qui permettent de définir le sens d’un langage, et donc le sens des modèles exprimés dans ce langage. On y verra comment modéliser la syntaxe abstraite d’un langage (en connexion avec le cours de traitement des langages), choisir un domaine sémantique (en général une logique), et comment établir une correspondance entre les éléments syntaxiques et les éléments sémantiques. Les différents styles de sémantiques (opérationnel, dénotationnel, axiomatique) seront présentés, ainsi que les relations de consistance et de complétude relatives. Ce cours s’appuie sur le cours de logique et systèmes déductifs, et suit une approche pragmatique avec une mise en œuvre concrète des concepts et des méthodes dans l’assistant de preuve Isabelle/HOL. 16 heures de travail personnel sont dédiées à la prise en main de l’outil (tutoriel à suivre) et à des exercices. Deux créneaux de 3 heures en présentiel sont consacrés à une pratique encadrée (travaux pratiques) afin d’ancrer les notions abstraites dans leur mise en œuvre concrète sur un cas d’étude.
Deux créneaux de 3h sont consacrés à la preuve de programmes C dans l'outil Frama-C, afin de voir les possibilités de mise en œuvre de la preuve de programme dans un contexte industriel.
L'évaluation se fait sur les rendus des exercices et sur le projet Frama-C.
Contenu du cours n°5 (16,5 HPE/30 HEE)
- Code : 3IF2235
- Titre : Programmation avancée
- Enseignant(s) : Dominique Marcadet
- Brève description
Présentation des particularités de différents langages de programmation et mise en œuvre d'idiomes de programmation en Java et C++. Présentation d'un langage récent (actuellement Rust).
Évaluation sur un mini-projet
Contenu du cours n°6 (21 HPE/40 HEE)
- Code : 3IF2080
- Titre : Algorithmes et modèles pour les systèmes distribués
- Enseignant(s) : Francesca Bugiotti
- Brève description
Présentations des techniques qui permettent de déployer des logiciels sur des systèmes distribués. Les technologies comme Docker et Kubernetes y sont abordées et mises en œuvre sur des cas d'étude pratiques.
Contenu du cours n°7 (7,5 HPE/25 HEE)
- Code : 3IF2240
- Titre : Méthodes et outils de conception
- Enseignant(s) : Intervenants industriels
- Brève description
La conception d’un système est un processus complexe qui s’appuie d’une part sur des méthodes scientifiques et des outils, mais également sur des interactions entre êtres humains. L’objectif de ce cours est d’aborder les différentes pratiques de mise en œuvre des outils de conception dans un processus qui prend en compte les facteurs humains et qui permet de contrôler la qualité de la production et la qualité du déroulement du processus. Y seront abordées les méthodes agiles, l’intégration et le déploiement continu, les interactions avec le client pour la définition des besoins etc.