PatternsBox Ptidej, intégration de deux outils de conception et de rétro-conception à Eclipse



Documents pareils
Projet de développement

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Environnements de développement (intégrés)

Intégration de l interface graphique de Ptidej dans Eclipse

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Patrons de Conception (Design Patterns)

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

ECLIPSE ET PDT (Php development tools)

S T L - C P S - L e s p l u g i n s E c l i p s e. - Une Introduction , Frédéric Peschanski

Évaluation et implémentation des langages

Visual Paradigm Contraintes inter-associations

TP1 : Initiation à Java et Eclipse

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

CONSERVATOIRE NATIONAL DES ARTS ET METIERS CENTRE REGIONAL RHÔNE-ALPES CENTRE D'ENSEIGNEMENT DE GRENOBLE EXAMEN PROBATOIRE

Générer du code à partir d une description de haut niveau

IFT6251 : Sujets spéciaux en génie logiciel

Introduction à Eclipse

Tutoriel code::blocks

Installation et prise en main

Construire des plug-ins pour SAS Management Console SAS 9.1

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

Architectures Ouvertes pour l Adaptation des Logiciels

Eclipse atelier Java

JOnAS Day 5.1. Outils de développements

Analyse comparative entre différents outils de BI (Business Intelligence) :

Vérifier la qualité de vos applications logicielle de manière continue

Maîtrisez la modernisation de votre patrimoine applicatif

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

TP1 : Initiation à Java et Eclipse

Éléments de programmation et introduction à Java

Introduction aux concepts d ez Publish

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Bases Java - Eclipse / Netbeans

Bien programmer. en Java ex. couleur. Avec plus de 50 études de cas et des comparaisons avec C++ et C# Emmanuel Puybaret.

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Expert technique J2EE

La démarche MDA. Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)*

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Christian Soutou UML 2. pour les. bases de données. Avec 20 exercices corrigés. Groupe Eyrolles, 2007, ISBN :

Point sur les solutions de développement d apps pour les périphériques mobiles

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Dafoe Présentation de la plate-forme UIMA

La Stratégie d Intégration Advantage

LES NOUVEAUTES DE COST AND PROFITABILITY MANAGEMENT 8.1

Brique BDL Gestion de Projet Logiciel

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

Sélection d un moteur de recherche pour intranet : Les sept points à prendre en compte

Manuel de System Monitor

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Formula Negator, Outil de négation de formule.

Drive your success. «Un écosystème complexe implique une capacité de gestion temps réel des aléas»

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

Applications distribuées: le retour du client "riche"

Business Process Execution Language

Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza

Rapport d activité. Mathieu Souchaud Juin 2007

CalDav Manager : Gestionnaire d emploi du temps

Annexe : La Programmation Informatique

Conception Exécution Interopérabilité. Déploiement. Conception du service. Définition du SLA. Suivi du service. Réception des mesures

Android 4 Les fondamentaux du développement d'applications Java

27 janvier Issam El Hachimi Ludovic Schmieder

TP1. Outils Java Eléments de correction

Paul FLYE SAINTE MARIE

AVANT-PROPOS INTRODUCTION INSTALLATION INSTALLER LE PLUGIN ZOTERO INSTALLER LE MODULE DE CITATION...

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

TD/TP 1 Introduction au SDK d Android

Armand PY-PATINEC 2010

Chapitre 1 : Introduction aux bases de données

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Sybase PowerAMC 16. Guide des nouvelles fonctionnalités générales. DOCUMENTATION

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

WHITE PAPER Une revue de solution par Talend & Infosense

Le développement d'applications informatiques

Portabilité sur système Android d un système de borne d information

IBM DB2 Alphablox. d administration GC

Prise en compte des ressources dans les composants logiciels parallèles

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Refonte front-office / back-office - Architecture & Conception -

Dynamiser l innovation tout en réduisant son coût

