Vous êtes sur la page 1sur 35

rapport

[Commencez immédiatement]
[Pour remplacer le texte de l’espace réservé, il vous suffit de sélectionner une ligne de
texte et de commencer à taper. Mais attendez un peu avant de vous lancer.]

[Consultez d’abord ces quelques conseils pour vous aider à mettre en forme votre
document. Vous verrez, c’est très facile.]

• [Vous avez besoin d’un titre ? Sous l’onglet Accueil, dans la galerie Styles, cliquez sur
le style de titre de votre choix.]

• [Vous pouvez accéder à d’autres styles de texte tels que des puces ou des citations, y
compris ce style (Liste à puces).]

[« Voici le style Citation. »]

[En-tête de [En-tête de [En-tête de


colonne 1] colonne 2] colonne 3]

[En-tête de [Entrez le texte [Entrez le texte [Entrez le texte


ligne 1] du tableau] du tableau] du tableau]

[En-tête de [Entrez le texte [Entrez le texte [Entrez le texte


ligne 2])3 du tableau] du tableau] du tableau]
Introduction générale

Dans un monde en constante mutation, où les défis financiers se croisent


avec nos aspirations quotidiennes, émerge une solution novatrice pour
redéfinir la manière dont nous percevons et gérons nos ressources
financières. Notre projet, nommé "SmartSpender", incarne cette vision d'une
expérience financière plus intelligente et savante. C'est un voyage au cœur
de la technologie et de la finance que nous proposons, une plongée dans un
univers où les transactions ne sont plus simplement enregistrées, mais
analysées avec finesse, anticipées avec clairvoyance, et conseillées avec
pertinence. SmartSpender ne se contente pas de suivre les chiffres ; il grave
une expérience proactive, façonnée sur mesure pour chaque utilisateur. Au-
delà des lignes de code et des fonctionnalités, SmartSpender est une fusion
d'innovations architecturales et de compréhension profonde des besoins
individuels. Il incarne une nouvelle époque où la gestion budgétaire n'est plus
une corvée, mais une opportunité d'autonomie et d'intelligence financière.
Dans ce rapport, nous vous invitons à explorer les coulisses de la création de
SmartSpender, à comprendre les choix stratégiques qui l'ont alimenté, et à
anticiper l'impact qu'il est destiné à avoir sur la façon dont nous percevons et
gérons nos finances au quotidien. Bienvenue dans le futur de la gestion
financière – bienvenue dans l'univers de SmartSpender.

2
Chapitre 1
Contexte global du projet

1.1- Introduction

3
À l'heure où la gestion financière devient de plus en plus cruciale dans le quotidien
des Tunisiens, notre application se distingue en s'adaptant spécifiquement aux besoins du
marché tunisien. Conçue pour offrir une expérience personnalisée, elle tient compte des
particularités des institutions bancaires locales, des habitudes de dépenses propres à la
région, ainsi que des régulations spécifiques en vigueur.
Bien au-delà du simple suivi des revenus et des dépenses, contrairement aux applications
génériques, notre application propose un soutien financier en fournissant des conseils et
des astuces adaptés à la réalité tunisienne. En mettant l'accent sur la compréhension des
besoins financiers uniques du marché tunisien, notre projet se positionne comme une
solution assimilée pour une gestion financière optimale dans le contexte financier particulier
de la Tunisie. Notre application comble les lacunes laissées par les solutions existantes qui
ne prennent pas suffisamment en compte les défis financiers uniques auxquels les
utilisateurs tunisiens sont confrontés au quotidien.

1.2-Présentation de projet

1.2.1-Domaine

Le domaine de ce projet englobe la gestion financière personnelle, se situant


au croisement de la technologie informatique et de la finance personnelle. Notre
projet se concentre sur le développement d'une application visant à faciliter le suivi
des revenus et des dépenses, offrant ainsi aux utilisateurs une solution informatique
intuitive pour optimiser leur gestion financière au quotidien.

1.2.2- Les bénéficiaires potentiels

Le projet présente une solution novatrice et efficace répondant aux besoins


des particuliers cherchant à suivre efficacement leurs revenus et dépenses
personnels. Les avantages offerts à ces utilisateurs sont multiples, une adaptation
précise au marché tunisien, se reflète également dans les conseils d'optimisation
financière, qui sont générés en fonction des habitudes spécifiques de chaque
utilisateur. Le tableau de bord intuitif joue un rôle central en fournissant une
visualisation claire des données financières. En résumé, notre application offre bien
plus qu'un simple suivi des dépenses et revenus ; elle propose une expérience
complète, réactive et personnalisée, positionnant ainsi notre solution comme l'outil
idéal pour un suivi financière optimale sur le marché tunisien.

1.2.3- Problématique

4
La gestion financière personnelle est une préoccupation majeure pour de
nombreux individus. Les utilisateurs tunisiens recherchent une solution qui va au-
delà du simple suivi des revenus et des dépenses, offrant des conseils et des
fonctionnalités personnalisés en tenant compte des particularités locales. Face à
cette problématique, notre projet vise à concevoir une application de finance
innovante, répondant de manière précise et contextualisée aux défis financiers
spécifiques aux utilisateurs tunisiens. En mettant l'accent sur la personnalisation et
l'adaptabilité, notre objectif est de fournir une solution complète qui simplifie le suivi
financier et améliore l'expérience utilisateur dans le contexte tunisien.

1.2.4- Etude de l’existant

Dans le contexte de notre projet financier, une étude de marché et une


analyse approfondie de l'existant sont primordiales. Actuellement, bien que
plusieurs applications de gestion financière existent, peu sont spécifiquement
adaptées au marché tunisien et peu contiennent des outils d'aide à optimiser les
dépenses. Notre projet vise à combler ce vide offrant une solution personnalisée
répondant aux besoins financiers des utilisateurs tunisiens de manière optimale.
Voici quelques applications dédiées au suivi et de gestion des dépenses et des
revenus personnels.

• Money Manager : Expense Tracker, Budget App : Money Manager est


une application de suivi des dépenses et de gestion budgétaire. Elle permet
aux utilisateurs de suivre leurs dépenses, de créer des budgets, et propose
des fonctionnalités avancées pour une gestion financière complète.

[Figure 1: Money Manager]

5
• Wallet: Personal Finance, Budget & Expense Tracker : Wallet est une
application complète de finances personnelles. Elle offre des fonctionnalités
de suivi des dépenses, de gestion budgétaire, et permet également
d'enregistrer et de suivre toutes les transactions financières, offrant un
tableau de bord complet des finances personnelles.

[Figure 2: Wallet]
• Expense Manager: Track Spending & Save Money : Expense Manager se
concentre sur le suivi des dépenses et l'économie d'argent. Elle propose des
outils pour enregistrer toutes les dépenses et créer des catégories
personnalisée.

6
[Figure 3: Expense Manager]

