SlideShare une entreprise Scribd logo
1
Université de la Manouba
École Supérieure de Commerce de Tunis
MEMOIRE DE FIN D’ÉTUDES
Présenté en vue de l’obtention de :
La Maîtrise en Informatique Appliquée à la Gestion des Entreprises
Sujet :
Conception et Mise en Œuvre d’un Outil Interactif d’Aide à
la Maintenance des Applications Web : WebAnalyser
Élaboré par :
Mr Yazid Erman
Encadré par :
Mme Sélima Besbes Essanaa (ESC)
Année Universitaire : 2006 - 2007
2
RemerciementsRemerciementsRemerciementsRemerciements
Je tiens à remercier ALLAH qui m’a accordé ses bienfaits et
ses générosités, je remercie sa majesté pour les personnes par les
quelles j’étais soutenu tout au long de ma vie :
J’adresse mes remerciements les plus distingués à mon
encadreur Mme Sélima Besbes Essanaa qui m’a proposé ce sujet. En
plus de ses précieux conseils, elle a supporté avec patience tout le
labeur durant la correction de mon rapport.
J’adresse, en signe de reconnaissance, mes plus vifs
remerciements pour l’extrême sympathie à Mme Chiraz Latiri, qui ne
m’a enseigné seulement comment programmer, mais aussi comment
être au service des autres, je n’oublierai jamais ses efforts pour
m’avoir aidé à m’adapter à la formation en français dés le début.
Mes remerciements s’adressent aussi à tous les enseignants de
l’ESC qui ont contribué à ma formation.
Yazid Erman
3
DédicaceDédicaceDédicaceDédicace
Je dédie ce travail à …
Samih Haifa,
Fatmeh, Laiali, Boudour, Sedra, Yazan,
Mohammed, Yassine, Fadi, Ghassan, hamdan,
Ahmed.Q, Med.J, adey,Wael,ayoub, Shadi,
Anas, ahmed.H, Med.A, Ayed,
Nabil.S, Med.M, Nabil.R,
Abdallah, Malak,
Tasneem,
Ines
.
J’espère qu’ils trouveront dans ce travail l’expression de ma gratitude,
de mon amour, de ma reconnaissance et de mon profond attachement.
Yazid Erman
4
5
Table des matières
Introduction...................................................................................................................... 7
i. Description du Contexte.................................................................................................... 10
ii. Description de la problématique ..................................................................................... 13
iii. Présentation de la contribution...................................................................................... 13
Chapitre 1. Catégorisation des applications Web......................................................... 15
1.1. Introduction.................................................................................................................... 15
1.2. Application Web … ou Site Web ?............................................................................... 16
1.3. L’architecture d’une applications Web....................................................................... 19
1.4. Les Catégories d’applications basées sur le Web........................................................ 20
1.5. Les composants Web ..................................................................................................... 22
1.5.1. Pages Serveur / Pages Client .................................................................................................. 24
1.5.2. Pages Statiques / Pages Actives / Pages dynamiques............................................................. 24
1.6. HTML............................................................................................................................. 25
Chapitre 2. État de l’Art................................................................................................. 27
2.1. Le Modèle proposé par Ricca et Tonella : [Ric 00a ].................................................. 27
2.2. Le Modèle proposé par Conallen [Con 00].................................................................. 28
3.3. Le Modèle proposé par Tramontana : [Tra 05].......................................................... 30
Chapitre 3. Proposition.................................................................................................. 32
3.1. Étude des composants Web........................................................................................... 32
3.1.1. Les pages Statiques : .............................................................................................................. 32
3.1.1.1-les relations d’inclusion :................................................................................................. 35
3.1.1.2-les relations d’utilisation : ............................................................................................... 36
3.1.2. Les Pages Actives (Client-Side) :........................................................................................... 37
3.1.3 Les pages dynamiques (Server Side) :..................................................................................... 39
3.2. Le Modèle Proposé ........................................................................................................ 40
3.3. Le logiciel........................................................................................................................ 46
3.3.1. Description générale............................................................................................................... 46
3.3.2. Les alternatives … et choix.................................................................................................... 47
3.3.2.1. Le langage de programmation utilisé.............................................................................. 48
3.3.2.2. Le parseur....................................................................................................................... 48
3.3.2.3. Stockage et sauvegarde de la base de données ............................................................... 52
3.3.2.4. Persistance des données.................................................................................................. 53
3.3.2.5. Cycle de vie .................................................................................................................... 57
3.3.3. Le Dossier de Conception de WebAnalyser ........................................................................... 58
3.3.3.1 Etude de faisabilité .......................................................................................................... 59
3.3.3.2. Identification des besoins et spécification des fonctionnalités : ..................................... 60
3.3.3.3. Phases d’analyse............................................................................................................. 67
3.3.3.4. Phase de conception : ..................................................................................................... 70
3.3.3.5. Phase d’implémentation.................................................................................................. 76
Conclusion...................................................................................................................... 79
Bibliographie.................................................................................................................. 82
Table des figures
6
Figure 1. Classification des applications Web d’après [Mec 99] et [Con 00]________ 18
Figure 2. La structure générale d’une application Web_________________________ 23
Figure 3. Le Modèle proposé par Ricca et Tonella : [Ric 00a] ___________________ 27
Figure 4. Le Modèle proposé par Conallen [Con 00] __________________________ 28
Figure 5. le Modèle proposé par Tramontana [Tra 05 ]_________________________ 30
Figure 6. La structure d'une page HTML ___________________________________ 35
Figure 7. La relation d'inclusion __________________________________________ 36
Figure 8. La relation d'utilisation__________________________________________ 37
Figure 9. Le Modele Global Retenu _______________________________________ 45
Figure 10. L'architecture du logiciel "Web Analyser" _________________________ 46
Figure 11. La classe Lexer_______________________________________________ 49
Figure 12. La classe Parser ______________________________________________ 50
Figure 13. La classe HTMLEditorKit ______________________________________ 50
Figure 14. L'architecture de Hibernate _____________________________________ 55
Figure 15. L'architecture interne de l’EJBs __________________________________ 56
Figure 16.Le code d'une page HTML ______________________________________ 59
Figure 17. Le Modèle des cas d'utilisation __________________________________ 62
Figure 18. Un Modèle Générique de Séquences ______________________________ 64
Figure 19. La fenêtre principale du WebAnalyser_____________________________ 65
Figure 20. La fenêtre de personnalisation des balises à extraire par WebAnalyser ___ 66
Figure 21. Le Modèle du Domaine ________________________________________ 67
Figure 22. Diagramme de Classes Entités ___________________________________ 68
Figure 23. Diagramme d’Activités de Navigation_____________________________ 70
Figure 24. Diagramme de Séquences : choisir entre les projets créés précédemment _ 72
Figure 25. Diagramme de Séquences : spécifier le site et lancer le « parsing » ______ 73
Figure 26. Diagramme de sequences: fixer les options spécifiques à chaque projet___ 74
Figure 27. Diagramme de classes de conception______________________________ 75
Figure 28. Diagramme de classes de conception détaillé _______________________ 75
7
Table des Tableaux
table 1 : Les composants Web..................................................................................................... 23
table 2: Les composants principaux du HTML........................................................................... 32
table 3: Les composants actifs des pages Web............................................................................ 38
table 4: Les composants Web dynamiques.................................................................................. 39
table 5 : Comparaison MySq l 5.0 X Postgre 8.1...................................................................... 52
table 6 :Comparaison JDBC X Hibernate X EJBs...................................................................... 54
8
Introduction
La survie de toute entreprise est étroitement liée à son existence sur le Web. Ceci est
particulièrement vrai pour les multinationales. Ces entreprises ont dépassé les frontières
de leurs pays d’origine non pas grâce à des « buildings géants », mais plutôt grâce à une
présence virtuelle allant au devant du client, à chaque demeure et à chaque bureau, et ce
à travers l’efficacité et la rentabilité de la technologie Web.
La dernière décennie a assisté à une explosion du nombre d’applications basées sur
le Web. Malheureusement, la technologie Web évolue à un tel rythme qu’une
application Web est très vite obsolète. Or, l’état de l’art révèle une panoplie aussi riche
que diverse de travaux ciblés sur la conception et le développement d’applications Web.
En revanche, il existe un réel besoin en outils et techniques qui assistent le développeur
lors de la maintenance et l’évolution de ces dernières.
En effet, malgré les tentatives, les outils disponibles ne répondent que partiellement
aux attentes des développeurs. Plusieurs facteurs sont à l’origine de ce constat. Le plus
important étant, la complexité et l’effort nécessaires à la compréhension d'un système
avant toute intervention en vue de le corriger ou de le faire évoluer par de nouveaux
besoins.
On propose dans le cadre de ce mémoire un outil, appelé WebAnalyser dont le
principal objectif est d’exhiber l’architecture interne d’une application Web en
9
dévoilant d’une part ses différentes composantes et d’autre part, les liens qui existent
entre elles, afin d’en faciliter la compréhension.
Cet outil s’inscrit dans le cadre d’un projet de rétro-conception d’applications Web
appelé RetroWeb. RetroWeb est une démarche qui a été proposée par Madame Sélima
Besbes Essanaa, au sein de l’équipe ISID (Ingénierie des Systèmes d’Information
Décisionnels) du laboratoire CEDRIC (Centre d’études et de Recherche en
Informatique du Cnam) du CNAM (Conservatoire National des Arts et Métiers) à Paris,
et ce dans le cadre de sa thèse de doctorat, qui sera publiée dans les mois à venir.
RetroWeb est une solution pour la rétro-conception de sites Web peu (ou pas)
documentés. Elle permet de déduire, à partir du code HTML d'un site Web, une
description conceptuelle de son contenu informatif qui serait utile pour la restructuration
du site, pour son évolution ou pour son intégration à un autre site Web. Or, avant tout
processus de rétro-conception, le passage par une phase de compréhension de
l’application existante est indispensable. WebAnalyser intervient en amont de
RetroWeb pour assister le rétro-concepteur (ou plus généralement le développeur) dans
la compréhension de l’architecture interne d’une application Web.
Pour mener à bien ce travail, nous avons commencé par une étude approfondie des
composantes qui peuvent intervenir dans la construction d’une application Web. A notre
surprise, cette tâche s’est révélée tout de suite très fastidieuse, à cause notamment de la
richesse et la grande variété de composantes qui peuvent être impliquées dans le
développement d’une application Web ; dés lors que celle-ci dépasse les simples pages
statiques.
Notre étude de l’existant nous a par ailleurs, révélé l’existence de plusieurs travaux
qui ont abordé cette problématique à un niveau conceptuel. Nous les avons étudiés,
comparés pour enfin synthétiser le résultat de nos investigations dans un modèle qui
donne la description d’une application Web générique. Chaque application Web à traiter
devient par conséquent, une instance de ce modèle.
Le système WebAnalyser est basé sur ce modèle. Dés le départ, nous étions
conscients que les contraintes de délais ne nous permettraient pas de produire un
système qui prendrait en charge absolument toutes les catégories de composantes. Nous
étions donc obligés de choisir entre deux alternatives : soit survoler superficiellement
toutes les composantes ; soit au contraire choisir les composantes les plus répandues et
les plus usuelles dans le développement des applications Web et les approfondir
10
convenablement. Nous avons naturellement opté pour la seconde alternative et dés le
départ, nous avons conçu un système facile à faire évoluer pour qu’il prenne en charge
n’importe quel nouveau composant.
Les paragraphes qui suivent décrivent et détaillent le cadre général de ce travail
ainsi que la problématique abordée.
i. Description du Contexte
Depuis sa première apparition le World Wide Web (WWW) a fondamentalement
transformé notre vie. Cette révolution a façonné notre société et continuera à
l’influencer durant les prochaines décennies. Chaque jour qui passe est une
confirmation de la place que le Web est en train d’occuper, aux côtés des autres grandes
inventions de ce siècle et qui ont été de véritables challenges pour les générations
précédentes.
L’interface simple et diffusée en masse du browser a ouvert la porte au
développement de plusieurs nouvelles applications distribuées. En 1994, les pages Web
étaient alors simples, statiques et reliées entre elles. Elles permettaient un accès facile à
l’information, à la portée de tous, partout dans le monde. Plus tard, de nouvelles
technologies telles que Java, ont vu le jour et ont été utilisées pour décorer les pages
Web. Elles se sont alors ornées d’effets spéciaux : images flashantes, fenêtres dansantes,
etc.
Heureusement, le monde a bien compris l’énorme potentiel que peut offrir le Web,
et des applications plus importantes, qui exploitent ces potentiels ont vu le jour. Les
organisations se sont intéressées à ces technologies et ont compris les enjeux
économiques d’une présence rapide sur le Web. Elles ont alors commencé à développer
des applications Web qui livrent leurs service jusqu’à chez leurs clients dans le monde
entier, abolissant ainsi les frontières et enregistrant de fameuses plus-values. L’ère ou le
Web était considéré comme une simple plateforme permettant le partage et la diffusion
de l’information est révolue pour céder la place à une ère de concrétisation, où le Web
est un outil sophistiqué de commerce et de transactions. L’ingénierie du logiciel est au
cœur même de cette révolution.
Une application Web est une application interactive dans laquelle l’interface
utilisateur est constituée par un ensemble de pages Web [Con 00]. Ce type
11
d’applications est une composante du Système d’Information (SI) d’une organisation.
On parle alors de systèmes d’information basés sur le Web ou Systèmes d’Information
Web (SIW) [Tak 97] [Isa 98a].
Tout comme un SI traditionnel, un SIW est un ensemble constitué de ressources
humaines et de moyens techniques, de règles de fonctionnement, de données et de
procédés pour acquérir, mémoriser, transformer, rechercher, communiquer et restituer
ces données [Rol 88]. Dans ce cadre, le Web constitue un support pour la mise en
oeuvre de ces systèmes. Il convient donc de noter qu’un SIW est d’abord un SI
traditionnel et ensuite un système basé sur le Web [Den 98].
Dans une application Web, l’information n’est pas seulement de type texte, mais
également de type image, son, vidéo ou multimédia. En plus, elle est présentée selon
une approche hypermédia, qui reprend les principes de l’organisation non linéaires,
accessible de façon explorative par de multiples chemins de navigation, au moyen de
connexions explicites entre des éléments d’information. Cette organisation non linéaire
est un élément déterminant de l’approche SIW.
La plupart du temps, les techniques utilisées par les développeurs des applications
Web sont similaires à ceux ad hoc utilisées par leurs prédécesseurs dans les années 60 et
70, ignorant les principes de conception disciplinés, acquis durant des années
d’expérience.
Une étude récente, réalisée par Lang et Fitzgerald [Lan 05] sur le développement de
projets basés sur le Web, a révélé que dans 98 % des cas, les équipes de développement
rencontrent des problèmes majeurs pour faire face aux conditions instables et
changeantes de l’environnement Web et que dans 86% des cas ils ont du mal à s’adapter
au « Web Time » et à la pression qui le caractérise. Les développeurs d’applications
Web se défendent et se justifient en invoquant diverses raisons :
- Le temps consacré au développement d’une application Web est extrêmement
concis : alors que le développement des applications traditionnelles nécessite des
mois, celui des applications Web nécessite des semaines voir même des jours. Ce
phénomène, souvent appelé « Web Speed » ou vitesse du Web, rétrécit
considérablement les délais. Souvent pris au dépourvu, les développeurs
d’applications Web optent pour une approche ad hoc, plus simple en apparence,
mais dont les retombés sont néfastes, dés lors que la taille de l’application devient
12
importante, et que les conséquences d’une modification du code de l’application,
deviennent imprévisibles.
- La rapidité de l’évolution de l’environnement d’une application Web : les
applications Web deviennent obsolètes aussitôt livrées. Ce n’est qu’après avoir
été exploitées pendant les dix ou quinze dernières années, que les applications
traditionnelles peuvent être considérées comme dépassées. Une application Web,
quant à elle, elle l’est seulement après six ou sept mois d’exploitation.
- Les attentes des utilisateurs des applications Web : Le processus de
développement qui conduit à l’application Web comporte des phases de test et de
vérification très rigoureuses, ciblées principalement sur l’interface utilisateur. Car
dans le contexte du Web, tout gravite autour de leur satisfaction. Pour une
application de commerce électronique, par exemple, la tolérance aux erreurs, frôle
le seuil zéro.
- La rotation du personnel : La communauté Web a un taux élevé de rotation du
personnel, la durée moyenne de recrutement étant de d’un peu plus d’un an [Kon
00]. Très souvent, les développeurs initiaux de l’application Web ne font plus
partie de l’équipe informatique qui la maintient.
Il est clair, que dans ces conditions d’exploitation, la maintenance et l’évolution
d’une application Web sont des tâches très complexes, qui peuvent dégénérer
rapidement. Pour maîtriser les conséquences d’une intervention sur le code, la
compréhension de la structure de l’application et des interactions qui existent entre ses
différents composants est une tâche inévitable. Or le coût et le temps consacrés à la
compréhension augmentent dramatiquement avec la taille et la complexité de
l’application.
Certes, pour concevoir et développer des applications Web, les développeurs auront
besoin d’outils et de méthodes qui couvrent tout le cycle de vie d’une application et qui
offrent un support méthodologique à chacune de ses phases. Par ailleurs, comme le
domaine du Web arrive à maturité ils auront également besoin de méthodes et d’outils
qui les aident à analyser et comprendre la structure et l’architecture des applications
existantes.
13
ii. Description de la problématique
Comme nous venons de le voir, dans le contexte du Web, les évolutions sont plus
rapides, les mises à jour sont plus fréquentes, les délais sont rétrécis, les technologies
impliquées sont plus diversifiées et plus complexes et le taux de rotation du personnel
est très élevé. Dans ces conditions, les fréquentes interventions à caractère urgent sur le
code de l’application, de façon ad hoc entraînent inévitablement une détérioration de la
structure de navigation de l’application, de son contenu informatif, ainsi qu’une
dégradation de sa documentation.
Ces constats sont confirmés par un récent sondage, réalisé par le cutter consortium
[Cut 00], sur les projets de développement d’applications Web. Ce sondage a révélé que
84% des applications ne correspondent pas aux besoins du métier, que 52% d’entre elles
sont de qualité médiocre et que 53% ne couvrent pas les fonctionnalités pour lesquelles
elles ont été conçues. Dans de tels cas apparaît la difficulté de faire évoluer ces
applications
Durant les dernières décennies, la communauté informatique a pris conscience que
le succès ou l’échec de tout processus d’évolution ou de modernisation, de leurs
systèmes informatiques, est conditionné par la qualité de la compréhension qui en est
faite. Une bonne compréhension du code minimiserait le risque d’erreurs et faciliterait
considérablement des tâches comme la maintenance corrective, la maintenance
évolutive, ou simplement la mise à jour de la documentation.
iii. Présentation de la contribution
« On fait œuvre scientifique en citant les travaux antérieurs … »
Pour assister le développeur dans la compréhension d’applications Web existantes,
nous avons conçu et développé un outil appelé « WebAnalyser ». Nous étions
préoccupés par deux aspects :
- Le premier est en rapport avec la façon dont le résultat sera rendu à l’utilisateur.
Notre contrainte était que ce dernier se doit d’améliorer réellement la
14
compréhension de l’application et éviter ainsi de se retrouver dans une situation
où le code est plus intelligible que la représentation que nous allons en faire. Or le
processus de compréhension de n’importe quelle application est supporté par la
description mentale qui en est faite. Notre outil déduit à partir d’une application
Web une description sous forme d’une arborescence dans laquelle les feuilles sont
les différentes composantes de l’application. L’architecture de l’application est
ensuite enrichie en exhibant deux catégories de liens : des liens d’inclusion et des
liens d’utilisation.
- La seconde préoccupation concerne la robustesse de l’outil. Ce dernier doit être
paramétrable, et surtout facile à faire évoluer en vue de tenir compte de nouveaux
types de composantes. Pour cela, nous avons proposé un modèle qui donne la
description d’une application Web générique sur lequel s’appuie WebAnalyser.
Chaque application Web à traiter devient par conséquent, une instance de ce
modèle. Grâce à cette approche une même application peut générer différentes
descriptions.
Nous avons structuré notre rapport comme suit :
Le premier chapitre est dédié à la description des catégories d’applications Web
existantes.
Le second chapitre présente l’état de l’art sur notre problématique.
Le chapitre 3 présente notre contribution. Il est divisé en deux sections. La première
présente notre solution conceptuelle. Nous y décrivons notamment, les composants pris
en charge par notre outil ainsi que le modèle qui les supporte. La seconde section est
consacrée à la description de la réalisation de WebAnalyser. Dans cette dernière section
nous décrivons notamment l’architecture de cet outil, les choix techniques pris en
compte et enfin, le cycle de développement suivi.
Enfin, nous concluons ce rapport en proposant des améliorations et des perspectives
pour WebAnalyser.
Nous espérons, à travers ce rapport, réussir à susciter votre intérêt pour ce travail.
15
Chapitre 1. Catégorisation des applications Web
(Knowing the territory
is mandatory.)
1.1. Introduction
La dernière décennie a vu apparaître, une vague de nouvelles technologies pour
publier et répandre des données sur le Web. Cette situation a entraîné de nouvelles
catégories d’applications. Beaucoup d’entre elles, ont été initialement crées à l’image
d’une plate-forme de partage de documents, pour répondre au besoin relativement
modeste de dissémination passive des informations. Son évolution en vue de répondre à
des besoins plus agressifs, tel que le commerce électronique ou la collaboration en
ligne, impliquent le recours à des techniques plus complexes et à des architectures plus
sophistiquées.
La nature hétérogène des composants d’une application Web et sa complexité
entraînent l’intervention de diverses personnes pour sa construction. L’hétérogénéité
des intervenants se constate à plusieurs niveaux relatifs par exemple à leur formation, à
leurs connaissances, à leurs expériences et à leurs compétences.
Cette hétérogénéité tant matérielle que humaine a entraîné l’apparition d’une
panoplie de termes, tous liés les uns aux autres, provoquant une certaine confusion que
nous avons voulu dissiper.
Ce chapitre débute par une présentation des concepts directement liés à notre travail.
Nous avons d’abord, donné une description de l’architecture d’une application Web et
de ses différentes catégories. Ensuite, avons passé en vue les différents termes qui se
rapportant aux applications Web, en essayant d’exhiber les concepts qui s’en dégagent :
Site Web/Application Web, Page Serveur/Page Client et enfin Page Statique/Page
Interactive/Page Dynamique.
Mais au fait, …application Web ou Site Web ?
16
1.2. Application Web … ou Site Web ?
Une application Web est un programme dont les fonctionnalités sont délivrées à
travers le Web. Conallen [Con 00] explique que «les applications Web résultent de
l’utilisation de sites et de systèmes Web». Un système Web fait référence à
l’infrastructure permettant un échange d’informations entre ordinateurs. Ses éléments
essentiels1
sont donc :
- le réseau, qui relie physiquement les ordinateurs ;
- un poste client doté d’un navigateur. Le navigateur appelé aussi browser, est un
logiciel qui permet l’affichage, localement, de documents hébergés sur d’autres
ordinateurs du réseau. Il est l’interface utilisateur de l’application. Le HTTP
(Hyper Text Transfer Protocol) est utilisé pour communiquer entre l’interface
utilisateur et le reste de l’application ;
- un poste hôte sur lequel un service (ou démon), appelé serveur Web, permet de
localiser et de retourner les informations demandées par le client au moyen de
requêtes.
Une application Web peut être construite à partir de composants de différentes
natures qui interagissent entre eux pour satisfaire l’utilisateur : une Base de Données,
des objets distribués ainsi que des pages Web. Les informations sont organisées dans les
pages Web. Celles-ci sont ensuite reliées par des liens, constituant ainsi un hypertexte.
Une application Web apporte une dimension supplémentaire à cette infrastructure à
travers la mise en oeuvre d’un serveur d’application. Ce dernier rend possible le
traitement des actions de l’utilisateur qui vont au-delà de simples requêtes de
navigation. Ainsi, pour Baresi [Bar 00], les sites Web présentent deux dimensions
essentielles, celle des informations et celle de la navigation, alors que les applications
Web, en revanche, en intègrent une troisième : celle des opérations. Cette position est
partagée par Conallen [Con 00], pour qui, une application Web se différencie d’un site
Web, en cela que l’application offre à l’utilisateur des mécanismes, lui permettant de
réaliser des tâches plus complexes. Par ailleurs, le résultat de ces actions se traduit par
1
Bien que non décrites ici, certaines technologies sous-jacentes aux éléments présentés sont
indispensables au fonctionnement d’une telle infrastructure. On citera par exemple les protocoles TCP/IP
(Transmission Control Protocol / Internet Protocol), HTTP (HyperText Transfert Protocol), les langages
de publication de pages Web HTML (HyperText Markup Language), XML (eXtended Markup
Language), etc.
17
une modification de l’état applicatif sur le serveur : des données sont ajoutées,
modifiées, supprimées, des actions deviennent disponibles ou ne le sont plus, etc.
Au regard de cette définition, il apparaît clairement que de nombreuses applications
peuvent être qualifiées de basées sur le Web. Ainsi, dès lors qu’une interface permet de
saisir des informations (par exemple pour s’enregistrer en tant qu’utilisateur), le serveur
d’application voit son état changer puisque les données fournies sont stockées et puis
prises en compte dans la logique applicative. Des applications Web proposent toutefois
des actions bien plus avancées : c’est notamment le cas de celles qui mettent en oeuvre
les fonctionnalités métier spécifiques d’une organisation.
Dans [Mec 99], la distinction proposée peut être rapprochée de celle de Conallen,
bien qu’elle soit subtilement différente par rapport à ce que les auteurs appellent sites
Web. Leur proposition est basée sur une analyse de la complexité des sites en regard de
deux critères : l’un est relatif aux données gérées, et l’autre relève de ce que les auteurs
nomment l’application et qui correspond aux services offerts par l’application. Le
croisement des ces deux critères – complexité des données et complexité des services –
permet à [Mec 99] de distinguer quatre catégories :
- Les sites "de présence" sur le Web : Ils sont caractérisés par un faible degré de
complexité tant en terme de données qu’en terme de services. Leur objectif
concerne principalement la mise en ligne d'informations, à des fins publicitaires
par exemple, ou résultant d'une volonté de diffuser des informations diverses
(activités d'une association, présentations de manifestations, informations
personnelles, etc.). Généralement constitués d'un petit nombre de pages, ces sites
sont principalement construits à l'aide d'éditeurs HTML.
- Les sites "catalogues" ou à forte intensité de données (data-intensive Web
sites) : Ils sont caractérisés par le fait qu'ils publient une masse importante de
données, selon une structure hypertexte complexe. Ils n'offrent en revanche pas
ou très peu de services. Nous assimilons ces deux catégories à la notion de sites
Web telle qu’elle est envisagée par Conallen. Les deux suivantes peuvent être
comparées à la notion d’applications Web :
18
- Les sites orientés services : Ils ont la vocation de fournir des services spécifiques
tels que ceux offerts par les moteurs de recherche1
ou les applications de
messagerie électronique. De tels sites peuvent reposer sur des bases de données
de taille conséquente, mais la structure des données et de l'hypertexte reste
simple. La complexité est donc davantage liée aux applications sous-jacentes qui
garantissent les services, et c'est en général autour de ces aspects que s'oriente le
développement de tels sites.
- Les Systèmes d’Information basés sur le Web (SIW) : Ils constituent la
quatrième catégorie de sites Web. Ils combinent la mise à disposition et la gestion
de données complexes avec des services interactifs sophistiqués. Les applications
de commerce électronique et les SI des organisations entrent dans cette catégorie.
La Figure 2.1 illustre le positionnement de ces catégories selon deux axes relatifs à
la complexité des données (axe vertical) et à celle des services (axe horizontal). Inspirée
de [Mec 99], cette représentation fait également apparaître la distinction établie dans
[Con 00] entre sites et applications Web, où seule la dimension applicative intervient.
Figure 1. Classification des applications Web d’après [Mec 99] et [Con 00]
La complexité des services offerts est donc un dénominateur commun aux deux
propositions.
1
Notons que, pour Conallen [Con 00], les moteurs de recherche ne sont pas considérés comme des
applications Web dans la mesure où ils ne sont généralement pas caractérisés par une modification de
l’état applicatif suite aux actions (requêtes) de l’utilisateur.
19
Dans ce qui suit, nous allons enchaîner sur la description de l’architecture des
applications Web.
1.3. L’architecture d’une applications Web
Une application Web est une application délivrée par un serveur Web sur un réseau.
Elle repose sur une architecture client/serveur à plusieurs niveaux (Tiers). L’architecture
d’une application Web reflète la répartition spatiale de ses données et la distribution
spatio-temporelle des ses composants exécutables. La configuration spatiale minimale
d’une application Web est appelée « two-tier », ou à deux niveaux. Elle ressemble au
modèle traditionnel « client-serveur », à la différence que le côté client qui représente le
navigateur, n’est qu’une partie très mince de l’application, raison pour laquelle il est
également appelé « client léger ». Il est utilisable sur de nombreux supports matériels.
Son rôle est essentiellement l’interprétation et l’affichage des pages Web à l’intension
de l’utilisateur. Les instructions exécutables qui constituent le corps de l’application
ainsi que les données qu’elle manipule résident, quant à eux, côté serveur. Le nombre de
serveurs à mettre en place peut être augmenté pour faire croître le nombre de niveaux de
l’architecture. Nous obtenons alors des configurations plus complexes, appelées « three-
tier » ou « multi-tier », invoquant plus d’un niveau côté serveur. Chacun des niveaux
joue un rôle bien précis dans l’application. Ainsi la dénotation des niveaux
communément admise correspond aux différents rôles qu’ils assurent dans l’application.
Pour mettre en oeuvre ces niveaux un ensemble de technologies et de modèles sous-
jacents sont disponibles :
- Niveau « interface utilisateur » : il assure l’affichage de l’interface utilisateur,
sur le poste client. Les technologies invoquées à ce niveau sont celles des pages
Web : HTML, Java Script, Styles CSS. Les concepts manipulés sont alors : le
document, le style, le formulaire, le script, la balise, etc.
- Niveau « contrôle ou logique » : il concerne le contrôle de la cohérence des
actions de l’utilisateur. Le niveau contrôle est régi par les technologies de la
génération dynamique de pages Web, souvent associées à un langage de
programmation tel que PHP, JSP (Java), ASP (C++), etc. Le modèle associé
décrit les composants d’une application client/serveur : le serveur, l’application,
la session, la requête, et le contexte (ensemble de variables) associé à chacun de
ces composants.
20
- Niveau des «données » ou « objets » : il gère l’accès aux données de l’application
ainsi que leur mise à jour. Le niveau des données peut être objet et/ou relationnel.
Les technologies objets disponibles sont celles des langages objets utilisées pour
développer le niveau contrôle à savoir : Java et J2EE, ASP et .NET, la version
objet de PHP. Les concepts des modèles sont ceux du paradigme « objet » : la
classe, l’opération, la propriété, l’objet, etc. Lorsque les données sont persistantes
une base de donnée relationnelle est alors utilisée, soit de manière transparente
via un serveur d’application gérant la persistance des objets, soit de manière
explicite lorsque ce type de serveur n’est pas utilisé. Les SGBD relationnels du
marché constituent l’essentiel des technologies utilisées : SQL-Server, Oracle,
MySQL, Sybase. Le modèle des données est le modèle relationnel dans lequel les
notions de relation, attribut, type, clé sont utilisées
- Niveau « inter-niveaux » ou middleware : Il assure la communication entre les
différents niveaux existants. Pour faire communiquer les différentes technologies
invoquées dans les niveaux précédents, des bibliothèques de composants (API)
existent dans le langage de développement choisi. Par exemple la bibliothèque
nécessaire à l’utilisation d’une base de données en java se nomme JDBC (Java
Data Base Connectivity). Les concepts du modèle utilisé sont : la base de
données, la connexion, la requête, le résultat, les méta-données.
Cette variété de technologies et de modèles rend l’architecture d’une application
Web dangereusement complexe. Concevoir ce type d’application nécessite en plus d’un
investissement technologique très important, un ensemble de compétences
informatiques allant des réseaux aux bases de données en passant par la programmation
objet, la syntaxe HTML et plus encore.
1.4. Les Catégories d’applications basées sur le Web
Toutes les applications Web ne partagent pas forcement les mêmes caractéristiques
ni les mêmes particularités. Elles ont été conçues pour répondre à différents besoins,
impliquant ainsi différentes technologies. Nous énumérons ici sept différentes
catégories d’applications Web telles qu’elles ont été recensées par Desphande dans [Des
02]. Cette catégorisation est basée sur les fonctions remplies par l’application. Notons
que toutes les catégories sont désignées par le terme « site », même si elles reposent sur
un aspect applicatif important.
21
Cette catégorisation est présentée dans l’ordre croissant du degré de complexité des
technologies impliquées dans la construction de l’application. La catégorie la plus
simple étant les sites Web informationnels dont le but est limité à la publication de
données sur internet. La catégorie la plus complexe, du moins à ce jour, étant les sites
Web hautement dynamiques, personnalisés et adaptés à des utilisateurs individuels.
Entre les deux, il existe cinq autres catégories. Nous allons dans ce qui suit les énumérer
en donnant des exemples pour chaque catégorie.
- Les Sites Web Informationnels, appelés également « document-centric »: Cette
catégorie de sites est un simple média de diffusion de l’information sur internet.
Ils sont souvent appelés sites Web statiques. Les catalogues, les annonces, les
bulletins d’information, les manuels techniques, les livres électroniques en sont
des exemples.
- Les Sites Web Interactifs : Cette catégorie de sites est basée sur l’utilisation de
formulaires à renseigner par le client, ce qui donne de l’interactivité au site. Les
formulaires d’enregistrement, les jeux, les horaires de voyages, personnalisés sont
les principaux exemples de la catégorie.
La prochaine catégorie, et toutes celles qui vont la suivre, impliquent un autre acteur
dans leur architecture : le serveur d’application. Son rôle est l’exécution de la logique
applicative de l’organisation.
- Les Sites Web supportant des Transactions : Cette catégorie de sites suppose
plus d’interactivité puisque l’utilisateur a un pouvoir de modification sur
l’application qu’il n’a pas dans la catégorie précédente. La banque en ligne ou E-
banking, le Commerce électronique, les systèmes de réservation de biens et de
services en sont des exemples.
- Les Sites Web supportant des Workflows : Ce sont des sites Web qui supportent
les workflows au sein d’une organisation ou entre différentes organisations. Les
solutions du type B2B (Business to Business), les applications gouvernementales
administratives (E-government), les systèmes de planification et les systèmes de
gestion des inventaires sont les exemples les plus répandus de la catégorie.
- Les Sites Web supportant un environnement de travail collaboratif : Cette
catégorie de sites supporte le « groupware », dans lequel l’aspect communication
et le partage d’information sont d’une importance capitale. Les systèmes
22
distribués d’authoring, les plateformes de E-learning, les outils de conception
collaborative en sont les exemples les plus répandus.
- Les Sites Web supportant les communautés en ligne : Cette catégorie inclut les
groupes de chat, les systèmes de vente aux enchères, les systèmes de guidage, etc.
- Les Portails Web: Se sont des sites Web construits à l’images des galeries
commerciales, réunissant des sources d’information et des services
potentiellement hétérogènes avec un seul point d’entrée. Les portails de
commerce électronique, les portails de communautés et les moteurs de recherche
sont les exemples les plus courants.
Pour conclure, quelque soit la classification, le développement d’une application
Web peut démarrer à n’importe laquelle des catégories. Par ailleurs, une catégorie
d’applications Web est généralement plus complexe que celles qui la précèdent, mais
ceci ne signifie pas qu’elle peut entièrement les remplacer. En effet, chaque catégorie
d’application Web possède ses propres spécificités, qui la rendent plus appropriée dans
un contexte donné. Enfin, les applications Web complexes peuvent être associées à plus
d’une catégorie parmi celles citées.
Nous venons de présenter une catégorisation des applications Web. Dans ce qui suit,
nous allons enchaîner sur une catégorisation plus fine, qui concerne les différents
composants d’une application.
1.5. Les composants Web
Cette section est consacrée à la description de la structure générale d’une application
Web. Les composants qui peuvent intervenir dans une application Web étant très
nombreux et d’une grande hétérogénéité, nous allons en choisir les plus importants.
Cette figure représente une structure récapitulative des composants Web distribués
sur un réseau, elle servira de pivot pour cette section.
23
Figure 2. La structure générale d’une application Web
table 1 : Les composants Web.
Numéro Rôle Exemple courant
1 OS Serveur Linux, Windows
2 Serveur Web Apach(Linux,Windoes)
IIS(NT),PWS(Win9x)
3 Scripts exécutés coté serveur PERL(Apach,IIS,PWS)
VBSCRIPT(IIS,PWS)
JAVASCRIPT(IIS,PWS)
PHP(Apache,IIS,PWS)
JAVA(Apache,IIS,PWS)
C#,VB.NET(IIS)
4 Base de données celle-ci peut être sur la
même machine que le programme qui
l’exploite ou sur une autre via Internet.
Oracle(linux,Windows)
MySQL(Linux,Windows)
SQLServer(Windows)
5 OS Client Linux,Windows
6 Navigateur Web Netscape,Internet
Explorer
7 Scripts exécutées coté client au sein du
navigateur.
VBscript(IE)
JavaScript(IE,Netscape)
Perlscript(IE)
Applets JAVA
24
Généralement, le navigateur (No 6) de la machine cliente (No 5) envoie un appel
d’une page enregistrée (sous forme de script (No 3)) sur la machine serveur (No 1), le
serveur Web (No 2) reçoit la demande de la page et la traduit en HTML si elle ne l’était
pas, durant la traduction le serveur Web (No 2) peut consulter les bases de données (No
4) pour alimenter la page HTML avec les données adéquates.
Le code HTML résultant de la traduction est envoyé vers la machine cliente (No 5),
et spécifiquement vers le navigateur (No 6) qui le traduit à son tour pour construire une
page Web complète, concernant les scripts navigateur (No 7), ce sont intégrés dans le
code HTML envoyé, et sont interprétés par le même navigateur.
A partir de l’explication précédente, on commence par détailler les pages Web qui
sont distinguées selon deux classifications1
, la première distingue les pages serveur des
pages client, la deuxième qui est spécifique aux pages client donne une indication sur la
façon dont ces pages sont obtenues, Elle répertorie les pages statiques, les pages actives
et les pages dynamiques.
1.5.1. Pages Serveur / Pages Client
Les pages serveur : sont celles déployées sur le serveur. Les pages appartenant à
cette catégorie peuvent contenir des scripts serveur (par exemple PHP, ASP, etc.), et ces
scripts contiennent à leurs tour des procédures et des fonctions serveur, nécessaires pour
effectuer des opérations de control ou de calcul.
Les pages client : sont déployées aussi sur le serveur, mais les pages de cette
catégorie sont envoyées aux clients lors d’une demande. Pour étudier cette catégorie
Tilley et Huang [Til 01] proposent classifier ces pages en trois sous catégories selon
leur contenu dans le serveur : les pages statiques, les pages actives et les pages
dynamiques.
1.5.2. Pages Statiques / Pages Actives / Pages dynamiques
Tilley et Huang ont proposé une classification basée sur trois classes [Til 01] de
complexité croissante.
Les pages Web Statiques : Les pages de cette catégorie ne contiennent que du code
HTML, et Les informations qu’elles affichent sont codées par origine entre les balises
1
Il existe d’autres classifications, mais les deux citées ici sont les plus attachantes à notre sujet.
25
HTML. Ils sont construites à l’avance et stockées sur le serveur Web en attendant d’être
acheminées vers le client à sa demande. Ces pages ne présentent aucune interactivité et
ne nécessitent aucun pré-traitement (interprétation) par le serveur d’application, ce sont
donc les plus simples et les plus faciles à développer, la raison pour laquelle on peut les
trouver fréquemment, surtout dans les sites personnels.
Les pages Web Actives (Client-Side) : Appelées aussi pages Web interactives, ces
pages sont également construites à l’avance et stockées sur le serveur Web, se sont très
similaires aux pages statiques mais caractérisées par contenir un code exécutable et
d’autres composants interactifs qui leur donnent de l’interactivité. Donc ces pages sont
interactives mais elles ne sont pas dynamiques parce que leur interactivité reste locale
de fait que les scriptes dans ce cas ne peuvent être exécutés que par le navigateur chez la
machine cliente, ces scriptes sont généralement écrits en java script, et pour les
composants interactifs, ce sont soit des objets flash soit des instructions HTML
dynamiques, ou bien d’autres.
Les pages Web dynamiques (Server-Side) : Cette catégorie est la plus complexe des
trois catégories précédentes. En plus du code HTML et des composants actifs, ces pages
renferment un contenu dynamique grâce à l’interaction avec la base de données, et sont
construites à la demande (on the fly). L’interprétation du code dynamique nous donne
des pages HTML nouvelles nées, et contenant des valeurs saisis par l’utilisateur ou
consultées depuis une base de données, ce sont ces pages HTML qui sont acheminées
vers le navigateur Web du client.
1.6. HTML
l'organisme W3C (World Wide Web Consortium) chargé de la standardisation des
technologies du Web, a élaboré le langage HTML (Hyper Text Market Language)
fonctionnant sur l'ensemble des plateformes existantes : Windows, Linux, MacOS, etc.,
mais également des navigateurs (browsers) comme Netscape Communicator, Internet
Explorer, Mozilla, etc.1
En plus de son utilisation très simple et qui a contribué à sa diffusion. Ce langage est
capable de gérer la quasi-totalité des artifices du Web tels que, évidemment les liens
hypertextes, les textes formatés, les images, les vidéos ou animations, les tableaux, les
1
Voir les références [Pas].
26
formulaires, les cadres « frames », les scripts, les caractères spéciaux, les feuilles de
styles et bien d'autres choses.
Adapté à son moyen de transport (qui est généralement les lignes téléphoniques), et
à fin d’assurer une rapidité suffisante de la communication sur le Web, le langage
HTML a adopté un format de texte très compact mais aussi (par conséquence) peu
sophistiqué. C'est le bon vieux format de texte pur et dur, sans fioritures du Bloc-ntes ou
Notepad de Windows par exemple. Et de plus ce format ASCII a été amputé d'un bit (7
bits au lieu de 8)!1
Mais pourtant Html est un langage universel qui s'adapte à toutes les
plates-formes comme on a cité précédemment.2
En générale, les pages HTML comportent, en plus du texte adressé au lecteur, des
instructions pour le browser3
de celui-ci. Ces instructions seront différenciées du texte
par les signes < et > ; par exemple <html>. Ces "instructions" s'appellent des tags ou
des balises. Ces éléments jouent un rôle bien précis lors de l’affichage de la page par un
navigateur. Certains assurent la mise en page, d’autres véhiculent le contenu informatif
du site, d’autres enfin permettent la mise en place d’une structure de navigation inter et
intra pages.
Dans ce mémoire, on s’intéresse à l’aspect architectural des pages Web. Par
conséquent, certains de ces éléments sont à ignorer. En effet, les balises HTML peuvent
être divisées en deux groupes : les balises de structure et les balises de contenu. Les
balises de structure définissent la structure de la page alors que les balises de contenu
définissent le format et le style du contenu.
D’autre part, un modèle de données définit un ensemble de balises ouvrantes et
fermantes indiquant le début et la fin de chaque élément. Ces balises s’imbriquent les
unes dans les autres pour obtenir des structures de données plus complexes. En plus,
quelques balises comportent des attributs avec des valeurs correspondantes. Ce sont ces
valeurs qui donnent aux différents composants leurs caractéristiques.
1
Vous serez donc privé de certains caractères spéciaux comme le (é) pour lesquels il faudra passer par
des codes particuliers.
2
Voir les références [Luc].
3
Ce logiciel, que l'on appelle un browser, vous permet de surfer sur le Net et d'afficher sur votre écran les
"pages" qu'il a interceptées. Il y a, hélas, beaucoup de marques et de types de browsers différents. Des
simples, des archaïques ou des sophistiqués... Les plus connus sont Netscape dans sa version 2 et 3 ainsi
Internet Explorer de Microsoft mais il en existe beaucoup d'autres.
27
Chapitre 2. État de l’Art
Dans le chapitre précédent nous avons présenté des concepts du domaine de
l’ingénierie du Web, tout en détaillant les technologies associées au Web à travers la
description de l’architecture d’une application Web et de ses différentes catégories.
Comme le cas des applications traditionnelles, la modélisation des applications Web
a fait partie de plusieurs recherches et études autour du monde, surtout récemment.
Dans cette section nous allons étudier quelques modèles proposés dans la littérature
pour supporter l’architecture d’une application Web générique. Chacun d’entre eux met
l’accent sur les composants les plus intéressants de point de vu de son auteur. Ensuite
profitant de leurs expériences et de leur logique nous allons en extraire un modèle
répondant à nos besoins.
2.1. Le Modèle proposé par Ricca et Tonella : [Ric 00a ]
Commençons par le modèle proposé par Ricca et Tonella, ce modèle représente les
principaux composants d’une application Web : page HTML, code serveur (indiquant
les pages serveur), les cadres, les formulaires (avec les champs d’entrée), et les relations
les plus intéressantes reliant ces composants, comme les liens hypertextes, les flux
venants des formulaires, la création des pages à partir d’autres, et l’affichage des pages
Web dans des cadres spécifiques.
Figure 3. Le Modèle proposé par Ricca et Tonella : [Ric 00a]
28
Comme le montre la figure, ce modèle a négligé la plupart des composants affichés
dans les pages client, alors qu’il a bien décrit les aspects suivants :
- L’interaction dynamique entre le code serveur et les pages HTML, qui est
illustrée par les relations reliant leurs entités.
- L’interaction dynamique entre l’utilisateur et l’application, grâce aux formulaires
l’utilisateur pourrait interagir avec l’application.
- La division des pages en des cadres « frames », et la division de ces derniers en
d’autres cadres pour afficher plus d’une page dans un seul écran, la
caractéristique qui est devenu obsolète à nos jours.
2.2. Le Modèle proposé par Conallen [Con 00]
Jim Conallen a traité cette problématique d’une manière plus globale, il croit que la
structure des applications Web est trop compliquée et distribuée, d’où apparaissent la
nécessité d’utiliser les extensions du langage UML comme les stéréotypes, les valeurs
étiquetées, et les contraints, qui sont indispensable pour modéliser les particularités des
applications Web.
Figure 4. Le Modèle proposé par Conallen [Con 00]
29
Cette partie du modèle de Conallen montre l’utilisation de ses extensions, il s’est
intéressé aux détails, au point qu’il a modélisé les deux parties : le navigateur et le
serveur. En fait, grâce aux extensions de Conallen à UML, il est devenu possible de
modéliser les applications Web de manière spécifique.
D’autre part, selon Conallen les phases globales de modélisation des applications
Web ne sont pas différentes de ceux des applications traditionnelles, en plus les mêmes
modèles peuvent être utilisés surtout dans les phases les plus génériques. Concernant la
vue statique des applications, on peut utiliser les diagrammes de classes, où les pages
serveur et client sont considérées comme des classes statiques (classes avec un seul
objet). Mais dans ce cas, ces classes sont caractérisées respectivement par les
stéréotypes << PageServeur>> et <<Page Client>> ou par des icônes adéquates. Les
variables locales utilisées dans ces pages sont considérées comme des attributs privés
caractérisant les classes associées, alors que les fonctions sont considérées comme des
méthodes privées. Les attributs et les méthodes publiques ou protégées ne sont pas
acceptées dans ces classes.
Les pages serveurs peuvent créer les pages client pour être postées aux clients, mais
ces pages ne sont pas des objets statiques parce qu’elles ne sont stockées dans aucun
lieu, elles sont symbolisées par le stéréotype <<Pages Créées>>, ces pages constituent
un cas spécifique des pages client et elles peuvent avoir des attributs et des méthodes de
la même manière de ceux statiques.
Les formulaires constituent aussi une classe de base pour Conallen, ils sont agrégés
aux pages client, et ils comportent des champs pour collecter les données.
En fait, ce ne sont pas seulement les classes qui peuvent être stéréotypées, mais les
relations peuvent l’être aussi, Conallen propose les relations stéréotypées suivantes
comme des relations génériques :
- <<créer>> : (« builds » en anglais) une relation reliant une classe Page Serveur
avec une classe représentant la page client créée par cette dernière.
- <<lien>> : (« links » en anglais) une relation reliant une page client avec une
autre page.
- <<submits to>> : une relation entre une formulaire et la page serveur vers la
quelle les données sont envoyées.
30
- <<inclut>> : (« include » en anglais) une relation entre deux pages ou bien une
page et un module bibliothèque.
Les extensions de Conallen peuvent être utilisées pour modéliser la structure
statique (en utilisant le diagramme de classe de UML), alors que le comportement
dynamique peut être représenté par les diagrammes de séquences, de collaboration,
d’activités, et d’état transition.
En plus, le modèle de Conallen peut faire l’objet de plusieurs autres extensions, par
exemple le cas du modèle proposé par Tramontana [Tra], qui permet de modéliser une
application Web à un niveau de granularité plus élevé et qui sera décrit dans le
paragraphe qui suit..
3.3. Le Modèle proposé par Tramontana : [Tra 05]
Le but de Tramontana, lorsqu’il a exhibé son propre modèle à partir de celui de
Conallen, était de trouver un modèle adéquat à son approche de rétro-conception des
applications Web. Pour lui, en utilisant le diagramme de classes de UML, les entités
principales d’une application Web peuvent être modélisées par les classes, alors que les
relations reliant ces entités sont représentées par les associations, en plus il a utilisé les
relations de composition et d’agrégation pour décrire l’imbrication des entités dans
d’autres. La figure suivante montre le modèle inventé par Tramontana.
Page
Statique
Applet Java
Multimedia
Objet Flash
Interface
BD
Interface
courrier
Interface Fichier
Serveur
Function
Client
Classe Client
Module
Client
n
n
n
inclut
n
Fonction
Serveur
Classe
Serveur
Paramètre
Fichier
téléchargeable
Objet Web
Balise HTML
Script Client1..n
n
1..n
n
inclut
Frameset
Cadre
1..n1..n
Page Web
n
n
n
n
faire suivre
n
1
n
1
afficher en cadre
Page Client
1..n
n
1..n
n
télécharger
n
n
n
n lien
Champs
Page créée
Script
Serveur
nn nn
faire suivre
Objets
Interface
Page Serveur
1
n
1
n
créer
n
1
n
1
n
n
n
inclutn
Formulaire
1n 1n
submit
incomplet
incomplet
Figure 5. le Modèle proposé par Tramontana [Tra 05 ]
31
Selon Tramontana, les éléments de base d’une application Web sont les pages Web
qui sont : soit des pages serveur (enregistrées sur le serveur) ; soit des pages client
(crées et envoyées par le serveur vers le client qui les avait demandées). D’autre part les
pages client peuvent être classées selon leurs origines : si le contenu de ces pages était
stocké sur le serveur d’une manière permanente et fixe, ils sont appelées pages
statiques ; par contre, si ce contenu était variable et n’est généré qu’à la demande, alors
ils sont appelées pages créées.
On remarque dans ce modèle un niveau de granularité très élevé, la chose qui peut
rendre la modélisation des aspects dynamiques plus claire et plus facile. De plus les
pages statiques ont été distinguées de celle créée à la demande. Par ailleurs, les entités
de traitements dynamiques (les scripts et les modules dynamiques) ont été aussi
distinguées des classes passive (comme les images, et les séquences son et vidéo).
32
Chapitre 3. Proposition
La section suivante est le résumé d’une étude exhaustive des composants qui
interviennent dans une application Web. Pour chaque catégorie de pages Web nous
avons défini une liste de composants, et pour chaque composant nous avons défini sa
balise ainsi que la liste de ses attributs. En plus nous avons étudié les relations
susceptibles d’exister entre ces composants.
3.1. Étude des composants Web
3.1.1. Les pages Statiques :
Les pages statiques sont envoyées vers le navigateur qui les a demandées sans
aucune interprétation, parce que ces pages ne comportent que de code HTML qui est
compréhensible par ce navigateur, Le tableau suivant représente une description abrégée
d’une panoplie d’éléments HTML :
table 2: Les composants principaux du HTML
Nom
composant
Balise Liste d’attributs Commentaire
<html> LANG="Langue" DIR="Direction"
VERSION="version"
Tête
<head> PROFILE="Adresse d'un
profil"
Cet élément contient
d’autres éléments
décrivant les
caractéristiques de la
page et insérant des
scripts actifs
33
Corps
<body>
BACKGROUND="@ de l'image"
BGCOLOR="Couleur"
TEXT="Couleur"
BGPROPERTIES="fixed"(7*)
LINK="Couleur"
ALINK="Couleur"
VLINK="Couleur"
BOTTOMMARGIN="Valeur en
pixel"(9*)
TOPMARGIN="Valeur" en pixel
LEFTMARGIN="Valeur en pixel"
RIGHTMARGIN="Valeur" en
pixel
MARGINWIDTH="Valeur en
pixel"
MARGINHEIGHT="Valeur" en
pixel
Lien
hypertext
<a> HREF="@ cible" TARGET="Cadre
cible"
Image <img>
SRC="Adresse de l'image"
NAME="Nom"
ALT="Légende"
LONGDESC="Adresse du
document"
BORDER="Valeur"
HSPACE="Valeur"
VSPACE="Valeur"
WIDTH="Valeur"
HEIGHT="Valeur"
ALIGN="top,middle,bottom,left ou
right">
Liste
<ul>
TYPE="disc,circle,square"
Liste
numérotée
<ol> OL TYPE="I,i,A,a"
START="num de depart"
Liste des
definitions
<dl>
---
Formulaire
<form>
NAME="Mail"
ACTION="@"
ENCTYPE="text/plain">
METHOD="Type de transmission
34
Table
<table>
WIDTH="Valeur"
HEIGHT="Valeur"
CELLSPACING="Valeur"
CELLSPADDING="Valeur"
BORDER="Valeur"
FRAME="Type de bordure"
RULES="Type de bordure"
Cadre <frame>
NAME="Cadre1"
SRC="ex.htm"
SCROLLING="yes/no"
MARGINWIDTH="130"
MARGINHEIGHT="35"
NORESIZE
SRC="Adresse du document"
LONGDESC="Adresse du document"
(définissant le contenu)
Commentair
e
< !-- -- >
Définir une
feuille de
style
<style>
Type= " text/css (ou bien)
text/javascript "
Media="Nom de médium"
Paragraphe
<p>
Champs
d'entrée
<input>
NAME="Nom du champ"
TYPE=Type de champ>
La valeur de l’attribut
type détermine quel
champs d’entré on
aurai
Champs
multi lignes
<TEXTAR
EA>
NAME="Nom du champ"
COLS="Valeur"
ROWS="Valeur"
En fait, cette table ne constitue qu’un résumé des résumés effectués sur les éléments
HTML étudiés dans le cadre de ce mémoire, la plupart des autres balises sont destinées
à la mise en forme du contenu de la page, surtout les textes.
35
Il s’agit maintenant de trouver une structure selon la quelle un algorithme peut
extraire les éléments voulus et les stocker, de façon à pouvoir conserver les relations qui
existent entre eux. Nous avons opté pour l’utilisation de deux catégories de relations :
les relations d’inclusion et les relations d’utilisation.
3.1.1.1-les relations d’inclusion :
Ce sont les relations résultantes de l’inclusion d’un élément par les balises
(ouvrante et fermante) dans un autre élément. Ce phénomène est appelé
l »encapsulation ». Ainsi chaque élément peut être soit père, soit fils de l’autre.
Généralement une page HTML peut être représentée par un arbre dont la racine est
la balise <html> de laquelle partent deux branches qui correspondent respectivement
aux deux balises : <Head> et <Body>. Tous les autres composants sont imbriqués dans
l’une ou l’autre de ces deux balises. La figure suivant illustre cette description.
Figure 6. La structure d'une page HTML
Par exemple, le corps peut contenir un tableau, qui peut contenir à son tour une
image dans une cellule et un lien hypertexte dans une autre cellule, ce cas peut être
représenté par la figure suivant :
36
Figure 7. La relation d'inclusion
En fait, cette représentation peut être appliquée à tous les composants, ce qui facilite
la manipulation de la page HTML de manière récursive.
3.1.1.2-les relations d’utilisation :
Ce sont les relations représentées par le fait d’utiliser des éléments par d’autres en
indiquant les premiers comme des valeurs des attributs des derniers, en fait, ces
relations sont moins fréquentes que les relations d’inclusion, parce qu’on peut trouver
des éléments sans attributs.
L’exemple le plus simple pour illustrer ce type est d’appeler un script par un bouton
pour effectuer une fonction quelconque, l’exemple suivant illustre comment un attribut
du bouton peut lancer l’exécution du script.
37
Figure 8. La relation d'utilisation
Une relation d’utilisation peut dépasser les limites de la page pour relier l’élément
par un autre fichier, c’est le cas par exemple dans les feuilles de styles en cascade :
l’attribut (class) peut utiliser les caractéristique décrites dans une feuille de style pour
mettre en forme un élément situé dans une page différente de celle-ci.
3.1.2. Les Pages Actives (Client-Side) :
Cette catégorie de pages peut comporter en plus du code HTML, des scripts actifs
qui sont généralement écrits en java script. Dans ce tableau on a essayé de collecter
quelques composants dont le fonctionnement est actif (interprété au niveau du
navigateur ou coté client) :
38
table 3: Les composants actifs des pages Web.
Nom
composant
Balise Liste attributs Commentaire
Objet
multimédia
<object>
CLASSEID="java:fichier
classe"
CODETYPE="application/ja
va"
TYPE="Type
d'application"
CODEBASE="@ de
chargement"
DATA="Nom"
après les nouvelles
spécifications du
W3C, Cette balise
peut être utilisée
pour insérer soit
un objet active X
soit une séquence
flash soit un
applet.
Applet
<applet>
CODE="Nom de la classe"
CODEBASE="Adresse du
code">
C’est une classe
Java.
Vidéo ou
audio
<EMBED>
SRC="Adresse du média"
PLUGINSPACE="@de
l'application"
TYPE="Type d'application">
Java script <script> Type="text/javascript"
Ou
Language="JavaScript"
SRC="Adresse d'un page
contenant du code"
CHARSET="Nom du jeu de
caractères">
Cette balise peut
être incluse soit
par l’élément
(tête), soit par le
corps de la page
Note : on peut
inclure d’autre
langages comme
vbscript par la
même balise juste
on modifie la
valeur de l’attribut
type
39
HTML
Dynamique
… … Ce sont des
extensions
apportées au
HTML.
La présence des scripts interactifs, même s’ils ne concernent que la page qui les
contient et qu’ils sont de taille relativement réduite, complique l’analyse et la
compréhension de cette catégorie de pages.
3.1.3 Les pages dynamiques (Server Side) :
Les pages de cette catégorie peuvent comporter de code HTML, mais leurs
composants principaux étant les scripts dynamiques sont la source de toute interactivité
réelle dans les applications Web. Ce tableau comporte les langages Web dynamiques les
plus utilisées et connues :
table 4: Les composants Web dynamiques.
L’élément Balises Attributs Commentaire
<? Php … ?>
< ? … ?>
Php
<script> Language= "php"
• Ces trois formats
sont possibles
pour insérer du
code php dans
une page, mais le
dernier est
rarement utilisé
Jsp,
Servlets
<% … %>
Asp,
Asp.net
<script> language= "c# ou
VB.net"
runat="server"
40
Perl # !d:perlbinperl.exe • Perl :
L’abréviation de
(Practical
Extracting and
Reporting
Language)
• ce ligne écrite en
tête de la page
indique le chemin
de l’exécutable :
perl.exe
Pour le moment, connaître les balises de début et de fin des codes dynamique est
suffisant pour nous, puisque nous ne sommes pas intéressés par la sémantique de ces
codes.
Dans la section qui suit, nous présontons le modèle que nous avons retenu pour
supporter les composants décrits dans cette section.
3.2. Le Modèle Proposé
En fait, les modèles citées précédemment (dans le chapitre : état de l’art), ont été
définis par leurs auteurs pour répondre à leurs besoins spécifiques. Conallen était
motivé par la modélisation des applications Web en phase de « conception » ; à
l’inverse, Tramontana était motivé par la rétro-conception des applications Web. Par
ailleurs, ces auteurs ont proposé des modèles qui se distinguent également par leur
niveaux de granularité : alors que le modèle de Ricca et Tonella n’a décrit que les
composants principaux, Tramontana les a tous détaillés (même les objets d’interfaces :
ceux reliant l’application Web avec un DBMS ou bien avec d’autres systèmes externes).
L’étude de ces modèles et des objectifs sous-jacents, nous a permis de mieux
appréhender notre problématique afin de définir clairement ses spécificités. Nous avons
donc défini notre propre modèle, lequel devra répondre d’un niveau de granularité
intermédiaire pour répondre de façon pertinente à nos besoins. C’est sur ce modèle que
l’outil WebAnalyser s’appuie.
41
Les paragraphes qui suivent détaillent et illustrent la construction progressive du
modèle que nous avons retenu. Nous allons argumenter de manière incrémentale chaque
bloc qui sera rajouté au modèle. Les figures intermédiaires ne seront pas référencées
dans la table des figures ; car d’une part, elles sont incomplètes et ne sont représentées
que pour faciliter la compréhension du commentaire qui la précède. D’autre part, la
construction d’un modèle se fait toujours de façon progressive, sur plusieurs itérations
et implique plusieurs « allers-retours » ; or ces figures n’englobent pas la totalité des
concepts retenus lors des itérations précédentes. Par conséquent, seule la figure
illustrant le modèle final sera référencée.
Ces paragraphes présentent le cœur même de notre contribution théorique à cette
problématique.
En premier lieu, les pages sont l’unité de base dans une application Web et elles
peuvent être de deux catégories : les pages coté client et celles coté serveur. La page
coté client n’est pas nécessairement écrite en html puisqu’à l’origine elle peut être écrite
en un langage de programmation (Web dynamique) ; elle peut aussi être hybride
(contenir un mélange des deux langages).
Dans notre modèle, cette différenciation sera prise en compte en distinguant les
pages serveur des pages clients. De ce fait la, les pages statiques décrites par
Tramontana comme des pages clients sont considérées maintenant des pages serveur
puisque la seule différence entre eux c’est l’interprétation effectuée au niveau du
serveur avant d’être acheminées vers le poste client.
La figure suivante montre la relation (créer) entre deux pages : serveur et client,
toute en généralisant ces deux dernières par une entité (page Web).
Page Client : la page telle
qu’elle est affichée chez le
client.
Page Serveur : la page telle
qu’elle est enregistrée sur le
serveur
PageWeb
PageSrveur
PageClient
create
42
Une page cotée serveur peut inclure un script dynamique, comme elle peut être
écrite totalement en HTML. Le script dynamique est constitué de classes et de fonctions
dont l’objectif est de créer (ou bien de contribuer à la création) des éléments affichés sur
la page Client. Nous pouvons donc énoncer qu’un élément appartient toujours à une
page Web. La figure suivante montre ces relations :
On remarque que (ScriptDynamique) est reliée grâce à la relation (createElement)
avec (Element), cette association est utile parce que le fait de déterminer le script
responsable de créer un élément quelconque peut rendre la modification de cet élément
une opération plus facile et plus rapide.
D’autre part une page Web peut être composée de « framesets » qui peuvent être
divisées à leur tour soit en d’autre « farmesets » soit en des cadres à fin d’afficher
d’autres pages.
_PageClient
_PageServeur
_create
_Function_Classe
_PageWeb
_ScriptDynamique
_Element
_createElement
43
PageClient PageServeur
create
Element
FrameSetdivisé en
Frame
divisé en
PageWeb
afficher
Commençons à spécialiser les éléments affichés dans une page Web. En premier
lieu, chaque élément inclue d’autres éléments d’une manière imbriquée, à l’exception de
quelques éléments simples comme les commentaires et les images, la figure suivante
montre les éléments les plus importants qui sont : les liens hypertextes, les tables, les
objets multimédia, les formulaires, les extraits texte, les commentaires, et les scripts
actifs.
_Texte
_Commentaire
_ObjetMultimedia
_ScriptActif
_Formulaire.
_Table
_
_Element
LienHypertexte
44
Comme le cas des scripts dynamiques, les scripts actifs peuvent être divisées en des
modules, qui sont soit des fonctions soit des classes, et ces modules peuvent à leur tour
être composés d’autres modules comme illustré par cette figure :
ScriptActif
FonctionClient
ClasseClient
ModuleElement.
Les liens hypertextes acheminent le navigateur vers une autre page Web en affichant
cette dernière dans un cadre bien déterminé
Frame
Element.
LienHypertexte
PageWeb
vers
FrameSetdivisé en
divisé en
Concernant les formulaires, ces composants sont attachés sur une page coté serveur
à travers une relation « submit », dans ce cas la page cible ne doit pas être une page coté
client vu la nécessité de traiter les valeurs envoyées par le formulaire.
45
PageClient
PageServeur
create
Formulaire
submit
PageWeb Element.
La figure 9 illustre le modèle global retenu dans notre approche. Il regroupe tous
les aspects énumérés précédemment. Ce modèle décrit une application Web générique.
Par conséquent, n’importe quelle application réelle à traiter sera une instance de ce
modèle.
PageClient
Frame
Texte
Commentaire
ObjetMultimedia
ScriptActif
FonctionClient
ClasseClient
Module
Table
Formulaire.
FrameSetdivisé en
divisé en
LienHypertexte
PageWeb
achemine vers
Fonction Classe
PageServeur
create
submit
ScriptDynamique
include
Element
createElement
Figure 9. Le Modele Global Retenu
46
Au besoin, ce modèle peut faire l’objet d’extensions afin de supporter d’autres
catégories de composants Web.
3.3. Le logiciel
« La différence entre la théorie et la pratique, c’est qu’en
théorie, il n’y a pas de différence entre la théorie et la pratique mais qu’en pratique,
il y en a une. »
Jan van de Sneptscheut
Notre contribution théorique est certes intéressante … mais pour prouver qu’elle est
pertinente sa validation est indispensable. Nous avons donc implémenté notre outil
WebAnalyser en se basant sur le modèle retenu pour pouvoir le valider.
3.3.1. Description générale
L’architecture interne de notre outil est illustrée par la figure suivante :
Figure 10. L'architecture du logiciel "Web Analyser"
47
WebAnalyser est basé sur quatre composants : l’aspirateur, le nettoyeur, le parseur et
l’éditeur ou « visualiseur ».
- l’aspirateur 1
: c’est un Logiciel destiné a copier l'intégralité d'un site Web sur le
disque dur d'un ordinateur. Il se connecte à une page, désignée par son utilisateur,
et traque sur celle-ci tous les liens et appels à des fichiers extérieurs (images,
vidéos, animations flashs ou autres). Chaque fichier ainsi localisé est copié sur le
disque dur de l'ordinateur effectuant ainsi l'aspiration. Le site est alors consultable
en local, sans être connecté à Internet. L’aspirateur n’intervient que dans le cas où
le site n’est disponible que sur le Web.
- Le Nettoyeur : le code HTML contient très souvent des erreurs. Même si elles ne
sont pas problématiques pour un navigateur, ces erreurs le sont pour tout autre
traitement automatique. D’où la nécessité d’un nettoyeur pour corriger les
éventuelles erreurs syntaxiques qui peuvent apparaître dans le code HTML. Nous
avons retenu Tidy [Rag], un outil en ligne qui retourne des pages HTML
syntaxiquement bien formées.
- Le parseur : c’est le cœur même de notre outil. Il traite (« parse ») les fichiers
d’un site (enregistrés sur le disque dur) et utilise un « mapper »2
pour enregistrer
les extraits dans la base de données.
- Le visualiseur : c’est un éditeur graphique. Il affiche les composants de
l’application sous une forme arborescente ; ainsi l’utilisateur peut naviguer entre
les différents composants. Il s’agit d’une interface graphique conviviale.
- Les sections suivantes présentent les étapes suivies lors du développement de
l’outil WebAnalyser.
3.3.2. Les alternatives … et choix
Nous étions confrontés à plusieurs alternatives quant au choix des composantes
techniques nécessaires au développement de cet outil. Les paragraphes qui suivent
présentent et justifient les choix retenus.
1
Selon l’url :http://www.dicodunet.com/annuaire/def-26-aspirateur-de-site.htm
2
Un “Mapper” est une classe java qui se charge d’extraire les valeurs des attributs d’un objet et les
enregistrer sous la forme d’un enregistrement dans une base de données relationnelle.
48
3.3.2.1. Le langage de programmation utilisé
Choisir java comme langage de développement ne nécessitait pas des études
comparatives, parce que ce langage représente un résultat de toutes les modifications
apportées aux langages précédents, en plus, la richesse des libraires du Java et sa
portabilité sont des avantages convaincants pour le choisir. Les points suivants
expliquent en résumé les avantages de l’utilisation de ce langage, au moins dans le
développement de cet outil :
- Le parseur : dans la section (3.3.2.2) on va aborder l’utilisation du parseur
HTML qui est disponible en toute API de java. Des classes sont prêtes à l’usage
avec des fonctions couvrantes la plupart des besoins des développeurs.
- La connexion à la base de données : en utilisant un pilote adéquat la connexion à
une base de données devient une tache facile. D’autre part, java supporte un
ensemble de classes permettant de gérer cette connexion, et beaucoup de
technologies de « mapping » ont été créées spécifiquement.
- L’interface graphique : java supporte plusieurs moyens pour créer des interfaces
graphiques répondant à tous les besoins et facilitant considérablement le travail.
- La portabilité : un logiciel écrit en java est généralement indépendant de la
plateforme et du système d’exploitation. Les utilisateurs du system Unix peuvent
donc profiter de notre outil exactement comme les utilisateurs de windows.
- La facilité de codage : java élimine toutes les difficultés qu’on éprouvait en
écrivant des codes avec le pointeur puisqu’on est devenu capables de gérer
automatiquement l’allocation de mémoire qui minimise son encombrement.
Tous ces avantages nous ont confortés dans le choix de java comme langage de
programmation pour développer notre outil.
3.3.2.2. Le parseur
En fait, le cœur de ce logiciel est un parseur, spécialisé au langage HTML. Mais
avant, que signifie parseur ?
La définition citée dans l’encyclopédie « Wikipedia » :
“In computer science and linguistics, parsing (more formally syntax analysis) is the
process of analyzing a sequence of tokens to determine its grammatical structure with
respect to a given formal grammar, A parser is a computer program that carries out this
49
task, it is a component of a compiler. Parsing transforms input text into a data structure,
usually a tree which is suitable for later processing and which captures the implied
hierarchy of the input. Lexical analysis creates tokens from a sequence of input
characters and it is these tokens that are processed by a parser to build a data structure
such parse tree or abstract syntax tree”.
D’après cette définition générique, un parseur est un programme qui analyse une
chaîne de caractères pour déterminer sa structure grammaticale en respectant une
grammaire donnée. Dans notre cas, un parseur doit pouvoir extraire des blocs de code à
partir d’un document HTML. Cette extraction peut être supportée par une DTD
décrivant la structure d’une page HTML.
Donc l’input de notre parseur sera des pages HTML, et l’output sera des blocs de
code HTML accompagnés de quelques informations pertinentes.
Nous avions le choix entre développer notre propre parseur ou utiliser un parseur
disponible. La flexibilité des parseurs existants était un argument convainquant. Nous
avons donc opté pour cette seconde alternative. En java, on a trouvé deux types de
parseurs disponibles comme des API (parmi d’autres) : le « HTML parser », et la classe
« Lexer » :
1) la classe Lexer :
Figure 11. La classe Lexer
50
Cette classe « parse » le flôt HTML en des noeuds, chaque un de ces noeuds
représente un élément HTML avec soit deux balises (ouvrante et fermante), soit une
seule balise dans le cas des éléments simples comme les images.
Les noeuds résultants de ce parseur sont de trois types : commentaire, texte ou
balise.
Les nœuds de type « commentaire » et « texte » représentent respectivement les
commentaires et les textes intégrés dans une page HTML, alors que ceux de type
« balise » représentent les autres éléments.
2) le parseur « HTML parser »:
Ce parseur utilise deux classes Java prédéfinies, la classe (ParserDeligator), et la
classe (ParserCallback), à partir de la documentation java on a extrait leurs définitions
comme suit :
Figure 12. La classe Parser
Figure 13. La classe HTMLEditorKit
51
Le point de départ, c’est La classe ParserDelegator qui « parse » un flux HTML et
avertit un objet ParserCallback passé en paramétre de l’état du « parsing ».
La classe ParserCallback implémente les opérations suivantes :
public void flush() throws BadLocationException
public void handleText(char[] data, int pos)
public void handleComment(char[] data, int pos)
public void handleStartTag(HTML.Tag t,MutableAttributeSet a, int pos)
public void handleEndTag(HTML.Tag t, int pos)
public void handleSimpleTag(HTML.Tag t,MutableAttributeSet a, int pos)
public void handleError(String errorMsg, int pos)
public void handleEndOfLineString(String eol)
Pas de besoin pour le moment d’expliquer les rôles de ces opérations mais un
exemple simple qui fait extraire tous les textes d’un document HTML n’est pas mal :
HTMLEditorKit.ParserCallback callback = new HTMLEditorKit.ParserCallback ()
{
public void handleText(char[] data, int pos) {
System.out.println(data);
}
};
Reader reader = new FileReader("myFile.html");
new ParserDelegator().parse(reader, callback, false);
Ce parseur est « DTD driven », c'est-à-dire qu’il travaille selon un DTD données,
pour le moment ce n’a pas de sens, mais c’est un avantage grâce au quel on peut utiliser
ce parseur pour extraire des données à partir des documents des types différents.
Notre choix s’est fixé sur ce dernier.
52
3.3.2.3. Stockage et sauvegarde de la base de données
Notre application doit être capable de stocker des données extraites à partir des
pages Web, donc il est nécessaire qu’elle implémente une base de données, les données
à stocker seront des différents types, mais généralement, de type texte pour les
appellations des balises, de type entier pour leurs positions, et de type (blob) pour les
extraits de texte.
L’outil le plus efficace pour stocker des données de manière structurée et centralisée
reste une base de données, d’où c’est très intéressant de choisir le système de gestion de
base de données (SGBD) le plus adapté à nos besoins spécifiques.
Une base de données possède des tables contenant les données que l’on souhaite
stocker, sur celles-ci on peut effectuer des requêtes, en utilisant un langage spécifique
(SQL Standard Query Language) à fin de gérer l’ensemble des données, c'est-à-dire : les
opérations de lecture, de suppression et de modification.
Notre parseur aura besoin d’insérer et de consulter des enregistrements d’une
manière un peu stable, c'est-à-dire les requêtes dont on aura besoin seraient fixées dés le
début. Nous présentons ici une petite étude comparatif entre deux solutions gratuites :
PostgreSQL et MySql.
table 5 : Comparaison MySq l 5.0 X Postgre 8.1
Fonctionnalités MySQL 5.0 Postgre 8.1
Support de clés étrangères Oui Oui
Vues Oui Oui
Procédures stockées Oui Oui
Triggers Oui Oui
Unions Oui Oui
Jointures complètes Non Oui
Contraintes Non Oui
Héritage de table Non Oui
Curseurs Partiellement (seulement en
lecture)
Oui
Supporte IPV6 Non Oui
Driver JDBC Oui Oui
53
a)MySQL
MySQL fonctionne sur beaucoup de plateformes, de plus la plupart des langages
utilisés aujourd’hui sont capable d’interagir avec lui.
Depuis la version 4.1 le MySQL intègre les requêtes imbriquées et les tables
InnoDB permettant de gérer les transactions et les verrous au niveau des lignes, à
propos du codage des caractères c’est maintenant disponible sur plusieurs octets.
D’autre part MySQL offre de très bon résultat en terme de performances et rapidité
d’accès, il est très rapide, multithread, robuste et multi-utilisateur. Les raisons pour les
quelles il est très utilisé avec beaucoup de technologies.
b) PostgreSQL
PostgerSQL est un système de gestion de base de données développé par
(PostgreSQL Global developpement group). Ce system est très utilisé aujourd’hui grâce
aux nombreux avantages techniques qu’il possède : comme les requêtes imbriquées, les
transactions, les vues, les triggers et l’héritage des tables. PostgreSQL propose donc de
nombreuses fonctionnalités, mais dont on n’a pas besoin. Notre choix s’est donc porté
sur MySQL en considérant le facteur rapidité.
3.3.2.4. Persistance des données
Les données extraites par l’outil proposé sont stockées dans une base de données
relationnelle, par exemple, au biais de l’API JDBC on peut connecter une application
java avec une base de données relationnelle, mais comment stocker des objets Java dans
une base de données relationnelle ? Cette question demeure jusqu'à nos jours
problématique !
Pour palier à ce problème beaucoup des technologies manipulant des bases de
données objets sont proposées, mais pratiquement, la plupart des développeurs préfèrent
faire ce qu’on appelle « mapping ». Etant une solution intermédiaire le « Mapping »
correspond à des technologies permettant de faire le passage entre les objets traités par
les langages orientés objets et des enregistrements stockables dans des bases de données
relationnelles.
Les solutions les plus abordables pour faire du « mapping » sont : Hibernate et
EJBs, qui font l’objet de cette étude comparative en ajoutant le JDBC.
54
table 6 :Comparaison JDBC X Hibernate X EJBs.
Fonctionnalités JDBC Hibernate EJBs
Mise en place Très simple Apprentissage
nécessaire
Apprentissage
nécessaire
Indépendance du
SGBD
Oui Oui Oui
Persistance d’objet
Java
Non Oui Oui
Mapping des Objets
Java
Non Oui Oui
Création de la base
de données
Lui fournir le script
SQL
Génération du code
SQL
automatiquement
-
Bufferisation des
données a fin
d’éviter les
connexions a la
base.
Non Oui Oui
Déploiement Intégration du pilot
JDBC dans le JDK
Intégration des
librairies dans le
projet
Nécessite un
conteneur d’EJBs
Configuration - Fichier XML ou
annotations Java
Fichier XML ou
annotations Java
a)JDBC :
JDBC est l’acronyme de « Java DataBase Connectivity » et désigne une API définie
par SUN pour permettre un accès aux bases de données relationnelles (SGBD) avec
Java.
b) Hibernate :
Hibernate est une surcouche à la base de données. Elle fournit un ensemble de
méthodes et fonctions permettant de rendre persistants les objets Java d’une application.
Il faut donc dans un premier temps permettre à Hibernate d’accéder au système de
55
gestion de base de données utilisé en lui fournissant les paramètres adéquats. On peut
ensuite définir les règles qui permettront à nos objets Java de devenir persistants. Cette
étape se nomme le « Mapping » de données. En effet les classes Java de notre
application seront par ce processus représentées par des tables dans notre base de
données. Le « mapping » permet de définir les différentes propriétés des tables dans
notre base mais aussi les relations qu’il peut exister entre celles-ci.
Il n’y a pas besoin d’expliquer ici les configurations de Hybernate mais cette figure
représente une vue globale de Hibernate dans une application gérant une base de
données.
Figure 14. L'architecture de Hibernate
Cette figure montre la séparation entre l’application et la base de données réalisée
grâce à la couche Hibernate qui est chargée de faire l’interaction entre les deux autres
couches.
c) EJBs
Les EJB sont des composants qui possèdent alors certaines caractéristiques comme
la réutilisabilité, la possibilité de s’assembler pour construire une application, etc. Les
EJB et les beans n’ont en commun que d’être des composants. Les javas beans sont des
composants qui peuvent être utilisés dans toutes les circonstances. Les EJB doivent
obligatoirement s’exécuter dans un environnement serveur dédié. Les EJB sont
parfaitement adaptes pour être intégrés dans une architecture trois tiers ou plus. Dans
une telle architecture, chaque tiers assure une fonction particulière :
56
- le client (léger) assure la saisie et l’affichage des données ;
- Sur le serveur les objets métiers contiennent les traitements. Les EJB sont
spécialement conçus pour constituer de telles entités ;
- Une base de données assure la persistance des informations.
Les EJB s’exécutent dans un environnement particulier : le serveur d’EJB. Celui ci
fournit un ensemble de fonctionnalités utilisées par un ou plusieurs conteneurs d’EJB
qui constituent le serveur d’EJB. En réalité, c’est dans un conteneur que s’exécute un
EJB et il lui est impossible de s’exécuter en dehors.
Figure 15. L'architecture interne de l’EJBs
Il existe de nombreux serveurs d’EJB commerciaux : BEA Weblogic, IBM
Webshere, Sun IPlanet, Macromedia JRun, Borland AppServer, etc. Il existe aussi des
serveurs d’EJB open source dont les plus avancés sont JBoss et Jonas.
Selon la table de comparaison au dessus, le JDBC ne fais du « mapping » comme les
deux autre solutions, mais pourtant on ne va pas utiliser ces deux bonnes solutions à
cause des contraintes de temps, on est d’accord que leur utilisation minimise bien le
temps de développement mais c’est le contraire pour leur apprentissage !
On a décidé de n’employer que JDBC de manière simple en créant une « mapper »
spécial, il s’agit d’une classe java dont le rôle est de faire un « mapping » pour des objet
bien déterminés, ce n’aura pas les avantages des autres solutions mais c’est suffisant
pour notre logiciel à cette étape.
57
3.3.2.5. Cycle de vie
Les spécificités des applications Web (changement rapide, apparition de nouvelles
technilogies, etc.) nous imposent d’adopter pour le développement de notre outil un
cycle de vie itératif et incrémental.
Mais pour définir une séquence d’étapes, partiellement ordonnées, on a besoin d’une
méthode reposant sur UML1
, comme le processus unifié2
, qui est très utile dans le cas
des grands projets. Dans notre cas, et pour simplifier les choses, on va suivre une
méthode issue de celle présentée par Roques [Roq 02] dans son livre « UML- Modéliser
un site e-commerce». La méthode présentée par Roques est simple et générique et se
situe à mi-chemin entre le processus unifié, qui constitue un cadre général très complet
de processus de développement, et XP3
(eXtreme Programming) qui est une approche
minimaliste à la mode centrée sur le code. Cette méthode résulte de plusieurs années
d’expérience sur de nombreux projets dans des domaines variés. Elle a donc montré son
efficacité dans la pratique. En plus, cette méthode est caractérisée par les avantages
suivants :
conduite par les cas d’utilisation, comme le processus Unifié mais bien plus simple ;
relativement légère et restreinte, comme XP, mais sans négliger les activités de
modélisation en analyse et conception ;
Fondée sur l’utilisation d’un sous-ensemble nécessaire et suffisant du langage UML
(modéliser 80% des problèmes en utilisant 20% d’UML).
Cette méthode divise le processus du développement d’un logiciel en quatre phases,
comme suit :
- Phase d’identification des besoins et spécification des fonctionnalités.
- Phase d’analyse.
- Phase de conception.
1
UML (« Unified Modeling Language » soit langage de modélisation objet unifié) est né de la fusion des
trois méthodes qui se sont imposées dans le domaine de la modélisation objet au milieu des années1990:
OMT, Booch et OOSE. D’important acteurs industriels (IBM, Microsoft, Oracle, DEC, HP, Rational,
Unisysetc.) s’associent alors à l’effort et proposent UML 1.0 à l’OMG (Object Management Group) qu’il
accepte en novembre 1997 dans sa version 1.1. La version d’UML en cours est UML 2.0 qui s’impose
plus que jamais en tant que langage de modélisation standardisé pour la modélisation des logiciels.
2
Le processus unifié est un processus de développement logiciel, itératif, centré sur l’architecture, piloté
par des cas d’utilisation et orienté vers la diminution des risques.
3
L'Extreme Programming (XP) est une méthode agile de gestion de projet informatique adaptée aux
équipes réduites avec des besoins changeants. Elle pousse à l'extrême des principes simples, cette
définition a été prise de l’url : http://www.techno-science.net/?onglet=glossaire&definition=723.
58
- Phase d’implémentation.
La première phase utilise un diagramme de cas d’utilisation, puis un diagramme de
séquence système, et en fin une maquette d’interface d’IHM 1
(non couvert par UML).
Évidemment, ces diagrammes doivent être génériques à cette étape là, il s’agit d’une
étape préparatoire qui décrit bien les grandes lignes de l’application.
La transition vers la modélisation objet est le premier apport de la phase d’analyse,
qui décrit, pour se faire, un modèle du domaine2
, en fait, ce modèle constitue une
version primitive du diagramme de classe. Une fois le modèle du domaine est élaboré,
on utilise un diagramme de classes participantes qui effectue la jonction entre tous les
artefacts, puisque ce diagramme modélise trois types de classes d’analyse : les
dialogues, les contrôles et les entités, ainsi que leurs relations. Le troisième diagramme
utilisé dans la phase de l’analyse est appelé Diagramme d’activités de navigation, qui
offre la possibilité de représenter graphiquement l’activité de navigation dans l’interface
en produisant des diagrammes de navigation.
Passons maintenant à la troisième phase, on s’y sert de deux types de diagrammes,
les diagrammes d’interaction qui ont pour but d’attribuer précisément les responsabilités
de comportement, et ceux de classes de conception qui serviront pour l’implémentation.
Le diagramme de classes de conception final doit être complet et compatible avec le
langage de programmation utilisé dans la phase suivante.
Selon cette méthode la dernière phase décrite est l’implémentation, dans cette phase
on écrit le code et on crée la base de données, toute en utilisant les diagrammes élaborés
précédemment.
3.3.3. Le Dossier de Conception de WebAnalyser
Comme nous avons décidé précédemment, la méthode présentée par Roques serait
notre cycle de vie de développement utilisant le langage de modélisation UML (Unified
Modeling Language), dans le cadre de cette partie on explique bien les différentes
étapes constituant ce cycle de vie, toute en ajoutant quelques étapes nécessaires comme
l’étude de faisabilité.
1
Une maquette d’IHM (Interface Homme-Machine) est un produit jetable permettant aux utilisateurs
D’avoir une vue concrète mais non définitive de la future interface de l’application .La maquette peut très
bien consister en un ensemble de dessins produits par un logiciel de présentation ou de dessin.
2
En fait, L’analyse du domaine est une étape totalement dissociée de l’analyse des besoins, Elle peut
donc être menée avant, en parallèle ou après cette dernière.
59
3.3.3.1 Etude de faisabilité
Un des apports intéressants de suivre un cycle de vie en créant une application c’est
posséder des documentations dédiées, au biais de laquelle on peut comprendre la
structure de cette application.
Voici un petit exemple pour montrer l’utilité de notre outil :
Voici une page HTML :
Figure 16.Le code d'une page HTML
Ce n’est qu’une page HTML (simple !) mais ouverte avec un Bloc-notes et pas
un navigateur Web, imaginons que l’on ait besoin de modifier un élément quelconque
(une image par exemple), en chercher la balises <img>, puis en modifier les attributs <
src=XXX >, ensuite, rapidement l’enregistrer et l’ouvrir par le navigateur …Trois
situations peuvent se présenter :
notre modification était la bonne … quel bonheur !
nous avons modifié une autre image … on doit refaire une double manipulation :
rectifier l’erreur et refaire le changement en espérant de tomber cette fois sur la bonne
image.
Enfin, une troisième possibilité dramatique : le navigateur n’affiche rien car on a
commit une erreur lexicale !
Face à ce scénario, notre outil WebAnalyser est la planche de salut ! Il nous fournit
la position de chaque composant de la page avec sa liste d’attributs et nous donne la
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser
Yazeed Erman Graduation Project for Bachelor in CS: Web analyser

