Académique Documents
Professionnel Documents
Culture Documents
1
République Tunisienne
Par
Par
Encadrant professionnel,
Le
J’autorise l’étudiant à faire le dépôt initial du mémoire ou de l’essai aux fins d’évaluation.
Le
Dédicaces
A mes parents
A qui je dois toute ma réussite. C’est grâce à vous que j’ai pu faire mes premiers pas dans
la vie et réaliser mes ambitions. votre pureté, droiture et honnêteté me serviront de modèle.
Ce travail est le fruit de vos innombrables sacrifices. J’en serai éternellement reconnaissant.
A ma fiancé
Qui a cru en moi et m’a soutenue par ses précieux conseils. Que Dieu te garde pour moi.
A mes amis
Qui m’apportez beaucoup. Votre amitié m’est plus précieuse que de l’or.
Emna GHRIB
i
Dédicaces
Que nulle dédicace ne puisse exprimer ce que je leurs dois ,pour leur bienveillance et leur
soutien..Trésors de bonté, de générosité et de tendresse, en témoignage de mon profond
amour et ma grand reconnaissance
"que dieu vous grade".
Wissem DRISSI
ii
Remerciements
Nous tenons aussi à remercier notre encadrante Dr.Ines GAM, enseignante à l’Institut
Supérieur d’Informatique de Tunis (ISI), pour ses orientations, conseils et remarques, et de
la qualité de nos rapports professionnels. Nous sommes reconnaissants de tout ce qu’elle nous
a appris. Qu’elle trouve ici l’expression de nos profondes gratitudes et reconnaissances.
Nous tenons à remercier chaleureusement nos familles respectives qui n’ont cessé de
nous encourager et de nous aider aux moments difficiles pour que nous réussissons au mieux.
Nous tenons aussi à remercier vivement toutes les personnes qui de près ou de loin ont
contribué au bon déroulement de ce projet. Qu’elles trouvent ici l’expression de nos profondes
gratitudes.
Enfin nous adressons nos remerciements les plus dévoués aux membres du jury pour
nous avoir honoré en acceptant d’évaluer ce travail tout en espérant qu’ils y trouvent les
qualités de clarté et de motivation qu’ils attendent.
iii
Table des matières
Introduction générale 1
1 Cadre du projet 3
1.1 Organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Département d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Présentation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Situation de départ et problématique . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Objectifs et contribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Méthodologie adoptée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 Étude préalable 11
2.1 Etude de systèmes existants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.1 Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.2 Centreon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.3 Etude Comparative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Concepts à expliquer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Java Management eXtensions (JMX) . . . . . . . . . . . . . . . . . . . . . . 15
2.2.2 Byte Code Instrumentation (BCI) . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.3 Processus du byte code java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.4 Java Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.5 ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
iv
3.3.3 Diagramme de cas d’utilisation «Monitoring JBOSS» . . . . . . . . . . . . . . 26
3.3.4 Diagramme de cas d’utilisation «Superviser les sessions» . . . . . . . . . . . . 28
3.3.5 Diagramme de cas d’utilisation «Superviser la base de données de "Vermeg
IPM and WM"» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.6 Diagramme de cas d’utilisation «Gérer les privilèges» . . . . . . . . . . . . . . 31
3.3.7 Diagramme de cas d’utilisation «Configurer les requêtes de supervision» . . . 32
3.3.8 Diagramme de cas d’utilisation «Tracer le code» . . . . . . . . . . . . . . . . 34
5 Réalisation et test 58
5.1 Choix technologiques et tehniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.1 Environnement matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.2 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2 Technologie utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2.1 Technologies de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2.2 Technologies web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.3 Framework et outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.3 Architecture logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.4 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.4.1 Page d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.4.2 Module de Monitoring JVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.4.3 Module de Monitoring JBoss . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.4.4 Module de Monitoring Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.4.5 Module Code tracer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5 Tests de la solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
v
5.5.1 Test unitaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.5.2 Test de performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Conclusion générale 75
Bibliographie 77
vi
Table des figures
vii
Table des figures
viii
5.24 Performance du "GC activity" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.25 Performance des threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
ix
Liste des tableaux
x
Liste des abréviations
xi
Introduction générale
L’informatique est devenue l’épine dorsale de l’entreprise quel que soit son secteur d’activité.
L’importance de fidéliser et avoir la confiance de ses clients est vitale pour elle. Partis de ce postulat,
les entreprises ont recherché des procédés visant à garantir la qualité des solutions qu’elles proposent.
Les problèmes liés à l’informatique doivent, donc être réduits au minimum, car l’indisponibilité
immédiate des solutions a des impacts très préjudiciables sur l’activité et sur la notoriété d’une
entreprise.
En effet, il existe deux enjeux majeurs pour les directions informatiques. Le premier est de
garantir la disponibilité et les niveaux de service du système en cas de panne ou de dégradation des
performances. Le second est de tenter de prévenir en cas de problème et, le cas échéant, garantir une
remontée d’information rapide et une durée d’intervention minimale.
Pour satisfaire ses clients et assurer ses performances, l’entreprise éditrice de logiciels doit
mettre en place un système de monitoring et de traçage du code. C’est dans ce cadre se situe notre
projet intitulé « "Monitor and Trace" Outil de supervision destiné pour le système "Vermeg IPM
and WM" », qui consiste à concevoir et développer une outil de monitoring pour la solution «Vermeg
Institutional Portfolio Management And Wealth Management » qui se présente essentiellement sur
deux axes : Le premier est celui de la supervision des composants, et le second s’appuie sur le traçage
d’un ou plusieurs scénarii de l’application au moment de son exécution.
Notre rapport documente la gestion et le developpement mis en place pour réaliser notre
projet. Le premier chapitre intitulé "Cadre du projet" est consacré, d’abord, à une présentation
générale du projet et de l’environnement de travail. Ensuite, la problématique est présentée ainsi que
la méthodologie adoptée. Dans le second chapitre intitulé « Étude préalable », nous passons par un
tour d’horizon sur les notions en relation avec notre sujet. Ensuite, nous faisons une étude de l’existant
et nous finissons par mettre en valeur le choix des technologies utilisées. Dans le troisième chapitre
"Analyse des besoins", nous présentons une analyse des besoins fonctionnels et non fonctionnels de
la solution proposée ainsi que la modélisation de ces besoins par le recours aux diagrammes de cas
d’utilisation. Dans le quatrième chapitre "Architecture et conception du système",nous abordons
l’architecture générale de l’application et offrons un aperçu des diagrammes de conception utilisés.
Cet aperçu mènera à la conception générale des différentes fonctionnalités offertes. Cette conception
est réalisée en utilisant le langage de modélisation UML en présentant le comportement statique et
1
Introduction générale
2
Chapitre 1
Cadre du projet
Plan
1 Organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Département d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Présentation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Méthodologie adoptée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Chapitre 1. Cadre du projet
Introduction
Ce chapitre, se situe dans le cadre général de notre projet. Cette étude consiste à présenter
l’organisme et le département d’accueil « Vermeg » et « Vermeg Institutional Portfolio Management
and Wealth Management ». Ensuite, nous introduisons le sujet tout en faisant une étude de l’existant
ainsi que sa critique. Enfin, nous exposons la méthodologie de gestion de projet adoptée pour notre
projet.
La société Vermeg située aux Berges du lac à Tunis, est fondée en 2002 comme entreprise
indépendante de la société mère BFI, établie depuis 1994. Vermeg est doté d’une ingénierie experte
en monétique et en édition de logiciels bancaires et financiers pour la gestion des titres et des
capitaux. Depuis sa création, elle n’a cessé de développer son expertise en finance pour offrir
une large gamme de logiciels innovants réalisant une multitude de fonctions pour les middle et
back-offices des institutions concernées par le traitement des titres. Vermeg emploie aujourd’hui
plus de 700 collaborateurs, ingénieurs et consultants. Elle compte parmi ses clients les plus grandes
banques et institutions financières de renommée mondiale Grupo Santander, Société Générale, ABSA
(Groupe Barclays), Banque de France, Banque d’Angleterre, Central Bank of Ireland, Raiffeisen
Zentralbank Group, Bangkok Bank, Aviva, Groupama, National Bank of Kuwait. Vermeg offre un
visage international et multiculturel et intervient dans plus d’une vingtaine de pays répartis sur trois
continents comme la montre la figure 1.1 [1]
Dans le but d’assurer un niveau de qualité compatible avec les exigences clients les plus
élevées, Vermeg Tunisie a certifié son système de management de la qualité suivant les référentiels
ISO/IEC 27001, ISO 15022 et ISO 20022.
4
Chapitre 1. Cadre du projet
L’entreprise se compose des quatre départements, représentés par la figure 1.2, suivants :
• Customer Services : le département qui gère les relations avec le client et comprend également
une cellule de veille technologique ;
De plus, depuis 2014, suite à l’acquisition de BSB International (Business Solutions Builders),
une société belge, éditeur de logiciels axés sur l’assurance-vie, les pensions et les soins de santé, la
gestion d’actifs et les secteurs de gestion de patrimoine. Le département « Asset Management » a
vu le jour et a été connu avant avec le nom «Vermeg BSB ». Ce département est dotée d’un service
"Vermeg Institutional Portfolio Management and Wealth Management" (IPM and WM) qui est une
solution de back-to-front pour la gestion institutionnelle et la gestion de fortune. Ce projet de fin
d’études a été réalisé au sein des deux équipes : «Support» et «Architecture». La mission de l’équipe
de «Support» consiste à assurer la gestion de tout nouveau produit ainsi que permettre l’élaboration
du plan de maintenance spécifique à chaque processus durant le cycle de développement du logiciel.
Quant à l’équipe d’«Architecture», son rôle est d’assurer la conception et le développement des
nouvelles solutions Vermeg, ainsi que l’évolution des applications existantes à travers la maintenance
corrective et évolutive. La figure 1.3 représente l’organigramme de ce département. [2]
5
Chapitre 1. Cadre du projet
Nous allons présenter notre projet, comme le montre la figure 1.4, tout en abordant son
contexte et les limites de la solution existante pour aboutir à la solution proposée.
Dans certaines situations, un client Vermeg confronterait des problèmes lors de l’utilisation
d’une application. Afin de le signaler, il procède par ouvrir un « ticket » destiné aux développeurs
Vermeg pour qu’il soit pris en charge et que les personnes chargées corrigent les erreurs. Pour ce faire,
le client envoi un fichier « Log » bien spécifique aux développeurs pour qu’ils localisent l’erreur et
la corrigent. Ces erreurs peuvent être, par exemple,du à un espace mémoire insuffisant dans la JVM
ou dans le serveur de base de données Oracle, d’un mauvais déploiement du serveur d’application,
ou bien d’un « bug » dans le code source de l’application.
L’approche utilisée par le département « Vermeg IPM and WM –Support » et celle du
département « Vermeg IPM and WM –Architecture » répond partiellement aux attentes. Néanmoins,
les approches adoptées possèdent certains inconvénients, à savoir la localisation de l’erreur générée
vu que le fichier log peut contenir des centaines même des milliers de lignes, donc ça peut couter des
heures et des jours pour pouvoir préciser l’emplacement de l’erreur.
Également, le processus adopté lors de la détection d’une anomalie au niveau du serveur
de base de données est très long : En effet, lors du décèlement de l’erreur, le client doit faire une
réclamation. Puis, Vermeg lui envoie un script à exécuter avant de refaire sa routine. Une fois l’erreur
est détectée, le client envoie le fichier log à Vermeg pour pouvoir cerner l’erreur en répétant ce
processus à chaque fois que c’est necessaire. Dans certains cas, la localisation de l’anomalie nécessite
une vue globale ou spécifique sur l’état du serveur en question. Cette supervision n’existait pas.
6
Chapitre 1. Cadre du projet
7
Chapitre 1. Cadre du projet
Afin de mettre en place les fonctionnalités resencées, nous avons adopté la méthodologie
Agile pour la gestion du projet où nous avons suivi un cycle de vie itératif et incrémental lors du
developpement de notre application.
Une méthode agile est une approche itérative et incrémentale dont les tâches s’effectuent petit
à petit, par ordre de priorité, avec des phases de contrôle et d’échange avec le client. [3] La finalité
de cette méthode est de générer un produit de haute qualité en prenant en compte l’évolution des
besoins des clients.
La méthode Scrum est une méthode agile qui s’appuie sur le découpage des projets en itérations «
Sprints ». Chaque sprint commence par une estimation suivie d’une planification opérationnelle, et
se termine par un prototype prêt à être utiliser.
Parce que Scrum est une méthode de gestion de projet Agile et qui permet de travailler en
petite équipe, d’une manière itérative et incrémentale, nous nous sommes inspirés tout au long de
la réalisation de notre projet. En effet, la méthode Scrum définit 3 rôles à savoir :
• Le Product Owner : Celui qui porte une vision globale du produit à réaliser, et qui travaille
en interaction avec l’équipe de développement. Dans notre projet, nos trois encadrants Vermeg
et ISI jouent le rôle du Product Owner ;
• L’équipe de développement : Elle est chargée de transformer les besoins exprimés par le
product Owner en fonctionnalités utilisables. Nous avons formé cette équipe de développement
par deux ingénieurs.
8
Chapitre 1. Cadre du projet
Planification du projet Afin de mieux expliquer ce concept, nous illustrons par le schéma
de la figure 1.6 le cycle de gestion du projet suivi tout au long de la réalisation de notre projet selon
la méthode Scrum.
Cette planification est récapitulée dans le « Backlog Produit » qui est « une liste ordonnée
de tout ce qui pourrait être requis dans le produit et est l’unique source des besoins pour tous les
changements à effectuer sur le produit » [5].La gestion et le découpage du projet sont récapitulés
dans le tableau 1.1.
9
Chapitre 1. Cadre du projet
Conclusion
Dans ce chapitre, nous avons situé le projet dans son cadre général en présentant l’organisme
d’accueil et le sujet en faisant une étude descriptive et critique de l’existant, puis nous avons introduit
la solution qui s’inscrit dans le cadre de notre projet en précisant la méthodologie adoptée. En vue
d’avoir une idée plus claire sur le projet, une étude préalable est faite dans le chapitre suivant afin
de comprendre les concepts généraux et d’étudier les outils existants.
10
Chapitre 2
Étude préalable
Plan
1 Etude de systèmes existants . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 Concepts à expliquer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Chapitre 2. Étude préalable
Introduction
Dans ce chapitre, nous réalisons une étude de systèmes de monitoring qui existent sur le
marché. Ensuite, nous effectuons une étude sur les concepts généraux autour desquels tourne notre
solution, et nous clôturons avec les choix technologiques.
Durant la partie de préparation de notre solution, nous avons effectué une étude des systèmes
existants sur le marché afin de connaitre leurs caractéristiques et leurs fonctionnalités et ainsi nous
nous inspirons un nouvel outil personnalisé qui répond aux besoins de Vermeg.
2.1.1 Nagios
Nagios est un logiciel de supervision destiné à informer l’utilisateur des problèmes éventuels
dans leurs systèmes d’informations avant que leurs clients, utilisateurs ou managers ne le fassent. Il
est prévu pour fonctionner sur système d’exploitation Linux mais fonctionne également sans problème
sur la plupart des variantes *NIX. Le démon de supervision effectue des contrôles intermittents sur les
hôtes et services spécifiques en utilisant des plugins externes qui retournent un statut d’état à Nagios.
Quand des problèmes surviennent, il peut envoyer des notifications à des contacts administratifs de
façons différentes (email, SMS, messagerie instantanée, etc. . . ). [6]
Les informations d’états courants, les historiques et les rapports peuvent être consultés à
partir d’un simple navigateur. La figure 2.1 présente l’interface de Nagios.[7]
12
Chapitre 2. Étude préalable
2.1.2 Centreon
Centreon est un logiciel de supervision des applications, systèmes et réseaux, basé sur les
concepts de Nagios. Le cœur de Centreon est Open Source distribué sous licence GPL v2 et gratuit.
Des modules complémentaires à valeur ajoutée payants sont distribués par l’éditeur. Des
modules complémentaires gratuits et open sources sont développés par des contributeurs sur git
hub.
Centreon fournit une interface simplifiée pour rendre la consultation de l’état du système
accessible à un plus grand nombre d’utilisateurs, y compris des non-techniciens, notamment à
l’aide de graphiques de performance. Les techniciens ont cependant toujours accès aux informations
techniques de l’ordonnanceur.[8] [9] La figure 2.2 [10]montre l’interface du logiciel Centreon.
13
Chapitre 2. Étude préalable
Après avoir étudié les deux systèmes de surveillance, le tableau 2.1 présente une étude
comparative selon leurs principales fonctionnalités à savoir la surveillance du JVM, JBoss, et Oracle
et traçage de code.Ces quatre aspects soit cuix qui concernent notre mission.
14
Chapitre 2. Étude préalable
Suite à notre étude et bien que les deux outils cités précédemment sont efficaces, Vermeg a
décidé de ne pas les adapter. D’une part, parce que , juridiquement, Vermeg ne peut pas utiliser des
logiciels open sources. D’autre part, la fonctionnalité du traçage du code ainsi que celle d’automatisation
du processus de detection des erreurs du module Oracle n’existent pas dans les outils cités précédemment.
C’est pourquoi nous avons à concevoir et développer un outil de supervision et de traçage de code
pour le système "Vermeg IPM and WM".
Afin de mieux comprendre les notions sur lesquelles se base notre solution, nous présentons
ces concepts de bases.
JMX est un standard développé par JCP (Java Community Process) pour la gestion et le
suivi des applications et services. Ce standard définit une architecture de gestion, des design patterns,
des APIs, et des services pour construire des solutions distribuées, dynamiques, et modulaires pour
la gestion de ressources de tous types. L’API JMX rend possible la manipulation et la gestion
d’équipements logiciels ou matériels [11].
C’est dans ce sens que nous avons choisi de l’utiliser afin d’extraire les données spécifiques au module
de JVM ainsi que celui de JBoss
BCI est une technique permettant d’ajouter des instructions sous forme byte code à une
classe Java au cours de son exécution et plus précisément, pendant le temps "chargement" de cette
classe Java. [12]
Nous avons opté pour cette technique afin de réaliser le module de traçage du code. En effet, BCI
assure l’instrumentation des applications que nous ne possédons pas leurs code source mais que nous
voulons quand même les débugger et injecter de nouvelles instructions à une ou plusieurs classes.
Après avoir écrit un fichier « .java » qui contient le code source de la routine que nous
voulons exécuter, ce fichier « .java » va être compilé à travers la commande « javac ». Le résultat
15
Chapitre 2. Étude préalable
de ce processus est un fichier « .class », qui va être utilisé au moment d’exécution. Le fichier « .class
» va être stocké dans le « classloader » de la JVM pour qu’elle puisse vérifier son byte code. Ce
dernier est transformé en langage native de l’OS à travers le JRE. La figure 2.3 présente le processus
du byte code java.
Pour pouvoir instrumenter une application tierce, nous avons besoin de créer un agent java
qui va exécuter la tâche d’instrumentation.
Un agent Java permet d’instrumenter des programmes s’exécutant dans une JVM en interceptant le
chargement des classes et en modifiant directement le byte code si nécessaire. Un agent est chargé
lors du démarrage de la JVM, accompagné ou non d’options. La JVM est belle et bien consciente de
son existence, si le chargement d’un agent échoue, l’exécution du programme est interrompue. [13]
2.2.5 ASM
Afin d’injecter des instructions aux classes Java de l’application que nous voulons instrumenter,
nous avons utilisé l’ASM.
ASM est une bibliothèque Java de manipulation et d’analyse du bytecode Java. Elle peut être utilisée
pour modifier des classes existantes ou créer dynamiquement des classes, directement sous forme
binaire. Les algorithmes de transformations et d’analyses fournis permettent d’assembler facilement
des transformations complexes et des outils d’analyse statique. ASM fournit des fonctionnalités
similaires aux autres Frameworks de manipulation du bytecode, mais porte une attention particulière
sur la simplicité d’usage et la performance. Il a été conçu pour être aussi petit et rapide que possible,
ce qui le rend intéressant pour être utilisé dans des systèmes dynamiques, mais il peut aussi être
16
Chapitre 2. Étude préalable
Conclusion
Dans ce chapitre, nous avons entamé l’analyse de l’existant, qui nous a permis de cerner nos
objectifs afin de développer un système de qualité qui répond aux attentes de l’organisme d’accueil.
Ensuite, nous avons présenté les notions générales en relation avec notre projet. Dans le chapitre
suivant, nous spécifions les besoins fonctionnels et non fonctionnels de notre application.
17
Chapitre 3
Plan
1 Recensement des besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Introduction
Le présent chapitre est consacré à l’identification et l’analyse des besoins qui représentent
une phase importante dans le cycle de développement d’un logiciel. Pour ce faire, Nous présentons,
en premier lieu, les acteurs de notre système, puis nous spécifions les besoins fonctionnels et non
fonctionnels. Ensuite, nous modélisons ces besoins avec les diagrammes des cas d’utilisation en
décrivant et analysant leurs fonctionnalités majeures.
Suite à l’étude de la problématique, nous avons dégagé l’ensemble des exigences que notre
application doit satisfaire. Ces exigences sont divisées en besoins fonctionnels, besoins non fonctionnels
et contraintes.
C’est une description complète où tous les services requis pour l’utilisateur sont spécifiés, c’est
aussi une description consistante, dans la mesure qui ne contient pas des conflits ou contradictions.
Dans ce contexte, notre application doit fournir aux différents utilisateurs les fonctionnalités que
nous spécifions dans cette section.
• Notifier lorsque mémoire atteint un certain seuil après l’exécution du "Garbage Collector".
19
Chapitre 3. Analyse des besoins
• Consulter toutes les sessions, ainsi que les classer soit selon leurs statuts (Active/Inactive)
ou selon leurs nombre d’exécution,
• Exposer le taux total d’utilisation du CPU ainsi que son utilisation par session,
• Afficher le nom de la méthode, son package, ses attributs et leurs valeurs, et la valeur de
retour de cette méthode.
L’outil à réaliser doit répondre à un certain nombre d’exigences non fonctionnelles. Elle se
caractérise par :
• Ergonomie : L’interface de l’application doit être simple, conviviale et facile à utiliser. Elle
renseigne l’utilisateur sur le contexte dans lequel il se trouve.
20
Chapitre 3. Analyse des besoins
• Sécurité : Une authentification est nécessaire pour que l’utilisateur puisse accéder aux
différents Dashboard et de superviser ou configurer les systèmes voulus.
• Scalabilité : Etant donné que notre application est modulaire ce qui facilite la tâche d’ajouter
d’autre modules, notre solution doit s’adapter à tout changement.
• Superviseur : Il a pour rôle de superviser l’état du JVM, JBOSS et Oracle ainsi que de tracer
le code d’une application tierce.
De plus, notre application communique avec d’autres systèmes internes du client à savoir :
• SGBD Oracle : Il s’agit d’un serveur de base de données Oracle qui stocke, entre autre, les
données relatives à l’application « Vermeg IPM and WM ».
• Serveur d’application Jboss : Il s’agit d’un serveur installée sur un ordinateur, placée sur
un réseau distribué qui orchestre le logique métier de l’application « Vermeg IPM and WM ».
• JVM : Il s’agit d’une machine virtuelle ou s’exécute l’application «Vermeg IPM and WM»,
puisque c’est une application Java qui ne s’exécute pas directement sur le système d’exploitation.
Durant cette phase, nous spécifions les besoins fonctionnels dégagés précédemment sous forme
de diagrammes de cas d’utilisation. Nous rappelons que les cas d’utilisation permettent de mettre
en évidence les fonctionnalités proposées aux acteurs par le système. Ils représentent un moyen
d’analyse des besoins et permettent de relier les actions réalisées par l’utilisateur et les réactions
attendues par le système.
Dans le diagramme du cas d’utilisation général de la figure 3.1, nous regroupons tous les cas
d’utilisation de base afin d’avoir une vue globale du fonctionnement de notre système ainsi que
mettre en évidence les éventuelles relations qui peuvent les lier.
21
Chapitre 3. Analyse des besoins
• Mesurer les performances du système tel que le nombre de processus disponibles, le système
d’exploitation utilisé, l’espace swap libre, le taux d’utilisation du CPU ainsi que d’autres
22
Chapitre 3. Analyse des besoins
• Superviser la machine virtuelle Java tout en extractant des informations sur la mémoire tas et
hors-tas, les thread actifs et d’autres informations liées à la VM.
• Superviser la base de données de "Vermeg IPM and WM" : cette fonctionnalité assure le
suivie de l’intéraction de l’application "Vermeg IPM and WM" avec sa base de données Oracle
à savoir le plan d’execution des requêtes SQL, les statistiques par curseur...
• Tracer une application sans modification de son code source afin de pouvoir afficher le nom,
les paramètres et leurs valeurs ainsi que la valeur de retour de chaque méthode en cours
d’execution.
• Superviser les sessions qui permet de suivre les états des sessions et leurs caractéristiques ainsi
que d’extraire des mesures de performance de l’SGBD Oracle à savoir l’utilisation du mémoire
et du CPU.
• Configurer les requêtes de supervision tout en consultant les règles (requêtes) de supervision.
Le configurateur peut aussi gérer ces règles tout en ajoutant ou supprimant l’une d’elles. Ainsi,
il peut configurer les tables de supervision tout en créant toutes les tables nécessaires en même
temps ou bien en les supprimant. Il a aussi la possibilité de supprimer et d’ajouter une seule
table de supervision.
• Gérer les privilèges tout en accordant ou enlevant les droits nécessaires à l’utilisateur de la
base de données "Vermeg IPM and WM" "Soliam_User" afin de pouvoir créer les tables de
supervision et d’extraire les données nécessaires d’eux.
23
Chapitre 3. Analyse des besoins
24
Chapitre 3. Analyse des besoins
2. Le superviseur peut consulter le dashboard, pour superviser les variations des mémoires
(Tas et hors-Tas) en temps réel. Ainsi, il peut voir les détails de ces mémoires à savoir la
taille initiale, utilisée, maximale et « comited ».
3. Le superviseur peut consulter les threads actifs depuis la JVM ainsi que leurs détails comme
l’id, nom, statut, temps d’attente, temps de blocage, et sa pile d’exécution
4. Le superviseur peut afficher toutes les informations liées à la machine virtuelle comme les
arguments, nom, classPath, classBoot, temps de démarrage et sa version.
Les compléments :
— Traçabilité : le Dashboard offre une vision instantanée sur la mémoire de la JVM et garde
l’historique des états précédant.
25
Chapitre 3. Analyse des besoins
26
Chapitre 3. Analyse des besoins
2. Le superviseur peut consulter le dashboard de JBoss, pour superviser les variations des
mémoires (Tas et hors-Tas). Ainsi, il peut voir les détails de ces mémoires à savoir la taille
initiale, utilisée, maximale et «comited»
Les compléments :
— Traçabilité : le Dashboard offre une vision instantanée sur la mémoire de JBOSS et garde
l’historique des états précédant.
27
Chapitre 3. Analyse des besoins
28
Chapitre 3. Analyse des besoins
Description : Ce cas d’utilisation permet, d’une part de suivre les sessions en extractant des
informations sur les sessions actives, les Top sessions, toutes les sessions ainsi que le temps
d’attente des sessions. D’autre part, il permet de mesurer les performances de l’SGBD Oracle en
consultant la mémoire SGA et PGA utilisée, la consommation du CPU et le nombre d’accès au
cache, nommé le «hit ratio».
Scénario principal :
1. Le superviseur consulte la page de supervision des sessions.
2. Le système affiche les mesures de performances due l’SGBD Oracle tel que la mémoire SGA
et PGA, l’utilisation du cpu ainsi que le hit ratio.
3. Le superviseur choisi de suivre, soit toutes les sessions, soit les sessions actives, soit les top
sessions, soit le temps d’attente des sessions.
Les compléments :
— Sécurité : Une authentification est nécessaire pour que l’utilisateur puisse accéder à la page
de supervision des sessions.
29
Chapitre 3. Analyse des besoins
Figure 3.5: Diagramme de cas d’utilisation pour «Superviser la base de données de Vermeg IPM
and WM»
Tableau 3.7: Description textuelle du cas d’utilisation «Superviser la base de données de "Vermeg
IPM and WM"»
30
Chapitre 3. Analyse des besoins
Scénario principal :
1. Le superviseur consulte la page de supervision de la base de données de "Vermeg IPM and
WM".
31
Chapitre 3. Analyse des besoins
Scénario principal :
1. Le configurateur donne les privilèges nécessaires à l’utilisateur de la BD «Soliam_User»
Figure 3.7: Diagramme de cas d’utilisation pour «Configurer les requêtes de supervision»
32
Chapitre 3. Analyse des besoins
Tableau 3.11: Description textuelle du cas d’utilisation «Configurer les requêtes de supervision»
Les compléments :
33
Chapitre 3. Analyse des besoins
34
Chapitre 3. Analyse des besoins
Les compléments :
Conclusion
Dans ce chapitre, nous avons analysé les différents besoins de notre système « Monitor and Trace ».
Ces besoins ont été spécifiés à l’aide des diagrammes des cas d’utilisation d’UML. Dans le chapitre
suivant, nous décrivons d’une façon détaillée l’architecture ainsi que la conception de notre système.
35
Chapitre 4
Architecture et conception du
système
Plan
1 Architecture globale du système . . . . . . . . . . . . . . . . . . . . . . . 37
2 Conception détaillée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Chapitre 4. Architecture et conception du système
Introduction
Afin de mieux comprendre le système M&T à développer, une démarche de modélisation structurée
s’impose. Nous avons choisi d’utiliser le langage UML pour décrire les différents aspects de notre
système, ce qui permettra de faciliter et structurer le développement. Nous présentons en premier
lieu l’architecture globale que nous avons suivie dans notre application. Ensuite, nous présentons
une vue statique et dynamique du système à l’aide des diagrammes UML.
En vue des besoins précédemment spécifiés, notre solution doit offrir un large degré d’évolutivité
et d’extensibilité et ce pour chaque élément qui la constitue. Ainsi, nous avons veillé à ce que ces
aspects soient visibles tant dans l’architecture opérationnelle qu’applicative faisant l’objet de cette
partie
La solution que nous avons choisie est une application web qui suit l’architecture repésentée par la
figure 4.1.
Un client léger qui n’est autre qu’un navigateur web permettant à son utilisateur d’accéder à
l’application via internet ou intranet de Vermeg.
Le serveur web qui héberge toutes les couches de notre application à savoir les composants de
AngularsJS, les web services, les modules métier et les méthodes d’accès à la tiers de données.
Un tiers de données qui est constitué de serveurs de base de données, serveurs d’applications et
des JVMs.
37
Chapitre 4. Architecture et conception du système
La couche de présentation : Cette couche de plus haut niveau, responsable de l’affichage des
données et de l’aspect visuel et graphique de l’application. Elle fait appel à la couche applicative pour
répondre aux requêtes du client, et elle assure la logique de navigation ainsi que l’authentification
et l’autorisation.
38
Chapitre 4. Architecture et conception du système
Comme il est indiqué dans la figure ci-dessus la couche présentation suit l’architecture MVC ou on
a:
• View : permet la gestion des vues, où chaque vue fonctionne de pair avec un contrôleur. cet
dernier consomme les données en data-binding et appelle les méthodes du contrôleur.
La couche web service : Cette couche est constituée par des services web Rest représentent un
mécanisme de communication entre la couche présentation et la couche métier. Cette couche offre à
l’application la possibilité d’être utilisé dans un environnement distribué.
La couche métier : Elle contient tous les traitements métiers de l’application à savoir les
services des différents modules fonctionnels, les services de communication avec le JVM, le serveur
d’application JBoss et l’SGBD Oracle et le traçage de code. Ces traitements sont implémentés sous
forme de services Spring et communiqués à la couche présentation via les services web Rest. Spring
étant un conteneur léger permet de simplifier l’intégration des différentes couches.
La couche modèle : Elle regroupe l’ensemble des objets manipulés dans la couche métier de
l’application.
Cette partie vise à détailler le contenu des différents composants et modules de notre outil «M&T»
et les relations entre eux. Pour ce faire, plusieurs diagrammes UML sont utilisés pour mettre en
relief l’aspect statique et dynamique de notre application.
Dans cette partie, nous montrons la structure statique de notre outil «M&T». Nous commençons par
une illustration des différents modules de notre application à travers le diagramme de paquetages,
puis nous enchainons avec les diagrammes de classes de chaque module. Enfin, nous illustrons la vue
statique de notre solution par un diagramme de déploiement pour présenter l’infrastructure physique
du système.
39
Chapitre 4. Architecture et conception du système
Afin de mieux comprendre notre solution, nous présentons dans la figure 4.4 le diagramme de
paquetages qui expose la composition de chaque module.
Chaque module est composé de cinq packages à savoir :
Le mot «module_name» utilisé ci-dessus fait référence aux quatre modules de notre application à
savoir le module JVM, JBoss, Oracle et code tracer.
la figure 4.4 montre l’exemple du module "Monitoring JVM" composé des quatres paqutages cité
précédemment.
40
Chapitre 4. Architecture et conception du système
Le diagramme de paquetages précédant contient les modules ainsi que les couches de chaque module
du système M&T à réaliser. Afin de mieux présenter la structure de ces couches, nous présentons les
diagrammes de classe associés.
Structure de la couche présentation :
Comme nous avons mentionné au début de ce chapitre, la couche présentation de notre application
«M&T» est constituée de trois packages :
• Le package Views : Ce package contient toutes les vues de notre application. Chaque vue
est écrite en Html5, Css3 et bootstrap et a pour but d’afficher des résultats et des données
spécifiques aux utilisateurs. Parmi ces views nous citons :
41
Chapitre 4. Architecture et conception du système
— TracerView : Cette interface graphique permet à l’utilisateur de choisir les packages qu’il
souhaite instrumenter et affiche le résultat retourné.
• Le package Model : Ce package contient le modèle de notre application. il joue le rôle d’un
conteneur pour les différentes parties de notre application tel que les contrôleurs, les services,
les vues...
• Le package Controller : Ce package contient l’ensemble des contrôleurs utilisés. En effet, chaque
vue est liée à un controleur.
— JVMController : Il consiste à présenter les données spécifiques au JVM ainsi que les
traitements des données réalisés côté front-end de ce module.De même pour le module «
JBOSS monitoring ».
42
Chapitre 4. Architecture et conception du système
43
Chapitre 4. Architecture et conception du système
Chaque classe est constituée d’un ou plusieurs services web qui présentent un moyen rapide de
distribution de l’information entre le client et sa plateforme.
La figure 4.6 représente le diagramme de classe de la couche «serviceRest» de notre solution.
— QueryService : C’est une interface qui propose des opérations liées à la gestion des requêtes
telles que l’ajout, la suppression ainsi que la consultation.
44
Chapitre 4. Architecture et conception du système
«DatabaseConnection» tout en utilisant la classe «Queries» qui sert à exécuter les requêtes
de monitoring. Elle assure aussi la connexion à la base de données Oracle pour effectuer la
tâche d’authentification.
— AuthentificationImpl : Cette classe assure la gestion des utilisateurs ainsi que la vérification
lors de l’authentification.
— TracerServiceImpl : Cette classe nous offre la possibilité de tracer le code d’une application
cible après que nous lui attachons le java agent.
— Agent : Cette classe est responsable à l’activation de l’agent java pour effectuer
l’instrumentation necessaire.
45
Chapitre 4. Architecture et conception du système
46
Chapitre 4. Architecture et conception du système
— SystemUser : Cette classe de stéréotype « entity » encapsule les données relatives à l’utilisateur
de l’application. Chaque utilisateur a un rôle à savoir superviseur ou bien un configurateur.
— DBUser : Cette classe de stéréotype « entity » regroupe les informations relatives à l’utilisateur
de la base de données.
— MonitoringQueries :Cette classe de stéréotype « entity » contient des informations sur les
requêtes de supervision comme son id, son nom, description...
— Mbeanserver : Composé de plusieurs Mbean soit du JVM soit du serveur d’application JBoss.
— InformationThread : Cette classe de stéréotype « entity » encapsule les données relatives aux
threads actifs dans le jvm, comme le nom, l’identifiant, statut de thread et sa pile d’exécution.
— InformationVM : Permet d’encapsuler les données relatives à la machine virtuelle tel que
(bootclass, class path, arguments,..).
— Utilisateur : Cette classe de stéréotype « entity » regroupe les données relatives à l’utilisateur
tel que login, mot de passe, rôle (superviseur, configurateur).
47
Chapitre 4. Architecture et conception du système
— Statics‘_per_cursor : elle regroupe les données relatives aux statistiques pour chaque curseur.
— Execution_plan : Cette classe de stéréotype « entity » contient les données liées au plan
d’exécution de chaque requête.
48
Chapitre 4. Architecture et conception du système
49
Chapitre 4. Architecture et conception du système
Le diagramme de déploiement décrit la disposition physique des matériels qui composent le système
et la répartition des entités logiques identifiées dans la conception architecturale sur ces matériels.
Chaque machine est représentée par un nœud. [15]
Notre solution s’exécute dans un serveur web conteneur de servlet Tomcat. Les différentes couches, à
savoir la couche présentation, la couche serviceRest, la couche de logique métier et la couche d’accès
aux données s’exécutent dans le conteneur léger spring.
La base de données Oracle ainsi que le serveur des MBeans sont représentés chacun par un nœud.
Notre application communique avec l’application « Vermeg IPM and WM » via les sockets.
Le diagramme de déploiement de notre solution est représenté par la figure 4.9.
50
Chapitre 4. Architecture et conception du système
Le diagramme de séquence montre les échanges et les interactions entre les différents composants
de notre système M&T selon un point de vue temporel. Dans cette partie nous présentons les
diagrammes de séquence des cas d’utilisation «Suivie Dashboard JVM», «Suivie Dashboard Oracle»,
«OracleConfiguration» et «TracerDashboard».
Diagrammes de séquence pour la supervision de la JVM
La figure 4.14 présente le scénario de supervision de la mémoire de JVM
La figure 4.14 présente le scénario de supervision des threads actifs dans la JVM.
51
Chapitre 4. Architecture et conception du système
Figure 4.11: Diagramme de séquence pour la supervision des threads actifs dans la JVM
52
Chapitre 4. Architecture et conception du système
La figure 4.14 présente le scénario d’affichage des informations relatives a la machine virtuelle.
53
Chapitre 4. Architecture et conception du système
54
Chapitre 4. Architecture et conception du système
55
Chapitre 4. Architecture et conception du système
Lors de la phase de l’istrumentation, l’agent calcule le nombre de classes chargées dans la JVM.
Ensuite, il commence à parcourir ces classes une par une tout en injectant des instructions à travers
l’ASM sous forme byte code.
Ces injections de produisent lors de l’entrée et la sortie de chaque méthode avant son exécution et
permettent de fournir comme résultat le nom, le package, les attributs et leurs valeurs ainsi que la
valeur de retour d’une méthode. Ces résultats qui sont sous forme de bytecode seront par la suite
convertit à travers la classe « Base64 » puis la classe sera exécutée. Le résultat va etre envoyé vers
la parte frontend via les web services Rest pour être affichés à l’utilisateur.
56
Chapitre 4. Architecture et conception du système
Conclusion
Au cours de ce chapitre, nous avons mis en place la partie conception de l’application. Ainsi, nous
avons présenté l’architecture adoptée les outils et les Frameworks utilisées. Puis, nous avons montré
une vue statique du système pour, ensuite, analyser son comportement dynamique. Dans le chapitre
suivant, nous décrivons la partie réalisation et test de l’application.
57
Chapitre 5
Réalisation et test
Plan
1 Choix technologiques et tehniques . . . . . . . . . . . . . . . . . . . . . . 59
2 Technologie utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3 Architecture logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5 Tests de la solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Chapitre 5. Réalisation et test
Introduction
Après la phase conception du projet, nous présentons la phase de réalisation qui consiste à
implémenter la solution envisagée. A cet effet, nous présentons le cadre de réalisation de notre
solution, à savoir les environnements matériel et logiciel utilisés, puis nous montrons l’essentiel des
interfaces de notre solution à travers des captures d’écran selon un scénario bien déterminé.
Nous présentons dans cette section l’environnement matériel ainsi que logiciel utilisés pour le
développement de notre application.
Nous mentionnons les caractéristiques des ordinateurs sur lesquelles nous avons développé notre
application pour l’environnement matériel. L’application a été développée en premier temps sur un
ordinateur dont les caractéristiques sont :
— Mémoire 8 GO de RAM ;
— Mémoire 8 GO de RAM ;
Nous énumérons au cours de cette partie les différents outils et technologies employés tout au long
de la réalisation de notre projet. La figure 5.1 récapitule l’ensemble des logos de ces outils.
Outil de modélisation UML «Star Uml» Nous avons exploité pour la modélisation UML de
l’application l’outil Star Uml qui est un logicil open source permettant de gérer les diagrammes
spécifiés dans la norme UML 2.0. [16]
59
Chapitre 5. Réalisation et test
En ce qui concerne les technologies utilisées, nous avons opté à adopter des technologies de
programmation ainsi que celle pour le web.
• Java : C’est est un langage typé et orienté objet. Il est compilé et basé sur une architecture
logicielle très particulière nécessitant une machine virtuelle Java. Il utilise les notions usuelles de
la programmation orientée objet : la notion de classe, d’encapsulation, d’héritage, d’interface,
de virtualité, de généricité. Il est accompagné d’un ensemble énorme de bibliothèques standard
couvrant de très nombreux domaines, notamment des bibliothèques graphiques [19]. C’est un
langage qui présente d’excellentes propriétés de portabilité du code. Nous avons Utilisé le Java
Développement Kit JDK 8.
60
Chapitre 5. Réalisation et test
Comme le montre la figure 5.2, nous avons utilisé un ensemble de technologies durant le
développement de notre solution.
• HTML 5 : (Hyper Text Markup Language / langage hypertexte) est le langage dans lequel
sont écrites les pages du web. Un site web est constitué d’un ou plusieurs documents HTML,
appelées aussi pages. Pour se déplacer d’une page à l’autre dans nos modules on passe par
l’intermédiaire d’hyperliens [20].
• CSS 3 : Les CSS, Cascading Style Sheets (feuilles de styles en cascade), servent à mettre
en forme des Documents web, type page HTML ou XML. Par l’intermédiaire de propriétés
d’apparence (couleurs, bordures, polices, etc.) et de placement (largeur, hauteur, côte à côte,
dessus, dessous, etc.), le rendu d’une page web peut être intégralement modifié sans aucun
code Supplémentaire dans la page web [21].
• Java script : C’est un langage de programmation de scripts principalement utilisé pour les pages
web interactives comme les pages HTML. JavaScript est exécuté sur l’ordinateur de l’internaute
par le navigateur lui-même. C’est une extension du langage HTML qui est incluse dans le
code. Ce langage est un langage de programmation qui permet d’apporter des améliorations
au langage HTML en permettant d’exécuter des commandes [22].
• Bootstrap : C’est un framework destiné aux applications web. Développé par Twitter et
distribué sous licence Apache 2, c’est un outil à considérer lors du développement rapide
d’applications web. L’utilisation combinée du HTML, du CSS, et du JavaScript propose au
développeur des méthodes de développement très efficaces [23].
61
Chapitre 5. Réalisation et test
• Spring Boot est un nouveau Framework créé par l’équipe de chez Pivotal, conçu pour simplifier
le démarrage et le développement de nouvelles applications Spring. Le Framework propose une
approche dogmatique de la configuration, qui permet d’éviter aux développeurs de redéfinir la
même configuration à plusieurs endroits du code [24].
• AngularJS est un Framework JavaScript libre et open-source, développé par Google. Il est fondé
sur l’extension du langage HTML par de nouvelles balises (tags) et attributs pour aboutir à une
définition déclarative des pages web, par opposition à l’utilisation systématique de l’élément
div et à la définition des éléments de présentation en JavaScript. Le code HTML étendu
représente alors la partie « vue » du patron de conception MVC (Modèle-vue-contrôleur)
auquel AngularJS adhère, avec des modèles appelés « scopes » et des contrôleurs permettant de
définir des actions en code JavaScript impératif. AngularJS utilise une boucle de dirty-checking
(qui consiste à surveiller et à détecter des modifications sur un objet JavaScript) pour réaliser
un data-binding bidirectionnel permettant la synchronisation automatique des modèles et des
vues [25].
62
Chapitre 5. Réalisation et test
• Apache Maven est un outil pour la gestion et l’automatisation de production des projets
logiciels Java en général. Nous avons utilisé maven comme outil de construction de notre
projet et d’automatisation des tests de différents modules de l’application [26].
• Log4J est un projet open source distribué sous la licence Apache et maintenu par le groupe
Jakarta. Cette API permet aux développeurs d’utiliser et de paramétrer un système de gestion
de journaux (logs). Le logging permet de gérer des messages émis par une application durant
son exécution et de permettre leur exploitation immédiate ou à postériori [27].
Après avoir présenté les technologies utilisées pour implémenter notre solution, nous reprenons
l’architecture applicative de « Monitor and trace » en mettant en évidence le rôle de chaque
technologie dans l’architecture.
5.4 Réalisation
Dans cette partie, nous présentons à travers un enchaînement de captures d’écran, un scénario
d’exécution donnant un aperçu général sur les fonctionnalités de notre système. La figure 5.4 montre
la page d’authentification.
63
Chapitre 5. Réalisation et test
En choisissant le menu « Home» de notre application, le superviseur peut suivre l’état de système à
savoir les informations sur le système d’exploitation, la mémoire ainsi l’état de CPU. La figure 5.5
présente la page d’accueil de notre application après la phase d’authentification.
Supervision de la mémoire
Le superviseur peut suivre l’état de la mémoire tas et hors-tas de la JVM en temps réel, étant donné
que cet indicateur est lié à l’allocation dynamique de la mémoire de l’application qui est en cours
d’exécution au JVM.
64
Chapitre 5. Réalisation et test
Supervision de la VM
Le superviseur peut consulter la machine virtuelle et ses détails tel que son nom, les arguments
passés en paramètre, le "class boot" ainsi que le "class path" comme le montre la figure 5.8.
65
Chapitre 5. Réalisation et test
Supervision de la mémoire
Le superviseur peut suivre l’état de la mémoire tas et hors-tas du serveur d’application JBoss en
temps réel. La figure 5.9 présente la page de supervision de la mémoire.
66
Chapitre 5. Réalisation et test
Advanced Monitoring
En cliquant sur le menu «AdvancedMonitoring» de notre outil comme le montre la figure 5.12 ,
le superviseur doit se connecter en tant que "sysdba" s’il n’est pas encore connecté, sinon il peut
donner ou enlever les privilèges de l’utilisateur "User".
67
Chapitre 5. Réalisation et test
Il peut aussi exécuter les requêtes de monitoring depuis l’utilisateur "User" apres la phase de
connecxion à ce dernier. La figure 5.13 illustre cette page.
l’exécution d’une des requêtes de monitoring affiche le résultat comme l’illustre la figure 5.14.
68
Chapitre 5. Réalisation et test
Configuration
La figure 5.15 montre la page de configuration du module Oracle. Le superviseur peut ajouter une
requête, la supprimer ou bien la consulter.
Lorsque le superviseur choisit d’ajouter une requête, un pop-up sera apparu pour ajouter l’id, le
nom, la description, l’utilisateur ainsi que le script de la requête. La figure 5.16 illustre le processus
d’ajout d’une requête.
Apres l’appui sur le bouton « submit » lors de l’ajout d’une requête, cette dernière est ajoutée au
tableau spécifique.
69
Chapitre 5. Réalisation et test
La figure 5.18 illustre la page de traçage du code après le lancement de l’application cible à tracer
et après la configuration des packages à instrumenter.
Afin de réaliser nos tests, nous avons choisi de faire deux types de tests à savoir le test unitaire et le
test de performance.
70
Chapitre 5. Réalisation et test
Concernant les tests unitaires, il existe plusieurs solutions pour réaliser ces tests, nous avons opté
pour JUnit.
JUnit désigne un Framework de rédaction et d’exécution de tests unitaires. Son but principal est
d’offrir au développeur un environnement de développement simple, le plus familier possible, et ne
nécessitant qu’un travail minimal pour rédiger de nouveaux tests. L’idée principale de JUnit est de
représenter chaque test par un objet à part. Un test correspond souvent à une classe du programme.
Avant d’exécuter les méthodes et les fonctionnalités effectuées dans les différents modules de notre
application, un test unitaire est effectué pour chaqu’un d’entre eux.[28]
Nous présentons par la figure 5.19 la classe de test « TracerTest » qui s’occupe de tester les méthodes
du module de «Traçage du code». Cette approche a été appliquée à tous les autres modules.
Jprofiler est un outil de profilage Java sous licence commerciale. Il vise les applications Java
Enterprise Edition et Java SE. Nous avons opté le Jprofiler pour effectuer notre test de performance.
Etapes Afin de pouvoir connecter le Jprofiler à notre application, nous avons installer le Jprofiler et
le configurer en entrant l’url de notre solution comme le montre la figure 5.20
71
Chapitre 5. Réalisation et test
La figure 5.21 montre le taux total de la mémoire tas, son taux d’utilisation ainsi que l’espace libre
qu’elle comporte. Dans notre cas,notre application consomme presque la moitié de la taille totale de
la mémoire tas.
72
Chapitre 5. Réalisation et test
La figure 5.22 illustre la valeur du chagement du CPU au cours de l’exécution de notre application,
qui restera nulle apres une minute et quarante secondes du lanncement de cette dernière.
La figure 5.23 illustre la valeur du chagement des classes java de notre application dans le JVM.
La figure 5.24 illustre la performance du "Garbage Collector" GC qui etait dans les normes.
73
Chapitre 5. Réalisation et test
La figure 5.20 illustre la performance des threads utilisés dans notre application à savoir les threads
bloquées, en cours d’exécution et en attente.
Conclusion
Dans ce chapitre, nous nous sommes intéressés à la réalisation des fonctionnalités de notre solution.
Nous avons décelés cette réalisation à travers un ensemble d’interfaces accompagnées de description et
interprétation. Ainsi qu’un ensemble de tests unitaires sur les différents modules de notre Framework
de traçage et monitoring. Nous clôturons notre travail par une conclusion qui résume notre travail
et avise ses futures perspectives.
74
Conclusion générale
La supervision est un des moyens indispensables pour favoriser la croissance de rendement d’une
entreprise. En effet il n’est pas envisageable d’avoir une plateforme de production sans avoir une
image de l’état de santé de celle-ci. Il faut une console de supervision qui regroupe et synthétise
toutes les informations relatives au système et réalise le traçage du code afin de prévenir et anticiper
les pannes.
C’est dans ce cadre que s’inscrit ce projet de fin d’études au sein de la société Vermeg. Il consiste
à concevoir et implémenter un outil de supervision qui permet de monitorer la JVM, le serveur
d’application Jboss, le serveur de base de données Oracle, ainsi que tracer le code d’un programme
au moment de son exécution sans modification de son code source. Nous avons décomposé cet outil
en quatre modules : un module de supervision de la JVM, un module de supervision du serveur
d’application Jboss, un module de supervision du serveur de base données Oracle et un module de
traçage de code.
Pour atteindre cet objectif, nous avons commencé par l’étude préalable qui a permis de décrire et
de comprendre les principaux concepts autour desquels tourne notre projet ainsi que les différents
choix technologiques adoptés. Puis nous avons effectuer l’analyse des besoins. Ensuite, nous avons
entammé la phase d’architecture et conception du système tout en commençant par l’architecture
adoptée, pour aboutir par la suite à la conception, qui met l’accent sur l’aspect, dynamique et
statique du système. Enfin, nous avons abordé l’étape de réalisation au cours de laquelle nous avons
traduit notre modélisation conceptuelle en une implémentation physique moyennant les différentes
technologies et techniques aussi bien choisies que celles exigées par l’entreprise.
Ce projet nous a permis de renforcer nos connaissances liées aux technologies de web en utilisant
les différentes plateformes de developpement tel que Spring boot et angularJs. En plus, il nous a
permis de nous intégrer dans le monde professionnel et de mettre en pratique les connaissances
théoriques acquises tout au long de notre cursus universitaire en utilisant différentes technologies..
Néanmoins, nous tenons à présent à souligner quelques extensions intéressantes de notre Projet.
75
Conclusion générale
Grâce à son caractère extensible et sa modularité, notre outil pourra être amélioré en ajoutant un
autre module de supervision du serveur d’application tel que le WebSphere.Nous pouvons aussi
ajouter un module de notification qui assure l’envoie d’un message d’alerte au client lors d’un
dépassement des seuils. Ainsi réaliser une application mobile offrant au client une autre vue de
supervision.
76
Bibliographie
[1] Vermeg. Présentation de Vermeg. [consulté le 10 Mai 2016]. 2016. url : http://www.vermeg.
com.
[2] Soliam : Wealth and institutional asset management software. [consulté le 25 Mai 2016]. url :
http://www.bsb.com/bsb-solutions/soliam.
[3] Lothon Florent. Guide de démarrage Scrum. [consulté le 20 Mai 2016 ]. 2013. url : http:
//www.agiliste.fr/guide-de-demarrage-scrum/.
[5] scrumguides. Scrum. [consulté le 24 Mai 2016]. url : https : / / fr . scrumguides . org /
Scrum_(m%C3%A9thode.
[7] Axel Schmidt. A Xen Virtual Machine Monitor Plugin for Nagios. [consulté le 21 Avril 2016].
2007. url : https://www.novell.com/coolsolutions/feature/19490.html.
[8] Jean-François PILLOU. Introduction au SGBD Oracle. [consulté le 11 Avril 2016 ]. 2016.
url : http://www.commentcamarche.net/contents/702-oracle-introduction-au-sgbd-
oracle.
[9] Centreon. Pourquoi choisir Centreon. [consulté le 27 Mai 2016]. url : https : / / www .
centreon.com/fr/Centreon.
[10] Nagios. [consulté le 23 Avril 2016]. url : https : / / namur - jordan . shost . ca / nagios -
centreon-fan/.
[11] Administration des ressources avec JMX. [consulté le 10 Mai 2016 ]. url : http://skebir.
developpez.com/tutoriels/java/jmx/.
[12] Java Bytecode Instrumentation : An Introduction. [consulté le 15 Mai 2016]. 2015. url : http:
//www.correlsense.com/java-bytecode-instrumentation-an-introduction/.
[13] Erwan Alliaume. JAVA AGENT – INSTRUMENTEZ VOS CLASSES. [consulté le 27 Mai
2016]. url : http : / / blog . xebia . fr / 2008 / 05 / 02 / java - agent - instrumentez - vos -
classes/.
77
Bibliographie
[15] Tarak Chaari. Méthodes de conception de SI. [consulté le 30 Avril 2016 ]. url : http://www.
redcad.org/members/tarak.chaari/cours/cours_MCSI.pdf.
[18] Alexandre BOLE. Le serveur JBoss. [consulté le 21 Avril 2016]. url : http://www-igm.univ-
mlv.fr/~dr/XPOSE2003/alexandrebole/jboss_1.html.
[19] Buildbot Team Members. Buildbot 0.8.12 documentation. [consulté le 25 Mai 2016]. 2012.
url : http://docs.buildbot.net/current/.
[21] Eric A. Meyer et Bert Bos. Introduction to css3. [consulté le 25 Mai 2016]. 2001.
[22] Learn the fundamentals of javascript, the programming language of theweb. [consulté le 25 Mai
2016]. 2002. url : http://www.codecademy.com/en/tracks/javascript.
[24] Dan Woods. A la découverte des Micro-frameworks :Spring Boot. [consulté le 25 Avril 2016].
2014. url : https://www.infoq.com/fr/articles/microframeworks1-spring-boot.
[25] Web amp ; Tech Développeur AngularJS : le framework JavaScript de Google au crible. [consulté
le 30 Avril 2016]. url : http://www.sandhconsulting.com/index.php/actualites/113-
angularjs.
[26] Karim Litim. Gestion des versions dans maven : Snapshot. [consulté le 28 Avril 2016].
[27] Apache log4j api 2.3 api. [consulté le 27 Avril 2016]. url : https://logging.apache.org/
log4j/2.x/.
[28] Romain Guy. Conception de tests unitaires avec JUnit. [consulté le 14 Avril 2016]. 2006. url :
http://gfx.developpez.com/tutoriel/java/junit/.
78
PÌl
\¤ Ayrb TFdn¡ ¨ x¤Cd t ¤rK CAV ¨ znm m` r§rqt @¡ |r`§
ybWt A , JVM d}C y m§ ybW @yfn w¡ ¢n ¨sy¶r dh .Awl`m
Y hs§ ybWt @¡ .¢lyK
¤ ¨ r ybW ºAft ¤ Oracle AAyb dA A ,JBoss
Ar TrJ ¨rbm ºAW± Tylm ryb d
Résumé
Ce présent rapport fait état du travail effectué dans le cadre de projet de fin d’étude
du cycle d’ingénierie en Génie Logiciel et Systèmes d’Informations. Cette application
a pour finalité de faciliter le processus de résolution des bugs pour les développeurs
de la société Vermeg
Son objectif principal consiste à implémenter une solution combinant à la fois le
monitoring de la JVM, du serveur d’application JBOSS, de serveur de base de
données Oracle, et le traçage d’une application tierce lors de son exécution.
Abstract
This report outlines the work done as part of the final project of engineering degree
in Software Engineering and Information Systems. This application aims to facili-
tate the bug resolution process for developers of Vermeg company.
Its main purpose is to implement a solution that combines the monitoring of the
JVM, the JBOSS application server, the Oracle database server, and tracing of
third-party application execution at its runtime.
This application greatly facilitate the bug resolution process for developers of Ver-
meg company.
isi@isim.rnu.tn : ¨¤rtk¯ d§rb 71 706 698 :HAf 71 706 164 :Ah TA§C 2080 ¨¤CAb A§r w h 2
2 Abou Raihane Bayrouni 2080 l’Ariana Tél: 71 706 164 Fax: 71 706 698 Email: isi@isim.rnu.tn
Bibliographie
80