• PocketGuard: Personal Finance, Money & Budget : PocketGuard est une


application de gestion financière personnelle. Elle offre des fonctionnalités
telles que le suivi des dépenses, visualisation de tableau de bord et l’ajout
des catégories.

[Figure 4: PocketGuard]

Tableau 1 : Les forces et les faiblesses de chaque application


Application Forces Faiblesses

Money Manager Interface intuitive et Fréquence élevée de


conviviale, facilitant la publicités et absence des
saisie des dépenses. conseils d'optimisation.
Wallet Excellente fonctionnalité Certaines fonctionnalités
de suivi des dépenses et avancées sont limitées
de gestion budgétaire. aux utilisateurs premium.
Interface peut sembler un
peu complexe pour les
débutants.
Expense Manager Fonctionnalités de suivi Absence de
des dépenses simples et fonctionnalités avancées
efficaces. Rapports clairs comme la prévision des
pour une analyse rapide. dépenses futures et la
présence d’une
abondance de publicités,

7
qui pour les éviter, il faut
payer un abonnement.

PocketGuard Un calendrier esthétique L'application ne propose


offrant une consultation pas la fonctionnalité des
organisée de l'historique. notifications et alertes, et
elle manque de
fonctionnalités telles que
la gestion des dates
limites et des
récurrences.

1.2.5- discussion

Il est observé que certaines applications existantes ne proposent ni les


fonctionnalités de prédiction ni les conseils d'optimisation, pourtant essentiels pour
aider les utilisateurs à suivre et à optimiser efficacement leurs dépenses. De plus, il
est notable qu'aucune des applications de suivi de dépenses existantes n'est
spécifiquement adaptée au marché tunisien. Cette lacune est significative, car une
adaptation locale faciliterait grandement l'utilisation de l'application et permet à
l’utilisateur de gagner le temps, en fournissant par exemple des catégories,
marques, banques et institutions locales tunisiennes par défaut. Ainsi, Il est
important de noter que notre solution se distingue par le fait qu'elle est gratuite,
contrairement à certaines applications existantes qui peuvent nécessiter un
paiement pour accéder à toutes leurs fonctionnalités. Cette gratuité la rendant
accessible à un plus large public et renforçant ainsi son attrait pour les utilisateurs
intéressés.

1.2.6- Solution proposée


Après une exploration approfondie des applications de suivi financier
actuellement disponibles, nous avons identifié plusieurs lacunes qui limitent leur
capacité à fournir une solution complète pour la gestion financière. Parmi ces
lacunes, citons l'absence de fonctionnalités avancées telles que la prévision des
dépenses futures, des notifications et alertes limitées, ainsi qu'une personnalisation
limitée des catégories.

C’est là que Notre application de suivi financier se présente comme une solution
pour combler ces limitations par sa spécificité au marché tunisien, offrant des
fonctionnalités avancées adaptées aux besoins locaux. Conçue pour répondre
précisément aux exigences du contexte financier tunisien, elle propose une
interface conviviale et personnalisable, allant au-delà des simples fonctionnalités de
suivi des revenus et dépenses.

8
Avec des capacités de prévision des dépenses futures, une catégorisation détaillée
des transactions et des conseils financiers. Les notifications et alertes contextuelles
assurent une gestion proactive des finances.
En résumé, notre application de suivi financier se positionne comme une solution
complète, dédiée au marché tunisien, combinant des fonctionnalités avancées avec
une interface conviviale, pour une gestion financière optimale et personnalisée.

1.2.7- Cadre du sujet :

Ce projet a été conçu dans le cadre de notre stage de fin d'études en licence
de sciences de l'informatique, avec une spécialisation en génie logiciel et systèmes
d'information à l'Institut Supérieur de l'Informatique de Mahdia (ISIMa). L'objectif
était d'appliquer nos compétences dans un contexte professionnel en développant
une solution novatrice pour le suivi financier personnel.

1.3- Présentation de l’organisme d’accueil


Ce projet est développé et réalisé au sein de l’entreprise OCTA-HUB, une
boite de développement spécialisée en développement web et mobile, en
développement des logiciels et en IoT créée à Djerba en 2021 par Monsieur Akrout
Houssem, ingénieur informatique docteur en Intelligence Artificielle. Cette entreprise
est dotée d’une équipe d’ingénieurs compétents et expérimentés qui nous a aidé à
améliorer la qualité de notre projet et nos compétences.

1.3.1-Fiche de renseignement de l’organisme d’accueil

Nom de l’entreprise : OCTA-HUB

[Figure 5 : Logo OCTAHUB]

Année de création : 2021


Fondateur : Akrout Houssem
Téléphone : 98 900 795
Site Web : https://www.octa-hub.com/
Courriel : akrout.houssem@gmail.com

1.3.2- Les services proposés l’organisme d’accueil

9
OCTA-HUB se distingue par la proposition de services et solutions
numériques fiables et novateurs, couvrant l'intégralité du processus et accélérant
les transitions digitales et commerciales. Ces offres visent à aider à surmonter
efficacement les nouveaux défis de l'ère numérique.

Les services d’OCTA-HUB sont

• Service de développement d’applications web


• Service de développement d’applications mobiles
• Service de développement des logiciels pour les entreprises
• Service de développement des produits (SaaS)
• Service IoT (Internet of Things)

1.4- Méthodologie de travail

1.4.1- Analyse comparative de différentes méthodologies


Une méthode de gestion de projet est un ensemble de directives, de modèles, de
techniques qui guident les chefs de projets à gérer leurs projets de la meilleure façon
possible tout en leur garantissant une performance optimale. Le choix de la
méthodologie appropriée joue un rôle critique dans le succès du projet.
Il existe une panoplie de méthodes de gestion de projets avec des outils adaptés,
mais bien souvent, nous mélangeons les méthodes et les guides de bonnes
pratiques.
Nous vous présentons ici les deux grandes catégories de méthodes de gestion de
projet, et nous détaillons les plus connues.

1) La méthodologie Classique :
Les méthodes classiques de gestion de projet adoptent une approche séquentielle
rigoureuse dans la conduite des différentes phases du projet. La méthode
classique, également connue sous les termes de méthode traditionnelle ou
prédictive, demeure la méthode la plus fréquemment employée dans la gestion de
projets.

Ses Caractéristiques :

o Séquentialité dans le cycle du projet : Le chef de projet, en tant que maître


d'œuvre, s'assure de l'achèvement de chaque étape du projet avant de passer à la
suivante, suivant un découpage linéaire et séquentiel du cycle du projet.
o Cadrage et planification prédictifs : Cette méthodologie repose sur un cadrage
précis et une planification anticipée. Le projet se déroule conformément aux
accords initiaux établis avec le client, souvent formalisés dans un cahier des
charges. Les besoins des utilisateurs sont rigoureusement définis en amont.

