Description de l’architecture d’un outil de prototypage

Un environnement de prototypage rapide d’applications
web  pour bases de données

 

 

Bruno Defude

Institut National des Télécommunications

9 rue Charles Fourier 91011 Evry Cedex

Bruno.Defude@int-evry.fr

 

RÉSUMÉ. Nous décrivons un environnement
de prototypage rapide d'applications web pour bases de données, qui permet à
partir d'un schéma entité-association de dériver automatiquement le schéma de
bases de données équivalent et une application web. L'environnement est
constitué de trois outils qui peuvent être utilisés soit de manière intégrée,
soit isolément. Cet environnement est utilisé surtout dans un contexte
d'enseignement car il permet à des étudiants de développer très rapidement et
très simplement des applications bases de données.

MOTS-CLÉS : prototypage rapide,
application web, outil pour l'enseignement des bases de données, programmation
CGI, Oracle, XML

 

 


1. Introduction

Le Web est devenu de fait la plate-forme idéale de
déploiement d’applications puisqu’il fait appel à des standards éprouvés tant
au niveau protocole (HTTP), qu’au niveau des langages de description de
documents (HTML et maintenant XML).

De nombreux outils de développement sont apparus venant
soit du monde web (interprète de langages de programmation associés à un
serveur HTTP comme ASP [ASP] de Microsoft, JSP [JSP] et servlet de Java ou PHP
[PHP] de la communauté logiciel libre), soit des langages de programmation
(modèle J2EE [J2EE] de Java par exemple). Ces solutions sont puissantes et
permettent de répondre en grande partie aux besoins mais par contre ne sont pas
très faciles à utiliser pour des non-informaticiens. Elles ne sont pas non plus
très centrées sur les bases de données mais plus sur l’interface utilisateur ou
bien la logique applicative.

Dans le domaine des bases de données, plusieurs
propositions ont été faites tant dans le monde commercial (WebDB [WEBDB] d’Oracle par exemple), que dans le monde académique (Strudel [FLO  00] par exemple). Enfin, il y a des outils
web d’administrations de bases de données (PHPMyAdmin [PHPMYADMIN] pour MySQL
en est un exemple) mais qui ne remplissent pas complètement nos objectifs
puisqu’ils ne permettent pas réellement de développer des applications.

Les objectifs de notre projet sont de disposer d’une
suite logicielle complète (depuis la conception des schémas de la base de
données, jusqu’au code de l’application Web qui permet de la manipuler),
gratuite, modifiable, facile à déployer et facile d’utilisation pour nos
étudiants. L’application produite n’a pas forcément vocation a être
l’application finale (c’est plutôt un prototype jetable qui permet au moins de
valider le schéma de base de données). Notre approche est très voisine de celle
de WebDB, mais nous essayons d’être plus indépendant du SGBD et notre vision de
l’interaction web/SGBD est assez différente (Oracle essaye de faire le maximum
de travail dans le SGBD alors que nous préférons en sortir certaines fonctions
comme l’habillage HTML).

Le reste de l’article est structuré comme suit. La
section 2 décrit l’architecture logique de l’environnement et ses principes
d’utilisation. La section 3 décrit plus précisément les fonctionnalités de la
passerelle web/SGBD. Nous tirons dans la section 4 un bilan et les perspectives
d’évolution de cet environnement.

2. Architecture logique

L’architecture logique et les principes d’utilisation de
notre environnement sont décrits dans la figure 1. Cette suite logicielle
comprend trois outils intégrés :

 

Figure 1 : Architecture logique et principes
d~Rutilisation

-un outil de conception de schéma de bases de données : il permet
classiquement à partir d’un schéma Entité-Association de générer le code SQL
équivalent pour un SGBD donné (Oracle et MySQL pour l’instant) ainsi qu’une
description XML de l’application à produire exprimée dans le langage d’entrée
du générateur (celle-ci peut être modifiée par le programmeur car elle ne
correspond pas forcément à ses besoins). Le code SQL peut être interprété sur
le SGBD par n’importe quel interprète SQL. Cet outil est implanté en langage
Java et Swing. La représentation interne des schémas se fait en XML, ce qui
permet de faire la génération de code SQL par des feuilles de style XSLT (cela
permet d’ajouter facilement de nouvelles cibles). ;

-une passerelle gérant l’interface avec le SGBD qui permet
l’interprétation d’une ou plusieurs requêtes SQL et l’habillage HTML du
résultat produit ;

