• Aucun résultat trouvé

Conclusions et perspectives de recherche et d’enseignement

1. Perspectives de recherche

La ligne directrice de nos travaux reste l’approche formelle (basée sur des outils mathématiques) consis-tant à construire correctement les systèmes de façon modulaire, en parconsis-tant de leur modèles abstraits vers des modèles concrets associés et en effectuant les preuves de correction des systèmes ainsi développés par rapport aux propriétés voulues. Dans ce cadre, nous mettons spécifiquement l’accent sur le caractère multifacette des systèmes, et la mise au point de méthodes et techniques outillées pour leur analyse et déve-loppement.

Dans ce contexte nos perspectives de recherche à moyen terme sont axées sur

– l’analyse formelle multifacette de systèmes hétérogènes (intégrant des sous-systèmes ou composants logiciels issus de formalismes/modèles divers) et

– l’étude de modèles de développement de composants logiciels ouverts (au sens interopérabilité entre divers modèles de composants).

Ces perspectives, déclinées sous différents angles, constituent en partie les grandes lignes de notre projet de recherche pour les années à venir.

L’état de l’art révèle que les logiciels autonomes ou monolitiques sont de moins en moins courants. Le logiciel tend à être, aussi bien dans sa construction que dans son utilisation, un service (une fonctionnalité spécifique) ou une ressource dans un système global incluant d’autres services logiciels ou matériels de différentes natures.

Lorsqu’on rapproche les préoccupations de recherches fondamentales de celles des applications ac-tuelles, on note l’utilisation du logiciel comme un service, disponible partout, tout le temps et idéalement fiable. Il y a de nombreux exemples : systèmes embarqués (PDA, véhicules, automates de services,...), ser-vices multimédia, téléphonie/télévision numérique, accès aux données distribuées, ...

En dehors des aspects techniques liés à la programmation des applications, les aspects nécessitant des travaux de recherche en amont sont par exemple :

– la disponibilité de langages, d’analyseurs et compilateurs de spécifications/logiciels intégrant des propriétés de correction ;

– la fiabilité des entités logicielles utilisées pour la construction d’autres plus grandes ; – la garantie de bonne qualité des entités logicielles ;

– l’étude et le développement d’entités logicielles intégrables dans des systèmes ouverts ;

– l’interaction entre des entités logicielles ou matérielles diverses (correction du système global malgré l’hétérogénéité de ses sous-systèmes) ;

– la garantie de correction des interactions entre les entités ;

– le raisonnement sur un système global composé de différents sous-systèmes (ou ses composants) ; – la préservation de correction en cas d’intégration de nouvelles entités dans un contexte plus large ; – etc

La recherche en amont doit offrir les moyens pour garantir le bon fonctionnement d’un système (inté-grant du logiciel) dans des environnements de plus en plus ouverts et coopératifs du fait de l’utilisation de différents moyens de (télé)communication.

Parmi les pistes de recherche citées ci-dessus, nous nous focalisons sur :

– la modélisation formelle en vue de comprendre, d’analyser et d’expliquer le fonctionnement des sys-tèmes (à base d’entités logicielles) ;

Perspectives de recherche 131

– l’étude de concepts, mécanismes et moyens langagiers adaptés à la spécification de systèmes com-plexes (i.e. ceux qui ne se réduisent pas à un problème connu, mais qui nécessitent une abstraction non triviale),

– l’étude de modèles sémantiques (structures mathématiques permettant d’interpréter les objets d’étude, par opposition aux modèles de description qui ne véhiculent pas d’interprétations), de leur interac-tions et de leur utilisation conjointe dans des développements

Ces investigations font déjà en partie les objets d’étude et d’expérimentation dans le cadre de nos tra-vaux actuels (ORYX/Atacora) où nous nous basons sur des méthodes et systèmes existants tels que B, PVS, réseaux de Petri, SPIN, Lotos, etc.

Dans cette même otique, nous avons entamé des travaux sur le développement de composants logiciels corrects. Ici les composants logiciels sont pris au sens large. Il s’agit de l’étude et le développement d’enti-tés logicielles, intégrables dans des systèmes ouverts ; par exemple partir de composants logiciels abstraits génériques, prouvés corrects et les adapter par raffinements successifs à différents environnements d’exécu-tion. Pour ce faire, nous faisons des expérimentations sur un modèle abstrait de composants nommé Kmelia et nous avons quelques résultats préliminaires [AAA05, AAA06b, AAA06a, AAA07b, AAA07a].

Il s’agit dans le cadre de notre projet de recherches de poursuivre les études visant à trouver des mé-thodes pratiques outillées pour la construction correcte de (classes de) systèmes. La réutilisation de résultats eprouvés tels que les environnements associés à la méthode B (AtelierB, Projet Rodin) devrait apporter une aide considérable.

Une autre voie importante dans notre projet de recherche est le raisonnement et la maintenance en contexte hétérogène.

En effet pour faire face à l’analyse ou la maintenance d’un système complexe, une solution est l’isolation de proche en proche des modules à analyser. Par exemple, dans une interconnexion de modules formant un système, on peut étudier progressivement le système en supposant certains modules corrects puis en étudiant le système global sous ces hypothèses ; on arrive ainsi de proche en proche à identifier les impacts des différents sous-systèmes sur le système global.

De la même manière, l’analyse de propriétés globales peut se faire avec des hypothèses de correction sur les différents sous-systèmes, jusqu’à l’établissement des propriétés globales puis la levée des hypothèses faites sur les sous-systèmes.

