Cette page présente les différents cours que je dispense. Certains polycopiés y sont accessibles, tous le seront progressivement. L'esprit général de l'enseignement du génie logiciel à l'école est que les aspects descriptifs (conception, puis analyse, spécification) sont acquis après que les aspects techniques de l'activité du programmeur soient connus. Pour cela, les étudiants réalisent des projets difficiles, maintenus et améliorés d'année en année, afin d'être dégrossis aux problèmes posés par l'informatique " industrielle ". L'année 1 est celle du programmeur de base (C, application à X Window), l'année 2 est celle du concepteur (contrôle qualité, conception orientée objet, conception des interfaces homme machine), l'annee 3 est celle de l'analyste et du chef de projet.
L'option logiciel permet d'aborder avec un grand détail les notions abordées en tronc commun. En particulier, les normes " vraies " (ISO, ANSI, IEEE, AFNOR) et les normes de fait les plus utiles sont présentées avec soin.
Dernière mise à jour le 15/2/99
Ce cours permet à l'étudiant de maîtriser son activité individuelle de programmeur. A ce titre, il constitue la pierre de base de tous les enseignements de génie logiciel. Il en constitue d'ailleurs un prérequis.
Les concepts abordés sont notamment :
Compétence avérée en développement avec des languages comme C ou Pascal. Connaissance du language shell " sh " sous Unix. La connaissance de C++ est utile, car le language sert aux exemples d'application dans le cours.
Après ce cours, l'étudiant possède des bases solides pour organiser son activité de programmeur. Les concepts abordés sont totalement détachés de la programmation orientée objet, et peuvent être utilisés avec tout language de programmation.
Ce cours est dispensé en tronc commun aux élèves de deuxième année de l'école. Volume horaire : 20 heures de cours et travaux dirigés. Notation : un examen sans documents en fin de module, et contrôle continu lors des td.
Bertrand Meyer : Object Oriented Software Construction : Prentice Hall
Ce cours apporte les notions fondamentales de la programmation orientée objet, et apprend à structurer les classes selon différents grands principes : notion de modèle, de modularité, métaphore de la machine. Un accent particulier est porté sur la conception des interfaces de programmation, et sur l'organisation des classes suivant les "design patterns " connus.
Le cours s'appuie sur C++ ou JAVA le pour les travaux dirigés et les travaux pratiques.
Savoir programmer en C ou Pascal.
Savoir dériver une conception objet bien organisée, compréhensible, pouvant évoluer, utilisable et réutilisable, à partir des spécifications d'un logiciel.
Ce cours est dispensé en tronc commun aux élèves de deuxième année de l'école. Volume horaire : 20 heures de cours et travaux dirigés. Notation : un examen sans documents en fin de module, et contrôle continu lors des td.
Object Oriented Software Construction, par Bertrand Meyer, Prentice Hall (existe aussi en français)
Object Oriented Modelling Technique, James Rumbaugh
UML11, copie miroir du draft de la spécification de UML11
Design Patterns : Elements of Reusable Object Oriented Software, par Erich Gamma et Al., Addison Westley professional computing series (existe aussi en français)
Object Oriented Analysis and Design with applications, par Grady Booch, Benjamin Cunnings Publishing Company
Object Oriented Analysis, par Coad et Yourdon, Yourdon Press Computing Series
Programmation Java, par Macary et Nicolas, Eyrolles
C++, par Bjarne Stroustrup, Addison Wesley
Langage C++, par Charbonnel, Masson
Vers Ada 95 par l'exemple, par Fayard et Rousseau, De Boeck Université
Un polycopié pas encore disponible ici.
Ce cours présente le langage C++ en insistant sur l'ingénierie du C++ dans l'industrie du logiciel. La couverture du langage est complète et présente les derniers développements de la norme ANSI: STL, nouveaux mots clef du langage.
Le module GL02TC/COO.
Ce cours de tronc commun de 40 heures est noté par contrôle continu lors des séances de td, par un projet réalisé pendant les tp du cours et par examen. Tous les projets de l'école qui le permettent sont réalisés en Java ou en C++ si c'est réaliste. Le projet global de génie logiciel de deuxième année également. Par ailleurs les étudiants apprennent à utilisaer des bibliothèques C++ commerciales (Ilog Views par exemple).
C++, par Bjarne Stroustrup, Addison Wesley
Langage C++, par Jacquelin Charbonnel, Masson
Un manuel de référence résumé assez détaillé : le poly C++
Ce cours présente les aspects techniques fondamentaux de la conception et de la réalisation des interfaces homme machine. On y apprend à structurer une application qui en comporte selon des principes d'organisation (l'utilisateur parfait notamment), de modélisation (organisation de l'interface autour de la notion d'états ou de contextes, en utilisant les diagrammes d'états de Unified Modelling Language) et d'ergonomie.
Le cours utilise pour les travaux dirigés et travaux pratiques la bibliothèque Ilog Views.
Les modules GL02TC/CQD et GL02TC/COO.
Savoir concevoir une interface homme machine couplée de façon harmonieuse aux codes des algorithmes, savoir en organiser et en contrôler la dynamique interne, savoir organiser la conception et le développement d'une interface importante (plusieurs centaines d'écrans). Savoir produire un document de spécification d'IHM.
Ce cours est dispensé en Option logiciel aux élèves de deuxième année de l'école. Volume horaire : 20 heures de cours et travaux dirigés. Notation : un examen sans documents en fin de module, et contrôle continu lors des td.
Ilog Views, manuels de référence et d'utilisation
OMT, UML10, UML11, copie miroir de la spécification de UML11 (10/1998)
Un polycopié non encore disponible ici.
Ce cours aborde les phases les plus en amont du développement : définition des besoins, spécification des besoins, rédaction du cahier des charges. On étudie en détail un exemple de modèle de cahier des charges industriel, et la norme du cahier des charges fonctionnel, en connexion avec l'analyse de la valeur. Un accent particulier est porté sur les méthodes d'expression du besoin.
Le cours présente également deux méthodes de créativité utilises en phase amont du développement : la méthode CORE et l'Analyse de la Valeur.
Les modèles connus de cycles de vie logiciel sont également présentés dans ce cours : cascade, v, prototypage, spirale et son évolution récente : le développement rapide (RAD).
Les modules GL02TC/CQD et GL02TC/COO.
L'étudiant doit à l'issue du cours être capable de rédiger un cahier des charges et d'avoir une vision réaliste de la place et de l'organisation du projet dans le temps. Les aspects élémentaires de la gestion de projet (métriques, procédés) ne sont cependant pas couverts par ce cours.
Ce cours de tronc commun dure 20 heures : 10 heures de cours, 10 heures de td.
Le génie logiciel, par Sommerville, Addison Wesley
Software Engineering, IEEE standards collection
les normes ISO :
nf en iso 9001: Modèle pour l'assurance de la qualité en conception, développement, production, installation et prestations associées
nf en iso 9000-3: Normes pour la gestion de la qualité et l'assurance de la qualité : applicationde l'iso 9001 au développement, à la maintenance et à la mise à disposition du logiciel
les normes AFNOR:
nfx 50-150: Analyse de la valeur, analyse fonctionnelle : vocabulaire
nfx 50-151: Guide pour l'élaboration du cahier des charges fonctionnel
nfx 50-152: Analyse de la valeur : caractéristiques fondamentales
nfx 50-153: Analyse de la valeur : recommandations pour sa mise en oeuvre
Un polycopié non disponible ici pour l'instant.
Ce cours aborde de façon générale les aspects les plus externes de la gestion des projets et des hommes. L'accent porte spécialement sur les aspects humains : communication, négotiation, organisation du travail, et aborde les aspects techniques du suivi des projets : suivi et respect des plannings, obtention de la traçabilité, organisation des tests unitaires, éléments de gestion de configuration, etc...
Une introduction à l'assurance qualité est faite par la présentation des normes ISO9000-* et la pratique de la réalisation de plans qualité.
Les modules GL02TC/CQD et GL02TC/COO.
L'étudiant doit comprendre la place qu'il occupe dans une équipe organisée, et être capable de structurer l'activité d'une petite équipe en évitant les écueils d'un exercice mal compris de l'autorité.
Ce cours de tronc commun dure 20 heures, 10 heures de cours plus 10 heures de travaux dirigés.
Managing the Software Project, Humphrey, Addison Wesley
Maitrisez votre gestion de configuration logiciel, une étape pour la certification Iso 9000, par Dominique Jacquin, Masson
Software Reliability Handbook, Rook, Elsevier
Le génie logiciel, Sommerville, Addison Wesley
Software Engineering, IEEE standards collection
CMM, par le software engineering institute
les normes ISO :
nf en iso 9001: Modèle pour l'assurance de la qualité en conception, développement, production, installation et prestations associées
nf en iso 9000-3: Normes pour la gestion de la qualité et l'assurance de la qualité : applicationde l'iso 9001 au développement, à la maintenance et à la mise à disposition du logiciel
Introduction à la gestion de projet.
Ce cours présente le cadre général des méthodes de spécification formelle, et décrit deux langages à l'utilité industrielle reconnue : Z et B. L'étudiant apprend à utiliser ces langages pour produire la spécification du logiciel, et à dériver progressivement la conception. On apprend à reconnaître et à satisfaire les obligations de preuve. L'outil atelier B sera utilisé si possible dans le cadre des TD et TP, ainsi que le vérificateur de type ZTC du domaine public..
Les module GL03TC/CDC et GL02TC/COO.
Permettre à l'étudiant d'être immédiatement opérationnel dans un contexte industriel qui utilise Z ou B, ou bien de suggérer l'utilisation de l'une de ces méthodes dans une situation qui lui paraîtrait appropriée.
Le cours dure 20 heures dont 6 heures de cours et 14 heures d'atelier (td).
The B Book, par J.R.Abrial, Cambridge University Press
Z an introduction to formal methods, par Antoni Diller, Wiley
The Z Notation, a reference manual, Prentice Hall International Series in Computer Science
Non encore disponible ici.
Ce cours d'Option présente Unified Modelling de Rational, qui dans la lignée de OMT, OOA et la méthode des Use Case est promise à un bel avenir industriel. La pratique de la méthode est encouragée pour tous les projets et les stages de troisième année en Option.
Les modules GL03TC/CDC et GL02TC/COO.
Etre opérationnel sans formation.
Ce cours d'Option logiciel de 20 heures consiste en 6 heures de cours et 14 heures d'atelier (td).
Certains documents publics du site de Rational sont en miroir ici :
Après une présentation de la problématique de générale de la gestion des processus de développement, le cours présente le modèle d'évolution des capacités du SEI (Capacity Maturity Model).
Par ailleurs, ce cours situe le contexte industriel de la gestion électronique de documents (les métiers de l'entreprise de production : études, méthodes, et le "reverse engineering " notamment), et les outils apportant des solutions techniques aux différents problèmes posés : gestion de configuration, nomenclatures etc... L'outil utilisé pour les TD et TP est l'applicatif Métaphase.
Le module GL03TC/CDC.
L'étudiant doit comprendre à l'issue du cours l'organisation générale du modèle d'évolution des capacités, et structurer ainsi sa compréhension des différents métiers de l'organisation productrice de logiciel. Il doit être capable d'accompagner ou de susciter l'évolution de la société vers des niveaux croissants de maturité, que cela soit où non fait en parallèle avec la normalisation ISO d'assurance qualité.
Ce cours d'Option de vingt heures est noté par examen sans documents.
La norme à diffusion autorisée plus un polycopié.
Certains documents publics du Software Engineering Institute sont en miroir sur ce site:
Ce projet consiste en un ensemble à peu près cohérent d'outils pour le génie logiciel réalisés par les étudiants eux mêmes, durant la deuxième année. Les projets utilisent des bibliothèques communes, et sont maintenus et améliorés d'année en année.
responsable : Taibi
La bibliothèque doutils de base : listes, tableaux, tables hashées etc...
responsable : Marton
Un générateur de compilateurs
responsable : Devulder
Un générateur de compilateurs qui backtrackent
responsable : Doco
Des utilitaires de gestion despace de projet, et la responsabilité de contrôler que tout se fait correctement
responsable : Doco
responsable : Capponne
Un outil de mise en forme de sources
responsable : Molina
Un programme de vérification statique des sources
responsable : Battini
Un makefile qui génère automatiquement des statistiques de compilation
responsable : Badar
Une bibliothèque qui permet denvoyer automatiquement des statistiques dutilisation des programmes au concepteur
responsable : Moro
Un outil graphique de spécificationn de modèles OMT
responsable : Cohen
Un générateur de sources C++ a partir du langage OML
responsable : Slim
Des classes permettant lexécution des programmes OML
responsable : Baratchar
Un générateur de Java a partir de C++
responsable : Signoret
Une base de données texte indexé (type search engine)
responsable : Batailler
Visualiser les données, un rêve
responsable : Bardiot
Un extracteur de spécifications a partir de sources C++ : génère du source octo et du html
responsable : Alaoui
Un programme qui génère automatiquement des fonction membre de lecture / ecriture dinstances dans des fichiers ascii
responsable : Gouvernelle
Un programme qui génère automatiquement des fonctions membres de browsing dinstances
responsable : Attard
Un programme qui génére automatiquement des programmes de test a partir des sources
responsable : Toiron
Un programme qui insère du profiling dans les sources
responsable : Gegetieh
Pour visualiser des graphes de dépendance fonctionnelle des programmes
responsable : Zino
Pour parler a distance à des objets
responsable : Teglia
Pour lancer des programmes à distance
responsable : Giordano
Pour traduire des fichiers BD (file force) vers html
responsable : Court
Des sockets cryptés
responsable : Ransan
Une interface de gestion de projet
responsable : Giordano
Un éditeur de html
responsable : Ait
Un outil de visualisation de différences entre fichiers
responsable : Gras
Un browser de fichiers en 3D
responsables : Gauvrit et Minard
responsable : Bonnafoux
Un programme pour tester la bonne syntaxe de spécifications Z
responsable : Dubois
générer du html navigable a partir de sources C++
responsable : Pellegrin
Un autre algo de cryptage (DES), sur la même interface de programmation
responsable : Brouchier
Un outil de communications par broadcast avec abonnement
responsable : Guidault
Comme son nom lindique, couplé avec config
responsable : Bourbier
Comme SCCS, mais permettant en plus darchiver des fiches correspondant à des documents sur étagère
responsable :
responsable : Morell
responsable : Hugon
En collaboration avec WAM, un programme pour décrire des processus et les dérouler.
responsable : Kris
Une interface client sur le serveur de processus (voir plus bas)
responsable : Baruchello
responsable : Aubion
responsable : Barberio
responsable : Morand