B-web V4 MANUEL D UTILISATION. Espace de travail. Clear2Pay Belgium SA B-web V4 Manuel d Utilisation: Espace de travail

Stage Ingénieur en développement logiciel/modélisation 3D

Mettre en place une infrastructure Web nouvelle génération avec Drupal et Acquia

Progiciel de gestion documentaire juridique & d édition Web et papier

Le génie logiciel. maintenance de logiciels.

pythonocc: une plateforme de développement agile d applications CAO.

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

NFP111 Systèmes et Applications Réparties

Cours Base de données relationnelles. M. Boughanem, IUP STRI

DotNet. Plan. Les outils de développement

Installer Enterprise Miner 5.1 en SAS environnement Windows

Ingénierie des Modèles. Méta-modélisation

Transcription:

This paper has been accepted to the GDR-ALP OCM day (In French) Ce papier a été accepté pour la journée du GDR-ALP OCM PatternsBox Ptidej, intégration de deux outils de conception et de rétro-conception à Eclipse Yann-Gaël Guéhéneuc, Hervé Albin-Amiot et Pierre Cointe Projet Obasco École des Mines de Nantes / INRIA Rennes 4, rue Alfred Kastler BP 20 823 44 307 Nantes Cedex 3 France {guehene albin cointe}@emn.fr Nous nous intéressons aux phases de conception et de maintenance de programmes à objets. Nous pensons que l utilisation des motifs (tels les motifs de conception de [2]) facilite, d une part, la conception et la documentation [1] et, d autre part, la compréhension et l amélioration [3] de ces programmes. Nous avons développé à l occasion de nos travaux de thèse de doctorat, PatternsBox [1] et Ptidej [3], deux outils de conception et de maintenance basés sur les motifs. PatternsBox permet (i) d appliquer les solutions recommandées par un ensemble de motifs de conception et (ii) d identifier dans l architecture d un programme à objets les solutions complètes correspondant à des motifs donnés. Ptidej permet (i) d identifier des solutions à des motifs donnés et leurs variantes et (ii) d identifier des défauts de conception dans l architecture du programme. Ces deux outils présentent un intérêt pour les développeurs essentiellement lorsqu ils sont intégrés avec les outils utilisés habituellement pendant les phases de conception et de maintenance. C est pourquoi nous les avons intégrés à des environnements de développements intégrés (EDI). Dans cet article, et après avoir présenté l EDI d OTI / IBM Eclipse [5], nous décrivons notre première expérience relative à l intégration de Ptidej avec Eclipse, puis nos projets quant à l intégration de PatternsBox. 1 Présentation de la plate-forme Eclipse Après Visual Age pour Smalltalk (199 ), Visual Age pour Java (1996) et Visual Age Micro Edition (1999), la plate-forme Eclipse représente une nouvelle génération d environnement de développement. Ce travail est en partie financé par Object Technology International, Inc. 2670 Queensview Drive Ottawa, Ontario, K2B 8K1 Canada Ce travail est en partie financé par Soft-Maint 4, rue du Château de l Éraudière 44 324 Nantes France. 1

