• Aucun résultat trouvé

Le système est analysé en tant que graphe orienté. Les composants deviennent des n÷uds du graphe et les liens de communication entre eux, des arcs orientés. Au sein de ce graphe, nous cherchons à identier les congurations provoquant des problèmes d'association de données.

3.3.1 Dénitions graphiques

Dénition 6 (Chemin) Un chemin est une séquence de n÷uds (C1, C2, ..., Cn)avec n > 1 où ∀i ∈ [1..n − 1], il existe un arc antre Ci et Ci+1.

S'il existe plusieurs arcs entre deux n÷uds, nous pouvons avoir besoin de les dis-tinguer. Nous noterons alors les chemins sous la forme : (C1

a1

−→ C2... az

−→ Cn), où les ai sont des étiquettes d'arc.

Dénition 7 (Chemin simple) Un chemin simple est un chemin dans lequel tous les n÷uds sont distincts. Soit P = (C1, C2, ..., Cn)un chemin :

P = (C1, C2, ..., Cn)est simple

= ∀i : ∀j : i 6= j ⇒ Ci6= Cj

Remarquons qu'un chemin simple ne peut pas comporter de boucles. Nous ne traiterons pas ici les systèmes comprenant des boucles entre composants. Ce problème sera traité ultérieurement.

Dénition 8 (Chemins séparés) Deux chemins simples sont séparés s'ils n'ont au-cun n÷ud en commun excepté leurs n÷uds initiaux et naux

Soit P1= (C1, C2, ..., Cn)et P2= (C10, C20, ..., Cm0 )des chemins simples. P1, P2 sont séparés

= (∀i : ∀j : 1 < i < n ∧ 1 < j < m ⇒ Ci6= C0

3.3 - Analyse de graphe

3.3.2 Fuseaux : identication des congurations

probléma-tiques

Nous avons identié qu'une conguration pouvant provoquer des problèmes d'asso-ciation de données se compose d'un composant C0utilisant des données qui dépendent de données produites par un même composant C. Les données produites par C se pro-pagent vers C0 en empruntant diérents chemins de données. Graphiquement, nous retrouverons donc deux composants, C et C0, reliés par plusieurs chemins. L'identi-cation des congurations problématiques repose sur la notion de fuseaux.

Dénition 9 (Fuseau) Un fuseau entre deux n÷uds est l'ensemble des chemins re-liant ces n÷uds tels qu'il existe au moins deux chemins séparés dans cet ensemble. Dénition 10 (Source) La source d'un fuseau est le n÷ud initial des chemins com-posant ce fuseau.

Dénition 11 (Puits) Le puits d'un fuseau est le n÷ud nal des chemins composant ce fuseau.

Un fuseau est donc la représentation graphique de la conguration problématique identiée dans la section 3.1. En eet, il illustre le fait qu'un composant utilise des données dépendant, via plusieurs chemins, de données fournies par un même compo-sant initial.

Propriété 1 Un problème d'association de données peut intervenir entre deux com-posants si et seulement si il existe un fuseau entre eux.

En eet, si un fuseau est présent entre deux composants, cela signie que plusieurs chemins séparés lient les deux composants. Des données dépendant de la source par-viennent donc au composant puits via plusieurs chemins pour lesquels rien n'indique que les temps de parcours sont égaux. Un problème de cohérence est donc à gérer sur ces données.

Dans le sens inverse, si un problème de cohérence se pose entre un composant C et C0alors cela signie qu'il existe au moins deux chemins reliant C à C0 et que ces deux chemins sont forcément séparés. Si ces chemins n'étaient pas séparés, cela signierait :  soit qu'il existe un composant C00 sur lequel les chemins se regroupent avant d'atteindre C0. Cela signie que la cohérence des données est à gérer sur C00 et non sur C0.

 soit que les chemins partent de C et se séparent uniquement après un composant C00. La cohérence des données est donc à gérer par rapport à C00 et non à C. Un problème d'association de données n'étant à gérer que dans le cas où il existe au moins deux chemins séparés reliant C et C0, il n'existe que lorsqu'un fuseau est présent entre C et C0.

La gure 3.6 illustre ces congurations. Entre C0 et C5 nous trouvons bien deux chemins : (C0, C1, C2, C4, C5) et (C0, C1, C3, C4, C5). Ces deux chemins ne sont pas séparés car en plus de leurs n÷uds d'extrémité, ils partagent les composants C1 et C4. Nous voyons bien ici que ce n'est pas C0 qui émet des données pour plusieurs composants mais C1. Nous observons également que le problème de cohérence de données ne se pose pas en entrée de C5 mais bien sur les entrées de C4 qui doit regrouper plusieurs chemins provenant de C1. Par contre, nous constatons qu'il existe bien deux chemins séparés entre C1et C4. Cette présence de fuseau nous indique qu'il faut gérer la cohérence des données sur C4 par rapport à C1.

Notons qu'un système peut comporter plusieurs fuseaux. Ces fuseaux peuvent également être imbriqués entre eux. Ainsi, le puits d'un fuseau peut être la source

Fig. 3.6  Exemple de chemins non séparés

Fig. 3.7  Exemple de fuseau

d'un autre, les sous-chemins d'un fuseau peuvent composer un fuseau, le puits d'un fuseau peut être le composant quelconque d'un autre fuseau...

Sur la gure 3.7, l'ensemble des trois chemins simple {(C1, C2, C4, C6, C7), (C1, C2, C5, C6, C7), (C1, C3, C7)}est un fuseau de source C1et de puits C7.

L'ensemble {(C2, C4, C6), (C2, C5, C6)} forme également un fuseau de source C2

et de puits C6.

3.3.3 Fuseaux imbriqués, diérents types de fuseaux

Un système peut comporter plusieurs fuseaux. Ce qui nous importe alors est de pourvoir déterminer si un fuseau inuence le comportement d'un autre. Si les fuseaux ne partagent aucun composant, il est évident que leurs comportements ne vont pas s'inuencer. Par contre, des dicultés peuvent se présenter dans le cas de fuseaux imbriqués. Nous détaillerons cette problématique dans le chapitre 6 et, dans une moindre mesure, dans le chapitre 4.

Dénition 12 (Fuseaux imbriqués) Deux fuseaux F et F0 sont imbriqués si leurs chemins partagent au moins un composant :

∃P = (C1, C2, ..., Cn) ∈ F ∧ ∃P0= (C10, C20, ..., Cm0 ) ∈ F0: ∃i : 1 ≤ i ≤ n ∧ ∃j : 1 ≤ j ≤ m : Ci= C0j

Nous distinguons également la notion de sous-fuseau qui est un cas particulier de fuseau imbriqué.

Dénition 13 (Sous-fuseaux) Un fuseau F0est un sous-fuseau de F si F0 est com-posé de sous-chemins de F :

∀P0 = (Ci, Ci+1, ...Cj) ∈ F0, ∃P = (C1, C2, ...Cn) ∈ F : 1 ≤ i ≤ j ≤ n ∧ ∀x ∈ [i..j], Cx∈ P

Sur la gure 3.7, le fuseau entre C2 et C6 est un sous-fuseau du fuseau entre C1