• Aucun résultat trouvé

Ontologie de familles de méthodes de service

L’ontologie de familles de méthodes a pour but de définir une taxonomie de méthodes services en famille répondant aux besoins de fonctionnalité et la relation d’équivalence entre les familles de méthodes afin de pouvoir réaliser correctement une substitution d’une méthode de service par une autre équivalente ou par une composition de méthodes.

La figure C.1 présente une vue globale des concepts de l’ontologie de familles de méthodes. Le concept (classe) central est la famille de méthodes Family. Une famille de méthodes correspond à un besoin qui est défini par des concepts Category et Domain spécifiés. Elle a des relations d’équivalence avec d’autres familles. Une famille possède un ensemble de méthodes de service où chaque méthode réalise une fonctionnalité. Une méthode a des propriétés fonctionnelles comme un nom, une adresse, des entrées, une sortie, des pré-conditions et post-conditions. Un besoin peut être également réalisé par une composition de familles.

FIG. C.1 – Ontologie de familles de méthodes

Domaine de familles de service est défini par les expressions : Domain :=∀hasCategory.Category⊓ ≥1 hasCategory

Category :=∀hasFamily.Family⊓ ≥1 hasFamily⊓ ∀isDomain.Domain

Family : Le concept Family est défini par une expression : Family :=∀isCategoryOf.Category⊓

∃hasMethod.Method⊓=1 hasMethod⊓ ∃hasEquivalent.Family⊓

∃HasInputType.Type⊓ ∃HasOutputType.Type⊓ ∃HasInput.Input⊓ ∃HasOutput.Output⊓

C.2 Ontologie de familles de méthodes de service

∃HasPreCondition.Expression⊓ ∃HasPostCondition.Expression

La définition du concept Family décrit trois éléments principaux :

– Classification : une famille appartient à une catégorie d’un domaine (isCatego-ryOf.Family)

– Relation : une famille peut avoir des relations d’équivalence avec des autres familles (hasEquivalence) et il est exporté au moins par une méthode (hasMethod.Method et

≥1 hasMethod)

– Propriétés fonctionnelles : une famille a des propriétés fonctionnelles comme types d’entrée (HasInputType.Type), noms d’entrée (HasInput.Input), types de sortie (Ha-sOutputType.Type), noms de sortie (HasOutput.Output), pré-condition et postcon-dition (HasPreConpostcon-dition.Expression, HasPostConpostcon-dition.Expression).

la propriété hasEquivalence qui représente l’équivalence entre les familles est ré-flexible, asymétrique et transitive.

Méthode de service : Le concept Method est défini par une expression : Method :=∀isMethodOf.Family⊓

∀HasMethodName.String⊓ ∀HasInput.String⊓

∀HasOutput.String⊓ ∀HasAddress.String⊓

La classe Method caractérise un ensemble de méthodes ayant la propriété isMethod qui exprime un rapport avec une famille et les autres propriétés qui expriment ses proprié-tés fonctionnelles.

Concrètement, une méthode représente une interface de service. C’est un aspect struc-tural d’un service. Il décrit les propriétés fonctionnelles comme l’adresse de méthode, le nom de méthode, les entrées et les sorties.

Pour exprimer les entrées et sorties d’une méthode, nous décrivons une expression suivante :

Parameter : := "type1[ :type2[ :. . .[ :typen]]]"

typeireprésente un type de donnée du paramètre d’entrée ou sortie qui correspond à la méthode L’ordonnancement des types dans un paramètre doit aussi correspond à l’ordre des paramètres d’entrée/sortie de la signature de la méthode.

Chapitre C : Ontologies

Composition de familles : Le concept FamilyComposition est défini par une expres-sion suivante :

FamilyComposition :=∀IsComposed.Family⊓ ≥2 IsComposed⊓ ∀HasOrder.order⊓

∀HasInputMapping.Mapping⊓ ≥1 HasInputMapping⊓ ∀HasOutputMapping.Mapping⊓ ≥1 HasOutputMaping

Le concept FamilyComposition spécifie

– les familles composées (≥1IsComposed.Family),

– l’ordre d’exécution de familles qui est décrite par le concept (Order),