10
o Peu d'interaction en cours de projet avec le client : En raison du cadrage
préalable, le client, en tant que maître d’ouvrage, n'intervient que rarement pendant
le déroulement du projet. Les interactions sont limitées, favorisant un contrôle
qualité à la fin du processus.

2) La méthodologie agile :

Les méthodes agiles représentent une approche innovante pour le développement


de logiciels, reposant sur divers Framework tels que Scrum, Kanban, Srumban,
Lean, XP, etc., offrant ainsi une structure claire et mesurable. Ces méthodes
encouragent le développement itératif, la collaboration entre les équipes, et la prise
en compte de l'évolution des besoins tout au long du processus de développement.
La collaboration d'équipes auto-organisées, inter-fonctionnelles, et des clients eux-
mêmes permet une évolution constante des demandes et des solutions. La
satisfaction des clients est garantie grâce à des livraisons continues des parties
logicielles, soutenant et motivant efficacement les équipes. Les méthodes agiles
facilitent la détection et la correction rapides des problèmes inattendus, ainsi que
l'introduction de changements à n'importe quel stade du projet. Ainsi, cette
méthodologie s'avère particulièrement adaptée pour les projets complexes,
présentant des niveaux d’incertitudes qui nécessitent une approche flexible.
En utilisant les méthodes agiles dans la gestion du projet, la priorité est donnée à :

• Les individus et les interactions plutôt que les processus et les outils
• Les logiciels de travail plutôt qu'une documentation complète
• La collaboration avec les clients plutôt que la négociation d'un contrat
• La réaction au changement plutôt que le suivi d’un plan

Dans le cadre de ce projet, nous avons procédé à une évaluation approfondie de plusieurs
méthodes de gestion de projet afin de sélectionner celle qui répond le mieux à nos besoins
spécifiques. Cette analyse comparative vise à identifier les avantages et les inconvénients
de chaque méthode, fournissant ainsi une base solide pour prendre une décision éclairée
avant de lancer notre projet.

Le Tableau 2 résume les descriptions, les avantages et les inconvénients de chaque


méthode, offrant ainsi une référence claire et concise pour guider notre décision.

11
Tableau 2 : les avantages et les inconvénients de quelques méthodes

Méthode Description Avantages Inconvénients Catégorie de


méthodologie
associée
Waterfall(en Est telle une Structure Manque de
cascade) chute d’eau, où linéaire et flexibilité : la
les besoins sont séquentielle, prise en compte
entièrement facile à de nouvelles
définis au comprendre et fonctionnalités
sommet de la à utiliser, ou la
cascade, et les appropriée modification de Classique
différentes pour les certaines de ces
phases se projets simples fonctionnalités
succèdent de avec des coûtent cher.
façon objectifs
séquentielle clairement
définis.
Cycle en V Organisée en À caractère Rigide qui peut
deux flux anticipatif des rendre difficile
parallèles, problèmes qui l'adaptation aux
descendant peuvent avoir changements
(détaillant le lieu à chacune de requis en Classique
produit) et des phases cours de projet
ascendant linéaires de
(vérifiant la gestion de
qualité à chaque projet
phase).

12
Kanban Une approche Vision claire Pas de délais
agile qui facilite de l'état stricts, ce qui
la visualisation d'avancement peut rendre la
du progrès du à tout moment, planification
travail grâce à et amélioration moins
l'utilisation d'un de la structurée pour Agile
tableau visuel où productivité de les projets
chaque colonne l’équipe. nécessitant des
représente une échéances
étape du précises.
processus.
Scrum Scrum est une Adapté pour Nécessite un
méthode issue les projets engagement
de la complexes qui actif des
méthodologie de possèdent des membres de
de gestion de changements l’équipe et une
projet agile. Elle fréquents de communication
est utilisée pour besoin des continue et
développer, clients, transparente Agile
livrer et l’amélioration entre les
maintenir des du projet est membres de
produits transparente. l’équipe.
complexes. Elle La livraison du
est basée sur la produit est
collaboration, la incrémentielle.
responsabilité et
le progrès
itératif.
Lean Méthode qui vise Identifie et La focalisation
à accroître élimine les sur l'efficacité
l'efficacité, gaspillages, maximale peut
maximiser la optimisant parfois négliger
valeur, et ainsi des aspects de
éliminer le l'utilisation des qualité et de
gaspillage en ressources et créativité, et la Agile
réduisant les améliorant mise en œuvre
tâches non l'efficacité du de Lean peut
productives. processus de rencontrer des
gestion de résistances
projet. culturelles au
sein des
équipes

1.4.2- La méthode Scrum

13
Dans le cadre de notre projet, nous avons opté pour la méthodologie Scrum,
une approche agile de gestion de projet qui favorise la flexibilité et la collaboration.
Cette méthodologie, basée sur des cycles de développement courts appelés
"sprints", nous a permis de maximiser l'efficacité et de répondre de manière
dynamique aux évolutions et retours tout au long du processus de développement.
En intégrant Scrum, nous visons à garantir la réussite et la satisfaction des
utilisateurs finaux tout en maintenant une communication transparente et une
adaptabilité constante.

➢ Backlog du produit

Le backlog de produit est une liste dynamique et priorisée de toutes les


fonctionnalités, améliorations et exigences que l'équipe de développement doit
réaliser pour un produit spécifique. C'est essentiellement une liste de toutes les
tâches à effectuer pour développer et améliorer le produit. Les éléments du backlog
de produit sont généralement décrits en termes de fonctionnalités, de “user stories”.
La priorité des éléments est ajustée régulièrement pour refléter les besoins et les
objectifs en constante évolution du projet.

➢ Les intervenants

Dans le contexte de Scrum, il existe trois rôles ; le propriétaire de produit


(Product Owner), le Scrum Master et l’équipe de développement (Development
Team)

• Propriétaire de produit (Product Owner) : Le propriétaire de produit est responsable


de prendre les décisions sur le produit, de définir les objectifs du produit et de
garantir que l'équipe de développement crée une valeur maximale pour les
utilisateurs et les parties prenantes.
• Scrum Master : Le Scrum Master est le garant du bon déroulement du processus
Scrum. Il aide l'équipe Scrum à comprendre et à adopter les principes et pratiques
de Scrum, résoudre les problèmes au sein de l’équipe et facilite les événements
Scrum.
• Equipe de développement (Development Team) : L'équipe de développement est
composée de professionnels qui réalisent le travail nécessaire pour atteindre les
objectifs du produit. Elle est auto-organisée et interdisciplinaire, elle opère sous la
direction du Product Owner pour la réalisation des fonctionnalités prioritaires
définies dans le backlog du produit à la fin de chaque sprint.

14
➢ Le sprint

