• Aucun résultat trouvé

L’application SPECJ est bas´ee sur la technologie J2EE (Java to Enterprise Edition) et utilise le framework Java STRUTS avec AJAX (Asynchronone Java Script et XML), le serveur de base de donn´ees Mysql. Nous pr´esentons bri`evement ces diff´erentes technologies et les raisons qui nous ont pouss´es `a les choisir.

Le framework STRUTS et AJAX

Le framework STRUTS est bas´e sur la technologie J2EE. Struts, ´egalement consid´er´e comme une boˆıte `a outils, est un support de d´eveloppement d’applications Web dynamiques avec java. En outre, STRUTS s’appuie sur l’une des architectures MVC (voir la section 5.4.1) les plus matures et les plus largement utilis´ees pour les applications Web ´ecrites en Java. La version 1.6.0 de Java a ´et´e employ´ee dans le d´eveloppement de SPECJ.

AJAX, quant `a lui, est une approche de d´eveloppement pour les applications Web qui s’appuient sur diff´erentes technologies. AJAX peut ˆetre utilis´e avec d’autres langages de programmation comme le C. Nous l’avons utilis´e avec Java (le Kit de d´eveloppement Java, JDK), des navigateurs Web (Mozilla Firefox, Internet Explorer), Apache Ant, JavaScript et un serveur Web.

TOMCAT est le serveur d’application utilis´e dans l’application SPECJ. Le serveur TOMCAT est bon moteur de servlet qui est souvent cit´e comme r´ef´erence pour les technologies Java Servlet et JavaServer Pages (JSP). La version 6.0.18 a ´et´e utilis´ee pour le d´eveloppement de SPECJ. Pour plus de d´etails sur le serveur Tomcat, se rendre sur le site http ://jakarta.apache.org/tomcat.

JAVASCRIPT est un langage de programmation de sripts. L’avantage de ces sripts est qu’ils s’ex´ecutent enti`erement dans le navigateur. Il n’y a donc pas besoin de faire trop d’aller-retour entre le client et le serveur. Il apporte comme r´esultat, plus de rapidit´e `a l’application qui l’utilise. Pour plus de d´etails sur JavaScript, consulter le site http ://www.javascript.com.

ANT est un outil d’int´egration, de construction et de d´eploiement d’applications. Il est largement utilis´e dans tout type de d´eveloppement Java. Il est pour Java ce que Makefile est pour le langage de programmation C. La vesrion 1.7.1 a ´et´e utlis´ee pour le d´eveloppement de SPECJ. Les d´etails sur ce produits sont acc´essibles `a l’adresse suivante : http ://ant.apache.org.

Certains avantages de AJAX sont entres autres qu’il permet le d´eveloppement des applications `a moindre coˆut et leur conf`ere une grande r´eactivit´e.

MySQL est un SGBD (Syst`eme de Gestion de Base de Donn´ees) en acc`es libre sur le site http ://dev.mysql.com. La version 5.1.31 a ´et´e utilis´ee dans le d´eveloppement de SPECJ. MySQL est t´el´echargeable `a l’adresse http ://www.mysql.org.

