• Aucun résultat trouvé

Nous avons vu que les premiers contrats logiciels, tels ceux de Meyer, étaient issus de la logique de Hoare [45]. Or celle-ci est une instance du paradigme de spécification hypothèse-garantie. Nous nous intéresserons dans cette partie aux liens de ce dernier avec la logique de Hoare, puis aux différents types de spécifications qu’il permet de décrire. Enfin nous terminerons en considérant comment la notion contractuelle d’ac-cord peut être exprimée à l’aide d’hypothèses et de garanties.

2.5.1 Paradigme Assume-guarantee et logique de Hoare

Une définition d’assez haut niveau du paradigme assume-guarantee est donnée dans [99] :

"The assumption characterizes the essential properties of the environ-ment in which the specified program, from now on referred to as the agent, is supposed to run, while the commitment is a requirement which must be fulfilled by the agent whenever it is executed in an environment which satisfies the assumption"

Il est aussi nommé, d’après [110], paradigme "assumption-commitment" ou encore "rely-guarantee". La première dénomination étant a priori plus utilisée dans le con-texte des agents [99], la seconde dans le concon-texte de la programmation concurrente [50]. Par ailleurs, le paradigme assume-guarantee a été utilisé dans de nombreuses ap-proches de spécifications et preuves compositionnelles citées dans [85] et [110]. Une definition de la logique de Hoare, du point de vue du paradigme assume-guarantee est la suivante [45] (le "triplet de Hoare") :

"P {Q} R : This may be interpreted : ’If the assertion P is true before initi-ation of a program Q, then the assertion R will be true on its completion’".

Ces deux définitions montrent bien le rapprochement qui peut être effectué entre les deux modèles : prendre la précondition pour l’hypothèse et la post condition pour la

garantie. Le positionnement historique du modèle de Hoare et du paradigme assumption-guarantee est le suivant [77] :

• 1969 : Hoare propose un système formel d’axiomes et de règles d’inférences pour la vérification des programmes séquentiels impératifs

• 1976 : Susan Owicki et David Gries étendent le système de Hoare pour la vérifi-cation de programmes parallèles avec des variables partagées :

Le programme est décrit par une "proof outline" [77], c’est à dire pour tout ai (i entier), action atomique, et pi assertion : "{p1} a1 {p2} a2 {p3}..." : chaque assertion pi atteinte par le programme est vraie pour son état courant, • 1981 : Cliff Jones introduit le concept de la méthode rely-guarantee, une version

compositionnelle du système de Owicki-Gries. Dans ce dernier, la définition des hypothèses et garanties est la suivante ([77], [50]) :

" Rely : any environment transition in the computation satisfies the rely con-dition",

" Guarantee : any component transition satisfies the guarantee condition", D’un point de vue de classification, la logique de Hoare est le plus souvent définie comme un cas particulier du paradigme assume-guarantee. Dans [99] elle est classée dans les représentants de ce paradigme dont les parties hypothèses et garanties sont ex-plicites et distinctes, par opposition aux représentants du cas contraire. Elle se retrouve rangée au côté de travaux tels que la méthode rely/guarantee de Jones, dont elle est rapprochée dans [50], la précondition étant le "rely" et la post condition le "guarantee". De la même manière, Lamport décrit dans [2] le triplet de Hoare comme un cas partic-ulier, pour la correction partielle des programmes, de l’approche de spécifications par hypothèse/garantie qu’il considère dans le cadre de son principe de composition de celles-ci.

Du point de vue des évolutions, selon [107] les règles assumption-commitment furent au commencement étudiées comme des extensions de la logique de Hoare. Ce cas de figure, dans lequel on considère l’extension des règles de Hoare, est illustré en parti-culier par les travaux sur la "Generalized Hoare Logic" [61]. Dans ce dernier cas, les formules sont de la forme : " {I} π {I} ", ou "I" est un prédicat et "π" un fragment de pro-gramme, et signifient que l’exécution de toute action atomique dans π débutant dans un état où I est vrai, laisse I vrai. Une autre étude [98] présente explicitement la logique de Hoare comme un cas particulier du système de spécification qu’elle définit et qui est basé sur le paradigme rely/guarantee. Dans ce cas, les auteurs font remarquer qu’ils élargissent le champ d’application de la méthode puisque celle de Hoare ne permet la preuve que des propriétés de sûreté ("sous certaines conditions quelque chose ne va jamais arriver") alors que la leur autorise la démonstration de propriétés de vivacité ("sous certaines conditions quelque chose finira par arriver"). Toutefois dans [107], les auteurs font remarquer que, dans le cas de travaux sur le paradigme assume-guarantee dont les spécifications reposent sur des prédicats temporels (Abadi & Lamport, Pnueli, Barringer & Kuiper), alors celui de l’hypothèse est restreint à une propriété de sureté.

2.5.2 Portées architecturales des différents types de spécifications

Les travaux relevant du paradigme assume-guarantee se divisent en deux grandes catégorie, suivant qu’ils séparent ou non l’objet spécifié (composant ou programme) de son environnement. Dans la catégorie séparant l’entité spécifiée de son environ-nement, on trouve les travaux sur la composition architecturale (citées dans [85], [44], [107], [2]) et la concurrence ([50], [110], [98]), alors que ceux plus proches de la logique de Hoare ([77], [45], [61]) ne font pas la distinction. Ainsi les travaux sur la composition architecturale considèrent que :