Un sprint dans Scrum est une période de temps fixe, de deux à quatre
semaines, pendant laquelle l'équipe de développement travaille sur un ensemble défini
de tâches. L'objectif est de produire un incrément fonctionnel du produit à la fin de
chaque sprint. C'est une unité de temps courte et délimitée où l'équipe se concentre
sur la réalisation des objectifs spécifiques du backlog du produit.

La figure suivante résume le processus dans la méthode Scrum.

[figure 6 : Processus de Scrum]

1.5- Conclusion:

Dans ce chapitre, nous avons présenté notre projet axé sur le suivi financier tunisien,
soulignant son caractère novateur et adapté au marché local. Nous avons exploré les
différentes dimensions du projet, de son domaine d'application aux bénéficiaires potentiels,
en passant par les problématiques et les solutions existantes sur le marché.
En abordant les méthodologies de gestion de projet, nous avons identifié deux grandes
catégories, classiques et agiles, en mettant en avant la méthode Scrum comme choix
optimal pour notre projet. Ce choix découle de la nécessité de flexibilité et de collaboration
continue. Ce chapitre établit le contexte global du projet, fournissant les fondations
nécessaires pour plonger plus profondément dans les détails des prochains chapitres.

15
Chapitre 2
Gestion de projet :
Planification et Conception

16
2.1- Introduction

Dans le cadre du premier chapitre, dédié au Sprint 0 de notre projet de gestion


financière, nous entamons une exploration approfondie de divers éléments fondamentaux.
Cela inclut l'identification des acteurs, la spécification des besoins, l'intégration de Scrum,
le chronogramme prévisionnel, l'environnement de travail et les choix techniques, ainsi
que l'architecture adoptée, le modèle d'architecture et le diagramme de cas d'utilisation
global, qui offrira une vue d'ensemble du comportement fonctionnel du projet. Ce chapitre
établira les bases essentielles pour le développement ultérieur de notre application web et
mobile axée sur le suivi des revenus et dépenses personnels.

2.2- Identification des acteurs

Un acteur est une représentation abstraite de rôle qu'une personne ou un processus


assume lorsqu'il interagit directement avec un système. Chaque acteur participe
activement au fonctionnement du système en exécutant un ensemble spécifique de tâches
et de responsabilités. Les acteurs de ce projet sont les suivants :

• Utilisateur : Un utilisateur authentifié possède un accès total pour toutes les


fonctionnalités de l’application mobile, tels que la gestion de son profil en modifiant
son nom, prénom, e-mail, et son mot de passe. Il a également la possibilité de
réinitialiser son mot de passe en cas de perte. Chaque utilisateur doit déclarer ses
revenus, leurs formes et leurs sources, de même que ses dépenses. La réception
de notifications et alertes dans le but de le rappeler des dates limites des
payements est une autre option de notre application. Il suit son comportement
financier via un tableau de bord montrant l’évolution de ses revenus et ses
dépenses graphiquement. Des conseils d’optimisation des dépenses seront
générés pour aider l’utilisateur à équilibrer ses dépenses et ses revenus. De plus
cet acteur peut utiliser l’application pour prédire ses dépenses futures grâce à des
algorithmes de “machine Learning”.

• Administrateur : Un administrateur joue un rôle essentiel dans le projet, assurant


la gestion globale et la coordination des opérations liées aux utilisateurs et aux
données. Il peut se connecter, gérer dynamiquement les catégories et les noms des
établissements, ajouter ou supprimer des entités, gérer les utilisateurs, et présenter
une vue complète des comptes. De plus, il communique avec les utilisateurs
mobiles pour les informer des mises à jour et des changements de catégories, et il
est possible de consulter l'historique des modifications qu’il a effectué pour assurer
la transparence et la traçabilité du système.

2.3- Spécification des besoins

17
• Objectif : Concevoir une application web et mobile destinée à aider les particuliers à
gérer efficacement leurs revenus et dépenses personnels.
• Publique Cible : Individus cherchant à suivre, anticiper et optimiser leurs finances
personnelles.

2.3.1- Besoins fonctionnels :

Cette partie se concentre sur les spécificités des fonctionnalités que notre système
devra offrir aux personnes impliquées.

• Création de profil :
Les utilisateurs et les administrateurs doivent créer un compte personnel sur
l'application en fournissant diverses informations telles que leur adresse e-
mail, un mot de passe, ainsi que d'autre informations générales nécessaires.
Facultativement, les utilisateurs ont la possibilité de déclarer le montant
détenu dans chacun de leurs comptes lors de la création de leur profil.
L'utilisateur peut optionnellement fournir des informations sur son domaine et
son poste, lui permettant ainsi de recevoir des données pertinentes sur les
salaires existants sur le marché du travail pour son poste dans son domaine.
• Modification du Profil :
Modifier le nom et le prénom : Les utilisateurs et les administrateurs ont la
possibilité de personnaliser leur profil en ajustant leurs noms. Cette
fonctionnalité permet une mise à jour simple et rapide des informations
personnelles, offrant une expérience utilisateur personnalisée. De même, ils
peuvent modifier leur prénom selon leurs préférences. Cette flexibilité dans la
gestion du profil assure une adaptation facile aux changements personnels.
Modifier l'Email : La fonction de modification de l'adresse e-mail permet aux
utilisateurs et aux administrateurs de mettre à jour leurs informations de
contact. Cela assure une communication efficace et actualisée entre
l'application et l'utilisateur, et le dashboard-web et l’administrateur.
Modifier le Mot de Passe : Pour des raisons de sécurité, les utilisateurs et
les administrateurs ont la possibilité de changer leurs mots de passe. Cette
fonction garantit un contrôle total sur l'accès à l'application, renforçant ainsi la
confidentialité des données.
Modifier le domaine et le poste de travail : L'utilisateur a la possibilité de
modifier les informations concernant son domaine et son poste, que ce soit
en cas de changement d'emploi ou en cas d'erreur de saisie, etc.

• Authentification :
Une fois que l'utilisateur ou l'administrateur a créé son compte, l'application
propose un processus d'authentification sécurisé pour vérifier les
informations d'identification lors de la connexion. Les utilisateurs et
l’administrateur accèdent à l'application en fournissant leur adresse e-mail et
leur mot de passe. Le système vérifie ensuite la validité des informations
saisies en les comparant avec les données enregistrées. En cas de
correspondance, l'utilisateur ou l'administrateur est authentifié et obtient
l'accès à l'ensemble des fonctionnalités de l'application. En revanche, en cas

18
d'informations incorrectes, un message d'erreur est affiché, indiquant que
l'accès est refusé. De plus, tant les utilisateurs que les administrateurs ont la
possibilité de se déconnecter à tout moment, renforçant ainsi la sécurité des
données en assurant qu'ils sont déconnectés de leur compte.

• Réinitialisation du Mot de Passe : En cas d'oubli du mot de passe, une


