• 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 à identifier les configurations provoquant des problèmes d’association de données.

3.3.1

Définitions graphiques

Définition 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éfinition 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éfinition 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 finaux

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

P1, P2 sont séparés

=

3.3 - Analyse de graphe

3.3.2

Fuseaux : identification des configurations probléma-

tiques

Nous avons identifié qu’une configuration 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 différents chemins de données. Graphiquement, nous retrouverons donc deux composants, C et C0, reliés par plusieurs chemins. L’identifi- cation des configurations problématiques repose sur la notion de fuseaux.

Définition 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éfinition 10 (Source) La source d’un fuseau est le nœud initial des chemins com-

posant ce fuseau.

Définition 11 (Puits) Le puits d’un fuseau est le nœud final des chemins composant

ce fuseau.

Un fuseau est donc la représentation graphique de la configuration problématique identifiée dans la section 3.1. En effet, 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 effet, si un fuseau est présent entre deux composants, cela signifie 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 signifie qu’il existe au moins deux chemins reliant C à C0et que ces deux chemins sont forcément séparés. Si ces chemins n’étaient pas séparés, cela signifierait : – soit qu’il existe un composant C00 sur lequel les chemins se regroupent avant d’atteindre C0. Cela signifie 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 figure 3.6 illustre ces configurations. 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

Figure 3.6 – Exemple de chemins non séparés

Figure 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 figure 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 C1 et 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, différents types de fuseaux

Un système peut comporter plusieurs fuseaux. Ce qui nous importe alors est de pourvoir déterminer si un fuseau influence le comportement d’un autre. Si les fuseaux ne partagent aucun composant, il est évident que leurs comportements ne vont pas s’influencer. Par contre, des difficulté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éfinition 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éfinition 13 (Sous-fuseaux) Un fuseau F0est un sous-fuseau de F si F0est 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 figure 3.7, le fuseau entre C2 et C6 est un sous-fuseau du fuseau entre C1

Documents relatifs