Enseignement des Systèmes

Cette page est une contribution au groupe de travail sur l'enseignement de systèmes mis en place à l'UFR d'Informatique et Mathématiques Appliquées au printemps 2003. Elle rassemble des ressources diverses : spécifications d'objectifs, plans et propositions de cours, bibliographies, etc.

Pour toutes suggestions et contributions, écrire à Sacha Krakowiak

Champ disciplinaire et niveaux de formation

Champ disciplinaire

Matériau existant : sur la discipline "systèmes" : voir transparents de la présentation à la Table ronde du 20 février 2003.

La discipline désignée sous le terme général de "systèmes " a profondément évolué au cours des 10 dernières années sous l'influence des progrès de la recherche et du développement technologique. Elle s'est étendue des systèmes d'exploitation vers les systèmes répartis ainsi que vers le développement d'applications sur l'Internet. Parallèlement, le niveau d'exigence sur les compétences a également évolué :

Les évolutions les plus significatives peuvent se résumer comme suit. Par ailleurs, l'intérêt croissant pour le logiciel libre (open source) n'est pas sans influence tant sur les besoins en compétences que sur les techniques propres de l'enseignement.

Le domaine des systèmes et applications répartis a des interactions avec plusieurs autres domaines, dont doivent tenir compte les programmes d'enseignement.

Dans cette note, on considère l'enseignement relatif aux systèmes d'exploitation, aux réseaux et aux applications réparties (middleware, programmation sur le Web et l'Internet).  Les interactions avec les autres domaines devront être précisées ultérieurement.

Objectifs de la formation, par niveaux et filières

Matériau existant : sur les objectifs et programmes : voir contribution au quadriennal, déjà un peu ancienne (janvier 2002).
On devrait trouver ci-après une version complétée et mise à jour de cette contribution.

Objectifs et contenus

[en cours de rédaction]
Les objectifs sont exprimés en termes de compétences et de savoir-faire qui devraient être acquis aux principales étapes des cursus tant généraux que spécialisés. Les programmes détaillés doivent être élaborés à partir de ces objectifs.

Les niveaux de formation sont définis dans le cadre du système LMD, avec des aspects transversaux correspondant au poids de la discipline systèmes dans la formation considérée ("spécialistes" vs "non spécialistes" dans ce domaine), et au caractère spécifiquement professionnel ou non de la formation. Il faut considérer que tout diplôme "terminal" implique un minimum de compétences valorisables en termes professionnels.  Quant aux niveaux "intermédiaires" (soit L1, L2, M1) leurs objectifs sont définis par le diplôme niveau terminal auquels ils préparent.

Au niveau Licence, on a défini d'une part les objectifs d'une formation générale (destinée à être poursuivie plus avant, mais en tenant compte du fait que le diplôme est terminal) et les objectifs d'une formation professionnelle (Licence professionnelle), qui doivent intégrer un plus fort accent sur le savoir-faire développé autour de projets.
 
Objectifs au niveau L3 : Formation générale
Connaissance des principes
  • Connaissance élémentaire du fonctionnement général d'un système d'exploitation, de son architecture d'ensemble et de ses interfaces.
  • Introduction aux notions de base des réseaux
  • Principes généraux de la programmation répartie, illustrés par des systèmes client-serveur
Savoir-faire pratique
  • Utilisation des principales fonctions du langage de commande d'un système d'exploitation (niveau utilisateur et niveau API).
  • Introduction à la programmation d'applications réparties simples, par utilisation de langages de scripts
Objectifs au niveau L3 : Formation professionnelle
Connaissance des principes
  • comme ci-dessus, mais davantage de contenu sur réseaux
Savoir-faire pratique
  • comme ci-dessus, avec plus d'accent sur le développement de projets et la pratique des outils [à rédiger]

Au niveau Master, la première année (Bac+4) est consacrée à l'acquisition des principes de base, illustrés par des
des applications destinées à maîtriser les mécanismes élémentaires et les méthodes de travail en projets, notamment en équipe. La seconde année (Bac+5) vise surtout à approfondir l'expertise technique dans les domaines choisis et à développer les compétences liées au travail en projets (architecture, qualité, communication).
 
Objectifs au niveau M1 : Formation générale, ou formation professionnelle orientée vers les applications (par ex. MIAGE)
Connaissance des principes
  • Principes des systèmes d'exploitation (processus, programmation concurrente, gestion de fichiers, principes de désignation, liaison, composition ; architecture d'ensemble d'un système : noyau, extensions, communication.
  • Principes de base des systèmes répartis : intergiciels, construction de services, intégration de logiciel
Savoir-faire pratique
  • Programmation concurrente élémentaire (illustrée par ex. avec threads Java)
  • Utilisation élémentaire de systèmes intergiciels (par ex. une application simple en Java RMI et en CORBA)
  • Utilisation de mécanismes de base de déport d'exécution (par ex. applets et servlets)
Objectifs au niveau M2 : Formation professionnelle "systèmes" (par ex. ingénieurs RICM option réseaux-systèmes)
Connaissance des principes
Cf ci-dessus, plus :
  • Approfondissement des systèmes d'exploitation : architecture interne, gestion de mémoire, multiprocesseurs, communications
  • Eléments d'algorithmique répartie
  • Modélisation, mesure, évaluation de performances
Savoir-faire pratique
Cf ci-dessus, plus :
  • Programmation avancée en communication (couches basses des protocoles, etc.) 
  • Administration de système (notamment introduction à la sécurité)

 
 
Objectifs au niveau M2-P : Formation professionnelle "systèmes" (par ex. ingénieurs RICM et DESS GI, options réseaux-systèmes)
Connaissance des principes
  • Approfondissement des principes de l'intergiciel avec objets, composants
  • Sécurité des réseaux, systèmes, applications 
  • Administration de réseaux
  • Tolérance aux fautes ; qualité de service
Savoir-faire pratique
  • Utilisation de systèmes intergiciels
  • Développement d'outils intergiciels pour des cas d'utilisation spécifiques
  • Construction de systèmes spécialisés (embarqués, etc) par assemblage de composants
  • Adaptation de systèmes à des environnements spécifiques (mobile, etc).
Objectifs au niveau M2-P : Formation professionnelle (autre domaine de spécialité)
Connaissance des principes
  • Sécurité des réseaux, systèmes, applications
Savoir-faire pratique
  • Utilisation de systèmes intergiciels
  • Déploiement et administration d'applications (composition d'applications, intégration)
  • Mise en oeuvre de politiques de sécurité

