• Aucun résultat trouvé

4.4 Approche proposée

4.4.3 Un style architectural pour la norme ANSI/ISA-5.1

Pour modéliser formellement le style architectural des P&ID, nous nous sommes basés particulièrement sur les travaux deKim et Garlan[2010] qui ont utilisé le langage Alloy pour modéliser et analyser les styles architecturaux de base dans le domaine du génie logiciel. Nous

avons adapté la formalisation des composants, des connecteurs, des rôles, des ports et de la configuration à nos besoins. Ensuite, nous avons étendu le style en formalisant les composants et les connecteurs spécifiques de la norme ANSI/ISA-5.1, ainsi que ses règles de conception.

4.4.3.1 Le composant

Nous modélisons les composants par les signatures Composant et Port (Listing 1). Le composant est une signature abstraite (abstract sig) qui contient un ensemble de ports, dé- crits par la relation ports: set Port, et un ensemble d’actions. Les actions, modélisées par la relation actions: Port set -> set Port, représentent l’action du composant sur le fluide à travers ses ports c.à.d. l’acheminement du fluide d’un port A vers un port B. La contrainte actions.Port in portssignifie que la jointure entre l’ensemble des actions et des Port est incluse dans l’ensemble des ports du composant. En d’autres termes, les actions dans le composant portent uniquement sur les ports de ce dernier. La signature Port décrit un port lié à un seul composant, modélisé par la relation composant: one Composant.

Listing 1

abstract sig C o m p o s a n t {

ports : set Port ,

a c t i o n s : Port set -> set Port }{this = ports . c o m p o s a n t a c t i o n s . Port in ports a c t i o n s [ Port ] in ports }

abstract sig Port {

c o m p o s a n t : one C o m p o s a n t }{this in c o m p o s a n t . ports }

abstract sig P r o c e s s extends

C o m p o s a n t {}

abstract sig I n s t r u m e n t

extends C o m p o s a n t {}

abstract sig PP extends Port {}

abstract sig PP extends Port {}

abstract sig PE extends Port {}

abstract sig PL extends Port {}

abstract sig V3VM extends P r o c e s s {

p1 : lone PP , p2 : lone PP , p3 : lone PP , p4 : lone PL }{ p1 + p2 + p3 + p4 = ports a c t i o n s = ( p1 - > p2 ) + ( p2 - > p1 ) +

( p1 - > p3 ) + ( p3 - > p1 )

lone ports & p1

lone ports & p2

lone ports & p3

lone ports & p4 }

Il existe deux types de composants dans ANSI/ISA-5.1 : les Process (abstract sig Pro- cess) et les instrumentations (abstract sig Instrument, Listing 1). Les composants pro- cess représentent des composants qui ont un comportement impliquant un changement d’éner- gie, d’état ou d’autres propriétés dans le système [ISA 1992]. Dans le système de gestion des fluides, ces composants (par exemple, les pompes et les vannes) ont une action sur l’achemine- ment du fluide. D’autre part, des composants d’instrumentation (par exemple les indicateurs et les émetteurs) sont utilisés pour mesurer et/ou contrôler une variable [ISA 1992]. Chaque com- posant possède plusieurs types de ports décrivant le type de ses interactions. Nous modélisons

4.4. Approche proposée 95

ces types par les signatures : PP (port type process), PI (port type instrumentation), PE (port électrique) et PL (port logiciel) qui héritent tous de la signature Port (Listing 1). Par exemple, un composant avec un PP peut ne interagir qu’avec des composants de type Process.

La vanne trois voies motorisée (V3VM), présentée à la figure 4.3, est un composant type process (extends Process) avec 3 PP (p1, p2, p3) et un port électrique (p4, Listing 1). La vanne est utilisée pour acheminer le fluide du port p1 vers le port p2 (p1 -> p2) et inversement (p2 -> p1). Elle permet également le routage du fluide de p1 à p3 et vice-versa. Cependant, elle bloque le passage du fluide du port p2 vers le port p3 et inversement. La contrainte (lone ports & p1) signifie que la vanne contient au plus un port du type p1. De la même manière, nous avons modélisé 30 autres composants de la norme ANSI/ISA-5.1.

FIGURE4.3 – Vanne trois voies motorisée (V3VM)

4.4.3.2 Le connecteur

Les connecteurs sont aussi décrits par deux signatures abstraites : Connecteur et Role (Listing 2). Un connecteur (abstract sig Connecteur) consiste en un ensemble de rôles. Chaque rôle (abstract sig Role) est lié à un seul connecteur décrit par la relation connecté: one Port.

Listing 2

abstract sig C o n n e c t e u r {

roles : set Role

}{this = roles . c o n n e c t e u r }

abstract sig LP extends C o n n e c t e u r {}

abstract sig Role {

c o n n e c t e u r : one Connecteur , c o n n e c t é : one Port

}{this in c o n n e c t e u r . roles }