Annexe 4 : Description du mod`ele conceptuel de donn´ees avec

MySql

– CREATE TABLE USERS(

USERNAME VARCHAR(50) PRIMARY KEY, PASSWORD VARCHAR(50), EMAIL VARCHAR(50), JOINED VARCHAR(50), LASTLOGIN VARCHAR(50), UNIQUE (USERNAME), UNIQUE (EMAIL)) ;

– CREATE TABLE LOGGEDUSERS( USERNAME VARCHAR(50) PRIMARY KEY, CONSTRAINT f k−username foreign key references

USERS(USERNAME) on delete cascade) ; – CREATE TABLE CATEGORIES(

CATEGORIENAME VARCHAR(50) PRIMARY KEY, DESCRIPTION TINYTEXT,

NOMCAHIER VARCHAR(20),

CONSTRAINT f k−nomcahier foreign key references

CAHIERDESCHARGES(NOMCAHIER) on delete cascade, UNIQUE (CATEGORIENAME)) ;

– CREATE TABLE SUBCATEGORIES( SUBCATEGORIENAME VARCHAR(50), DESCRIPTION TINYTEXT,

CATEGORIENAME VARCHAR(50),

CONSTRAINT f k−categoriename foreign key references

CATEGORIES(CATEGORIENAME) on delete cascade) ; – CREATE TABLE CAHIERDESCHARGES(

NOMCAHIER VARCHAR(20) PRIMARY KEY, DESCRIPTION TINYTEXT,

STARTDATE datetime, LASTUPDATED datetime, USERNAME VARCHAR(50), UNIQUE (NOMCAHIER)) ;

– CREATE TABLE SPECIFICATION( SPECIFICATIONID String PRIMARY KEY, DESCRIPTION TINYTEXT,

CATEGORIENAME VARCHAR(30), JUSTIFICATION TINYTEXT,

PRIORITE ENUM (’HAUTE’, ’MOYENNE’, ’BASSE’), CONSTRAINT f k−categories foreign key REFERENCES

Annexe 5 : Signature de quelques m´ethodes utilis´ees dans SPECJ

Nous ne donnons pas la signature de toutes les m´ethodes de l’application. Seules les signatures de celles qui nous semblent ˆetre int´eressantes pour la compr´ehension de l’architecture donn´ee `a la section 5.4.1 sont mentionn´ees ci-dessus.

Classes de la couche de la Vue

Les composants de la couche de pr´esentation sont des pages JSP (JavaServer Pages) et des classes JavaBeans de pr´esentation h´eritant de la classe ActionForm de Struts.

– RechercheRapide

• String rechercher(String phrase) : renvoie l’ensemble des sp´ecifications contenant le mot cl´e phrase sont renvoy´ees `a l’issue.

– RechercheAvancee

• boolean verifierSyntaxe(String motcle) : renvoie vrai s’il existe au moins une exigence dont les caract´eristiques contiennent le mot cl´e motcle.

• String rechercher(String motcle) : idem avec RechercheRapide sauf que motcle repr´esente soit la cat´egorie, le priorit´e, la justification ou la description d’une sp´ecification.

– GestionCahierDesCharges

• String addCategorie() : envoie d’une demande de cr´eation d’une cat´egorie et renvoie des informations concernant la nouvelle cat´egorie.

• boolean delCategorie() : envoie d’une demande de suppression d’une cat´egorie et renvoie vrai si la suppression r´eussit.

• boolean updateCategorie() : envoie d’une demande de modification d’une cat´egorie et renvoie vrai si la suppression r´eussit.

• String addSpecification() : envoie une demande de cr´eation d’une sp´ecification et renvoie les informations sur la nouvelle sp´ecification.

• boolean delSpecification() : envoie une demande de suppression d’une sp´ecification et renvoie vrai si la suppression r´eussit.

• boolean updateSpecification() : envoie d’une demande de modification d’une sp´ecification et renvoie vrai si la modification r´eussit.

• String afficherCahier(String cdc−name) : renvoie et affiche le contenu du cahier des charges

d’identifiant cdc−name.

– GestionUser

• User login(String username, String password) : envoie une demande de connexion pour l’utilisateur de login username et de mot de passse password.

• void logout(String username) : envoie une demande de deconnexion pour l’utilisateur de login username.

• boolean signUp(String username, String password) : envoie une demande de cr´eation d’un compte pour l’utilisateur de login username et de mot de passe password.

• String afficherUsers() : envoie une demande d’affichage de la liste des utilisateurs ayant un compte.

• String afficherLoggedUsers() : envoie une demande d’affichage de la liste des utilisateurs connect´es.

Classes de la couche du Contrˆoleur

Les classes contrˆoleurs sont r´ealis´ees avec servlets. Puisqu’il existe dans STRUTS une seule servlet qui repr´esente le contrˆoleur (ActionServlet), pour ajouter de nouvelles fonctionnalit´es au contrˆoleur, il faut simplement cr´eer de nouvelles classes qui h´eritent de la classe Action de STRUTS.

– ControlRecherche

• String rechercheSpecifications(String motcle) : renvoie l’ensemble des sp´ecifications dont motcle fait partie des caract´eristiques.

• void quitterRecherche() : met fin `a la recherche et renvoie une autre page. – ControlCahierDesCharges

• String addCategorie(String categorie−name) : cr´ee une nouvelle cat´egorie d’identifiant

