• Aucun résultat trouvé

Vérification de contrats logiciels à l'aide de transformations de modèles Application à Kmelia

N/A
N/A
Protected

Academic year: 2021

Partager "Vérification de contrats logiciels à l'aide de transformations de modèles Application à Kmelia"

Copied!
6
0
0

Texte intégral

(1)

HAL Id: hal-01147192

https://hal.archives-ouvertes.fr/hal-01147192

Submitted on 30 Apr 2015

HAL is a multi-disciplinary open access

archive for the deposit and dissemination of

sci-entific research documents, whether they are

pub-lished or not. The documents may come from

teaching and research institutions in France or

abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est

destinée au dépôt et à la diffusion de documents

scientifiques de niveau recherche, publiés ou non,

émanant des établissements d’enseignement et de

recherche français ou étrangers, des laboratoires

publics ou privés.

Vérification de contrats logiciels à l’aide de

transformations de modèles Application à Kmelia

Pascal Andre, Gilles Ardourel, Mohamed Messabihi

To cite this version:

Pascal Andre, Gilles Ardourel, Mohamed Messabihi. Vérification de contrats logiciels à l’aide de

transformations de modèles Application à Kmelia. 7ièmes Journées sur l’Ingénierie Dirigée par les

Modèles, Ileana Ober, Jun 2011, Toulouse, France. �hal-01147192�

(2)

Vérification de contrats logiciels à l’aide de

transformations de modèles

Application à

Kmelia

Pascal André

Gilles Ardourel

Mohamed Messabihi

LINA UMR CNRS 6241 Université de Nantes

{Prénom.Nom}@univ-nantes.fr

RÉSUMÉ.Un modèle de système logiciel couvre des aspects orthogonaux (structure, fonctions, dynamique). Vérifier formellement des propriétés de ce modèle implique donc d’utiliser plu-sieurs outils et techniques. Ces outils sont basés sur des modèles spécifiques, écrits dans des langages adaptés aux aspects traités. La transformation de modèle apparaît donc comme une solution naturelle pour la vérification de systèmes. Nous illustrons dans cet article l’utilisation conjointe de modèles spécifiques et des transformations associées pour vérifier les propriétés relatives aux contrats. Les contrats sont déclinés en différents niveaux sur les éléments de modé-lisation. La mise en œuvre est réalisée avec des plugins Eclipse dans COSTO, une plate-forme dédiée au modèle à composantsKmelia.

ABSTRACT.A software system model covers orthogonal aspects (structure, functions and dynam-ics). Formally verifying properties of such a model requires the use of various techniques and tools. These tools are based on specific models, written in languages that are specific to the target aspects. Model transformation appears to be the adequate technique to tackle the chal-lenge. In this paper we illustrate a way to use specific models and the related transformations to check a set of various properties covered by contracts. Different levels of contracts are spread over the model elements. This work is implemented using Eclipse plugins in COSTO, a platform dedicated to theKmelia component model.

MOTS-CLÉS :Composant logiciel, services, contrats, langages spécifiques, vérification de pro-priétés, transformations.

KEYWORDS:Software component, services, contracts, specific languages, property verification, transformations.

(3)

1. Introduction

Partant d’un modèle abstrait il est important d’en déterminer les propriétés avant de le raffiner par transformations successives vers un modèle opérationnel ou le code final. Cet aspect devient crucial lorsque le système doit respecter des contraintes de sûreté de fonctionnement. Nous avions mis en place les bases d’un processus de véri-fication de cohérence de diagrammes UML dans (André et al., 2005). Nous poursui-vons ce travail sur des modèles à composants et services sûrs (Meyer, 2003) en visant la vérification des propriétés du système modélisé (non redondance de données, at-teignabilité, sûreté, vivacité, etc). De plus, nous nous inscrivons dans la lignée de la conception par contrat.

Les modèles couvrent souvent des aspects transversaux (structure, fonctions, dy-namique). De fait, il n’existe pas d’outils universels permettant de fonder une vérifica-tion unifiée des propriétés. L’idée est alors de se tourner vers plusieurs outils adaptés aux aspects identifiés (theorem proving ou model checking), chacun assurant une par-tie de la vérification. Les outils ayant en général un modèle et un langage spécifique, on se trouve ici dans une problématique de transformations de modèles (extraction, fusion, injection...). Nous illustrons dans cet article l’utilisation conjointe de modèles spécifiques et les transformations associées pour vérifier les propriétés relatives aux contrats. Les contrats sont déclinés sur les différents éléments de modélisation. La mise en œuvre est réalisée avec des plugins Eclipse dans COSTO (COmponent Study Toolbox), une plate-forme dédiée au modèle à composants Kmelia (Messabihi et al., 2010). Nous exposons dans la section 2 l’extension d’un modèle abstrait à compo-sants par un modèle de contrats et de vérifications. La section 3 présente les niveaux de contrats et leurs éléments. La section 4 décrit une mise en œuvre. La section 5 résume la contribution et trace des perspectives.