Il s agit d une platform that has been designed from the ground up for building integrated web and application development tooling [6]. Eclipse a donc pour ambition d être une plate-forme universelle pour outils intégrés [4]. Eclipse est conçue pour faciliter le développement, l intégration et le partage d informations entre outils développés par différentes entreprises. Elle veut apporter une solution aux problèmes d interopérabilité (importation et exportation des données) entre outils et contribuer à limiter le foisonnement des interfaces graphiques utilisateurs. Pour cela, elle fournit un ensemble limité de services basiques communs à tous les outils et des mécanismes d extension, à partir desquels il est possible de développer et d intégrer des outils de différentes natures. 1.1 Modèle Eclipse définit un environnement générique et ouvert pour construire des outils intégrés à la plate-forme et interopérables. Générique Eclipse sait uniquement gérer des ressources. Les ressources sont soit des fichiers soit des dossiers ; organisés hiérarchiquement les unes par rapport aux autres. Elles sont accessibles grâce à un identifiant unique et indépendant de la localisation physique des fichiers (locale, sur l intranet, sur l Internet). Elle offre des services d ajout, de retrait, de modification (édition, attribut), de construction (analyse, compilation), d exécution et de contrôle de version (locales) de ces ressources. Elle offre également des mécanismes de marqueurs (pour marquer les ressources ou des points dans les ressources) ; de deltas (pour comparer deux ressources) ; de perspectives (pour rassembler en un tout cohérent des vues, des éditeurs, des menus...) ; de vues ; d éditeurs ; de menus et menus contextuels ; de barres d outils ; de pages de préférences ; de pages d aide. Ouvert Eclipse offre un modèle d extension simple et consistant. Une extension (plug-in) est en ensemble de classes qui vient étendre la plate-forme et les extensions déjà présentes en se greffant sur des points d extension (extension) définis par celles-ci. Une extension est automatiquement activée au démarrage de la plate-forme si nécessaire ou à la demande. Les points d extensions disponibles sont définis par la plate-forme et les extension existantes dans des fichiers XML associés (fichiers plugin.xml). Une extension indique à la plate-forme les points d extension qu elle utilise en associant à chaque point d extension la ou les classes mettant en œvre l extension (toujours dans le fichier plugin.xml). Les services de bases de la plate-forme eux-même sont définis comme des extensions au noyau minimal de la plate-forme. De plus, Eclipse est sous licence Common Public Licence v1.0 (CPL). Cette licence facilite la diffusion d outils intégrés à la plate-forme aussi bien sous la forme de code source libre que sous la forme d outils à usage restreint (commerciaux, par exemple) Intégrés À partir des points d extension, les outils peuvent venir s intégrer les uns aux autres, dans la limite où ils fournissent les points d extension nécessaire. La figure ci-contre décrit brièvement l intégration des extension. A third-party tool JDT PDE EclipseSDK Eclipseplatform Workbench JFace SWT Workspace Platformruntime V.C.M. Help Another third-partytool Yetanother third-partytool Yetagainanother third-party tool 2

1.2 Implémentation La plate-forme Eclipse est implémentée en Java. Elle offre, entre autres, les concepts et les services génériques suivants : la fenêtre Workbench représente l environnement de développement. L objectif du Workbench est de réaliser seamless tool integration and controlled openness by providing a common paradigm for the creation, management, and navigation of Workbench resources [6]. Plus d une fenêtre Workbench peut exister à un moment donné. La figure 1(a) montre la fenêtre Workbench vide ; chaque fenêtre Workbench contient une ou plusieurs perspectives. La figure 1(b) montre la perspective ressource, par défaut. La perspective ressource présente la vision la plus simple des données manipulées par la plate-forme. Elle définit une vue Navigator, figure 1(c), qui présente les ressources sous une forme hiérarchique et permet de les manipuler ; par exemple, d autre outils peuvent afficher et manipuler les ressources différemment de la vue Navigator. La perspective Java, qui offre un environnement complet pour le développement de programmes Java, définit une vue PackageExplorer dans laquelle les ressources sont affichées et manipulées sous la forme de paquetages et d unités de compilation, figure 1(d). de nombreuses perspectives et vues existent ou sont en développement, celles fournies par défaut avec Eclipse v2.0 sont : CVS Repository Exploring pour la gestion de versions ; Debug pour le débogage de programmes Java ; Java Browsing et Java Type Hierarchy pour le développement de programmes Java ; Plug-in Development pour le développement de nouvelles extensions à Eclipse ; un aspect multi-langage pour écrire des environnements de développement pour des langages autres que Java (par exemple, C++, Cobol ou Prolog) par l intermédiaire des points d extension liés aux éditeurs et au mécanismes de construction et d exécution : il est possible d écrire un éditeur pour un langage autre que Java et d étendre le mécanisme de construction et d exécution pour ce langage. un nouvelle bibliothèque de composants graphiques, SWT, plus efficaces (mémoire et vitesse de rafraîchissement) et mieux intégrés au système d exploitation sous-jacent. Les composants SWT se manipulent d une manière plus proche du langage C++ et très éloignée des abstractions de haut-niveau proposées par la bibliothèque Swing. 2 Intégration de Ptidej à Eclipse 2.1 Présentation de Ptidej Ptidej est un outil de rétro-conception de l architecture d un programme à objets basé sur les motifs de conception. Il permet de modéliser et de visualiser l architecture d un programme à la UML en analysant les classes du programme, puis d identifier les groupes de classes dont la structure et l organisation ressemble à la solution d un motif de conception donné, répertorié dans un référentiel. Ptidej offre une meilleure compréhension du programme pendant la phase de rétroconception en (i) modélisant l architecture du programme à un plus haut niveau d abstraction que son code source et en (ii) explicitant les motifs de conception utilisés. 3