– les mappings entre les entrées et sorties d’une famille et de la composition de familles ("HasInputMapping.Mapping, HasOutputMapping.Mapping) par rapport aux individus correspondants dans la classe Mapping.

Flot de contrôles :

Un flot de contrôle est spécifié par la classe Order qui est définie suivant :

Order :=∃HasFamily.Family8 ∃HasSeq.Seq8 ∃HasPar.Par8 ∃HasIF.If8Bottom Seq :=∃HasFirstSeq.Family⊓ ∃HasOrder.Order

Par := (∀HasOrder.Order⊓ ≥2 HasOrder)⊓ ∃HasJoined.Order If :=∃HasCondition.Expression⊓ ∃Then.Order⊓ ∃Else.Order

Le concept Order exprime qu’un flot de contrôle peut avoir trois structures princi-pales : séquence, parallèle et condition. Un flot Order peut-être une famille ou une de ces trois structures.

La structure de séquence de familles est décrite par le concept Seq. Elle a deux pro-priétés HasFirstSeq et HasOrder. La première propriété décrit la famille qui démarre la séquence de familles. La seconde propriété spécifie un flot de contrôle qui la suit.

La structure parallèle est décrite par le concept Par. Elle est basée sur la propriété HasOrder qui spécifie qu’un individu a au moins deux individus du concept Order.

La structure Condition est décrite par le concept IF. La propriété HasCondition décrit une expression conditionnelle pour déterminer quelle branche sera exécutée. Si l’expres-sion conditionnelle a la valeur True, l’individu Order qui rapporte à la propriété Then sera choisi pour s’exécuter, sinon l’individu Order de la propriété Else sera choisie.

C.2 Ontologie de familles de méthodes de service

FamilyMapping : :=∃hasSourceFamily.Family⊓ ∃hasDestinationFamily.Family⊓ ∀hasInterfaceMapping.Mapping⊓ ≥2hasInterfaceMapping

Un FamilyMapping est une relation binaire entre une famille de source (hasSource-Service) et une famille de destination (hasDestination(hasSource-Service). Cette relation a deux map-pings d’interface (hasInterfaceMapping). Un mapping d’interfaces décrit les mapmap-pings des paramètres d’entrée ou de sortie des familles équivalentes.

Le concept Mapping est défini par les expressions suivantes : Mapping :=∃IsAssigned.Operand8 ∃HasSource.Expression Operand := Input8Output8Literal

Literal := Number8Character8String8BooleanLiteral Number := Integer8Real

BooleanLiteral := True8False

Le concept Mapping décrit un mapping entre une opérande d’une famille de source et une opérande d’une famille de destination. Une opérande peut être un individu Input, output ou Literal.

la propriété IsAssigned est employée pour assigner un individu du concept Mapping avec un individu de concept Input ou output d’une famille.

la propriété HasSources décrit la relation entre un individu du concept Mapping avec un individu du concept Expression.

Equivalence entre les familles de méthodes : La définition d’équivalence de deux fa-milles Family est définie par la propriété HasEquivalence suivante :

Etant données trois classes Family F1, F2, F3 et une base de connaissanceδ, F1 équi-valent F2 ssi F1 a une relation binaire (propriété) HasEquivalence avec F2 : HasEquiva-lence(F1,F2)∈δ

la propriété HasEquivalence est réflexive, asymétrique et transitive :

- Réflexive : Les instances de F sont équivalentes.

- Asymétrique : HasEquivalence(F1, F2) n’implique pas HasEquivalence(F2, F1)∈δ.

- Transitive : Si HasEquivalence(F1, F2) δ et HasEquivalence(F2, F3) δ, on a HasEquivalence(F1, F3)∈δ

Chapitre C : Ontologies

Equivalence de méthodes : La définition d’équivalence de deux classes Méthodes est définie par les propriétés : HasMethod et HasEquivalence suivant :

Etant données deux classes Method M1, M2 et deux classes Family F1 et F2, M1 équivalente M2 ssi :

(1) HasMethod(F1,M1)∈δ and HasMethod(F1,M2) =∈δ.

(2) HasMethod(F1,M1)∈δ and HasMethod(F2,M2)∈δ and HasEquivalence(F1,F2)

∈δ.

Dans le cas (1), M1 et M2 sont équivalentes car elles sont les classes Method qui ont la relation HasMethod avec la même classe Family F1.

Dans le cas (2), M1 est équivalente à M2 car elles sont les méthodes des deux familles équivalentes F1, F2 respectivement.