I- CONTEXTE DE TRAVAIL





I.1. Présentation de l'équipe d'accueil et de ses activités

L'équipe G.R.I.M.M. (Groupe de Recherche en Informatique et Mathématiques du Mirail) est localisée au Département de Mathématiques-Informatique de l'Université du Mirail.
Mr Jean-Marc COUVEIGNES dirige cette unité de recherche qui regroupe enseignants et chercheurs.
Les deux thèmes principaux de recherche sont : Organigramme + liste chercheurs


I.2 Présentation du contexte de travail

Avec le développement et l'utilisation de plus en plus importante d'outils de construction de systèmes distribués (tels que ceux basés sur le standard C.O.R.B.A.), les entreprises sont confrontées au problème de la "conception" de systèmes informatiques distribués.
Ces systèmes sont caractérisés par une distribution dynamique de l'activité et des ressources logicielles sur des sites interconnectés.
Une des principales difficultés est l'appréhension des problèmes liés à l'espace et au temps qui contribuent à une complexification du processus de conception des systèmes informatiques. Il devient ainsi nécessaire de traiter de nouvelles difficultés liées : Ainsi, l'équipe de recherche s'est intéressée de près à la phase de compréhension du problème, en amont du processus de conception.
Dans le contexte d'un système distribué, une représentation spatiale (représentation des différents sites, des interconnexions, de la répartition des ressources, ...) et temporelle (exécutions parallèles, exécution distribuée, évolution, ...) d'un système distribué constitue un support important dans le processus de compréhension de la situation .
C'est dans cette perspective que l'équipe s'est intéressée : Parallèlement à cette réflexion de fond, l'équipe mène une activité d'expérimentation, basée sur le standard C.O.R.B.A. avec l'outil O.R.B.I.X. Web dédié au langage Java.
L'objectif est de construire un noyau d'expérimentation. Celui-ci sera composé d'un evironnement de conception d'applications distribuées intégrant une interface homme-machine qui permettra une bonne appréhension de l'espace et du temps.
A partir de ce noyau, il sera possible d'envisager des collaborations industrielles (avec la société Delta Partners notamment).


I.3 La programmation orientée objet distribuée

Dernièrement, les systèmes informatiques ont évolué en s'interconnectant (Internet, Intranet, ...).
Ainsi les architectures matérielles et logicielles ont du être modifiées.
Deux approches ont vu le jour : De même, des nouveaux mécanismes nécessaires à la distribution ont été mis en place : Les différentes approches de programmation qui existaient jusqu'alors étaient : Or il s'est avéré que la Programmation Orientéé Objet de par sa modularité, était le langage de prédilection des concepteurs d'applications distribuées.
L'apport de l'objet à la distribution vous est expliqué dans ce document.

I.3.1 La notion d'objet

Un objet est une structure qui associe les données aux fonctions (appelées méthodes) qui les exploitent.
Cette structure est composée : La séparation partie publique / partie privée d'un objet permet aux clients de ne pas se soucier du code d'implantation de l'objet.
D'un autre côté, cela laisse la possibilité aux programmeurs de modifier la partie interne de l'objet sans incommoder les utilisateurs.
Les objets de même nature sont crées sur la base d'un modèle commun : la classe de l'objet.
Une relation de hiérarchie peut être établie entre les classes pour factoriser leurs caractéristiques communes.
On parle alors : Illustrons l'héritage par un exemple concret :
Tous les oiseaux (classe mère : Oiseau) volent (methode voler()) et sont ovipares.
Un canard est un oiseau (la classe Canard hérite de Oiseau) .
Le canard vole (selon la méthode voler() définie dans le modèle) et il nage (méthode supplémentaire spécifique au Canard).
Soit maintenant un pingouin (classe Pingouin).
Un pingouin est un oiseau (Pingouin hérite de Oiseau) ovipare mais qui ne vole pas comme un oiseau.
on redéfinit alors la méthode voler() pour le Pingouin.
On parle alors de polymorphisme.

Tous les mécanismes d'encapsulation, d'héritage et de polymorphisme font de la P.O.O. une approche modulable et extensible.
L'approche orientée objet se prête donc bien à la construction d'applications complexes notamment dans un contexte distibué.

I.3.2 JAVA

Le langage Java est un langage objet à part entière.
Ce langage objet est basé sur C++ en ayant exclu la plupart de ses défauts.
Outre les aspects de programmation, son principal avantage est d'être 100% portable :
source compilée une fois, exécutable partout.
Cela vient du fait que le langage Java est interprété par une machine virtuelle définie selon une norme bien précise.
Une machine virtuelle n'est ni plus ni moins qu'un interpréteur qui execute le byte-code compilé java sur un systeme d'exploitation et donc pour un ordinateur.
Le langage Java a été élaboré par une entreprise commerciale SUN mais dans un contexte trés ouvert . Ainsi on dispose d'une riche A.P.I. et de nombreuses documentations.

Ce langage étant relativement récent, toutes les technologies actuelles ont y été implantées : support internet, web (java.net), multimédia (java.awt, java.3d) , base de données (jdbc) et commerce électronique (java.wallet) ...

Depuis la distribution java 1.2 le jdk (compilateur et environnement de programmation) inclu pleinement C.O.R.B.A. avec son O.R.B. et compilateur d'IDL.