Contenu connexe

Similaire à Yazeed Erman Graduation Project for Bachelor in CS: Web analyser

Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
Rapport de stage PFE ( DUT) chez Synthèse Conseil  - Jaiti MohammedRapport de stage PFE ( DUT) chez Synthèse Conseil  - Jaiti Mohammed
Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
Mohammed JAITI
 
Projet de fin d'etude 2015 (le web to store) élaborer par Debbichi zied
Projet de fin d'etude 2015 (le web to store) élaborer par Debbichi ziedProjet de fin d'etude 2015 (le web to store) élaborer par Debbichi zied
Projet de fin d'etude 2015 (le web to store) élaborer par Debbichi zied
Zied Debbichi
 
Chavanon.rodolphe m2 mms2019-perception site internet b to b (4) (1)
Chavanon.rodolphe m2 mms2019-perception site internet b to b (4) (1)Chavanon.rodolphe m2 mms2019-perception site internet b to b (4) (1)
Chavanon.rodolphe m2 mms2019-perception site internet b to b (4) (1)
Rodolphe Chavanon
 
Comment conduire un projet web entre planification ?
Comment conduire un projet web entre planification ?Comment conduire un projet web entre planification ?
Comment conduire un projet web entre planification ?
MarineS6
 
Rapport de PFE
Rapport de PFERapport de PFE
Rapport de PFE
Ghizlane ALOZADE
 