fonction de réinitialisation est disponible. Cette mesure de sécurité permet aux
utilisateurs ou aux administrateurs de restaurer l'accès à leurs comptes de
manière sécurisée, en suivant un processus de réinitialisation défini.

• Gestion des comptes :


o La fonctionnalité de gestion des comptes permet aux utilisateurs
d'accéder à leurs différents comptes enregistrés dans l'application,
notamment les comptes bancaires, les comptes prépayés et les wallets
cash. Ses caractéristiques principales englobent l'ajout, la modification et
la suppression des comptes, ainsi que la consultation de leurs soldes
disponibles.
• Réalisation d’un transfert : L'action "Réaliser un Transfert" est destinée à
l'utilisateur. Elle lui permet de déplacer des fonds entre ses propres comptes
bancaires ou financiers.
• Déclaration des Revenus :
Cette fonctionnalité offre aux utilisateurs la possibilité de saisir précisément
leurs différentes sources de revenus, qu'il s'agisse de revenus réguliers ou
de gains ponctuels. De plus, ils peuvent catégoriser ces revenus selon leur
nature, tels que les allocations, les salaires, l'argent de poche ou les primes,
permettant ainsi une gestion complète des entrées financières. Pour chaque
revenu enregistré, les utilisateurs peuvent également spécifier sa destination,
que ce soit vers un compte courant, un compte épargne, un compte crédit ou
en espèces. Les utilisateurs ont la flexibilité de répartir leurs sources de
revenu entre différents comptes. Cette classification détaillée facilite une
analyse approfondie des flux financiers, offrant une meilleure compréhension
de la répartition et de l'utilisation des revenus.
• Déclaration des Dépenses :
Les utilisateurs peuvent enregistrer leurs dépenses de manière exhaustive,
couvrant à la fois les dépenses récurrentes et ponctuelles. Cette fonctionnalité leur
permet également de catégoriser chaque dépense pour un suivi plus précis. De
plus, ils ont la possibilité de spécifier la date limite pour les dépenses ponctuelles
avec échéance. Cette classification détaillée des moyens de paiement utilisés, tels
que le chèque, le virement, l'argent liquide, les transactions électroniques ou les
cartes de crédit, est également prise en charge. De manière similaire à la
déclaration des revenus, les utilisateurs peuvent associer clairement chaque

19
dépense à son compte source, offrant ainsi une vue complète des flux financiers
sortants.
• Gestion des fournisseurs privés :
Ajout de Fournisseurs : Les utilisateurs ont la possibilité d’enrichir la liste des
fournisseurs privés en ajoutant de nouveaux entrants. Cette fonctionnalité
offre une flexibilité accrue dans la gestion des contacts avec les fournisseurs,
permettant ainsi une adaptation rapide aux besoins changeants.
Modification des Fournisseurs : En cas de besoin de mise à jour des
informations des fournisseurs privés existants, l'utilisateur peut facilement
modifier les détails pertinents. Cette capacité de modification garantit la
précision et l'actualité des données fournisseurs, contribuant ainsi à une
gestion efficace des relations commerciales.
Suppression des Fournisseurs : Pour maintenir une liste de fournisseurs
pertinente et concise, l’utilisateur a la possibilité de supprimer les entrées qui
ne sont plus nécessaires. Cette fonctionnalité assure une gestion propre et
organisée de la base de données des fournisseurs, évitant ainsi les
informations obsolètes et redondantes.
• Gestion des catégories privées : La fonctionnalité "Gestion des Catégories
Privées" est destinée à l'utilisateur. Elle lui permet de créer, modifier, et
supprimer des catégories qui ne sont visibles que pour lui-même et non pour les
autres utilisateurs.
• Gestion des sous-catégories de dépenses privées : La fonctionnalité
"Gestion des Sous-catégories Privées" est conçue spécifiquement pour les
utilisateurs individuels. Elle leur permet de créer, modifier et supprimer des
sous-catégories de ses dépenses qui sont uniquement visibles pour eux-mêmes
et ne sont pas partagées avec d'autres utilisateurs.
• Définition des seuils : La fonctionnalité " Déclaration d’un seuil sur une
catégorie " permet aux utilisateurs de personnaliser des niveaux ou des limites
pour différentes catégories et des sous catégories.

• Consultation du Tableau de Bord Personnalisé :


o Vue d'Ensemble des Revenus et Dépenses : Le tableau de bord offre
une vue consolidée des revenus et des dépenses.
o Graphiques et Statistiques Visuelles : Des outils graphiques facilitent
l'analyse visuelle des habitudes financières.
• Visualisation des prédictions des Dépenses Futures :
o Analyse Prédictive des Tendances de Dépenses Futures : Des
algorithmes de Machine Learning améliorent la précision des
prédictions.
o Visualisation Graphique des Prédictions sur le Tableau de Bord : Les
prédictions sont présentées de manière graphique pour une
compréhension instantanée.
o Rapports détaillés : Fournir des rapports détaillés sur les prédictions
de dépenses futures, y compris des analyses approfondies sur les
tendances, les variations saisonnières, les catégories de dépenses
prédominantes, etc.
• Gestion des fournisseurs publics: La fonctionnalité "Gestion des
Fournisseurs Publics" est réservée aux administrateurs, leur permettant de
consulter, d'ajouter, de modifier et de supprimer des fournisseurs accessibles

20
pour tous les utilisateurs de l’application. Cela assure une gestion efficace des
partenaires externes et des contacts professionnels.
• Gestion des catégories publiques : La fonctionnalité "Gestion des Catégories
Publiques" est spécifiquement conçue pour les administrateurs. Elle leur permet
de consulter, ajouter, modifier et supprimer des catégories qui sont visibles par
l'ensemble des utilisateurs.
• Gestion des sous-catégories publiques : La fonction "Gestion des Sous-
catégories Publiques" est dédiée aux administrateurs. Elle leur permet de
consulter, ajouter, modifier et supprimer des sous-catégories accessibles à tous
les utilisateurs.
• Gestion des utilisateurs : La fonctionnalité "Gestion des Utilisateurs" donne
aux administrateurs le contrôle total sur les comptes des utilisateurs. Ils peuvent
ainsi supprimer et visualiser les informations des utilisateurs. De plus, cette
fonctionnalité leur permet de révoquer l'accès des utilisateurs à l'application si
nécessaire.
• Validation des fournisseurs publics suggérés : Après qu'un utilisateur a
suggéré un fournisseur pour qu'il soit ajouté à la liste des fournisseurs publics,
l'administrateur a la possibilité de valider ou de rejeter cette suggestion.
• Validation des catégories publiques suggérées : Après qu'un utilisateur ait
proposé une nouvelle catégorie pour qu'elle soit incluse dans la liste des
catégories publiques, l'administrateur a la possibilité de la valider ou de la
rejeter.
• Validation des sous-catégories publiques suggérées : Suite à la suggestion
d'un utilisateur concernant l'ajout d'une nouvelle sous-catégorie dans la liste des
sous-catégories publiques, l'administrateur est chargé d'évaluer cette
proposition et de décider de l'approuver ou de la rejeter.
• Envoi des notifications personnalisées:
o Des notifications publicitaires sont délivrées après des dépenses,
proposant d'autres options à des prix plus abordables en se basant sur
les données des autres utilisateurs.
o Informer les utilisateurs pour profiter des offres promotionnelles dans des
catégories ou des sous catégories
o Notification Financière Personnalisée : Cette fonctionnalité exploite les
données des autres utilisateurs pour fournir des recommandations
personnalisées. Elle propose des suggestions visant à améliorer les
revenus, telles que le travail indépendant sur des plateformes de
freelance et des sites de vente en ligne ainsi que des conseils
d'investissement pour la retraite, dans le cadre de publicité.
• Notifications, Alertes et Conseils d’optimisation :
▪ Notifications pour les Dépenses Récurrentes à montants Fixes :
Les utilisateurs reçoivent des notifications pour les dépenses
récurrentes telles que les abonnements.
▪ Notifications pour les Dépenses Récurrentes à montants Variables:
Les alertes sont générées pour les dépenses variables, par
exemple, les factures d'électricité.
▪ Détection des Dépenses Ponctuelles avec Date Limite : Les
utilisateurs sont avertis des dépenses ponctuelles avec date limite,
comme les amendes.

