WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Acquisition et exploitation d'éléments de processus d'ingéniérie logicielle: Cas du projet CIAO-SI

( Télécharger le fichier original )
par Franck Gérard KOM MBOUMI
Université de Yaoundé I, Ecole Nationale Supérieure Polytechnique - Diplôme d?Ingénieur de Conception en Informatique 2004
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

RÉPUBLIQUE DU CAMEROUN

Paix - Travail - Patrie

UNIVERSITÉ DE YAOUNDÉ I

REPUBLIC OF CAMEROON

Peace - Work - Fatherland

UNIVERSITY OF YAOUNDÉ I

ECOLE NATIONALE SUPÉRIEURE POLYTECHNIQUE

DEPARTEMENT DE GENIE INFORMATIQUE

Laboratoire d'Informatique, du Multimédia et Applications

Conception Intelligemment Assistée par Ordinateur

de Systèmes d'Information
(CIAO - SI)

ACQUISITION ET EXPLOITATION D'ELEMENTS DE PROCESSUS D'INGENIERIE LOGICIELLE : CAS DU PROJET CIAO-SI

Mémoire de fin d'études présenté et soutenu par
KOM MBOUMI Franck Gérard
En vue de l'obtention du

Diplôme d'Ingénieur de Conception en Informatique

 

Sous la direction de :

Dr. Roland YATCHOU TCHANA, UQAM Montréal

Dr. Claude TANGHA, ENSP, Yaoundé

 

Sous la supervision de :

Roger NKAMBOU, Ph.D, UQAM Montréal

Raphaël NBOGNI, Président LGI, Longueil

 

Devant le jury composé de :

Président :

Pr. AWONO ONANA

Membres :

Dr. Claude TANGHA

Dr. Roland YATCHOU TCHANA

Dr. Guillaume KOUM DISSAKE

Ing. Chantal MVEH

UNIVERSITÉ DE YAOUNDÉ I

UNIVERSITY OF YAOUNDÉ I

ACQUISITION ET EXPLOITATION D'ELEMENTS DE PROCESSUS D'INGENIERIE LOGICIELLE : CAS DU PROJET CIAO-SI

KOM MBOUMI Franck Gérard,

Département de Génie Informatique,

Ecole Nationale Supérieure Polytechnique.

Mémoire soutenu en vue de l'obtention du

Diplôme d'Ingénieur de Conception en Informatique,

Juin 2004.

(c) Franck Gérard KOM MBOUMI, 2004.

Dédicaces

A Toi ma source, pour que tous reconnaissent ton Amour.

A toi Maman, dont la chaleur dans les moments difficiles m'a toujours apporté du courage.

A toi Papa, mon meilleur exemple, de toutes tes forces tu me soutiens chaque jour.

A mes frères et soeurs, tous vos gestes et conseils m'ont à jamais marqué.

A Marlyse, réjouis-toi des échos de mon travail portés à toi, jusqu'au jour où on les fêtera ensemble.

A Armand et André, j'essaierai de faire mieux pour vous ressembler.

Remerciements

Parce qu'aucun homme ne peut rien de lui-même, je tiens à présenter mes très sincères remerciements à tous ceux qui de loin comme de près ont contribué à la réalisation de ce travail.

Je commence par témoigner ma reconnaissance à Pr. AWONO ONANA pour l'honneur qu'il me fait en acceptant de présider ce jury, car sa présence apporte une touche particulière à ce travail.

Je tiens à exprimer toute ma gratitude à Dr. Roland YATCHOU, dont l'ouverture, la disponibilité, la rigueur dans le travail m'ont conduit durant mon passage au LABORIMA. La meilleure partie de mon travail est encore soutenue par les acquis de son encadrement.

Au Dr. Claude TANGHA, j'exprime ma reconnaissance pour sa disponibilité, ses conseils et surtout le rôle de père qu'il a joué avec ardeur tout au long de notre parcours. Particulièrement, je le remercie pour m'avoir accepté au sein du LABORIMA et pour l'honneur de sa présence dans ce jury.

Au Dr. Guillaume KOUM, je tiens à exprimer mes remerciements pour les conseils, la disponibilité et l'honneur qu'il me fait en participant à ce jury.

A Ing. Chantal MVEH, j'exprime ma sincère gratitude pour les enseignements reçus, sa compréhension et l'honneur qu'elle me fait en participant à ce jury.

Je remercie particulièrement Pr. Roger NKAMBOU pour la supervision de ce travail, ainsi que M. Raphaël NBOGNI, président du groupe LGI, pour m'avoir fourni le cadre de définition de ce travail.

Je tiens à remercier tous les membres de ma très grande famille qui m'ont toujours soutenu dans mes entreprises, et surtout qui m'ont écouté : Lily, Véronique, Gervais, Tonton Engelbert,...

Toute ma gratitude à mes camarades de la promotion GI2004, compagnons de tant d'épreuves qui nous ont rapprochés.

A tous les membres du LABORIMA, qui ont soutenu mes travaux et m'ont aidé à m'améliorer sur de nombreux plans.

A mes amis et amies, dont la simple présence parfois m'a encouragé dans mes efforts. Spécialement : Blandine, Mohaman, Willy, Valéry, Habiba, Claudia, Chimène, Danielle, Carine, Marietta ... A tous les enfants de choeur de la Paroisse Saint-Pierre de Kong à Yaoundé, et particulièrement au collège des responsables, j'exprime ma gratitude.

Ni les mots, ni les pages ne suffisent à exprimer ma gratitude à vous qui avez de près et de loin participé à mon édification et contribué à ce travail.

Résumé

L'informatique a connu un essor sans précédent durant la dernière décennie, une floraison d'entreprises offrant des services aussi divers les uns que les autres. Du point de vue des utilisateurs, consommateurs des produits et services ainsi fournis, les possibilités s'élargissent. Elles vont de la gestion documentaire avec la bureautique à la gestion des ressources humaines par les systèmes de workflows. A cause de cette demande croissante, l'un des domaines de l'industrie logicielle les plus florissants, la conception des systèmes d'information, s'est développé, offrant aux décideurs les moyens techniques efficaces de gérer de manière tabulaire, la masse d'informations auxquelles ils sont confrontés tous les jours. Dans la même lancée, la définition et l'utilisation effective de processus de développement logiciel sont devenues importantes, principalement pour optimiser les gains tout en réduisant les risques encourus au sein des industries du logiciel. Dans ce contexte, nous proposons un moyen de définir et d'exploiter de tels processus d'ingénierie logicielle. L'objectif principal est la mise sur pied d'un outil d'acquisition de connaissances sur les processus d'ingénierie logicielle, en vue de leur utilisation au sein du projet CIAO-SI. Nous axons notre travail sur l'aspect réutilisation des connaissances acquises sur des processus d'ingénierie logicielle, par des outils tiers. Nous procédons par une analyse des métamodèles et des outils de développement de processus d'ingénierie logicielle existants, pour choisir le métamodèle approprié et ressortir les fonctionnalités d'un outil adéquat. En nous appuyant sur le processus Rational Unified Process, la technologie XML et la technique du Reverse Engineering, nous aboutissons à l'outil spécifié. Nous nous en servons pour peupler la base de connaissances de processus d'ingénierie logicielle du projet CIAO-SI, cadre d'application de notre travail.

Mots-clés : processus, ingénierie logicielle, ontologies, métamodèles, SPEM, réutilisation.

Abstract

Computer science made great strides during the last decade, multiple companies offering as various services the ones as the others. For the consumers, users, consuming the products and services thus provided, the possibilities are widen going from document management with office automation to human resources management by the systems of workflows. Because of this increasing request, one field of software industry most flourishing, the information systems design of information, developed, offering to the decision makers effective techniques to manage in a tabular way, the mass of information to which they are confront everyday. In the same impetus, the definition and the effective use of software development processes became important, mainly to optimize the profits while reducing the incurred risks within the software industries. In this context, we propose a means of defining and of exploiting such software engineering processes. Our principal objective is the development of a tool for acquisition of knowledge on software engineering processes, for their use within project CIAO-IS. We center our work on the re-use's aspect of knowledge obtained from software engineering processes. By using the Rational Unified Process, XML technology and the Reverse Engineering technique, we have constructed the specified tool. We use it to populate the software processes knowledge base of the project CIAO-IS, where we apply our work.

Key words : process, software engineering, ontology, metamodel, SPEM, re-use.

Table des matières

Dédicaces i

Remerciements ii

Résumé iii

Abstract iv

Table des matières v

Liste des figures vii

Liste des sigles et abréviations viii

Chapitre I. Introduction 1

I.1. Contexte 1