categorie−name et renvoie les informations concernant cette cat´egorie.

• boolean delCategorie(String categorie−name) : supprime la cat´egorie d’identifiant

categorie−name et renvoie vrai si la suppresion r´eussit.

• Categorie getCategorie(String categorie−name) : renvoie la cat´egorie d’identifiant

categorie−name.

• String getCategories() : renvoie la liste des cat´egories.

• String addSpecification() : cr´ee une nouvelle sp´ecification et renvoie les informations concernant cette sp´ecification.

• boolean delSpecification(String specificationID) : supprime la sp´ecification d’identifiant specificationID et renvoie vrai si la suppresion r´eussit.

• boolean updateSpecificationById(String specificationID, String att, String valeur) : modifie la valeur de l’attribut att de la sp´ecification d’identifiant specificationID et et renvoie vrai si la modification r´eussit.

• Specification getSpecification(String desc) : renvoie la sp´ecification dont la description est desc.

• Specification getSpecificationById(String specificationID) : renvoie la sp´ecification dont l’identifiant est specificationID.

• String getSpecifications() : renvoie la liste des sp´ecifications. – ControlUser

• User loginImpl(String username, String password) : cr´ee une session pour l’utilisateur de login username et de mot de passse password et renvoie l’utilisateur.

• void logoutImpl(String username) : ferme la session de l’utilisateur de login username. • boolean addUser(User u) : cr´ee un nouvel utilisateur u et renvoie vrai si l’utilisateur a ´et´e

cr´ee, sinon faux.

• String afficherUsersImpl() : cr´ee et renvoie la liste des utilisateurs ayant un compte. • String afficherLoggedUsersImpl() : cr´ee et renvoie la liste des utilisateurs connect´es. Classes de la couche du mod`ele

Les classes du mod`ele de donn´ees sont impl´ement´ees avec des JavaBeans. Des EJB ou d’autres frame- work de persistence pouvaient ˆetre utilis´es, mais pour des soucis de simplicit´e, les JavaBeans simples ont ´et´e choisis.

– CahierDesCharges

• String addCategorie(String categorie-name) : cr´ee une cat´egorie d’identifiant categorie-name et renvoie les informations concernant la nouvelle cat´egorie.

• boolean delCategorie(String categorie-name) : supprime la cat´egorie d’identifiant categorie- name et renvoie vrai si la suppression r´eussit.

• boolean addSpecification() : cr´ee une sp´ecification et renvoie les informations concernant la nouvelle sp´ecification.

• boolean delSpecification(String specID) : supprime la sp´ecification d’identifiant specID et ren- voie vrai si la suppression r´eussit.

• updateSpecificationById(String specificationID, String att, String valeur) : modifie la valeur de l’attribut att de la sp´ecification d’identifiant specificationID et et renvoie vrai si la modification r´eussit.

• String rechSpecificationParMotCle(String motcle) : cr´ee et renvoie la liste des sp´ecifications dont les caract´eristiques contiennent le mot cl´e motcle.

– Categorie

• boolean addSubCategorie(String subcategorie-name) : cr´ee la sous cat´egorie d’identifiant subcategorie- name et et renvoie vrai si la cr´eation r´eussit.

• boolean delSubCategorie(String subcategorie-name) : supprime la sous cat´egorie d’identifiant subcategorie-name et renvoie vrai si la suppression r´eussit.

• boolean updateSubCategorie(String subcategorie-name) : modifie la sous cat´egorie d’identifiant subcategorie-name et renvoie vrai si la modification r´eussit.

– Specification

• String rechSpecificationByPrio(String motcle) : cr´ee et renvoie la liste des sp´ecifications dont la priorit´e contient le mot cl´e motcle.

• String rechSpecificationByCat(String motcle) : cr´ee et renvoie la liste des sp´ecifications dont la cat´egorie contient le mot cl´e motcle.

• String rechSpecificationByJus(String motcle) : cr´ee et renvoie la liste des sp´ecifications dont la justification contient le mot cl´e motcle.

• String rechSpecificationByDescr(String motcle) : cr´ee et renvoie la liste des sp´ecifications dont la description contient le mot cl´e motcle.

Pour la configuration de l’application et la connexion de tous ses ´el´ements, il faut un fichier de configuration Struts-confi.xml.