21
▪ Notification push quelques jours avant la date prévue d’une
dépense importante
▪ Une notification informative est envoyée de manière ciblée pour
signaler le dépassement des seuils et éventuellement présenter
des publicités, tout en suggérant d'autres alternatives.
▪ Notification des Prix Immobiliers Locaux : Les utilisateurs résidant
dans une maison louée reçoivent des notifications fournissant des
informations sur les prix immobiliers locaux. En utilisant la
géolocalisation GPS, l'application identifie la position de l'utilisateur
et compare les prix des appartements similaires dans la même
zone. Ces informations aident l'utilisateur à prendre des décisions
éclairées concernant son logement et éventuellement à négocier
un loyer plus juste.
▪ Notification des Salaires dans le Même Domaine : Les utilisateurs
reçoivent des notifications sur les salaires moyens dans le même
domaine professionnel et pour des postes similaires. Cette
fonctionnalité utilise des données agrégées pour fournir des
informations sur les tendances salariales du marché. En
connaissant les salaires moyens dans leur domaine, les utilisateurs
peuvent évaluer leur propre rémunération et explorer des
opportunités pour augmenter leurs revenus, que ce soit par le biais
de négociations salariales ou en cherchant des sources
supplémentaires de revenus.
▪ Recommandations Basées sur les Habitudes Financières : Des
conseils personnalisés sont fournis en fonction des habitudes
financières de l'utilisateur.

• Consultation du Log d’activités :


Suivi Transparent : L'historique des modifications permet à l'administrateur
de suivre de manière transparente toutes les actions effectuées dans le
système, y compris les ajouts, les modifications et les suppressions de
données, garantissant ainsi la traçabilité et la transparence du système.

2.3.2- Besoins non fonctionnels :

Le besoin non fonctionnel se réfère à toutes les exigences qui ne décrivent pas une
fonction logicielle. Il définit les attributs et les spécifications liés aux performances ainsi
qu'aux contraintes d'implémentation du système.

Dans notre projet, l’application doit répondre à différentes contraintes suivantes :

o Contraintes techniques :

22
• Maintenabilité :
Les mises à jour de l'application doivent être facilement effectuées pour assurer
la résilience du système initial.
• Validité :
L'application doit accomplir de manière précise les actions spécifiées afin
d'assurer la validité des résultats.
• Performance :
L'application doit avoir des délais de réponse rapides pour garantir une
expérience utilisateur cohérente et efficace.
• Fiabilité :
Les informations générées par l'application doivent êtres fiables, le système doit
produit des résultats précis.
• Compatibilité avec différents systèmes d'exploitation et navigateurs :
La solution doit être compatible avec différents systèmes d'exploitation et
navigateurs web pour permettre un accès facile à tous les utilisateurs et
gestionnaires des comptes.

o Contraintes ergonomiques :
• Interfaces:
Les interfaces utilisateur doivent présenter une simplicité attrayante avec une
homogénéité visuelle (polices, taille, couleurs, images, etc.) et compréhensibles
pour offrir une expérience utilisateur fluide.
• Organisation des rubriques et onglets :
La disposition des sections et des pages doit être transparente et facile à
comprendre, favorisant ainsi une navigation simple pour l'utilisateur.
• Niveau d'intellection de l'utilisateur :
L'application doit être conçue en tenant compte du niveau de familiarité de
l'utilisateur, garantissant ainsi une expérience intuitive et accessible, adaptée à
ses compétences et habitudes.
• La sécurité :
La solution doit garantir l'intégrité et la confidentialité des données des utilisateurs.

2.4- L’intégration de Scrum dans le processus de développement du projet


Après avoir constaté que ce projet sera travaillé avec la méthode Scrum qui
est inclut dans la méthodologie Agile, nous explorerons dans les parties suivantes
les trois piliers fondamentaux de cette méthode et leur application spécifique à notre
contexte.
➢ Les intervenants de notre projet

23
[Figure 7 : Intervenants]

PBI User Story Priorité


Inscription
Authentification
Récupération de mot
de passe oublié
Gestion de profil
Déclaration des
revenus
Déclaration des
dépenses
Gestion des
utilisateurs
Vue d’ensemble des
comptes
Notifications et alertes
Conseils
d’optimisation
Gestion des
catégories et des
noms des
établissements
Communication avec
les utilisateurs
mobiles
Tableau de Bord
Personnalisé
Prédiction des
dépenses futures
Historique des
modifications

24
2.5- Chronogramme prévisionnel
2.7- Langage de Modélisation

L’UML : Le langage UML (Unified Modeling Language, ou langage de modélisation unifié) a


été pensé pour être un langage de modélisation visuelle commun, et riche sémantiquement
et syntaxiquement. Il est destiné à l'architecture, la conception et la mise en œuvre de
systèmes logiciels complexes par leur structure aussi bien que leur comportement. L'UML a
des applications qui vont au-delà du développement logiciel, notamment pour les flux de
processus dans l'industrie.
//(https://www.lucidchart.com/pages/fr/langage-uml)

[Figure 8 : Logo UML]

2.6- Diagramme de cas d’utilisation


Une représentation globale du comportement fonctionnel du projet.
La figure (figure 7) décrit le cas d’utilisation général qu’un administrateur/utilisateur pourrait
effectuer.

25
[Figure 7 : Diagramme de cas d’utilisation global]

2.5- Environnement de travail et choix techniques

26
2.5.1- Environnement matériel