I.2. Objectif 1

I.3. Plan 2

Chapitre II. Problématique 3

II.1. Les ontologies et les bases de connaissances 3

II.1.1. Définition, structure et types 3

II.1.2. Méthodologies et outils de construction 4

II.1.3. Représentation des connaissances 5

II.1.4. Conclusion 7

II.2. Processus d'ingénierie logicielle 8

II.2.1. Définition 8

II.2.2. Importance des processus 9

II.2.3. Ce qu'il faut pour un processus d'ingénierie logicielle 9

II.2.4. Les processus d'ingénierie logicielle aujourd'hui 10

II.3. Le projet CIAO-SI 12

II.3.1. Approche adoptée 12

II.3.2. Les grandes lignes du projet CIAO-SI 12

II.3.3. Notre rôle dans le projet CIAO-SI 13

II.4. Conclusion 13

Chapitre III. Etat de l'art de la réutilisation des processus d'ingénierie logicielle 15

III.1. Vers une solution d'ensemble 15

III.1.1. Diagrammes de Gant 15

III.1.2. Diagrammes PERT 16

III.1.3. PIF 16

III.1.4. PSL 18

III.1.5. CPR 18

III.1.6. WfMC 19

III.1.7. SPEM 20

III.1.8. Conclusion 22

III.2. Les solutions existantes 22

III.2.1. SPEARMINT/EPG 22

III.2.2. BORE 24

III.2.3. APES 25

III.2.4. RUP 28

III.2.5. IRIS 29

III.3. Solution proposée 30

III.3.1. Acquisition des connaissances sur un processus de développement 31

III.3.2. Vérification de la conformité d'un processus de développement au métamodèle SPEM 31

III.3.3. Visualisation d'un processus de développement 31

III.3.4. Importation d'un processus de développement 31

III.4. Conclusion 32

Chapitre IV. Mise en oeuvre du système 33

IV.1. Le processus de développement RUP 33

IV.1.1. Présentation 33

IV.1.2. Caractéristiques de RUP 33

IV.1.3. Les meilleurs exercices (« best practices ») de RUP 35

IV.1.4. Pour notre cas 35

IV.2. Le langage de modélisation : UML 36

IV.2.1. Présentation 36

IV.2.2. Les neuf diagrammes d'UML 36

IV.2.3. Pour notre cas 37

IV.3. Vision du système 37

IV.4. Analyse préliminaire 37

IV.4.1. Architecture systémique du système CIAO-SI 38

IV.4.2. Sous-système Expert 39

IV.5. Identification des acteurs 42

IV.6. Les cas d'utilisation 42

IV.7. Réalisations des cas d'utilisation 43

IV.8. Architecture du système 45

IV.9. Conclusion 49

Chapitre V. Résultats 50

V.1. Environnement de développement 50

V.1.1. NetBeans™ IDE 3.6 50

V.1.2. MySQL 50

V.1.3. XMLizer 50

V.2. Techniques utilisées 51

V.2.1. Reverse Engineering 51

V.2.2. Sérialisation 51

V.2.3. Correspondance (mapping) 51

V.3. Résultats : quelques écrans 51

Chapitre VI. Conclusion 55

VI.1. Bilan 55

VI.2. Difficultés 55

VI.3. Perspectives 56

Références 57

Annexes 60

Annexe A : Présentation du LABORIMA 60

Annexe B : Présentation de l'Open Source 62

Liste des figures

FIGURE 1. L'EXPRESSIVITÉ DES LANGAGES DE REPRÉSENTATION D'ONTOLOGIES. 7

FIGURE 2. LE PROCESSUS D'INGÉNIERIE LOGICIELLE : SON RÔLE. 8

FIGURE 3. SITUATION DU PROCESSUS D'INGÉNIERIE LOGICIELLE DANS L'ENTREPRISE. 10

FIGURE 4. LE MODÈLE PIF : UNE REPRÉSENTATION DES CONCEPTS DES PROCESSUS (BÉZIVIN 2003). 17

FIGURE 5. LE MODÈLE PSL : LES PRINCIPAUX CONCEPTS ET LES RELATIONS ENTRE CES CONCEPTS (BÉZIVIN 2003). 18

FIGURE 6. LE MODÈLE CPR : PRISE EN COMPTE DES INSTANCES DE PLAN (BÉZIVIN 2003). 19

FIGURE 7. LE MODÈLE DE RÉFÉRENCE PROPOSÉ PAR WFMC (BÉZIVIN 2003). 19

FIGURE 8. LES FONDEMENTS DU MÉTAMODÈLE SPEM : COLLABORATION RÔLE-ARTEFACT-ACTIVITÉ (OMG 2002B). 20

FIGURE 9. LES NIVEAUX D'ABSTRACTION DE LA MODÉLISATION SELON MOF (OMG 2002B). 21

FIGURE 10. CORRESPONDANCE ENTRE SPEM ET LES ÉLÉMENTS DU MÉTAMODÈLE DE UML (OMG 2002B). 21

FIGURE 11. SPEARMINT/EPG : UN EXEMPLE DE MODÉLISATION. 23

FIGURE 12. BORE : UN APERÇU DU GESTIONNAIRE DE TÂCHES. 25

FIGURE 13. APES : UNE ILLUSTRATION DE L'OUTIL D'EXÉCUTION. 27

FIGURE 14. RUP : UNE VUE DE L'OUTIL DE PUBLICATION SOUS FORME DE SITE. 29

FIGURE 15. RUP : LA REPRÉSENTATION SUIVANT DEUX AXES. 34

FIGURE 16. EXTRAK : UNE PREMIÈRE VUE DU SYSTÈME. 38

FIGURE 17. VUE SYSTÉMIQUE DE CIAO-SI. 38

FIGURE 18. SOUS-SYSTÈME EXPERT DE CIAO-SI. 39

FIGURE 19. SCHÉMA DE LA BASE DE CONNAISSANCES RELATIVES AUX PROCESSUS DE DÉVELOPPEMENT. 40

FIGURE 20. ARCHITECTURE GLOBALE DE EXTRAK. 42

FIGURE 21. DIAGRAMME DES CAS D'UTILISATION DE L'EXPERT. 43

FIGURE 22. DIAGRAMME DE SÉQUENCES : VALIDER UN PROCESSUS. 44

FIGURE 23. DIAGRAMME DE COLLABORATIONS : VALIDER UN PROCESSUS. 44

FIGURE 24. DIAGRAMME D'ACTIVITÉS : CAS D'UTILISATION IMPORTER/EXPORTER UN PROCESSUS. 45

FIGURE 25. LES PAQUETAGES DU SYSTÈME. 46

FIGURE 26. LES COMPOSANTS DU SYSTÈME. 47

FIGURE 27. CLASSES DU PAQUETAGE DOMAIN. 48

FIGURE 28. QUELQUES CLASSES DU PAQUETAGE METAMODEL. 48

FIGURE 29. EXTRAK : L'ÉCRAN D'OUVERTURE. 52

FIGURE 30. EXTRAK : L'ÉCRAN D'ACCUEIL ET LES FONCTIONNALITÉS. 52

FIGURE 31. EXTRAK : UN CAS D'UTILISATION POUR LA RECHERCHE DES PROCESSUS. 53

FIGURE 32. EXTRAK : LE PROCESSUS RUP DE LA BC CIAO-SI OUVERT. 53

FIGURE 33. EXTRAK : OUVERTURE D'UN AUTRE PROCESSUS. 54

Liste des sigles et abréviations

UML

« Unified Modeling Language » (langage unifie pour la modélisation). Langage de modélisation objet, permettant de spécifier, construire, visualiser et décrire les artefacts d'un système logiciel ( http://www.omg.org ).

OMG