2. Modèle à composants et services

Dans cette section, nous survolons les concepts principaux d’un modèle abstrait à composants (CM) auxquels sont rattachés les contrats (CCM) et les vérifications

(VCCM). La partie CM de la figure 1 est inspirée du métamodèle Econet1. Les classes

communes telle que ModelElement ne figurent pas ici. Les composants sont caractéri-sés par un état et des services (ou opérations) définis dans leur type. Ils sont assemblés sur leur points d’accès (EndPoint) qui sont des ports, des interfaces ou des services selon le modèle considéré. Le détail d’un service varie aussi de la signature seule jus-qu’au comportement détaillé des communications en passant par la composition de services. Un assemblage (ou architecture) relie les composants, éventuellement via d’autres assemblages, sur une relation de clientèle (contrat client/serveur classique). Un composite les encapsule dans une relation d’inclusion (contrat parent/enfant). Le comportement et les communications sont décrits, selon le langage, par des structures de contrôle, des expressions régulières, des automates, etc.

1.http://www.lina.sciences.univ-nantes.fr/coloss/projects/econet/

(4)

Dans le modèle Kmelia, qui sert à la mise en œuvre de ce travail, les liaisons se font au niveau des services, définis par une signature avec types, des assertions (pré/post-conditions) et un système de transition. La partie contrat CCM, très simplifiée ici, est exploitée en section 3, la partie vérification VCCM en section 4.

ContractElement 0..* 0..* 0..* 0..* 0..* 0..* 0..* VerificationResult Verification Technique 1 0..* 1 Contract 0..* 1..* 0..* 0..* 0..* 1 0..* 0..* CM CCM VCCM {xor} Service Component Attribute Interface Operation 0..* 0..* owner 0..* services 0..* ComponentType 1 type 1 1 0..* 1 0..* 0..* 1 services 0..* 1 Architecture ArchitecturalElement Composite 0..* components 0..* ArchitectureType 1 type 1 1..* contains 1..* 0..* 1 owner 0..* 1 EndPoint 0..* 0..1 targetI 0..1 0..* 0..1 0..* targetO 0..1 Binding 1 2 1 2 0..* 1 delegationBindings 0..* 1 0..* assemblyBindings 1 0..* 1 Classifier 0..* 1 0..* 1 0..*

Figure 1. Métamodèle simplifié d’un modèle à composants, contrats et vérifications 3. Contrats logiciels en couche sur les éléments de modélisation

La notion de contrat est usuelle pour établir une relation de service entre classifiers (e.g. classes, composants), perçus comme des boîtes noires encapsulant une implan-tation. Elle se confond parfois avec les assertions de la conception par contrats, mais ces dernières ne couvrent que les exigences fonctionnelles. La définition des contrats va au-delà lorsqu’elle prend en compte les correspondances de structure, de compor-tement, les contraintes de communication et de synchronisation, la composition ou la qualité de services (Beugnard et al., 1999, Messabihi et al., 2010). Le tableau ci-après résume le croisement des éléments de modélisation et des niveaux de contrat retenus, structurés en couches d’exigence croissante.

Éléments de modélisation

Contrats Service Composant Assemblage Composite Structurel correction du

ty-page

cohérence de l’interface

compatibilité de signatures et de structure, disponibilité de services

idem assemblage + observabilité Fonctionnel correction

fonc-tionnelle

préservation de l’invariant

compatibilité d’assertions conformité d’asser-tions

Dynamique cohérence com-portementale

cohérence du protocole

compatibilité comportementale conformité compor-tementale

Le contrat de service regroupe la correction de signature, la correction

(5)

