CentraleSupélecDépartement informatique
Plateau de Moulon
3 rue Joliot-Curie
F-91192 Gif-sur-Yvette cedex
Fiche descriptive de la mention Sciences du logiciel

Table des matières

SM 10&11Dominante(s) : Informatique
Campus : SaclayLangue : 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)

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)

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)

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)

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 :

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) : Olivier Bouissou
  • 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)

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)

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)

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)

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.