De plus, Ptidej facilite l identification de défauts de conception : en identifiant les groupes de classes dont l organisation ressemble à un motif de conception ou à un défaut de conception donné. 2.2 Notre expérience Nous avons donc intégré l outil Ptidej à la plate-forme Eclipse. Cette expérience nous a permis de constater que : les services de gestion des ressources (fichiers Java, fichiers de projets) sont bien fournis par Eclipse et la perspective Java. Toute l implémentation relative à la lecture/écriture de fichiers est donc simplifiée ; la visualisation de l architecture du programme et des motifs de conception est intégrée à la perspective Java, le développeur n a donc pas besoin de changer d outil pour obtenir tantôt une vision Java, tantôt une vision architecturale de son programme. Par contre, nous avons également remarqué que : l organisation et le fonctionnement de Eclipse est difficile à comprendre au début. Il faut investir du temps pour avoir une vision claire du fonctionnement global de la plate-forme et des inter-actions entre ses services ; la documentation de la plate-forme, de ses services basiques et des perspectives par défaut sont parfois trop succinctes. Cependant, les listes de discussions autour de Eclipse sont très actives et permettent d obtenir une solution généralement rapide à tout problème (plus de 50 000 messages). la bibliothèque graphique SWT, utilisée par la Eclipse pour améliorer ses performances, oblige à réécrire l interface utilisateur et les bibliothèques graphiques dédiées (pour la visualisation de l architecture du programme, par exemple). L utilisation du motif de conception Usine abstraite facilite néanmoins cette réécriture ; Eclipse requiert beaucoup de ressources mémoire et un processeur rapide. Son utilisation peut donc se révéler frustrante sur des ordinateurs anciens. Elle est implémentée en Java, ce qui garantie une portabilité néanmoins limitée par l utilisation de la bibliothèque graphique SWT. La version Win32 fonctionne bien, les versions Linux sont moins optimisées et robustes ; les points d extension utilisés par un outil sont décrits dans un fichier XML. Ce fichier, généré automatiquement à partir de la perspective Plug-in Development, permet de découpler implémentation et intégration de l outil. Mais ce découplage est pénalisant lorsqu un problème survient : il n est pas toujours clair si le problème vient de l implémentation ou de la description de l extension dans le fichier ; Eclipse intègre par défaut l environnement de test JUnit. L environnement JUnit facilite grandement le développement et le test des programmes et des extensions. En conclusion, l intégration d outil à la plate-forme Eclipse nécessite, au départ, un important travail de compréhension. Une fois la plate-forme bien en main, l intégration d outils se révèle aisée et permet de rapidement développer et expérimenter des idées en se basant sur les services déjà existants. L intérêt majeur de Eclipse est donc la possibilité d étendre les services fournis par la plate-forme et par les outils déjà existant pour construire rapidement de nouveaux outils intégrés. 4