les actions du service et la cohérence comportementale (pas d’états incohérents). Le contrat de composant prévoit essentiellement l’accessibilité des services (chaîne de dépendance), la cohérence du composant (préservation de son invariant) ainsi que la correction du protocole (enchaînement licite des appels de services). Le contrat d’as-semblage est un contrat de clientèle classique mais qui se décline sur trois niveaux de compatibilité. Enfin, le contrat de composite est une variante du précédent pour la relation parent/enfant (visibilité, promotion). La déclinaison en couche des contrats permet à la fois le ciblage vers des outils spécifiques mais aussi la répercussion des résultats vers les couches de plus bas niveau pour éviter des vérifications inutiles. 4. Mise en œuvre des vérifications

Les contrats étant multi-niveaux et composites, plusieurs vérifications leurs sont associées. De plus, plusieurs techniques peuvent être utilisées pour vérifier un même contrat élémentaire. Les techniques de vérification de contrats sont caractérisées par leur degré d’automatisation, leur complexité et leur applicabilité (qui peuvent être cal-culées en fonction du modèle) ainsi que la force du résultat (une preuve de propriété est plus forte que l’absence d’échecs lors d’un test, par exemple). Une vérification ef-fectuée produit un résultat, partiel ou complet, assorti d’un diagnostic exploitable par d’autres vérifications. Prenons l’exemple de la vérification du contrat d’assemblage au niveau communication en visant le model checker MEC (figure 2). Les vérifications

4

Propagation

CCM : Kmelia

