Méthodes formelles pour la conception de systèmes répartis par Luigi Logrippo et tous ses collaborateurs et étudiants . . . École d`ingénierie et technologie de l`information UNIVERSITÉ D’OTTAWA
Mon intérêt de recherche Formalisation des concepts reliés à la conception des programmes répartis, surtout protocoles de communication Pour conduire à un véritable génie informatique dans ce domaine Car le génie justifie ses procédés sur des bases scientifiques (math, chimie...) Ces dernières ne sont pas souvent utilisées en pratique, cependant elles sont invoquées quand il est important de s’assurer que la conception est propre
Hypothèse La logique et l`algèbre abstraite sont pour le génie logiciel ce que le calcul différentiel et intégral sont pour le génie mécanique ou civil C`est à dire le génie informatique est en retard d’au moins 200 ans par rapport à ces autres domaines nous sommes encore à un stage où le produits informatiques sont construits selon les principes de l’expérience, sans bases scientifiques Fort probablement, les maths existantes ne sont pas suffisantes: le développement des bases mathématiques d’un nouveau domaine de génie a souvent demandé le développement de nouvelles méthodes de calcul, etc.
Conception rigoureuse ou vérification à posteriori Si la vérif est un pas à côté par rapport au processus de développement normal, elle ne sera pas beaucoup utilisée: seulement pour des systèmes critiques Il faut développer un processus linéaire de conception qui soit suivi naturellement par les ingénieurs du logiciel débutant à la conception et finissant avec l`exécutable comme aujourd`hui nous passons à travers la compilation, etc.
Premiers pas déjà faits Un compilateur est en partie un système de vérification très élémentaire: l’analyse grammaticale d’un programme, son analyse statique prouvent certaines propriétés élémentaires du programme avec des langages bien conçus, un certain nombre de propriétés importantes pour la réussite d`un programme peut être prouvé statiquement l’analyse dynamique (à l`exécution) est beaucoup plus complexe
Information sur le domaine d’application Les langages et compilateurs d'aujourd'hui sont conçus pour utilisation générale dans un grand éventail d’applications Pour avoir plus d’information concernant la validité d’un programme au moment de la compilation il faut donner plus d`information au système concernant le domaine d’application spécifique langages spécialisés, instructions spécialisées bases de données de connaissances concernant le domaine programmes de preuve automatique pour un domaine spécifique
Programme de recherches Développement de langages pour l’expression formelle des propriétés d’un système réparti (sémantique formelle) Spécification de systèmes réels en utilisant ces langages Recherche de méthodes qui pourraient être considérées naturelles par un professionnel
L'interaction de fonctionnalités téléphoniques complexes Domaine très intéressant et actuel la création de nouveau services téléphoniques sur demande de l ’usager sont-ils en conflit? comment résoudre les conflits?
Exemple d’interaction de fonctionnalités B est dans la liste OCS de A 3. A est connecté à B A B 2. C renvoie à B 1. A appelle C C Cette interaction peut être évitée si OCS contrôle le numéro de l’appel final, au lieu de contrôler le numéro composé (facile seul. si OCS est centralisé) C est en CFA à B
L’intéraction de fonctionnalités comme contradiction logique Un bon nombre d ’interactions de fonctionnalité peut être expliqué comme contradiction logique entre exigences Une contradiction existe entre les besoins de OCS et CFA si nous utilisons la même valeur pour un numéro dans la base de données OCS de A et le numéro de CFA pour B
Une méthode pour détecter les interactions statiquement Spécifier les exigences de chaque fonctionnalité en termes de programmation logique Voir s’il est possible de dériver une contradiction en unifiant les variables de toutes les façons possibles Ceci est faisable, car nous avons un nombre fini d’usagers
Déterminer si le scénario détecté peut effectivement se vérifier Le procédé mentionné ne peut que détecter le risque d’intéractions Il faut exécuter les fonctionnalités concernées pour voir si l’interaction est effectivement possible
LOTOS: un langage algébrique LOTOS est un langage basé sur l ’algèbre des processus de Milner (CCS) Rend possible des vérifications dynamique d’interactions Nous cherchons à exécuter le scénario dans la spec LOTOS
Use Case Maps: Une notation intuitive pour les premiers stages de conception (une notation de spécification exigences?)
Les UCMs se traduisent facilement en LOTOS Les UCM représentent un stage de conception très préliminaire Cependant ils sont exécutables à travers LOTOS! Donc nous pouvons déjà effectuer une simulation du comportement d’un système aux premiers stages de conception
Example de traduction Process User[ dial, U_A, A_U, ringBack, busyTone ]: (a:Agent, u:User):= dial !u ?dU:User; U_A !u !a !conReq !dU; ( A_U !a !u !conConf !ring; ringBack; exit [] (* - OR - *) A_U !a !u !conConf !busy; busyTone; ) endproc Process Agent[A_U, U_A, A_A, req]: (a:Agent, u:User):= U_A !u !a !conReq ?dU:User; req !dU ?dA; A_A !a !dA !conReq !dU; ( A_A !dA !a !conConf !ring; A_U !a !u !conConf !ring; exit [] (* - OR - *) A_A !dA !a !conConf !busy; A_U !a !u !conConf !busy; ) endproc
Nouvelles fonctionnalités basées sur l’internet L’internet ouvre les portes à toutes sortes de nouveaux types d’utilisation des réseaux et nouvelles fonctionnalités SIP, Session Initiation Protocol est un protocole qui permet la téléphonie à travers l ’internet CPL, Call Processing Language, est un langage pour la définition de fonctionnalités téléphoniques utilisant SIP Potentiel énorme, mais aussi risque énorme de dégâts et confusion...
Recherches reliées Résolution dynamique de conflits entre fonctionnalités Langages pour spécification de politiques d`usager Support pour les autres phases: implémentation, génération de code dérivation de données test Comment placer cette méthodologie dans le cadre de méthodologies de conception de logiciels tel que UML...?