• l’hypothèse porte sur l’environnement de l’entité spécifiée, • la garantie s’applique à l’entité spécifiée elle-même,

Il en va de même pour les études sur la concurrence, dont certaines néanmoins font porter l’hypothèse et la garantie sur des variables globales de l’environnement de l’en-tité spécifiée. Par contre dans le cas de la logique de Hoare [45], de sa généralisation [61], ou des travaux de Owicki Gries [77], préconditions et postconditions portent sur l’état du programme sans le distinguer de son environnement.

2.5.3 Positionnement par rapport à la notion de compatibilité

Les différentes approches d’assume-guarantee considérées fournissent des formalismes pour spécifier des entités sur la base de propriétés dont elles dépendent et d’autres qu’elles garantissent. Or dans le cadre de notre approche, comme expliqué dans l’in-troduction, nous nous intéressons non seulement à la conformité des participants du contrat à leurs spécifications, mais aussi à la compatibilité de ces dernières. En par-ticulier il est important que les hypothèses de bon fonctionnement des entités soient compatibles avec les garanties que les autres fournissent. En effet les garanties de ces dernières décrivent l’environnement sur lequel portent les hypothèses des premières. Nous tentons donc de distinguer parmi les travaux existants ceux chez qui la notion de compatibilité telle qu’elle nous intéresse serait présente.

Ainsi dans les travaux de Misra et Chandy [75] sur la composition de processus spéci-fiés à l’aide d’hypothèses et de garanties, un théorème de composition fait apparaître cette notion de compatibilité sans pour autant en faire une propriété explicite. Dans l’expression de la figure 2.6, H est un processus issu de la composition de processus hi, dont chacun a pour hypothèse riet pour garantie si.

(S and R0) ⇒ Ret S ⇒ S0 : est une expression de compatibilité dans le cadre de laque-lle la conjonction des garanties de chacunes des sous parties de H (hi) et de l’hypothèse du composite H doit impliquer la conjonction des hypothèses des sous parties hi. Mais aussi, dans lequel la conjonction des garanties des sous parties de H doit impliquer la garantie de H.

D’autres règles de composition d’entités spécifiées à l’aide d’hypothèses et garanties font encore apparaître la notion de compatibilité toujours non réifiée. Ainsi la règle de composition de la figure 2.7 apparaît dans [107], dans le cas particulier où la dépen-dance entre les composants n’est pas cyclique.

FIGURE 2.6 – Théorème de Misra Chandy

FIGURE 2.7 – Règle de Xu Qiwen et Mohalik Swarup

Les composants sont notés Pi, les Ai sont leurs hypothèses et les Ci leurs obligations. A est l’hypothèse de la composition. L’interprétation de cette règle conduit à une ex-pression de l’accord suivante : A ∧ Ci ∧ ...∧ Ci−1 ⇒ Ai qui serait à comparer avec la compatibilité extraite des travaux de Misra et Chandi vus précédemment [75].

L’interprétation du théorème de composition de Lamport (détaillé dans l’annexe A.2.6) amène à une expression de compatibilité moins simple que les précédents :

FIGURE 2.8 – Théorème de Abadi Lamport La figure 2.8 exprime que :

• pour deux composants C1 et C2,

• E1 et E2 les hypothèses respectives de ces composants sur leur environnement, E l’hypothèse de leur composition sur son environnement,

• M1 et M2les garanties respectives offertes par ces composants,

• chaque composant a pour spécification Ei−⊲ Mi : tant que son environnement satisfait à l’hypothèse Ei alors le composant satisfait à son obligation Mi,

si ces composants sont compatibles (expression de la prémisse de la règle d’inférence) alors on connait la spécification de leur composition (E−⊲ M1

T

M2) et celle-ci est véri-fiée pourvu que les composants satisfassent aux leurs. L’expression de l’accord dans le cadre de ce théorème est la prémisse de la règle d’inférence : E ∩ M1∩ M2 ⊆ E1∩ E2:

les garanties des composants et l’hypothèse sur l’environnement doivent impliquer les hypothèses des composants. Cela revient à exprimer que les besoins des composants doivent être satisfaits par ce qu’ils fournissent et ce théorème est généralisable à N composants.

2.5.4 Conclusion

Les différentes approches hypothèse-garantie font porter leurs contraintes sur l’état des programmes et de leur environnement. Toutefois il est intéressant de constater que pour qu’une donnée soit échangée entre un programme et son environnement, celle-ci doit dabord être produite et exposée par l’un ou l’autre. Cette donnée reflète donc l’é-tat à un certain moment du programme ou de son environnement. Ainsi les approches hypothèse-garantie s’appliquent aussi aux échanges entre entités logicielles. Elles sont même un moyen particulièrement simple et minimal de décrire les interactions entre un programme et son environnement. Un autre détail remarquable concernant les ap-proches que nous avons citées est que l’expression de la compatibilité des hypothèses et des garanties d’un système d’entité logicielles, exprimée dans la notion d’accord, ne fait pas intervenir explicitement leur architecture ou organisation. Or cette dernière joue bien sur un rôle central dans les dépendances qui peuvent apparaître entre les entités du système.