Caractéristique Valeur
Brand DELL
Processeur Intel(R) Core(TM) i7-7500U CPU @
2.70GHz 2.90 GHz
RAM 8.00 Go
Système d’exploitation Windows 11 Professionnel, version
21H2, build 22000

Caractéristique Valeur
Brand DELL
Processeur Intel(R) Core(TM) i5-10500H CPU @
2.50GHz 2.50 GHz
RAM 12.0 GB
Système d’exploitation Windows 10 Professionnel, version
10.0.1945, build 19045

Caractéristique Valeur
Nom VPS
Processeur AMD EPYC 7282 16-Core Processor
RAM 8 GB
Système d’exploitation Ubuntu Server 20.04.6 LTS (Linux)

2.5.2- Environnement logiciel

Dans cette section, nous allons parler de la liste des outils qu’on a profité pour préparer
notre environnement logiciel pour ce projet :

• Visual Studio Code : Visual Studio Code est présenté comme un éditeur de code
multiplateforme, open source et gratuit, supportant une dizaine de langages. Nous
l’avons utilisé comme le principal éditeur de texte dans notre projet.
https://fr.wikipedia.org/wiki/Visual_Studio_Code

[figure 9: logo Visual Studio Code]


• Draw.io: Draw.io est une application gratuite en ligne, accessible via son navigateur
qui permet de dessiner des diagrammes ou des organigrammes. Nous avons utilisé
cette application pour faire la modélisation du projet.
https://www.tice-education.fr/tous-les-articles-er-ressources/articles-internet/819-draw-io-
un-outil-pour-dessiner-des-diagrammes-en-ligne

27
[figure 10: logo Draw.io]

• Google colab: Google Colab ou Colaboratory est un service cloud, offert par
Google (gratuit), basé sur Jupyter Notebook et destiné à la formation et à la
recherche dans l’apprentissage automatique. Nous avons choisi Google Colab pour
la gestion du l’environnement Python.
https://ledatascientist.com/google-colab-le-guide-ultime/

[figure11: logo Google Colab]

• Git: Git est de loin le système de contrôle de version le plus largement utilisé
aujourd'hui. Git est un projet open source avancé, qui est activement maintenu. Nous
avons utilisé Git pour contrôler la version des codes du projet.
https://www.atlassian.com/fr/git/tutorials/what-is-git

[figure 12 : logo Git]

• GitHub: GitHub est une plateforme open source de gestion de versions et de


collaboration destinée aux développeurs de logiciels. Nous l’avons utilisé pour
sauvegarder notre projet et faciliter la collaboration.
https://www.lemagit.fr/definition/GitHub

[figure 13 : logo GitHub]

• PhpMyAdmin : PhpMyAdmin (PMA) est une application Web de gestion pour les
systèmes de gestion de base de données MySQL, réalisée principalement en PHP
et distribuée sous licence GNU GPL. Nous l’avons utilisé pour la gestion de base de
donnée MySQL.
https://fr.wikipedia.org/wiki/PhpMyAdmin

28
[figure 14 : logo PhpMyAdmin]

• SmarTTY: SmarTTY est un client SSH soigné comportant plusieurs onglets et


prenant en charge SSH. Il est extrêmement facile de se connecter au serveurs SSH
et d’échanger des fichiers. Nous avons utilisé SmarTTY pour se connecter et
transférer les fichier au serveur de manière sécurisée et facile.
https://tireratelecoms.over-blog.com/2019/09/ssh-client-smartty.html

[figure 15: logo SmaTTY]

2.5.3- Environnement techniques

Nous présentons, dans cette section, les choix et les Framework utilisés pour la réalisation
de ce projet :

• React JS : est une bibliothèque JavaScript frontale à code source ouvert permettant
de créer des interfaces utilisateur ou des composants d'interface utilisateur. Elle est
maintenue par Facebook et une communauté de développeurs individuels et
d'entreprises.
https://www.50a.fr/0/react

[figure 16: logo React JS]

• Node JS et Express JS :
Node est un environnement d’exécution single-thread, open-source et multi-
plateforme permettant de créer des applications rapides et évolutives côté serveur et
en réseau. Il fonctionne avec le moteur d’exécution JavaScript V8 et utilise une
architecture d’E / S non bloquante et pilotée par les événements, ce qui le rend
efficace et adapté aux applications en temps réel.
https://kinsta.com/fr/base-de-connaissances/qu-est-ce-que-node-js/

Express est le Framework actuellement le plus populaire dans Node et est la


bibliothèque sous-jacente pour un grand nombre d'autres cadres applicatifs web pour
Node.
https://developer.mozilla.org/fr/docs/Learn/Server-side/Express_Nodejs/Introduction

29
[figure 17 : logo Node JS avec Express JS]

• MySQL : est un système de gestion de bases de données relationnelles (SGBDR). Il


fait partie des logiciels de gestion de base de données les plus utilisés au monde3,
autant par le grand public (applications web principalement) que par des
professionnels.
https://fr.wikipedia.org/wiki/MySQL

[figure 18 : logo MySQL]

• Ionic : est un Framework libre d'utilisation qui permet de créer des applications
mobiles pour iOS, Android et Windows Phone, à partir d'une base de code unique.
En d'autres termes, Ionic est un outil de développement mobile multiplateforme. C'est
aujourd'hui le meilleur Framework open-source au monde pour la création
d'applications mobiles (hybrides) multiplateformes.
https://ibracilinks.com/blog/quest-ce-que-ionic-et-pourquoi-lutiliser

[figure 19: logo ionic]


*
• Capacitor: Capacitor est un environnement d’application multi plates-formes conçu
par Ionic pour faciliter la création d’applications Web fonctionnant de manière native
sur iOS, Android, Electron et sur le Web.
https://ibracilinks.com/blog/ionic-cordova-capacitor-tout-ce-que-vous-devez-
savoir#:~:text=Capacitor%20est%20un%20environnement%20d,Electron%20et%20sur%2
0le%20Web.

[figure 20 : logo capacitor]

• Postman : Postman est une plateforme API conçue pour créer et utiliser des API.
Postman simplifie chaque étape du cycle de vie des API et facilite la collaboration,
vous permettant ainsi de créer des API de meilleure qualité, plus rapidement.

30
[figure 21 : logo Postman]

2.6- Architecture adoptée :

L'architecture d'un système informatique se réfère à la structure fonctionnelle et physique


du système qui interagissent pour atteindre des objectifs spécifiques.
L’architecture client-serveur est la plus couramment utilisée

Une architecture client-serveur représente l’environnement dans lequel des applications de


machines clientes communiquent avec des applications de machines de type serveurs.
L’exemple classique est le navigateur Web d’un client qui demande (on parle de “requête”)
le contenu d’une page Web à un serveur Web qui lui renvoie le résultat (on parle de
“réponse”), les paragraphes suivants parlent des types d’architecture client-serveur :