salwfrarapp137.pdf
salwfrarapp137.pdfsalwfrarapp137.pdf
salwfrarapp137.pdf
SASarah3
 
Recommandations organismes de formation métiers internet
Recommandations organismes de formation métiers internet Recommandations organismes de formation métiers internet
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-ConsultingRapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
Mohamed Cherkaoui
 
1601896849 rapport fluttercopie
1601896849 rapport fluttercopie1601896849 rapport fluttercopie
1601896849 rapport fluttercopie
RamiJOUDI2
 
Rapport de pfe format doc 2013
Rapport de pfe format doc 2013Rapport de pfe format doc 2013
Rapport de pfe format doc 2013
Addi Ait-Mlouk
 
Rapport Projet de fin d'etude sur le parc informatique
Rapport Projet  de fin d'etude sur le parc informatiqueRapport Projet  de fin d'etude sur le parc informatique
Rapport Projet de fin d'etude sur le parc informatique
Hicham Ben
 
Rapport final-Marwen ben khalifa
Rapport final-Marwen ben khalifaRapport final-Marwen ben khalifa
Rapport final-Marwen ben khalifa
Marwen Ben Khalifa
 
Rapport de PFE mastère PRO
Rapport de PFE mastère PRORapport de PFE mastère PRO
Rapport de PFE mastère PRO
ahmedmiha
 
