COURS 1
Mardi 4 décembre – 14h00-17h30
Génie logiciel et Sécurité

Animateur : Stéphane Natkin – Professeur des Universités au CNAM, Directeur du CEDRIC


L'importance croissante des logiciels participant à la sécurité (protection contre l'agression) des systèmes informatiques a amené à une réflexion sur les caractéristiques spécifiques qui peuvent être demandées pour la spécification, la programmation et la validation des logiciels de sécurité (protocoles de sécurité, mécanismes de protection, systèmes de signature électronique, paiements, …). Ce cours présente l’état actuel de la réflexion dans ce domaine selon trois axes : architecture et évaluation, utilisation de méthodes formelles et techniques de programmation spécialisées.

Objectifs
Comprendre les problèmes principaux liés à l’utilisation de logiciels de sécurité ; comprendre les critères et les méthodes permettant de développer un logiciel de sécurité ou d’accepter l’utilisation d’un tel logiciel ; estimer la complexité relative de la mise en œuvre de méthodes et d’outils pour le développement de logiciels de sécurité.

Programme
1- Rappel sur la problématique de la sécurité : Problèmes généraux et terminologie, cryptographie, protocoles de sécurité, protection. Les problèmes de sécurité sur l’Internet.

2- Spécification des objectifs et méthodes d’évaluation : Introduction aux ITSEC et aux Critères Commun. Impact sur les principes d'architecture (cible et profils de protection) et l'impact du niveau d'évaluation sur le processus de développement. Spécification d’une politique de sécurité et principes de preuves. Comparaison avec les techniques de sécurité innocuité (protection contre les catastrophes). Exemple : Profil de protection d’une infrastructure à clefs publiques (PKI) et spécification d’une politique de sécurité (Trustycom), éléments de preuve de sécurité pour un système d’accès à distance à des données industrielles sensibles (CESIR).

3- Utilisation des méthodes formelles : Application aux systèmes de sécurité soit en ce qui concerne la spécification soit en ce qui concerne la preuve. Principaux langages et outils utilisés. Exemple : spécification de JavaCard en B (Gemplus) et validation du protocole SSL v3 avec Murphi (Stanford University).

4- Techniques de programmation : " Principes prudents de programmation " pour les logiciels de sécurité d’Abadie et Needham Evolution et exemples de mise en œuvre. L’exposé s’appuiera en partie sur le livre " Les protocoles de sécurité de l’Internet " (Dunod, 2001) de Stéphane Natkin.


COURS 2
Mercredi, 5 décembre – 9h00-12h30
Développement de Systèmes Réactifs avec les Langages Synchrones

Animateur : Emmanuel Ledinot – Dassault Aviation (F)


Les systèmes réactifs sont aujourd’hui présents dans de nombreuses applications de l’informatique, qu’il s’agisse de systèmes embarqués, de dispositifs mobiles ou d’automatismes. Ces systèmes requièrent des techniques et méthodes de développement particulières ainsi que des langages de programmation tenant compte de leurs spécificités.

Objectifs
Le présent cours a pour objectif de présenter l’essentiel du génie logiciel relatif aux systèmes réactifs : les outils et les méthodes.

Programme
1-Positionnement du domaine : Définition de la notion de système réactif, positionnement par rapport à la notion de système temps réel. Définition des langages synchrones, positionnement par rapport aux langages usuels de programmation parallèle et aux systèmes d'exploitation. Classes d'applications concernées par les langages synchrones, illustration par quelques exemples types.

2-Introduction aux langages synchrones : Pourquoi des langages spécialisés ? Avantages et limites par rapport aux autres langages usuels de programmation et aux boîtes à outils pour l'automaticien. Principes communs relatifs à la sémantique, à la compilation et à la preuve de programmes. Deux modes d'expression : flots de données et flots de contrôles. Tour d'horizon de l'offre de produits et de l'utilisation industrielle.

3-Les langages flots de données : Syntaxe et sémantique du langage Lustre, exemples de programmes Lustre. Problématique de la qualification du générateur de code. Le langage Signal.

4-Les langages flots de contrôle : Le formalisme StateCharts. Syntaxe et sémantique du langage Esterel. Exemples de programmes StateCharts et Esterel.

5- Méthodes de développement avec les langages synchrones : Positionnement dans un processus de développement, compatibilité avec des méthodes d'analyse telles que SA-RT et UML, séparation des composantes réactives et algorithmiques, principes d'architecture logicielle pour une bonne utilisation des langages synchrones, principes de mise en œuvre de la preuve de programme.

6- Étude d'un cas réel : un séquenceur de tâches.


COURS 3
Mercredi, 5 décembre – 14h00-17h30
Les Serveurs des Systèmes d'informations et des Sites Web
Technologie, architecture et exigences non-fonctionnelles

Animateur : René Chevance – Professeur associé au CNAM, Chargé de mission au CMSL, Consultant


Les choix en matière de serveurs pour les systèmes d’informations et pour les sites Web sont des questions récurrentes auxquelles les réponses qui sont apportées ne sont pas toujours satisfaisantes et, souvent, pas optimales. Ces choix portent sur l’architecture des serveurs et leur arrangement ainsi que sur les propriétés de " scalabilité " (capacité d’un système à s’adapter aux dimensions du problème qu’il a à traiter). En effet, la scalabilité représente la possibilité de suivre l’évolution de la demande au niveau des serveurs sans entraîner de rupture d’exploitation. La prise en compte d’exigences non-fonctionnelles, telles que les performances et la disponibilité, s’avère aussi délicate.

Objectifs
Comprendre les évolutions technologiques, tant du matériel que du logiciel, et les évolutions des besoins qui sous-tendent l’évolution des serveurs. Comprendre les différentes architectures de sites et leur rationnel. Appréhender les critères de choix. Comprendre les différentes options d’architecture, leur sacalabilité et leurs conditions d’emploi. Prendre en compte les exigences non-fonctionnelles.

Programme
Options d’architecture en matière de serveurs : couplage serré et couplage lâche.

Evolutions des technologies : matériel, logiciel, structure de l’industrie

Critères de choix.

Comparaison des différentes options d’architecture

Scalabilité

Quelques exemples types d’architecture (sites Web en particulier)

Architectures scalables

Approches des performances et de la disponibilité : Performances (caractérisation, modélisation, prévision de la charge) ; disponibilité : causes d'indisponibilité, solutions, évaluation et mesures de la disponibilité. Méthodes et outils.

Prospective

L’exposé s’appuiera en partie sur le livre " Serveurs multiprocesseurs, clusters et architectures parallèles " (Eyrolles 2000) de René Chevance.


Copyright (C) CNAM-CMSL 2001, Tous droits réservés.