synchronization_system Verif_StockManager_newReference list = ( StockManager_newReference, Vendor_vending )>; ... ( rcv_result__SELF_getNewReference.e); ( call__SELF_getNewReference.e); (... ( rcv_result__CALLER_ask_code.emit_result_addItem_code ). transition_system Vendor_vending < width = 0 >; init |- e -> init, start__CALLER_vending -> i; e0 |- e -> e0 , _choice___stop_display__bye__ -> f, ...

< initial = { init }; final = { f } >.

transition_system StockManager_newReference < width = 0 >; init |- e -> init, start__CALLER_newReference -> i; e1 |- e -> e1 \* epsilon transition *\, ... emit_result__CALLER_newReference -> f; < initial = { init }; final = { f } >.

Exportation - Kml2MEC 1 2 //< //initial = { e(init.init) }, //finalStates = { e(f.f) }, //deadf = { e(init.f), e(i.e10_1), e(ends.e10_1) },

//deadlockf = { e(init.f), e(i.e10_1), e(ends.e10_code_f), e(ends.e10), e(ends.e10_1) } //>.).

3

Interprétation - MecLoader Outil

Mec VCCM : Kmelia+KmlErrors +Eclipse Markers

COSTO increase Item remove Item decrease Item addItem code ve : Vendor vending sm : StockManager delete Reference store order authorisation display ... newReference ask_code getNew Reference COMPONENT StockManager VARIABLES vendorCodes : ... obs catalog : ... plabels : ... pstock : ... INVARIANT ... INITIALIZATION ... SERVICES provided newReference () Pre ... Variables ... Initialization ... Behavior { i − _CALLER!!ask_code() −>e1, e1 − [ c in vendorCodes ] _CALLER?msg(d) -> e2 , ... Post ... End ... END_SERVICES ASSEMBLY COMPONENTS ve : Vendor ; sm : StockManager LINKS @lref : r−p ve . addItem ... ... END_LINKS END COMPONENT Vendor VARIABLES ... INITIALIZATION ... SERVICES ... required addItem () Virtual Variables catalogFull : ... catalogEmpty : ... Virtual Invariant ... Pre ... Post ... End END_SERVICES

Figure 2. Transformations associées à une vérification de contrat dans COSTO de contrats sont obtenues par une séquence composée d’un calcul opéré par un outil externe et de trois transformations de modèles pour assurer le passage d’un modèle (V)CCM à un modèle vérifié VCCM. L’exportation (1) transforme la partie du mo-dèle nécessaire à la vérification dans le langage de l’outil utilisé. La vérification (2) est réalisée par l’outil, qui produit un résultat en rapport avec le modèle fourni. L’inter-prétation (3) retranscrit les résultats de l’outil dans le modèle VCCM. La propagation (4) répercute les résultats et les diagnostics sur les contrats du modèle VCCM qui dépendent de la validité du contrat vérifié en (2).

(6)

Dans la mise en œuvre, les aspects structurels et de typage sont pour l’essentiel

vé-rifiés dans COSTO2mais des transformations du système de transitions dans des outils

de graphes sont en cours de développement. Pour la vérification de propriétés liées à

la dynamique la plate-forme COSTO comprend aussi une transformationKml2Lotos

qui à l’instar dekml2Mec dans la figure 2, permet de vérifier le contrat d’assemblage

au niveau communication en utilisant la plate-forme CADP. Les exigences fonction-nelles sont toutes vérifiées sous la forme d’obligations de preuves obtenues en ciblant

B et les outils AtelierB et Rodin par une série de transformationsKml2B. Les tests et

l’animation de modèles font appel à la transformationKml2Java. Enfin la

transfor-mationKml2Latex génère de la documentation des spécifications et des illustrations

au formatdot. Ces transformations sont des plugins Eclipse de COSTO implantés via

des templates, des patrons visiteurs et des opérateurs de conversion ad hoc.

5. Conclusion

Cet article met en évidence l’intérêt des transformations de modèles pour vérifier des propriétés liées aux contrats avant le déploiement des composants. L’originalité du travail réside dans l’utilisation de vérifications tirant parti de la déclinaison du modèle de contrat en couches étendu à l’ensemble des classifiers. Les transformations s’ap-pliquent ainsi à des vues spécifiques aux propriétés, permettant leur vérification dans le support adéquat. Une expérimentation intégrant le métamodèle de composants dans EMF a été menée afin d’exprimer Kmelia dans ce cadre et d’y exprimer les transfor-mations model to model pour des supports implantés sous Eclipse, notamment Rodin. Une autre perspective concerne les propriétés des transformations, en particulier pré-server les contrats dans le raffinement vers le code via par exemple des contrats de transformation (Cariou et al., 2009). Enfin nous souhaitons lier l’ensemble dans des processus de vérification incluant les chaînes de dépendances et de propagation.

6. Bibliographie

André P., Ardourel G., « Domain Based Verification for UML Models », in , L. Kuzniarz, , G. Reggio, , J.-L. Sourrouille, , M. Staron (eds), Workshop on Consistency in Model Driven Engineering C@Mode’05, p. 47-62, November, 2005.

Beugnard A., Jézéquel J.-M., Plouzeau N., Watkins D., « Making Components Contract Aware », Computer, vol. 32, n° 7, p. 38-45, 1999.

Cariou E., Belloir N., Barbier F., « Contrats de transformations pour la validation de raffinement de modèles », 5èmes journées sur l’Ingénierie Dirigée par les Modèles, IDM 09, 2009. Messabihi M., André P., Attiogbé C., « Multilevel Contracts for Trusted Components », in ,

J. Cámara, , C. Canal, , G. Salaün (eds), WCSI, vol. 37 of EPTCS, p. 71-85, 2010. Meyer B., « The Grand Challenge of Trusted Components », Proceedings of 25th International

Conference on Software Engineering, IEEE Computer Society, p. 660-667, 2003. 2.http://www.lina.sciences.univ-nantes.fr/coloss/download/posterCosto.pdf

Figure

Figure 1. Métamodèle simplifié d’un modèle à composants, contrats et vérifications
Figure 2. Transformations associées à une vérification de contrat dans COSTO de contrats sont obtenues par une séquence composée d’un calcul opéré par un outil externe et de trois transformations de modèles pour assurer le passage d’un modèle (V)CCM à un m

Références

Documents relatifs

Conditions générales des contrats d’entreprise totale (génie civil) de la KBOB (CG) Chiffre Domaine d’application Quelles sont les nouveautés.

Il fallait ensuite vérifier comment ces grands principes étaient mis en œuvre dans la négociation du contrat d’auteur, afin de s’assurer que la régulation, par

Regards croisés sur la Méditerranée antique a quant à elle été organisée conjointement par le MAH et la Fondation Gandur pour l’Art, préfiguration de ce que pourraient

Elles· permettent de mettre en évidence les éléments minéraux dont les plantes vertes ont besoin

a) Démontrer que X suit une loi binomiale dont on déterminera les paramètres. b) Construire à l'aide du tableur une feuille de calcul permettant d'obtenir la loi de probabilité de X.

La figure 5.2 représente la qualité de remplissage de l’espace des plans IM et φ q séquentiels résumée par les critères maximin, minimax, discrépance centrée et

La notion de « marché public » recouvre les marchés classiques, les marchés de partenariat et le marchés de défense ou de sécurité 3. Les marchés publics sont soumis aux

Comme une exécution de modèle est une série de transformations de modèles, nous utilisons ces contrats pour la vérification des opéra- tions d’exécution. Nous avons