Rapport projet: relisation d'une app desktop
Rapport projet: relisation d'une app desktop Rapport projet: relisation d'une app desktop
Rapport projet: relisation d'une app desktop
amat samiâ boualil
 
(Vriamont)_(55930800)_(2015).pdf
(Vriamont)_(55930800)_(2015).pdf(Vriamont)_(55930800)_(2015).pdf
(Vriamont)_(55930800)_(2015).pdf
ABDELATIFJAOUHARI1
 
Le web sémantique pour mieux anticiper le futur
Le web sémantique pour mieux anticiper le futurLe web sémantique pour mieux anticiper le futur
Le web sémantique pour mieux anticiper le futur
Sylvain Gateau
 
AUTOMATISATION DU DEPLOIEMENT ET DE LA GESTION DES RESEAUX VIRTUELS DANS LE C...
AUTOMATISATION DU DEPLOIEMENT ET DE LA GESTION DES RESEAUX VIRTUELS DANS LE C...AUTOMATISATION DU DEPLOIEMENT ET DE LA GESTION DES RESEAUX VIRTUELS DANS LE C...
AUTOMATISATION DU DEPLOIEMENT ET DE LA GESTION DES RESEAUX VIRTUELS DANS LE C...
Khadidja BOUKREDIMI
 
Mémoire de fin d'études - Twitch : Quand l'utilisateur prend les manettes du ...
Mémoire de fin d'études - Twitch : Quand l'utilisateur prend les manettes du ...Mémoire de fin d'études - Twitch : Quand l'utilisateur prend les manettes du ...
Mémoire de fin d'études - Twitch : Quand l'utilisateur prend les manettes du ...
Guillaume Dubuis
 
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
Massimo Russo
 
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
Massimo Russo
 