-un générateur d’applications web qui, à partir d’une
description XML de l’application, construit les formulaires HTML s’interfaçant avec
la passerelle. Ces formulaires vont pouvoir être stockés sur n’importe quelle
machine (pas nécessairement celle où se trouve le SGBD) et interprétés par des
navigateurs web supportant le langage Javascript. Le générateur est développé
en langage Java en utilisant l’interface de programmation JAXP qui permet de
manipuler des documents XML.

 

3. Passerelle
web/SGBD

Son rôle est d’interpréter une ou plusieurs requêtes SQL
sur le SGBD et de renvoyer le résultat récupéré habillé en HTML.
L’interprétation des requêtes SQL se fait dans la même transaction.
L’originalité de cette passerelle réside dans le paramétrage assez poussé
qu’elle permet au niveau de l’habillage HTML. L’idée consiste à utiliser le
dictionnaire de données pour obtenir de l’information utile pour la génération.
Par exemple, simplement à partir du nom d’une relation on peut générer un
formulaire permettant l’insertion d’un tuple dans cette relation.

Pour l’instant la passerelle est implantée sous forme
d’un programme de type CGI écrit en langage C en utilisant l’interface de
programmation Pro*C d’Oracle. Du côté client, la passerelle se programme via un
ensemble de variables dont le nom est fixé (par exemple UID pour la chaîne de
connexion Oracle, SQLSTATEMENT pour les instructions SQL que l’on veut
interpréter, …).

Pour augmenter les fonctionnalités de la passerelle, nous
avons introduit plusieurs modes d’interaction :

-mode normal : la passerelle interprète les
instructions SQL et habille le résultat en HTML ;

-modes insertion/suppression/mise à jour : la
passerelle génère un formulaire HTML et du code Javascript permettant
l’insertion/suppression/mise à jour d’un tuple dans une relation donnée en
paramètre ;

-mode QBE : la passerelle génère un formulaire HTML et
du code Javascript permettant l’interrogation de type QBE d’une relation donnée
en paramètre ;

-mode hypertexte : la passerelle interprète les
instructions SQL et s’il s’agit de requêtes de type SELECT, elle génère pour
chaque valeur de clé étrangère un formulaire qui va permettre l’accès au tuple
pointé par la clé. Ce mode permet de naviguer «à la hypertexte » dans une
base de données via les clés étrangères ;

-mode copie : la passerelle interprète une requête de
type SELECT et génère pour chaque valeur retournée un formulaire qui permet la
recopie de cette valeur dans une variable du formulaire. Ce mode permet la
construction de menus déroulant dont les valeurs sont extraites de la base de
données.

4. Bilan et perspectives

Cet environnement de prototypage est complètement
opérationnel et a été utilisé dans de nombreux projets d’élèves de l’INT depuis
maintenant plusieurs années. Nous avons, par exemple, développé un interprète
SQL entièrement web qui nous permet de ne plus utiliser de produits comme
sqlplus d’Oracle. Nous l’utilisons aussi dans le cadre de travaux pratiques et
il permet de faire réaliser aux élèves une application base de données dans un
délai très court (3 à 6 heures). Il est également utilisé dans le cadre
d’applications de gestion internes à l’INT. Il est disponible sur simple
demande auprès de l’auteur pour les établissements d’enseignement supérieur.
Les évolutions les plus importantes en cours traitent de l’indépendance vis à
vis du SGBD. La passerelle est en cours de re-développement sous forme de
servlet Java ce qui va permettre de pouvoir sélectionner son SGBD, d’avoir une
gestion des connexions au SGBD plus efficace et du multithreading.

Un autre travail en cours consiste à donner une
implantation sous forme de JSP (Java Server Page) à la passerelle. Dans ce contexte,
nous proposons de définir une bibliothèque de balises spécialisées (taglib pour
JSP) encapsulant les principaux modes d’interaction de la passerelle. Ceci doit
permettre une programmation de pages JSP beaucoup plus facile, tout en gardant
l’avantage des JSP de mieux pouvoir gérer l’habillage HTML.

Remerciements

L’implantation de cet environnement a été réalisée en
partie par de nombreux projets d’élèves de l’INT que nous tenons à remercier
pour le travail réalisé.

Bibliographie

[ASP] http://msdn.microsoft.com/asp

[FLO  00] D. Florescu, K. Yagoub, A. Levy, D.
Suciu « Declarative Specification of Web Sites with Strudel », VLDB
Journal, Vol 9, No 1, 2000

[J2EE] http://java.sun.com/products/j2ee

[JSP] http://java.sun.com/products/jsp

[PHP] http://www.php.net

[PHPMYADMIN] http://sourceforge.net/projects/phpmyadmin

[WEBDB] http://otn.oracle.com/products/webdb/content.html