Cette façon de faire n’est pas nouvelle, en effet c’est une démarche de preuve courante. Mais il s’agit de la mettre en œuvre avec des méthodes d’ingénierie outillées sur des systèmes hétérogènes.

La piste de réflexion principale est l’extension des techniques de la famille Rely-Guaranty (Assume-Commitment).

Ces travaux de recherches ont une portée très générale dans le cadre du génie logiciel et ne peuvent aboutir que si des normes, des interfaces et des protocoles d’interaction normalisés entre systèmes logi-ciels/matériels sont mis au point.

Nous avons fait des études de faisabilité en nous appuyant sur des formalismes adhoc, par exemple l’usage des ATS (voir Chapitre 10) pour l’interaction entre modèles sémantiques. La généralisation de cette

solution avec l’usage de la Common Logic (International Standard for Common Logic1) par exemple est

une piste en exploration. L’idée est de se servir en plus des systèmes de transition abstraits, de la CL (ou

autre initiative semblable de standard) comme un langage pivot pour la description de données, l’expression de propriétés de relations entre entités en vue des raisonnements.

Des initiatives similaires existent par exemple dans le domaine des algèbres de processus et celui des systèmes dynamiques et hybrides. Par exemple, les formats de fichiers pour représenter des systèmes de transition ont été proposés :

– le format FC22[MdS93, BRRdS96] développé à l’INRIA pour servir d’interface entre des outils de

vérification ;

– le compact file format for labelled transition systems [vL01] ; c’est un format d’encodage très compact de systèmes de transitions ;

– le HSIF (Interchange Format for Hybrid Systems) [PCPSV06] ; c’est un format d’échange entre des outils de conception et d’analyse de systèmes hybrides. Il est basé sur des systèmes de transitions. A partir de ces généralisations, il est tout à fait envisageable de mettre en œuvre des interfaces for-melles standard entre des outils divers basés sur des concepts ou des modèles sémantiques variés. Chaque outil ou environnement doit prévoir l’interconnexion avec d’autres outils, tout en préservant la sémantique, en s’adaptant simplement aux interfaces standard. De tels outils/environnements s’adaptant aux interfaces standard sont des outils/environnements ouverts.

La construction d’environnements multi-outils est ainsi à portée de main. Dans de tels environnements on peut introduire et analyser diverses spécifications sous différentes facettes mais en se référant à des modèles sémantiques standardisés. On a là un cadre fondamental pour aider au raisonnement de systèmes intégrant plusieurs modèles. Sur le plan pratique, il y a aujourdhui un engouement pour l’ingénierie dirigée par des modèles ; ce thème n’est pas nouveau (les model-based approaches comme VDM, Z, CSP, RdP, etc ont fait leur preuve), et il ne peut être sérieusement traité que par des approches rigoureuses formelles. Un environnement ouvert tel que nous le proposons est une solution pour les expérimentations en ingénierie de modèles.

Un des intérêts de cette interconnexion facilitée, est la complémentarité de différents outils à différents niveaux d’abstraction pour garantir la correction de systèmes informatiques de différentes natures ; ce qui démeure l’un des défis majeurs en Informatique.

Pratiquement, la stratégie que nous explorons est celle du Plug and Check (Charger et analyser) : cela veut dire qu’on doit pouvoir charger une spécification quelconque et y déclencher différentes analyses qui sont identifiées systématiquement en fonction de la spécification chargée ; ensuite d’autres analyses peuvent être entreprises via des conversions/traductions.

Nos projets de recherche sont en phase avec des sujets qui mobilisent la communauté internationnale, en terme de défis majeurs (Grand Challenges[fCR03]). La problématique de la correction des systèmes apparaît de façon récurrente dans les programmes de l’Agence Nationale de la Recherche (ACI, RNTL, etc), dans les programmes européens (PCRD) et est aussi au cœur des Grand Challenges internationaux3(T.

HOARE, R. MILNER, J. WOODCOCK, J. CROWCROFT, M. KWIATKOWSKA) posés à la communauté pour

les 10-15 ans à venir4. Le problème central à résoudre à long terme est celui de disposer des outils scienti-fiques pouvant justifier la sûreté des systèmes informatiques (fonctionnalité, disponibilité, sécurité, fiabilité).

2www-sop.inria.fr/oasis/Vercors/doc/Fc2Parameterized/html/

3www.nesc.ac.uk/esi/events/Grand Challenges/proposals/

4Voici trois exemples de ces défis en guise d’illustration et de repère : The Verifying Compiler (T. HOARE, ACM, 2003), The

Perspectives de recherche 133

Enfin, nous aimerons signaler ici, notre intention vivace depuis quelques années de développer des Cahiers du logiciel comme un vecteur ou un canal d’échange pour contribuer à notre manière au défi que représente l’édification de la construction rigoureuse du logiciel dans sa diversité comme pratique courante du développement logiciel.

Ces cahiers vont, nous l’espérons, servir de vecteur d’idées sur le développement formel alliant le savoir-faire et le savoir-faire-savoir rapprochant la communauté académique et les développeurs. En effet, à la différence des revues spécialisées et des actes de conférences spécialisées qui sont des outils académiques, nous voyons les cahiers comme un outil de travail servant de référence ou de lien de travail entre académiques et praticiens du terrain. La proposition d’études de cas d’analyse formelle ou de développement formel sur des aspects variés du logiciel, avec des techniques variées est une des toutes premières pistes qui feront les premières pages des Cahiers.