Similaire à Yazeed Erman Graduation Project for Bachelor in CS: Web analyser (20)

Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
Rapport de stage PFE ( DUT) chez Synthèse Conseil  - Jaiti MohammedRapport de stage PFE ( DUT) chez Synthèse Conseil  - Jaiti Mohammed
Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
 
Projet de fin d'etude 2015 (le web to store) élaborer par Debbichi zied
Projet de fin d'etude 2015 (le web to store) élaborer par Debbichi ziedProjet de fin d'etude 2015 (le web to store) élaborer par Debbichi zied
Projet de fin d'etude 2015 (le web to store) élaborer par Debbichi zied
 
Chavanon.rodolphe m2 mms2019-perception site internet b to b (4) (1)
Chavanon.rodolphe m2 mms2019-perception site internet b to b (4) (1)Chavanon.rodolphe m2 mms2019-perception site internet b to b (4) (1)
Chavanon.rodolphe m2 mms2019-perception site internet b to b (4) (1)
 
Comment conduire un projet web entre planification ?
Comment conduire un projet web entre planification ?Comment conduire un projet web entre planification ?
Comment conduire un projet web entre planification ?
 
Rapport de PFE
Rapport de PFERapport de PFE
Rapport de PFE
 
salwfrarapp137.pdf
salwfrarapp137.pdfsalwfrarapp137.pdf
salwfrarapp137.pdf
 
Recommandations organismes de formation métiers internet
Recommandations organismes de formation métiers internet Recommandations organismes de formation métiers internet
Recommandations organismes de formation métiers internet
 
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-ConsultingRapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
 
1601896849 rapport fluttercopie
1601896849 rapport fluttercopie1601896849 rapport fluttercopie
1601896849 rapport fluttercopie
 
Rapport de pfe format doc 2013
Rapport de pfe format doc 2013Rapport de pfe format doc 2013
Rapport de pfe format doc 2013
 
Rapport Projet de fin d'etude sur le parc informatique
Rapport Projet  de fin d'etude sur le parc informatiqueRapport Projet  de fin d'etude sur le parc informatique
Rapport Projet de fin d'etude sur le parc informatique
 
Rapport final-Marwen ben khalifa
Rapport final-Marwen ben khalifaRapport final-Marwen ben khalifa
Rapport final-Marwen ben khalifa
 
Rapport de PFE mastère PRO
Rapport de PFE mastère PRORapport de PFE mastère PRO
Rapport de PFE mastère PRO
 
Rapport projet: relisation d'une app desktop
Rapport projet: relisation d'une app desktop Rapport projet: relisation d'une app desktop
Rapport projet: relisation d'une app desktop
 
(Vriamont)_(55930800)_(2015).pdf
(Vriamont)_(55930800)_(2015).pdf(Vriamont)_(55930800)_(2015).pdf
(Vriamont)_(55930800)_(2015).pdf
 
Le web sémantique pour mieux anticiper le futur
Le web sémantique pour mieux anticiper le futurLe web sémantique pour mieux anticiper le futur
Le web sémantique pour mieux anticiper le futur
 
AUTOMATISATION DU DEPLOIEMENT ET DE LA GESTION DES RESEAUX VIRTUELS DANS LE C...
AUTOMATISATION DU DEPLOIEMENT ET DE LA GESTION DES RESEAUX VIRTUELS DANS LE C...AUTOMATISATION DU DEPLOIEMENT ET DE LA GESTION DES RESEAUX VIRTUELS DANS LE C...
AUTOMATISATION DU DEPLOIEMENT ET DE LA GESTION DES RESEAUX VIRTUELS DANS LE C...
 
Mémoire de fin d'études - Twitch : Quand l'utilisateur prend les manettes du ...
Mémoire de fin d'études - Twitch : Quand l'utilisateur prend les manettes du ...Mémoire de fin d'études - Twitch : Quand l'utilisateur prend les manettes du ...
Mémoire de fin d'études - Twitch : Quand l'utilisateur prend les manettes du ...
 
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
 
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
 