Ces objectifs sont exprimés pour les formations générales et professionnelles. Concernant la formation à la recherche (niveau M2-R), l'objectif est de permettre la composition de parcours très modulaires pouvant incluse aussi bien des modules propres à M2 que des modules proposés en M1 notamment au titre des options.

Les modules M2 actuels relevant du domaine des systèmes au sens large sont regroupés dans l'option SAP du DEA ISC. On y trouve notamment des modules "fondamentaux" (Algorithmique et techniques de base des systèmes répartis, Algorithmique et techniques de base des systèmes parallèles, Évaluation de performances, etc.) et des modules plus appliqués (Construction d'applications parallèles et réparties, Architectures en grappes, Communiations mobiles, etc.).

Le système LMD permet la mise en place de modules d'option en M1. Concernant les systèmes, on peut concevoir plusieurs orientations pour ces options (typiquement 6 ECTS chacune). Les contenus sont donnés à titre très indicatif.

Ces options devraient faire une large part à l'expérimentation pratique et au travail personnel.

Sur la situation existante

On peut faire les constatations suivantes (expérience des enseignants, réactions des industriels qui emploient nos étudiants et les accueillent en stage).

Programmes existants et propositions

Existant (programmes, transparents, TP, etc).

Propositions (maquette pour LMD)

Cours
Projets (les 2 projets sont nouveaux et seront introduits à partir de 2003-2004)
Niveau M1 : projet "système"  (3 semaines), proposé en parallèle avec le projet de compilation]