3 Intégration de PatternsBox : nos attentes 3.1 Présentation de PatternsBox PatternsBox est un outil permettant l application et la détection semi-automatisée des solutions de motifs de conception. Il est conçu pour assister le développeur pendant la phase d implémentation en s appuyant sur un environnement de développement intégré (VisualAge pour Java, à l heure actuelle). Contrairement à Ptidej, la détection proposée par PatternsBox n est pas destinée à la rétro-conception mais à la documentation et à la compréhension de bibliothèques de classes à l aide de motifs de conception. En particulier, elle n inclue pas la détection de formes approchées de motifs et ne propose pas de mécanisme de rétro-action pour corriger les formes approchées identifiées. La phase d application est prise en charge par un moteur de transformation source-àsource construit au dessus de l interface API Tool Integrator de VisualAge pour Java. Cette interface constitue en quelque sorte le seul point d extension de l EDI. Les limitations de cette interface nous ont conduits à mettre en place un analyseur syntaxique Java et une interface de manipulation du source dédiés à PatternsBox, alors que VisualAge pour Java inclut déjà ces fonctionnalités. La phase de détection se base, pour partie, sur une analyse de code octal. Notre choix d une analyse de code octal s explique par notre volonté d aider à la compréhension de bibliothèques de classes dont le code source n est pas nécessairement disponible ou distribué. VisualAge pour Java ne propose pas d accès direct au code octal des classes présentes dans son référentiel ; l accès doit être précédé d une phase d exportation coûteuse en temps. L intégration d un outil comme PatternsBox doit préférablement se faire en utilisant une interface graphique utilisateur semblable à celle de l EDI auquel il est intégré. VisualAge pour Java ne propose que très peu d accès à son interface graphique. Pour toutes ces raisons et de part la complémentarité de PatternsBox et de Ptidej, il nous semble intéressant d en proposer une version intégrée à Eclipse. 3.2 Attentes Par rapport à notre expérience d intégration de PatternsBox dans VisualAge pour Java, nous notons certains éléments qui devraient faciliter son intégration à la plate-forme Eclipse ; en particulier : 1. un accès simple à l arbre de syntaxe abstraite des classes dont le code source nécessite une modification ; 2. un accès au code octal de chaque classe à analyser ; 3. un accès au système graphique pour assurer une intégration harmonieuse de l outil ; 4. des interfaces de programmation graphiques assez proches des standards Java afin de limiter les efforts d adaptation. Nous pensons en particulier au système événementiel Java et à la notion de modèle dans les Swing ; 5. des capacités d interopérabilité (points d extension) entre outils pour pouvoir, notamment, faire communiquer PatternsBox et Ptidej. En conclusion, l intégration des outils PatternsBox et de Ptidej à la plate-forme Eclipse, offrira à ceux-ci une meilleure interopérabilité. 5

Bibliographie [1] Hervé Albin-Amiot. Idiomes et patterns Java : application à la synthèse de code et à la détection. Thèse de doctorat, université de Nantes, février 2003. À paraître. [2] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994. [3] Yann-Gaël Guéhéneuc. Traçabilité de Motifs pour la Compréhension et la Qualité Application aux Motifs et aux Défauts de Conception. Thèse de doctorat, École des Mines de Nantes, mai 2003. À paraître. [4] Philippe Mulet. Eclipse une plateforme universelle pour outils intégrés. Thomas Ledoux, éditeur, actes de la Journée OCM, pages 60 82, mars 2002. [5] Object Technology International, Inc. / IBM. Eclipse platform A universal tool platform, July 2001. Available at: www.eclipse.org. [6] Object Technology International, Inc. / IBM. Eclipse help system, November 2002. (a) La fenêtre Workbench vide. (b) La perspective ressource. (c) La vue hiérarchique des ressources. (d) La vue Java des mêmes ressources. Fig. 1 Captures d écran de Eclipse. 6