Yazeed Erman Graduation Project for Bachelor in CS: Web analyser

  • 1. 1 Université de la Manouba École Supérieure de Commerce de Tunis MEMOIRE DE FIN D’ÉTUDES Présenté en vue de l’obtention de : La Maîtrise en Informatique Appliquée à la Gestion des Entreprises Sujet : Conception et Mise en Œuvre d’un Outil Interactif d’Aide à la Maintenance des Applications Web : WebAnalyser Élaboré par : Mr Yazid Erman Encadré par : Mme Sélima Besbes Essanaa (ESC) Année Universitaire : 2006 - 2007
  • 2. 2 RemerciementsRemerciementsRemerciementsRemerciements Je tiens à remercier ALLAH qui m’a accordé ses bienfaits et ses générosités, je remercie sa majesté pour les personnes par les quelles j’étais soutenu tout au long de ma vie : J’adresse mes remerciements les plus distingués à mon encadreur Mme Sélima Besbes Essanaa qui m’a proposé ce sujet. En plus de ses précieux conseils, elle a supporté avec patience tout le labeur durant la correction de mon rapport. J’adresse, en signe de reconnaissance, mes plus vifs remerciements pour l’extrême sympathie à Mme Chiraz Latiri, qui ne m’a enseigné seulement comment programmer, mais aussi comment être au service des autres, je n’oublierai jamais ses efforts pour m’avoir aidé à m’adapter à la formation en français dés le début. Mes remerciements s’adressent aussi à tous les enseignants de l’ESC qui ont contribué à ma formation. Yazid Erman
  • 3. 3 DédicaceDédicaceDédicaceDédicace Je dédie ce travail à … Samih Haifa, Fatmeh, Laiali, Boudour, Sedra, Yazan, Mohammed, Yassine, Fadi, Ghassan, hamdan, Ahmed.Q, Med.J, adey,Wael,ayoub, Shadi, Anas, ahmed.H, Med.A, Ayed, Nabil.S, Med.M, Nabil.R, Abdallah, Malak, Tasneem, Ines . J’espère qu’ils trouveront dans ce travail l’expression de ma gratitude, de mon amour, de ma reconnaissance et de mon profond attachement. Yazid Erman
  • 4. 4
  • 5. 5 Table des matières Introduction...................................................................................................................... 7 i. Description du Contexte.................................................................................................... 10 ii. Description de la problématique ..................................................................................... 13 iii. Présentation de la contribution...................................................................................... 13 Chapitre 1. Catégorisation des applications Web......................................................... 15 1.1. Introduction.................................................................................................................... 15 1.2. Application Web … ou Site Web ?............................................................................... 16 1.3. L’architecture d’une applications Web....................................................................... 19 1.4. Les Catégories d’applications basées sur le Web........................................................ 20 1.5. Les composants Web ..................................................................................................... 22 1.5.1. Pages Serveur / Pages Client .................................................................................................. 24 1.5.2. Pages Statiques / Pages Actives / Pages dynamiques............................................................. 24 1.6. HTML............................................................................................................................. 25 Chapitre 2. État de l’Art................................................................................................. 27 2.1. Le Modèle proposé par Ricca et Tonella : [Ric 00a ].................................................. 27 2.2. Le Modèle proposé par Conallen [Con 00].................................................................. 28 3.3. Le Modèle proposé par Tramontana : [Tra 05].......................................................... 30 Chapitre 3. Proposition.................................................................................................. 32 3.1. Étude des composants Web........................................................................................... 32 3.1.1. Les pages Statiques : .............................................................................................................. 32 3.1.1.1-les relations d’inclusion :................................................................................................. 35 3.1.1.2-les relations d’utilisation : ............................................................................................... 36 3.1.2. Les Pages Actives (Client-Side) :........................................................................................... 37 3.1.3 Les pages dynamiques (Server Side) :..................................................................................... 39 3.2. Le Modèle Proposé ........................................................................................................ 40 3.3. Le logiciel........................................................................................................................ 46 3.3.1. Description générale............................................................................................................... 46 3.3.2. Les alternatives … et choix.................................................................................................... 47 3.3.2.1. Le langage de programmation utilisé.............................................................................. 48 3.3.2.2. Le parseur....................................................................................................................... 48 3.3.2.3. Stockage et sauvegarde de la base de données ............................................................... 52 3.3.2.4. Persistance des données.................................................................................................. 53 3.3.2.5. Cycle de vie .................................................................................................................... 57 3.3.3. Le Dossier de Conception de WebAnalyser ........................................................................... 58 3.3.3.1 Etude de faisabilité .......................................................................................................... 59 3.3.3.2. Identification des besoins et spécification des fonctionnalités : ..................................... 60 3.3.3.3. Phases d’analyse............................................................................................................. 67 3.3.3.4. Phase de conception : ..................................................................................................... 70 3.3.3.5. Phase d’implémentation.................................................................................................. 76 Conclusion...................................................................................................................... 79 Bibliographie.................................................................................................................. 82 Table des figures
  • 6. 6 Figure 1. Classification des applications Web d’après [Mec 99] et [Con 00]________ 18 Figure 2. La structure générale d’une application Web_________________________ 23 Figure 3. Le Modèle proposé par Ricca et Tonella : [Ric 00a] ___________________ 27 Figure 4. Le Modèle proposé par Conallen [Con 00] __________________________ 28 Figure 5. le Modèle proposé par Tramontana [Tra 05 ]_________________________ 30 Figure 6. La structure d'une page HTML ___________________________________ 35 Figure 7. La relation d'inclusion __________________________________________ 36 Figure 8. La relation d'utilisation__________________________________________ 37 Figure 9. Le Modele Global Retenu _______________________________________ 45 Figure 10. L'architecture du logiciel "Web Analyser" _________________________ 46 Figure 11. La classe Lexer_______________________________________________ 49 Figure 12. La classe Parser ______________________________________________ 50 Figure 13. La classe HTMLEditorKit ______________________________________ 50 Figure 14. L'architecture de Hibernate _____________________________________ 55 Figure 15. L'architecture interne de l’EJBs __________________________________ 56 Figure 16.Le code d'une page HTML ______________________________________ 59 Figure 17. Le Modèle des cas d'utilisation __________________________________ 62 Figure 18. Un Modèle Générique de Séquences ______________________________ 64 Figure 19. La fenêtre principale du WebAnalyser_____________________________ 65 Figure 20. La fenêtre de personnalisation des balises à extraire par WebAnalyser ___ 66 Figure 21. Le Modèle du Domaine ________________________________________ 67 Figure 22. Diagramme de Classes Entités ___________________________________ 68 Figure 23. Diagramme d’Activités de Navigation_____________________________ 70 Figure 24. Diagramme de Séquences : choisir entre les projets créés précédemment _ 72 Figure 25. Diagramme de Séquences : spécifier le site et lancer le « parsing » ______ 73 Figure 26. Diagramme de sequences: fixer les options spécifiques à chaque projet___ 74 Figure 27. Diagramme de classes de conception______________________________ 75 Figure 28. Diagramme de classes de conception détaillé _______________________ 75
  • 7. 7 Table des Tableaux table 1 : Les composants Web..................................................................................................... 23 table 2: Les composants principaux du HTML........................................................................... 32 table 3: Les composants actifs des pages Web............................................................................ 38 table 4: Les composants Web dynamiques.................................................................................. 39 table 5 : Comparaison MySq l 5.0 X Postgre 8.1...................................................................... 52 table 6 :Comparaison JDBC X Hibernate X EJBs...................................................................... 54
  • 8. 8 Introduction La survie de toute entreprise est étroitement liée à son existence sur le Web. Ceci est particulièrement vrai pour les multinationales. Ces entreprises ont dépassé les frontières de leurs pays d’origine non pas grâce à des « buildings géants », mais plutôt grâce à une présence virtuelle allant au devant du client, à chaque demeure et à chaque bureau, et ce à travers l’efficacité et la rentabilité de la technologie Web. La dernière décennie a assisté à une explosion du nombre d’applications basées sur le Web. Malheureusement, la technologie Web évolue à un tel rythme qu’une application Web est très vite obsolète. Or, l’état de l’art révèle une panoplie aussi riche que diverse de travaux ciblés sur la conception et le développement d’applications Web. En revanche, il existe un réel besoin en outils et techniques qui assistent le développeur lors de la maintenance et l’évolution de ces dernières. En effet, malgré les tentatives, les outils disponibles ne répondent que partiellement aux attentes des développeurs. Plusieurs facteurs sont à l’origine de ce constat. Le plus important étant, la complexité et l’effort nécessaires à la compréhension d'un système avant toute intervention en vue de le corriger ou de le faire évoluer par de nouveaux besoins. On propose dans le cadre de ce mémoire un outil, appelé WebAnalyser dont le principal objectif est d’exhiber l’architecture interne d’une application Web en
  • 9. 9 dévoilant d’une part ses différentes composantes et d’autre part, les liens qui existent entre elles, afin d’en faciliter la compréhension. Cet outil s’inscrit dans le cadre d’un projet de rétro-conception d’applications Web appelé RetroWeb. RetroWeb est une démarche qui a été proposée par Madame Sélima Besbes Essanaa, au sein de l’équipe ISID (Ingénierie des Systèmes d’Information Décisionnels) du laboratoire CEDRIC (Centre d’études et de Recherche en Informatique du Cnam) du CNAM (Conservatoire National des Arts et Métiers) à Paris, et ce dans le cadre de sa thèse de doctorat, qui sera publiée dans les mois à venir. RetroWeb est une solution pour la rétro-conception de sites Web peu (ou pas) documentés. Elle permet de déduire, à partir du code HTML d'un site Web, une description conceptuelle de son contenu informatif qui serait utile pour la restructuration du site, pour son évolution ou pour son intégration à un autre site Web. Or, avant tout processus de rétro-conception, le passage par une phase de compréhension de l’application existante est indispensable. WebAnalyser intervient en amont de RetroWeb pour assister le rétro-concepteur (ou plus généralement le développeur) dans la compréhension de l’architecture interne d’une application Web. Pour mener à bien ce travail, nous avons commencé par une étude approfondie des composantes qui peuvent intervenir dans la construction d’une application Web. A notre surprise, cette tâche s’est révélée tout de suite très fastidieuse, à cause notamment de la richesse et la grande variété de composantes qui peuvent être impliquées dans le développement d’une application Web ; dés lors que celle-ci dépasse les simples pages statiques. Notre étude de l’existant nous a par ailleurs, révélé l’existence de plusieurs travaux qui ont abordé cette problématique à un niveau conceptuel. Nous les avons étudiés, comparés pour enfin synthétiser le résultat de nos investigations dans un modèle qui donne la description d’une application Web générique. Chaque application Web à traiter devient par conséquent, une instance de ce modèle. Le système WebAnalyser est basé sur ce modèle. Dés le départ, nous étions conscients que les contraintes de délais ne nous permettraient pas de produire un système qui prendrait en charge absolument toutes les catégories de composantes. Nous étions donc obligés de choisir entre deux alternatives : soit survoler superficiellement toutes les composantes ; soit au contraire choisir les composantes les plus répandues et les plus usuelles dans le développement des applications Web et les approfondir
  • 10. 10 convenablement. Nous avons naturellement opté pour la seconde alternative et dés le départ, nous avons conçu un système facile à faire évoluer pour qu’il prenne en charge n’importe quel nouveau composant. Les paragraphes qui suivent décrivent et détaillent le cadre général de ce travail ainsi que la problématique abordée. i. Description du Contexte Depuis sa première apparition le World Wide Web (WWW) a fondamentalement transformé notre vie. Cette révolution a façonné notre société et continuera à l’influencer durant les prochaines décennies. Chaque jour qui passe est une confirmation de la place que le Web est en train d’occuper, aux côtés des autres grandes inventions de ce siècle et qui ont été de véritables challenges pour les générations précédentes. L’interface simple et diffusée en masse du browser a ouvert la porte au développement de plusieurs nouvelles applications distribuées. En 1994, les pages Web étaient alors simples, statiques et reliées entre elles. Elles permettaient un accès facile à l’information, à la portée de tous, partout dans le monde. Plus tard, de nouvelles technologies telles que Java, ont vu le jour et ont été utilisées pour décorer les pages Web. Elles se sont alors ornées d’effets spéciaux : images flashantes, fenêtres dansantes, etc. Heureusement, le monde a bien compris l’énorme potentiel que peut offrir le Web, et des applications plus importantes, qui exploitent ces potentiels ont vu le jour. Les organisations se sont intéressées à ces technologies et ont compris les enjeux économiques d’une présence rapide sur le Web. Elles ont alors commencé à développer des applications Web qui livrent leurs service jusqu’à chez leurs clients dans le monde entier, abolissant ainsi les frontières et enregistrant de fameuses plus-values. L’ère ou le Web était considéré comme une simple plateforme permettant le partage et la diffusion de l’information est révolue pour céder la place à une ère de concrétisation, où le Web est un outil sophistiqué de commerce et de transactions. L’ingénierie du logiciel est au cœur même de cette révolution. Une application Web est une application interactive dans laquelle l’interface utilisateur est constituée par un ensemble de pages Web [Con 00]. Ce type
  • 11. 11 d’applications est une composante du Système d’Information (SI) d’une organisation. On parle alors de systèmes d’information basés sur le Web ou Systèmes d’Information Web (SIW) [Tak 97] [Isa 98a]. Tout comme un SI traditionnel, un SIW est un ensemble constitué de ressources humaines et de moyens techniques, de règles de fonctionnement, de données et de procédés pour acquérir, mémoriser, transformer, rechercher, communiquer et restituer ces données [Rol 88]. Dans ce cadre, le Web constitue un support pour la mise en oeuvre de ces systèmes. Il convient donc de noter qu’un SIW est d’abord un SI traditionnel et ensuite un système basé sur le Web [Den 98]. Dans une application Web, l’information n’est pas seulement de type texte, mais également de type image, son, vidéo ou multimédia. En plus, elle est présentée selon une approche hypermédia, qui reprend les principes de l’organisation non linéaires, accessible de façon explorative par de multiples chemins de navigation, au moyen de connexions explicites entre des éléments d’information. Cette organisation non linéaire est un élément déterminant de l’approche SIW. La plupart du temps, les techniques utilisées par les développeurs des applications Web sont similaires à ceux ad hoc utilisées par leurs prédécesseurs dans les années 60 et 70, ignorant les principes de conception disciplinés, acquis durant des années d’expérience. Une étude récente, réalisée par Lang et Fitzgerald [Lan 05] sur le développement de projets basés sur le Web, a révélé que dans 98 % des cas, les équipes de développement rencontrent des problèmes majeurs pour faire face aux conditions instables et changeantes de l’environnement Web et que dans 86% des cas ils ont du mal à s’adapter au « Web Time » et à la pression qui le caractérise. Les développeurs d’applications Web se défendent et se justifient en invoquant diverses raisons : - Le temps consacré au développement d’une application Web est extrêmement concis : alors que le développement des applications traditionnelles nécessite des mois, celui des applications Web nécessite des semaines voir même des jours. Ce phénomène, souvent appelé « Web Speed » ou vitesse du Web, rétrécit considérablement les délais. Souvent pris au dépourvu, les développeurs d’applications Web optent pour une approche ad hoc, plus simple en apparence, mais dont les retombés sont néfastes, dés lors que la taille de l’application devient
  • 12. 12 importante, et que les conséquences d’une modification du code de l’application, deviennent imprévisibles. - La rapidité de l’évolution de l’environnement d’une application Web : les applications Web deviennent obsolètes aussitôt livrées. Ce n’est qu’après avoir été exploitées pendant les dix ou quinze dernières années, que les applications traditionnelles peuvent être considérées comme dépassées. Une application Web, quant à elle, elle l’est seulement après six ou sept mois d’exploitation. - Les attentes des utilisateurs des applications Web : Le processus de développement qui conduit à l’application Web comporte des phases de test et de vérification très rigoureuses, ciblées principalement sur l’interface utilisateur. Car dans le contexte du Web, tout gravite autour de leur satisfaction. Pour une application de commerce électronique, par exemple, la tolérance aux erreurs, frôle le seuil zéro. - La rotation du personnel : La communauté Web a un taux élevé de rotation du personnel, la durée moyenne de recrutement étant de d’un peu plus d’un an [Kon 00]. Très souvent, les développeurs initiaux de l’application Web ne font plus partie de l’équipe informatique qui la maintient. Il est clair, que dans ces conditions d’exploitation, la maintenance et l’évolution d’une application Web sont des tâches très complexes, qui peuvent dégénérer rapidement. Pour maîtriser les conséquences d’une intervention sur le code, la compréhension de la structure de l’application et des interactions qui existent entre ses différents composants est une tâche inévitable. Or le coût et le temps consacrés à la compréhension augmentent dramatiquement avec la taille et la complexité de l’application. Certes, pour concevoir et développer des applications Web, les développeurs auront besoin d’outils et de méthodes qui couvrent tout le cycle de vie d’une application et qui offrent un support méthodologique à chacune de ses phases. Par ailleurs, comme le domaine du Web arrive à maturité ils auront également besoin de méthodes et d’outils qui les aident à analyser et comprendre la structure et l’architecture des applications existantes.
  • 13. 13 ii. Description de la problématique Comme nous venons de le voir, dans le contexte du Web, les évolutions sont plus rapides, les mises à jour sont plus fréquentes, les délais sont rétrécis, les technologies impliquées sont plus diversifiées et plus complexes et le taux de rotation du personnel est très élevé. Dans ces conditions, les fréquentes interventions à caractère urgent sur le code de l’application, de façon ad hoc entraînent inévitablement une détérioration de la structure de navigation de l’application, de son contenu informatif, ainsi qu’une dégradation de sa documentation. Ces constats sont confirmés par un récent sondage, réalisé par le cutter consortium [Cut 00], sur les projets de développement d’applications Web. Ce sondage a révélé que 84% des applications ne correspondent pas aux besoins du métier, que 52% d’entre elles sont de qualité médiocre et que 53% ne couvrent pas les fonctionnalités pour lesquelles elles ont été conçues. Dans de tels cas apparaît la difficulté de faire évoluer ces applications Durant les dernières décennies, la communauté informatique a pris conscience que le succès ou l’échec de tout processus d’évolution ou de modernisation, de leurs systèmes informatiques, est conditionné par la qualité de la compréhension qui en est faite. Une bonne compréhension du code minimiserait le risque d’erreurs et faciliterait considérablement des tâches comme la maintenance corrective, la maintenance évolutive, ou simplement la mise à jour de la documentation. iii. Présentation de la contribution « On fait œuvre scientifique en citant les travaux antérieurs … » Pour assister le développeur dans la compréhension d’applications Web existantes, nous avons conçu et développé un outil appelé « WebAnalyser ». Nous étions préoccupés par deux aspects : - Le premier est en rapport avec la façon dont le résultat sera rendu à l’utilisateur. Notre contrainte était que ce dernier se doit d’améliorer réellement la
  • 14. 14 compréhension de l’application et éviter ainsi de se retrouver dans une situation où le code est plus intelligible que la représentation que nous allons en faire. Or le processus de compréhension de n’importe quelle application est supporté par la description mentale qui en est faite. Notre outil déduit à partir d’une application Web une description sous forme d’une arborescence dans laquelle les feuilles sont les différentes composantes de l’application. L’architecture de l’application est ensuite enrichie en exhibant deux catégories de liens : des liens d’inclusion et des liens d’utilisation. - La seconde préoccupation concerne la robustesse de l’outil. Ce dernier doit être paramétrable, et surtout facile à faire évoluer en vue de tenir compte de nouveaux types de composantes. Pour cela, nous avons proposé un modèle qui donne la description d’une application Web générique sur lequel s’appuie WebAnalyser. Chaque application Web à traiter devient par conséquent, une instance de ce modèle. Grâce à cette approche une même application peut générer différentes descriptions. Nous avons structuré notre rapport comme suit : Le premier chapitre est dédié à la description des catégories d’applications Web existantes. Le second chapitre présente l’état de l’art sur notre problématique. Le chapitre 3 présente notre contribution. Il est divisé en deux sections. La première présente notre solution conceptuelle. Nous y décrivons notamment, les composants pris en charge par notre outil ainsi que le modèle qui les supporte. La seconde section est consacrée à la description de la réalisation de WebAnalyser. Dans cette dernière section nous décrivons notamment l’architecture de cet outil, les choix techniques pris en compte et enfin, le cycle de développement suivi. Enfin, nous concluons ce rapport en proposant des améliorations et des perspectives pour WebAnalyser. Nous espérons, à travers ce rapport, réussir à susciter votre intérêt pour ce travail.
  • 15. 15 Chapitre 1. Catégorisation des applications Web (Knowing the territory is mandatory.) 1.1. Introduction La dernière décennie a vu apparaître, une vague de nouvelles technologies pour publier et répandre des données sur le Web. Cette situation a entraîné de nouvelles catégories d’applications. Beaucoup d’entre elles, ont été initialement crées à l’image d’une plate-forme de partage de documents, pour répondre au besoin relativement modeste de dissémination passive des informations. Son évolution en vue de répondre à des besoins plus agressifs, tel que le commerce électronique ou la collaboration en ligne, impliquent le recours à des techniques plus complexes et à des architectures plus sophistiquées. La nature hétérogène des composants d’une application Web et sa complexité entraînent l’intervention de diverses personnes pour sa construction. L’hétérogénéité des intervenants se constate à plusieurs niveaux relatifs par exemple à leur formation, à leurs connaissances, à leurs expériences et à leurs compétences. Cette hétérogénéité tant matérielle que humaine a entraîné l’apparition d’une panoplie de termes, tous liés les uns aux autres, provoquant une certaine confusion que nous avons voulu dissiper. Ce chapitre débute par une présentation des concepts directement liés à notre travail. Nous avons d’abord, donné une description de l’architecture d’une application Web et de ses différentes catégories. Ensuite, avons passé en vue les différents termes qui se rapportant aux applications Web, en essayant d’exhiber les concepts qui s’en dégagent : Site Web/Application Web, Page Serveur/Page Client et enfin Page Statique/Page Interactive/Page Dynamique. Mais au fait, …application Web ou Site Web ?
  • 16. 16 1.2. Application Web … ou Site Web ? Une application Web est un programme dont les fonctionnalités sont délivrées à travers le Web. Conallen [Con 00] explique que «les applications Web résultent de l’utilisation de sites et de systèmes Web». Un système Web fait référence à l’infrastructure permettant un échange d’informations entre ordinateurs. Ses éléments essentiels1 sont donc : - le réseau, qui relie physiquement les ordinateurs ; - un poste client doté d’un navigateur. Le navigateur appelé aussi browser, est un logiciel qui permet l’affichage, localement, de documents hébergés sur d’autres ordinateurs du réseau. Il est l’interface utilisateur de l’application. Le HTTP (Hyper Text Transfer Protocol) est utilisé pour communiquer entre l’interface utilisateur et le reste de l’application ; - un poste hôte sur lequel un service (ou démon), appelé serveur Web, permet de localiser et de retourner les informations demandées par le client au moyen de requêtes. Une application Web peut être construite à partir de composants de différentes natures qui interagissent entre eux pour satisfaire l’utilisateur : une Base de Données, des objets distribués ainsi que des pages Web. Les informations sont organisées dans les pages Web. Celles-ci sont ensuite reliées par des liens, constituant ainsi un hypertexte. Une application Web apporte une dimension supplémentaire à cette infrastructure à travers la mise en oeuvre d’un serveur d’application. Ce dernier rend possible le traitement des actions de l’utilisateur qui vont au-delà de simples requêtes de navigation. Ainsi, pour Baresi [Bar 00], les sites Web présentent deux dimensions essentielles, celle des informations et celle de la navigation, alors que les applications Web, en revanche, en intègrent une troisième : celle des opérations. Cette position est partagée par Conallen [Con 00], pour qui, une application Web se différencie d’un site Web, en cela que l’application offre à l’utilisateur des mécanismes, lui permettant de réaliser des tâches plus complexes. Par ailleurs, le résultat de ces actions se traduit par 1 Bien que non décrites ici, certaines technologies sous-jacentes aux éléments présentés sont indispensables au fonctionnement d’une telle infrastructure. On citera par exemple les protocoles TCP/IP (Transmission Control Protocol / Internet Protocol), HTTP (HyperText Transfert Protocol), les langages de publication de pages Web HTML (HyperText Markup Language), XML (eXtended Markup Language), etc.
  • 17. 17 une modification de l’état applicatif sur le serveur : des données sont ajoutées, modifiées, supprimées, des actions deviennent disponibles ou ne le sont plus, etc. Au regard de cette définition, il apparaît clairement que de nombreuses applications peuvent être qualifiées de basées sur le Web. Ainsi, dès lors qu’une interface permet de saisir des informations (par exemple pour s’enregistrer en tant qu’utilisateur), le serveur d’application voit son état changer puisque les données fournies sont stockées et puis prises en compte dans la logique applicative. Des applications Web proposent toutefois des actions bien plus avancées : c’est notamment le cas de celles qui mettent en oeuvre les fonctionnalités métier spécifiques d’une organisation. Dans [Mec 99], la distinction proposée peut être rapprochée de celle de Conallen, bien qu’elle soit subtilement différente par rapport à ce que les auteurs appellent sites Web. Leur proposition est basée sur une analyse de la complexité des sites en regard de deux critères : l’un est relatif aux données gérées, et l’autre relève de ce que les auteurs nomment l’application et qui correspond aux services offerts par l’application. Le croisement des ces deux critères – complexité des données et complexité des services – permet à [Mec 99] de distinguer quatre catégories : - Les sites "de présence" sur le Web : Ils sont caractérisés par un faible degré de complexité tant en terme de données qu’en terme de services. Leur objectif concerne principalement la mise en ligne d'informations, à des fins publicitaires par exemple, ou résultant d'une volonté de diffuser des informations diverses (activités d'une association, présentations de manifestations, informations personnelles, etc.). Généralement constitués d'un petit nombre de pages, ces sites sont principalement construits à l'aide d'éditeurs HTML. - Les sites "catalogues" ou à forte intensité de données (data-intensive Web sites) : Ils sont caractérisés par le fait qu'ils publient une masse importante de données, selon une structure hypertexte complexe. Ils n'offrent en revanche pas ou très peu de services. Nous assimilons ces deux catégories à la notion de sites Web telle qu’elle est envisagée par Conallen. Les deux suivantes peuvent être comparées à la notion d’applications Web :
  • 18. 18 - Les sites orientés services : Ils ont la vocation de fournir des services spécifiques tels que ceux offerts par les moteurs de recherche1 ou les applications de messagerie électronique. De tels sites peuvent reposer sur des bases de données de taille conséquente, mais la structure des données et de l'hypertexte reste simple. La complexité est donc davantage liée aux applications sous-jacentes qui garantissent les services, et c'est en général autour de ces aspects que s'oriente le développement de tels sites. - Les Systèmes d’Information basés sur le Web (SIW) : Ils constituent la quatrième catégorie de sites Web. Ils combinent la mise à disposition et la gestion de données complexes avec des services interactifs sophistiqués. Les applications de commerce électronique et les SI des organisations entrent dans cette catégorie. La Figure 2.1 illustre le positionnement de ces catégories selon deux axes relatifs à la complexité des données (axe vertical) et à celle des services (axe horizontal). Inspirée de [Mec 99], cette représentation fait également apparaître la distinction établie dans [Con 00] entre sites et applications Web, où seule la dimension applicative intervient. Figure 1. Classification des applications Web d’après [Mec 99] et [Con 00] La complexité des services offerts est donc un dénominateur commun aux deux propositions. 1 Notons que, pour Conallen [Con 00], les moteurs de recherche ne sont pas considérés comme des applications Web dans la mesure où ils ne sont généralement pas caractérisés par une modification de l’état applicatif suite aux actions (requêtes) de l’utilisateur.
  • 19. 19 Dans ce qui suit, nous allons enchaîner sur la description de l’architecture des applications Web. 1.3. L’architecture d’une applications Web Une application Web est une application délivrée par un serveur Web sur un réseau. Elle repose sur une architecture client/serveur à plusieurs niveaux (Tiers). L’architecture d’une application Web reflète la répartition spatiale de ses données et la distribution spatio-temporelle des ses composants exécutables. La configuration spatiale minimale d’une application Web est appelée « two-tier », ou à deux niveaux. Elle ressemble au modèle traditionnel « client-serveur », à la différence que le côté client qui représente le navigateur, n’est qu’une partie très mince de l’application, raison pour laquelle il est également appelé « client léger ». Il est utilisable sur de nombreux supports matériels. Son rôle est essentiellement l’interprétation et l’affichage des pages Web à l’intension de l’utilisateur. Les instructions exécutables qui constituent le corps de l’application ainsi que les données qu’elle manipule résident, quant à eux, côté serveur. Le nombre de serveurs à mettre en place peut être augmenté pour faire croître le nombre de niveaux de l’architecture. Nous obtenons alors des configurations plus complexes, appelées « three- tier » ou « multi-tier », invoquant plus d’un niveau côté serveur. Chacun des niveaux joue un rôle bien précis dans l’application. Ainsi la dénotation des niveaux communément admise correspond aux différents rôles qu’ils assurent dans l’application. Pour mettre en oeuvre ces niveaux un ensemble de technologies et de modèles sous- jacents sont disponibles : - Niveau « interface utilisateur » : il assure l’affichage de l’interface utilisateur, sur le poste client. Les technologies invoquées à ce niveau sont celles des pages Web : HTML, Java Script, Styles CSS. Les concepts manipulés sont alors : le document, le style, le formulaire, le script, la balise, etc. - Niveau « contrôle ou logique » : il concerne le contrôle de la cohérence des actions de l’utilisateur. Le niveau contrôle est régi par les technologies de la génération dynamique de pages Web, souvent associées à un langage de programmation tel que PHP, JSP (Java), ASP (C++), etc. Le modèle associé décrit les composants d’une application client/serveur : le serveur, l’application, la session, la requête, et le contexte (ensemble de variables) associé à chacun de ces composants.
  • 20. 20 - Niveau des «données » ou « objets » : il gère l’accès aux données de l’application ainsi que leur mise à jour. Le niveau des données peut être objet et/ou relationnel. Les technologies objets disponibles sont celles des langages objets utilisées pour développer le niveau contrôle à savoir : Java et J2EE, ASP et .NET, la version objet de PHP. Les concepts des modèles sont ceux du paradigme « objet » : la classe, l’opération, la propriété, l’objet, etc. Lorsque les données sont persistantes une base de donnée relationnelle est alors utilisée, soit de manière transparente via un serveur d’application gérant la persistance des objets, soit de manière explicite lorsque ce type de serveur n’est pas utilisé. Les SGBD relationnels du marché constituent l’essentiel des technologies utilisées : SQL-Server, Oracle, MySQL, Sybase. Le modèle des données est le modèle relationnel dans lequel les notions de relation, attribut, type, clé sont utilisées - Niveau « inter-niveaux » ou middleware : Il assure la communication entre les différents niveaux existants. Pour faire communiquer les différentes technologies invoquées dans les niveaux précédents, des bibliothèques de composants (API) existent dans le langage de développement choisi. Par exemple la bibliothèque nécessaire à l’utilisation d’une base de données en java se nomme JDBC (Java Data Base Connectivity). Les concepts du modèle utilisé sont : la base de données, la connexion, la requête, le résultat, les méta-données. Cette variété de technologies et de modèles rend l’architecture d’une application Web dangereusement complexe. Concevoir ce type d’application nécessite en plus d’un investissement technologique très important, un ensemble de compétences informatiques allant des réseaux aux bases de données en passant par la programmation objet, la syntaxe HTML et plus encore. 1.4. Les Catégories d’applications basées sur le Web Toutes les applications Web ne partagent pas forcement les mêmes caractéristiques ni les mêmes particularités. Elles ont été conçues pour répondre à différents besoins, impliquant ainsi différentes technologies. Nous énumérons ici sept différentes catégories d’applications Web telles qu’elles ont été recensées par Desphande dans [Des 02]. Cette catégorisation est basée sur les fonctions remplies par l’application. Notons que toutes les catégories sont désignées par le terme « site », même si elles reposent sur un aspect applicatif important.
  • 21. 21 Cette catégorisation est présentée dans l’ordre croissant du degré de complexité des technologies impliquées dans la construction de l’application. La catégorie la plus simple étant les sites Web informationnels dont le but est limité à la publication de données sur internet. La catégorie la plus complexe, du moins à ce jour, étant les sites Web hautement dynamiques, personnalisés et adaptés à des utilisateurs individuels. Entre les deux, il existe cinq autres catégories. Nous allons dans ce qui suit les énumérer en donnant des exemples pour chaque catégorie. - Les Sites Web Informationnels, appelés également « document-centric »: Cette catégorie de sites est un simple média de diffusion de l’information sur internet. Ils sont souvent appelés sites Web statiques. Les catalogues, les annonces, les bulletins d’information, les manuels techniques, les livres électroniques en sont des exemples. - Les Sites Web Interactifs : Cette catégorie de sites est basée sur l’utilisation de formulaires à renseigner par le client, ce qui donne de l’interactivité au site. Les formulaires d’enregistrement, les jeux, les horaires de voyages, personnalisés sont les principaux exemples de la catégorie. La prochaine catégorie, et toutes celles qui vont la suivre, impliquent un autre acteur dans leur architecture : le serveur d’application. Son rôle est l’exécution de la logique applicative de l’organisation. - Les Sites Web supportant des Transactions : Cette catégorie de sites suppose plus d’interactivité puisque l’utilisateur a un pouvoir de modification sur l’application qu’il n’a pas dans la catégorie précédente. La banque en ligne ou E- banking, le Commerce électronique, les systèmes de réservation de biens et de services en sont des exemples. - Les Sites Web supportant des Workflows : Ce sont des sites Web qui supportent les workflows au sein d’une organisation ou entre différentes organisations. Les solutions du type B2B (Business to Business), les applications gouvernementales administratives (E-government), les systèmes de planification et les systèmes de gestion des inventaires sont les exemples les plus répandus de la catégorie. - Les Sites Web supportant un environnement de travail collaboratif : Cette catégorie de sites supporte le « groupware », dans lequel l’aspect communication et le partage d’information sont d’une importance capitale. Les systèmes
  • 22. 22 distribués d’authoring, les plateformes de E-learning, les outils de conception collaborative en sont les exemples les plus répandus. - Les Sites Web supportant les communautés en ligne : Cette catégorie inclut les groupes de chat, les systèmes de vente aux enchères, les systèmes de guidage, etc. - Les Portails Web: Se sont des sites Web construits à l’images des galeries commerciales, réunissant des sources d’information et des services potentiellement hétérogènes avec un seul point d’entrée. Les portails de commerce électronique, les portails de communautés et les moteurs de recherche sont les exemples les plus courants. Pour conclure, quelque soit la classification, le développement d’une application Web peut démarrer à n’importe laquelle des catégories. Par ailleurs, une catégorie d’applications Web est généralement plus complexe que celles qui la précèdent, mais ceci ne signifie pas qu’elle peut entièrement les remplacer. En effet, chaque catégorie d’application Web possède ses propres spécificités, qui la rendent plus appropriée dans un contexte donné. Enfin, les applications Web complexes peuvent être associées à plus d’une catégorie parmi celles citées. Nous venons de présenter une catégorisation des applications Web. Dans ce qui suit, nous allons enchaîner sur une catégorisation plus fine, qui concerne les différents composants d’une application. 1.5. Les composants Web Cette section est consacrée à la description de la structure générale d’une application Web. Les composants qui peuvent intervenir dans une application Web étant très nombreux et d’une grande hétérogénéité, nous allons en choisir les plus importants. Cette figure représente une structure récapitulative des composants Web distribués sur un réseau, elle servira de pivot pour cette section.
  • 23. 23 Figure 2. La structure générale d’une application Web table 1 : Les composants Web. Numéro Rôle Exemple courant 1 OS Serveur Linux, Windows 2 Serveur Web Apach(Linux,Windoes) IIS(NT),PWS(Win9x) 3 Scripts exécutés coté serveur PERL(Apach,IIS,PWS) VBSCRIPT(IIS,PWS) JAVASCRIPT(IIS,PWS) PHP(Apache,IIS,PWS) JAVA(Apache,IIS,PWS) C#,VB.NET(IIS) 4 Base de données celle-ci peut être sur la même machine que le programme qui l’exploite ou sur une autre via Internet. Oracle(linux,Windows) MySQL(Linux,Windows) SQLServer(Windows) 5 OS Client Linux,Windows 6 Navigateur Web Netscape,Internet Explorer 7 Scripts exécutées coté client au sein du navigateur. VBscript(IE) JavaScript(IE,Netscape) Perlscript(IE) Applets JAVA
  • 24. 24 Généralement, le navigateur (No 6) de la machine cliente (No 5) envoie un appel d’une page enregistrée (sous forme de script (No 3)) sur la machine serveur (No 1), le serveur Web (No 2) reçoit la demande de la page et la traduit en HTML si elle ne l’était pas, durant la traduction le serveur Web (No 2) peut consulter les bases de données (No 4) pour alimenter la page HTML avec les données adéquates. Le code HTML résultant de la traduction est envoyé vers la machine cliente (No 5), et spécifiquement vers le navigateur (No 6) qui le traduit à son tour pour construire une page Web complète, concernant les scripts navigateur (No 7), ce sont intégrés dans le code HTML envoyé, et sont interprétés par le même navigateur. A partir de l’explication précédente, on commence par détailler les pages Web qui sont distinguées selon deux classifications1 , la première distingue les pages serveur des pages client, la deuxième qui est spécifique aux pages client donne une indication sur la façon dont ces pages sont obtenues, Elle répertorie les pages statiques, les pages actives et les pages dynamiques. 1.5.1. Pages Serveur / Pages Client Les pages serveur : sont celles déployées sur le serveur. Les pages appartenant à cette catégorie peuvent contenir des scripts serveur (par exemple PHP, ASP, etc.), et ces scripts contiennent à leurs tour des procédures et des fonctions serveur, nécessaires pour effectuer des opérations de control ou de calcul. Les pages client : sont déployées aussi sur le serveur, mais les pages de cette catégorie sont envoyées aux clients lors d’une demande. Pour étudier cette catégorie Tilley et Huang [Til 01] proposent classifier ces pages en trois sous catégories selon leur contenu dans le serveur : les pages statiques, les pages actives et les pages dynamiques. 1.5.2. Pages Statiques / Pages Actives / Pages dynamiques Tilley et Huang ont proposé une classification basée sur trois classes [Til 01] de complexité croissante. Les pages Web Statiques : Les pages de cette catégorie ne contiennent que du code HTML, et Les informations qu’elles affichent sont codées par origine entre les balises 1 Il existe d’autres classifications, mais les deux citées ici sont les plus attachantes à notre sujet.
  • 25. 25 HTML. Ils sont construites à l’avance et stockées sur le serveur Web en attendant d’être acheminées vers le client à sa demande. Ces pages ne présentent aucune interactivité et ne nécessitent aucun pré-traitement (interprétation) par le serveur d’application, ce sont donc les plus simples et les plus faciles à développer, la raison pour laquelle on peut les trouver fréquemment, surtout dans les sites personnels. Les pages Web Actives (Client-Side) : Appelées aussi pages Web interactives, ces pages sont également construites à l’avance et stockées sur le serveur Web, se sont très similaires aux pages statiques mais caractérisées par contenir un code exécutable et d’autres composants interactifs qui leur donnent de l’interactivité. Donc ces pages sont interactives mais elles ne sont pas dynamiques parce que leur interactivité reste locale de fait que les scriptes dans ce cas ne peuvent être exécutés que par le navigateur chez la machine cliente, ces scriptes sont généralement écrits en java script, et pour les composants interactifs, ce sont soit des objets flash soit des instructions HTML dynamiques, ou bien d’autres. Les pages Web dynamiques (Server-Side) : Cette catégorie est la plus complexe des trois catégories précédentes. En plus du code HTML et des composants actifs, ces pages renferment un contenu dynamique grâce à l’interaction avec la base de données, et sont construites à la demande (on the fly). L’interprétation du code dynamique nous donne des pages HTML nouvelles nées, et contenant des valeurs saisis par l’utilisateur ou consultées depuis une base de données, ce sont ces pages HTML qui sont acheminées vers le navigateur Web du client. 1.6. HTML l'organisme W3C (World Wide Web Consortium) chargé de la standardisation des technologies du Web, a élaboré le langage HTML (Hyper Text Market Language) fonctionnant sur l'ensemble des plateformes existantes : Windows, Linux, MacOS, etc., mais également des navigateurs (browsers) comme Netscape Communicator, Internet Explorer, Mozilla, etc.1 En plus de son utilisation très simple et qui a contribué à sa diffusion. Ce langage est capable de gérer la quasi-totalité des artifices du Web tels que, évidemment les liens hypertextes, les textes formatés, les images, les vidéos ou animations, les tableaux, les 1 Voir les références [Pas].
  • 26. 26 formulaires, les cadres « frames », les scripts, les caractères spéciaux, les feuilles de styles et bien d'autres choses. Adapté à son moyen de transport (qui est généralement les lignes téléphoniques), et à fin d’assurer une rapidité suffisante de la communication sur le Web, le langage HTML a adopté un format de texte très compact mais aussi (par conséquence) peu sophistiqué. C'est le bon vieux format de texte pur et dur, sans fioritures du Bloc-ntes ou Notepad de Windows par exemple. Et de plus ce format ASCII a été amputé d'un bit (7 bits au lieu de 8)!1 Mais pourtant Html est un langage universel qui s'adapte à toutes les plates-formes comme on a cité précédemment.2 En générale, les pages HTML comportent, en plus du texte adressé au lecteur, des instructions pour le browser3 de celui-ci. Ces instructions seront différenciées du texte par les signes < et > ; par exemple <html>. Ces "instructions" s'appellent des tags ou des balises. Ces éléments jouent un rôle bien précis lors de l’affichage de la page par un navigateur. Certains assurent la mise en page, d’autres véhiculent le contenu informatif du site, d’autres enfin permettent la mise en place d’une structure de navigation inter et intra pages. Dans ce mémoire, on s’intéresse à l’aspect architectural des pages Web. Par conséquent, certains de ces éléments sont à ignorer. En effet, les balises HTML peuvent être divisées en deux groupes : les balises de structure et les balises de contenu. Les balises de structure définissent la structure de la page alors que les balises de contenu définissent le format et le style du contenu. D’autre part, un modèle de données définit un ensemble de balises ouvrantes et fermantes indiquant le début et la fin de chaque élément. Ces balises s’imbriquent les unes dans les autres pour obtenir des structures de données plus complexes. En plus, quelques balises comportent des attributs avec des valeurs correspondantes. Ce sont ces valeurs qui donnent aux différents composants leurs caractéristiques. 1 Vous serez donc privé de certains caractères spéciaux comme le (é) pour lesquels il faudra passer par des codes particuliers. 2 Voir les références [Luc]. 3 Ce logiciel, que l'on appelle un browser, vous permet de surfer sur le Net et d'afficher sur votre écran les "pages" qu'il a interceptées. Il y a, hélas, beaucoup de marques et de types de browsers différents. Des simples, des archaïques ou des sophistiqués... Les plus connus sont Netscape dans sa version 2 et 3 ainsi Internet Explorer de Microsoft mais il en existe beaucoup d'autres.
  • 27. 27 Chapitre 2. État de l’Art Dans le chapitre précédent nous avons présenté des concepts du domaine de l’ingénierie du Web, tout en détaillant les technologies associées au Web à travers la description de l’architecture d’une application Web et de ses différentes catégories. Comme le cas des applications traditionnelles, la modélisation des applications Web a fait partie de plusieurs recherches et études autour du monde, surtout récemment. Dans cette section nous allons étudier quelques modèles proposés dans la littérature pour supporter l’architecture d’une application Web générique. Chacun d’entre eux met l’accent sur les composants les plus intéressants de point de vu de son auteur. Ensuite profitant de leurs expériences et de leur logique nous allons en extraire un modèle répondant à nos besoins. 2.1. Le Modèle proposé par Ricca et Tonella : [Ric 00a ] Commençons par le modèle proposé par Ricca et Tonella, ce modèle représente les principaux composants d’une application Web : page HTML, code serveur (indiquant les pages serveur), les cadres, les formulaires (avec les champs d’entrée), et les relations les plus intéressantes reliant ces composants, comme les liens hypertextes, les flux venants des formulaires, la création des pages à partir d’autres, et l’affichage des pages Web dans des cadres spécifiques. Figure 3. Le Modèle proposé par Ricca et Tonella : [Ric 00a]
  • 28. 28 Comme le montre la figure, ce modèle a négligé la plupart des composants affichés dans les pages client, alors qu’il a bien décrit les aspects suivants : - L’interaction dynamique entre le code serveur et les pages HTML, qui est illustrée par les relations reliant leurs entités. - L’interaction dynamique entre l’utilisateur et l’application, grâce aux formulaires l’utilisateur pourrait interagir avec l’application. - La division des pages en des cadres « frames », et la division de ces derniers en d’autres cadres pour afficher plus d’une page dans un seul écran, la caractéristique qui est devenu obsolète à nos jours. 2.2. Le Modèle proposé par Conallen [Con 00] Jim Conallen a traité cette problématique d’une manière plus globale, il croit que la structure des applications Web est trop compliquée et distribuée, d’où apparaissent la nécessité d’utiliser les extensions du langage UML comme les stéréotypes, les valeurs étiquetées, et les contraints, qui sont indispensable pour modéliser les particularités des applications Web. Figure 4. Le Modèle proposé par Conallen [Con 00]
  • 29. 29 Cette partie du modèle de Conallen montre l’utilisation de ses extensions, il s’est intéressé aux détails, au point qu’il a modélisé les deux parties : le navigateur et le serveur. En fait, grâce aux extensions de Conallen à UML, il est devenu possible de modéliser les applications Web de manière spécifique. D’autre part, selon Conallen les phases globales de modélisation des applications Web ne sont pas différentes de ceux des applications traditionnelles, en plus les mêmes modèles peuvent être utilisés surtout dans les phases les plus génériques. Concernant la vue statique des applications, on peut utiliser les diagrammes de classes, où les pages serveur et client sont considérées comme des classes statiques (classes avec un seul objet). Mais dans ce cas, ces classes sont caractérisées respectivement par les stéréotypes << PageServeur>> et <<Page Client>> ou par des icônes adéquates. Les variables locales utilisées dans ces pages sont considérées comme des attributs privés caractérisant les classes associées, alors que les fonctions sont considérées comme des méthodes privées. Les attributs et les méthodes publiques ou protégées ne sont pas acceptées dans ces classes. Les pages serveurs peuvent créer les pages client pour être postées aux clients, mais ces pages ne sont pas des objets statiques parce qu’elles ne sont stockées dans aucun lieu, elles sont symbolisées par le stéréotype <<Pages Créées>>, ces pages constituent un cas spécifique des pages client et elles peuvent avoir des attributs et des méthodes de la même manière de ceux statiques. Les formulaires constituent aussi une classe de base pour Conallen, ils sont agrégés aux pages client, et ils comportent des champs pour collecter les données. En fait, ce ne sont pas seulement les classes qui peuvent être stéréotypées, mais les relations peuvent l’être aussi, Conallen propose les relations stéréotypées suivantes comme des relations génériques : - <<créer>> : (« builds » en anglais) une relation reliant une classe Page Serveur avec une classe représentant la page client créée par cette dernière. - <<lien>> : (« links » en anglais) une relation reliant une page client avec une autre page. - <<submits to>> : une relation entre une formulaire et la page serveur vers la quelle les données sont envoyées.
  • 30. 30 - <<inclut>> : (« include » en anglais) une relation entre deux pages ou bien une page et un module bibliothèque. Les extensions de Conallen peuvent être utilisées pour modéliser la structure statique (en utilisant le diagramme de classe de UML), alors que le comportement dynamique peut être représenté par les diagrammes de séquences, de collaboration, d’activités, et d’état transition. En plus, le modèle de Conallen peut faire l’objet de plusieurs autres extensions, par exemple le cas du modèle proposé par Tramontana [Tra], qui permet de modéliser une application Web à un niveau de granularité plus élevé et qui sera décrit dans le paragraphe qui suit.. 3.3. Le Modèle proposé par Tramontana : [Tra 05] Le but de Tramontana, lorsqu’il a exhibé son propre modèle à partir de celui de Conallen, était de trouver un modèle adéquat à son approche de rétro-conception des applications Web. Pour lui, en utilisant le diagramme de classes de UML, les entités principales d’une application Web peuvent être modélisées par les classes, alors que les relations reliant ces entités sont représentées par les associations, en plus il a utilisé les relations de composition et d’agrégation pour décrire l’imbrication des entités dans d’autres. La figure suivante montre le modèle inventé par Tramontana. Page Statique Applet Java Multimedia Objet Flash Interface BD Interface courrier Interface Fichier Serveur Function Client Classe Client Module Client n n n inclut n Fonction Serveur Classe Serveur Paramètre Fichier téléchargeable Objet Web Balise HTML Script Client1..n n 1..n n inclut Frameset Cadre 1..n1..n Page Web n n n n faire suivre n 1 n 1 afficher en cadre Page Client 1..n n 1..n n télécharger n n n n lien Champs Page créée Script Serveur nn nn faire suivre Objets Interface Page Serveur 1 n 1 n créer n 1 n 1 n n n inclutn Formulaire 1n 1n submit incomplet incomplet Figure 5. le Modèle proposé par Tramontana [Tra 05 ]
  • 31. 31 Selon Tramontana, les éléments de base d’une application Web sont les pages Web qui sont : soit des pages serveur (enregistrées sur le serveur) ; soit des pages client (crées et envoyées par le serveur vers le client qui les avait demandées). D’autre part les pages client peuvent être classées selon leurs origines : si le contenu de ces pages était stocké sur le serveur d’une manière permanente et fixe, ils sont appelées pages statiques ; par contre, si ce contenu était variable et n’est généré qu’à la demande, alors ils sont appelées pages créées. On remarque dans ce modèle un niveau de granularité très élevé, la chose qui peut rendre la modélisation des aspects dynamiques plus claire et plus facile. De plus les pages statiques ont été distinguées de celle créée à la demande. Par ailleurs, les entités de traitements dynamiques (les scripts et les modules dynamiques) ont été aussi distinguées des classes passive (comme les images, et les séquences son et vidéo).
  • 32. 32 Chapitre 3. Proposition La section suivante est le résumé d’une étude exhaustive des composants qui interviennent dans une application Web. Pour chaque catégorie de pages Web nous avons défini une liste de composants, et pour chaque composant nous avons défini sa balise ainsi que la liste de ses attributs. En plus nous avons étudié les relations susceptibles d’exister entre ces composants. 3.1. Étude des composants Web 3.1.1. Les pages Statiques : Les pages statiques sont envoyées vers le navigateur qui les a demandées sans aucune interprétation, parce que ces pages ne comportent que de code HTML qui est compréhensible par ce navigateur, Le tableau suivant représente une description abrégée d’une panoplie d’éléments HTML : table 2: Les composants principaux du HTML Nom composant Balise Liste d’attributs Commentaire <html> LANG="Langue" DIR="Direction" VERSION="version" Tête <head> PROFILE="Adresse d'un profil" Cet élément contient d’autres éléments décrivant les caractéristiques de la page et insérant des scripts actifs
  • 33. 33 Corps <body> BACKGROUND="@ de l'image" BGCOLOR="Couleur" TEXT="Couleur" BGPROPERTIES="fixed"(7*) LINK="Couleur" ALINK="Couleur" VLINK="Couleur" BOTTOMMARGIN="Valeur en pixel"(9*) TOPMARGIN="Valeur" en pixel LEFTMARGIN="Valeur en pixel" RIGHTMARGIN="Valeur" en pixel MARGINWIDTH="Valeur en pixel" MARGINHEIGHT="Valeur" en pixel Lien hypertext <a> HREF="@ cible" TARGET="Cadre cible" Image <img> SRC="Adresse de l'image" NAME="Nom" ALT="Légende" LONGDESC="Adresse du document" BORDER="Valeur" HSPACE="Valeur" VSPACE="Valeur" WIDTH="Valeur" HEIGHT="Valeur" ALIGN="top,middle,bottom,left ou right"> Liste <ul> TYPE="disc,circle,square" Liste numérotée <ol> OL TYPE="I,i,A,a" START="num de depart" Liste des definitions <dl> --- Formulaire <form> NAME="Mail" ACTION="@" ENCTYPE="text/plain"> METHOD="Type de transmission
  • 34. 34 Table <table> WIDTH="Valeur" HEIGHT="Valeur" CELLSPACING="Valeur" CELLSPADDING="Valeur" BORDER="Valeur" FRAME="Type de bordure" RULES="Type de bordure" Cadre <frame> NAME="Cadre1" SRC="ex.htm" SCROLLING="yes/no" MARGINWIDTH="130" MARGINHEIGHT="35" NORESIZE SRC="Adresse du document" LONGDESC="Adresse du document" (définissant le contenu) Commentair e < !-- -- > Définir une feuille de style <style> Type= " text/css (ou bien) text/javascript " Media="Nom de médium" Paragraphe <p> Champs d'entrée <input> NAME="Nom du champ" TYPE=Type de champ> La valeur de l’attribut type détermine quel champs d’entré on aurai Champs multi lignes <TEXTAR EA> NAME="Nom du champ" COLS="Valeur" ROWS="Valeur" En fait, cette table ne constitue qu’un résumé des résumés effectués sur les éléments HTML étudiés dans le cadre de ce mémoire, la plupart des autres balises sont destinées à la mise en forme du contenu de la page, surtout les textes.
  • 35. 35 Il s’agit maintenant de trouver une structure selon la quelle un algorithme peut extraire les éléments voulus et les stocker, de façon à pouvoir conserver les relations qui existent entre eux. Nous avons opté pour l’utilisation de deux catégories de relations : les relations d’inclusion et les relations d’utilisation. 3.1.1.1-les relations d’inclusion : Ce sont les relations résultantes de l’inclusion d’un élément par les balises (ouvrante et fermante) dans un autre élément. Ce phénomène est appelé l »encapsulation ». Ainsi chaque élément peut être soit père, soit fils de l’autre. Généralement une page HTML peut être représentée par un arbre dont la racine est la balise <html> de laquelle partent deux branches qui correspondent respectivement aux deux balises : <Head> et <Body>. Tous les autres composants sont imbriqués dans l’une ou l’autre de ces deux balises. La figure suivant illustre cette description. Figure 6. La structure d'une page HTML Par exemple, le corps peut contenir un tableau, qui peut contenir à son tour une image dans une cellule et un lien hypertexte dans une autre cellule, ce cas peut être représenté par la figure suivant :
  • 36. 36 Figure 7. La relation d'inclusion En fait, cette représentation peut être appliquée à tous les composants, ce qui facilite la manipulation de la page HTML de manière récursive. 3.1.1.2-les relations d’utilisation : Ce sont les relations représentées par le fait d’utiliser des éléments par d’autres en indiquant les premiers comme des valeurs des attributs des derniers, en fait, ces relations sont moins fréquentes que les relations d’inclusion, parce qu’on peut trouver des éléments sans attributs. L’exemple le plus simple pour illustrer ce type est d’appeler un script par un bouton pour effectuer une fonction quelconque, l’exemple suivant illustre comment un attribut du bouton peut lancer l’exécution du script.
  • 37. 37 Figure 8. La relation d'utilisation Une relation d’utilisation peut dépasser les limites de la page pour relier l’élément par un autre fichier, c’est le cas par exemple dans les feuilles de styles en cascade : l’attribut (class) peut utiliser les caractéristique décrites dans une feuille de style pour mettre en forme un élément situé dans une page différente de celle-ci. 3.1.2. Les Pages Actives (Client-Side) : Cette catégorie de pages peut comporter en plus du code HTML, des scripts actifs qui sont généralement écrits en java script. Dans ce tableau on a essayé de collecter quelques composants dont le fonctionnement est actif (interprété au niveau du navigateur ou coté client) :
  • 38. 38 table 3: Les composants actifs des pages Web. Nom composant Balise Liste attributs Commentaire Objet multimédia <object> CLASSEID="java:fichier classe" CODETYPE="application/ja va" TYPE="Type d'application" CODEBASE="@ de chargement" DATA="Nom" après les nouvelles spécifications du W3C, Cette balise peut être utilisée pour insérer soit un objet active X soit une séquence flash soit un applet. Applet <applet> CODE="Nom de la classe" CODEBASE="Adresse du code"> C’est une classe Java. Vidéo ou audio <EMBED> SRC="Adresse du média" PLUGINSPACE="@de l'application" TYPE="Type d'application"> Java script <script> Type="text/javascript" Ou Language="JavaScript" SRC="Adresse d'un page contenant du code" CHARSET="Nom du jeu de caractères"> Cette balise peut être incluse soit par l’élément (tête), soit par le corps de la page Note : on peut inclure d’autre langages comme vbscript par la même balise juste on modifie la valeur de l’attribut type
  • 39. 39 HTML Dynamique … … Ce sont des extensions apportées au HTML. La présence des scripts interactifs, même s’ils ne concernent que la page qui les contient et qu’ils sont de taille relativement réduite, complique l’analyse et la compréhension de cette catégorie de pages. 3.1.3 Les pages dynamiques (Server Side) : Les pages de cette catégorie peuvent comporter de code HTML, mais leurs composants principaux étant les scripts dynamiques sont la source de toute interactivité réelle dans les applications Web. Ce tableau comporte les langages Web dynamiques les plus utilisées et connues : table 4: Les composants Web dynamiques. L’élément Balises Attributs Commentaire <? Php … ?> < ? … ?> Php <script> Language= "php" • Ces trois formats sont possibles pour insérer du code php dans une page, mais le dernier est rarement utilisé Jsp, Servlets <% … %> Asp, Asp.net <script> language= "c# ou VB.net" runat="server"
  • 40. 40 Perl # !d:perlbinperl.exe • Perl : L’abréviation de (Practical Extracting and Reporting Language) • ce ligne écrite en tête de la page indique le chemin de l’exécutable : perl.exe Pour le moment, connaître les balises de début et de fin des codes dynamique est suffisant pour nous, puisque nous ne sommes pas intéressés par la sémantique de ces codes. Dans la section qui suit, nous présontons le modèle que nous avons retenu pour supporter les composants décrits dans cette section. 3.2. Le Modèle Proposé En fait, les modèles citées précédemment (dans le chapitre : état de l’art), ont été définis par leurs auteurs pour répondre à leurs besoins spécifiques. Conallen était motivé par la modélisation des applications Web en phase de « conception » ; à l’inverse, Tramontana était motivé par la rétro-conception des applications Web. Par ailleurs, ces auteurs ont proposé des modèles qui se distinguent également par leur niveaux de granularité : alors que le modèle de Ricca et Tonella n’a décrit que les composants principaux, Tramontana les a tous détaillés (même les objets d’interfaces : ceux reliant l’application Web avec un DBMS ou bien avec d’autres systèmes externes). L’étude de ces modèles et des objectifs sous-jacents, nous a permis de mieux appréhender notre problématique afin de définir clairement ses spécificités. Nous avons donc défini notre propre modèle, lequel devra répondre d’un niveau de granularité intermédiaire pour répondre de façon pertinente à nos besoins. C’est sur ce modèle que l’outil WebAnalyser s’appuie.
  • 41. 41 Les paragraphes qui suivent détaillent et illustrent la construction progressive du modèle que nous avons retenu. Nous allons argumenter de manière incrémentale chaque bloc qui sera rajouté au modèle. Les figures intermédiaires ne seront pas référencées dans la table des figures ; car d’une part, elles sont incomplètes et ne sont représentées que pour faciliter la compréhension du commentaire qui la précède. D’autre part, la construction d’un modèle se fait toujours de façon progressive, sur plusieurs itérations et implique plusieurs « allers-retours » ; or ces figures n’englobent pas la totalité des concepts retenus lors des itérations précédentes. Par conséquent, seule la figure illustrant le modèle final sera référencée. Ces paragraphes présentent le cœur même de notre contribution théorique à cette problématique. En premier lieu, les pages sont l’unité de base dans une application Web et elles peuvent être de deux catégories : les pages coté client et celles coté serveur. La page coté client n’est pas nécessairement écrite en html puisqu’à l’origine elle peut être écrite en un langage de programmation (Web dynamique) ; elle peut aussi être hybride (contenir un mélange des deux langages). Dans notre modèle, cette différenciation sera prise en compte en distinguant les pages serveur des pages clients. De ce fait la, les pages statiques décrites par Tramontana comme des pages clients sont considérées maintenant des pages serveur puisque la seule différence entre eux c’est l’interprétation effectuée au niveau du serveur avant d’être acheminées vers le poste client. La figure suivante montre la relation (créer) entre deux pages : serveur et client, toute en généralisant ces deux dernières par une entité (page Web). Page Client : la page telle qu’elle est affichée chez le client. Page Serveur : la page telle qu’elle est enregistrée sur le serveur PageWeb PageSrveur PageClient create
  • 42. 42 Une page cotée serveur peut inclure un script dynamique, comme elle peut être écrite totalement en HTML. Le script dynamique est constitué de classes et de fonctions dont l’objectif est de créer (ou bien de contribuer à la création) des éléments affichés sur la page Client. Nous pouvons donc énoncer qu’un élément appartient toujours à une page Web. La figure suivante montre ces relations : On remarque que (ScriptDynamique) est reliée grâce à la relation (createElement) avec (Element), cette association est utile parce que le fait de déterminer le script responsable de créer un élément quelconque peut rendre la modification de cet élément une opération plus facile et plus rapide. D’autre part une page Web peut être composée de « framesets » qui peuvent être divisées à leur tour soit en d’autre « farmesets » soit en des cadres à fin d’afficher d’autres pages. _PageClient _PageServeur _create _Function_Classe _PageWeb _ScriptDynamique _Element _createElement
  • 43. 43 PageClient PageServeur create Element FrameSetdivisé en Frame divisé en PageWeb afficher Commençons à spécialiser les éléments affichés dans une page Web. En premier lieu, chaque élément inclue d’autres éléments d’une manière imbriquée, à l’exception de quelques éléments simples comme les commentaires et les images, la figure suivante montre les éléments les plus importants qui sont : les liens hypertextes, les tables, les objets multimédia, les formulaires, les extraits texte, les commentaires, et les scripts actifs. _Texte _Commentaire _ObjetMultimedia _ScriptActif _Formulaire. _Table _ _Element LienHypertexte
  • 44. 44 Comme le cas des scripts dynamiques, les scripts actifs peuvent être divisées en des modules, qui sont soit des fonctions soit des classes, et ces modules peuvent à leur tour être composés d’autres modules comme illustré par cette figure : ScriptActif FonctionClient ClasseClient ModuleElement. Les liens hypertextes acheminent le navigateur vers une autre page Web en affichant cette dernière dans un cadre bien déterminé Frame Element. LienHypertexte PageWeb vers FrameSetdivisé en divisé en Concernant les formulaires, ces composants sont attachés sur une page coté serveur à travers une relation « submit », dans ce cas la page cible ne doit pas être une page coté client vu la nécessité de traiter les valeurs envoyées par le formulaire.
  • 45. 45 PageClient PageServeur create Formulaire submit PageWeb Element. La figure 9 illustre le modèle global retenu dans notre approche. Il regroupe tous les aspects énumérés précédemment. Ce modèle décrit une application Web générique. Par conséquent, n’importe quelle application réelle à traiter sera une instance de ce modèle. PageClient Frame Texte Commentaire ObjetMultimedia ScriptActif FonctionClient ClasseClient Module Table Formulaire. FrameSetdivisé en divisé en LienHypertexte PageWeb achemine vers Fonction Classe PageServeur create submit ScriptDynamique include Element createElement Figure 9. Le Modele Global Retenu
  • 46. 46 Au besoin, ce modèle peut faire l’objet d’extensions afin de supporter d’autres catégories de composants Web. 3.3. Le logiciel « La différence entre la théorie et la pratique, c’est qu’en théorie, il n’y a pas de différence entre la théorie et la pratique mais qu’en pratique, il y en a une. » Jan van de Sneptscheut Notre contribution théorique est certes intéressante … mais pour prouver qu’elle est pertinente sa validation est indispensable. Nous avons donc implémenté notre outil WebAnalyser en se basant sur le modèle retenu pour pouvoir le valider. 3.3.1. Description générale L’architecture interne de notre outil est illustrée par la figure suivante : Figure 10. L'architecture du logiciel "Web Analyser"
  • 47. 47 WebAnalyser est basé sur quatre composants : l’aspirateur, le nettoyeur, le parseur et l’éditeur ou « visualiseur ». - l’aspirateur 1 : c’est un Logiciel destiné a copier l'intégralité d'un site Web sur le disque dur d'un ordinateur. Il se connecte à une page, désignée par son utilisateur, et traque sur celle-ci tous les liens et appels à des fichiers extérieurs (images, vidéos, animations flashs ou autres). Chaque fichier ainsi localisé est copié sur le disque dur de l'ordinateur effectuant ainsi l'aspiration. Le site est alors consultable en local, sans être connecté à Internet. L’aspirateur n’intervient que dans le cas où le site n’est disponible que sur le Web. - Le Nettoyeur : le code HTML contient très souvent des erreurs. Même si elles ne sont pas problématiques pour un navigateur, ces erreurs le sont pour tout autre traitement automatique. D’où la nécessité d’un nettoyeur pour corriger les éventuelles erreurs syntaxiques qui peuvent apparaître dans le code HTML. Nous avons retenu Tidy [Rag], un outil en ligne qui retourne des pages HTML syntaxiquement bien formées. - Le parseur : c’est le cœur même de notre outil. Il traite (« parse ») les fichiers d’un site (enregistrés sur le disque dur) et utilise un « mapper »2 pour enregistrer les extraits dans la base de données. - Le visualiseur : c’est un éditeur graphique. Il affiche les composants de l’application sous une forme arborescente ; ainsi l’utilisateur peut naviguer entre les différents composants. Il s’agit d’une interface graphique conviviale. - Les sections suivantes présentent les étapes suivies lors du développement de l’outil WebAnalyser. 3.3.2. Les alternatives … et choix Nous étions confrontés à plusieurs alternatives quant au choix des composantes techniques nécessaires au développement de cet outil. Les paragraphes qui suivent présentent et justifient les choix retenus. 1 Selon l’url :http://www.dicodunet.com/annuaire/def-26-aspirateur-de-site.htm 2 Un “Mapper” est une classe java qui se charge d’extraire les valeurs des attributs d’un objet et les enregistrer sous la forme d’un enregistrement dans une base de données relationnelle.
  • 48. 48 3.3.2.1. Le langage de programmation utilisé Choisir java comme langage de développement ne nécessitait pas des études comparatives, parce que ce langage représente un résultat de toutes les modifications apportées aux langages précédents, en plus, la richesse des libraires du Java et sa portabilité sont des avantages convaincants pour le choisir. Les points suivants expliquent en résumé les avantages de l’utilisation de ce langage, au moins dans le développement de cet outil : - Le parseur : dans la section (3.3.2.2) on va aborder l’utilisation du parseur HTML qui est disponible en toute API de java. Des classes sont prêtes à l’usage avec des fonctions couvrantes la plupart des besoins des développeurs. - La connexion à la base de données : en utilisant un pilote adéquat la connexion à une base de données devient une tache facile. D’autre part, java supporte un ensemble de classes permettant de gérer cette connexion, et beaucoup de technologies de « mapping » ont été créées spécifiquement. - L’interface graphique : java supporte plusieurs moyens pour créer des interfaces graphiques répondant à tous les besoins et facilitant considérablement le travail. - La portabilité : un logiciel écrit en java est généralement indépendant de la plateforme et du système d’exploitation. Les utilisateurs du system Unix peuvent donc profiter de notre outil exactement comme les utilisateurs de windows. - La facilité de codage : java élimine toutes les difficultés qu’on éprouvait en écrivant des codes avec le pointeur puisqu’on est devenu capables de gérer automatiquement l’allocation de mémoire qui minimise son encombrement. Tous ces avantages nous ont confortés dans le choix de java comme langage de programmation pour développer notre outil. 3.3.2.2. Le parseur En fait, le cœur de ce logiciel est un parseur, spécialisé au langage HTML. Mais avant, que signifie parseur ? La définition citée dans l’encyclopédie « Wikipedia » : “In computer science and linguistics, parsing (more formally syntax analysis) is the process of analyzing a sequence of tokens to determine its grammatical structure with respect to a given formal grammar, A parser is a computer program that carries out this
  • 49. 49 task, it is a component of a compiler. Parsing transforms input text into a data structure, usually a tree which is suitable for later processing and which captures the implied hierarchy of the input. Lexical analysis creates tokens from a sequence of input characters and it is these tokens that are processed by a parser to build a data structure such parse tree or abstract syntax tree”. D’après cette définition générique, un parseur est un programme qui analyse une chaîne de caractères pour déterminer sa structure grammaticale en respectant une grammaire donnée. Dans notre cas, un parseur doit pouvoir extraire des blocs de code à partir d’un document HTML. Cette extraction peut être supportée par une DTD décrivant la structure d’une page HTML. Donc l’input de notre parseur sera des pages HTML, et l’output sera des blocs de code HTML accompagnés de quelques informations pertinentes. Nous avions le choix entre développer notre propre parseur ou utiliser un parseur disponible. La flexibilité des parseurs existants était un argument convainquant. Nous avons donc opté pour cette seconde alternative. En java, on a trouvé deux types de parseurs disponibles comme des API (parmi d’autres) : le « HTML parser », et la classe « Lexer » : 1) la classe Lexer : Figure 11. La classe Lexer
  • 50. 50 Cette classe « parse » le flôt HTML en des noeuds, chaque un de ces noeuds représente un élément HTML avec soit deux balises (ouvrante et fermante), soit une seule balise dans le cas des éléments simples comme les images. Les noeuds résultants de ce parseur sont de trois types : commentaire, texte ou balise. Les nœuds de type « commentaire » et « texte » représentent respectivement les commentaires et les textes intégrés dans une page HTML, alors que ceux de type « balise » représentent les autres éléments. 2) le parseur « HTML parser »: Ce parseur utilise deux classes Java prédéfinies, la classe (ParserDeligator), et la classe (ParserCallback), à partir de la documentation java on a extrait leurs définitions comme suit : Figure 12. La classe Parser Figure 13. La classe HTMLEditorKit
  • 51. 51 Le point de départ, c’est La classe ParserDelegator qui « parse » un flux HTML et avertit un objet ParserCallback passé en paramétre de l’état du « parsing ». La classe ParserCallback implémente les opérations suivantes : public void flush() throws BadLocationException public void handleText(char[] data, int pos) public void handleComment(char[] data, int pos) public void handleStartTag(HTML.Tag t,MutableAttributeSet a, int pos) public void handleEndTag(HTML.Tag t, int pos) public void handleSimpleTag(HTML.Tag t,MutableAttributeSet a, int pos) public void handleError(String errorMsg, int pos) public void handleEndOfLineString(String eol) Pas de besoin pour le moment d’expliquer les rôles de ces opérations mais un exemple simple qui fait extraire tous les textes d’un document HTML n’est pas mal : HTMLEditorKit.ParserCallback callback = new HTMLEditorKit.ParserCallback () { public void handleText(char[] data, int pos) { System.out.println(data); } }; Reader reader = new FileReader("myFile.html"); new ParserDelegator().parse(reader, callback, false); Ce parseur est « DTD driven », c'est-à-dire qu’il travaille selon un DTD données, pour le moment ce n’a pas de sens, mais c’est un avantage grâce au quel on peut utiliser ce parseur pour extraire des données à partir des documents des types différents. Notre choix s’est fixé sur ce dernier.
  • 52. 52 3.3.2.3. Stockage et sauvegarde de la base de données Notre application doit être capable de stocker des données extraites à partir des pages Web, donc il est nécessaire qu’elle implémente une base de données, les données à stocker seront des différents types, mais généralement, de type texte pour les appellations des balises, de type entier pour leurs positions, et de type (blob) pour les extraits de texte. L’outil le plus efficace pour stocker des données de manière structurée et centralisée reste une base de données, d’où c’est très intéressant de choisir le système de gestion de base de données (SGBD) le plus adapté à nos besoins spécifiques. Une base de données possède des tables contenant les données que l’on souhaite stocker, sur celles-ci on peut effectuer des requêtes, en utilisant un langage spécifique (SQL Standard Query Language) à fin de gérer l’ensemble des données, c'est-à-dire : les opérations de lecture, de suppression et de modification. Notre parseur aura besoin d’insérer et de consulter des enregistrements d’une manière un peu stable, c'est-à-dire les requêtes dont on aura besoin seraient fixées dés le début. Nous présentons ici une petite étude comparatif entre deux solutions gratuites : PostgreSQL et MySql. table 5 : Comparaison MySq l 5.0 X Postgre 8.1 Fonctionnalités MySQL 5.0 Postgre 8.1 Support de clés étrangères Oui Oui Vues Oui Oui Procédures stockées Oui Oui Triggers Oui Oui Unions Oui Oui Jointures complètes Non Oui Contraintes Non Oui Héritage de table Non Oui Curseurs Partiellement (seulement en lecture) Oui Supporte IPV6 Non Oui Driver JDBC Oui Oui
  • 53. 53 a)MySQL MySQL fonctionne sur beaucoup de plateformes, de plus la plupart des langages utilisés aujourd’hui sont capable d’interagir avec lui. Depuis la version 4.1 le MySQL intègre les requêtes imbriquées et les tables InnoDB permettant de gérer les transactions et les verrous au niveau des lignes, à propos du codage des caractères c’est maintenant disponible sur plusieurs octets. D’autre part MySQL offre de très bon résultat en terme de performances et rapidité d’accès, il est très rapide, multithread, robuste et multi-utilisateur. Les raisons pour les quelles il est très utilisé avec beaucoup de technologies. b) PostgreSQL PostgerSQL est un système de gestion de base de données développé par (PostgreSQL Global developpement group). Ce system est très utilisé aujourd’hui grâce aux nombreux avantages techniques qu’il possède : comme les requêtes imbriquées, les transactions, les vues, les triggers et l’héritage des tables. PostgreSQL propose donc de nombreuses fonctionnalités, mais dont on n’a pas besoin. Notre choix s’est donc porté sur MySQL en considérant le facteur rapidité. 3.3.2.4. Persistance des données Les données extraites par l’outil proposé sont stockées dans une base de données relationnelle, par exemple, au biais de l’API JDBC on peut connecter une application java avec une base de données relationnelle, mais comment stocker des objets Java dans une base de données relationnelle ? Cette question demeure jusqu'à nos jours problématique ! Pour palier à ce problème beaucoup des technologies manipulant des bases de données objets sont proposées, mais pratiquement, la plupart des développeurs préfèrent faire ce qu’on appelle « mapping ». Etant une solution intermédiaire le « Mapping » correspond à des technologies permettant de faire le passage entre les objets traités par les langages orientés objets et des enregistrements stockables dans des bases de données relationnelles. Les solutions les plus abordables pour faire du « mapping » sont : Hibernate et EJBs, qui font l’objet de cette étude comparative en ajoutant le JDBC.
  • 54. 54 table 6 :Comparaison JDBC X Hibernate X EJBs. Fonctionnalités JDBC Hibernate EJBs Mise en place Très simple Apprentissage nécessaire Apprentissage nécessaire Indépendance du SGBD Oui Oui Oui Persistance d’objet Java Non Oui Oui Mapping des Objets Java Non Oui Oui Création de la base de données Lui fournir le script SQL Génération du code SQL automatiquement - Bufferisation des données a fin d’éviter les connexions a la base. Non Oui Oui Déploiement Intégration du pilot JDBC dans le JDK Intégration des librairies dans le projet Nécessite un conteneur d’EJBs Configuration - Fichier XML ou annotations Java Fichier XML ou annotations Java a)JDBC : JDBC est l’acronyme de « Java DataBase Connectivity » et désigne une API définie par SUN pour permettre un accès aux bases de données relationnelles (SGBD) avec Java. b) Hibernate : Hibernate est une surcouche à la base de données. Elle fournit un ensemble de méthodes et fonctions permettant de rendre persistants les objets Java d’une application. Il faut donc dans un premier temps permettre à Hibernate d’accéder au système de
  • 55. 55 gestion de base de données utilisé en lui fournissant les paramètres adéquats. On peut ensuite définir les règles qui permettront à nos objets Java de devenir persistants. Cette étape se nomme le « Mapping » de données. En effet les classes Java de notre application seront par ce processus représentées par des tables dans notre base de données. Le « mapping » permet de définir les différentes propriétés des tables dans notre base mais aussi les relations qu’il peut exister entre celles-ci. Il n’y a pas besoin d’expliquer ici les configurations de Hybernate mais cette figure représente une vue globale de Hibernate dans une application gérant une base de données. Figure 14. L'architecture de Hibernate Cette figure montre la séparation entre l’application et la base de données réalisée grâce à la couche Hibernate qui est chargée de faire l’interaction entre les deux autres couches. c) EJBs Les EJB sont des composants qui possèdent alors certaines caractéristiques comme la réutilisabilité, la possibilité de s’assembler pour construire une application, etc. Les EJB et les beans n’ont en commun que d’être des composants. Les javas beans sont des composants qui peuvent être utilisés dans toutes les circonstances. Les EJB doivent obligatoirement s’exécuter dans un environnement serveur dédié. Les EJB sont parfaitement adaptes pour être intégrés dans une architecture trois tiers ou plus. Dans une telle architecture, chaque tiers assure une fonction particulière :
  • 56. 56 - le client (léger) assure la saisie et l’affichage des données ; - Sur le serveur les objets métiers contiennent les traitements. Les EJB sont spécialement conçus pour constituer de telles entités ; - Une base de données assure la persistance des informations. Les EJB s’exécutent dans un environnement particulier : le serveur d’EJB. Celui ci fournit un ensemble de fonctionnalités utilisées par un ou plusieurs conteneurs d’EJB qui constituent le serveur d’EJB. En réalité, c’est dans un conteneur que s’exécute un EJB et il lui est impossible de s’exécuter en dehors. Figure 15. L'architecture interne de l’EJBs Il existe de nombreux serveurs d’EJB commerciaux : BEA Weblogic, IBM Webshere, Sun IPlanet, Macromedia JRun, Borland AppServer, etc. Il existe aussi des serveurs d’EJB open source dont les plus avancés sont JBoss et Jonas. Selon la table de comparaison au dessus, le JDBC ne fais du « mapping » comme les deux autre solutions, mais pourtant on ne va pas utiliser ces deux bonnes solutions à cause des contraintes de temps, on est d’accord que leur utilisation minimise bien le temps de développement mais c’est le contraire pour leur apprentissage ! On a décidé de n’employer que JDBC de manière simple en créant une « mapper » spécial, il s’agit d’une classe java dont le rôle est de faire un « mapping » pour des objet bien déterminés, ce n’aura pas les avantages des autres solutions mais c’est suffisant pour notre logiciel à cette étape.
  • 57. 57 3.3.2.5. Cycle de vie Les spécificités des applications Web (changement rapide, apparition de nouvelles technilogies, etc.) nous imposent d’adopter pour le développement de notre outil un cycle de vie itératif et incrémental. Mais pour définir une séquence d’étapes, partiellement ordonnées, on a besoin d’une méthode reposant sur UML1 , comme le processus unifié2 , qui est très utile dans le cas des grands projets. Dans notre cas, et pour simplifier les choses, on va suivre une méthode issue de celle présentée par Roques [Roq 02] dans son livre « UML- Modéliser un site e-commerce». La méthode présentée par Roques est simple et générique et se situe à mi-chemin entre le processus unifié, qui constitue un cadre général très complet de processus de développement, et XP3 (eXtreme Programming) qui est une approche minimaliste à la mode centrée sur le code. Cette méthode résulte de plusieurs années d’expérience sur de nombreux projets dans des domaines variés. Elle a donc montré son efficacité dans la pratique. En plus, cette méthode est caractérisée par les avantages suivants : conduite par les cas d’utilisation, comme le processus Unifié mais bien plus simple ; relativement légère et restreinte, comme XP, mais sans négliger les activités de modélisation en analyse et conception ; Fondée sur l’utilisation d’un sous-ensemble nécessaire et suffisant du langage UML (modéliser 80% des problèmes en utilisant 20% d’UML). Cette méthode divise le processus du développement d’un logiciel en quatre phases, comme suit : - Phase d’identification des besoins et spécification des fonctionnalités. - Phase d’analyse. - Phase de conception. 1 UML (« Unified Modeling Language » soit langage de modélisation objet unifié) est né de la fusion des trois méthodes qui se sont imposées dans le domaine de la modélisation objet au milieu des années1990: OMT, Booch et OOSE. D’important acteurs industriels (IBM, Microsoft, Oracle, DEC, HP, Rational, Unisysetc.) s’associent alors à l’effort et proposent UML 1.0 à l’OMG (Object Management Group) qu’il accepte en novembre 1997 dans sa version 1.1. La version d’UML en cours est UML 2.0 qui s’impose plus que jamais en tant que langage de modélisation standardisé pour la modélisation des logiciels. 2 Le processus unifié est un processus de développement logiciel, itératif, centré sur l’architecture, piloté par des cas d’utilisation et orienté vers la diminution des risques. 3 L'Extreme Programming (XP) est une méthode agile de gestion de projet informatique adaptée aux équipes réduites avec des besoins changeants. Elle pousse à l'extrême des principes simples, cette définition a été prise de l’url : http://www.techno-science.net/?onglet=glossaire&definition=723.
  • 58. 58 - Phase d’implémentation. La première phase utilise un diagramme de cas d’utilisation, puis un diagramme de séquence système, et en fin une maquette d’interface d’IHM 1 (non couvert par UML). Évidemment, ces diagrammes doivent être génériques à cette étape là, il s’agit d’une étape préparatoire qui décrit bien les grandes lignes de l’application. La transition vers la modélisation objet est le premier apport de la phase d’analyse, qui décrit, pour se faire, un modèle du domaine2 , en fait, ce modèle constitue une version primitive du diagramme de classe. Une fois le modèle du domaine est élaboré, on utilise un diagramme de classes participantes qui effectue la jonction entre tous les artefacts, puisque ce diagramme modélise trois types de classes d’analyse : les dialogues, les contrôles et les entités, ainsi que leurs relations. Le troisième diagramme utilisé dans la phase de l’analyse est appelé Diagramme d’activités de navigation, qui offre la possibilité de représenter graphiquement l’activité de navigation dans l’interface en produisant des diagrammes de navigation. Passons maintenant à la troisième phase, on s’y sert de deux types de diagrammes, les diagrammes d’interaction qui ont pour but d’attribuer précisément les responsabilités de comportement, et ceux de classes de conception qui serviront pour l’implémentation. Le diagramme de classes de conception final doit être complet et compatible avec le langage de programmation utilisé dans la phase suivante. Selon cette méthode la dernière phase décrite est l’implémentation, dans cette phase on écrit le code et on crée la base de données, toute en utilisant les diagrammes élaborés précédemment. 3.3.3. Le Dossier de Conception de WebAnalyser Comme nous avons décidé précédemment, la méthode présentée par Roques serait notre cycle de vie de développement utilisant le langage de modélisation UML (Unified Modeling Language), dans le cadre de cette partie on explique bien les différentes étapes constituant ce cycle de vie, toute en ajoutant quelques étapes nécessaires comme l’étude de faisabilité. 1 Une maquette d’IHM (Interface Homme-Machine) est un produit jetable permettant aux utilisateurs D’avoir une vue concrète mais non définitive de la future interface de l’application .La maquette peut très bien consister en un ensemble de dessins produits par un logiciel de présentation ou de dessin. 2 En fait, L’analyse du domaine est une étape totalement dissociée de l’analyse des besoins, Elle peut donc être menée avant, en parallèle ou après cette dernière.
  • 59. 59 3.3.3.1 Etude de faisabilité Un des apports intéressants de suivre un cycle de vie en créant une application c’est posséder des documentations dédiées, au biais de laquelle on peut comprendre la structure de cette application. Voici un petit exemple pour montrer l’utilité de notre outil : Voici une page HTML : Figure 16.Le code d'une page HTML Ce n’est qu’une page HTML (simple !) mais ouverte avec un Bloc-notes et pas un navigateur Web, imaginons que l’on ait besoin de modifier un élément quelconque (une image par exemple), en chercher la balises <img>, puis en modifier les attributs < src=XXX >, ensuite, rapidement l’enregistrer et l’ouvrir par le navigateur …Trois situations peuvent se présenter : notre modification était la bonne … quel bonheur ! nous avons modifié une autre image … on doit refaire une double manipulation : rectifier l’erreur et refaire le changement en espérant de tomber cette fois sur la bonne image. Enfin, une troisième possibilité dramatique : le navigateur n’affiche rien car on a commit une erreur lexicale ! Face à ce scénario, notre outil WebAnalyser est la planche de salut ! Il nous fournit la position de chaque composant de la page avec sa liste d’attributs et nous donne la