Rerer
Rerer
Intitulé du Projet
Membres de jury
M. Ahmed RABHI
Mme. Khaoula AJBAL
Mme. Oumaima ZINE
Juillet 2025
Année Universitaire 2024-2025
3ème Année Cycle d’Ingénieur
I
I
Dédicaces
À mes très chers parents,
Je tiens à vous exprimer ma profonde gratitude pour le soutien constant que vous m'avez apporté
tout au long de ces années d'études. Votre amour, votre bienveillance et votre appui
inconditionnel ont été des piliers essentiels dans mon parcours, et je suis sincèrement
reconnaissant pour tout ce que vous avez fait.
Je souhaite également exprimer toute ma reconnaissance envers mes proches pour leurs
encouragements constants tout au long de mon cheminement. Votre présence et votre soutien
ont été des facteurs déterminants dans mes réussites.
À mes amis les plus chers, je tiens à exprimer toute ma gratitude et ma reconnaissance. Votre
amitié précieuse a rendu chaque moment de cette aventure mémorable et significatif.
À toute l'équipe de l'EMSI et GMD, qui m'ont offert l'opportunité d'acquérir une expérience
précieuse en conciliant théorie et pratique, je vous adresse un sincère merci.
Enfin, à tous ceux qui m'aiment et à tous ceux que j'aime, je dédie ce travail. Votre amour et
votre soutien inconditionnels sont une source d'inspiration et de motivation pour moi, et je suis
profondément reconnaissant d'avoir des personnes aussi merveilleuses dans ma vie.
EL ODDY ANOUAR
I
Remerciements
Au terme de ce travail, je tiens à exprimer mes profonds et sincères remerciements à Monsieur
Hicham SAIDI, l'encadrant de mon projet de fin d'études. Sa disponibilité, ses conseils
généreux et la qualité de son encadrement, tant sur le plan technique que moral, ont été d'une
valeur inestimable.
J'adresse également mes remerciements les plus sincères aux membres du jury pour avoir
accepté de juger mon travail. Leur engagement et leur évaluation seront précieux pour mon
développement académique et professionnel.
Enfin, je tiens à exprimer ma gratitude envers tous ceux et celles qui ont contribué, de près ou
de loin, à l'accomplissement de ce travail. Leurs efforts et leur soutien ont été d'une importance
capitale, et je leur adresse mes remerciements les plus chaleureux. Votre présence et votre aide
ont été essentielles dans la concrétisation de ce projet.
II
Résumé
Le projet de développement et de mise en œuvre de l'application ExpedPro vise à révolutionner
la gestion des commandes et des processus d'expédition. En remplaçant les méthodes
traditionnelles par une solution informatisée intégrée, cette application permet une gestion plus
efficace et optimisée de toute la chaîne logistique d'expédition.
ExpedPro offre des fonctionnalités avancées qui couvrent l'ensemble du processus d'expédition.
L'application gère intelligemment les états de livraison avec son système innovant de faux
camions, permettant une pré-organisation optimale des chargements. Elle assure également le
suivi complet des préparations de commandes, la traçabilité des expéditions, et propose un
tableau de bord intuitif avec un système de notifications en temps réel. La gestion des véhicules
et des quais est centralisée, facilitant ainsi la coordination de toutes les opérations logistiques.
L'absence d'un système unifié pour gérer efficacement les expéditions représentait un défi
majeur, entraînant des processus chronophages et des risques d'erreurs dans l'organisation des
chargements. Grâce à son intégration directe avec SAP via un middleware personnalisé,
ExpedPro automatise la récupération des commandes et centralise toutes les données de
livraison. Cette solution répond aux besoins spécifiques de l'entreprise en améliorant
considérablement l'efficacité, la précision et la fluidité des processus d'expédition.
III
Abstract
The development and implementation project of the ExpedPro application aims to revolutionize
order management and shipping processes. By replacing traditional methods with an integrated
computerized solution, this application enables more efficient and optimized management of
the entire shipping logistics chain.
ExpedPro offers advanced functionalities that cover the complete shipping process. The
application intelligently manages delivery statuses with its innovative dummy truck system,
allowing optimal pre-organization of loadings. It also ensures comprehensive tracking of order
preparations, shipment traceability, and provides an intuitive dashboard with real-time
notification system. Vehicle and dock management is centralized, facilitating coordination of
all logistics operations.
The absence of a unified system to efficiently manage shipments represented a major challenge,
leading to time-consuming processes and risks of errors in loading organization. Thanks to its
direct integration with SAP through a custom middleware, ExpedPro automates order retrieval
and centralizes all delivery data. This solution addresses the company's specific needs by
significantly improving efficiency, accuracy, and fluidity of shipping processes.
IV
Table des matières
Dédicaces ................................................................................................................................................. I
Remerciements ........................................................................................................................................ II
Résumé .................................................................................................................................................. III
Abstract ................................................................................................................................................. IV
Table des matières .................................................................................................................................. V
Liste des figures.................................................................................................................................... VII
Liste des tableaux .................................................................................................................................. IX
Tableau de listings .................................................................................................................................. X
Liste des abréviations ............................................................................................................................ XI
Liste des Annexes................................................................................................................................. XII
Introduction Générale .............................................................................................................................. 1
Chapitre 1 : Contexte Général Du Projet ................................................................................................. 3
1.1 Introduction .......................................................................................................................................... 4
1.2 Présentation de l’organisme d’accueil.................................................................................................. 4
1.2.1 Fiche technique de site .................................................................................................................... 5
1.2.2 Historique ........................................................................................................................................ 6
1.2.3 Secteur d’activité ............................................................................................................................. 7
1.2.4 Présentation GMD Métal de Tanger................................................................................................ 9
1.3 Périmètre du projet ............................................................................................................................. 12
1.3.1 Présentation du projet .................................................................................................................... 12
1.3.2 Etude de l’existant ......................................................................................................................... 12
1.3.3 Problématique ............................................................................................................................... 13
1.3.4 Expression du besoin ..................................................................................................................... 14
1.3.5 Contraintes techniques .................................................................................................................. 14
1.3.6 Livrables attendus ......................................................................................................................... 15
1.4 Conclusion ......................................................................................................................................... 15
Chapitre 2 : Planning et conduite du Projet ........................................................................................... 16
2.1. Introduction ........................................................................................................................................ 17
2.2. Gestion de projet ................................................................................................................................ 17
2.2.1. Méthodologie du projet ................................................................................................................. 17
2.2.2. Diagramme de Gantt ..................................................................................................................... 21
2.3. Conclusion ......................................................................................................................................... 24
Chapitre 3 : Phase d’analyse et conception ........................................................................................... 25
3.1. Introduction ........................................................................................................................................ 26
3.2. Le formalisme UML .......................................................................................................................... 26
3.3. Le choix d’UML ................................................................................................................................ 27
V
3.4. Démarche conception ......................................................................................................................... 27
3.4.1. Analyse fonctionnelle .................................................................................................................... 27
3.4.2. Modélisation des Cas d'Utilisation ................................................................................................ 28
3.4.3. Analyse dynamique ....................................................................................................................... 31
3.4.4. Diagramme de classe ..................................................................................................................... 38
3.5. Benchmark des solutions existantes ................................................................................................... 39
3.6. Conclusion ......................................................................................................................................... 39
Chapitre 4 : Architecture Technique ..................................................................................................... 40
4.1. Introduction ........................................................................................................................................ 41
4.2. Langages et technologies utilisées ..................................................................................................... 41
4.3. Outils de développement, de modélisation et de communication ...................................................... 44
4.4. Méthode de développement ............................................................................................................... 45
4.4.1. La conception axée sur le domaine DDD ...................................................................................... 45
4.4.2. Développement piloté par des tests ............................................................................................... 46
4.5. Architecture Technique ...................................................................................................................... 46
4.5.1. Architecture Global ....................................................................................................................... 46
4.5.2. Architecture Front-end .................................................................................................................. 49
4.6. Conclusion : ....................................................................................................................................... 50
Chapitre 5 : Mise En Œuvre Du Projet .................................................................................................. 51
5.1 Introduction ........................................................................................................................................ 52
5.2 Back-End............................................................................................................................................ 52
5.2.1 Architecture du back-end .............................................................................................................. 53
5.2.2 La couche Entities & Dao .............................................................................................................. 54
5.2.3 La couche controller ...................................................................................................................... 56
5.3 . Front End ......................................................................................................................................... 58
5.3.1 Architecture du Front-end ............................................................................................................. 58
5.3.2 Développement des Composants ................................................................................................... 58
5.4 Architecture du Module d'Automatisation SAP GUI ......................................................................... 61
5.5 Les interfaces de l'application ............................................................................................................ 63
5.4.1 Page Login .................................................................................................................................... 63
5.4.2 Page de gestion .............................................................................................................................. 64
5.4.3 Page d’état de livraison ................................................................................................................. 65
5.4.4 Page de chargement de livraison ................................................................................................... 67
5.4.5 Page de de gestion des véhicules ................................................................................................... 68
Conclusion générale .............................................................................................................................. 70
Références Bibliographiques ................................................................................................................. 71
Annexes ................................................................................................................................................. 72
VI
Liste des figures
Figure 1 : Notre Empreinte Mondiale .......................................................................................................
Figure 2:GMD en chiffres clés ................................................................................................................ 5
Figure 3: exemple des pièces fonderie ......................................................................................................
Figure 4: exemple des pièces étanchéité ...................................................................................................
Figure 5: produits du pole emboutissage ...................................................................................................
Figure 6: GMD Métal de Tanger ............................................................................................................. 9
Figure 7: les 4 révolutions industrielles.....................................................................................................
Figure 8: les clients de GMD Métal ..........................................................................................................
Figure 9: Organigramme de GMD Métal de Tanger .................................................................................
Figure 10 : La Méthodologie Agile (Scrum) .............................................................................................
Figure 11 : Gantt prévisionnel ...............................................................................................................
Figure 12 : Gantt réel.................................................................................................................................
Figure 13 : Le cas d’utilisation d’administrateur ................................................................................
Figure 14:Le cas d’utilisation de cariste........................................................................................... 30
Figure 15: Le cas d’utilisation de supervision ................................................................................. 31
Figure 16: Diagramme De Séquence d'authentification ................................................................ 32
Figure 17: Diagramme d'Activités de l'authentification ........................................................................ 32
Figure 18: Diagramme d'État-Transitions de l'authentification............................................................. 33
Figure 19 : Diagramme de séquence gestion des Livraisons................................................................. 35
Figure 20 : Diagramme De Séquence Gestion De La Production ......................................................... 37
Figure 21 : Diagramme De Classe de l’application............................................................................... 38
Figure 22 : C# Logo ..................................................................................................................................
Figure 23 : SQL Server LOGO .................................................................................................................
Figure 24 : Rest Logo ................................................................................................................................
Figure 25 : .NET Framework Logo ...........................................................................................................
Figure 26 : Docker Logo ...........................................................................................................................
Figure 27 : GitHub Logo ...........................................................................................................................
Figure 28 : Git Logo ..................................................................................................................................
Figure 29 : Jwt Logo .................................................................................................................................
Figure 30 : React js LOGO........................................................................................................................
Figure 31 : JavaScript Logo ......................................................................................................................
Figure 32: Scss Logo ............................................................................................................................. 44
Figure 33 : Vs Project Logo ......................................................................................................................
Figure 34 : [Link] Logo ..........................................................................................................................
Figure 35 : Lucidchart Logo ......................................................................................................................
Figure 36 : DDD Architecture ............................................................................................................... 45
Figure 37 : TDD Logo ...............................................................................................................................
Figure 38 : Architecture Technique Global ...............................................................................................
Figure 39 : Architecture Front-End ....................................................................................................... 49
Figure 40: Architecture du back-end ..................................................................................................... 53
Figure 41: Couche Entities & Dao ........................................................................................................ 54
Figure 42: Couche Controller ................................................................................................................ 56
Figure 43: Test Backend........................................................................................................................ 57
Figure 44: Architecture du front-end..................................................................................................... 58
VII
Figure 45 : Architecture Fonctionnelle du Middleware ........................................................................ 62
Figure 46: Page login ............................................................................................................................ 63
Figure 47: Page de gestion de Faux camion .......................................................................................... 64
Figure 48: Page de gestion de client ...................................................................................................... 64
Figure 49: Page d’état de livraison ........................................................................................................ 65
Figure 50 : Page de détail état de livraison............................................................................................ 66
Figure 51: Page de chargement de livraison.......................................................................................... 67
Figure 52 : Page d’détails de livraison .................................................................................................. 67
Figure 53: Page de gestion des véhicules .............................................................................................. 68
VIII
Liste des tableaux
Tableau 1:Fiche technique de site ........................................................................................................... 5
Tableau 2:Historique du groupe GMD Métal ......................................................................................... 6
Tableau 3 : Comparaison Entre Les Méthodologies De Gestion Du Projet .......................................... 18
Tableau 4: Matrice des cas de tests fonctionnels réalisés sur l'application ExpedPro ......................... 57
IX
Tableau de listings
Listing 1: Client Entity .......................................................................................................................... 55
Listing 2 : Composant Client JS ............................................................................................................ 60
Listing 3: Exemple de Controller Delivres ............................................................................................ 73
Listing 4: Exemple de Controller de Middleware ................................................................................. 77
X
Liste des abréviations
ABRÉVIATIONS SIGNIFICATION
XI
Liste des Annexes
Annexe 1: Exemple d'implémentation de Controller ........................................................................... 72
Annexe 2: Implémentation de Middleware : ........................................................................................ 74
XII
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Introduction Générale
Le présent rapport décrit mon expérience de stage réalisée au sein de l'entreprise GMD, où j'ai
eu l'opportunité de travailler sur le développement et la mise en œuvre d'ExpedPro, une
application dédiée à la gestion des commandes dans le cadre des processus d'expédition.
L'objectif principal de ce projet était de créer un outil robuste et convivial permettant
d'automatiser et de centraliser la gestion de toute la chaîne logistique d'expédition au sein de
l'entreprise.
Le projet s'inscrit dans une démarche d'innovation technologique, utilisant des technologies
modernes telles que .NET Core pour la gestion du backend et React pour l'interface utilisateur.
En remplaçant les méthodes traditionnelles et manuelles de gestion des expéditions par une
solution numérique intégrée, nous visions à améliorer l'efficacité et la précision des processus
logistiques.
L'application que nous avons développée offre des fonctionnalités avancées, parmi lesquelles
la gestion des états de livraison avec le système innovant de faux camions, la gestion du
chargement des véhicules, le suivi des préparations et la traçabilité complète des expéditions.
De plus, elle comprend des modules spécifiques pour la gestion des quais, la validation des
chargements et l'amélioration de la gestion globale des véhicules.
Ce stage m'a offert une expérience pratique enrichissante dans la conception et le déploiement
d'une solution technologique complète pour la gestion des expéditions. J'ai pu mettre en
pratique mes compétences en développement logiciel et en gestion de projet, tout en travaillant
avec des technologies de pointe et en résolvant des défis logistiques complexes.
Le premier chapitre présente l'organisme d'accueil, ainsi que ses domaines d'expertise et ses
réalisations dans le secteur logistique. Il délimite le périmètre du projet en identifiant ses
objectifs, sa portée et les contraintes spécifiques aux processus d'expédition. L'étude de
l'existant et la problématique à résoudre, ainsi que les besoins exprimés par l'organisme en
matière de gestion logistique, orientent la suite du projet.
1
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Le dernier chapitre met l'accent sur la concrétisation du projet. Nous y présentons les différentes
étapes de mise en œuvre d'ExpedPro, en détaillant les efforts de développement, de test et de
déploiement du système dans l'environnement de production. Nous mettons en avant les défis
techniques et logistiques rencontrés et les solutions innovantes mises en place pour les
surmonter. Enfin, nous évaluons les résultats obtenus par rapport aux objectifs initialement
fixés, en soulignant les améliorations apportées aux processus d'expédition et les leçons
apprises tout au long de la réalisation de ce projet.
2
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Chapitre 1 : Contexte
Général Du Projet
3
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
1
Contexte Général Du Projet
Résumé :
1.1 Introduction
Pendant mon stage de fin d'études, j'ai eu l'opportunité de mettre en pratique mes compétences
en ingénierie au sein de l'entreprise. Ce stage m'a permis de comprendre l'utilité de mon
parcours universitaire et de prendre conscience de la valeur qu'un ingénieur peut apporter à une
entreprise. J'ai été ravi de réaliser ce stage où j'ai eu la chance de travailler sur un projet
passionnant et stimulant de développement et de mise en œuvre d'ExpedPro, une application
dédiée à la gestion des commandes et des processus d'expédition.
4
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
5
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
1.2.2 Historique
Le tableau 2 suivant présente l’historique des événements marquants du groupe GMD.
Tableau 2:Historique du groupe GMD Métal
1986 Création du groupe GMD par Monsieur Alain Martineau avec la reprise de la
société VERON spécialisée dans le Découpage- Emboutissage
6
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
• Pole Fonderie
7
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
principaux produits issus de GMD PLASTIC, il y a les panneaux de portes ainsi que les
garnitures intérieures du véhicule.
• Pôle Etanchéité
Le pôle SEALYNX est spécialisé dans le développement et fabrication de joints en caoutchouc
et en plastique (Figure 4). En 2020, le chiffre d’affaires est de 61 millions d’euros, réalisé par
3 sites de production, dans 3 pays. Avril 2018, l’extension de l’usine de Roumanie a été
inaugurée, permettant ainsi de doubler la surface du site. Le site de production du Maroc a été
transféré ennovembre 2018 dans une nouvelle usine localisée à Tanger Automotive City. Début
2019, un quatrième site de production localisé en Algérie s’ajoutera à la capacité de production
de Sealynx. Parmi les principaux produits livrés par le pôle SEALYNX, nous trouvons :
• Pôle Emboutissage
Le pôle GMD STAMPING ou Métal est spécialisé dans la fabrication des pièces en acier
obtenues par emboutissage et assemblage (Figure 5). GMD Métal livre des pièces destinées à
l’automobile,ces derniers sont présentés ci-dessous :
8
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
En effet, l’industrie 4.0 Appelée aussi “industrie du futur”, est un terme utilisé pour décrire la
quatrième révolution industrielle qui se produit dans l’industrie manufacturière (Figure 7). Elle
allie objets réels et technologies numériques pour aboutir à des produits encore plusperformants,
grâce à une activité optimisée. Pour ce faire, elle fait appel aux robots, à l’impression 3D, à la
réalité augmentée et, bien sûr,à l’intelligence artificielle. Le principe est donc de réduire la
consommation d’énergie ainsi que les coûts de la maind’œuvre, tout en augmentant l’efficacité
des processus industriels
9
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
➢ Clients
Le groupe mondial français GMD est parmi les leaders dans son domaine de la sous-
traitante de fabrication des composants et sous-ensembles de voitures, ses clients phares sont
représentés dans la figure ci-dessous (Figure 8) :
10
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Le travail est organisé autour des différents services au sien de GMD métal de Tanger :
Service Logistique : a pour vocation de gérer les flux, tout en optimisant les coûts logistiques,
ainsi de garantir la satisfaction des clients. Ses activités principales sont l'approvisionnement
en matières premières, gestion et optimisation des stocks et la livraison des produits aux clients
finaux.
Service des ressources humaines : Ce service assure la gestion et la disponibilité du personnel,
il met en place les outils de gestion de carrières, assure les tâches administratives, organise des
formations.
Service finance : Ce service assure les procédures financières et veille à la préservation du
patrimoine financier de l’entreprise, ceci en assurant une gestion efficace des ressources
financières disponibles, ainsi d’obtenir les capitaux nécessaires pour le développement de
l’activité de l’entreprise.
Service commerce : Ce service assure le lien entre l’entreprise et sa clientèle, en intervenant
avant et après la vente, tout en restant à la disposition des clients ainsi que de leurs remarques.
Parmi ses missions est d’assurer la prospection, ceci en ramenant des nouveaux clients à
l’entreprise, ainsi que de fidéliser ces derniers en leurs proposant des offres imbattables.
Service qualité : C’est le garant du système qualité de l’entreprise à travers l’implantation d’un
système qualité fiable qui répond aux exigences des clients afin d’atteindre le niveau de qualité
escompté sur le plan du processus et des produits.
Service méthodes : est l’interface entre la ligne de production et le bureau d’études. Il est
chargé de l’industrialisation des produits, c’est-à-dire de concevoir et de fournir les outils
nécessaires à la production.
Service bureau d’études : Ce service veille à assurer la conformité des produits, ceci en
réalisant les plans 2D des pièces ainsi qu’ils établissent les plans de surveillance et les plans
d’actions.
Service production : Sa principale mission est la réalisation des programmes de production,
11
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
tout en assurant une bonne qualité du produit en respectant les délais fixés au préalable et en
optimisant les performances.
Service maintenance : Le service maintenance permet de maintenir ou rétablir les divers
équipements du parc matériel, afin d’assurer le fonctionnement des machines. Il assure la
maintenance préventive et curative de tous les équipements.
Service outillage : assure la préparation, le maintien ainsi que la disponibilité des divers outils
nécessaires à la production, les opérations effectuées dans l’atelier sont de nature préconception
des éléments dans l’outil.
1.3 Périmètre du projet
1.3.1 Présentation du projet
Le projet vise à développer et mettre en œuvre ExpedPro, une application dédiée à la gestion
des commandes dans le cadre des processus d'expédition. Cette solution informatisée
remplacera les méthodes traditionnelles de gestion logistique, permettant une centralisation et
une automatisation complète des opérations d'expédition. Elle intégrera des fonctionnalités
avancées telles que le système innovant de faux camions, la gestion intelligente des
chargements et la traçabilité en temps réel, améliorant ainsi considérablement l'efficacité et la
précision des processus logistiques.
12
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
L'entreprise fait actuellement face à des limitations importantes dans la gestion de ses processus
d'expédition et de ses commandes. Les méthodes manuelles basées sur des fichiers Excel et
papiers sont sources d'erreurs de chargement, de perte de traçabilité et rendent difficile l'accès
aux informations critiques sur l'état des livraisons. L'absence d'automatisation entraîne une
perte de temps considérable lors de l'organisation des chargements et compromet la réactivité
face aux demandes clients.
Cette problématique se traduit par des processus logistiques inefficaces, une augmentation des
risques d'erreurs dans les expéditions et une difficulté à suivre en temps réel l'avancement des
livraisons. Il est donc crucial de mettre en place ExpedPro, une solution informatisée répondant
aux besoins spécifiques de gestion des expéditions, tout en améliorant l'efficacité
opérationnelle, la précision des chargements et l'accessibilité des données logistique.
13
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
d Gestion quais
• Organiser l'occupation des quais de chargement/déchargement.
• Planifier les créneaux horaires pour optimiser les flux.
• Eviter les conflits et les temps d’attente.
14
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
• Sécurité des données : L'application doit mettre en place des mesures de sécurité
robustes pour protéger les données sensibles des commandes, des livraisons et des
informations clients.
• Scalabilité : Il est crucial de concevoir l'application pour qu'elle puisse s'adapter à
l'augmentation du volume des commandes et à la croissance future des opérations
d'expédition.
• Intégration SAP : L'application doit assurer une intégration transparente avec le
système SAP existant via le middleware développé, garantissant une synchronisation
fiable des données de commandes.
• Convivialité de l'interface utilisateur : L'application doit offrir une interface intuitive
adaptée aux différents profils (administrateurs, superviseurs, caristes) pour faciliter
les opérations logistiques quotidiennes.
• Performances en temps réel : L'application doit être conçue pour offrir des
performances élevées et des temps de réponse rapides, particulièrement critiques lors
des pics d'activité d'expédition et pour le suivi en temps réel des commandes.
15
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Chapitre 2 : Planning
et conduite du Projet
16
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
2.1. Introduction
La gestion et la planification du projet ExpedPro constituent une étape primordiale pour la
réalisation et le succès de cette solution logistique, tout en respectant les délais de
développement et de déploiement dans l'environnement opérationnel. L'entreprise, en tant
qu'organisation agile, excelle dans l'adaptation rapide aux changements imprévus des processus
d'expédition, dans la maîtrise complète des flux logistiques et, en fin de compte, dans
l'amélioration de la satisfaction client grâce à des livraisons plus efficaces et fiables.
17
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
18
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
• Le principe :
Selon Claude Aubry, auteur du plus célèbre guide sur Scrum, une pratique est « une approche
concrète et éprouvée qui permet de résoudre un ou plusieurs problèmes courants ou d’améliorer
la façon de travailler lors d’un développement. [...] La notion de pratique prend toute son
importance avec l’utilisation des méthodes agiles. À côté des valeurs et des principes qui sont
universels, les pratiques sont le reflet de la mise en œuvre sur le terrain ». Le principe de base
de la méthodologie Scrum est le suivant :
• Dégager dans un premier lieu le maximum des fonctionnalités à réaliser pour former le
backlog du produit.
• En second lieu, définir les priorités des fonctionnalités et choisir lesquelles seront
réalisé dans chaque itération
19
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Product Owner : Dans la majorité des projets, le responsable produit (Product Owner) est le
responsable de l’équipe projet client. C’est lui qui va définir et prioriser la liste des
fonctionnalités du produit et choisir la date et le contenu de chaque sprint sur la base des valeurs
(charges) qui lui sont communiquées par l’équipe.
Scrum master : Véritable facilitateur sur le projet, il veille à ce que chacun puisse travailler au
maximum de ses capacités en éliminant les obstacles et en protégeant l’équipe des perturbations
extérieures.
• Sprint :
Le sprint agile représente le cœur de la méthode Scrum. Cette qualification lui correspond plutôt
bien, puisque tous les développements incrémentaux menant petit à petit au produit final du
projet sont réalisés au sein des sprints. Un périmètre de développement est défini au début d’un
sprint et doit être entièrement réalisé lorsqu’il se termine. Chaque sprint doit apporter des
fonctionnalités supplémentaires à l’application en cours de développement qui doivent être
livrées lorsqu’il se termine.
20
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
• Les cérémonies :
Le diagramme de Gantt, largement utilisé en gestion du projet, est un outil extrêmement efficace
pour représenter visuellement l’état d’avancement des activités qui composent un projet. Il offre
une vue d’ensemble en un coup d’œil, permettant de :
21
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
22
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
L'analyse comparative entre le planning prévisionnel et le planning réel d'ExpedPro révèle une
gestion de projet globalement maîtrisée avec quelques ajustements nécessaires. Les phases
initiales du projet (étude préliminaire, cahier de charge, objectif du projet) ont été respectées
selon les délais initialement prévus, témoignant d'une bonne planification en amont.
23
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Cependant, des écarts significatifs apparaissent dans les phases de développement technique.
L'étude technique s'est prolongée jusqu'à la semaine 22 au lieu de la semaine 20 prévue,
entraînant un décalage des phases de développement [Link] et React. Cette extension
s'explique par la complexité inattendue de l'intégration SAP qui a nécessité des investigations
techniques approfondies.
Le middleware a également subi un retard, sa réalisation s'étendant jusqu'à la semaine 24 contre
la semaine 23 initialement planifiée. En revanche, les modules de gestion (base de données,
faux camion & client, livraisons, véhicules, voiture) ont conservé leur planning d'origine,
démontrant l'efficacité de la méthodologie adoptée pour ces composants.
La phase de réalisation des interfaces Front-End présente un léger retard mais reste dans des
proportions acceptables. Finalement, la rédaction du rapport a été maintenue selon le planning
initial, permettant de respecter l'échéance finale du projet malgré les ajustements techniques
intermédiaires.
2.3. Conclusion
En conclusion, le deuxième chapitre met en évidence l'importance cruciale de la planification
et de la gestion du projet pour assurer son succès. La méthodologie de travail, l'utilisation de
Jira Software pour la collaboration en équipe et le Diagramme de Gantt pour le suivi des jalons
clés ont été expliqués en détail. La planification par sprint a également été présentée comme
une approche progressive et itérative pour atteindre les objectifs spécifiques du projet. Ces
éléments fournissent une base solide pour la mise en œuvre réussie des étapes à venir, en
garantissant une avancée cohérente et maîtrisée du projet tout en respectant les délais fixés.
24
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Chapitre 3 : Phase
d’analyse et
conception
25
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
3
Phase d’analyse et conception
Résumé :
Le troisième chapitre est dédié à la phase d'analyse et de conception de mon projet, un processus
fondamental pour assurer la création d'une solution cohérente et efficace. Je présenterai le choix
du formalisme UML pour représenter le système, mettant en évidence les avantages qu'il offre
pour modéliser et comprendre les différentes interactions du projet. Ce chapitre abordera
également la démarche de conception que j'ai mise en œuvre, en détaillant l'analyse
fonctionnelle réalisée pour identifier les besoins métier spécifiques. J'inclurai la description
textuelle des cas d'utilisation et l'analyse dynamique pour une vision exhaustive des interactions
utilisateur. De plus, j’expliquerai comment le diagramme de classe a été utilisé pour établir une
architecture robuste et évolutive du système à développer.
3.1. Introduction
Dans ce chapitre, je vais aborder l'analyse et la conception du système. Je vais commencer par
une analyse des besoins et des exigences pour comprendre les fonctionnalités attendues du
système. Ensuite, je vais présenter la conception du système en utilisant des diagrammes UML
pour modéliser les différents aspects du système. Cette étape est cruciale pour garantir que le
système réponde aux besoins et aux exigences identifiées lors de l'analyse.
3.2. Le formalisme UML
UML (Unified Modeling Language), que l'on peut traduire par "langage de modélisation
unifié", est une notation permettant la modélisation d'un problème. Ce langage est né de la
fusion de plusieurs méthodes existantes auparavant et est devenu la référence en termes de
modélisation orientée objet. Entre 1990 et 2000, de nombreux analystes ont développé des
approches orientées objet, ce qui a conduit à l'existence de plus de 50 méthodes objet en 1994.
Cependant, seules trois méthodes ont véritablement émergé. [1]
À partir de 1994, Rumbaugh et Booch (rejoints en 1995 par Jacobson) ont uni leurs efforts pour
développer une méthode unifiée incorporant les avantages de chacune des méthodes
précédentes. Cette méthode unifiée, à partir de sa version 1.0, est devenue UML, une notation
universelle pour la modélisation orientée objet. UML 1.0 a été soumise à l'OMG (Object
26
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Management Group) en janvier 1997, mais elle n'a été acceptée qu'en novembre 1997 dans sa
version 1.1, à partir de laquelle UML est devenu une norme internationale.
Cette méthode représente un moyen de spécifier, représenter et construire les composantes d'un
système informatique. En effet, la notation unifiée définit neuf diagrammes pour représenter les
différents points de vue de la modélisation. Ces diagrammes permettent de visualiser et de
manipuler les éléments de modélisation. Les diagrammes définis par UML sont les suivants :
Ce choix peut être justifié par plusieurs raisons. La notation UML facilite la compréhension et
la communication d'une modélisation orientée objet. Elle fournit des outils visuels pour
représenter les différents aspects d'un système de manière claire et cohérente.
Pendant mon étude du système, j'ai utilisé trois diagrammes UML : le diagramme des cas
d'utilisation, les diagrammes de séquences et le diagramme de classes. Ces diagrammes m'ont
permis de modéliser les fonctionnalités, les interactions, les comportements et la structure du
système de manière précise et structurée.
Le manque d'un système interne efficace pour gérer les processus d'expédition et les
commandes constitue un défi majeur pour l'entreprise. Les méthodes manuelles basées sur des
fichiers Excel entraînent des limitations importantes, des erreurs de chargement potentielles et
une perte de temps considérable dans l'organisation des expéditions. Afin de remédier à ces
problèmes, il est essentiel de mettre en place ExpedPro, un système intégré de gestion des
expéditions avec son middleware d'intégration SAP.
27
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Utilisateur Rôle
[Link]. Administrateur
Dans ce diagramme de cas d'utilisation présente les fonctionnalités principales accessibles à
l'administrateur dans le module d'administration d'ExpedPro. L'administrateur, en tant qu'acteur
central du système, dispose d'un accès complet à sept fonctionnalités essentielles pour la gestion
globale des opérations d'expédition.
L'administrateur peut gérer les utilisateurs du système, leur attribuant les différents profils
(superviseur, cariste) et contrôlant leurs accès. Il a également la possibilité de consulter les
statistiques détaillées des expéditions pour analyser les performances logistiques et identifier
les axes d'amélioration. La gestion des notifications lui permet de configurer les alertes
automatiques et de suivre les communications du système.
Le module offre aussi des fonctionnalités spécifiques à la logistique avec la gestion des
véhicules, permettant de maintenir à jour la flotte et de planifier les rotations. L'administrateur
peut superviser l'état global du système ExpedPro, s'assurant de son bon fonctionnement et de
sa disponibilité. La gestion des états de chargement lui donne un contrôle sur les différentes
phases du processus d'expédition, depuis la préparation jusqu'au départ des camions.
28
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Le cariste commence par consulter la liste de préparation qui lui indique précisément quels
produits prélever et leurs emplacements dans l'entrepôt. Cette fonctionnalité lui permet
d'organiser efficacement son travail de collecte. Il peut ensuite scanner les articles pour assurer
la traçabilité et vérifier la conformité des produits prélevés par rapport aux commandes.
Une fois la préparation terminée, le cariste procède au chargement du véhicule, qu'il s'agisse
d'un faux camion pour l'organisation préalable ou d'un vrai camion pour l'expédition finale. Le
système lui permet de valider une checklist pour s'assurer que toutes les étapes de préparation
et de chargement ont été respectées selon les procédures établies.
29
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Cette interface simplifiée et focalisée sur les tâches opérationnelles permet au cariste de
travailler efficacement tout en contribuant à la traçabilité et à la qualité du processus
d'expédition global.
[Link]. Superviseur
Le superviseur, acteur central de la coordination logistique, dispose de six fonctionnalités clés
pour orchestrer efficacement les opérations d'expédition.
Le superviseur peut créer des livraisons en organisant les commandes reçues via l'intégration
SAP et en définissant les paramètres d'expédition. Il a ensuite la possibilité d'attribuer un cariste
à chaque livraison, optimisant ainsi la répartition des tâches selon les compétences et la
disponibilité du personnel.
Une fonctionnalité essentielle permet au superviseur de suivre l'avancement des livraisons en
temps réel, lui offrant une vue d'ensemble sur l'état de chaque expédition et lui permettant
d'identifier rapidement les éventuels retards ou problèmes. Il peut également consulter les listes
de préparation pour vérifier le contenu des commandes et s'assurer de leur conformité.
La gestion des faux camions constitue une fonctionnalité innovante du système, permettant au
superviseur d'organiser virtuellement les chargements avant leur transfert vers les véhicules
réels, optimisant ainsi l'espace et l'ordre de chargement. Enfin, la planification des créneaux de
chargement lui permet de coordonner l'utilisation des quais et d'éviter les conflits d'occupation,
garantissant un flux logistique fluide et efficace.
Cette interface de superviseur offre au responsable logistique tous les outils nécessaires pour
coordonner, planifier et optimiser l'ensemble des opérations d'expédition de manière
centralisée.
30
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
[Link]. Authentification
31
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
b- Diagramme d'Activités
Le diagramme d'activité décrit le cheminement logique suivi par un utilisateur lorsqu'il tente de
se connecter à l'application. Le processus débute par l'affichage du formulaire de connexion,
Suivi de la saisie des identifiants (email et mot de passe) par l'utilisateur. Une fois ces
informations saisies, elles sont transmises au backend. Le système vérifie ensuite si l'adresse
email existe dans la base de données. Si l’email est introuvable, une erreur indiquant "Utilisateur
non trouvé" est affichée. Si l'email est reconnu, le système vérifie alors si le mot de passe est
correct. En cas de correspondance, une session ou un token est généré, permettant la redirection
32
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
de l'utilisateur vers le tableau de bord. Si le mot de passe est incorrect, un message d'erreur
spécifique est présenté à l'utilisateur. Ce diagramme illustre donc de manière claire les décisions
conditionnelles qui orientent le flux d’exécution du processus de connexion, et permet de
comprendre les différents scénarios possibles.
c- Diagramme d'État-Transitions
Ensuite, le superviseur assigne un cariste à cette livraison. Cette opération met à jour les
informations de la livraison pour y inclure la personne responsable de sa préparation. De son
côté, le cariste se connecte à l’aide de son propre espace, et une fois authentifié, il reçoit
33
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
également un jeton d’accès. Grâce à ce dernier, il peut consulter les livraisons qui lui sont
attribuées et accéder à la liste des articles à préparer.
Le cariste débute alors la phase de préparation en scannant chaque article un par un. À chaque
scan, le système vérifie l'article et confirme sa prise en compte. Ce processus se répète pour
chaque article jusqu’à ce que tous soient enregistrés comme préparés. Une fois cette étape
terminée, le cariste indique que tous les articles ont été chargés. Le système met à jour l’état
de ces articles en conséquence.
Enfin, le cariste valide la livraison après avoir vérifié la checklist finale. Le système enregistre
cette validation et marque la livraison comme complétée. Ce diagramme reflète l'organisation
rigoureuse et collaborative entre les acteurs humains (superviseur et cariste) et les composants
du système, assurant ainsi le bon déroulement de toutes les étapes de la gestion logistique.
34
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
35
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Le superviseur initie ensuite une mission de production. Cette action est transmise au système
qui enregistre la mission et insère une nouvelle livraison dans la base de données. Une fois
l’opération confirmée, un accusé de réception est retourné à l’interface, confirmant la création
de la mission.
En cas d’anomalie constatée, telle qu’un faux camion, le superviseur signale immédiatement
l’incident. Le système prend en charge l’enregistrement de cette anomalie spécifique dans la
base de données et notifie l’interface que l’alerte a bien été enregistrée.
Par la suite, le superviseur peut consulter le journal des anomalies. L’interface demande au
système de charger les anomalies enregistrées, ce dernier effectue une recherche dans la base
selon la date, puis transmet la liste des anomalies à afficher.
Ce diagramme met en évidence la traçabilité des actions critiques effectuées par le superviseur,
la communication fluide entre les différentes couches du système, et l’importance du
mécanisme de signalement d’anomalies pour garantir la fiabilité et la sécurité des opérations de
production.
36
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
37
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
38
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Le système intègre également une gestion des notifications, où un utilisateur peut recevoir des
alertes selon des raisons précises définies dans la classe NotificationReason. Ces notifications
sont enregistrées dans la classe NotificationRecipient, qui relie un utilisateur à un motif
donné. Les utilisateurs sont définis avec leurs informations d'identification et leurs droits
d’accès.
Enfin, une partie du diagramme est consacrée à la gestion des véhicules. Chaque véhicule est
associé à un état spécifique, permettant de suivre sa disponibilité ou son statut (actif, en
panne, etc.). Ce modèle de classes permet donc de structurer de manière claire et cohérente les
données nécessaires au fonctionnement du système, en assurant une bonne organisation des
livraisons, des utilisateurs, des anomalies et des ressources logistiques.
EXPED PRO se positionne donc comme une alternative plus agile, personnalisée et
économique, capable de s’interfacer directement avec les modules de production et les robots,
tout en répondant précisément aux attentes des opérateurs sur le terrain. Là où les grandes
plateformes imposent souvent une adaptation des processus à l’outil, EXPED PRO fait l’inverse
: il s’adapte au terrain, en s’alignant parfaitement avec les réalités opérationnelles de l’usine.
3.6. Conclusion
En conclusion, la phase d'analyse et de conception du projet a été abordée de manière
exhaustive. Le choix du formalisme UML a été justifié pour représenter le système de manière
claire et structurée. La démarche de conception a inclus une analyse fonctionnelle pour
identifier les besoins métier, la description textuelle des cas d'utilisation pour les interactions
utilisateur, une analyse dynamique pour comprendre le comportement du système, et le
diagramme de classe pour établir une architecture solide.
Ces éléments fournissent une base solide pour la suite du projet, guidant efficacement le
processus de développement en assurant la cohérence et l'efficacité de la solution à développer
pour GMD. La phase d'analyse et de conception est essentielle pour s'assurer que le projet
répondra aux besoins spécifiques de l'organisme d'accueil tout en respectant les objectifs définis
au préalable.
39
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Chapitre 4 : Architecture
Technique
40
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
4
Architecture Technique
Résumé :
Dans ce chapitre, j’explore en profondeur l’architecture technique du projet. J’y présente les
outils de développement, de modélisation et de communication utilisés pour faciliter la
conception. De plus, j’expose en détail les différentes architectures mises en place, telles que
l’architecture globale, l’architecture de gestion ExpedPro et l’architecture Front-end, adaptées
aux exigences spécifiques du projet. Ce chapitre met en lumière les choix stratégiques qui ont
permis de créer une structure solide et adaptée aux besoins du projet.
4.1. Introduction
Avant de modéliser l’application et l’écriture du code, il est à noter que le choix des techniques
de l’environnement du travail et des outils à utiliser a été fait via un benchmark avec les
responsables métiers ainsi que des études techniques afin de gagner en manière d’efficacité, de
maintenabilité, de rapidité et de performance. Dans ce chapitre, nous allons mettre en exergue
les architectures techniques et applicatives, les langages, les logiciels et les outils utilisés dans
notre projet.
4.2. Langages et technologies utilisées
4.2.1. C#
41
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
4.2.3. REST
Représentationnel State Transfer (REST) (figure 24) est un style architectural qui permet
d’établir des normes de communication entre des systèmes informatiques sur le Web, facilitant
ainsi les échanges entre ces systèmes. Dans ce style,
l’implémentation du client et l’implémentation du serveur
peuvent être réalisées indépendamment, sans qu’ils aient
besoin de se connaître mutuellement.
Figure 24 : Rest Logo
4.2.5. Docker
Docker (Figure 26) est une plateforme open-source qui permet de créer,
déployer et exécuter des applications isolées dans des conteneurs. Ces
conteneurs emballent l’application avec toutes ses dépendances,
assurant portabilité, flexibilité et une gestion optimisée des ressources
système.
Figure 26 : Docker Logo
42
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
4.2.6. Github
GitHub (Figure 27) est une plateforme collaborative basée sur Git,
permettant de centraliser la gestion du code source et le suivi des
modifications. Elle facilite le travail en équipe grâce aux branches, pull
requests et issues, et propose des outils intégrés pour l’intégration
continue et le déploiement. Sa popularité et son écosystème en font un
outil incontournable pour les développeurs.
Figure 27 : GitHub Logo
4.2.7. Git
Git (figure 28) est un système de contrôle de version décentralisé
conçu pour suivre les modifications apportées aux fichiers d'un
projet. Il permet aux développeurs de collaborer efficacement en
gérant différentes versions de leur code source. Git enregistre
l'historique des modifications, permettant de revenir à des versions
précédentes et de comparer les changements. Figure 28 : Git Logo
4.2.8. JWT
JWT (JSON Web Token) (figure 29) est un format de jeton
sécurisé et compact utilisé pour échanger des informations entre
un client et un serveur de manière sécurisée. Chaque JWT est
constitué de trois parties encodées en Base64 : l'en-tête, la
charge utile (ou payload), et la signature. [4]
Figure 29 : Jwt Logo
4.2.9. React js
[Link] (Figure 30) est une bibliothèque JavaScript développée
par Facebook, utilisée pour créer des interfaces utilisateur
dynamiques et modulaires. Basée sur une architecture de
composants et un DOM virtuel, elle offre de hautes
performances et une syntaxe déclarative avec JSX. Grâce à des Figure 30 : React js LOGO
outils comme Redux, les hooks et une large communauté,
React est très utilisé pour développer des applications web
interactives et évolutives..
4.2.10. JavaScript
JavaScript (Figure 31)est un langage de programmation interprété et
dynamique, utilisé à la fois côté client et serveur. Conçu pour rendre les
pages web interactives, il permet de créer des interfaces réactives, de gérer
les événements et de manipuler le DOM. Grâce à des environnements
comme [Link], il est devenu un langage polyvalent et essentiel dans le
développement web moderne.
Figure 31
32 : JavaScript Logo
43
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
4.2.11. SASS
Sass (Syntactically awesome stylesheets) (figure 32) est un langage
de préprocesseur qui génère du CSS. Il existe en deux syntaxes : la
syntaxe indentée (.sass) et la syntaxe SCSS (.scss), cette dernière
étant plus proche du CSS classique. Sass facilite l’écriture de styles
structurés et maintenables..
Visual Studio (Figure 33) est un IDE complet développé par Microsoft,
principalement utilisé pour le développement .NET. Il prend en charge
plusieurs langages comme C#, C++, et JavaScript, et offre des outils
avancés de productivité, de débogage, ainsi qu’une intégration native avec
Git et Azure DevOps.
Figure 34 : Vs Project Logo
4.3.2. [Link]
44
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
4.3.3. Lucidchart
Dans un micro-service Spring Boot basé sur le Domain-Driven Design (DDD), les couches sont
organisées de la manière suivante :
45
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Le Test-Driven Development (TDD) (figure 34) est une pratique de développement logiciel qui
consiste à écrire les tests unitaires avant même d'écrire le code de production. Le processus
TDD se déroule en trois étapes principales : écrire un test, exécuter le test (qui échoue
initialement) et écrire le code de production pour faire passer le test.
L'approche TDD encourage une réflexion approfondie sur les spécifications et les exigences du
logiciel avant de commencer à écrire le code. En écrivant d'abord les tests, les développeurs
peuvent se concentrer sur le comportement attendu du logiciel et définir les résultats attendus
dès le début du processus de développement.
L'approche TDD favorise également une meilleure conception logicielle, car elle encourage la
modularité, la réutilisabilité et la simplicité du code. En fin de compte, TDD permet d'obtenir
un code plus fiable, plus maintenable et plus évolutif.
46
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
des véhicules fictifs ou de test, et un service de gestion des livraisons qui supervise l'ensemble
du processus d'expédition depuis la préparation jusqu'à la livraison finale.
La base de données relationnelle SQL Server assure la persistance des données pour les
clients, les livraisons, les véhicules et les informations logistiques. La sécurité est gérée par
des JSON Web Tokens (JWT) pour l'authentification et l'autorisation, sécurisant les
communications entre le frontend et le backend. Le système envoie des notifications
asynchrones pour alerter les utilisateurs des événements importants comme les mises à jour de
statut des livraisons, les confirmations de chargement ou les changements dans les plannings
d'expédition.
La conteneurisation est gérée via Docker, avec un registre privé Docker pour stocker et gérer
les images des différents services, facilitant le déploiement et la gestion des applications dans
des environnements isolés et reproductibles. Le flux de travail commence avec l'utilisateur
interagissant avec l'interface web [Link]. Les demandes sont envoyées à l'API REST .NET,
qui distribue les requêtes aux différents services (gestion client, faux camions, livraisons).
Chaque service traite les requêtes et communique avec la base de données SQL Server pour
stocker ou récupérer les informations nécessaires. Les notifications sont envoyées de manière
asynchrone pour tenir les utilisateurs informés des mises à jour et événements critiques du
processus d'expédition. Les services sont conteneurisés et gérés via Docker, avec les images
stockées dans un registre privé Docker pour une gestion efficace des déploiements.
La figure 38 ci-dessous représente architecture globale de projet :
47
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
48
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
49
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
4.6. Conclusion :
En conclusion, l'architecture technique du projet a été étudiée en profondeur, mettant en avant
les choix stratégiques et les outils utilisés pour la conception. Les langages et technologies ont
été sélectionnés pour répondre aux besoins spécifiques du projet, tandis que les différentes
architectures mises en place, telles que l'architecture globale, l'architecture services et
l'architecture front-end, ont été adaptés pour assurer une structure solide et flexible. Ce chapitre
démontre l'attention portée aux détails techniques et la recherche d'une architecture bien pensée
pour garantir le succès du projet et répondre aux besoins de GMD.
50
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Chapitre 5 : Mise En
Œuvre Du Projet
51
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
5
Mise en œuvre du projet
Résumé :
Dans ce chapitre, je plonge au cœur de la mise en œuvre effective du projet. J'y aborde les
étapes concrètes, depuis l'initialisation jusqu'au déploiement final. J'explore les défis
rencontrés, les solutions adoptées et les leçons tirées de chaque phase. Je détaille également les
méthodologies et approches adoptées pour assurer une réalisation fluide, que ce soit en matière
de gestion de projet, d'intégration continue ou de tests. De plus, je mets en avant les
collaborations et interactions entre les différentes équipes, démontrant comment leur synergie
a été essentielle pour atteindre les objectifs du projet. Ce chapitre est une immersion dans le
parcours pratique et opérationnel, offrant une perspective transparente sur la transformation
d'une vision en une solution fonctionnelle.
5.1Introduction
La réalisation d'un projet, quel que soit son envergure, est un voyage qui requiert non seulement
une planification rigoureuse, mais également une exécution méthodique. La transition de la
théorie à la pratique est souvent semée d'embûches, et c'est dans l'art de la mise en œuvre que
réside la véritable maîtrise.
5.2 Back-End
52
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Comme illustré dans la Figure 40, l'architecture du back-end de l'application ExpedPro est
soigneusement structurée en plusieurs dossiers fonctionnels distincts. Chaque dossier joue un
rôle prédéfini, ce qui permet une organisation claire et une gestion efficace des différentes
fonctionnalités. Le dossier "Controllers" gère les interactions avec les utilisateurs et les requêtes
HTTP, tandis que les dossiers "Services" et "Models" traitent respectivement la logique métier
et la définition des structures de données. Le dossier "wwwroot" contient les ressources
statiques de l'application. Cette structure modulaire .NET facilite non seulement le
développement et la maintenance, mais aussi l'extensibilité de l'application ExpedPro à long
terme [5].
53
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
54
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
using System;
using [Link];
namespace [Link];
Cet exemple montre comment définir une entité Client en utilisant Entity Framework Core dans
.NET. L'entité représente la structure de la table Client dans la base de données SQL Server
avec ses propriétés essentielles (ClientId, ClientName, ClientLogo, CountryId) et ses relations
avec d'autres entités comme Country, Delivery et FakeTruck. Cette classe utilise les annotations
Entity Framework pour mapper les propriétés vers les colonnes de la base de données et définit
les relations de navigation virtuelles pour permettre le chargement paresseux des données
associées.
55
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Afin de garantir le bon fonctionnement de la solution ExpedPro, plusieurs tests ont été réalisés
sur les différents modules développés. Ces tests avaient pour objectif de vérifier la conformité
des fonctionnalités par rapport aux exigences initiales, d’évaluer la robustesse du système, et
de détecter d’éventuels bugs avant le déploiement. La matrice ci-dessous présente un
échantillon représentatif des cas de test effectués.
56
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Tableau 4: Matrice des cas de tests fonctionnels réalisés sur l'application ExpedPro
57
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Les endpoints GET permettent la consultation des données, notamment la récupération des
listes de préparation par avion (PreparationListPerPlane), des livraisons par conducteur
(DeliveriesPerDriver), des éléments de réconciliation (RecondItemList), et des informations
spécifiques aux conducteurs (driverInfo). L'endpoint paramétré AssignedItems/{UserId}
permet d'obtenir les éléments assignés à un utilisateur spécifique.
Cette API REST structure les fonctionnalités essentielles du processus de préparation des
expéditions, offrant une interface standardisée pour les opérations CRUD et les traitements
métier spécifiques au module de préparation d'ExpedPro..
La Figure 44 incluez un diagramme visuel pour montrer l'organisation globale de votre projet.
Cela peut inclure les composants principaux, les services, et la manière dont ils interagissent.
[7].
58
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Pour obtenir un aperçu détaillé de la structure des composants de l'application cet exemple vous
fournira une idée claire de l'exemple client JS [8].
• Composant Clients JS :
59
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Code :
return {
total: total,
params: response[1].[Link],
allData:fakeTrucks,
data: filteredData
}
} catch (error) {
return rejectWithValue([Link]);
}
}
);
const excludeArchivedOnes = [Link](d => ![Link])
[Link]("api/Clients", [Link])
Listingwith
// Create a map of countries 2 : Composant Client JS
unique IDs
let countries = excludeArchivedOnes
60
.map((item) => ({
value: [Link],
label: [Link],
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
61
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
62
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
63
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
64
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Ces deux interfaces illustrent les modules de gestion centralisés d'ExpedPro pour
l'administration des entités critiques du système logistique.
Le Centre de Gestion des Clients présente un tableau complet des clients internationaux avec
leurs numéros d'identification, dénominations sociales, pays d'origine (visualisés par drapeaux),
et actions de gestion. L'interface révèle la portée internationale d'ExpedPro avec des clients
diversifiés allant d'entreprises individuelles aux groupes industriels multinationaux répartis
géographiquement.
Le Centre de Gestion des Faux Camions constitue un module spécialisé pour la gestion des
véhicules virtuels utilisés dans les simulations système. L'interface permet de créer et assigner
des camions fictifs numérotés séquentiellement, avec un statut "Not Assigned" indiquant leur
disponibilité pour de futures affectations opérationnelles.
Ces modules démontrent l'approche modulaire d'ExpedPro, offrant des interfaces de gestion
dédiées tout en maintenant une cohérence ergonomique à travers l'application.
65
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Cette interface présente le tableau de bord des états de livraison d'ExpedPro, offrant une vue
d'ensemble complète et en temps réel du statut des expéditions.
La section supérieure affiche des indicateurs de performance clés avec 2 livraisons effectuées
aujourd'hui, 7 en cours de préparation, 0 en chargement et 13 livraisons en retard, permettant
un suivi immédiat des performances opérationnelles. Le système de filtrage avancé permet de
segmenter les données par état d'assignation, plage de dates et statut de livraison pour une
analyse ciblée.
Le tableau principal détaille chaque expédition avec les informations essentielles : numéro de
suivi, client (principalement RENAULT TANGER EXPLOITATION), date et heure de
livraison, nombre d'éléments manquants, et état d'avancement. Les indicateurs visuels colorés
facilitent l'identification rapide des statuts : vert pour "All ready" (prêt), orange pour les alertes,
et barres de progression pour visualiser l'avancement de chaque livraison. Cette interface
permet aux équipes logistiques de gérer efficacement les flux de livraison et d'identifier
rapidement les expéditions nécessitant une attention particulière.
66
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
67
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
La première interface affiche la Control Sheet ZE31 & Compliance qui constitue une fiche
de contrôle détaillée pour la livraison 10936482 destinée à RENAULT TANGER
EXPLOITATION. Le diagramme circulaire indique un statut de chargement à 100%,
confirmant que tous les éléments requis sont présents. Le tableau de vérification liste les articles
avec leurs numéros de ticket (8924940, 8924946, 8924947), références produits
(M0000501703), types UMS et quantités respectives, permettant un contrôle unitaire précis de
chaque composant.
La seconde interface présente le module de sélection des livraisons pour la génération des
listes de chargement. Elle permet de sélectionner des livraisons spécifiques (RENAULT
TANGER EXPLOITATION) et d'assigner les ressources logistiques appropriées via les menus
déroulants "Fork-lift" et "Fork-lift Driver". Le bouton "Generate Loading list" automatise la
création des documents de chargement. Le tableau inférieur affiche l'état d'avancement des
livraisons sélectionnées avec leurs dates de programmation et leurs pourcentages de
progression, facilitant la planification et l'optimisation des opérations de chargement.
L'interface de gestion des véhicules d'ExpedPro offre une administration complète et structurée
du parc automobile de l'entreprise. La section principale présente un tableau détaillé répertoriant
les informations essentielles des véhicules, incluant la plaque d'immatriculation, le modèle, la
marque, le type de véhicule, l'année de mise en service, le kilométrage, le statut opérationnel et
les actions disponibles.
Des fonctionnalités de recherche et de filtrage intégrées permettent de localiser rapidement les
véhicules selon différents critères (statut, type, marque). Les boutons "Importer" et "Ajouter"
facilitent l'enrichissement de la base de données véhicules, soit par saisie manuelle pour les
nouvelles acquisitions, soit par importation massive depuis un fichier Excel pour les mises à
jour de flotte.
68
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Du côté des opérations, le temps moyen de traitement d’une livraison complète est passé de 17
minutes à environ 9 minutes, représentant un gain de temps de plus de 45 %. Par ailleurs, le
système permet de traiter en moyenne 40 à 50 livraisons par jour, avec une traçabilité complète
et un meilleur suivi des statuts. Ces résultats ont été appuyés par les retours d’utilisateurs
internes, dont plus de 85 % se sont déclarés satisfaits ou très satisfaits de la solution, soulignant
surtout sa simplicité, sa rapidité, et le gain de visibilité qu’elle procure.
Ce gain de temps opérationnel se traduit également sur le plan économique, avec une réduction
estimée des coûts de traitement logistique de plus de 2 heures par jour, soit environ 5 000 à
6 000 DH d’économie mensuelle en charges internes et temps opérateur.
5.7 Conclusion
En conclusion, La mise en œuvre d'un projet n'est pas seulement un enchaînement de tâches,
mais un art nécessitant une parfaite harmonie entre la planification, la coordination et
l'exécution. Ce chapitre a plongé au cœur de cette dynamique, révélant les intrications des
différentes phases, des premières ébauches à l'aboutissement concret. Il en ressort que chaque
étape, minutieusement détaillée, est le fruit d'une réflexion profonde et d'un travail collaboratif
intense.
69
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Conclusion générale
Au terme de ma période de stage chez GMD, je garde en mémoire une expérience
profondément formatrice, à la fois sur le plan humain et technique. Ce stage m’a permis de
m’immerger dans un environnement industriel exigeant, où l’innovation logistique et la
rigueur opérationnelle occupent une place centrale. Le développement de la solution
ExpedPro a constitué un défi stimulant, m’offrant l’opportunité de consolider mes
compétences en développement logiciel C# avec WPF, tout en découvrant la complexité de
l’intégration avec les systèmes ERP SAP. J’ai pu ainsi contribuer à la digitalisation d’un
processus critique : la gestion des expéditions, auparavant traitée de manière manuelle et
dispersée. L’automatisation de ce flux via une interface centralisée a non seulement apporté
un gain de temps significatif, mais également une meilleure traçabilité et une réduction
sensible des erreurs de traitement.
Cette solution s’inscrit pleinement dans les tendances de l’industrie 4.0, qui visent à
automatiser et à digitaliser les processus industriels grâce à des technologies intelligentes et
interconnectées. L’architecture d’ExpedPro, conçue autour d’un modèle modulaire et évolutif,
permet une intégration fluide avec les équipements de production et une connexion directe
aux données du système SAP, renforçant ainsi l'interopérabilité des systèmes. D’un point de
vue méthodologique, le projet suit également les principes DevOps, avec une approche de
développement favorisant les tests automatisés, le déploiement itératif, et la maintenabilité
continue de l’application via une séparation claire entre les couches métier, interface et
infrastructure. Cette organisation rend la solution facilement scalable vers de nouveaux
modules, tels que des tableaux de bord analytiques, des notifications en temps réel, ou encore
des interfaces mobiles dédiées aux opérateurs terrain. En s’insérant dans cette dynamique,
ExpedPro ouvre la voie à une transformation plus large des pratiques logistiques et
numériques du groupe GMD.
D’un point de vue économique, le budget initial estimé à environ 500 000 DH (principalement
investi dans l’achat de tablettes industrielles et la mise en place du serveur applicatif) se
justifie pleinement au regard des bénéfices constatés. Le système permet de gagner jusqu’à 2
heures de travail par jour, soit une économie mensuelle estimée entre 5 000 et 6 000 DH, ce
qui rend le retour sur investissement atteignable en moins de 18 mois. Au-delà des gains
financiers, c’est surtout l’impact organisationnel et humain du projet qui en fait une réussite.
En participant activement à cette évolution, j’ai pris conscience du rôle que peuvent jouer les
technologies dans la modernisation des chaînes logistiques. Ce stage m’a ainsi conforté dans
mon orientation professionnelle vers le développement de solutions métiers à forte valeur
ajoutée, et m’a donné les outils nécessaires pour affronter avec confiance mes prochains défis
d’ingénieur.
70
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Références Bibliographiques
[1] [Link] [En ligne].
[2] [Link] [En ligne].
[3] [Link] [En ligne].
[4] [Link] [En ligne].
[5] [Link] [En ligne].
[6] [Link] [En ligne].
[7] C. Walls, Spring Boot in Action. Manning Publications, (2016).
[8] [Link] [En ligne].
[9] [Link]
[10] [Link]
[11] [Link]
71
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
Annexes
Annexe 1: Exemple d'implémentation de Controller
[HttpGet("PreparationList/{delivery}")]
public async Task<ActionResult<PreparationResponse>>
GetPreparationList(string delivery)
{
try
{
{
Id = [Link],
StoreType = [Link],
PhysiclyPicked = [Link],
Available = [Link], 72
DeliverieItem = [Link],
DoneAt = [Link],
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
{
Id = [Link],
StoreType = [Link],
PhysiclyPicked = [Link],
Available = [Link],
DeliverieItem = [Link],
DoneAt = [Link],
GrDate = [Link],
Galia = [Link],
LastMvmnt = [Link],
ToCollect = [Link],
Status = [Link],
Location = [Link],
ForkliftDriverId = [Link],
ForkliftDriverName = [Link] + " " +
[Link],
Vehicle = [Link],
Security= [Link],
}).ToList()
})
.ToListAsync();
var del = [Link](d => d.Delivery1 == delivery).FirstOrDefault();
var items = [Link](d => [Link] == delivery).FirstOrDefault();
var galia = await [Link]
.Include(p => [Link])
.ThenInclude(di => [Link])
.Where(p => [Link] != null &&
[Link] != null &&
[Link].Delivery1 == delivery &&
[Link] == true &&
[Link] == false &&
[Link] == false)
.Select(p => new {
store = [Link],
galia = [Link],
emplacement = [Link]
})
.ToListAsync();
string hh = "";
GuiComponentCollection guiCompColl;
GuiLabel guiLabel;
int total;
int boucle;
int row = 0;
int oldTop;
int hiddenElementSize;
int range;
int boucleScroll;
int nombreScroll;
int startPosition = 32;
((GuiButton)[Link]("wnd[0]/tbar[1]/btn[41]")).Press();
}
for (boucleScroll = 1; boucleScroll <= nombreScroll; boucleScroll++)
{
var c = 0;
if (boucleScroll > 1)
{
[Link] = range * (boucleScroll - 1);
}
guiCompColl = ((GuiUserArea)[Link]("wnd[0]/usr")).Children;
total = [Link];
startPosition = 0;
guiLabel = (GuiLabel)[Link](startPosition);
oldTop = [Link];
[Link]();
if (boucleScroll > 1)
{
startPosition = 31;
guiLabel = (GuiLabel)[Link](startPosition);
oldTop = [Link];
}
guiLabel = (GuiLabel)[Link](boucle);
[Link]();
}
75
// Check if the iteration is for a new line
if ([Link] > oldTop || boucle == total)
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
if ([Link]("Storage_Unit") &&
pickingItem["Storage_Unit"] != null && [Link]("StorageBin") &&
pickingItem["StorageBin"] != null)
{
[Link](new Dictionary<string,
object>(pickingItem));
int totalToPick = 0;
foreach (Dictionary<string, object> item in pickingItemList)
{
76
}
Error! Use the Home tab to apply Titre 1 to the text that you want to appear here. | Error! Use the Home
tab to apply Titre to the text that you want to appear here.
totalToPick += available;
}
}
if (totalToPick >= toPick)
{
GuiMainWindow mainUserWin =
(GuiMainWindow)[Link]("wnd[0]");
[Link](3);
//[Link](3);
return pickingItemList;
}
}
}
pickingItem = new Dictionary<string, object>();
}
}
if (row == 5 && )
{
[Link]();
header[[Link]] = [Link];
sapHeader[[Link]] = AattributeAdjustment([Link]);
apiHeader[AattributeAdjustment([Link])] = [Link];
hh += AattributeAdjustment([Link]) + "|";
}
if ([Link] == "*")
{
break;
}