La norme ANSI/ISA-5.1 offre plusieurs types de connecteurs (figure 4.4). Dans le listing 2, nous modélisons les connecteurs suivants : les liens process (LP, Listing 2), liens d’instrumen- tation (LI), liens électriques (LE), ou liens logiciels (LL).

FIGURE4.4 – Les connecteurs dans la norme ANSI/ISA-5.1

4.4.3.3 La configuration

Une configuration (Listing 3) est composée d’un ensemble de composants (composants: set Composant) et de connecteurs (connecteurs: set Connecteur) liés par la relation connecté(Listing 2). Donc, la configuration est une instance de toutes les signatures qui res- pectent les contraintes du style. Ces contraintes sont présentées dans la section suivante.

Listing 3 abstract sig C o n f i g u r a t i o n { c o m p o s a n t s : set Composant , c o n n e c t e u r s : set C o n n e c t e u r }{ c o n n e c t e u r s . roles . c o n n e c t é in c o m p o s a n t s . ports c o m p o s a n t s . ports .~ c o n n e c t é in c o n n e c t e u r s . roles }

4.4.3.4 Les contraintes du style

Pour modéliser les contraintes du style, dérivées de la norme ANSI/ISA-5.1, nous utili- sons les contraintes présentées dans le Listing 4. Le prédicat pred EstDeType retourne vrai si un élément e1 est de type e2, sinon, il retourne faux. Le prédicats pred Attaché retourne vrai si un rôle r est attaché au port p par la relation connecté. Finalement, le prédicat pred EstCompatibledétermine si un connecteur c est compatible avec le port p avec lequel il est attaché.

Différentes contraintes du style sont modélisées par le fact fact StyleContraintes (Lis- ting 4), chaque élément du modèle Alloy doit satisfaire ce fact. Ces contraintes sont :

1. La compatibilité Connecteur/Port : chaque connecteur est attaché à des ports compa- tibles avec son type. Par exemple, un connecteur électrique (LE) ne doit être attaché qu’avec des ports électriques (PE). Cette contrainte est modélisée dans le Listing 4, avec le numéro (1).

2. La relation connecté est irréversible, concrètement, les extrémités de chaque connecteur ne doivent pas être attachées aux ports du même composant (le composant n’est pas connecté à lui-même), voir le Listing 4, numéro (2).

4.4. Approche proposée 97

3. La connectivité des composants : chaque composant doit être connecté. Cette contrainte est codée en Alloy dans le Listing 4, numéro (3).

4. Les connexions doubles n’existent pas. En effet, il ne doit pas exister plusieurs connec- teurs entre les même ports (Listing 4, numéro 4).

Listing 4 pred E s t D e T y p e [ e1 :univ, e2 :univ]{

e1 in e2 }

pred A t t a c h é [ r : Role , p : Port ]{ r - > p in c o n n e c t é

}

pred E s t C o m p a t i b l e [ c : Connecteur , p : Port ]{ E s t D e T y p e [c , LP ] = > E s t D e T y p e [p , PP ] else ( E s t D e T y p e [c , LI ] = > E s t D e T y p e [p , PI ] else ( E s t D e T y p e [c , LE ] = > E s t D e T y p e [p , PE ] else ( E s t D e T y p e [c , LL ] = > E s t D e T y p e [p , PL ]))) } fact S t y l e I n v a r i a n t s {

(1) all r : Role |some p : Port | A t t a c h é [r , p ] && E s t C o m p a t i b l e [ r . connecteur , p ]

(2) all disj r1 , r2 : Role | ( r1 . c o n n e c t e u r = r2 . c o n n e c t e u r ) = > ( r1 . c o n n e c t é . c o m p o s a n t != r2 . c o n n e c t é . c o m p o s a n t )

(3) all c : C o m p o s a n t |!( c . ports .~ c o n n e c t é = none)

(4) all disj c1 , c2 : C o n n e c t e u r | no ( c1 . roles . c o n n e c t é & c2 . roles . c o n n e c t é ) }

pred show {# St >=1 # V2VM >=1 # Interface >=1}

run show for 8

4.4.3.5 Vérification de la cohérence du style

Le style est cohérent si et seulement si les contraintes du style ne sont pas contradic- toires [Allen 1997]. Cela signifie qu’il existe au moins une configuration construite à partir des composants et des connecteurs du style et qu’elle respecte les contraintes de ce dernier [Kim et Garlan 2010]. Dans notre cas, pour vérifier la cohérence de notre style, nous utilisons le simu- lateur d’Alloy pour chercher une solution (configuration) qui satisfait toutes les contraintes. Si le simulateur retourne une solution, nous déduisons alors que le style est cohérent.

Nous exécutons la commande run show for 8 (Listing 4) et nous obtenons une instance (figure 4.5 (a)). Cette instance correspond au diagramme P&ID illustré dans la figure 4.5 (b). Nous déduisons alors que notre style est cohérent.

FIGURE4.5 – La vérification de la cohérence du style : (a) L’instance retournée par Alloy ; (b) Le P&ID correspondant