Une approche à base de composants pour la

Transcription

Une approche à base de composants pour la
Une approche à base de composants pour la
modélisation des procédés logiciels
Ma. Lizbeth GALLARDO
DEA préparé dans l’équipe ADELE, au laboratoire LSR
Soutenance à Grenoble,
Le 20 Septembre 2000.
Responsable du stage :
Noureddine BELKHATIR, Maître de Conférences UPMF Grenoble
Responsable de formation DEA :
Marie-France BRUANDET, Professeur à l’UJF
Remerciements.
Je tiens à remercier tout particulièrement :
Jacky Estublier, responsable de l’équipe ADELE,
Directeur CNRS, pour m’avoir accueilli dans son
équipe.
Noureddine Belkhatir, Maître de Conférences UPMF
pour son encadrement, ses nombreux conseils et son
soutien.
L’ensemble des personnes de l’équipe ADELE de
laboratoire Logiciel Systèmes et Réseaux.
Manuel Aguilar, mon époux, par son amour si précieux
et son soutien inconditionnel.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 1
Table des Matières
1. INTRODUCTION....................................................................................................... 5
1.1 Problématique............................................................................................................ 5
1.2 Contexte..................................................................................................................... 6
1.3 Contenu du document................................................................................................. 6
CHAPITRE 2. ETAT DE L’ART................................................................................... 7
2.1 Définitions de procédé et de support automatisé......................................................... 7
2.2 Communautés de procédés : procédé d’affaires et procédé logiciel. ........................... 7
2.3 Les Environnements centrés procédés. ....................................................................... 8
2.3.1
2.3.2
Définition ..................................................................................................................8
L’architecture.............................................................................................................9
2.4 Techniques d’interopérabilité................................................................................... 10
2.4.1
2.4.2
2.4.3
Définition de Composant..........................................................................................10
Définition d’Interopérabilité.....................................................................................10
Interopérabilité par échange de donnés. ....................................................................11
2.4.3.6 Interopérabilité sémantique : Vocabulaire commun. ..................................................11
2.4.3.7 Le schéma conceptuel procédé..................................................................................12
2.4.3.8 Interopérabilité par les données : Langage de traduction commun..............................13
2.4.4
Interopérabilité par le contrôle..................................................................................14
2.4.4.1
2.4.4.2
2.4.4.3
2.4.4.4
2.4.4.5
2.4.4.6
2.4.4.7
2.4.4.8
2.4.5
WAPI4 (Workflow Application Programming Interface/Interchange 4).....................15
SWAP......................................................................................................................17
Jflow........................................................................................................................17
Wf - XML................................................................................................................17
Le Modèle « Mission » : utilisation du protocole Wf-XML. ......................................19
OZ ...........................................................................................................................21
Process wall .............................................................................................................21
APEL.......................................................................................................................22
Approche par composant pour la modélisation des procédés.....................................22
2.4.5.1
2.4.5.2
2.4.5.3
2.4.5.4
Endeavors. ...............................................................................................................22
Pynode .....................................................................................................................22
SPMS. Software Process Management System..........................................................23
OPC. Open Process Components Framework. ...........................................................23
2.5 SYNTHESE .............................................................................................................. 25
CHAPITRE 3. NOTRE APPROCHE. ......................................................................... 26
3.1 Introduction. ............................................................................................................ 26
3.2 Concepts. .................................................................................................................. 26
3.2.1 Modèle. .......................................................................................................................26
3.2.2 Composant procédé..................................................................................................26
3.2.3 Modélisation basée composants................................................................................27
3.2.4 L’exécution basée composants procédés...................................................................27
3.2.5 Le vocabulaire commun. ..........................................................................................27
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 2
3.2.6
3.2.7
3.2.8
3.2.9
3.2.10
Le schéma conceptuel procédé. ................................................................................27
Framework orienté objet ..........................................................................................28
L’état procédé. .........................................................................................................28
Classement hiérarchique ..........................................................................................28
Architecture de l’Environnement Centré Procédé. ....................................................29
3.3 Modèle pour des Composants procédés.................................................................... 29
3.3.1
3.3.2
Les cas d’utilisation. ................................................................................................29
Scénarios principaux identifiés au travers des cas d’utilisation..................................30
3.3.2.1
3.3.2.2
3.3.2.3
3.3.2.4
3.3.3
3.3.4
Créer un composant procédé :...................................................................................30
Exécuter un composant procédé................................................................................31
Contrôler l’exécution d’un composant procédé..........................................................32
Abonner un observateur global externe. ....................................................................32
Diagramme de transition d’états. ..............................................................................33
Diagramme de classes ..............................................................................................34
3.3.4.1
3.3.4.2
3.3.4.3
3.3.4.4
3.3.4.5
Le patron Fabrication. ..............................................................................................34
L’Observateur global................................................................................................35
Le patron de façade. .................................................................................................36
Le ComposantMétaData. ..........................................................................................36
Fonctionnement de la machine d'exécution : exemple................................................36
CHAPITRE 4 PROTOTYPAGE................................................................................. 40
4.1 Modèle par composants procédés............................................................................. 40
4.2 Dépendances............................................................................................................ 41
4.3 L’observateur global. ............................................................................................... 41
CHAPITRE 5. CONCLUSION ET PERSPECTIVES ................................................ 43
BIBLIOGRAPHIE........................................................................................................ 44
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 3
Table des illustrations
Figure 1 : Procédé d'affaire: Traitement de dossiers de gestion de prêts bancaires .............................3
Figure 2 : Procédé logiciel: Cycle de vie du logiciel .............................................................................4
Figure 3 : Architecture de référence pour les PSEE [Sch99] ...............................................................5
Figure 4 : Schéma conceptuel............................................................................................................8
Figure 5 : PCIS LCPS Model [Der94] ..................................................................................................9
Figure 6 : Modèle par langage canonique .........................................................................................10
Figure 7 : Interopérabilité par control (WAPI 4) [WfMC2-1] ................................................................11
Figure 8 : Modèle de procédés chaînés............................................................................................12
Figure 9 : Modèle de procédés imbriqués.........................................................................................12
Figure 10 : Modèle de procédé parallèle ..........................................................................................12
Figure 11 : Modèle de ressource logique...........................................................................................14
Figure 12 : Modèle pour une mission ................................................................................................16
Figure 13 : Hiérarchie de classes pour l'entité "procédé" ...................................................................20
Figure 14 : Conception d'un procédé par composants .......................................................................22
Figure 15 : Schéma conceptuel.........................................................................................................24
Figure 16 : Les cas d'utilisation .........................................................................................................26
Figure 17 : Diagramme de séquences : création d’un composant procédé ........................................27
Figure 18 : Diagramme de séquence : Exécution d’un composant procédé .......................................27
Figure 19 : Diagramme de séquence : Contrôle de l'exécution ..........................................................28
Figure 20 : Diagramme de séquence : Abonnement un observateur..................................................29
Figure 21 : Diagramme de transition d'états pour un composant procédé ..........................................29
Figure 22 : Diagramme de classes : Framework pour des composants procédés ..............................30
Figure 23 : Diagramme de classes : Patron fabrication......................................................................31
Figure 24 : Diagramme de classes: L'observateur global ...................................................................31
Figure 25 : Diagramme de classes: Méta données produits par un composant procédé ....................27
Figure 26 : Le schéma pour test........................................................................................................33
Figure 27 : Arbres illustrant la création et exécution des sous composants test .................................33
Figure 29 : Diagramme de séquences pour exécution de Test ..........................................................34
Figure 30: Diagramme de séquence : interopérabilité entre des composants procédés ....................35
Figure 31 : Diagramme de transition d'état pour le composant test ...................................................35
Figure 32 : Fenêtre pour créer un modèle par composants................................................................36
Figure 33 : Fenêtre pour remplir les dépendances entre composants ................................................37
Figure 34 : Fenêtre pour observer cours de l'exécution des composants ...........................................38
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 4
Chapitre 1. Introduction.
Dans les années 1990 une équipe d’ingénieurs a mis en avant le fait que les outils logiciels pouvaient
être utilisés pour automatiser les procédures de travail impliquant la circulation de documents papier
[SW92]. La gestion de flux de travaux est une technique de modélisation de procédés logiciels, qui est
née de cette idée. Ainsi commence l’étude des procédés dirigée principalement vers le
développement de techniques et de mécanismes facilitant la modélisation et le support de procédés.
Par procédé on désigne l’ensemble des activités faisant intervenir de nombreux agents humains et
outils ayant un but commun, la création et la maintenance d’un produit ou la réalisation de services
en respectant un ensemble de caractéristiques bien définies. Un modèle est la description abstraite
des pratiques réelles concernant le déroulement des projets au sein d’un groupe de travail ou d'une
organisation. Plusieurs formalismes de représentation ont été proposés pour la modélisation de
procédés. Les systèmes supportant l’exécution de ces formalismes sont appelés environnements
centrés procédés.
1.1 Problématique.
Actuellement les procédés mis en œuvre dans notre société sont de plus en plus complexes et
difficiles à gérer; la raison principale est l'évolution rapide des activités sociales et économiques
durant les dernières décennies, en plus de la diffusion de la technologie de l’information dans
beaucoup de domaines » [Avr96]. En conséquence, la conception, l’exécution et la maintenance des
modèles pour ces procédés sont de plus en plus complexes.
Nous nous interessons plus particulièrement aux procédés logiciels et à leur modélisation pour faire
face à la complexité des procédés, la communauté génie logiciel propose leur construction en faisant
coopérer plusieurs équipes (peut-être géographiquement distribuées). En considérant que chaque
équipe peut avoir ses propres environnements de développement (formalismes de représentation,
moteur procédé, bases de données etc.), les modèles fournis par ces équipes seront hétérogènes. Et
malheureusement, les formalismes de représentation actuels liés à l’infrastructure qui les supporte ne
facilitent ni l’interopérabilité, ni la réutilisation de modèles procédés exécutables.
Comme nous le présentons dans l’état de l’art, les travaux cherchant à résoudre le problème de
l’interopérabilité sont nombreux. Une approche intéressante et récente consiste à appliquer la
technologie des composants et objets au développement de procédés. Parmi ces travaux on trouve
APEL et OZ, qui proposent une architecture par composants et Pynode, Endeavors et OPC, qui
proposent une approche par composant au niveau modélisation.
Les avantages attendus par l’approche composant pour le support de procédés sont :
Obtention d’environnements de développement de logiciels coopératifs et ouverts
Interopérabilité entre des composants hétérogènes (fédération de composants)
Dépendances entre procédés délimitées, mieux reconnues et gérées
Réutilisation des composants procédés
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 5
1.2 Contexte
Notre domaine de recherche s’inscrit dans une approche par composant pour le support automatisé
aux procédés logiciels. Nous proposons un framework orienté objet permettant construire, exécuter et
faire évoluer des modèles de procédés logiciels. Le contexte de ce travail est caractérisé par les
aspects suivants :
Approfondissement du concept de composant procédé logiciel.
Etude des différentes techniques d’interopérabilité.
Les buts de notre travail sont :
La proposition d’un framework orienté objet pour le support de procédés qui permette :
D'augmenter le potentiel de réutilisation des modèles de procédés fonctionnels,
D'assurer l'interopérabilité entre des composants hétérogènes.
L’intégration dynamique de composants.
La présentation des concepts et de la terminologie qui caractérisent la technologie de procédés.
Le développement d’un prototype pour valider nos idées, en utilisant des technologies actuelles
telles que Java, XML, protocoles de communication comme CORBA, etc.
1.3 Contenu du document.
Nous allons présenter dans le chapitre 2 l’état de l’art qui comprend plusieurs techniques
d’interopérabilité identifiées dans le domaine de procédés. Dans le chapitre 3, nous présenterons les
concepts et la terminologie utilisés dans notre approche, ensuite le framework pour un composant
procédé. Dans le chapitre 4, nous présenterons le prototype comprenant les interfaces de dialogue
pour la création et gestion d’un modèle par composants. Le chapitre 5 présentera les conclusions
ainsi que les perspectives de ce travail.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 6
Chapitre 2. Etat de l’Art
2.1 Définitions de procédé et de support automatisé.
Par procédé on entend l’ensemble des activités faisant intervenir des équipes de personnes (souvent
nombreuses), des outils et des techniques pour assurer le développement et la maintenance de
produits ou de services.
Le support automatisé aux procédés correspond à l’application de la technologie informatique pour
assister et automatiser le travail d’une organisation.
2.2 Communautés de procédés : procédé d’affaires et procédé logiciel.
On distingue deux communautés dans l’étude de procédés : La communauté de procédé logiciel
(Software process) et celle des procédés d’affaires (Workflow). Les deux partagent le même objet
d’étude : le procédé ainsi que de l’intérêt d’accroître la connaissance autour de celui-ci mais ils
diffèrent dans l’approche initiale du problème.
Dans les années 1990, une équipe d’ingénieurs a mis en avant que les outils logiciels peuvent être
utilisés pour automatiser les procédures de travail impliquant la circulation de documents papier
[SW92]. La gestion des flux de travaux (workflow management système) est la technologie logicielle
inspirée de cette idée. Elle permet de modéliser les procédures de travail et d’en assurer la mise en
œuvre.
L’approche adoptée par la communauté de procédés d’affaire est pragmatique. Les recherches
effectuées dans le domaine visent dès le départ l’application pratique de cette nouvelle technologie
dans des situations de travail réelles. On assiste alors aux développement de systèmes dédiés à la
gestion des documents dans des organisations caractérisées par des procédés d’affaires de type
traitements de dossier. Pour illustrer cette approche, considérons par exemple le dossier de gestion
de prêts dans une banque. La figure suivante montre l’ensemble des activités nécessaires pour son
traitement.
Figure 1 : Procédé d'affaire: Traitement de dossiers de gestion de prêts bancaires
Quand à la démarche adoptée par la communauté procédé logiciel, elle est plus orientée vers l’étude
de modèles pour les procédés que dans la production de systèmes directement exploitables. Les
aspects technologiques étudiés se focalisent sur l’élaboration d’environnements destinés à supporter
les modèles développés. Un exemple est le modèle en cascades [JCJ+93] de cycles de vie du
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 7
logiciel, la figure 2 illustre un procédé suivi pour le développement d’un logiciel. Les flèches arrondis
indiquent le flux d’exécution des différents activités dans le développement du logiciel. Par exemple
quand l’activité Analyser le problème soit fini, l’activité Concevoir la solution logiciel sera initiée. Si
dans le développement de cet activité on trouve des erreurs, l’activité analyser le problème sera
appelé pour réaliser les corrections pertinents au modèle. Les flèches droits indiquent que tous les
produits fournis par les activités seront validés, dans l’activité Valider les modèles et l’implémentation.
Figure 2 : Procédé logiciel: Cycle de vie du logiciel
Les principales différences entre les deux types de procédés peuvent être résumées de la manière
suivante :
Les procédés d’affaires (Workflow)
Les procédés logiciel
•
Travail sur l’automatisation de procédés •
d’affaires
Travail sur
logiciels
•
Ils sont stables. (la définition du procédé •
ne change pas fréquemment).
Sont relativement instables. (développement
d’activités peut être changé ou raffiné quand le
procédé est en train de s’exécuter)
•
Environnement
industriels
(WFMS) • Produits universitaires (PSEE).
(Workflow Management Systems)
(Process S/W Engineering Environment)
l’automatisation
de
procédés
Malgré les différences décrites auparavant, les orientations suivies par chacune des deux
communautés ont permis de faire avancer en parallèle et de façon complémentaire les recherches sur
les procédés. Peu à peu, les 2 courants se sont rapprochés, chacun intégrant les avancées de l’autre
dans son approche du problème.
2.3 Les Environnements centrés procédés.
2.3.1 Définition
Un Environnement Centré procédé ( PSEE - Process Software Engineering Environment) est un
système permettant de décrire explicitement et avec suffisamment de détails la manière de produire
un logiciel. Cette description, appelée modèle du procédé, est exprimée dans un formalisme approprié
appelé langage de modélisation de procédés [Ami99]. Pour le groupe de travail PROMOTER 2, un
environnement de développement peut être qualifié de centré procédé si son architecture est basée
sur un moteur de processus qui, par interprétation ou exécution du modèle de procédé, contrôle la
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 8
démarche de production en cours. L’environnement peut en outre comporter des outils dédiés au
suivi, à l’analyse et à l’évolution des modèles de procédés [Der94].
On peut trouver dans la littérature plusieurs études comparant les différentes PSEE développés en
tant que prototypes de recherche, industriels ou systèmes commercialisés [Lon94], [CJ99]. Il ressort
de ces travaux que la plupart de ces systèmes offrent les moyens de mener à bien l’ensemble des
activités relevants de l’ingénierie du procédé. Toutes les étapes depuis la définition jusqu’au support
automatisé et à l’évolution du procédé forment le cycle de vie du procédé, communément appelé Méta
– Procédé [Avr96].
2.3.2 L’architecture
L’identification des différents services de base que doit fournir un PSEE permet d’élaborer un modèle
de référence pour l’architecture générale de ce type de systèmes [Sch99]. La figure 3 illustre les
services : gestion des dialogues, des procédés, des espaces de travail et des bases de données. Ils
sont organisés dans une architecture comportant quatre couches abstraites.
Figure 3 : Architecture de référence pour les PSEE [Sch99]
Tout PSEE doit permettre la gestion des dialogues afin d’informer les utilisateurs sur le procédé et
de leur permettre, sur la base des informations fournies, d’effectuer leurs tâches. Le service de
gestion des dialogues concerne directement l’interface proposée à l’utilisateur, qui doit par ailleurs
correspondre directement au rôle de celui-ci. Via les informations gérées par ce service,
l’environnement répond en adéquation avec les besoins inhérents au rôle de l’utilisateur.
La gestion des processus est le service rendu par un PSEE qui fait référence à l’exécution d’un
modèle de procédés donné. C’est à ce niveau qu’est gérée la coordination des activités
concurrentes des divers acteurs impliqués. Par ailleurs, ce service « calcule » l’espace de travail à
fournir à l’utilisateur, en fonction de l’état du procédé en cours.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 9
Un espace de travail doit être consacré à chaque utilisateur en fonction de son rôle. Un service
dédié à la gestion de ces espaces de travail permet de maintenir, pour chacun et à un instant
donné, les éléments logiciels nécessaires et suffisants pour procéder à la réalisation de la tâche.
La gestion de base d’objets est un quatrième service inhérent aux PSEE. L’objectif est ici d’assurer
l’accès aux objets logiciels et à leurs relations qui sont stockés de façon persistante. Un
gestionnaire de données est un des éléments clé des PSEE : il est responsable de la cohérence et
de la disponibilité des informations nécessaires aux autres composants de l’environnement (i.e. la
résolution des conflits d’accès notamment).
La gestion des communications suppose que des interfaces de communication soient créées pour
les composants et que des protocoles de communication soient établis pour définir les modalités
d’utilisation des services disponibles. L’intégration de ce service au sein de l’architecture présente
l’intérêt non négligeable de rendre l’environnement adaptable, flexible et extensible.
2.4 Techniques d’interopérabilité
La tendance actuelle dans les systèmes supportant des procédés est d’offrir un environnement
coopératif dans lequel le support se fait à travers un ensemble de composants. Chaque composant
prend en charge la gestion d’un aspect particulier du procédé.
Les récents travaux de recherche [BK95] [GLK97] dont les nôtres [ABC94] [ABC96] [Ami99]
proposent une approche par composant pour le support de procédés. Les avantages attendus sont:
L’obtention des environnements coopératifs et ouverts
L’Interopérabilité entre composants hétérogènes
Les Dépendances entre procédés sont délimitées et par conséquent mieux reconnues et gérées
La réutilisation des composants procédés
Notre étude est centrée sur le développement d’un modèle de procédé à base de composants avec
deux aspects importants à expliciter : Le concept de composants et l’interopérabilité entre
composants.
2.4.1 Définition de Composant
« Un composant est un fragment de logiciel assez petit pour qu’on puisse le créer et le maintenir, et
assez grand pour qu’on puisse l’installer et en assurer le support. De plus, il est doté d’interfaces
standard pour pouvoir intéropérer ». [OHE99]
Un composant procédé est constitué d’un groupe significatif d’activités. Le composant procédé
contient tous les rôles et produits qui sont liées à ces procédés et activités [LD97].
2.4.2 Définition d’Interopérabilité
Deux ou plusieurs ressources sont interopérables si elles peuvent interagir pour exécuter ensemble
une tâche [NWM93]. L’interopérabilité implique la distribution d’informations, la communication et la
compréhension mutuelle entre les différents domaines d’exécution.
L’hétérogénéité des composants rend complexe l’interopérabilité. Cette hétérogénéité peut être due à
la diversité des solutions proposées pour couvrir les différents aspects du procédé. En effet, pour
chaque aspect dans le procédé, on peut envisager des solutions conceptuelles et technologiques
différentes. Ceci concerne les concepts utilisés, les formalismes proposés et les plates formes
d’exécution, etc.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 10
On peut distinguer trois niveaux d'hétérogénéité :
•
•
•
sémantique
syntaxique
des plate formes d'exécution.
L'hétérogénéité sémantique est due à la diversité des concepts utilisés par les composants. Chaque
composant peut offrir des concepts différents pour gérer l’aspect du procédé auquel il est dédié.
L'hétérogénéité syntaxique. Les composants peuvent offrir un formalisme différent pour décrire
l’aspect de procédé qui leur correspond. Le choix d’un formalisme par rapport à un autre peut avoir un
impact considérable sur l’amélioration de la compréhension des modèles et de la capture du domaine
du problème.
L’hétérogénéité des plates formes d’exécution. En considérant que l’exécution du procédé est répartie
sur un ensemble de composants autonomes, chaque composant peut faire appel à des plates formes
matérielles différentes. Le problème consiste ici à trouver les mécanismes appropriés qui permettent
aux composants d’interagir, d’échanger des données et du contrôle.
Les travaux qui proposent des solutions aux problèmes d’hétérogénéité sont nombreux. Dans notre
état de l’art nous avons classifiés en trois groupes les techniques d’interopérabilité trouvées dans
plusieurs propositions du domaine de procédés et correspondant à une évolution dans le temps.
1. Interopérabilité par échange de données :
Vocabulaire commun (sémantique)
Schéma conceptuel procédé.
Langage (syntaxe)
2. Interopérabilité par le contrôle (plates formes d’exécution)
3. Interopérabilité par composants
Nous proposons à présent d’aborder chacune des techniques d’interopérabilité, en remarquant les
concepts apportés par les groupes de recherche.
2.4.3 Interopérabilité par échange de donnés.
2.4.3.6 Interopérabilité sémantique : Vocabulaire commun.
Les environnements coopératifs impliquent que de multiples participants travaillent ensemble pour
réaliser un but commun.. Pour atteindre ce but, ils ont besoin d’échanger des idées et des résultats.
Cependant, lorsque les participants interagissent, il apparaît un problème de vocabulaire, à cause des
différentes définitions qu’ils utilisent pour décrire le même concept.
Le problème du vocabulaire commun a été abordé par différents domaines de l’informatique tels que
les bases données [BFL94] ou les systèmes collaboratifs [Che94] [WfMC98. Une des solutions
proposées consiste à proposer des normes définissant les concepts relatifs à un domaine particulier
(ontologies).
Dans le domaine de procédés, des efforts importants ont été mis en œuvre afin de clarifier les
concepts et la terminologie. Les contributions en rapport avec ce sujet viennent principalement de la
communauté procédés logiciels [CFF94] [Lon93].
Nous allons définir les éléments basiques qui interviennent dans le procédé. Bien que nous ayons
trouvé différentes définitions pour les éléments du procédé, nous avons essayé de donner une
définition qui fasse l’objet d’un large consensus. Nous montrerons dans ce qui suit la façon d’abstraire
de tels éléments dans un schéma d’objets. Tout composant doit adhérer à ce schéma. Il représente
les éléments et les relations qui les lient.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 11
Procédé : tous les éléments impliquées dans le développement et la maintenance d’un produit ou
service, i.e. artefacts, support de production (outils), activités, agents [CFF94].
Artefact : produit créé ou modifié pendant un procédé [Lon93]. Il correspond à des objets tels que
des documents ou des codes ayant une structure bien identifiée.
Agent : celui qui exécute le procédé. Cela peut être un humain ou un outil logiciel [CFF94]. Un
agent est caractérisé par les propriétés de son rôle.
Rôle : décrit un ensemble de responsabilités, droits et compétences d’un agent dans le contexte
des activités où il intervient.
Activité : c'est une unité élémentaire du procédé. Elle correspond à l’ensemble des actions
effectuées par les rôles dans le but de créer, de consommer, de transformer des produits ou de
réaliser un service.
2.4.3.7 Le schéma conceptuel procédé.
Une proposition pour le développement d’une théorie unifiée dans la modélisation des procédés, est
le « schéma conceptuel commun ». Un schéma conceptuel commun offre une information importante
sur l’ensemble des entités participant au procédé et sur les relations existant entre les entités.
Armitage et Kellner [AK94] ont proposé « un schéma conceptuel qui représente une vue unique et
intégrée de l’information nécessaire dans les modèles et définitions d’un procédé ».
Le schéma conceptuel est suffisamment général et abstrait, ce qui permet de l’utiliser avec une large
variété de langages de définition ou de modélisation de procédés. L’objectif visé est d’obtenir :
•
•
•
Une base pour la représentation et la transformation d’un procédé dans différents formalismes.
L’assistance au développement, à la révision et à l’amélioration du modèle de procédé.
La constitution d’une base de modèles de procédés réutilisables.
Le schéma est constitué de trois entités de bases : activité, artefact et agent et des relations qui les
lient. La figure 4 montre le schéma conceptuel.
Figure 4 : Schéma conceptuel
Nous pouvons interpréter le schéma de la manière suivante : Un agent exécute une activité
produisant un artefact. Par ailleurs, un artefact est issu d’un autre artefact ; un agent est géré par un
autre agent ; et une activité vérifiant le travail d’une autre activité.
Un procédé est de nature dynamique. Par conséquent, le comportement dans le temps est un aspect
critique du procédé. Les principales entités et relations peuvent être envisagées comme une photo
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 12
instantanée. La figure 4 montre que le comportement est un aspect fourni par tous les entités et les
relations. Exemples de comportements :
Quand (sous quelles circonstances)
Une activité peut commencer ?
Une activité peut être considérée comme terminée ?
Un artefact est produit (output) ?
Un artefact est acquis (input) ?
Un agent peut commencer à travailler dans une activité ?
L’information du comportement peut être représentée par plusieurs approches de modélisation et de
définition de procédés, comme : les diagrammes à transition d’ état, les déclencheurs ou les règles
événements – conditions - actions, les pré / post-condition.
Un autre approche de schéma conceptuel commun est le modèle proposé dans le cadre du projet
PCIS LCPS (Portable Common Interface Set Life Cycle Process Support). Ce modèle identifie les
entités basiques du procédé et les relations entre elles. Voir figure 5.
Figure 5 : PCIS LCPS Model [Der94]
Le PCIS LCPS est centré sur les relations entre les activités (Activity) et les produits (Product). Une
activité produit ou consomme des produits. L’activité emploie des outils (Tools) pour assister ou
mettre en œuvre l’activité. Toute activité est exécutée par un agent via son Rôle (Role), lequel
identifie le responsable de l’activité. Finalement, chaque activité a un but (Direction) associé, lequel
représente les objectifs de l’activité.
2.4.3.8 Interopérabilité par les données : Langage de traduction commun.
Nous avons dit précédemment que le schéma conceptuel servait de base pour la représentation d’un
procédé dans différents langages de modélisation. Dans un environnement coopératif chaque
composant peut offrir un langage de modélisation différent pour décrire l’aspect du procédé qui lui
correspond.
Le but de l’interopérabilité syntaxique est de minimiser les conversions de données entre deux
composants souhaitant échanger des définitions de procédés. L’approche par modèle canonique a
été dégagée des différents travaux d’interopérabilité syntaxique.
Cette approche préconise une représentation canonique et considère un convertisseur du formalisme
du composant vers le formalisme canonique et vice versa. Généralement, les critères de choix d’un tel
langage dépendent de la nature du domaine et de l’objectif à atteindre [Ami99].
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 13
Figure 6 : Modèle par langage canonique
Des exemples de langages basés sur le modèle canonique sont PIF et WPDL.
PIF (Process Interchange Format)
Le PIF a commencé à se développer en octobre de 1993 par un groupe de travail comprenant des
représentants de plusieurs universités et de sociétés de développement. L’objectif principal est d’offrir
des formats et des schémas standards pour permettre l’échange automatique de représentations de
procédés entre des systèmes hétérogènes [LGJ+98].
PIF est basé sur un modèle objet. Il inclut un noyau de type objet (classe) prédéfini représentant les
activités, les acteurs et les ressources. PIF permet à des groupes de travail de définir des extensions
locales au modèle à savoir, de nouvelles classes ou nouveaux attributs.
WPDL (Workflow Process Langage)
Le WPDL a été défini par la coalition du workflow (WfMC). Il s’agit d’un langage standard qui supporte
la transmission des définitions de procédés entre différents systèmes workflow [WfMC98]. Le langage
est basé sur un méta – modèle (modèle d’objets). L’objectif est de rendre possible l’échange de
modèles et de documentation entre des systèmes hétérogènes provenant de vendeurs différents.
2.4.4 Interopérabilité par le contrôle.
L’interopérabilité au niveau exécution, peut être défini comme la capacité pour un serveur d’exécution
de communiquer avec un autre afin d'exécuter ensemble un procédé. Rappelons que dans le contexte
des composants, l’exécution d’un procédé est répartie entre un ensemble de composants autonomes
et chaque composant peut faire appel à d’autres pour interagir. Un mécanisme qui permet
l’interopérabilité est dit d'intégration par le contrôle.
L’objectif de l’intégration par le contrôle est de permettre à des systèmes hétérogènes de
communiquer entre eux et de faire varier leurs comportements en fonction des informations recueillies
à travers ces communications [Was90]. Deux types de contrôles peuvent être distingués [Boy94] : la
notification de l’information et la demande de services.
La notification d’information permet à un système d’émettre une information (souvent sous forme
de messages ou d’événements) vers d’autres systèmes. Les notifications se font généralement au
travers d’un système de messagerie ou de middleware tel que Corba.
La demande de services permet à un système de faire appel à un service (généralement un
service est une méthode) offert par un autre système. Ce type d’interaction se fait souvent à
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 14
travers des interfaces qui contiennent l’ensemble des services que le composant veut rendre
visibles.
Les travaux réalisés au niveau d’interopérabilité d’exécution sont nombreux, nous allons en décrire
quelques-uns. Nous présentons d’abord la spécification de WAPI 4 fournie par la WfMC, notre
intention est d'identifier les besoins qui conduisent à supporter l’interopérabilité d’exécution. Après
nous présenterons trois protocoles de communication proposés par différents groups de recherche
afin de supporter l’interopérabilité entre les serveurs d’exécution : SWAP, Jflow et Wf - XML
2.4.4.1 WAPI4 (Workflow Application Programming Interface/Interchange 4)
WAPI4 est la spécification abstraite défiant les fonctionnalités nécessaires pour supporter
l’interopérabilité entre les différents moteurs de procédés.
Figure 7 : Interopérabilité par control (WAPI 4) [WfMC2-1]
Le but est de définir un standard permettant de passer des items de travail (instances des procédés
ou des activités) d’un système workflow à un autre système différent.
Deux ou plusieurs moteurs workflow peuvent communiquer pour réaliser : la sélection, l’instantiation
et l’exécution d’une définition de procédé connu, et (optionnellement) retourner les résultats sur
l’exécution de la définition du procédé. On peut distinguer deux modèles de communication :
Communication synchrone : Où une requête demande une réponse « immédiate », elle nécessite
une connexion directe via le protocole TCP/IP.
Communication asynchrone : Où la réponse peut arriver quelques temps après la requête (de
l’ordre de quelques jours, semaines ou mois). La communication peut être réalisée en utilisant des
mécanismes de type « stocker– transférer » tel que la messagerie électronique.
Les types de messages pour effectuer l’interopérabilité.
Un message est la représentation abstraite de l’information qui doit être passée d’un moteur
d’exécution à l’autre, afin que ce dernier puisse réaliser les opérations décrites dans le message. Un
message contient : des opérations et leurs paramètres respectifs ; et l’information additionnelle pour
que ces opérations puissent être exécutées. Il y a trois classes de messages : requête, réponse et
notification.
Un message « requête » est utilisé quand un moteur d’exécution A a besoin de déclencher une
activité ou un sous procédé dans un moteur B. A tout message de requête correspond un message
« réponse » qui retourne le résultat de succès ou d’échec de la demande. Le message notification
permet au moteur B d’informer sur les événements significatifs qui arrivent pendant l’exécution du
sous procédé. Tout message « notification » aura un message de réponse informant que le moteur A
a reçu la notification.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 15
Les modèles d’interopérabilité par contrôle supportés sont :
•
Procédés chaînés. Ce modèle considère qu’un procédé qui est exécuté dans le moteur de
procédé A, déclenche la création et l’exécution d'un sous–procédé dans le moteur B. Pendant
l’exécution du sous–procédé, le moteur A peut finir ou continuer l’exécution de son propre
procédé.
Figure 8 : Modèle de procédés chaînés
•
Sous–procédés imbriqué. Ce modèle considère qu’un procédé en cours d’exécution dans un
moteur d’exécution A provoque la création et l’exécution d’un sous–procédé dans un moteur B.
Ainsi, le premier moteur attend la terminaison du deuxième moteur avant de continuer sa propre
exécution.
Figure 9 : Modèle de procédés imbriqués
•
Parallèle synchronisé. Ce modèle considère que deux moteurs d’exécution sont en train de
dérouler chacun des procédés différents, et que chaque définition de procédé possède un rendezvous spécifié. Une fois que tout les deux ont atteint leur point rendez-vous, il y a des échanges
entre les moteurs avant de continuer l’exécution de leurs procédés respectifs.
Figure 10 : Modèle de procédé parallèle
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 16
Pour cette spécification abstraite d’interopérabilité par contrôle nous avons trouvé trois protocoles de
communication proposés : SWAP lequel travaille sur HTTP, jFlow travaillant sur CORBA et une
proposition récente : Wf-XML généralisation de SWAP et Jflow, car il reste indépendant du protocole
de communication.
2.4.4.2 SWAP
En 1998 le protocole SWAP (Simple Workflow Acces Protocole) à été introduit par Netscape, HP et
Sun comme une solution simple destinée à supporter l’interopérabilité entre serveurs d’exécution
workflow. La spécification d’interopérabilité définit un standard de communication basé sur le
protocole HTTP, et utilise XML pour la structure d ’échange de données.
Les buts du SWAP sont d’intégrer des fournisseurs procédés ; de fournir des services asynchrones, à
travers Internet ou de réseaux Intranet ; et de subvenir aux besoins de leurs interactions. Le protocole
SWAP offre un chemin pour commencer une instance d’un service générique asynchrone. Il offre
aussi, des mécanismes pour contrôler et diriger l’instance; et un autre mécanisme pour notifier quand
elle est terminée.
Par exemple une demande asynchrone est faite pour l’exécution d’un service. Des demandes
additionnelles (synchrones ou bien asynchrones) peuvent être faites durant l ’exécution du service
pour contrôler l’avancement.
2.4.4.3 Jflow
En 1998 l’OMG (Object Management Group) a défini un protocole d’interopérabilité workflow nommé
jFlow en utilisant le protocole CORBA. Le standard CORBA établit la façon dont les objets distribués
peuvent participer à un workflow au moyen d’invocations par un ORB (Object Request Broker). JFlow
support l’interaction des procédés workflow pendant l’exécution, en utilisant des mécanismes de
contrôle, de monitoring et de distribution des procédés.
Le but de l’OMG est de créer un framework architectural pour des applications distribuées basées sur
des spécifications supportant des objets distribués. Le but inclut la réutilisation, la portabilité et
l’interopérabilité de composants logiciels dans des environnements hétérogènes [OMG98]. Pour
atteindre ce but, l’OMG adopte des spécifications de protocoles et d’interfaces, basés sur la
technologie objet commercialement disponible.
Wf-XML est un protocole plus général que SWAP et jFlow. Il reste indépendant des protocoles de
communication HTTP et CORBA.
2.4.4.4 Wf - XML
Wf-XML est la spécification d’un langage XML (eXtensible Markup Langage) désigné pour modéliser
le transfert de données demandé par la spécification d’interopérabilité WfMC. Ce langage sera utilisé
comme base pour les implémentations des fonctionnalités de l’interface 4 de WfMC. Wf-XML supporte
deux types d’interopérabilité : workflow simple chaîne et workflows imbriqués.
Le standard d’interopérabilité [WfMC2-2] permet l’interaction entre fournisseurs et demandeurs de
services workflow (lesquels peuvent ou non être des services d’exécution workflow). Il définit des
opérations permettant à des fournisseurs de retourner des rapports sur l’état d’un procédé éloigné.
Wf-XML définit le format de la requête qu’un demandeur de services A envoie au fournisseur de
service B pour contrôler et surveiller l’exécution d’un procédé. Le fournisseur répond à chaque
requête avec une réponse assortie. Alors, le fournisseur B renseignera A sur les changements d’état
d’un procédé, qui résultent des événements dans le domaine de B [WfMC2-1].
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 17
Les caractéristiques de la spécification Wf-XML:
1. Le corps du protocole est structuré et « bien formé ». Il est constitué de structures de messages
contenant des données et des entêtes.
2. L’utilisation de messages synchrones et asynchrones.
3. L’indépendance du mécanisme de transport. La spécification Wf-XML définit le contenu des
données nécessaires pour la communication effective entre deux moteurs d’exécution. La
méthode de transport dépend de la solution du fournisseur. Quelques exemples de méthodes de
transport : HTTP, E-mail, CORBA, IIOP, COM/DCOM ou des systèmes de queue de messages.
4. Contrat d’interopérabilité. Typiquement le contrat d’interopérabilité s’adresse au sujet de
connectivité, sécurité et le format de données qui sont associés à un procédé workflow spécifique.
Dans le Wf-XML, le contrat définit clairement les besoins de chaque vendeur.
5. Facilite l’extensibilité grâce à l’utilisation du XML, et grâce à l’utilisation d’un contexte de donnés
dynamique.
Le concept d’interopérabilité entre systèmes workflow peut être étendu pour couvrir des interactions
entre d’autres types de systèmes et services dits « services génériques » et peuvent représenter des
ressources identifiables avec qui arrivent des interactions.
L’interopérabilité est menée à bien par des fonctions individuelles dites « opérations ». Chaque
opération peut être passée comme un ensemble de paramètres en utilisant un message « requête » ;
de la même façon, ses résultats peuvent être retournées comme un ensemble de paramètres en
utilisant un message « réponse ». Les opérations sont classifiées dans trois groupes, afin de les
identifier en accord à leur contexte, à savoir : le ProcessDefinition, le ProcessInstance et l'Observer.
Les groupes d’opérations et leurs relations sont illustrées par la figure suivante.
Figure 11 : Modèle de ressource logique
Le processDefinition est le groupe fondamental des opérations nécessaires pour l’interaction de
ressources. Il représente la description de fonctions plus basiques, et il est la ressource par
laquelle des instances d’un service seront crées.
Le groupe ProcessInstance représente l’exécution réelle d’un procédé défini. Chaque instance de
procédé aura son propre identificateur séparé de l’identificateur de sa définition.
Le groupe Observer fournit les moyens par lesquels l’instance d’un procédé peut communiquer
son terminaison.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 18
Wf XML a spécifié les opérations suivantes :
CreateProcessInstance
Process
Definition
X
Process
Instance
Observer
Description
Crée une nouvelle instance d’un procédé particulier
laquelle sera contrôlée par le fournisseur de service.
GetProcessInstanceData
X
Obtient les valeurs de toues les propriétés définies pour
une instance du procédé.
ChangeProcessInstanceState
X
Change l’état de l’instance du procédé.
ProcessInstanceSetChanged
X
Renseigne sur les changements d’état closed.completed
et closed.abnormalCompleted.
2.4.4.5 Le Modèle « Mission » : utilisation du protocole Wf-XML.
Nous allons présenter le modèle mission comme un exemple de la démarche du protocole Wf-XML.
La « mission » a par but atteindre l’interopérabilité entre les différents composants procédés, en
utilisant le modèle client - serveur et le protocole Wf-XML [WfMC2-1], sur HTTP.
Description.
La mission commence quand un serveur reçoit une requête Wf-XML avec les paramètres nécessaires
dans la démarche d’une opération, tel que « CréerComposant » ; et elle finit quand le client reçoit une
réponse avec les résultats de l’opération demandé. On peut distinguer deux types de requêtes :
synchrone et asynchrone.
La requête synchrone. La réponse à une requête est presque immédiate, quelques secondes ou
minutes.
La requête asynchrone. La réponse à une requête est plus tardive que précédemment, quelques
heures, jours ou mois.
Il y a trois types d'opérations qui définissent la nature de la requête. Une mission doit avoir au
minimum un des types d’opération suivants:
Enregistrer : pour réaliser des requêtes impliquant des actions et pour retourner des résultats.
Rapporter : pour demander la progression et le résultat d’une requête finie. Cette opération est
utile quand un client invoque une mission incluant des centaines de requêtes.
Contrôler : pour annuler, arrêter ou reprendre l’exécution d’une requête.
Les opérations de nature synchrones sont constituées en deux phases : La phase de « requête » et la
phase de « réponse ». Dans la figure les messages No. 10 et No. 11.
Les opérations de nature asynchrones sont constituées en quatre phases : la « requête » tel que le
message No. 6, la phase de « Reconnaissance » sortante tel que le message No. 7, la phase de
« Réponse » tel que le message No. 8, et « Reconnaissance » entrante tel que le message No. 9.
On peut distinguer deux types de directions : Sortant et entrant. Quand le client A fait une requête au
serveur B, la direction « sortant » indique que le message est envoyé du client A au serveur B ;
pendant que la direction « entrant » indique que le message est envoie du serveur B au client A
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 19
Figure 12 : Modèle pour une mission
1. Le gestionnaire de requêtes A ressemble toutes les requêtes Wf-XML. Il fait un script de
commandes avec les requêtes nombres.
2. Le gestionnaire de requêtes A fournit un identificateur à la mission « IdMission »
3. Le gestionnaire de requêtes A envoie le script au gestionnaire de requêtes B, à travers d’un
message Enregistrer.requête. Ce message contient : L'« IdMission », une étiquette contenant
l’URL du gestionnaire de requêtes A, et une étiquette <Asynchrone> indiquant que l’opération est
asynchrone.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 20
4. Le gestionnaire de requêtes B retourne un message de « Enregistres.reconnaissance » avec
l'« IdMission ».
5. Le gestionnaire de requêtes B exécute chacune des requêtes trouvées dans le script.
6. Quand le gestionnaire de requêtes A veut connaître la progression et le résultat de toute requête
finie, il envoie un message Rapporter.requête. Ce message contient : Le « IdMission » passé
dans le pas 3, et une étiquette <Asynchrone> indiquant que l’opération sera menée à bien de
façon asynchrone.
7. Le gestionnaire de requêtes B retourne un message de « Rapporter.reconnaissance » avec
l'« IdMission ».
8. Le gestionnaire de requêtes B retourne le message réponse de l'opération Rapporter
« Rapporter.réponse », avec la progression et le résultat.
9. Le gestionnaire de requêtes A retourne un message de « Rapporter.reconnaissance » avec
l'« IdMission ».
10. Quand le gestionnaire de requêtes A veut déclencher une action sur l’exécution du composant
procédé, il envoie un message Control.requête. Ce message contient : L'« IdMission » et une
étiquette <Synchrone> indiquant que l’opération sera menée à bien de façon synchrone.
11. Le gestionnaire de requêtes B envoi un message réponse de l'opération Contrôle
« Control.réponse ».
12. Lorsque que toutes les requêtes dans le script sont finies, un message réponse de l'opération
enregistrer « Enregistrer.réponse » est envoyé vers le gestionnaire de requêtes A. Le message
peut inclure des exceptions sur les requêtes qui ont présenté des pannes pendant leur exécution.
13. Le gestionnaire de requêtes A retourne un message de « reconnaissances » par le résultat.
2.4.4.6 OZ
OZ [BK95] est un système développé dans le but de permettre l’interopérabilité entre des
environnements homogènes (les PSEE’s pris en compte par l’environnement sont identiques),
autonomes et géographiquement distribués. L’approche utilisée consiste à répartir l’exécution du
modèle de procédé sur des sites différents en fonction de la disponibilité des ressources nécessaires
à son exécution.
Oz utilise la métaphore « alliance internationale » pour gérer la communication entre PSEE’s
décentralisés. La Métaphore implique deux concepts : traités et sommets. Les sites PSEE’s sont
interconnectés, pour établir des traités. Un traité est un sous procédé partagé par plusieurs PSEE’s.
La réalisation d’une tâche multi-site définie dans un traité est un sommet. Seulement les tâches
spécifiées dans le traité peuvent accéder aux données des sites en accord avec les restrictions
définies dans le traité. Les sommets permettent l’exécution d’activités multi-sites globales et
partagées.
2.4.4.7 Process wall
Process Wall [Hei92] est un moteur de procédé basé sur un serveur d’états. Il a été développé par
l’Université du Colarado. Il permet le stockage des états d’un procédé et offre des opérations
manipulant la structure des états.
Une caractéristique importante du Process Wall est la séparation du formalisme décrivant le code de
procédé du formalisme décrivant l’état du procédé. Cette séparation permet l’interopérabilité entre
différents formalismes de code (langages de procédés) car ils adhérent à la structure d’un état
commun.
L’architecture du serveur d’état est de type client – serveur. Les clients hétérogènes, manipulent le
serveur d ’état du procédé central. La communication entre le client et le serveur est bidirectionnelle et
utilise RPC (Remote–Procedure Call). Un client manipule une instance de procédé partagé et reçoit
les notifications des mises à jour de l’instance.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 21
2.4.4.8 APEL.
APEL [EAD98] est un environnement centré procédé pour la modélisation et l’exécution de procédés.
Il est basé sur une architecture dénommé « fédération de composants ».
L’idée consiste à partager le modèle global d’un procédé dans un nombre d’aspects (activités d’un
procédé) indépendants; chacun des aspects seront réalisés par un composant spécifique. Tous les
composants dans cet environnement sont des Process (Sensitive) Support Systems1 (PSS)
hétérogènes à niveau représentation ; cependant ils partagent les mêmes concepts de procédés
fondamentaux. Bien qu’eux sont hétérogènes APEL essaye de les faire interopérer, pour mener à
bien le procédé global.
L’interopérabilité est supporté au niveau de la modélisation et au niveau de l’abstraction
(interopérabilité sémantique) ; elle est de plus renforcée en utilisant les moteurs procédés distribués et
hétérogènes au niveau de l’exécution.
APEL utilise le paradigme d’interopérabilité dit « ultra libéral ». Ici, les composants réagissent par
notification d’événements. Les principales caractéristiques:
Les composants sont libres de choisir les événements auxquels ils souscrivent.
Les composants sont libres de décider comment réagir quand un événement arrive.
Il n’y a pas de contrôle sur les actions qu’un composant peut effectuer dans un serveur de
procédé.
2.4.5 Approche par composant pour la modélisation des procédés
Nous nous sommes intéressés plus particulièrement aux approches de modélisation de procédés à
base de composants. Ainsi, le contrôle et l’intégration des données sont mis en œuvre à partir d ’un
modèle basé composants. Alors, le procédé est vu comme un ensemble de composants inter
opérants. Les dépendances de données sont réduites en encapsulant les composants derrière des
interfaces bien définies. Cela permet d’éliminer le besoin de traduction entre langages de procédés.
Les systèmes suivants illustrent une telle approche : Endeavors, Pynode, SPMS et OPC
2.4.5.1 Endeavors.
Le système Endeavors [BT96] est un système distribué destiné à assister les procédés. Le système
est basé sur la combinaison d’une approche homogène au niveau de la modélisation et d’une
approche hétérogène à l’exécution.
Un procédé peut être décrit à travers un ensemble de modèles (composants) en utilisant le même
formalisme et les mêmes concepts. Chaque modèle est interprété par un ensemble de « handlers ».
L’implémentation en Java de ces « handlers » permet de les porter sur des plate-formes hétérogènes.
Bien qu’Endeavors supporte l’interopérabilité au niveau exécution, l’interopérabilité au niveau
sémantique et syntaxique n’a pas été abordé.
2.4.5.2 Pynode
La principale motivation de Pynode [ABC94], est de développer un environnement interactif et
intégré, supportant des procédés. L’idée consiste à éliminer les aspects monolithiques des
formalismes de procédés, et ainsi fournir des possibilités de réutilisation et d’intégration de
représentations de procédés hétérogènes.
1
Un PSS est un système dans lequel un procédé peut être modelé.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 22
Pynode propose la construction de composants procédés aboutissant à la production d’artefacts
procédés. Un composant procédé est essentiellement un fragment de modèle de procédé écrit dans
un langage de modélisation de procédé. Les composants sont dynamiquement combinés pour
construire un modèle de procédé à travers des interfaces et des ports de connexions.
Les types de ports de l’interface de connexion donnent des relations d’entrée, de sortie et de
synchronisation pour permettre à des composants d’interagir dynamiquement. Les types de ports de
l’interface d’échange permettent aux composants d’échanger des informations (lecture/écriture) de
manière asynchrone durant l’exécution.
L’exécution de procédés est supportée via les vues d’exécution. Une vue d’exécution définit une
collection de composants et de relations de composition. La composition dynamique de composants
via les vues d’exécution avec l’exécution des composants définit l’exécution de procédés.
2.4.5.3 SPMS. Software Process Management System.
Dans SPMS [KTL+92] les composants sont des collections nommées de fragments de procédés
organisés en réseau. Un composant procédé représente un fragment de procédé à un niveau donné
de granularité et complexité, et qui a été élaboré avec suffisamment de détails nécessaires à son
exécution. Les modèles de procédés sont construits à partir d’une hiérarchie de et un réseau de flots
d’informations entre les composants.
Les auteurs décrivent les objectifs d’une approche à base de composants sans décrire la machinerie
de support. Aucune définition rigoureuse du composant procédé n’est fournie ni une description sur la
manière d’implémenter les composants. En général le terme composant est utilisé pour décrire des
fragments de procédés réutilisables. Cependant ce système a été présenté en 1992 avant le boom
courant sur le développement de logiciel à base de composants.
2.4.5.4 OPC. Open Process Components Framework.
L’OPC [GLK97] propose un environnement pour la production de procédés à base de composants.
Dans cette approche, les modèles de procédés sont construits comme un ensemble de composants
qui interagissent à travers des interfaces bien définies. Il propose aussi une infrastructure, pour
l’interopérabilité et la réutilisation de composants procédés hétérogènes, construit selon trois niveaux
d’abstraction.
1. Le niveau méta–modèle qui identifie les entités fondamentales du procédé et leurs relations.
2. La Machine d’états–finis. Représentation du comportement des entités du procédé
3. Un framework orienté objet lié au formalisme de représentation du procédé et à son domaine
d’application.
La figure illustre un exemple sur l’hiérarchie de classes, séparés en trois niveaux, pour le entité
procédé.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 23
Figure 13 : Hiérarchie de classes pour l'entité "procédé"
Le niveau de base dit « framework » qui capture les abstractions de base des entités du procédé.
Les classes et les interfaces de la couche framework servent comme ‘contrat’ minimum que tout
composant doit supporter.
Le niveau de représentation capture les abstraction des formalismes spécifiques. Elle encapsule la
sémantique d’un langage de modélisation du procédé donné.
Le niveau domaine incorpore aux classes les comportements de domaine spécifique à partir
desquelles les composants d’exécution sont dérivés. Ici est possible de contrôler les interactions
entre les composants de type particulier.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 24
2.5 SYNTHESE
Dans ce chapitre nous avons présenté différentes techniques d’interopérabilité décrits dans le
domaine des procédés.
Ces techniques ont évolués dans le temps. La première est l’interopérabilité par échange de données,
qui est caractérisée par :
L'unification des concepts et des terminologies relatives au domaine des procédés.
La proposition d’un modèle générique contenant les éléments et leurs relations afin de rester
indépendant au formalisme de représentation du procédé.
La création d’un formalisme canonique pour l’échange automatique de représentations de
procédés entre des systèmes hétérogènes.
La deuxième technique est l’interopérabilité par le contrôle, dont le but est la communication entre des
moteurs de procédés hétérogènes2, afin qu’ils exécutent ensemble un procédé. Plusieurs protocoles
d’interopérabilité ont été proposés, le plus récent, étant Wf-XML qui est indépendant du mécanisme
de transport (HTTP et CORBA).
La troisième technique est l’interopérabilité par composant, dont les principales caractéristiques sont:
Le contrôle et l’intégration de données sont mis en œuvre à partir d’un modèle à base de
composants.
Les dépendances de données sont réduites en capsulant les composants par des interfaces bien
définies. Ceci permet d’éliminant la traduction entre les différents formalismes de représentation.
Les bénéfices attendus par cette dernière approche sont :
La réutilisation de modèles de procédés (composants) autonomes et fonctionnels.
L'interopérabilité entre composants hétérogènes.
L'évolution dynamique du modèle par composant.
Nous allons proposer dans le chapitre suivant un framework qui couvre les aspects décrits ci-dessus.
Ce framework pourra être étendu afin de répondre à des besoins particuliers pour certaines
applications.
2
Chaque moteur procédé exécute un formalisme particulier
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 25
CHAPITRE 3. Notre Approche.
3.1 Introduction.
Dans le domaine de la modélisation des procédés, l’approche par composants vise à construire de
nouveaux procédés de façon coopérative, dans un environnement distribué et hétérogène. Pour qu’un
système puisse supporter de tels besoins, il doit compter sur une architecture physique appropriée.
Comme Les composants sont hétérogènes, on doit implémenter des mécanismes supportant les
niveaux d’interopérabilité décrits dans l’état de l’art. La figure 14 illustre le scénario pour la
construction et l'exécution du procédé « conception d’un logiciel ».
Figure 14 : Conception d'un procédé par composants
Nous allons appliquer la philosophie des objets distribués et des composants pour le développement
des procédés. Au cours de ce chapitre, nous présenterons les concepts de base de notre proposition.
Après, nous menerons à bien le développement d’un framework orienté objet pour des composants
procédés ; il constituera le moteur d’ un environnement centré procédé permettant la modélisation de
procédés par composants. Finalement, nous proposerons un modèle d’interopérabilité par contrôle
des composants procédés.
3.2 Concepts.
3.2.1 Modèle.
Un modèle est la représentation abstraite d’un procédé dans un formalisme donné, qui permet de
comprendre et de simuler. Ce modèle est en suite spécialisé pour obtenir une instance pouvant être
exécutée par un environnement centré procédé.
3.2.2 Composant procédé.
Un composant procédé est l’instance d’un procédé, dérivée d’un modèle stocké dans une base de
données. Le composant encapsule sa représentation et fournit une interface simple pour établir la
communication avec l’extérieur.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 26
Si on approfondit le concept du procédé, un composant correspond à une activité ou à un sous
procédé qui contribue à la réalisation d’un but spécifique dans le procédé. Il vise à générer ou à
modifier un ensemble de produits.
3.2.3 Modélisation basée composants.
Le but de la modélisation basée composant est la construction de modèles plus complexes, à travers
la réutilisation de modèles consistants et fonctionnels. Chacun d’eux constitue un composant procédé.
Voici les points à considérer pour la modélisation par composants :
Construire une base d’information sur les composants réutilisables
Déterminer la fonction de chaque composant dans le nouveau modèle procédé
Composition dynamique des composants hétérogènes
3.2.4 L’exécution basée composants procédés.
Notre vision concernant le support de procédés est un environnement où deux ou plusieurs
composants hétérogènes exécutent et coopèrent de façon distribuée. Cet environnement doit être
capable de rendre l’hétérogénéité et la distribution des composants transparentes. Ainsi, par exemple,
le rôle charge de la modélisation, voit les composant comme des boîtes noires, qu’il utilise pour créer
un nouveau modèle.
3.2.5 Le vocabulaire commun.
La terminologie utilisée dans notre approche est inspirée de [CFF+92]. Ce vocabulaire commun sera
exprimé à travers d’un schéma conceptuel dans le prochain point.
Composant procédé : Il correspond à une activité ou à un sous procédé qui contribue à la
réalisation d’un but dans le procédé. Il vise à générer ou à modifier un ensemble de produits.
Produit, le résultat d’un procédé : Il correspond à des objets tels que des documents, codes ou
services.
Agent : C’est un performeur d’un procédé, cela peut être un humain ou un outil logiciel. Un agent
est caractérisé par les propriétés de son rôle.
Rôle : Décrit l’ensemble de responsabilités, droits et compétences d’un agent dans le contexte des
activités où il intervient.
3.2.6 Le schéma conceptuel procédé.
Un schéma conceptuel procédé rassemble toute l’information des entités qui appartiennent au
procédé, dès que des relations existent entre elles. Le schéma conceptuel pour notre environnement
procédés est illustré par la figure suivante.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 27
EntitéProcédé
Agent
can_perform
agentId : String
1..*
name : String 1..*
ProcessComponet
sieExécution : String
nomProcédé : String
dateCreation : Date
durée : Date
sujet : String
description : String
Role
roleId : String
roleName : enumerate
1..*
assigned_to
1..*
Role( )
~Role( )
AffectRole( )
has_input
0..*
PropriétésComposant( )
TerminerComposant( )
Suspendre( )
1..*
RéprendreComposant( )
AnnulerComposant( )
AttacherObservateur( )
DétacherObservateur( )
ListEvénements( )
Notifier( )
1..*
Produit
produitId : String
produitName : String
version : String
1..*
TransferProduit( )
has_output
has_sub
Figure 15 : Schéma conceptuel
3.2.7 Framework orienté objet
Un framework est un ensemble de classes qui coopèrent et permettent des conceptions réutilisables.
Il apporte de nombreuses fonctionnalités et des relations entre classes d’objets, ainsi qu’une
infrastructure au développeur. On spécialise un framework afin qu’il répond aux caractéristiques d’une
application, par création de sous classes spécifiques à partir des classes abstraites du framework
[GHJ99].
3.2.8 L’état procédé.
L’état procédé correspond au comportement des entités d’un procédé. Le changement d’état est
déclenché par des événements produits quand des méthodes sont exécutées. Par exemple,
l’exécution de la méthode ChangeEtatProcédé(Suspendre) produit l’événement :
( :Composant Procédé, suspendu)
et en suite, il produit un changement d’état de l’entité ComposantProcédé.
3.2.9 Classement hiérarchique
Nous proposons un classement hiérarchique. Il consiste à structurer la base de composants
réutilisables par domaine d’application. Par exemple :
Analyse
Dessin
Implémentation
Test
Chaque domaine d’application peut être raffiné en sous-domaines. Par exemple on peut raffiner
Implémentation en :
Les structures de données
Les composant graphiques
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 28
Pour entrer un composant dans la base, on détermine à quel domaine il correspond, puis à quel sousdomaine, et ainsi de suite jusqu'à arriver à l’emplacement qui lui convient.
3.2.10 Architecture de l’Environnement Centré Procédé.
L’architecture correspond à un ensemble des outils nécessaires pour l’exécution d’un procédé. Notre
architecture, est une extension de l’architecture PSEE traité dans l’état de l’art. De telle sorte qu’elle
supporte l’hétérogénéité et la distribution des composants. L’architecture est donc formée par :
L’Interface permettant à l’utilisateur de regarder le développement d’un procédé. L’information
fournie par celle-ci, doit répondre en adéquation avec les besoins inhérents au rôle de l’utilisateur.
Les moteurs d’exécution, chacun étant spécifique à un formalisme donné, regroupent les
différents modules de la définition d’un procédé et les exécutent.
La base d’objets contient la définition des procédés stockés de façon persistante. Il y aura un
gestionnaire de la base d’objets responsable de la cohérence et de la disponibilité des
informations nécessaire aux autres composants de l’environnement.
Le serveur des communications, suppose que des interfaces de communication soient créées
pour les composants et que des protocoles de communication soient établis pour définir les
modalités d’utilisation des services disponibles.
Mécanismes d’interaction.
•
Evénement. Un événement est une action instantanée et non persistante, qui apparaît
pendant l’exécution d’une instance d’un certain procédé. Un événement est levé pour indiquer
l’état actuel de l’instance du procédé.
•
Service d’événements. Au temps d’exécution, le serveur d’événements capture des
événements provenant de l’exécution des composants ; et en suite, il fait la notification à des
composants abonnés à tels événements.
3.3 Modèle pour des Composants procédés.
Le modèle que nous proposons pour des composants procédés, est représenté par la notation
UML[Mul97]. La démarche adoptée consiste à considérer un modèle de procédé, représenté dans un
formalisme quelconque, comme un composant réutilisable, qui fournit une interface simple à des
concepteur de procédés.
Dans ce qui suit, nous allons décrire les diagrammes de modélisation, en commençant par les cas
d’utilisation, puis les diagrammes de séquence, le diagramme d’état et finalement le diagramme de
classes.
3.3.1 Les cas d’utilisation.
A travers la présentation des cas d’utilisation nous mettons en évidence les rôles qu’implique
l’introduction d’un composant procédé dans la modélisation d’un procédé. Nous identifions trois rôles
principaux : celui chargé de la définition d’un composant procédé, celui chargé de l’exécution et celui
chargé de l’observation.
Le premier cas d’utilisation correspond au rôle chargé de la définition des composants procédés au
sein de la modélisation d’un procédé. Il va définir chaque composant procédé, dont les fonctionnalités
et les propriétés sont similaires à un autre, en appliquant les changements à une définition existant
(dans une base de données) de composant. Le chargé de la définition va spécifier la composition des
composants, i.e. comment des composant doivent interagir avec des autres composant procédés.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 29
Le deuxième cas d’utilisation correspond au rôle chargé de l’exécution du composant procédé. Une
fois que le procédé est déclenché, chaque composant sera exécuté dans l’ordre et sous les conditions
définies par celui chargé de la définition.
Le dernier cas d’utilisation est relatif au rôle de celui chargé de l’observation. Les besoins de ce type
d’acteur sont de visualiser l’information concernant les composants qui l’intéressent, en train de
s’exécuter (combien de temps il dispose pour le mener à bien, si le procédé a fini, dans quel état se
trouve-t-il, etc.).
Pour eux la distribution des composants est transparente. Ils les observent et les contrôlent comme si
les composants étaient dans son propre site. Les manipulations de base définis pour les composants
procédés peuvent être résumés de la manière suivante :
1. Définition d’un composant procédé selon le méta modèle.
2. Définir un composant procédé, dont les fonctionnalités et les propriétés sont similaires à un autre,
en appliquant les changements à une définition existante de composant procédé.
3. Spécifier la composition. Comment les composants procédés interagissent avec d’autres
composants procédés.
4. Instancier un composant procédé en spécifiant les liaisons nécessaires pour lui permettre d’être
exécuté.
5. Exécuter un composant procédé.
La figure suivante illustre les différents cas d’utilisation décrits auparavant.
Charge de la
définition
Créer composant
procédé
utilise
Charge de
l'observation
Regarder course
de l'exécution
Exécuter composant
procédé
Charge de
l'exécution
Contrôler l'exécution
Figure 16 : Les cas d'utilisation
3.3.2 Scénarios principaux identifiés au travers des cas d’utilisation.
3.3.2.1 Créer un composant procédé :
1. Le rôle chargé de la définition demande la liste de composants procédés à la base de données.
2. La base de données affiche la liste des composants (à travers une interface de dialogue)
disponibles dans la bibliothèque de composants procédés.
3. Le rôle chargé de la définition d’un procédé sélectionne les composants procédés à partir de
fabriques (factory’s) composants concrets.
4. L’objet FactoryComposant crée un composant procédé concret.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 30
5. La factory est responsable de la création du diagramme de transition d’état du composant en
utilisant le FactoryDiagrammeEtat.
6. Le FactoryDiagrammeEtat crée le DiagrammeEtatComposant.
: Charge de la
définition
: BaseDonnées
: Factory
Composant
: Composant
Procédé
: Factory
DiagrammeEtat
: DiagrammeEtat
Composant
1: Démande liste de
2: Liste de composants
3. Création des composants
4. CréerComposant ( )
5. appelle
6. créé
Figure 17 Diagramme de séquences : création d’un composant procédé
Les objets FactoryComposant deviennent les fabriques de composants procédés. Ils correspondent à
des modèles des composants procédés enregistrés dans une base de données. Chaque modèle a un
formalisme de représentation dépendant de l'environnement centré procédé sur lequel il a été créé.
3.3.2.2 Exécuter un composant procédé
1. Le rôle chargé de l’exécution demande l’instanciation et l’exécution du composant procédé
2. Avec l’instanciation commence proprement l’exécution du composant procédé.
3. Un observateur global est déclenché pour observer le développement de l’exécution pour ce
composant.
: Charge de
l'exécution
: Composant
Procédé
: Observateur
Global
1: Instancier et exécuter
2: Exécution
3: déclencher
Figure 18 Diagramme de séquence : Exécution d’un composant procédé
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 31
3.3.2.3 Contrôler l’exécution d’un composant procédé
1. Le rôle chargé de l’exécution active l’observateur global correspondant, avec la méthode
PropriétésObservateur().
2. L’observateur global affiche les propriétés du composant et des sous composants fils, enregistrés
jusqu'à présent.
3. Le rôle chargé de l’exécution demande le changement d’état du composant procédé au travers de
l’observateur global.
4. L’observateur global exécute par exemple, la méthode Suspendre().
5. Quand la méthode s’exécute, il se produit un changement d’état.
6. Le composant procédé notifie le changement d’état à son propre observateurs global et à ceux
observateurs externes intéresses par tel événement.
7. La méthode MisAJour actualise les propriétés enregistrées par l'observateur global.
8. L’observateur global affiche les propriétés plus récentes du composant procédé.
: Observateur
Global
: Charge de
l'exécution
: Composant
Procédé
1. PropriétésObservateur ( )
2. propriétés
3. ChangeEtatProcédé(susprendre)
4. susprendre ( )
5. change d'état
6. Notifier ( )
7.MisAJour ( )
8. PropriétésObservateur ( )
Figure 19 Diagramme de séquence : Contrôle de l'exécution
3.3.2.4 Abonner un observateur global externe.
1. L’observateur global externe demande à être abonné à des événements via la méthode
AttacheObservateur()
2. Le composant procédé retourne la liste d’événements.
3. L’observateur sélectionne le ou les événements auxquels il veut s’abonner.
4. Validation de l’attachement pour éviter par exemple d'abonner plusieurs fois un observateur au
même événement ou bien d'abonner un observateur sans permission.
5. Si l’attachement est validé, le message de confirmation est envoyé.
6. En même temps le composant procédé fait l’attachement de l'observateur.
7. Dans l'autre cas le composant envoie un message d’erreur.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 32
: Observateur
Global
: Composant
Procédé
1. AttacheObservateur ( )
2. liste d'événements
3. Selection d'événements
4. validation
5. Message de confirmation
if attachement valid
6: attachement
7. Message d'erreur
else
Figure 20 Diagramme de séquence : Abonnement un observateur
3.3.3 Diagramme de transition d’états.
Les états qui peuvent arriver au composant procédé sont :
Figure 21 : Diagramme de transition d'états pour un composant procédé
Bien que le composant procédé a été mis en exécution, le rôle chargé de l’exécution pourra
abandonner le composant procédé
Le composant procédé passe de l’état prêt à l’état exécution avec l’arrivée de l’événement
« débutProcédé »
Si l’exécution est menée à bien sans erreurs, alors le composant sera terminé normalement.
Si pendant l’exécution, des erreurs interviennent, le rôle chargé de l’exécution peut prendre une
des deux décisions suivantes, dépendant du type d’erreur.
Suspendre le procédé pour corriger le problème et après reprendre l’exécution. Mais si ce
n'est pas possible de le corriger, alors le rôle chargé de l’exécution pourra abandonner le
procédé.
Il peut opter pour l'abandon du procédé.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 33
3.3.4 Diagramme de classes
Dans la suite, nous décrivons le framework orienté objet permettant la définition des composants
procédés selon le méta modèle ; la création des composants procédés dont les fonctionnalités et
propriétés sont similaires à un autre, en appliquant les changements à la définition d’un composant
procédé existant ; finalement l’instanciation d’un composant procédé en spécifiant les liaisons que lui
permet d’être exécuté.
appelle
0..*
appelle
0..*
Agent
agentId : String
name : String
Rôle
roleId : String
roleName : Enumerate
a_par_rôle
1..*
1..*
Role( )
~Role( )
AffectRole( )
selec_facteur_concret
0..*
1..*
DaigrammeEtatComposant
Etat : String
description
CréerComposant( )
a_DiagrammeEtat
0..*
assigné_à
assigné_à
1..*
lié_à
0..*
PropriétésObservateur( )
MiseAJour( )
ProcédéTerminé( )
ChangeEtatProcédé( )
crée
FactoryComposant
NomFacteur : String
crée
ObservateurGlobal
idObservateurGlobal : String
siteExécution : URL
InfoProcédé : Elément
FactoryDiagrammeEtat
nomEtat : String
description : String
0..*
abonne
0..*
sous
ComposantProcédé
siteExecution : URL
nomProcédé : String
dateCreation : Date
durée : Période
sujet : String
description : String
BaseDonnés
idBasedonné
stocke
0..*
PropriétésComposant( )
0..*
TerminerComposant( )
SusprendreComposant( )
< exécuter
RéprendreComposant( )
AnnulerComposant( )
AttacheObservateur( )
DetacheObservateur( )
ListEvénements( )
Ajouter( )
Modifier( )
Suprimer( )
Notifie( )
MoteurProcédé
idMoteurProcédé : String
nomMoteurProcédé : String
produit
0..*
Attribut
< a_attribut
nomAttribut : String
0..*
type : String
ComposantMetaData
nomComposant : String
a_shema
a_method
capture
Schéma
nomShema : String
0..*
0..*
Evénement
nomEvénement
AffectEtat( )
0..*
<déclenche
Méthode
nomMéthode : String
name : type = initval
Figure 22 Diagramme de classes : Framework pour des composants procédés
On peut identifier trois patrons basiques dans ce modèle: fabrication ( factory ), observateur
(observer) et façade (façade) dans le sens de Gamma [GHJ99]. Dans ce qui suit nous allons analyser
ces patrons et les classes principales qui constituent notre framework.
3.3.4.1 Le patron Fabrication.
Nous proposons un framework conçu pour la modélisation susceptible d’intégrer différents
composants procédés. Les classes basiques dans notre modèle de fabrication sont :
FactoryComposant et ComposantProcede. Ce sont deux classes abstraites, par conséquent, nous
devons en dériver des sous classes pour réaliser l’implémentation spécifique d'un composant
procédé.
Par exemple, considérons le composant procédé représenté dans le formalisme APEL. Alors
modèleAPEL devient la classe concrète de FactoryComposant et test la classe concrète de
ComposantProcédé.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 34
a_sous
0..*
ComposantProcédé
siteExecution : URL
nomProcédé : String
dateCreation : Date
durée : Période
sujet : String
description : String
appelle
0..*
FactoryComposant
NomFacteur : String
crée
0..*
CréerComposant( )
PropriétésComposant( )
TerminerComposant( )
SusprendreComposant( )
RéprendreComposant( )
AnnulerComposant( )
AttacheObservateur( )
DetacheObservateur( )
ListEvénements( )
Notifie( )
modèleAPEL
CréerProcédéInstance( )
ListeInstances( )
Test
Figure 23 Diagramme de classes : Patron fabrication
L’interprétation pour le diagramme de classes de la figure 23 :
ComposantProcede : définit l’interface des objets créés par le FactoryComposant.
FactoryComposant : déclare la fabrication, celle-ci renvoie un objet de type Composant Procede.
Le test implémente l’interface ComposantProcede.
ModelApel surcharge la fabrication pour renvoyer un objet de type test.
3.3.4.2 L’Observateur global
Rôle
Agent
à_par_rôle
agentId : String
1..*
1..*
name : Strng
roleId : String
roleName : Enumerate
Role( )
~Role( )
AffectRole( )
ComposantProcédé
assigné_à
ObservateurGlobal
lié_à
idObservateurGlobal : String
siteExécution : URL
InfoProcédé : Elément
PropriétésObservateur( )
MiseAJour( )
ProcédéTerminé( )
ChangeEtatProcédé( )
siteExecution : URL
nomProcédé : String
dateCreation : Date
durée : Période
sujet : String
description : String
0..*
0..*
abbonne
0..*
PropriétésComposant( )
TerminerComposant( )
SusprendreComposant( )
RéprendreComposant( )
AnnulerComposant( )
AttacheObservateur( )
DetacheObservateur( )
ListEvénements( )
Notifie( )
sous
Figure 24 Diagramme de classes: L'observateur global
La classe observateur global, illustré par la figure 24, a deux types de relations :
La relation lié_à définit une relation d’un observateur global avec un composant procédé. Ici la tâche
de l’observateur est d'enregistrer l’information plus importante sur le composant procédé auquel il
appartient et l’information sur les possibles sous composants fils, tel que : nom du composant, son
état, la durée, le rôle responsable de l'exécution du composant, etc. L’observateur a le contrôle sur le
composant et sur ses sous composants fils ; en lui peut par exemple, modifier l’état du ou des
composants procédés.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 35
La relation abonné définit une interdépendance de façon telle que, quand le composant procédé
change d’état, tous ceux observateurs globales externes qui en dépendent soient notifiés, et
automatiquement mis à jour. L’observateur global externe n’aura pas la permission de modifier
l’état du composant procédé en question.
3.3.4.3 Le patron de façade.
La classe ComposantProcédé joue le rôle de façade : elle doit offrir à l’utilisateur une interface unique
et simple vers les services du composant procédé. Elle connaît les classes pour une requête. Mais
les classes du sous système ne connaissent pas la façade, c’est à dire qu’elles n’ont pas de référence
à celle-ci. Les observateurs communiquent avec le composant procédé en envoyant des requêtes à la
façade, qui répercute celles-ci aux objets appropriés du sous-système.
3.3.4.4 Le ComposantMétaData.
Le composant procédé produit des méta données constituées par les classes : attribut, méthode et
événements. On peut ainsi manipuler l’information et des opérations des composants procédés. Il
suivi un schéma conceptuel bien établi. La figure 25 illustre le diagramme de classes correspondant.
a_sous
0..*
ComposantProcédé
siteExecution : URL
nomProcédé : String
dateCreation : Date
durée : Période
sujet : String
description : String
PropriétésComposant( )
TerminerComposant( )
SusprendreComposant( )
RéprendreComposant( )
AnnulerComposant( )
AttacheObservateur( )
DetacheObservateur( )
ListEvénements( )
Notifie( )
produit
0..*
Attribut
< a_attribut
nomAttribut : String
type : String
ComposantMetaData
nomComposant : String
0..*
a_Schema
capture
a_method
1..*
Schéma
nomShema : String
0..*
0..*
Evénement
nomEvénement
AffectEtat( )
0..*
<déclenche
Méthode
nomMéthode : String
name : type = initval
Figure 25 : Diagramme de classes: Méta données produits par un composant procédé
3.3.4.5 Fonctionnement de la machine d'exécution : exemple.
Remarquons, que la création et l’exécution d’un modèle par composants est assez dynamique,
surtout car elle peut impliquer l’exécution parallèle de plusieurs composants, chaque composant à son
tour peut déclencher l’exécution de d'autres sous composants parallèles, enchaînes ou imbriqués
(modèles étudiés dans l’état de l’art).
Analysons un exemple pratique: Le procédé test dans le développement d’un système logiciel. Les
sous-composants du test sont : test d’intégration et test unitaire. Chacun d’eux reçoit comme entrée
un plan de test, ils fournissent un documents contenant le rapport du test. Par chaque composant il
existe un rôle gestionnaire responsable de exécution, pour chaque composant procédé. La figure 26
illustre le schéma pour le test avec des éléments décrits au dessus :
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 36
Figure 26 : Le schéma pour test
Le composant « test unitaire » est le niveau de test plus bas réalisé pour les classes, les blocs et
les paquets de service.
Le but composant « test d’intégration » est de tester si différentes unités développées
fonctionnent correctement ensemble.
Chaque composant décris au dessus est composé, à son tour, de sous-composants test dans son
domaine d’application. Pour simplifier notre exemple, nous considérons le cas où l’exécution du test
se trouve dans le niveau plus bas, i.e. dans les composants d’unité.
La création de composants procédés est mené à bien par des fabriques « factory » illustrés par l’arbre
à gauche de la figure 27. En cours d’exécution, une factory en appele une autre pour demander la
création d’un composant procédé. La phase d’exécution est illustré par l’arbre à droite, ici le
composant test lance l’exécution des sous composants test unitaire, il à son tour lance l’exécution en
parallèle des sous composants test d’unité. Le composant test d’intégration est mis en exécution, une
fois que les test d’unité ont fini leur exécution.
Figure 27 : Arbres illustrant la création et exécution des sous composants test
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 37
Regardons le comportement de la machine d’exécution pour le composant test au travers des
diagrammes de séquence suivants :
Le composant test demande la liste de composants procédés à la base de données. Après il appelle
l’outil qui va créer le composant sélectionné. Cet outil va créer l’environnement nécessaire pour mener
à bien l’exécution du composant procédé TestUnitaire, à savoir : le diagramme d’états, les variables,
etc. En suite un événement est diffusé signalant l’existence du nouveau composant TestUnitaire. Test
lance l’exécution de ce composant, et un autre événement est diffusé signalant le début de l’exécution
de TestUnitaire. Quand il termine son exécution, l’evénément terminé est diffusé via le gestionnaire
d’événements.
Test : Composant
Procédé
: BaseDonnées
TestUnitaire :
ComposantProcédé
: Environnement
de test
: Gestionnaire
Evénements
Démande liste composants
nom de l'outil
nom de l'outil
créer
Evénement "création composant"
lancer exécution
Evénément "début exécution"
fin d'exécution
Evénement "terminé"
Figure 29 Diagramme de séquences pour exécution de Test
La figure 29 illustre l’intéropérabilité entre des composants basé sur des événements. Le composant
test s’abonne a des événements fin de l’exécution du TestUnitaire et TestIntegration. Le composant
testUnitaire est en train de s’exécuter. Quand le TestUnitaire termine son exécution, un événement
« terminé » est diffusé par le gestionnaire d’événements, et en suit il renseigne le composant test sur
le changement d’état.
Après, le composant procédé lance l’exécution du composant TestIntégration. Cette action déclenche
l’événement « débutProcédé ». La fin de l’exécution du composant TestIntégration finalisera le
composant Test. Ce composant notifiera aux observateurs abonnés à l’événement «terminé Test»
afin de que ceux ci déclenchent des actions propres à son exécution.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 38
Test : Composant
Procédé
TestUnitaire : Composant
Procédé
TestIntegration :
ComposantProcédé
: Gestionnaire
Evénements
abonnement événement fin d'exécution test unitaire
abonnement événement fin d'exécution test
fin d'exécution
événement "TestUnitaire Terminé"
test unitaire a été Terminé
lancer exécution
événement "débutProcédé"
test d'intégration en "exécution"
Fin de l'exécution
événement "TestIntégration Terminé"
test d'intégration a étéTerminé
Fin de l'exécution
événement " Test Terminé"
Figure 30 Diagramme de séquence : interopérabilité entre des composants procédés
Le diagramme d’état de notre exemple est illustré par la figure ci dessous. Remarquons que tous ces
sous composant auront le même comportement, la récursivité est indiquée par la flèche « créer sous
composant test ».
Figure 31 : Diagramme de transition d'état pour le composant test
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 39
Chapitre 4 Prototypage
Dans cette section nous allons présenter le prototype permettant la mise en œuvre du modèle de
composants procédé. Nous présentons les interfaces de dialogue pour la création d’un modèle par
composants, et pour la gestion de l’exécution de chacun des composants procédés.
4.1 Modèle par composants procédés.
Cette fenêtre permet de réaliser la modélisation d'un procédé par sélection de composants procédés.
Description.
Dans champ « Créer modèle » on doit entrer le nom du modèle à développer.
La liste composants disponibles affiche tous les composant procédés disponibles dans la base de
données.
La liste composants inclus affiche des composants sélectionnés par l’utilisateur.
Les boutons : Dépendances, Stocker, Exécuter y annuler.
Fonctionnalité.
On sélectionne les composants à partir de la liste des Composants disponibles. Pour ajouter un
composant à la liste de Composants inclus, on appuie sur le bouton « >> ». L’action inverse
« << », retire le composant sélectionné de la liste de composants inclus.
Les dépendances pour chaque composant sélectionné pourront être remplies en appuyant sur le
bouton Dépendances…
Le bouton Stocker sauvegarde le modèle par composants
Le bouton Annuler ferme la fenêtre sans sauvegarder le modèle par composants.
Le bouton Exécuter démarre l’exécution du modèle par composants.
Figure 32 : Fenêtre pour créer un modèle par composants
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 40
4.2 Dépendances.
La fenêtre de propriétés permet de remplir l’information nécessaire dans le contrôle des composants
procédés.
Description.
Le champ nom composant procédé permet de sélectionner un composant procédé de la liste de
composants inclus dans le modèle par composants. L’information à remplir est :
Rôle responsable de l’exécution
Date de début de l’exécution du composant procédé
Date de terminaison de l’exécution du composant procédé
Le Composant source correspond au procédé qui lui précède dans le flux d’exécution du modèle.
Produit entrant correspond au document que le composant procédé recevra du composant source
liée avec lui.
Le Composant cible correspond au procédé qui lui précède dans le flux d’exécution du modèle.
Produit sortant correspond au document que le composant procédé envoiera à l’autre composant
lié à lui.
Figure 33 : Fenêtre pour remplir les dépendances entre composants
4.3 L’observateur global.
La fenêtre de l’observateur global affiche le temps d’exécution et l’état actuel d’un composant procédé
de son domaine. A partir de cette fenêtre le rôle chargé de l’exécution d’un composant procédé pourra
modifier l’état du composant procédé ou du sous procédé dérivé du premier.
Fonctionnalité.
Dans le champ Composant Procédé apparaît par défaut le composant procédé père ;
Dans la liste de sous composant apparaît ses fils. Par chaque fils sélectionné la liste de sous
composants sera rafraîchie, avec des sous composants procédés propres à celui-ci.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 41
Le champ état actuel permettra de changer l’état du composant sélectionné : exécution,
abandonné, suspendu et repris.
Le bouton dépendances affiche la fenêtre Dépendances en mode lecture uniquement.
Figure 34 : Fenêtre pour observer cours de l'exécution des composants
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 42
Chapitre 5. Conclusion et perspectives
Ce travail s’inscrit dans le cadre d’une recherche sur le support automatisé aux procédés logiciels.
Une approche à base de composants est proposée pour distribuer, faire intéropérer et réutiliser des
procédés. Les bénéfices attendus de cette recherche sont :
L’Interopérabilité : Différentes représentations de procédés peuvent être supportées.
La réutilisation : Un composant procédé est une unité qui peut être décrite, déployée et manipulée
indépendamment d’autre composants.
Le support aux procédés dynamiques. Un composant est défini avec le modèle et les informations
d’instanciation permettant au composant de gérer sa propre évolution. Un composant possède
des informations génériques (framework), spécialisées (adaptation) et d’instanciation. Ainsi un
composant peut s’adapter aux situations dynamiquement.
Le but de notre travail est une contribution à cette recherche. Nous proposons un framework orienté
objet pour le support aux procédés. Les principales contributions de notre travail sont :
La présentation des concepts et de la terminologie qui caractérisent la technologie de procédés.
La proposition d’un framework orienté objet pour le support de procédés. Les principales
caractéristiques de notre framework sont :
extensible pour couvrir les fonctionnalités d’une application particulière.
interopérabilité par événements. L’encapsulation du composant permet de l’utiliser sans avoir
besoin de connaître son fonctionnement.
intégration dynamique de composants car chaque composant est indépendant.
Un prototype qui présente l’interface graphique pour l’environnement supportant la modélisation
par composants. Ce prototype est en cours de construction.
Les perspectives de ce travail sont :
La proposition d’un langage de définition de composants basé sur XML.
La construction de composants procédés. Prendre différents modèles existants, les encapsuler et
leur fournir une interface simple pour leur utilisation.
La création d’une bibliothèque de composants réutilisables dans laquelle l’utilisateur sélectionnera
des composants pour sa modélisation.
La mise en œuvre du protocole d’interopérabilité par contrôle basé sur le standard Wf XML et de
l’environnement d’exécution des procédés.
.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 43
Bibliographie.
[Ami99]
Amiour, Mahfoud, Vers une fédération de composants interopérables pour les
environnements centrés procédés logiciels, Thèse de Doctorat, Université Joseph
Fourier, Grenoble I, juin 1999.
[AK94]
Armitage, J. and Kellner, M. A Conceptuel Schema for Process Definitions and
Models. In Procedings of the third International Conference on the Software Process
(ICSP3), pp. 153-165, Reston, VA. Octoer, 1994.
[ABC94]
Avrilionis, D., Belkhatir, N., and Cunin P. A Unified Framework for Software Pocess
Enactment and Improvement. Proceedings of the Fourth International Conference on
the Software Process (ICSP4).
[ABC96]
Avrilionis, D., Belkhatir, N., and Cunin P. Improving Software Pocess Modelling and
Enactment Techniques. Proceedings of the Fifth European Workshop on Software
Process Technology (EWSPT’96), pp. 65 – 74, Nancy, France. October 1996.
[Avr96]
Avrilionis, D., Mécanismes pour l’Evolution et la Réutilisation des processus de
Production de Logiciels, Thèse de Doctorat, Université Joseph Fourier, Grenoble
I,1996.
[BK95]
Ben – Shaul, I. and Kaiser, G. An Interoperability Model for Process – Centered
Software Engineering Environments and its Implementation in OZ. Technical Report
CUCS – 034 – 95, Computer Science Department, Culumbia University, 1995.
[BK98]
Ben–Shaul, I. and Kaiser, G. Federating Process–Centered Environments : the OZ
Experience. Journal of Automated Software Engineering, vol. 5, no. 1, pp. 97 – 132.
January 1998.
[CKO92]
Curtis, B., Kellner M., and Over, J., Process modeling, Communications of the ACM,
35(9) : 75-90, Septembre 1992.
[BFL94]
Bonjour M., Falquet G. and Léonard M. « Bases de concepts et d’intégration de bases
de données » INFORSID’94, Aix-En-Provence, France 1994.
[Boy94]
Boyer, F., « Coordinations entre outils dans un environnement intégré de
développement de logiciels ». Thèse de doctorat de l’Université Joseph Fourier,
Grenoble 1, février 1994.
[BT96]
Bolcer, G-A, Taylor, R-N, Endeavors : A Process System Integration Infrastructure, In
procedings of the IEEE, August 1996.
[Che]
Chen, H., Collaborative Systems : Solving the Vocabulary Problem. In IEEE computer,
May 1994, pp.58-66.
[CFF94]
Conradi, R. Fernström, C., and Fuggetta, A. Concepts for Evolving Software Process.
In Software Process Modeling and Technology, A. Finklestin, J. Kramer, and B.
Nuseibeh (Eds.), pp. 9 – 31. John Wiley, 1994.
[CFF+92]
Conradi, R. Fernström, C., Fuggetta, A. and Snowdon R. Towards a Reference
framework for Process Concepts, Proceedings of the second European Workshop on
software Process Technology (EWSPT’92), pp. 3-17, Trondheim, Norway. Septembre
1992.
[CJ99]
Conradi, R. and Jaccheri L. Process Modeling Languages, Chapter 3, pp 27-52. In
[DKW99],1999.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 44
[Der94]
Derniame, J.-C. and all. « Life Cycle Process Support in PCIS. » In Proceedings of
PCTE’94, San Francisco, november 1994.
[DKW99]
Derniame J-C, Kaba B. A., Wastell D., Software Process : Principles, Methodology,
and Technology, LNCS. pp.1500, Springer, 1999.
[EAD98]
Estublier, Jacky, Amiour, Mahfoud and Dami, Samir, Building a Federation of Process
Support Systems, Septiembre, 1998, Rapport interne group ADEL.
[FH93]
Feiler P.H., and Humphrey W.S., Software Process Development and Enactment :
Concepts and Definitions. In proceedings of the Second International Conference on
the software Process. IEEE Computer Society Press,1993, pp. 28-40.
[GHJ99]
Gamma E., Helm R., Johnson R., Vlissides J., Design Patterns : Catalogue de
modèles de conception réutilisables, Traduction de Jean-Marie Lasvergères, Ed.
Vuibert Informatique, 1999, 459 pages.
[GLK97]
Gary K., Lindquist T., Koehnemann H. Component-based Process Modeling. May
1997. Available at http://pooh.eas.asu.edu/yfppg/pubs/abstracts.5.html#pgfId=282178
[Hei92]
Heimbigner, D. The Process Wall : A Process State Server Approach to process
Programming. Proceeding of the Fifth ACM SIGSOFT Symposium on Software
Development Environments, pp. 159-168, Tyson’s Coners, VA, December 1992.
[JCJ+93]
Jacobson, I., Christerson, M., Jonsson, P. Övergaard, Gunnar, Le génie logiciel
ème
Orienté Objet, Ed. Addison-Wesley, 2
Edition, 1993, 536 pages
[KTL+92]
Krasner, H. Terrel, J. Linehan, A., Arnold, P. and Ett, W.H. Lessons Learned from a
Software Process Modeling System. Communications of the ACM, vol. 35(9), pp. 9110. September 1992.
[LGJ+98]
Lee, J., Gruniger, M., Jin, Y., Malone, T., Tate, A., Yost, G., and the PIF Working
Group, The PIF Process Interchange Format w.1.2. Available at http://ccs.mit.edu/pif,
Decembre 8 1997. Also published in The Knowledge Engineering Review, vol 13(1),
pp. 91-120. Cambridge University Press. March 1998.
[LD97]
Lindquist, T., Derniame J.C.Towards Distributed and Composable
Components. May 1997 Available at
http://pooh.eas.asu.edu/yfppg/pubs/abstracts.5.html#pgfId=282178
[Lon94]
Lonchamp, J., An Assesment Excercice, chapter 13, pages 335-356. In Software
Process Modelling and Technology, research Studies Press LTD, Tauton,
Somerset,England, 1994.
[Lon93]
Lonchamp, J., A Structured Conceptuel and Terminological Framework for Software
Process Enginnering. In proceedings of the Second International Conference on the
software Process. IEEE Computer Society Press,1993, pp. 41-53.
ère
Muller Pierre-Alain, Modélisation objet avec UML, Ed. Eyrolles, 1 edition, Paris
1997, 421 pages
[Mul97]
[NWM93]
[OMG98]
[OHE99]
Process
Nicol, J.-R., Wilkes T., and Manola F.-A. Objet Orientation in Heterogeneous
Distributed Computing Systems. IEEE Computer, june 1993 pp. 57-67.
Objet Management Group. Workflow Management Facility Submission (jFlow). OMG
Document Number bom/98-06-0. July 4 1998.
Orfali R., Harkey D., Edwards J., Client/Serveur : Guide de survie. Troisième édition.
Traduction de françois Leroy et Jean-Pierre Gout. Edit. Vuibert, Paris 1999, 782 pages
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 45
[Sch99]
Schaefer W. editor, Architectural Views and Alternatives, chapter 5, pp. 95-116. In
[DKW99],1999
[SW92]
Smith B., and Wellington J., TC184/SC4 Reference Manual, Technical Report,
International Organisation for Standarisation, April 1992.
[Swe98]
Swenson, K. Simple Worflow Acess Protocol (SWAP). Internet Draft Netscape
Communications Corp. Available at http://www.ics.uci.edu/~ietfswap/swap-prot.txt.
August 7, 1998.
The Workflow Management Coalition. The reference Model. WfMC Document Number
TC-1003, Issue 2.0, jan 1995.
[WfMC95]
[WfMC96]
The Workflow Management Coalition. Terminology and Glossary. WfMC Document
Number WFMC-TC-1011, Issue 2.0, June 1996.
[WfMC98]
The Workflow Management Coalition. Interface 1 : Process Definition Interchange.
WfMC Document Number TC-1016, November 1998.
[WfMC2-1]
The Workflow Management Coalition. Interoperability Abstract Specification. WfMC
Document Number TC-1012, new version June 2000.
[WfMC2-2]
The Workflow Management Coalition. Interoperability Wf-XML Binding Document
Number TC-1023, FINAL SPECIFICATION May 8, 2000.
[WfXML]
The Workflow Management Coalition. Proposal for an Asynchronous HTTP binding of
Wf-XML. June 1, 2000.
[Was90]
Wasserman A. « Tools Integration in Software Engineering Environnements. In
Software Engineering Environnements : International Workshop on Environnements,
Berlin 1990.
Lizbeth Gallardo – DEA Systèmes d’Information
20 Septembre 2000 - 46