« Object Management Group ». Organisme international de promotion de la théorie et de la pratique de la technologie orienté-objet dans le développement logiciel ( http://www.omg.org ).

XML

« eXtensible Markup Language ». Langage développé par le groupe de travail XML du consortium W3C, permettant de décrire une semi-structure d'information et de l'échanger et de la manipuler ( http://www.w3.org/TR/REC-xml ).

DAML

« DARPA Agent Markup Language ». Langage de description d'ontologies, base sur RDF et RDFs ( http://www.daml.org ).

OKBC

« Open Knowledge Base Connectivity ». Modèle uniforme de Systèmes de Représentation des Connaissances basé sur la conceptualisation commune des classes, individus, slots, facettes, et héritages.

OIL

« Ontology Inference Layer ». Langage standard pour la spécification et l'échange d'ontologies.

KIF

« Knowledge Interchange Format ». Langage informatique pour l'échange de connaissances entre programmes disparates

RDF

« Resource Definition Framework ». Langage de description de ressources, base sur XML ( http://w3c.org/RDF ).

RDFS

« RDF Schema ». Langage de représentation de schémas RDF ( http://www.w3.org/TR/WD-rdf-schema ).

OWL

« Web Ontology Language » (Langage d'ontologies pour le web). Un des langages dérivés de DAML+OIL, destiné lui aussi au partage et à la publication d'ontologies sur le web ( http://www.w3.org/TR/2003/PR-owl-features-20031215/).

IDL

« Interface Definition Language » (Langage de définition d'interfaces) ( http://www.omg.org/technology/documents/formal/corba_2.html )

CORBA

« Common Request Object Broker Architecture » ( http://www.omg.org/corba/beginners.html )

 
 

Introduction

I.1 Contexte

Le travail que nous présentons ici a été réalisé au sein du LABORIMA (Laboratoire d'Informatique, du Multimédia et Applications), situé au Département de Génie Informatique au sein de l'ENSP (Ecole Nationale Supérieure Polytechnique), dans le cadre d'un projet mené en partenariat avec le laboratoire GDAC (Gestion, Diffusion & Acquisition de connaissances), dénommé CIAO-SI (Conception Intelligemment Assistée par Ordinateur des Systèmes d'Information), situé au sein de l'Université du Québec A Montréal (UQAM), à Montréal au Canada. Le projet CIAO-SI a pour objet la conception et la mise en oeuvre d'un système permettant d'offrir une assistance au concepteur pendant le processus de développement logiciel, et de partager l'expérience des projets par la constitution d'une mémoire de modèles de conception réutilisables. Ce projet est réalisé suivant plusieurs grandes lignes dont la gestion des ontologies et des connaissances de domaines d'application et de processus de développement, ainsi que la gestion de l'assistance. La gestion des ontologies et des connaissances relatives à certains domaines d'application a été examinée par Ing. Ghislain NGANTCHAHA (Ngantchaha 2002) et Hervé DONFACK au cours de précédents travaux. Celle des ontologies des processus RUP et MERISE, qui a permis la construction de bases de connaissances exploitables par un système multi-agents, et la validation des artefacts produits au cours de ces processus, a été réalisée par Ing. Francis Michel KONHAWA (Konhawa 2003) et Ing. Claude Albert MOGHOMAYE (Moghomaye 2003), dans des précédents travaux. Dans la continuation de ce projet, il nous a été demandé de peupler la base de connaissances de processus, de manière à automatiser les travaux précédemment effectués.

Ce mémoire portera sur la mise en place d'un outil d'acquisition et d'exploitation d'éléments de processus d'ingénierie logicielle, pour le cas du projet CIAO-SI.

I.2 Objectif

Principalement, ce travail a pour objectif d'automatiser le peuplement de la base de connaissances des processus d'ingénierie logicielle du projet CIAO-SI. En effet, nous devons fournir un outil qui permettra d'acquérir des éléments de connaissances sur les processus d'ingénierie logicielle existants et de les exploiter.

Il s'agira en ce qui concerne cette description, de renseigner les connaissances sur un processus suivant un modèle que nous déterminerons et pour l'exploitation, de permettre l'exportation des processus sous divers formats standards. Ainsi, il comportera une fonctionnalité permettant l'exportation des dits processus pour leur réutilisation, notamment dans d'autres modules du projet CIAO-SI.

I.3 Plan

Ce mémoire est réparti en quatre (04) chapitres.

Le premier chapitre porte sur la problématique de notre travail. Nous y situons en trois étapes le contexte général du problème, par la situation du domaine dans lequel il se trouve. C'est ainsi nous y aborderons successivement les ontologies et les bases de connaissances, les processus d'ingénierie logicielle et enfin, le projet CIAO-SI et notre rôle dans ce projet.

Le deuxième chapitre porte sur l'état de l'art de la réutilisation des processus d'ingénierie logicielle. C'est dans ce chapitre que nous passons en revue l'existant en matière de réutilisation dans l'ingénierie des processus. Nous procédons en trois étapes. Premièrement, nous analyserons l'évolution de la réutilisation par les modèles de processus d'ingénierie logicielle, depuis les premiers jusqu'à nos jours. Deuxièmement, nous étudions les principaux outils de gestion des processus d'ingénierie logicielle. Troisièmement, nous dressons une ébauche de solution résultant de ces analyses.

Le troisième chapitre porte sur la mise en oeuvre de la solution proposée. Nous procédons à l'analyse et à la conception de celle-ci, en plusieurs étapes, passant de la description de la méthode utilisée à l'architecture du logiciel construit.

Le quatrième chapitre présente les résultats obtenus. Nous y décrivons les choix importants d'implémentation et les outils qui ont conduit à la réalisation du logiciel, ainsi que quelques captures écrans de ce dernier.

Nous achevons ce mémoire par une conclusion, qui comprend le bilan du travail, les critiques, les difficultés rencontrées et les perspectives.

Sont joints aussi à ce document, deux (02) annexes : la présentation du LABORIMA et une présentation de l'Open Source, justification des divers choix techniques.

Problématique

La démarche classique que nous avons empruntée, commence par la définition et la modélisation du problème à nous posé. Pour être sûr de lui apporter une solution appropriée, il convient d'expliciter les aspects du domaine du problème. Ainsi, nous jalonnons les concepts généraux du domaine du problème, dans le but de mieux le cerner. Plus concrètement, nous présentons dans un premier temps, les ontologies et les bases de connaissances. Dans un second temps, les processus d'ingénierie logicielle. Enfin, dans un troisième temps, le projet CIAO-SI.

I.4 Les ontologies et les bases de connaissances

De toutes les raisons qui ont orienté nos investigations, celle qui justifie le mieux l'introduction de ces deux notions se confond à leur utilisation la plus courante. En effet, l'ontologie d'un domaine permet en premier de capturer le sens du domaine auquel elle s'applique. Et une base de connaissances permet de la schématiser, voire de la matérialiser sur des supports informatiques.

I.4.1 Définition, structure et types

Tout part d'un problème d'échange entre diverses bases de connaissances, dont l'objectif était une représentation, un langage commun entre diverses façons de représenter et de manipuler les connaissances. Autour des années 1990, la communauté d'ingénieurs de la connaissance se sont entendus sur le terme Ontologie (Mille 2002). Des diverses définitions de ce terme, une tentative de synthèse a été faite par Guarino (Guarino 2002). La mieux adaptée à notre contexte stipule que : « Une ontologie est une spécification explicite d'un ensemble de notions de concepts génériques » (Mille 2002). Elle fait ressortir l'explicitation, la généricité, même dans un domaine donné, et ce qui est traduit par une ontologie, à savoir le sens.

Caractéristiques d'une ontologie

Selon (Mille 2002), une partie essentielle de la définition d'une ontologie se trouve dans les concepts qu'elle explicite. C'est pourquoi il est possible de caractériser une ontologie par ces derniers. Un concept, sémantiquement parlant, est composé de trois (03) choses :

- le(s) terme(s) exprimant le concept en langue ;

- la signification du concept, appelée également « notion » ou « intension » du concept ;

- le(s) objet(s) dénoté(s) par le concept, appelé(s) également « réalisation » ou « extension » du concept.

Structure d'une ontologie

D'après (Mille 2002), une ontologie pourrait se résumer en un ensemble de concepts et de relations entre ces derniers. La principale relation entre ces concepts consiste en la relation de généralisation/subsomption. Elle permet de représenter une ontologie, en représentant les concepts avec des liens entre eux.

Il existe d'autres structurations des ontologies (Maedche 2001, Gómez 1999). Ainsi, pour définir une ontologie, il faut d'abord cerner l'ensemble des concepts concernés, en mettant l'accent sur leurs sens (leurs notions) ; puis, définir les relations entre les concepts, qui peuvent être du type sous-classe de ou connecté-à (Gómez 1999) ; puis, identifier les liens de subsomption entre les concepts, ce qui peut être fait à l'étape précédente ; enfin, définir les axiomes sur les concepts pour structurer des phrases toujours vraies (Gómez 1999).

Types d'ontologies

Pour ce qui est de leur typologie, les ontologies sont généralement différenciées soit à partir du langage de spécification utilisé, soit à partir de la nature des concepts étudiés. Ainsi, (Gómez 1999) présente une typologie assez générale des ontologies, en distinguant les ontologies de représentation des connaissances, les méta-ontologies, les ontologies de domaine, les ontologies de tâches, les ontologies de domaine-tâche, les ontologies d'application, les ontologies d'index, les ontologies interactives, etc. (Doniat 2000) associe des types divers à cette liste non-exhaustive.

C'est ainsi que nous avons ressorti successivement les aspects définition et structuration des ontologies, et identifié les types d'ontologies les plus connus.

I.4.2 Méthodologies et outils de construction

Nous connaissons différentes approches de modélisation des systèmes (Merise, RUP, etc.). Elles disposent de descriptions très détaillées des méthodologies à suivre pour les utiliser à bon escient, allant de l'acquisition de données au déploiement du système modélisé. L'un des avantages de l'existence de celles-ci est qu'elles définissent ainsi une sorte de langage universel pour les différents concepteurs. En ce qui concerne les ontologies, (Gómez 1999), de même que (López 1999), expliquent que les directives et méthodes consensuelles étant absentes, il a existé un problème d'entente entre les concepteurs d'ontologies. En effet, leur construction des ontologies est très souvent (malheureusement) guidée par le langage d'implémentation de celles-ci, chose préférentielle. Il y a néanmoins des efforts qui sont fournis en ce sens.

Méthodologies existantes

C'est ainsi que (López 1999) fait une analyse de quatre (04) méthodologies parmi les principales et les compare au standard de méthodologie pour les produits logiciels proposés par l'IEEE (IEEE Standard 1074-1995). Il s'agit de :

- la méthodologie dite de Uschold et King ;

- la méthodologie dite de Grüninger et Fox ;

- la méthodologie dite de Amaya Bernaras ;

- METHONDOLOGY;

- SENSUS.

(Fürst 2002) décrit une méthodologie de construction d'ontologies, après un passage en revue similaire aux analyses faites au paragraphe précédent, qui est une description calquée sur le processus général de représentation de connaissances (décrit dans le même document). Ce processus comporte trois (03) phases :

- la conceptualisation : identification des connaissances contenues dans un corpus représentatif du domaine ;

- l'ontologisation : formalisation, autant que possible, du modèle conceptuel obtenu à l'étape précédente ;

- l'opérationnalisation : transcription de l'ontologie dans un langage formel et opérationnel de représentation de connaissances.

Langages et outils de construction

Ils se basent sur les différents formalismes de représentation de connaissances (Frames, logique de premier ordre, etc.). (Gómez 1999) en présente une liste non exhaustive : Ontolingua, Loom, Flogic, CycL1(*).

Quant aux outils de construction des ontologies, il en existe plusieurs, qui peuvent se distinguer par le formalisme de représentation utilisé. Nous pouvons citer : ODE (Ontology Design Environment) dont la version web est WebODE, DOE (Differential Ontology Editor), OntoEdit, Protégé-2000 (Fürst 2002), OilEd (OIL Editor) (Bechhofer 2003), Ontolingua (Server), OntoSaurus, Tadzebao et WebOnto (Gómez 1999).

Par ce travail, nous avons parcouru une grande partie des méthodologies et langages de construction des ontologies existants. Nous avons aussi pu tester quelques outils de construction d'ontologies. De tous, Protégé-2000 est le plus utilisé par la communauté des développeurs d'ontologies.

I.4.3 Représentation des connaissances

Nous nous intéressons dans cette partie à la question de savoir ce qu'on représente dans les ontologies. De par sa structure, représenter une ontologie revient à représenter ses constituants, à savoir :

- les concepts et leurs propriétés : il peut y en avoir plusieurs dont la généricité, l'identité, la rigidité, l'anti-rigidité, l'unité, l'équivalence, la disjonction, la dépendance (Guarino 2004) ;

- les relations et leurs propriétés : il peut y en avoir plusieurs dont la symétrie, la réflexivité, la transitivité, la cardinalité, l'incompatibilité, l'inversion, l'exclusivité (Fürst 2002) ;

- les axiomes et leurs propriétés.

(Fürst 2002) explique quelques points préliminaires importants pour la représentation des ontologies, le plus important étant de prendre en compte le contexte d'usage de l'ontologie. Lors de la représentation des ontologies, il faut choisir, en fonction de l'opérationnalisation et du contexte d'utilisation de l'ontologie, entre la représentation d'une notion sous forme de concept ou de relation.

Tout ce qui précède permet la représentation des concepts et des relations pour une ontologie. Les principaux choix à faire doivent tenir compte de l'opérationnalisation et du contexte d'utilisation de l'ontologie. Mais, une spécificité de cette approche, qui intègre l'outil informatique, et crée ainsi la différence avec une approche théorique, qui pourrait se limiter au seul papier, est la représentation des connaissances inférentielles.

Connaissances inférentielles

Il s'agit :

- des faits : qui sont des énoncés,

- des règles : qui peuvent inférer de nouvelles connaissances à partie de faits existants,

- des contraintes : qui permettent d'exprimer des impossibilités ou des obligations.

Elles seront stockées dans les bases de connaissances sous la forme de connaissances implicites (utilisées par le système, mais non exprimées à l'endroit des utilisateurs) et de connaissances explicites (exprimées à l'endroit des utilisateurs). Il existe ainsi divers formalismes permettant la représentation de tous ces aspects des ontologies.

Formalismes de représentation

Les ontologies sont représentées au moyen de langages formels dédiés, offrant des structures de données adaptées à la représentation de concepts (Mille 2004). Parmi ces langages, on distingue :

- les langages d'échange d'ontologies sur le Web, dont la syntaxe est basée sur le langage XML : XML, RDF, RDFS, OIL, DAML+OIL, OWL ;

- les langages opérationnels qui implémentent les ontologies à des fins d'inférences, pour constituer un composant d'un système d'information : KIF, OKBC, XOL, DefOnto (Mille 2004).

Analyse comparative

Après ce parcours de quelques formalismes de représentation d'ontologies, nous en présentons une comparaison. Le format d'échange KIF pourrait nous permettre d'implémenter n'importe quel langage et d'ajouter des propositions KIF aux axiomes générés. Les langages basés sur XML tels que RDF semblent intéressants car ils permettent le partage des ontologies sur le WWW, en utilisant les URI et les espaces de noms, mais ils ne sont pas assez expressifs. Tandis que ceux basés sur RDF, tout aussi intéressants, sont riches d'expressivité pour la représentation des concepts et leurs relations et aussi les axiomes les plus fréquemment utilisés. En arrière-plan de ce langage, se trouve sa lisibilité.

La figure suivante permet une première évaluation des langages et leurs capacités d'expressivité.

KIF

OIL, DAML+OIL

OKBC, XOL, RDF+RDFs

Langages de représentation d'ontologies

Règles de production

Fonctions et procédures

Axiomes

Concepts, relations, instances et faits

Eléments du domaine de connaissances

Figure 1. L'expressivité des langages de représentation d'ontologies.

I.4.4 Conclusion

C'est ainsi que nous achevons l'analyse des notions d'ontologies et de bases de connaissances. Nous avons cerné l'ensemble des méthodes, formalismes et outils permettant la manipulation de ces notions de représentation de connaissances. L'un des points remarquables soulignés par (Gómez 1999), est l'introduction d'un type d'ontologie particulière : ontologie de domaine-tâche. Ce type d'ontologie fournit un ensemble de termes au moyen desquels on peut décrire dans un domaine donné comment résoudre un type de problème. En ce qui nous concerne, nous nous intéressons au domaine de l'ingénierie logicielle dans la suite, et en présentons les principales notions.

I.5 Processus d'ingénierie logicielle

Le logiciel fait de plus en plus partie intégrante de notre vie. Dans notre environnement : les contrôles aériens, les systèmes bancaires, les systèmes de gestion des ministères, la télésurveillance et les systèmes de santé en sont quelques exemples. Les exigences et la demande croissent avec cette évolution des technologies, rendant le développement de logiciels plus rapide. Cependant tout cela ne doit pas s'accomplir au détriment de la qualité que nous voulons toujours meilleure. Les ingénieurs logiciels doivent parfaitement maîtriser l'ingénierie logicielle. Elle repose sur un ensemble de processus constituant le cycle de vie du logiciel et permettant de fournir un produit livrable. Chaque processus décrit une série de tâches à accomplir et les livrables intermédiaires à fournir. Ces processus ont été soumis à la normalisation internationale et leur respect est un gage reconnu de qualité.

I.5.1 Définition

(Bézivin 2003) définit un processus comme étant ce qui permet, pour atteindre un but donné, de définir comment procéder. En d'autres termes, définir un processus, c'est définir les différents travaux qu'il comporte, et pour chacun de ceux-ci :

- Qui le fait (le qui) ?

- Ce qu'il faut faire (le quoi) ?

- À quel moment le faire (le quand) ?

- Dans quelles conditions il faut le faire (le comment) ?

- Quelles sont les raisons, les décisionnaires, le contexte et les objectifs de l'action (le pourquoi) ?

Le schéma de la Figure 2 résume la particularité des processus d'ingénierie logicielle.

PROCESSUS D'INGENIERIE LOGICIELLE

SPECIFICATIONS NOUVELLES OU MODIFIEES

SYSTEME NOUVEAU OU MODIFIE

Figure 2. Le processus d'ingénierie logicielle : son rôle.

(Ambler 1999) apporte une autre vision à cette notion, en définissant un processus d'ingénierie logicielle comme un ensemble de phases de projet, d'étapes, de méthodes, de techniques et de pratiques que des personnes utilisent pour développer et maintenir des logiciels et les artefacts associés (plans, documents, modèles, code, tests, etc.).

I.5.2 Importance des processus

Le besoin réel généralement exprimé est celui d'un processus à la mesure précise des exigences de l'utilisateur. Un processus d'ingénierie logicielle efficace permet à une organisation d'accroître sa productivité lors du développement de logiciels pour plusieurs raisons. Premièrement, parce que maîtriser les fondamentaux du développement d'un logiciel permet de prendre des décisions intelligentes. Deuxièmement, parce qu'il permet de standardiser les efforts de l'organisation, de promouvoir la réutilisation et la consistance entre plusieurs équipes de projets. Troisièmement, parce qu'il fournit l'opportunité d'introduire les meilleurs exercices en industrie (« industry best practices ») telles que les inspections de code, la gestion de configuration, le contrôle des changements et la modélisation de l'architecture dans l'organisation de développement. Il permettra aussi d'améliorer la maintenance de l'organisation et de supporter les efforts de plusieurs manières, telles que la gestion des changements de logiciel.

L'intérêt qu'une entreprise a de nos jours à adopter un processus de développement logiciel ou à améliorer un existant réside dans le fait qu'autrement, ses chances de succès s'aminciront. Car les moyens employés pour la production de logiciels se doivent d'être efficaces. En plus, beaucoup d'entreprises gèrent de multiples projets en parallèle, à cause de la demande. L'objectif principal étant la réduction du coût de développement en même temps que l'accroissement de sa vitesse et de son efficacité.

I.5.3 Ce qu'il faut pour un processus d'ingénierie logicielle

L'approche processus permet d'une part, d'identifier clairement les activités nécessaires à la réalisation des produits-clés de l'entreprise, et d'autre part, d'articuler ces activités pour atteindre de manière répétable et prévisible les objectifs des projets et de l'entreprise. Une entreprise peut se baser sur des référentiels tels que CMM ou SPICE pour définir ses processus (Renault 2004). Le CMM (Capability Maturity Modeling) est un environnement, développé par l'Institut de Processus Logiciel (SEI) de l'Université de Carnegie Melon. Cet outil définit cinq (05) niveaux de maturité (niveaux initial, répétable, défini, dirigé, optimisé) permettant la classification des entreprises par rapport aux processus qu'elles envisagent d'utiliser. Adopté par des centaines d'entreprises de par le monde, ce moyen les amène à augmenter leur degré de maturité, qui va avec la réduction des risques, l'amélioration du contrôle de la gestion dans le développement de produits logiciels. Quant à SPICE (ou ISO 15504), c'est un modèle de maturité accompagné d'une méthode d'évaluation proposés par l'ISO. Mais ces référentiels s'avèrent assez lourds à utiliser, en terme de volume d'information et de ressources nécessaires. Cela constitue souvent un frein à leur diffusion dans des petites et moyennes structures.

La Figure 3 situe le processus d'ingénierie logicielle dans l'entreprise et présente les facteurs extérieurs pouvant l'influencer.

PROCESSUS D'ENTREPRISE

PROCESSUS D'INGENIERIE LOGICIELLE

PROCESSUS DE DEVELOPPEMENT

OUTILS

ARCHITECTURE

STANDARDS

CULTURE

LEGISLATION

PROCESSUS EXTERNES

Figure 3. Situation du processus d'ingénierie logicielle dans l'entreprise.

I.5.4 Les processus d'ingénierie logicielle aujourd'hui

Nous présentons sommairement où se situe ce domaine aujourd'hui. Notre souci n'est pas de faire un état de l'art des processus, mais de nous concentrer sur l'aspect évolution de ces derniers, afin de mieux situer le contexte actuel.

Il existe en effet dans ce domaine une évolution considérable. Car il y a quelques années encore, les termes les plus couramment utilisés étaient méthode et méthodologie. C'est ainsi que l'on a distingué trois (03) générations de méthodes, depuis les années 1970, suivant qu'un système soit perçu d'un point de vue fonctionnel, systémique ou objet.

- Les méthodes cartésiennes : caractérisées par les méthodes d'analyse fonctionnelle et de décomposition hiérarchique, elles trouvent leur origine dans les langages de programmation procéduraux ; brièvement, elles proposent de fonctionner par affinage des fonctions mères en des sous-fonctions ; on peut leur compter SADT, Jackson, Yourdon, CORIG (Bouzeghoub 1997) ;

- Les méthodes systémiques : développées dans les années 80, elles s'inspirent de la théorie systémique des organisations où le système d'information est perçu comme un objet complexe dont il faut définir la structure et les objets fonctionnels ; ces méthodes ont dominé le monde du génie logiciel durant les années 80 et au début des années 90 et s'appliquent en grande partie aux systèmes d'information orientés gestion tels que les applications bancaires, d'aide à la gestion d'entreprise ; on peut leur compter Merise, Axial, Information Engineering ;

- Les méthodes objets : advenues dans les années 90, elles introduisent le concept objet dans la conception des systèmes d'information et permettent ainsi la description de la dynamique des systèmes par les opérations liées aux objets des systèmes ; l'approche objet insiste sur les aspects de modularité, réutilisabilité, extensibilité du code, maintenabilité et évolutivité du système. Elle a entraîné la distinction entre le langage de modélisation (différents diagrammes et symboles utilisés pour représenter les éléments de la modélisation), processus de modélisation (enchaînement d'activités à suivre pour la réalisation du produit) et langage d'implémentation supportant les paradigmes objets. L'approche objet s'est, depuis le milieu des années 90, imposée comme un standard de fait dans l'industrie de l'ingénierie logicielle (Jacobson 1999) ; c'est pourquoi dans la suite, nous nous étendrons sur ces méthodes.

Partant donc de cette dernière avancée, qui a définitivement rendu l'approche objet dominante dans le monde du génie logiciel, les nouvelles méthodes, plus couramment désignées processus, ont vu le jour. Parmi les processus de développement les plus utilisés au début des années 2000, se trouvent OPEN, OOSP et RUP.

OPEN est un processus unifié proposé par le consortium OPEN. Il est issu de la fusion de plusieurs méthodes : MOSES, SOMA, Firesmith, Synthesis, BON et OOram (Ambler 1999). Il supporte notamment les notations UML et OML (Object Modeling Language). C'est un processus guidé par les responsabilités. Les activités y décrivent l'architecture globale du processus, et avec les tâches, elles décrivent ce qui doit être fait au cours du processus. Quant à comment cela doit être fait, un ensemble de techniques est employé. OPEN prend en compte la gestion de programmes, un programme étant ici un ou plusieurs projets ou encore une ou plusieurs versions d'une application ou d'une suite d'applications. Ce processus a malheureusement souffert d'une politique de marketing défaillante, d'où sa faible vulgarisation.

Le processus logiciel OOSP (Object-Oriented Software Process) propose une approche par phases, étapes et tâches telles que l'assurance de la qualité, la gestion de projets, l'entraînement et l'éducation, la gestion de personnes, des risques, de la réutilisation, etc. Comme la précédente elle n'est pas assez vulgarisée.

RUP (Rational Unified Process) est le processus phare de la corporation Rational. C'est sans doute l'adaptation du célèbre processus unifié UP (Unified Process) la plus répandue dans le milieu industriel. Il s'est imposé grâce à quelques atouts. Il est basé sur des principes d'ingénierie logicielle solides tels que une approche de développement itérative, guidée par les besoins et basée sur l'architecture. De plus, Rational a largement investi dans son produit RUP, une description basée sur HTML, que nous décrirons plus loin.

Enfin, EUP (Entreprise Unified Process), une proposition de Ronin International, est l'une des toutes dernières adaptations de UP, qui se veut être l'adéquation de RUP aux besoins réels des entreprises. Car, l'un des défauts de RUP étant la prise en compte d'un unique projet, l'améliorer en gérant plusieurs projets dans les mêmes délais est plus proche des réalités industrielles. C'est principalement ce qu'apporte EUP. Nous espérons que cette méthode connaîtra un succès comparable à celui du RUP lui même.

Et c'est ainsi que s'achève cette brève revue de l'état actuel des processus d'ingénierie logicielle. Nous avons donc présenté les processus d'ingénierie logicielle et nous nous sommes situés par rapport à ces processus dans le contexte actuel de leur évolution. Le cadre de notre travail n'en est que mieux défini.

I.6 Le projet CIAO-SI

Le projet CIAO-SI vise l'étude de faisabilité, la conception et la mise en oeuvre d'un système permettant d'offrir une assistance au concepteur pendant le processus de développement de logiciels et de capitaliser l'expérience acquise avec le développement d'applications, en constituant une mémoire réutilisable des modèles de conception.

I.6.1 Approche adoptée

L'approche adoptée pour aboutir à un tel système s'appuie sur le CBR (Case-Based Reasoning). Le CBR est une approche de résolution de problèmes qui propose de résoudre de nouveaux problèmes par adaptation de solutions viables aux problèmes similaires déjà résolus.

Les grandes questions que le projet se propose de résoudre sont les suivantes :

- Comment intégrer le raisonnement à base de cas dans le processus de conception de logiciels ?

- Comment produire des modèles génériques adaptatifs et comment les indexer ? Comment mesurer la similarité entre de tels modèles afin de sélectionner le plus adapté à un contexte donné ?

- Comment assister le concepteur pendant l'adaptation d'un modèle ?

- Quelles connaissances sont nécessaires au système pour réaliser une assistance intelligente dans la conception des systèmes d'information ? Comment représenter de telles connaissances et les rendre utilisables par le système ?

I.6.2 Les grandes lignes du projet CIAO-SI

Ce projet comporte sept (07) modules, en l'occurrence :

- La gestion des ontologies : il s'agit de spécifier les ontologies du domaine d'application et ceux du processus de développement, puis de construire les bases de connaissances associées au domaines d'application, ainsi qu'aux deux processus de développement MERISE et RUP.

- La gestion des cas : ce module s'occupe de la définition de la structure d'un cas et permet la création et la mise à jour des cas.

- L'exploitation des cas : elle consiste à mettre en oeuvre des techniques d'indexation et de recherche des cas.

- L'adaptation des cas : ce module porte sur la spécification et la construction d'un système pour l'adaptation des cas ; le système pourrait être constitué d'un agent spécialisé dans l'adaptation des cas et d'un agent interface.

- L'intégration : il s'agit d'intégrer les sous-systèmes déjà construits (gestion des cas, recherche des cas, adaptation des cas) en vue de produire la première version utilisable/prototype du système CIAO-SI.

- La gestion de l'assistance : elle va spécifier, concevoir et construire un système pour l'assistance du concepteur pendant le processus de développement.

- La réutilisation du code : c'est le lieu d'étendre le système CIAO-SI à la réutilisation au niveau du code source.

I.6.3 Notre rôle dans le projet CIAO-SI

Du fait qu'il existe déjà des ontologies associées à certains processus de développement (RUP par exemple) ou encore à certains domaines d'applications (Gestion des Ressources Humaines par exemple), il serait judicieux de pouvoir exploiter de telles ontologies et d'éviter de reconstruire. C'est pourquoi nous interviendrons dans la gestion des ontologies pour plusieurs tâches :

- L'acquisition des éléments d'ontologies liées aux processus de développement :
Il s'agit de permettre à un expert de décrire et mettre à jour les connaissances sur des processus de développement, par le biais d'interfaces génériques, d'importer des ontologies existantes (ontologies développées avec des outils tiers et stockées dans un format standard, XML par exemple), en extraire les éléments utiles pour le système CIAO-SI et les stocker dans la base de connaissances du projet CIAO-SI. Le métamodèle SPEM (OMG 2002b) nous sert de base pour la description des processus.

- L'exploitation des éléments d'ontologies liées aux processus de développement :
Les éléments d'ontologies liés aux processus de développement sont exploités par le module de Gestion des cas (Ngantchaha 2002) et le module d'Assistance (Moghomaye 2003). Il s'agira donc d'exporter les processus et de décrire les interfaces de présentation des processus.

I.7 Conclusion

C'est ainsi que peut être posé le problème à résoudre. En présentant les notions d'ontologies et de bases de connaissances, en introduisant les processus d'ingénierie logicielle, notre souci est de nous ramener au coeur du sujet même. Cela a comme conséquence de faciliter la vision de la portée du problème et de cerner le champ d'évolution du reste de notre travail. Nous pouvons à présent procéder à une analyse de l'existant dans le domaine des processus d'ingénierie logicielle, particulièrement en ce qui concerne leur réutilisation.

Etat de l'art de la réutilisation des processus d'ingénierie logicielle

Réutiliser, c'est faire une nouvelle utilisation. La conservation du patrimoine d'illustres prédécesseurs dans le domaine de la science en général, et des génies en particulier, a comme l'un des buts principaux leur réutilisation. En effet, une évolution bien menée doit tenir compte de l'existant pour éviter une rétrogradation. Nous avons eu à poser le problème de la réutilisation dans le domaine de l'ingénierie logicielle, qui s'avère important dans la mesure où plusieurs étant reconnus et largement utilisés, le gain à en disposer pour une exploitation illimitée à tous les projets est considérable pour une entreprise de développement de logiciel. Nous comprenons par là qu'elle suppose à la fois la disponibilité de ces processus et leur exploitabilité. Historiquement, l'on pourrait faire remonter le début des investigations sur la réutilisation dans les processus d'ingénierie logicielle, après l'essor des modèles dans les structures de données. En effet, on est parti en complexité croissante depuis la technologie procédurale, puis la technologie des objets pour celles des composants. Plusieurs modèles sont alors apparus pour en faciliter l'uniformisation et la réutilisation : IDL, Corba, UML, etc. Le même besoin s'est produit en ingénierie logicielle, soutenu par les efforts d'uniformisation pour les meilleurs échanges entre processus, et donc une plus efficace réutilisation.

I.8 Vers une solution d'ensemble

Les efforts de développement de modèles dans l'ingénierie logicielle ont suivi une démarche que nous récapitulons dans les lignes qui suivent (Bézivin 2003).

I.8.1 Diagrammes de Gant

Les diagrammes de Gantt ont été créés par Henry Gantt dans les années 1920. Un diagramme de Gantt permet de décrire l'ensemble des activités d'un processus sous la forme de barres placées sur un calendrier. On a ainsi une vue graphique de l'ensemble des activités, de leurs durées et de leur ordonnancement. Le métamodèle des diagrammes de Gantt définit un processus comme un ensemble d'activités, chaque activité étant dotée d'une date de début et d'une date de fin.

 

01/02

14/02

21/02

01/03

Activité 1

 
 
 
 

Activité 2

 
 
 
 

Activité 3

 
 
 
 

Tableau 1. Illustration d'un diagramme de Gantt : les débuts de la planification.

I.8.2 Diagrammes PERT

Les PERT (Program Evaluation and Review Technique) ont tout d'abord été utilisés par le département américain de la défense. Un PERT est un graphe orienté qui montre les activités, leur durée ainsi que leur ordonnancement. Un processus vu comme un PERT est donc une suite d'activités, chaque activité ayant une durée et pouvant suivre ou précéder d'autres activités.

ACTIVITE 1

3 JOURS

ACTIVITE 2

2 JOURS

ACTIVITE 3

1 JOUR

ACTIVITE 4

3 JOURS

Tableau 2. Illustration du diagramme de PERT : les délais remplacent les dates.

Contrairement à une activité d'un diagramme de Gantt, une activité d'un PERT ne définit pas de date.

Il a été utile de présenter ces deux exemples, car ce sont les premières tentatives de représentations de processus, définissant déjà les concepts minimaux. Ils montrent bien qu'il y a toujours eu de multiples façons de modéliser les processus, chacune utilisant plus ou moins de concepts en insistant sur certaines propriétés qui en font les avantages et inconvénients.

I.8.3 PIF

PIF (Process Interchange Format) est issu des besoins de diverses organisations (MIT, DEC, Stanford) de partager leurs modèles de processus. Les spécifications de PIF définissent à la fois un métamodèle de processus et une syntaxe basée sur KIF. Le projet PIF a débuté en octobre 1993 et la notation a progressivement évolué au cours des années. Aujourd'hui PSL ( I.8.4 PSL) et PIF sont en train de fusionner pour intégrer des concepts de processus tertiaires et industriels dans une seule et unique ontologie. Le noyau du métamodèle de PIF définit un ensemble d'entités plus ou moins minimal. Cet ensemble de base peut être enrichi en utilisant le mécanisme d'extension appelé Partially Shared View (PSV). Un module PSV hérite du module racine (le noyau du métamodèle) ou d'un autre module PSV. Ce nouveau module PSV définit de nouvelles entités en spécialisant des entités d'autres entités déjà définies dans des modules de plus haut niveau.

PIF définit un processus comme un ensemble d'activités qui ont des relations entre elles ainsi qu'avec des objets à des moments dans le temps. Tous ces concepts héritent d'une entité commune nommée Entity. Le concept d'activité, Activity, définit tout ce qui arrive dans le temps, que ce soit un processus, une tâche ou même un événement. Les instants, Timepoints, peuvent être soit des dates précises soit des instants indéfinis (par exemple l'instant auquel une tâche prend fin, où un événement survient). Les Objects représentent toutes les autres entités impliquées dans un processus. Cette notion recouvre les artefacts, les données, les outils, ou même les acteurs humains ou mécaniques (Agent). Toutes ces entités sont reliées par des relations.

Figure 4. Le modèle PIF : une représentation des concepts des processus (Bézivin 2003).

I.8.4 PSL

L'objectif de PSL (Process Specification Language) est de définir une ontologie et un format standard pour l'échange des processus industriels. PSL définit un métamodèle noyau basé sur des théories fondamentales qui définit les concepts et les relations de base. En plus de ce module de base, un certain nombre d'extensions ont été prédéfinies. Chacun de ces modules spécialise une des entités basiques (ainsi l'extension ProcessorAction spécialise le concept d'Activity tandis que l'extension ResourcePools raffine la notion d'Object).

L'ontologie PSL définit un processus comme un ensemble d'activités (activity) dans lesquelles sont impliquées des objets (object) à des instants donnés (timepoint). Dans PSL, tout est activité, objet ou instant. PSL introduit également la notion d'occurrence d'activité (activity occurrence). Cette base minimale est enrichie dans des modules d'extension qui définissent par exemple des activités non déterministes, des quantités sur les objets ou un ordonnancement temporel sur les instants.

Figure 5. Le modèle PSL : les principaux concepts et les relations entre ces concepts (Bézivin 2003).

I.8.5 CPR

CPR (Core Plan Representation) est un projet du DARPA qui se concentre principalement sur la planification (spécification d'une liste d'actions ayant pour but de répondre à un ensemble d'objectifs) ainsi que sur la prévision (spécification des moments auxquels seront réalisés les activités et des quantités de ressources utilisées).

CPR a pour but de modéliser un plan, c'est-à-dire un ensemble d'actions réalisées pour répondre à des objectifs. Les concepts de CPR sont les actions (Action), les acteurs (Actor), les objectifs (Objective) et les ressources (Resource). Une action est réalisée par un acteur pour accomplir des objectifs. Des ressources peuvent être consommées lors de la réalisation d'une action. L'acteur d'une action peut être la ressource d'une autre.

Le métamodèle présenté précédemment est prévisionnel et ne permet pas de mettre en relation un modèle de plan avec ses occurrences. C'est dans ce but qu'a été ajouté le concept de WorldModel qui permet de représenter des instances de plan. L'exécution d'un plan est structurée de la même manière que sa conception mais alors qu'une conception prévoit la façon dont doivent se dérouler les occurrences, l'exécution du plan représente ce qui s'est effectivement passé.

Figure 6. Le modèle CPR : prise en compte des instances de plan (Bézivin 2003).

I.8.6 WfMC

La Workflow Management Coalition (WfMC) est un consortium international d'éditeurs de worfklow, d'utilisateurs, d'analystes et de groupes de recherches donc l'objectif est de promouvoir l'utilisation du workflow. La WfMC propose un modèle de référence de processus qui définit le métamodèle de processus ( Figure 7).

Figure 7. Le modèle de référence proposé par WfMC (Bézivin 2003).

I.8.7 SPEM

SPEM (Software Process Engineering Metamodel), est une recommandation de l'OMG utilisée pour décrire les processus de développement logiciel ou les familles de processus liés. Lors de la gestion de l'assistance dans les précédents travaux (Konhawa 2003), ce métamodèle a servi de base à la création des bases de connaissances des processus RUP et MERISE. Puisque son importance a déjà été largement prouvée, nous nous en servirons comme métamodèle pour les processus de développement à décrire par les experts. Néanmoins, nous rappelons dans ce paragraphe l'essentiel sur ce métamodèle.

Présentation de SPEM

SPEM se fonde sur l'idée selon laquelle un processus de génie logiciel met en collaboration des développeurs ayant des Rôles, chaque développeur réalisant une ou plusieurs Activités, et chaque activité prenant en entrée des Artefacts et/ou produisant de nouveaux Artefacts ou ceux pris en entrée et modifiés ; un artefact pouvant être un livrable ou un produit de travail utilisé et/ou produit au cours du développement (OMG 2002b). La Figure 8 illustre cette collaboration.

Figure 8. Les fondements du métamodèle SPEM : collaboration Rôle-Artefact-Activité (OMG 2002b).

En plus des notions de rôle, activité et artefact, SPEM introduit plusieurs autres notions pour permettre la modélisation d'un processus. Ainsi, la spécification fournit un modèle générique pour la structure d'un processus, contenant les principaux concepts manipulés par le processus.

Conformité au méta-métamodèle MOF

MOF (MetaObject Facility) est la technologie adoptée par l'OMG pour la définition de méta - données et leur représentation comme des objets CORBA. MOF se situe au niveau le plus élevé de la modélisation, le niveau M3. Il peut donc servir pour la définition de SPEM qui se situe au niveau M2. SPEM est le métamodèle de processus d'ingénierie logicielle, c'est-à-dire qu'il définit un modèle d'un niveau d'abstraction au dessus de celui d'un processus et dont une instance serait la définition d'un processus effectif. La Figure 9 montre l'architecture, à quatre couches, de la modélisation telle que définie par l'OMG. Un processus effectif, qu'on peut directement mettre en oeuvre, est au niveau M0. La définition d'un tel processus est au niveau M1. SPEM se situe au niveau M2, celui du métamodèle, et sert comme modèle (template) pour le niveau M1.

Figure 9. Les niveaux d'abstraction de la modélisation selon MOF (OMG 2002b).

SPEM comme profil UML

Un profil UML est une adaptation de UML qui utilise les mécanismes d'extension offerts par UML de façon standardisée pour un but ou un domaine particulier. Un profil UML fournit des stéréotypes pour les entités caractérisant le domaine pour lequel il est défini.

SPEM est défini à la fois comme un métamodèle de processus et comme un profil UML pour le domaine que constitue l'ingénierie des processus de développement de logiciels. Ce qui permet aux développeurs de tels processus d'utiliser UML comme notation. La Figure 10 donne la façon de décrire les éléments d'un processus comme des stéréotypes UML.

Figure 10. Correspondance entre SPEM et les éléments du métamodèle de UML (OMG 2002b).

Une telle correspondance permet de définir un processus de développement logiciel en UML en faisant usage de stéréotypes propres à SPEM, ceci en représentant les éléments stéréotypés propres au processus par les éléments d'UML proposés par la figure de correspondance, c'est-à-dire les classes et les diagrammes d'activités.

SPEM comme DTD XMI

XMI (XML Metadata Interchange) est un format d'échange de méta-données (c'est-à-dire de modèles) définies conformément au standard MOF (OMG 2002a). Lorsque SPEM est vu comme un métamodèle basé sur MOF, une DTD XMI correspondant à ce métamodèle peut être élaborée pour l'échange des informations contenues dans les modèles SPEM produits à partir du métamodèle. Une telle DTD existe et est disponible dans la spécification de SPEM publiée par l'OMG (OMG 2002a).

SPEM est déjà largement accepté. Ainsi, il pourrait servir de moule, quelque soit le processus décrit par un expert.

I.8.8 Conclusion

C'est ainsi que nous achevons ce parcours de l'évolution de la réutilisation dans l'ingénierie des processus de développement. Nous avons présenté comment les efforts de la communauté du domaine ont conduit à l'adoption de modèles et métamodèles. Ceci en partie dans le but d'uniformiser les définitions, faciliter les échanges et bien entendu améliorer la réutilisation des processus. SPEM ressort comme le choix le plus consensuel.

I.9 Les solutions existantes

La réutilisation des processus d'ingénierie logicielle connaît à ce jour plusieurs approches concrètes de réalisation. C'est ainsi que de par le monde, des applications sont mises sur pied, utilisées et divulguées pour certaines. Mais nous estimons que si pour la plupart, elles restent cantonnées au milieu industriel, c'est dû à la vulgarisation encore jeune de l'ingénierie logicielle, surtout pour des personnels. Néanmoins, une certaine tendance dans ce développement voit le jour, mettant à la disposition de personnels des solutions adéquates. Comme nous l'avons mené jusqu'ici, nous nous intéresserons à celles qui se basent sur le métamodèle SPEM. Dans les lignes qui suivent, nous étudions un ensemble d'outils, qui supportent le développement de processus d'ingénierie logicielle, conformes au métamodèle SPEM.

I.9.1 SPEARMINT/EPG

Description

SPEARMINT™ (Fraunhofer 2004), de Fraunhofer IESE, est un outil de modélisation graphique pour la description de processus de développement logiciel. Le schéma conceptuel des informations sur les processus de l'outil est un sous-ensemble simple mais expressif du métamodèle SPEM. L'outil utilise une notation graphique proche d'UML, qu'il est facile d'utiliser, et assez puissante pour décrire des processus réalistes complexes.

En plus de modéliser le support pour les processus, SPEARMINT fournit des possibilités d'analyse et les moyens de produire un guide de processus électronique (Electronic Process Guide ou EPG) et/ou un manuel de processus d'un modèle de processus. En fait, le guide est une documentation électronique, qui fournit toutes les directives aux développeurs pour le bon déroulement d'un processus précédemment décrit. Tandis que des modèles de processus peuvent être stockés dans des bases et être utilisés par des chefs de projet pour la planification de projet, les EPGs sont mis sur l'Intranet d'une compagnie pour fournir l'accès facile et distribué aux descriptions de processus normalisées et/ou spécifiques au projet aux interprètes de projet. Des manuels de processus sont basés sur la DTD DocBook et servent de documentation imprimée de processus tel qu'exigée par CMM, ISO 9000, et ISO 15504. Un bon exemple publiquement disponible est la méthode KobrA2(*), un EPG pour la ligne de produits de technologie basée sur les composants avec UML.

Une version de démonstration de SPEARMINT™/EPG, fournissant toutes les fonctionnalités, mais avec la taille modèle limitée à de petits et moyens processus, est disponible gratuitement sur le WWW3(*). Nous l'avons téléchargée et testée.

Figure 11. SPEARMINT/EPG : un exemple de modélisation.

Avantages et inconvénients

Ses fonctionnalités principales se résument en la spécification d'un processus tel que SPEM le recommande (définition des rôles, artefacts, etc.) (OMG 2002b). L'édition graphique est assez avancée et simple d'utilisation. Une fonctionnalité intéressante, est la vérification de la consistance du modèle au métamodèle SPEM de manière automatique (les objets causant ces erreurs sont surlignés en rouge). Il faut préciser que cet outil dispose de son propre outil métamodèle (dérivé de SPEM), et il définit plus de cinquante (50) règles de vérification de la consistance à ce métamodèle (Becker 2003).

Du fait de l'approche de modélisation multi-vues (Multi-View Modeling ou MVM) utilisée par SPEARMINT, il peut survenir des inconsistances lors de l'intégration des différentes vues. C'est pourquoi cet outil dispose aussi d'un vérificateur paramétrable de similarité entre modèles (Becker 2003). Comme mentionné plus haut, il est possible de générer l'EPG et le manuel du processus décrit. Il existe aussi des possibilités d'importation et d'exportation au format XML, mais nous n'avons pas pu expliciter cet aspect sans la documentation à propos. SPEARMINT est portable, car développée avec le langage Java. Il existe des plug-ins livrés avec SPEARMINT, notamment pour le calcul de certaines caractéristiques de processus comme sa complexité. Il faudrait aussi mentionner que la version complète est commercialisée.

I.9.2 BORE

Description

BORE (Building an Organisational Repository of Experiences) est un prototype conçu pour explorer et raffiner plus tard les besoins d'outils supportant des approches basées sur l'expérience. Son but a été comme prototype de preuve-de-concept, qui est employé pour articuler l'étude d'organisation et les techniques de développement de logiciel basées sur l'expérience. Cet outil crée un cadre pour l'usine d'expérience, en combinant une structure de panne de travail avec des outils de dépôts pour concevoir des méthodologies de processus de logiciel, et la technologie de dépôt pour capturer et appliquer des artefacts (objets façonnés) de la connaissance. L'outil et méthodologie BORE prolonge le concept d'usine d'expérience par une mise sur pied de processus basée sur les règles, le support de la modélisation et l'établissement de processus, et les facilités d'étude d'organisation basées sur les cas.

Le prototype BORE est une application disponible sur le WWW4(*). C'est une applet java.

Figure 12. BORE : un aperçu du gestionnaire de tâches.

Avantages et inconvénients

De ce que nous avons pu tirer après les tests de cette application, nous retenons principalement qu'elle permet de fournir, modifier et utiliser les processus de développement dans un dépôt. En effet, il est possible, pour un processus décrit, de spécifier les rôles, les activités (tâches), etc. Il est aussi possible d'exporter et importer d'autres processus (au format Microsoft Project Files). Ce n'est pas un outil de modélisation graphique, donc il est basé sur les rapports, qu'il est possible de générer.

La documentation faisant défaut, nous n'avons pu aller plus loin. Notamment, nous le pressentons comme étant inspiré de SPEM mais sans certitude. Il pèche aussi par les formats d'exportation limités à Microsoft Project Files. Bien que les publications de déroulement de processus soient générées au format .doc. Pour travailler sur BORE, il faut avoir des droits d'administrateur dont l'attribution n'est pas explicite.

I.9.3 APES

Description

APES est une suite de logiciels de construction de processus, développée par AubryConseil. AubryConseil est une société spécialisée en génie logiciel et processus. Claude AUBRY, son directeur, a ainsi pu avec des étudiants de l'Université Paul Sabatier de Toulouse, réaliser cet outil dont la principale fonction est de suivre la réalisation de processus de développement logiciel, depuis leur modélisation jusqu'à leur exécution.

Architecture

APES constitue une suite de quatre (04) outils indépendants :

- L'outil de modélisation pour la conception du processus sous forme de composants, avec la validation de la conformité à SPEM (dénommé Apes2) (Aubry 2004a).

- L'outil de présentation pour la spécification de la bibliothèque du processus (et des interfaces) (POG ou YGAEL) (Aubry 2004b).

- L'outil de publication pour l'assemblage des composants, la génération d'un site de présentation du processus et l'exportation au format XML (IEPP) (Aubry 2004c).

- L'outil d'exécution pour la gestion d'un projet à l'aide d'un processus précédemment publié, la publication d'un site d'artefacts, le suivi de l'évolution du projet (PEACH ou EUGES ou AGP) (Aubry 2004d).

Nous les avons téléchargés et testés, pour en appréhender les fonctionnalités.

Distribution

APES est la première famille d'outils disponible en Open Source dans le domaine de l'ingénierie des processus. Les sources de tous les outils de la suite, développés par des étudiants de l'IUP ISI5(*) de l'Université Paul Sabatier de Toulouse, sont accessibles ainsi que leurs documents de développement sur le WWW6(*). Chacun de ces outils est en effet sous la licence GNU GPL. Nous étudions les opportunités offertes par cette licence dans l'annexe B.

Approche

APES utilise une approche de développement par composants, car il s'agit de définir un processus composant par composant. Chaque composant étant en soi indépendant, les composants peuvent être ensuite assemblés pour former un processus complet. L'intérêt de cette approche se trouve surtout dans la répartition des tâches pour le développement des processus, car plusieurs équipes pourront développer chacune leur composant pour plus tard les assembler.

Autres caractéristiques

Modélisation visuelle

La représentation utilisée par APES est celle des diagrammes UML, avec des extensions liées à la modélisation des processus. Ainsi, chaque processus est modélisé de manière entièrement graphique.

Indépendance des méthodologies et processus

APES est indépendant de toute méthodologie et permet de prendre en compte n'importe quel processus. L'outil d'exécution (Aubry 2004d) est particulièrement adapté à des processus itératifs (comme RUP ou XP).

* 1 http://www.cyc.com/cyc-2-1/cover.html

* 2 http://www.iese.fhg.de/Projects/Kobra_Method/

* 3 http://www.iese.fhg.de/Spearmint_EPG/Downloads/

* 4 http://cse-ferg41.unl.edu/bore.html

* 5 Institut Universitaire Professionnalisé d'Ingénierie des Systèmes Informatiques.

* 6 http://www.aubryconseil.com/apes/index.html






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il faut répondre au mal par la rectitude, au bien par le bien."   Confucius