L’architecture 2-tiers :
Si toutes les ressources nécessaires sont présentes sur un seul serveur, on parle
d’architecture à deux niveaux ou 2 tiers (1 client + 1 serveur).
L’architecture 3-tiers :
Si certaines ressources sont présentes sur un deuxième serveur (par exemple des
bases de données), on parle d’architecture à trois niveaux ou 3 tiers (1 client interroge
le premier serveur qui lui-même interroge le deuxième serveur).
L’architecture N-tiers :
Au-delà de 3 acteurs, on parle d’architecture à n tiers. C’est un modèle logique
d'architecture dans lequel une application est organisée en un empilement de n
couches logicielles.

Pour notre projet, nous avons adopté l’architecture 3-tiers qui est une extension du modèle
client/serveur. Cette architecture vise à séparer très nettement trois couches logicielles au
sein d'une même application ou système, à modéliser et présenter cette application comme
un empilement de trois couches, étages, niveaux ou strates dont le rôle est clairement défini
:

• La présentation des données : impliquant l'affichage et la restitution des


informations, ainsi que le dialogue avec l'utilisateur. Dans notre projet, cette couche
sera adaptée pour offrir une interface web dédiée à l'administration, assurant une
expérience optimale sur le poste de travail de l'administrateur. Simultanément, une
interface mobile sera développée pour répondre aux besoins de l'utilisateur,
garantissant une restitution efficace des données sur les appareils mobiles.

31
• Le traitement métier des données : correspondant à la mise en œuvre de
l'ensemble des règles de gestion et de la logique applicative
• L'accès aux données persistantes : Cette couche est spécifiquement dédiée à la
gestion efficace et sécurisée des données stockées, garantissant la stabilité et la
durabilité des informations cruciales pour le fonctionnement de l'application.
Cette architecture offre une séparation claire des responsabilités entre les trois couches
favorisant ainsi la maintenabilité, la scalabilité et la réutilisabilité des composants logiciels.
La figure montre la structure de l’architecture en trois tiers.

[figure 21: Architecture 3-tiers]

2.7- Modèle d’architecture :


Dans le cadre de notre projet, nous avons opté pour une approche combinée de
l'architecture client-serveur 3-tiers et de la Clean Architecture. Grâce à l'architecture 3-
tiers, il est possible de définir clairement les responsabilités entre la présentation, la logique
métier et l'accès aux données persistantes. Simultanément, la Clean Architecture est
intégrée à chaque couche, mettant l'accent sur des principes tels que la dépendance à sens
unique, la séparation des préoccupations et la création de composants indépendants des
détails d'infrastructure. Cette combinaison vise à obtenir une architecture offrant une solide
séparation des préoccupations à travers les différentes couches de l'application.
L'application résultante se distingue par sa modularité, son indépendance et sa testabilité,
renforçant ainsi la flexibilité et la maintenabilité du code. L'utilisation de ces choix
architecturaux est particulièrement avantageuse dans notre projet, en particulier pour
garantir la clarté de la structure et faciliter la maintenance, des aspects essentiels compte
tenu de l'ampleur du projet.

Les principes fondamentaux de la Clean Architecture s’articulent autour de concepts


clés tels que :
L’indépendance vis-à-vis du Framework : L’architecture ne doit pas dépendre des
bibliothèques logicielles. Cela permet de minimiser le coût du changement de Framework et
d’assurer une plus grande agilité dans le développement.
La testabilité : Le système d’entreprise doit être testable sans UI, base de données, serveur
web ou tout autre élément externe.
L’indépendance vis-à-vis de l’UI : L’interface utilisateur peut changer facilement, sans
modification majeure du reste du système. Une application web peut devenir une application
de bureau sans réécrire la logique métier.
L’indépendance vis-à-vis de la base de données : La logique métier ne dépend pas du
type de base de données utilisée, permettant ainsi un changement aisé de système de
stockage.

32
L’indépendance des agents extérieurs : La logique métier ne doit pas être affectée par
des changements dans des services externes, qu’il s’agisse de serveurs web ou d’autres
formes d’interfaces

Les Composants de la Clean Architecture


La Clean Architecture se compose de plusieurs couches, chacune avec sa propre
responsabilité. Comprendre le rôle de chaque composant est essentiel pour maîtriser la
mise en œuvre de cette architecture. Examinons les éléments qui constituent cette structure
méthodique :
Les Entités (Entities) :
Au cœur de la Clean Architecture se trouvent les entités. Ce sont les objets du domaine
métier qui incarnent les règles et cas d’usage les plus généraux de l’application. Les entités
sont indépendantes des détails techniques et peuvent être utilisées par toutes les couches
de l’application.
Les Cas d’Usage (Use Cases) :
Autour des entités, nous trouvons les cas d’usage. Ils encapsulent toute la logique métier
spécifique à l’application. Un cas d’usage décrit une action spécifique que l’utilisateur veut
effectuer et les règles métier qui l’encadrent. Il interagit avec les entités et détermine
comment les données doivent être transmises entre les entités et les couches extérieures.
Les Adaptateurs d’Interface (Interface Adapters) :
Cette couche, souvent appelée “controllers”, “presenters” ou “gateways”, fait le lien entre les
cas d’usage et les couches les plus externes. Elle adapte les données aux formats
nécessaires pour les cas d’usage et les présente ensuite dans le format requis par l’interface
utilisateur ou d’autres API.
Les Interfaces Utilisateurs (UIs) et les Framework et Drivers :
Enfin, la couche externe comprend tout ce qui est en contact avec le monde extérieur,
comme l’interface utilisateur, les systèmes de bases de données, les serveurs web, etc.
Cette couche est tenue à l’écart des règles métier et sert uniquement à communiquer avec
d’autres systèmes ou avec l’utilisateur.
https://medium.com/@abderrahmane.roumane.ext/les-fondements-de-la-clean-
architecture-une-voie-vers-un-code-durable-
1542f91f9d0a#:~:text=Historiquement%2C%20la%20Clean%20Architecture%20s,et%20la
%20souplesse%20de%20conception.
Ces composant sont bien présentés dans la figure ci-dessous :

[Figure 22 : Architecture Clean]


2.11- Conclusion :

En somme, la réussite d'un projet repose sur une combinaison d'éléments, allant de
l'identification des intervenants à la mise en place d'une architecture adaptée. Tout au long
du processus, il est important de définir clairement les besoins, d'intégrer des
méthodologies de développement agiles comme Scrum, et de maintenir une
communication efficace entre les membres de l'équipe. En mettant l'accent sur la qualité et

33
la durabilité du système, on maximise les chances de succès et de satisfaction des parties
prenantes.

Chapitre 3
Sprint 1 :
Fondations et Déploiement Initial

34
3.1- Introduction

35

Vous aimerez peut-être aussi