GICOM
Application de commerce électronique
Méthodologies et Outils
Projet de M2GI option SRR et RICM3 option SR
Année Universitaire 2005-2006
Université Joseph
Fourier
Contributeur(s)
étape : Didier Donsez
Encadrement M2GI/SRR : Didier Donsez, Sara Bouchenak
Encadrement
RICM3/SR : Pierre-Yves Gibello, Maxime Martinasso
Dernière modification :8 Mars 2006
PLAN
1.2 Hiérarchisation en sous-projet
2.5 Arrêt (Shutdown) du serveur
Un seul
mot : « ANT »
Vos
développement
doit être organisé en sous-projets et en packages.
N’oubliez
pas de versionner vos sources avec CVS ou Subversion (qui est installé sur les
machines Unix)
Utilisez
les tâches ANT relatives à CVS ou Subversion.
Il vous
sera demander de respecter les normes de programmation de Java et C#.
Vous vérifiez
le respect de ces normes avec des outils comme JavaStyle. Utilisez ANT.
Vous
produirez la documentation globale du projet JavaDoc et JavaSrc de votre
projet. Utilisez ANT.
Vous
pourrez tester vos développements au moyen de JUNIT ou de Cactus. Utilisez ANT.
Il vous
est demandé d'utiliser un "Logger" pour tracer votre code. VOUS NE
DEVREZ PAS utilisez des System.out.println(…).
Plusieurs
loggers sont disponibles : java.util.logging.Logger depuis J2SE 1.4,
Apache Log4J ou bien ObjectWeb MonoLog
Il vous
sera demandé des métriques sur vos sources comme le loc (number of lines of
code), nombre de classes, nombre de commentaires, nombre de packages,
visibilité des attributs/méthodes/classes, ...
Il existe
des outils comme JavaNCCS, JMetra. Utilisez ANT.
<taskdef name="javancss"
classname="javancss.JavancssAntTask"
classpath="${CLASSPATH}"/>
<javancss srcdir="${build.src}"
generateReport="true"
outputfile="${test.results.root}/javancss_metrics.xml"
format="xml"/>
Remarquons
qu’il existe plusieurs plugins Eclispe qui donne plusieurs métriques sur
le projet en cours de développement. Vous pouvez utiliser celui-ci http://metrics.sourceforge.net/
Le
sous-système bancaire utilise de nombreux serveurs dont le
codes ne varient que peu ! Vous utiliserez le serveur générique en
les paramétrant.
Séparez
bien le développement (les sources) du déploiement (paramêtrage, exécutables)
Lors de la
démonstration finale, vous avez moins d’un quart d’heure pour
déployer vos serveurs sur une dizaine de machine. Il vous faudra donc
automatiser la procédure. Utilisez ANT.
Quelques
tâches qui vous seront utiles
Eviter
d'avoir des chemins absolus dans vos fichiers de properties (class
java.util.Properties)
Pensez à
la portabilité des chemins (UNIX, Windows).
Evitez de
fixer les adresses et noms (DNS) de serveurs.
Vous aurez
intérêt à organiser les serveurs à déployer en réservant un répertoire par serveur
contenant un fichier de propriété et un java.policy interdisant l'accès à
d'autres répertoires que les répertoires de travail et limitant les connexions
réseaux, un build.xml (target start, stop, clean), un répertoire lib contenant
les .jar signés nécessaires à l'exécution, un répertoire de travail pour chaque
élément de serveur qui en a besoin (ie le POM de l'etape 3, le LTM/GTM de
l'étape 4)
Chaque
répertoire doit pouvoir être deployé sur une machine distante n'ayant pas de
disque partagé (ie C: des PCs des salles de TP)
Le service
eCOM est deployé sous la forme d'un .ear
Il vous
sera demandé de mesurer les performances de votre serveur Web avec Apache
JMeter (http://jakarta.apache.org) et de donner des métriques pour une charge
de travail qui vous sera donné (1 entrée, 10 produits achetés dans 2 magasins,
3 modifications, 5 visualisations du caddie, achat)
En phase
d'évaluation de performance, pensez à désactiver vos loggers au moyen d'une
variable static final (l'optimiseur de javac supprime le test et la section de
code)
final
static LOGGER=false;
...
if(LOGGER){
logger....;
// no bytecode inserted
}
Un Ctrl-C
n'est pas génial et pas tellement automatisable sous DOS
Prévoyez
une procédure pour arrêter proprement vos serveur.
Remarque :
la méthode addShutdownHook(Thread hook) de la classe
java.lang.Runtime permet d’effectuer des traitements lors de la
terminaison de
Runtime.getRuntime().addShutdownHook(
new Thread() {
public void run() {
System.out.println("Hook called");
}
}
);
Chaque
serveur a son propre fichier java.policy qui limite des accès du serveur aux
ressources de la machine : les fichiers de configuration sont en lecture seule,
les répertoires de travail en lecture/écriture. On peut aussi limiter les
connexions réseaux.
Les
classes des objets d'une banque doivent être signées avec le certificat de
l'équipe de développement de la banque.
La
signature est automatisée par une tâcheANT (avant le déploiement).
Comporte
un build.xml avec une target dist et un petit manuel de configuration et
d'administration dans un répertoire doc
N'oubliez
pas que ce qui est temporaire a tendance a être définitif !
Organisez
vous en équipe avec des spécialités identifiées pour chaque membre (chef de
projet, architecte, spécialiste méthodes, spécialiste outils (ANT), …
Gardez en mémoire les étapes suivantes.