Proposition d'enseignement d'option en Master d'Informatique M1

Titre : "Middleware"  adaptable

Responsable : Sacha Krakowiak <Sacha.Krakowiak@inrialpes.fr>, projet Sardes, IMAG-LSR et INRIA

Membres de l'équipe pédagogique :

2 équipes du Laboratoire IMAG-LSR sont concernées :


Objectifs du cours :

Le middleware (intergiciel) est la couche logicielle située entre les couches basses (systèmes d'exploitation, protocoles de communication) et les applications dans un système informatique réparti. Son but est de faciliter le développement de ces applications, en masquant l'hétérogénéité des systèmes sous-jacents et les détails de leurs mécanismes, et en fournissant des interfaces normalisées de haut niveau.
Le middleware est un domaine en plein développement et plusieurs systèmes industriels sont disponibles ou en cours d'élaboration : Corba, EJB, CCM, .Net. Parallèlement, la recherche vise à dégager les concepts de base et à améliorer les performances et l'utilisabilité des logiciels.

Parmi les défis les plus importants figure l'adaptation des applications et du  middleware lui-même. En effet, de nombreuses applications fonctionnent dans des environnements qui évoluent dynamiquement et doivent donc pouvoir répondre à cette évolution. Par ailleurs, des impératifs de réutilisation et de modularité amènent à réaliser les applications par assemblage de composants pouvant être remplacés et reconfigurés.

L'objectif de ce cours est de présenter les concepts de base et les techniques applicables aux aspects avancés du  middleware pour répondre notamment aux défis de l'adaptabilité et du passage à l'échelle. Cet enseignement prépare à la fois à mener des recherches dans ce domaine et à maîtriser les aspects techniques pour une mise en oeuvre efficace dans un cadre professionnel.

L'enseignement s'appuye largement sur des systèmes avancés issus de la recherche et de l'industrie et disponibles en logiciel libre, et notamment sur ceux distribués par le consortium ObjectWeb.

N.B. Le thème de cet enseignement est prolongé en Master M2 tant dans l'orientation "Professionnelle" que dans l'orientation "Recherche". Cet enseignement d'option n'est pas un prérequis pour suivre ces enseignements de M2, mais les unités correspondantes pourront être proposées, si besoin, à des étudiants de M2.

Découpage des unités d'enseignement :

Unité d'enseignement 1 : Composants logiciels

Objectifs et contenu
Cette unité introduit les concepts et techniques de base des systèmes répartis à base de composants. Elle présente les modèles fondamentaux et leurs bases, les principaux patrons (patterns) et canevas (frameworks) pertinents, et enfin quelques techniques de réalisation des infrastructures à composants. Elle s'appuie largement sur des études de cas de systèmes industriels et de prototypes de recherche.

Cours : 9 h
TD : 21 h (répartition indicative)
Plan :
Notion de composant logiciel : des objets aux composants
Fondements des modèles : types, conformité, composition
Patrons et canevas logiciels des systèmes à composants : intercepteur, proxy, conteneur, etc.
Technologie des systèmes à base de conteneurs
Administration et déploiement de systèmes à composants
Études de cas
- un modèle avancé de composants avec partage : Fractal
- réalisations libres du modèle EJB (JOnAS, JBoss)
- réalisation libre  du modèle CCM : OpenCCM
- réalisation libre du modèle OSGi : Oscar
- autres systèmes (Avalon, ...)

Références bibliographiques :
Völter, M., Schmid, A., and Wolff, E. (2002). Server Component Patterns. John Wiley & Sons. 462 pp.
Szyperski, C. (2002). Component Software - Beyond Object-Oriented Programming. Addison-Wesley.
     608 pp
Bruneton, É., Coupaye, T., and Stefani, J.-B. (2002a). The Fractal composition framework. ObjectWeb
     Consortium. http://www.objectweb.org/fractal.
Littérature scientifique courante (conférences Middleware, etc.)

Prérequis
(ou co-requis) Modules Réseaux et applications réparties, Programmation par objets de M1


Unité d'enseignement 2 : Méthodes et outils pour l'adaptation

Objectifs et contenu
Cette unité introduit les concepts et techniques de base de l'adaptation des systèmes logiciels, et plus spécialement du middleware. Il présente les méthodes de base (réflexivité et méta-objets, aspects) et les principaux patrons et canevas de mise en oeuvre (interception, réification, etc), et enfin l'application de ces méthodes aux cas les plus courants d'adaptation : QoS et performances, mobilité, tolérance aux fautes. Cette étude s'appuie largement sur des études de cas de prototypes de recherche.

Cours : 9 h
TD : 21 h (répartition indicative)
Plan :
Motivations et problèmes de l'adaptation
Méthodes pour la construction de logiciel adaptable
- introduction à la programmation par aspects
- introduction  aux protocoles à méta-objets
Réalisation d'intergiciel adaptable
- techniques d'interposition
- conteneurs "ouverts"
- techniques mixtes
- techniques d'optimisation (injection de code, etc.)
Configuration et reconfiguration dynamique
Études de cas
- Adaptation pour l'amélioration des performances et la qualité de service : exemples issus de l'expérience du laboratoire (multimédia, plate-forme EJB)
- Adaptation pour la mobilité et l'informatique ubiquitaire
- Adaptation pour la tolérance aux fautes
- Plates-formes adaptables : JAC, OpenOrb, Flexinet, JavaPod

Références bibliographiques :
Kiczales, G. (1996). Aspect-Oriented Programming. ACM Computing Surveys, 28(4):154.
Kiczales, G., des Rivieres, J., and Bobrow, D. G. (1991). The Art of the Metaobject Protocol. MIT
     Press.
Rapports du projet RNTL Arcad
Littérature scientifique courante (conférences et workshops sur les systèmes adaptables, etc.)

Prérequis
(ou co-requis) Modules Réseaux et applications réparties, Programmation par objets de M1