L'objectif de ce projet est de réaliser un noyau de gestion de processus. Ce noyau doit permettre d'exécuter un programme C écrit en terme de processus légers (threads) coopérant à travers des données partagées. Il offre les opérateurs permettant de créer/détruire des processus et de les synchroniser via des objets de synchronisation (sémaphores, verrous). Une gestion des processus en temps partagé avec priorité et un service échéancier en font un noyau dit  "temps réel".
La machine cible de ce noyau est une architecture Intel 386 "nue". La réalisation du noyau exige de manipuler les mécanismes de bas niveau que sont les interruptions, les commutations de contexte, les horloges et contrôleurs
d'entrées/sorties. Si la majeure partie de la programmation se fait en C, une petite partie se fait en assembleur.
Le développement du noyau et des programmes de  test  se fait de façon "croisée" à partir d'une station de travail Linux (édition, compilation et édition de lien). La réalisation du noyau s'accompagne de la réalisation d'un minimum de services permettant de charger un programme concurrent sur la machine cible, de l'exécuter et d'interagir avec lui via le clavier et l'écran.

Niveau M2  (également en RICM-3): projet "intégrateur" en middleware, interaction avec aspects BD, IHM, GL.

Voir description ici.

Volumes horaires

Tableau provisoire de la répartition prévue en 2003-2004.

Autres ressources

Voir ICAR 2003, École d'été sur les Intergiciels et la Construction d'Applications Réparties

Modalités de mise en oeuvre

Les modalités de l'enseignement évoluent avec les nouveaux modes de diffusion des informations (matériau sur le web, logiciel libre) et les exigences croissantes sur le niveau de qualité des projets. Même si les cours sont nécessaires (surtout jusqu'à M1) pour asseoir les principes et assurer la cohérence globale de l'enseignement, le centre de gravité de l'activité d'enseignement se déplace vers les activités de projets ou de travail d'acquisition semi-encadré. La préparation des supports et matériaux de projets, l'encadrement et la coordination de ces activités, requièrent un effort qu'il faut chiffrer. Deux remarques peuvent etre faites à ce propos. Voir à titre d'exemple le bilan d'une activité de projet mise en place depuis 5 ans en DESS-GI et depuis 2 ans en RICM3.

Les activités de TP et de projet en systèmes doivent s'appuyer largement sur de standards ouverts et sur l'usage de logiciel libre (notamment Linux pour ce qui concerne le système d'exploittaion), d'une part pour des raisons financières, mais surtout pour exploiter les ressources disponibles (logiciel, documentation) et utiliser la compétence de la communauté regroupée autour de ces ressources.
 

Recommandations

Concernant les programmes et leur évolution

Il est souhaitable d'introduire plus tôt dans le cursus, même à un niveau élémentaire : Sur le deuxième point, il est proposé d'introduire une option en L3 orientée vers la programmation système (usage des interfaces Unix en C, gestion fine de ressources, mémoires, entrées-sorties, outils de développement).

Concernant les liens avec les autres disciplines

Il faut renforcer les liens entre le "système" et diverses disciplines connexes. Le point important est d'éviter le cloisonnement, et cela dès le début de la formation. Par exemple, les méthodes et outils de génie logiciel doivent être explicitement utilisés dans le projets. D'autre part, il faut crééer des projets "intégrateurs" regroupant plusieurs domaines. C'est ce qui sera fait en M2 et RICM3 à partir de la rentrée 2003 (projet ECOM regroupant systèmes et middleware, BD, IHM). Le projet système en M1 est également proche des aspects d'architecture matérielle.

Concernant les ressources matérielles et logicielles

1) Il est essentiel d'augmenter la proportion de machines équipées de systèmes Linux. Le "double boot" d'après l'expérience acquise, n'est pas utilisable (perte de configuration). Dans l'immédiat, le besoin est de 4 salles de TP équipées en PC Linux.

2) Il faut examiner la possibilité d'extensions WiFi au réseau existant pour généraliser l'usage de portables par les étudiants. Une pré-étude sera menée sur ce sujet (coordinateur : Jean-Marc Vincent)
 


Dernière mise à jour : 11 juin 2003
Pour toutes suggestions et contributions, écrire à Sacha Krakowiak