Application de Suivi et Choix Transporteur
Application de Suivi et Choix Transporteur
C’est dans ce cadre que s’inscrit notre projet de fin d’études qui consiste en la réalisation
d’une application de gestion du suivi des bons de livraison et aussi un outil de décision pour
le choix du transporteur.
En ce qui concerne le développement, nous avons utilisé l’architecture J2EE avec les
Framework JPA/Hibernate pour le mapping objet relationnel et Spring comme Framework
transversal.
6
Abstract
In order to offer their customers a good service of distribution and also maintain a high
competitive level in the market, SNTL Damco saw the optimization of the traffic flows as
necessary.
It is in this context that our graduation project falls. It basically consists of developing an
application that manages the tracking of delivery notes. It is also a decision tool for the
choice of the transporter.
For this project, we have adopted the development process of Y (2TUP) which encourages
teamwork and allows a better risk management. And for modeling this, we have based on
the UML language.
7
Liste des tableaux :
8
Liste des figures :
9
FIGURE 36 : INTERFACE AJOUTER CAMION ...................................................................................................................... 62
FIGURE 37 : INTERFACE CONSULTER CAMION ................................................................................................................... 62
FIGURE 38 : INTERFACE AJOUTER VILLE ........................................................................................................................... 63
FIGURE 39 : INTERFACE CONSULTER VILLE ....................................................................................................................... 63
10
Table des matières :
11
3.1. Modèle Vue Contrôleur 2 .......................................................................................................... 38
3.2. Conteneur léger ........................................................................................................................ 40
3.2.1. Inversion de contrôle........................................................................................................................... 40
3.2.2. Injection de dépendances ................................................................................................................... 40
3.3. Design pattern DAO .................................................................................................................. 41
3.4. Design pattern DTO .................................................................................................................. 42
3.5. Architecture logique ................................................................................................................. 43
3.5.1. Architecture logique générale ............................................................................................................. 43
3.5.2. Architecture applicative ...................................................................................................................... 44
1. OUTILS DE DEVELOPPEMENT...................................................................................................................... 52
1.1. Serveur d’application ................................................................................................................ 52
1.1.1. Serveur Apache Tomcat ...................................................................................................................... 52
1.1.2. Serveur MySQL .................................................................................................................................... 52
1.2. Framework de développement ................................................................................................. 52
1.2.1. La plateforme JEE ................................................................................................................................ 52
1.2.2. Spring Framework ............................................................................................................................... 53
1.2.3. Spring Data .......................................................................................................................................... 53
1.2.4. Spring Security ..................................................................................................................................... 54
1.2.5. Spring MVC .......................................................................................................................................... 54
1.2.6. Framework de persistance : Hibernate/JPA ........................................................................................ 54
1.2.7. JSR303 (Bean Validation) ..................................................................................................................... 55
1.3. Environnement de développement ........................................................................................... 55
1.3.1. IntelliJ IDEA .......................................................................................................................................... 55
1.3.2. Maven.................................................................................................................................................. 56
1.3.3. Git/Bitbucket ....................................................................................................................................... 56
2. REALISATION DE LA PLATE-FORME .............................................................................................................. 57
2.1. Structure du projet.................................................................................................................... 57
2.2. Optimisation des performances................................................................................................ 58
12
3. INTERFACES GRAPHIQUES.......................................................................................................................... 59
3.1. Formulaire d’authentification................................................................................................... 59
3.2. Le gestion des comptes ............................................................................................................. 60
3.3. Les types de camion : ................................................................................................................ 62
3.4. Les villes .................................................................................................................................... 63
ANNEXE .................................................................................................................................................... 67
13
Introduction générale :
De nos jours les nouvelles technologies web ont provoquées un changement profond
dans le mode de communication des organisations, elles facilitent la gestion et le partage
des données et améliorent la productivité au sein de l’entreprise.
Une application Web est un logiciel applicatif manipulable grâce à un navigateur Web,
placée sur un serveur et se manipule en actionnant des widgets à l'aide d'un navigateur
Web, via un réseau informatique (Internet, intranet, réseau local, etc.).
Notre travail consiste en la création et la mise en place d’une application web permettant
la gestion des voyages des camions et la gestion du cycle de vie d’un bon de livraison.
Le 1èr chapitre décrira le contexte général du projet qui comporte une bref présentation
de la société, la problématique et la solution proposée.
14
Le 3ème chapitre décrira l’analyse technique qui définira les besoins et les aspects
techniqueset la mise en place de l’architecture de l’application.
15
Chapitre 1 : Contexte général du projet
DAMCO possède 30 ans d’expérience dont 14 ans de présence au Maroc. Son chiffre
d’affaires tourne autour de 2 milliards de dollars. Il gère 1,1 million de m2 d’entrepôts de par
le monde. DAMCO est présent sur trois sites au Maroc et à partir de son bureau
casablancais, il gère ses filiales en Algérie et en Tunisie.
16
La Société nationale du transport et de la logistique (SNTL) et le groupe Maersk créent
une joint-venture
venture SNTL DamcoLogistics qui opère au centre logistique SNTL à
Mohammedia[Figure 2 : Centre logistique SNTL Mohammedia],
Mohammedia , ce centre est
stratégiquement situéà proximitédu portde Casablanca etles routes principales et gère
100.000 m2 d’entrepôts,
ôts, ainsi il offre des espacesde rangementadaptésaux besoins du
marché:
17
contribue à hauteur de 14% au chiffre d’affaires 2012.
2. Présentation du sujet
2.1. Problématique
L’activité principale
ncipale de la société SNTL Damco est le stockage de marchandise et sa
distribution vers les différentes villes du royaume à partir du centre logistique SNTL à
Mohammedia, parmi les clients (Donneur d’ordre) bénéficiant de ce service on cite FAGOR,
LG Electronics, PHILIPS Electronics, YAMAHA, NIKE …
Pour offrir à leurs clients un service de distribution de qualité et aussi maintenir un niveau
concurrentiel élevé dans le marché, les dirigeants
dirigeants de la SNTL Damco ont
on vu nécessaire
d’optimiser les flux de transport.
Après avoir effectué une étude du fonctionnement du service transport, les dirigeants ont
on
constaté :
18
La solution qui a été adopté pour résoudre ce problème est un outil de décision pour le
choix du transporteur sous EXCEL [Tableau 1 : Solution sous Excel].
Agadir 250,61 30 7518,3 3700 3 152 3918,3 4018,3 4366,3 4366,3 SNTLDAMCO
Beni Mellal 99,26 0 1900 1 900 1 432 0 0 0 0 DECISION
Casablanca 39,46 0 600 800 649 0 0 0 0 DECISION
El Jadida 69,81 0 1000 1 200 1 000 0 0 0 0 DECISION
Essaouira 129,56 0 2 700 2 221 0 0 0 0 DECISION
Fès 119,5 0 2300 2 300 0 0 0 0 DECISION
Inzegane 250,61 0 0 0 0 0 DECISION
Kenitra 100,85 0 1200 1 300 1 172 0 0 0 0 DECISION
Khouribga 120,37 0 1250 1 300 1 267 0 0 0 0 DECISION
Tableau 1 : Solution sous Excel
La solution proposée [Tableau 1 : Solution sous Excel] est destinée à l’entrepôt de FAGOR,
elle représente le prix/m3pour chaque ville et pour les camions de type 14 Tonnes. La SNTL
Damco fait appel à des prestataires (Transporteurs) en cas de non disponibilité des camions
de sa flotte qui sont CS et LORD, il faut noter que chaque prestataire à un prix par ville sans
tenir compte du prix/m3.
19
L’entrepôt de stockage FAGOR est géré par différents employés. Parmi ces employés on
distingue une personne qui gère les voyages des camions et une autre qui gère les
commandes et les bons de livraisons.
Le chargé des bons de livraison reçoit une commande (Bon de préparation) de la part de
FAGOR et calcule le volume global de la commande, ainsi le chargé des voyages saisi le
volume global dans le fichier EXCEL [Tableau 1 : Solution sous Excel], la décision prise est
effectuée selon le transporteur affichant un prix de revient maximal.
2.2. Solution
Vu le nombre important des voyages et des bons de livraison que gère les employées des
entrepôts et les nombreux problèmes des fichiers EXCEL(manque de contrôle et de
traçabilité, absence de fiabilité, les prix entre les donneurs d’ordre et les transporteurs sont
confidentiels.). Les dirigeants ont ainsi prévus une application d’aide à la décision pour le
choix du transporteur, et de la gestion des bons de livraison et de leur cycle de vie.
L’application à réaliser doit être portable, facile à maintenir, fiable et doit aussi offrir une
vaste possibilité de déploiement, alors on a choisi la plateforme Java EE pour que
l’application soit de qualité.
20
3. Conduite du projet
3.1. Processus de développement
Le processus de développement constitue un facteur déterminant dans la réussite d'un
projet, du fait qu'il orchestre ses différentes phases et trace les principaux traits de sa
conduite. Pour cela, le choix d'une méthode de développement doit être élaboré au
préalable afin d'obtenir un produit de qualité tout en respectant les délais et les exigences
fixés.
Pour ce faire, nous avons comparé 2 méthodes : RUP (Rational UnifedProcess) et 2TUP (2
TrackUnifiedProcess) qui sont des processus unifié itératif et incrémental. Cette comparaison
nous a permis d’éliminer la méthode RUP puisqu’elle est lourde, coûteuse à personnaliser et
destinée pour les projets mobilisant plus de 10 personnes.
Ensuite, nous avons opté pour la méthode 2TUP puisqu’elle couvre toutes les phases sans
être très exhaustive et lourde, et fait une large place à la technologie et convient à des
projets de taille quelconque.
Vu que nous ne disposions pas d’un cahier de charges précis et amplement détaillé, nous
avons senti que la méthode 2TUP est plus appropriée puisqu’elle traite les projets selon
deux axes différents : fonctionnel et technique, et donc nous permettra de répondre aux
changements et aux spécifications de l’entreprise.
De plus, la méthode 2TUP va augmenter le taux de succès du projet car elle permet
d’anticiper et de limiter les risques.
3.2. Planification
Conformément au processus de développementadopté, nous avons pu déterminer les
différentes étapes du projet [Tableau 2 : Planification du projet].
21
Étape Titre Description de l'étape Durée
Étape 1 Expression du besoin Compréhension et l'évaluation du cadre 2 semaines
duprojet
Étape 2 Analyse Analyse fonctionnelle et technique 3 semaines
22
Chapitre 2 : Analyse Fonctionnelle
• Capture des besoins fonctionnels : cette phase a pour objectif de définir la frontière
fonctionnelle entre le système et son environnement.
• Analyse : consiste à étudier précisément les spécifications fonctionnellesde manière à
obtenir une idée de ce que va réaliser le systèmeen terme de logique métier [2].
• La capture des besoins techniques: Cette étape recense toutes les contraintes sur les
choix technologiques pour la conception du système. Les outils et le matériel
sélectionnés ainsi que la prise en compte des contraintes d'intégration avec l'existant
(pré requis d'architecture technique).
• La conception générique: Définit les composants nécessaires à la construction de
l'architecture technique. Cette conception est complètement indépendante des
23
aspects fonctionnels. Elle permet de générer le modèle de conception technique qui
définit les Frameworks [2].
24
• Le Codage : Permet d'effectuer la production des composants et les tests des unités
de code au fur et à mesure de leur réalisation.
• La recette : Consiste à valider les fonctionnalités du système développé [2].
Acteurs Description
Utilisateur aura accès, après authentification, à la gestion des voyages et des bons
de livraison.
Administrateur peut, en plus des droits de l’utilisateur, gérer les camions, les
destinations, les villes, les transporteurs, les donneurs d’ordres.
Super-Administrateur peut, en plus des droits de l’administrateur, gérer les comptes et les
permissions, et a le droit de supprimer chaque entité du système.
• Créer un voyage
• Afficher la décision selon le calcule automatique du coût du voyage
• Ajouter les bons de préparation
25
• Ajouter les bons de livraison appartenant au voyage
• Consulter des voyages
26
Module Bon de livraison
Ce module doit permettre la gestion et le suivi des bons de livraison. L’utilisateur doit
pouvoir :
De plus l’application doit non seulement présenter une interface agréable et facile à
utiliser mais aussi effectuer un nombre minimal de requêtes au près des serveurs sans
oublier les facteurs de stabilité et de rapidité d’exécution.
27
3. Analyse des spécifications fonctionnelles
3.1. Diagrammes de cas d'utilisation
Les diagrammes de cas d'utilisation sont utilisés pour donner une vision globale du
comportement fonctionnel d’un système logiciel.
28
Le tableau [Tableau 4 : Authentification] représente plus en détail l’authentification des
utilisateurs du système.
Titre Authentification
Acteurs • Utilisateur
• Administrateur
• Super-Administrateur
Post-conditions Aucune
Tableau 4 : Authentification
3.1.1. Utilisateur
L’utilisateur a le droit de gérer les bons de livraison [Figure 8 : Diagramme des cas
d'utilisation gérer Bon Livraison] et les voyages des camions [Figure 9 : Diagramme des cas
d'utilisation gérer voyage].
29
3.1.1.1. Gestion des bons de livraison
uc Gérer Bon liv raison
Initialiser Bon
liv raison
«include»
«extend»
Aj outer Commentaire
«include»
Consulter Bon
liv raison
30
3.1.1.2. Gestion des voyages des camions
uc Gérer v oyage
Gérer voyage
Aj outer v oyage
«include»
«extend»
Aj outer BL
Authentification
«include»
Utilisateur Modifier v oyage
Consulter v oyage
Exceptions Le volume saisi est trop grand par rapport au volume des
camions.
31
3.1.2. Administrateur
L’administrateur a le droit de gérer les camions [Figure 10 : Diagramme des cas d'utilisation
gérer camion], les destinations [Figure 11 : Diagramme des cas d'utilisation gérer destination],
les transporteurs [Figure 12 : Diagramme des cas d'utilisation gérer transporteur], les donneurs
d’ordres [Figure 13 : Diagramme des cas d'utilisation gérer donneur d'ordre] et les villes
[Figure 14 : Diagramme des cas d'utilisation gérer ville].
uc Gérer camion
Créer camion
«include»
Consulter camion
«include» Authentification
«include»
32
uc Gérer destination
Créer destination
«include»
Consulter destination
Administrateur «include»
Authentification
(from Use Case View)
«include»
Modifier destination
uc Gérer transporteurs
Créer transporteur
«include»
Consulter
transporteurs
«include» Authentification
Administrateur
(from Use Case View)
«include»
Modifier transporteur
33
uc Les donneurs d’ordre
«include»
Authentification
Consulter donneur «include»
Administrateur d'ordre
«include»
Modifier donneur
d'ordre
uc Ville
Ajouter v ille
«include»
Modifier v ille
«include»
Authentification
Administrateur
(from Use Case View)
«include»
Consulter v ille
34
3.1.3. Super Administrateur
Le Super Administrateur a le droit de gérer les comptes, la sécurité, les permissions et la
suppression de chaque action du système [Figure 15 : Diagramme des cas d'utilisation des
différentes actions d’un super Administrateur].
uc S.admin
Configuration de
l'application
«include»
Gestion de sécurité
«include»
Supprimer v oyage
«include»
«include»
Authentification
Spprimer camion
«include»
«include»
«include»
Spprimer destination
«include»
Super administrateur
(from Use Case View)
«include»
Supprimer v ille
«include»
Spprimer
transporteur
Spprimer donneur
d'ordre
Supprimer Bon
liv raison
Figure 15 : Diagramme des cas d'utilisation des différentes actions d’un super Administrateur
35
Titre Créer un compte
36
Chapitre 3 : Analyse technique
• La gestion de la performance.
• La dépendance des plateformes techniques.
• Lacapacité de la maintenance.
• L'extensibilité et la fiabilité.
2. Architecture physique
Une architecture 3-tiers [Figure 16 : Architecture physique] est la solution adoptée dans
notre projet, elle est subdivisée en trois composants majeurs :
37
• Le composant serveur central qui se charge de la réalisation des traitements
logiques et métiers.
• Le serveur client qui héberge la couche présentation et les JavaBeans.
• Les différents clients qui accéderont à ce serveur.
Notre choix est justifié par plusieurs raisons : le fait que les utilisateurs accèdent à
l’application à distance à travers des requêtes « http ». De plus, le besoin d’assurer une
grande souplesse, une sécurité flexible, une centralisation des traitements, et une meilleure
performance, implique un partage des tâches entre les différents serveurs, c’est-à-dire que
les applications sont délocalisées au niveau du serveur, et chaque serveur est spécialisé dans
une tâche bien précise.
Composants Description
Serveur de base de Serveur qui contient la base de données, seul l'administrateur du système
données en a l'accès à l'aide d'un frontal.
Tableau 8 : Les composants serveurs du projet
38
3. Spécifications logicielles
Dans ce paragraphe, après une description de l'architecture physiqueconçue, nous allons
dévoiler la plate-forme applicative, en l'occurrence, nousallons dresser la suite logicielle et
l'ensemble des briques choisies pour le déploiement de l'application.
Dans notre projet, nous avons adopté un modèle de conception DesignPattern qui décrit
une meilleure pratique ou une solution prouvée qui permetde résoudre à toutes contraintes
les difficultés qui lui sont attachées, enmettant l'accent sur le contexte et sur les
conséquences et les impacts de la solution.
Le modèle représente les données et les règles métiers. C'est dans ce composant qu'on
effectue les traitements liés au cœur du métier. Les donnéespeuvent être liées à une base
de données, des EJBs ou des services Web. Ilest important de noter que les données sont
indépendantes de la présentation.En d'autres termes, le modèle ne réalise aucune mise en
forme, par ailleurs, ces données peuvent être affichées par plusieurs vues.
1
MVC2 ou model viewcontroller est un design pattern de la couche présentation
2
IOC ou Invertion of control est un nouveau concept de programmation permettant la séparation des couches
3
DTO ou Data Transfer Obejects est un design pattern qui permet de le transfert de données entres couches de
l'application
4
DAO ou Data AccesObjects est un design pattern qui permet de séparer les données et les traitements sur ces données
39
La vue correspond à l'IHM, elle présente les données et interagit avec l'utilisateur.Dans le
cadre de notre application, nous avons conçu des interfacesJSP, mais n'importe quel
composant graphique peut jouer ce rôle.
Le MVC très pratique, peut se révéler lourd à mettre en place. Cecià cause de la multitude
de contrôleurs à implémenter. Afin de simplifier laréalisation d'un tel modèle, une nouvelle
version a été introduite : le MVC 2.C'est exactement le même modèle de conception à la
différence qu'il n'y aplus qu'un seul contrôleur qui se charge de rediriger la requête vers le
bontraitement [3].
40
3.2. Conteneur léger
3.2.1. Inversion de contrôle
Le principe de l'inversion de contrôle est au moins aussi ancien que celuide la
programmation événementielle. Il s'agit d'un principe générique utilisépar de nombreux
frameworks apparus bien avant la notion de conteneur léger.L'inversion de contrôle est
aussi appelée principe Hollywooden référence à laphrase mythique « ne nous appelez pas,
nous vous appellerons ».
Les conteneurs légers proposent une version spécialisée de l'inversion de contrôle. Ils se
concentrent en fait sur le problème de la gestion des dépendancesentre objets et leur
instanciation, notamment dans le cadre d'une dissociationdes interfaces et des
implémentations [4].
41
Grâce à l'injection de dépendances, nous pourront transformer ce lien explicite en lien
implicite. Pour procéder à l'injectiondes dépendances, le conteneur léger initialise
directement les objets(à partir d'un référentiel), libérant ainsi l'application de cette charge.
Aulieu d'utiliser l'opérateur new, le conteneur léger injecte dans l'applicationles instances
dont elle a besoin, comme l'illustre [Figure 19 : Injection de dépendances]. Pour
effectuercette initialisation, le conteneur peut implémenter deux méthodes : l'injectionde
dépendances via le constructeur ou l'injection de dépendances via les modificateurs [4].
Un DAO est un objet threadsafe, c'est-à-dire qu'il est accessible en simultané par
plusieurs threads. À l'inverse d'un JavaBean, qui contient des données spécifiques de l'action
en cours, un DAO ne fait que du traitement. Ilpeut, par conséquent, être commun à plusieurs
42
actions parallèles. Pour cetteraison, les DAO peuvent être implémentés comme des
singletons, avec uneseule instance partagée par l'ensemble des objets de l'application [5].
Uses/Creates
Transfer Object
Obtains/Modifies
La solution consiste à créer un DTO qui contient toutes les données nécessaires à l'appel,
et modifier la signature de la méthode distante pour qu'elleaccepte le DTO en tant que
paramètre unique et pour qu'elle renvoie unparamètre DTO unique au client. La meilleure
solution est d'utiliser le modèle Assembler, dit aussi Data Transformer, qui crée des DTO à
partird'objets métier et vice versa.
-Attribut1 : int
- Attribut2 : int
+ CreateDTO () : void +Serialize () : void
+ UpdateDomainObject () : void +Deserialize () :void
43
3.5. Architecture logique
L'architecture logique adoptée est une architecture en couches suivant le modèle MVC2
décrit dans le paragraphe précédent. Dans la suite nous dresserons, en partant du général au
particulier, les composants des couches de cette architecture.
44
3.5.2. Architecture applicative
Dans notre approche, les couches communiquent entre elles à travers un modèle
d’échange, et chacune d'entre elle propose un ensemble de services rendus. Les services
d'une couche sont mis à disposition de la couche supérieure. On s'interdit par conséquent
qu'une couche invoque les services d'une couche plus basse que la couche immédiatement
inférieure ou plus haute que la couche immédiatement supérieure (chaque niveau ne
communique qu'avec ses voisins immédiats).
Moteur de persistance
Implémentations
Implémentations
Contrôleurs
Interfaces
Interfaces
Pages JSP
BDD
45
Chapitre 4 : Conception
1. Diagramme de classes
Le diagramme de classes montre la structure interne du système. Il permetde fournir une
représentation abstraite des objets du système, qui vontinteragir ensemble pour réaliser les
cas d'utilisation.
Classe Description
46
1.2. Module décision
Le diagramme [Figure 25 : Digramme de classe de la catégorie Décision] permet à
l’administrateur de gérer toutes les entités du module décision et aide l’utilisateur à prendre
une décision sur chaque voyage.
Classe Description
Ville Décrit les villes ou la livraison va être effectué (La ville de départ est
Mohammedia)
Donneurs_dordre Représente les clients aient leurs produits stocké dans les entrepôts
Voyage Représente les voyages effectués par la flotte interne ou les prestataires
Tableau 10 : Description de la catégorie Décision
47
48
1.3. Module Bon de livraison
Le diagramme [Figure 26 : Digramme de classe de la catégorie Bon de livraison] permet à
l’utilisateur de gérer les bons de livraison correspondant à chaque voyage.
Classe Description
49
1.4. Digramme de classe globale
Le diagramme [Figure 27 : Diagramme de classe globale] représente toutes les entités du
système. On a mis en place un fichier de configuration pour toutes les informations à valeur
fixe et ceux ayant une fréquence à modification faible.
2. Diagramme d’activité
2.1. Processus d’un bon de livraison
Le processus [Figure 28 : Processus d’ajout d'un bon de livraison] commence par la
création d’un nouveau bon de livraison ou l’utilisateur devra fournir les informations
suivantes :
50
Ensuite l’utilisateur devra choisir le transporteur du bon de livraison, à cette étape deux
chemins sont possible :
Tous les bons de livraison en instance seront validés après traitement du problème sauf
dans le cas de lare-livraison complète.
51
Figure 28 : Processus d’ajout d'un bon de livraison
• Volume.
• Type de camion.
• Ville.
• Destinations.
La liste des camions est actualisée de sorte à ce qu’elle ne contienne que les camions
pouvant contenir le volume saisi.
La liste des destinations est actualisée de sorte à ce qu’elle ne contienne que les
destinations de la ville choisi.
52
Au moment où l’utilisateur doit choisir le type de camion adéquat pour le voyage, deux
chemins sont possible :
Après l’affichage de la décision l’utilisateur devra saisi les codes des bons de préparation
et enregistrer le voyage. Les bons de livraisons seront ajoutés au voyage après leur
impression sous format papier.
53
Chapitre 5 : Mise en œuvre
1. Outils de développement
1.1. Serveur d’application
1.1.1. Serveur Apache Tomcat
Apache Tomcat est un conteneur libre de servlets Java 2 Enterprise Edition. Issu du projet
Jakarta, Tomcat est un projet principal de la fondation Apache Tomcat implémente les
spécifications des servlets et des JSP (JavaServer Pages)du Java CommunityProcess.
Il est paramétrable par des fichiers Xmlet de propriétés, et inclut des outils pour la
configuration et la gestion. Il comporte également un serveur Http [7].
54
L'architecture JEE repose sur des composants distincts, interchangeables et distribués, ce
qui permet :
Pour notre travail, Spring nous a permis de diminuer la quantité de code et d'assurer le
découplage des composants de l'application lors de l'utilisation de l'injection de dépendance
(IOC).
La notion centrale dans Spring-Data-JPA est la notion "Repository". Le repository est une
interface à écrire par le développeur oùil déclareles méthodes utiles d'accès aux données et
Spring-Data-JPA fournit les implémentations nécessaires.
55
1.2.4. Spring Security
Spring Security [5]propose un modèle de sécurité éprouvé, stable, performant, et répond
à l'ensemble des attentes : sécurisation des URL, des méthodes et des instances d'objets,
fourniture de nombreux filtres (par exemple, permet l'authentification par formulaire,
l'authentification automatique par cookie, etc…).
Pour des besoins de sécurité basiques, Spring Security propose des fonctionnalités faciles
à mettre en œuvre, grâce notamment à son schéma XML dédié. Pour des besoins plus
avancés, il est nécessaire d'appréhender des mécanismes plus avancés du framework.
Les principaux composants de Spring MVC peuvent être répartis en trois groupes, selon
leur fonction :
56
Hibernate est l'implémentation concrète du moteur de persistance. Outre le moteur lui-
même, il offre un certain nombre d'APIs de requêtage. JPA offre un niveau d'abstraction
supplémentaire en proposant un ensemble d'interfaces standard auxquelles les
implémentations d'Hibernate (et d'autres Framework de persistances) se conforment [11].
La JSR 303 définit un modèle de meta-données et une API pour valider les Beans Java.
Cette validation s’effectue en utilisant les annotations mais il est possible d’utiliser des
fichiers XML[12].
57
1.3.2. Maven
Maven est un outil de gestion de projet qui comprend un modèle objet pour définir un
projet, un ensemble de standards, un cycle de vie, et un système de gestion des
dépendances. Il embarque aussi la logique nécessaire à l'exécution d'actions pour des phases
bien définies de ce cycle de vie, par le biais de plugins. Les projets Maven, les dépendances,
les builds, les artefacts : tous sont des objets qu'il va falloir modéliser et décrire. Ces objets
sont décrits dans un fichier XML appelé Modèle Objet de Projet « POM ».
Le POM indique à Maven quel type de projet il va devoir traiter et comment il va devoir
s'adapter pour transformer les sources et produire le résultat attendu. Ainsi, comme le
fichier web.xml décrit, configure et personnalise une application web Java, c'est la présence
d'un fichier pom.xml qui définit un projet Maven. Il s'agit d'une déclaration décrivant un
projet Maven, c'est le « plan » abstrait que Maven doit comprendre et suivre pour construire
un projet [14].
1.3.3. Git/Bitbucket
Git est un logiciel de gestion de versions décentralisé. Il est conçu pour être efficace tant
avec les petits projets, que les plus importants. Git fonctionne de façon décentralisée, c'est-
à-dire que le développement ne se fait pas sur un serveur centralisé, mais chaque personne
peut développer sur son propre dépôt. Git facilite ensuite la fusion (merge) des différents
dépôts.
Le serveur utilisé dans le cadre du projet est Bitbucket. Ce dernier offre un service web
d'hébergement et de gestion de développement de logiciels, utilisant Git.
58
2. Réalisation de la plate-forme
2.1. Structure du projet
Afin d'améliorer la maintenabilité, l'évolutivité et la modularité du projet, nous avons
adopté une structure (Maven) organisée dans l'arborescence [Figure 30 : Diagramme de
packages].
entity
business type
validator
compte
destination
repo voyage
transporteur
…
com.sntldamco
compte impl
destination impl
service voyage
donneurOrdre
view controller
59
Le tableau [Tableau 12 : Description des packages du projet] décrit une liste non
exhaustive des packages qui constituent notre application :
Package Description
com.sntldamco.business Contient l’ensemble des classes métier
com.sntldamco.type Contient l'ensemble des constantes (Énumérations)
com.sntldamco.validator Contient l'ensemble des implémentations de validateurs
d'entités (JSR-303)
com.sntldamco.repo.compte Contient les interfaces d'administration pour l'accès
aux données (Spring Data)
com.sntldamco.repo.destination Contient les interfaces de ville et destination pour l'accès
aux données (Spring Data)
com.sntldamco.service.compte Contient l'ensemble des interfaces des services
d'administration
com.sntldamco.service.compte.impl Contient les implémentations des classes du service
d'administration
com.sntldamco.view.controller Contient les Contrôleurs (Srping MVC) que les vues de
l’application utilisent
Tableau 12 : Description des packages du projet
• Conceptuel : A ce niveau nous avons créé les indexes adéquats sur les champs des
tables. Nous avons choisi les types de données de façon à satisfaire les besoins du
système et optimiser l'espace de stockage.
• Applicatif :A ce niveau nous avons utilisé le mécanisme de la lecture différée qui
retarde la lecture des objets jusqu'au moment où l'application voudrais y accéder
par navigation de référence [15].
60
3. Interfaces graphiques
3.1. Formulaire d’authentification
Par mesure de sécurité, L’accès à l’application est protégé par un formulaire
d’authentification.
Comme nous l’avons mentionné dans les cas d’utilisation, l’application est accessible via
trois modes (Super-Administrateur, Administrateur, Utilisateur)
Pour se connecter, l’utilisateur doit donner son identifiant et son mot de passe. Si
lesinformations saisies sont correctes, le système affiche la page d’accueil permettant l’accès
auxfonctionnalités relatives au profil de l’utilisateur connecté. Dans le cas contraire un
messaged’erreur est affiché à l’utilisateur lui indiquant la cause de l’échec de
l’authentification.
61
3.2. Le gestion des comptes
Le menu que contient la page [Figure 33 : Interface créer compte], est le menu duSuper-Administrateur car lui seul peut gérer les comptes.
62
L’interface [Figure 34 : Interface erreur créer compte] représente quelques erreurs que le
Super-Administrateur peut commettrelors de l’ajout d’un compte.
63
3.3. Les types de camion :
L’interface [Figure 36 : Interface ajouter camion] représente l’ajout d’un type de camion.
Lors de la consultation des camions, l’Administrateur n’a pas le droit de supprimer un type
de camion.
64
3.4. Les villes
L’interface [Figure 38 : Interface ajouter ville] contient les champs à remplir pour créer
une nouvelle ville.
Lors de l’ajout d’une ville son état est toujours activé sauf si l’utilisateur veut la désactiver
au niveau de la consultation.
65
Conclusion générale :
Le service de transport de la SNTL Damcofaisait face à des problèmes de gestion des flux
de transport et avait comme solution un outil de décision EXCEL. Notre travail consiste en la
réalisation d’une application WEB qui permettra la gestion des voyages des camions et des
bons de livraison.
Après avoir défini les fonctionnalités du système, élaboré différents diagrammes d’UML
et réalisé une maquette du projet, nous nous sommes lancés au développement de
l’application, tout en procédant par des tests unitaires.
Nous nous sommes basés sur la plateforme Java EE et les Framework JPA/Hibernate pour
le mapping objet relationnel et Spring comme Framework transversal.
Notre travail s’étend sur une période de 6 mois, nous avons pu développer les modules
Administration et Décision et on a comme perspectives :
66
Bibliographie
|1| Pascal Roques, Franck Vallée.UML2 en action: de l'analyse des besoins à la conception,
4ème édition. Paris : Eyrolles, 2007.
|3| RETAILLE, Jean Philippe.Refactoring des applications Java/J2EE. Paris : Eyrolles, 2005.
|4| Dubois Julien, Retaillé Jean-Philippe, and Templier Thierry.Spring par la pratique.
Paris : Eyrolles, 2007.
|5| Cogoluègnes Arnaud, Templier Thierry, Dubois Julien, and Retaillé Jean-
Philippe.Spring par la pratique, 2ème edition edition. Paris : Eyrolles, 2009.
|6| Solomon, Fisher Tepper and Duskis.Spring Persistence, a running start. s.l. : Apress,
2009.
|9| SNYDER Bruce, VAN DE VELDE Thomas, DUPUIS Christian, LI Sing, HORTON Anne, and
BALANI Naveen.Beginning Spring Framework 2. s.l. : Manning, 2005.
67
|11| Loïc Frering, Baptiste Meurant. Tutoriel Hibernate/JPA - Spring2.5 - Tapestry5.
developpez.com. [En ligne] 16 décembre 2008. http://loic-
frering.developpez.com/tutoriels/java/hibernate-jpa-spring-tapestry/.
|12| Mseddi, Ahmed. JSR 303 (Bean Validation) : état des lieux. http://blog.octo.com. [En
ligne] 7 septembre 2011 . http://blog.octo.com/jsr-303-bean-validation-etat-des-
lieux/.
|15| R.J, LORIMER. Hibernate : Understanding lazy fetching. www.javalobby.org. [En ligne]
août 2005. www.javalobby.org/java/forums/t20533.html.
|16| J2EE - Java 2 Enterprise Edition. www.commentcamarche.net. [En ligne] mai 2013.
http://www.commentcamarche.net/contents/548-j2ee-java-2-enterprise-edition.
68
Annexe
69
Détail de charges fixes et variables camions 3.5T :
CAMION 3,5T
CHARGES MONTANT(DH)
SALAIRE NET 5600
CHARGES SOCIALES CNSS + AT 1585
ASSURANCE VEHICULE 14000
VIGNETTE 1175
AMORTISSEMENT 7000
VISITE TECHNIQUE 620
VIDANGE 31000,28
PRIME DE L’AID 1900
COUT DE TELEPHONE 250
PNEU 23495,46667
TOTAL CHARGES FIXES
• CARBURANT
• PEAGE
• DEPLACEMENT DE CHAUFFEUR
• REPARATION 33383,46667
TOTAL CHARGES VARIABLES
TOTAL
70
Tableau des prix par destinations pour les camions de type 3,5T :
Destination Consonmation Kilométrage Litre de Prix de Charge Frais de Péage Prix total
carburant carburant fixe déplacement destination(DH)
AGADIR 15% 976 146,4 1200,48 370,06 200 476 2246,54
AZILAL 15% 610 91,5 750,3 370,06 100 1220,36
BEN SLIMANE 15% 94 14,1 115,62 370,06 70 555,68
BENI MELLAL 15% 486 72,9 597,78 370,06 100 1067,84
BERRECHID 15% 118 17,7 145,14 370,06 70 70 655,2
BOULMANE 15% 642 96,3 789,66 370,06 100 1259,72
CASA 15% 100 15 123 370,06 30 523,06
CHEFCHAOUEN 15% 630 94,5 774,9 370,06 120 104 1368,96
EL JADIDA 15% 248 37,2 305,04 370,06 70 76 821,1
ERRACHIDIA 15% 1074 161,1 1321,02 370,06 240 1931,08
ESSAOUIRA 15% 856 128,4 1052,88 370,06 100 1522,94
FES 15% 544 81,6 669,12 370,06 100 202 1341,18
HOCEIMA 15% 1098 164,7 1350,54 370,06 240 262 2222,6
IFRANE 15% 542 81,3 666,66 370,06 100 162 1298,72
KALAA DE
SRAGHNA 15% 548 82,2 674,04 370,06 100 90 1234,1
KENIFRA 15% 598 89,7 735,54 370,06 100 1205,6
KENITRA 15% 232 34,8 285,36 370,06 80 102 837,42
KHEMISSAT 15% 310 46,5 381,3 370,06 80 122 953,36
KHOURIBGA 15% 282 42,3 346,86 370,06 100 70 886,92
71