ligne
11 juin 2019
Introduction générale
Les systèmes e-gov concernent tout échange dématérialisé entre les autorités publiques
(ministères, services de l’état et organismes publics) et les usagers (entreprises, citoyens,
foyers fiscaux). Les gouvernement sont toujours en retards pour digitaliser ses systèmes d’in-
formations vue à sa sensibilité et sa criticité. D’ailleurs les gouvernement commencent par les
services les plus rentables en cas de passage au digital. Puisque les impôts sont parmi les plus
importantes ressources de financement pour chaque États, donc un système de déclaration
des impôts en ligne est primordiale pour une États qui veut migrer vers le monde de digital
et suivre la mode e-gov.
Notre problématique entre dans la plage des systèmes e-gov. Ces sont toutes procédures
gouvernementales qui se fait en ligne. L’émergence du gouvernement électronique tant sur le
plan pratique que conceptuel a été l’une des évolutions majeures de ces 10 dernières années
au sein de l’administration publique. Il a fait apparaître un nouveau vocabulaire, des modèles
théoriques et des liens entre les disciplines et entre la théorie et la pratique. L’e-gouvernement
est, par nature, un phénomène en constante évolution.
Dans le cadre de notre cursus d’ingénieur informatique spécialisé en génie logiciel, réalisé
au sein de l’université libre de Tunis, nous devons faire un stage professionnel, au sein d’une
entreprise au choix, qui dure entre quatre et six mois. L’objectif de ce stage est de réaliser
un projet qui validera nos connaissances et nos compétences et surtout de s’initier à la vie
professionnel en tant qu’un ingénieur informatique.
Pendant ce stage, nous avons passer une première période en faisant une étude sur le
métier du déclaration des impôts et les télé-procédures. Une fois que nous avons bien compris
la problématique, nous avons pu proposer une solution avec les méthodologies qui la mets en
évidence.
Nous avons modéliser notre solution selon des modèles formels qui assurent la clarté des
idées et la bonne compréhension, par suite la réutilisation de la solution entière ou bien de
1
quelques composants.
Nous avons implémenter notre proposition, afin de prouver sa faisabilité, et sa pertinence.
A la fin nous avons tester le fonctionnement de notre système, pour vérifier l’atteinte des
objectifs prévu.
2
Chapitre 1
Étude préalable
Dans ce premier chapitre de notre rapport, nous allons positionner le projet fait dans son
contexte général. Nous entamons dans un premier temps par la présentation l’université et
de l’organisme d’accueil. Nous allons définir dans un deuxième temps le contexte du projet,
qui nous permet de conclure la problématique pour laquelle nous proposons une solution. A
la fin de ce chapitre, nous présentons les méthodologies adoptée pour ce projet.
3
Figure 1.1 – Logo de l’Université Libre de Tunis [1]
1.2.1 Activités
1.2.2 Structure
4
Figure 1.2 – Structure de la société ArabSoft
Depuis 2007 ArabSoft a crée une unité spécialisée dans les nouvelles technologies appelée
BGI (Bonne Gouvernance Informatique) avec un effectif de 56 ingénieurs. BGI est sous la
direction des projets, et regroupe les chefs des projets, les experts métiers et les ingénieurs
développeurs. Généralement les technologies les plus utilisés dans BGI sont Dot.net C# en
mode web et J2EE (ADF Oracle & Weblogic). Parmi les stratégies du ArabSoft et BGI, les
systèmes e-gov sont en vogue. C’est dans ce contexte que nous étions intégrés sous la direction
des projets avec les ingénieurs développeurs, afin d’élaborer la plateforme des télé-déclaration
des impôts durant notre période du stage qui dure quatre mois.
5
Figure 1.3 – Logo BGI : bonne gouvernance informatique
Les TIC nous aident à être plus réactifs grâce à l’intégration des technologies de l’informa-
tion dans les procédures, il est possible d’informer systématiquement l’usager de l’état de son
dossier, des actions qu’il doit entreprendre. Les TIC permettent de personnaliser d’avantage
la relation avec l’usager. "Personnaliser le service, c’est renverser la logique qui veut que le
demandeur s’adapte au découpage administratif" [4], et rendre à l’usager un service complet.
Les technologies de l’information peuvent nous aider dans ce sens, en accroissant l’efficacité
du transport d’informations entre services et avec les partenaires locaux de l’État.
Les TIC permettent de nouveaux accès à l’administration, plus souples, et plus simples. Avec
Internet, les services publics peuvent être plus facilement accessibles au plus grand nombre.
Un nouveau contact se crée entre les citoyens, les entreprises et les services publics, un nou-
veau accès à l’information et aux démarches administratives. Développer les services en ligne
de bout en bout, accessibles, multi-canaux et centrés autour des besoins du Citoyen, de l’En-
treprise et de l’Administration. L’usager est considéré comme le point central autour duquel
6
sont organisés les services et les procédures administratives.
L’accès aux services devrait être simplifié tout en faisant abstraction de la complexité de
l’organisation de l’administration et la répartition des activités. Il rassemble tous les services
et procédures nécessaires pour répondre à un événement de vie particulier. Un niveau in-
formationnel permettrait d’ores et déjà de s’affranchir de la complexité de l’administration.
Le processus de digitalisation et de personnalisation de ces services est à entamer l’ère des
télé-procédures.
Derrière ce terme barbare de "télé-procédure" se cachent des services qui pourraient bien
simplifier les relations avec les administrations. Selon la définition officielle, "la télé-procédure
concerne tout échange dématérialisé entre les autorités publiques (ministères, services de l’état
et organismes publics) et les usagers (entreprises, citoyens, foyers fiscaux)" [4]. Il s’agit en
fait de proposer une large gamme de services et d’informations dont chacun peut bénéficier
directement chez lui par l’intermédiaire d’internet. Une télé-procédure se définit comme un
échange relatif à une formalité administrative réalisé à distance (par Internet et à l’aide d’un
formulaire électronique) entre les services publics et ses usagers. Avec les télé-procédures,
l’enregistrement de la formalité et son traitement par les administrations s’effectuent entiére-
ment sous forme électronique. Le succès des télé-procédures est lié à la confiance des utilisa-
teurs. Aussi l’ensemble des télé-procédures proposé par les organismes publics sont sécurisées :
• sécurisation de l’accès au service (par mot de passe par exemple)
• cryptage des données envoyées
• protection des données personnelles
• reconnaissance légale de la signature électronique
La télé-procédure offre plusieurs avantages pour les entreprises puisqu’elles ne se déplacent
plus, elles s’affranchissent des horaires de l’administration et la procédure pour remplir les
formulaires électroniques est clairement expliquée étape par étape grâce à une aide en ligne.
Elles obtiennent immédiatement l’attestation correspondant à la formalité effectuée et surtout
elles sont informée de l’évolution de ses traitements si elles nécessitent un examen particulier.
L’objectif de notre projet est d’élaborer une plateforme de télé-procédure qui permet aux
contribuables de déclarer ces impôts en ligne. Pour ce faire, nous avons fait une recherche
7
sur le processus métier en question pour bien comprendre le besoin.
La déclaration des impôts à travers le canal de l’Internet se développe dans le monde
entier. Pour les déclarations fiscales, les entreprises pourront procéder à la déclaration en
ligne auprès des services de la Direction Générale des impôts. La Télé-déclaration fiscale
est un service sécurisé qui permet aux contribuables d’effectuer à distance une liquidation
automatique et assistée de leurs impôts et taxes ainsi que le règlement électronique des
montants dus et le suivi de ses payements antérieurs. Cette application couvre par ses services
tous les contribuables patentés : Personnes Morale et Physique.
Ce service permet aux contribuables adhérents de liquider et déclarer leurs impôts à partir
de leur poste de travail en se connectant sur internet et en invoquant un service web. il doit
permettre aux contribuables de faire des :
• déclarations mensuelles d’impôts,
• déclarations annuelles ,
• dépôt des déclarations de l’impôt sur les sociétés,
• déclarations de l’avance due par les sociétés, les personnes et assimilées,
• déclarations de l’impôt sur le revenu des personnes physiques,
• déclarations de l’acompte provisionnel.
Par abuse de langage, nous appelons cette procédure télé-déclaration. Par contre c’est une
télé-liquidation. La différence est que cette dernière s’arrête au niveau de remplissage des
formulaires et validation du l’opération. La télé-déclaration englobe aussi le payement des
impôts en ligne. Pour notre projet, nous se focalisent sur la télé-liquidation des impôts.
8
Déclaration des impôts
"L’impôt constitue un des prélèvements obligatoires effectué par voie d’autorité par la
puissance publique (l’État et les collectivités territoriales) sur les ressources des personnes
vivant sur son territoire ou y possédant des intérêts. Sans contrepartie directe pour le contri-
buable, ce prélèvement est destiné à être affecté par l’intermédiaire des budgets publics aux
services d’utilité générale" [5]. Dans les États démocratiques, le pouvoir de fixer, de lever
et d’affecter l’impôt est de la compétence exclusive du pouvoir législatif. Trois paramètres
essentiels permettent de caractériser un impôt : l’assiette, le taux et les modalités de recou-
vrement.
Historiquement, l’impôt est un élément important qui n’a cessé de conditionner l’existence,
la gestion et la puissance des États : constituant généralement une part importante, pour ne
pas dire la plupart du temps essentielle, des recettes publiques avec les cotisations sociales,
les impôts alimentent le budget de l’État ou d’une subdivision nationale ou fédérale (comme
une province, une subdivision territoriale, un territoire, un département, un district, etc.), et
dans une moindre mesure des organismes à compétence spécialisée.
L’impôt est généralement pécuniaire, exigé des personnes (physiques ou morales, pu-
bliques ou privées, locales ou internationales), en fonction de leurs capacités contributives,
par la puissance publique, d’après une procédure et des règles fixes, à titre définitif, et sans
contrepartie immédiate, en vue de la couverture des charges publiques, et de la poursuite de
politique économique et sociale.
Tunisie : e-Jebaya
9
Figure 1.4 – Système télé-déclaration des impôts en Tunisie [6]
Algérie : Jibaya’Tic
10
• Une documentation complète sur le système fiscal algérien sur le site web.
Maroc : SIMPL
Le service SIMPL [8], est le service de télé-déclaration marocain. Il permet aux entreprises
marocaines de s’acquitter de leurs obligations fiscales en ligne. La télé-déclaration est obliga-
toire pour toutes les entreprises. Les entreprises qui ne passent pas au mode de déclarations
en ligne auront à payer une pénalité de 15% sur le montant à régler. Les services SIMPL
actuellement disponibles se présentent comme suit :
• SIMPL-Adhésion : pour l’adhésion en ligne aux services SIMPL,
11
• SIMPL- TVA : pour la déclaration et le paiement en ligne de la taxe sur la valeur
ajoutée,
• SIMPL-IS : pour la télé-déclaration et le télé-paiement de l’impôt sur les sociétés,
• SIMPL-IR : pour la télé-déclaration du Revenu global annuel.
1.3.4 Problématique
12
Nous citons comme exemple le pourcentage de revenu à payer comme étant impôts. Même
si dans le même pays et le même système, ce taux change régulièrement avec le changement
du loi des finances du pays concernés. De sa part, ArabSoft comme étant spécialiste dans
l’élaboration des systèmes de gestions généralement, elle reçoit une très forte demande sur
les systèmes de télé-déclaration. Comme le marché Africain, est le plus demandeur de service
chez ArabSoft, donc la direction des projets sous laquelle nous effectuions notre stage a décidé
de produire un système qui répond à tous les contraintes d’un système de télé-déclaration.
Ce dernier doit être générique avec la possibilité de paramétrage en cas de besoin de modifier
l’un des paramètres. Par conséquent notre problématique est de trouver une solution à cette
question : comment peut on concevoir et développer un système de télé-déclaration des impôts
qui s’adapte facilement aux changement régulier, ou bien d’un pays à un autre ?
La mission de chercher une solution pour la problématique en dessus, nous a été confier.
Nous avons passer au début de notre stage une période consacré à la recherche et l’étude,
afin de fournir une solution efficiente. Nous avons donner le nom "OnImpôts" pour notre
solution, extrait du mot anglaise "Online" qui signifie en ligne, et le mot impôts concerne
l’objectif principale du notre solution. La figure 1.8 représente le logo choisi pour notre so-
lution. C’est un système qui profite des nouvelles technologies et tendances dans le monde
de génie logiciel. OnImpôts devra être équipée d’une interface graphique intuitive et simple
de tel façon à ne nécessiter un apprentissage particulier de la part de ses utilisateurs. Notre
solution doit respecter la procédure réelle d’une déclaration d’impôts. Cette procédure com-
mence lorsque un citoyen(personne physique ou morale), se déplace chez le service local de
l’autorité responsable le plus proche, pour déposer une demande d’adhésion. Cette dernière
doit fournir un grand nombre des informations concernant le contribuable, ainsi que les pièces
justificatives. Après le dépôt, la demande va être transférer au spécialistes pour l’étude et
la validation. Une fois la demande d’adhésion est validé, un numéro d’identification fiscale
(NIF) sera attribué à ce contribuable. Il fera partie du système d’information de l’autorité,
à ce stade. Par suite, il doit se déplacer au même service, pour faire ses déclarations d’im-
pôts. Selon le type d’activité, le revenu et plusieurs autres critères, cet acte de déclaration
se répète périodiquement, il peut se faire même chaque mois. Notre objectif pour ce projet,
est d’informatiser le système d’information existant. Par suite, tous les processus vont être
13
migrer du classique et traditionnel, aux numériques. Notre système, OnImpôts doit offrir
principalement les processus suivants qui se divisent en deux grandes parties :
• Coté contribuable : les interfaces de déclaration des impôts qui s’affichent chez le
contribuable.
— Demander l’adhésion au système : cet étape représente tout un processus com-
plexe, ce n’est pas une simple inscription. Le contribuable rempli un ensemble des
formulaires et joint les pièces justificatives et les enregistrent sur le système. Et il
attend que son demande soit étudier et valider par l’administration.
— S’authentifier : une fois la demande d’adhésion est validé, le contribuable peut se
présenter au système pour faire des déclarations d’impôts.
— Déclarer ses impôts : tous comme la procédure classique, la déclaration d’impôts
en ligne est un ensemble des formulaires à remplir dûment, totalement dépendante
du type et secteur d’activité et surtout aux revenus qu’il gagne le contribuable.
— Valider sa déclaration : le contribuable peut remplir les formulaires des déclara-
tions, et revenir plus tard pour les modifier ou les valider tant que les délais ne
sont pas encore dépasser. Une fois valider la déclaration en question ne peut pas
être rectifier. En ce moment, la direction peut consulter la déclaration.
— Se documenter : le système doit offrir une large gamme de documentation, conte-
nant un guide d’utilisation, les textes législatives, etc.
• Coté Administration (Autorité) : les interfaces d’administration qui s’affichent chez
l’employé responsable confié.
— Valider une demande d’adhésion : une demande d’adhésion déposer par un contri-
buable, doit être valider par la direction, en vérifiant les informations données, et
les documents justificatives. La direction attribue un NIF à chaque contribuable,
c’est le plus important identifiant pour faire des opérations de déclaration d’impôts.
— Gérer un compte d’un contribuable : l’administrateur système peut effectuer les
opérations de gestion sur le compte du contribuable, par exemple il peut désactiver
un compte d’une personne morale si elle n’existe plus cause à une faillite.
— Consulter une déclaration validé.
14
Figure 1.8 – Logo OnImpôts
15
pect métier et aspect technique d’une application, grâce à la modélisation. L’approche MDA
[10] distingue deux aspects principaux dans le processus de développement d’une application,
l’aspect métier qui représente les fonctions de l’application, et l’aspect technique qui repré-
sente la technologie de mise en œuvre de l’application. Chaque aspect est exprimé par un
ensemble de modèles, qui véhiculent l’information nécessaire à la génération du code source
de l’application. On passe d’une vue contemplative des modèles à une vue productive. MDA
définit trois niveaux de modèles représentant les niveaux d’abstraction de l’application, le
CIM, le PIM et le PSM :
• Modèle CIM- Computational Independant Model :
Les modèles d’exigence CIM décrivent les besoins fonctionnels de l’application, aussi
bien les services qu’elle offre et les entités avec lesquelles elle interagit. Leur rôle est
de décrire l’application indépendamment des détails liés à son implémentation. Les
CIM peuvent servir de référence pour s’assurer que l’application finie correspond aux
demandes des clients.
• Modèle PIM- Platform Independant Model :
Les modèles PIM sont les modèles d’analyse et de conception de l’application. La phase
de conception à cette étape du processus suppose l’application de Design pattern, le
découpage de l’application en modules et sous-modules, etc. Le rôle des PIM est de
donner une vision structurelle et dynamique de l’application, toujours indépendam-
ment de la conception technique de l’application.
• Modèle PM- Platform Model :
Rarement utilisé, un PM décrit la structure, et les fonctions techniques relatives à
une plateforme d’exécution (systèmes de fichiers, de mémoire, de BDD. . .) et précise
comment les utiliser. Le PM est associé au PIM pour obtenir le PSM.
• Modèle PSM- Platform Specific Model :
Le PSM est le modèle qui se rapproche le plus du code final de l’application. Un
PSM est un modèle de code qui décrit l’implémentation d’une application sur une
plateforme particulière, il est donc lié à une plateforme d’exécution.
• Code source :
Représente le résultat final du processus MDA, le code source est obtenu par génération
automatique (partielle ou totale) du code de l’application à partir du PSM. Le code
source obtenu peut toujours être enrichi ou modifié manuellement.
L’OMG a défini l’approche MDA pour répondre aux problèmes liés à l’évolution continue
16
des technologies. MDA est à l’origine de l’ingénierie dirigée par les modèles. Tout ce qui
constitue l’approche MDA, la modélisation, les transformations, les technologies de mises en
œuvre. . . a été pensé afin de permettre à MDA de remplir les objectifs suivants :
• La pérennité des savoir-faire :
La technologie évolue plus vite que les métiers de l’entreprise. Il semble alors plus
intéressant de capitaliser les savoir-faire de l’entreprise indépendamment des préoccu-
pations techniques.
• Les gains de productivité :
Les modèles sont au cœur du processus MDA, ils facilitent la communication entre
experts du domaine et développeurs. mais pas seulement. Dans MDA les modèles
deviennent un outil de production grâce à l’automatisation des transformations de
modèles.
• La prise en compte des plateformes d’exécution :
À partir du PIM, MDA permet d’intégrer les spécifications techniques d’une plate-
forme d’exécution dans les transformations PIM vers PSM, et d’obtenir ainsi un PSM
spécifique à la plateforme d’exécution, à partir duquel le code source de l’application
est généré.
1.4.2 DevOps
DevOps est une approche basée sur les principes Lean et Agile et qui regroupe l’ensemble
des parties prenantes (développement, assurance qualité, exploitation) collaborant ensemble
pour délivrer des logiciels en continu [11]. Ceci permet donc aux entreprises de saisir plus
rapidement les opportunités du marché et d’accélérer la prise en compte des retours clients.
Également, elle permet de rapprocher les perspectives antagonistes en aidant les équipes à
définir ensemble les objectifs métier et à les modifier en continu en fonction des retours de
manière à améliorer à la fois l’agilité et les résultats d’entreprise. DevOps intervient donc sur
l’ensemble du cycle de vie des applications. DevOps améliore la manière dont les entreprises
apportent de la valeur à leurs clients, fournisseurs et partenaires. Elle offre les avantages sur
les 3 domaines ci-dessous :
• Amélioration de l’expérience client : permet de fidéliser les clients et d’accroître les
parts de marché. Pour apporter cette expérience, une entreprise doit obtenir et ré-
pondre en continu aux retours clients.
17
• Accroissement de la capacité à innover : DevOps applique les pratiques Lean afin de
réduire le gaspillage et la reprise de travail tout en exécutant les activités à forte valeur
ajoutée.
• Accélération du retour sur investissement : implique de développer une culture, des
pratiques et une automatisation afin de délivrer les logiciels rapidement, efficacement
et de manière fiable jusqu’à la mise en production.
Tandis que l’approche MDA, et la méthode DevOps, nous aide à réaliser les objectifs de
notre projets, ils ne définit pas un cycle de vie claire pour une solution logicielle. Ce que
nous pousse à choisir une méthode qui définit les étapes de création d’un logiciel, afin de bien
planifier pour notre projet. Notre choix consiste en la méthode RUP.
La méthode du Processus Unifié (UP pour Unified Process) est un processus de dévelop-
pement itératif et incrémentale [12], ce qui signifie que le projet est découpé en phases très
courtes à l’issue de chacune desquelles une nouvelle version incrémentée est livrée.
Il s’agit d’une démarche s’appuyant sur la modélisation UML pour la description de l’ar-
chitecture du logiciel (fonctionnelle, logicielle et physique) et la mise au point de cas d’utili-
sation permettant de décrire les besoins et exigences des utilisateurs. RUP (Rational Unified
Process) est une méthode de développement par itérations promue par la société Rational
Software, rachetée par IBM [13]. RUP propose une méthode spécifiant notamment la compo-
sition des équipes et le calendrier ainsi qu’un certain nombre de modèles de documents. RUP
est l’une des plus célèbres implémentations de la démarche UP, livrée clé en main, permet-
tant de donner un cadre de développement logiciel, répondant aux exigences fondamentales
préconisées par les créateurs d’UML. RUP est une version commerciale d’UP. Le processus
unifié regroupe les activités à mener pour transformer les besoins d’un utilisateur en système
logiciel. Ces principales caractéristiques sont :
• Il est à base de composants,
• Il utilise le langage UML (ensemble d’outils et de diagrammes),
• Il est piloté par les cas d’utilisation,
• Il est centré sur l’architecture,
• Il est itératif et incrémentale.
Le cycle de vie d’un projet est propagé sur quatre phases, regroupé dans une itération. Chaque
18
itération résulte une nouvelle version du produit. La figure 1.9 présente le cycle de vie d’un
projet RUP [12]. Les quatre phases du RUP sont consécutives et se présentent comme suit :
• La phase d’inception :
— Établir la portée du projet et les conditions aux limites
— Déterminer les cas d’utilisation et les scénarios principaux
— Proposer une architecture
— Estimer le coût global et le calendrier
— Identifier les risques potentiels et leurs sources
— Démontrer que le système proposé est en mesure de résoudre
— les problèmes ou de prendre en charge les objectifs fixés
— Vision : Glossaire, Détermination des parties prenantes et des utilisateurs, Déter-
mination de leurs besoins, Besoins fonctionnels et non fonctionnels, Contraintes de
conception
• La phase d’élaboration :
— Définir et valider l’architecture de base
— Formuler les cas d’utilisation pour couvrir environ 80% des besoins fonctionnels
— Définir les niveaux de qualité à atteindre,
— Etablir un plan détaillé pour la phase de construction
— Démontrer que l’architecture de base prend en charge «la vision» à un coût rai-
sonnable dans un délai raisonnable
— Architecture : Document d’architecture Logicielle, Différentes vues selon la partie
prenante, Comportement et conception des composants du système
• La phase de construction :
— Produire un logiciel utilisable conforme aux besoins
— Confronter ce logiciel aux critères d’acceptation
— Extension de l’identification, de la description et de la réalisation des cas d’utili-
sation
— Finalisation de l’analyse, de la conception, de l’implémentation et des tests
• La phase de transition :
— Préparation des activités
— Recommandations au client sur la mise à jour de l’environnement logiciel
— Élaboration des manuels et de la documentation concernant la version du produit
— Adaptation du logiciel
19
— Correction des anomalies liées au bêta test
— Dernières corrections
Figure 1.9 – Le cycle de vie d’un produit gérer par RUP [12]
20
1.5.2 Les diagrammes UML : les 4+1 vues
Le modèle « 4+1 » vues [14], dit de Kruchten, d’un système informatique permet d’or-
ganiser la description du système en plusieurs vues complémentaires, chacune présentant le
système selon un point de vue différent. L’utilisation de vues permet de traiter séparément
les intérêts des divers groupes d’intervenants (architectes, utilisateurs, développeurs, chefs de
projets, etc.) et ainsi de mieux séparer les préoccupations fonctionnelles (le domaine d’appli-
cation ou métier ciblé par le système, et les préoccupations extrafonctionnelles (les propriétés
techniques telles que la sûreté de fonctionnement). La figure 1.10 [14] schématise le modèle
« 4+1 » vues.
• La vue « logique » décrit les aspects statiques et dynamiques d’un système en termes
de classes, d’objets, de connexions et de communications. Elle se concentre sur l’abs-
traction et l’encapsulation.
• La vue « processus » capte les aspects de concurrence et de synchronisation, et les
21
décompose en flux d’exécution (processus, fil d’exécution, etc.). Elle se rapporte aux
objets actifs et aux interactions.
• La vue « développement » représente l’organisation statique des modules (exécutable,
codes source, paquetages, etc.) dans l’environnement de développement.
• La vue « physique » décrit les différentes ressources matérielles et l’implantation lo-
gicielle tenant compte de ces ressources. Donc, elle se rapporte aux nœuds physiques
d’exécution et au placement des objets sur les nœuds.
• La dernière vue, appelée « cas d’utilisation », se concentre sur la cohérence en présen-
tant des scénarios d’utilisation qui mettent en œuvre les éléments des quatre premières
vues. Les scénarios sont une abstraction des exigences fonctionnelles de l’application.
Cette dernière vue valide en quelque sorte les autres vues et assure la cohérence glo-
bale. C’est aussi cette dernière vue qui est construite en premier, juste après l’établis-
sement du cahier des charges, pour fixer les contours du système à réaliser avec ses
fonctionnalités appelées, dans la terminologie UML, des cas d’utilisation.
Il n’est pas obligatoire d’utiliser tout ces diagrammes pour concevoir un système, selon
les besoins de chaque projet, nous faisons le choix des diagrammes. Pour notre projet, nous
inspirons des modèles MDA, pour choisir. Le CIM peut être présenté par un diagramme de
cas d’utilisation. Il offre la faculté de définir l’ensemble des acteurs et des cas d’utilisation
sans en détailler le fonctionnement. Le PIM, peut être représenter par le diagramme de classe.
Aussi nous présentons les diagrammes des séquences pour mieux spécifier le comportement
de notre système.
1.6 Conclusion
Dans ce chapitre nous avons étudier généralement notre projet. Nous avons proposer une
solution pour la problématique tiré depuis l’étude de l’existant et le contexte générale du
projet. Nous avons choisi MDA et DevOps pour nous aider à bien réaliser nos objectifs. Pour
la gestion du projet, nous allons suivre la méthode RUP. Dans les chapitres qui suivent, nous
allons suivre le démarche de cette méthode. Commençons par la phase d’inception dans le
chapitre suivant.
22
Chapitre 2
Inception
Il s’agit de mettre en exergue les fonctionnalités de notre application. Ce sont les besoins
spécifiant un comportement d’entrée-sortie du système. Nous n’oublions pas de préciser que
cette liste des besoins permet une certaine flexibilité. Globalement notre application devra
être équipée des fonctionnalités suivantes :
• Côté Administration :
— Authentification : l’administrateur doit s’authentifier pour accéder à ses fonction-
nalités, les données de connexion, vont être stockés directement sur l’application.
— Valider les inscriptions : l’administrateur doit valider les demandes d’adhésion au
système, pour que le processus d’inscription lancé par le contribuable s’achève.
— Gérer le compte d’un contribuable : l’administrateur peut intervenir sur le compte
d’un contribuable, pour faire des mise à jours ou bien pour le supprimer en cas de
besoin, par exemple si une société n’existe plus à cause d’une faillite.
— Consulter les déclarations : l’administrateur peut consulter les déclarations d’im-
23
pôts, afin de les auditer. S’il remarque une anomalie, il peut lancer un processus
d’audit. Ce processus n’est pas gérer par notre système pour le moment.
— Gérer la plateforme : Ce module sert initialement à contrôler la plateforme et d’une
autre part, il offre la possibilité du paramétrage de la plateforme en cas de besoin
d’une modification de quelques paramètres.
• Côté Contribuables :
— Authentification : le contribuable doit s’authentifier pour accéder à son espace, les
données de connexion sont stockés sur la base des données.
— Gérer son profil : le contribuable peut modifier son profil à tout moment.
— Déclarer ses impôts : le contribuable peut déclarer ses impôts, en lui offrant un
système d’aide à la calcul. Il peut laisser ses déclarations en état non validé pour
revenir ultérieurement les valider. Pendant la période entre la déclaration et sa
validation, il peut la rectifier. Seul le contribuable lui même peut consulter la
déclaration en ce moment.
— Valider les déclarations : une fois validées, les déclarations ne peuvent jamais être
modifier.
— Se déconnecter.
• Côté invité : un utilisateur invité peut s’inscrire sur la plateforme. L’inscription à notre
plateforme nécessite tout un processus : le contribuable procède à remplir un formulaire
d’inscription bien détaillé contenant toute information qui semblent indispensable au
cours du processus de télé-déclaration. Une fois soumis par le contribuable, la demande
d’inscription doit être valider par l’administrateur.
• Tâches partagés : Les invités, comme les contribuables peuvent accéder à la documen-
tations.
Les besoins non fonctionnels présentent les exigences internes pour le système et cachées
vis à vis des utilisateurs. Les impératifs les plus immédiats de notre application pris en
considération sont :
• Sécurité : La solution doit être suffisamment sécurisée : identification, authentifica-
tion, gestion des utilisateurs, traçabilité . . .etc. Elle doit assurer l’intégrité, la confi-
dentialité et la disponibilité des documents.
24
• Architecture WEB : La solution doit être basée, sur une architecture WEB permet-
tant son exploitation en modes Intranet, Extranet et éventuellement Internet. Décen-
tralisation : Permettre une gestion décentralisée (en cas de besoin) de la numérisation
et du stockage des archives tout en assurant une réplication des données vers une base
centrale.
• Faible couplage : Le couplage mesure la dépendance entre des classes ou des modules.
Le faible couplage favorise : la faible dépendance entre les classes, la réduction de
l’impact des changements dans une classe, la réutilisation des classes ou modules.
• Approche de programmation générique : La programmation générique repose sur
le principe de paramétrage de classes. Une classe définie dans un langage générique
peut admettre un ou plusieurs paramètres génériques formels, caractérisant son degré
d’ouverture. Les classes génériques permettent de découpler les préoccupations liées
à la définition de structures de données, par exemple, de la spécification du ou des
types de données concrets que détiennent ces structures. Il s’agit de la séparation de
préoccupations de données. Nous pouvons mettre en œuvre cet exigence en suivant
l’approche MDA.
• Qualité logiciel : notre application doit être conforme au norme ISO 25010 de la série
de normes ISO 250xx, également appelée SQuaRE (pour software quality requirements
and evaluation en anglais, c’est-à-dire exigences et évaluation de la qualité du logiciel).
• La rapidité de livraison : le temps de livraison pour notre projet est trop critique, le
cycle de vie totale ne doit pas dépasser quatre mois. Donc nous optons à automatiser
le maximum des tâches pour arriver dans le terme. La méthode DevOps pousse à ce
faire, ce que explique notre choix.
Nous précédons par une détermination des acteurs et des cas d’utilisation : Un acteur
est toute entité qui interagit avec notre système dans le but de réaliser une plus-value et qui
a toujours le même comportement. Un cas d’utilisation est la description d’un ensemble de
séquences d’opérations qu’un système effectue pour répondre au besoin d’un acteur. Notre
application interagit avec les acteurs suivants :
• Administrateur : c’est l’employé qui est confié pour représenter l’autorité.
• Contribuable : c’est l’utilisateur connecté, qui vient de faire une déclaration d’im-
25
pôts.
• Visiteur : c’est l’utilisateur non pas encore connecté.
Ces acteurs sont gérer comme étant des profils, donc il est impossible d’avoir deux profils en
même temps en s’opposant aux système. Par exemple, l’administrateur lorsqu’il veut déclarer
ses impôts, quant à lui, il faut se déconnecter du système. Par suite, il s’authentifie comme
étant un contribuable.
26
Figure 2.1 – Diagramme de cas d’utilisations globale
Nous avons choisi que notre solution soit une application web, puisque c’est le type de sys-
tème le plus facile à utiliser par les utilisateurs finaux. Elle possède des interfaces graphiques
intuitive, facile à comprendre et à manipuler. Elle ne nécessite qu’un ordinateur équipé par un
navigateur et un accès à internet. Elle ne demande aucune installation, ni configuration. De
plus, le développement des application web ne coûte pas trop cher. Et enfin, un développeur
des applications web, a un très large choix entre les langages et les frameworks.
27
distinctes et de ce fait impacte très forcement l’organisation du code. MVC signifie Modèle
– Vue – Contrôleur, en gros quand on développe avec le MVC on segmente son code en trois
parties ou couches, chaque couche ayant une fonction bien précise. La figure 2.2 résume le
fonctionnement d’un modèle MVC.
La couche Vue
C’est la partie qui s’occupera de la présentation des données à l’utilisateur, elle retourne
une vue des données venant du modèle, en d’autres termes c’est elle qui est responsable
de produire les interfaces de présentation de l’application à partir des informations qu’elle
dispose.
La couche Contrôleur
C’est la couche chargée de router les informations, elle va décider qui va récupérer l’infor-
mation et la traiter. Elle gère les requêtes des utilisateurs et retourne une réponse avec l’aide
28
de la couche Modèle et Vue.
La couche Modèle
C’est la partie de code qui exécute la logique métier de l’application. Ceci signifie qu’elle
est responsable de récupérer les données, de les convertir selon les concepts de la logique de
l’application tels que le traitement, la validation, l’association et tout autre tâche concernant
la manipulation des données. Elle est également responsable de l’interaction avec la base de
données, elle sait en quelque sorte comment se connecter à une base de données et d’exécuter
les requêtes (CREATE, READ, UPDATE, DELETE) sur une base de données.
La figure 2.3 présente la pile en couche qui met en œuvre l’architecture technique de
notre application. c’est une vision globale, sur les technologies les plus importantes utilisés
par notre application.
29
Figure 2.4 – Différents logo des outils et technologies utilisés
Kit de développement logiciel Java Platform, Enterprise Edition 8 (Java EE 8) [16]. Java
est un langage de programmation et une plate-forme informatique qui ont été créés par
Sun Microsystems en 1995. Beaucoup d’applications et de sites Web ne fonctionnent pas
si Java n’est pas installé et leur nombre ne cesse de croître chaque jour. Java est rapide,
sécurisé et fiable. Des ordinateurs portables aux centres de données, des consoles de jeux
aux superordinateurs scientifiques, des téléphones portables à Internet, la technologie Java
est présente sur tous les fronts. Java donne accès à l’environnement JRE (Java Runtime
Environment). Cet environnement se compose de la Java Virtual Machine (JVM), des classes
standard de la plate-forme Java et des bibliothèques Java de prise en charge. L’environnement
JRE correspond à la partie exécution du logiciel Java et permet d’exécuter ce dernier dans
votre navigateur Web.
2.3.2 Maven
30
• d’automatiser certaines tâches : compilation, tests unitaires et déploiement des appli-
cations qui composent le projet ;
• de gérer des dépendances vis à vis des bibliothèques nécessaires au projet ;
• de générer des documentations concernant le projet.
2.3.3 Eclipse
MySQL s’est fait connaître à la fin des années 1990 comme étant un système de gestion de
bases de données relationnelles de choix pour les petits projets web, profitant principalement
de sa gratuité et de sa rapidité [19]. MySQL est capable d’offrir de bonnes performances
même sur des serveurs peu puissants. De plus, sa stabilité est excellente et, sur une instance
correctement configurée, il est très rare de voir MySQL planter ou de perdre des données.
Enfin, sa gratuité permet d’envisager des déploiements avec des centaines ou des milliers
d’instances si nécessaire sans pour autant dépenser des fortunes en licences.
31
2.3.6 Tomcat
Pour faire fonctionner une application web Java EE, nous avons besoin de mettre en place
un serveur d’applications. Il en existe beaucoup sur le marché : nous avons choisi d’utiliser
Tomcat [20], car c’est un serveur léger, gratuit, libre, multi-plateforme et assez complet
pour ce que nous allons aborder. On le rencontre d’ailleurs très souvent dans des projets en
entreprise, en phase de développement comme en production.
2.3.7 SpringBoot
Spring Boot est un nouveau framework créé par l’équipe de chez Pivotal, conçu pour sim-
plifier le démarrage et le développement de nouvelles applications Spring [21]. Le framework
propose une approche dogmatique de la configuration, qui permet d’éviter aux développeurs
de redéfinir la même configuration à plusieurs endroits du code. Spring Boot facilite le déve-
loppement d’applications fondées sur Spring en offrant des outils permettant d’obtenir une
application packagée en jar , totalement autonome. Ce qui nous intéresse particulièrement,
puisque nous essayons de développer des Microservices. SpringBoot, nous aide à mettre en
œuvre le principe d’automatisation des configuration, de gestion des bibliothèques et dépen-
dances, et plein d’autres tâches.
2.3.8 Postman
L’application Postman [22] est un outil pratique pour tester une API REST dans API
Gateway. Les différentes fonctionnalités offertes par Postman, nous permet de tester nos
services indépendamment juste après leur développement (back end) sans avoir besoin de la
partie graphique du système (front end).
Visual Studio Code est présenté lors de la conférence des développeurs Build d’avril 2015
comme un éditeur de code cross-platform, open source et gratuit, supportant une dizaine
de langages [23]. Visual code nous permet de gérer le code de la partie front end. Il permet
d’organiser la structure du projet et la traiter graphiquement. Après l’écriture du code, il
nous permet de le compiler, et de détecter les erreurs s’ils existent.
32
2.3.10 Node js/Npm
Google nous propose un outil clé en main pour réaliser les tâches de développement les
plus courantes. Grâce à notre Angular Cli [25], il est possible de :
• Créer une application from scratch via un scaffolding ;
• Générer des squelettes des composants type Components. . . ;
• Builder un projet ;
• Lancer des tests de type « End-to-End » ou « unitaire » ;
• Proxyfier le back end ; Et beaucoup d’autres choses. . .
2.3.12 Git
Git est un logiciel de gestion de versions décentralisé [26]. C’est un logiciel libre créé par
Linus Torvalds, auteur du noyau Linux. Git ne repose pas sur un serveur centralisé, mais
il utilise un système de connexion pair à pair. Un logiciel de gestion de versions s’articule
autour d’un concept très simple : la sauvegarde de l’entièreté des modifications faites sur
tous les fichiers du projet et le maintien du code source tout au long du processus de déve-
loppement. En d’autres termes, il s’agit d’un type d’archivage moderne muni de nombreuses
fonctionnalités. Git nous permet de gérer les versions automatiquement, comme conseillé par
DevOps.
2.3.13 Docker
33
niveau de sécurité que celui des systèmes distincts. Pour s’assurer du bon fonctionnement du
notre système après qu’il sort du mode développement au mode exploitation, nous utilisons
Docker.
2.4 Planification
Comme nous avons choisi de gérer notre projet en suivant la méthode RUP. Nous dé-
coupons notre travail en quatre phase inception, élaboration, construction et transition. Ces
phases seront découper en itérations et incréments. la première itération consiste en la phase
d’inception, c’est la phase actuelle de notre projet. Nous avons défini nos objectifs et besoins.
Ainsi que le diagramme de cas d’utilisation, puisque RUP est piloté par les use cases. Puis
nous avons défini tous qui est architecture, parceque RUP est centré sur l’architecture. Nous
avons défini en fin, nos choix technologiques. Il nous reste que la planification des itérations
au sein des autres phases. La phase d’élaboration, est découpé en quatre itérations. Le ta-
bleau suivant justifie le découpage et le nombre des itérations. Il représente les différentes
itérations, ainsi que les cas d’utilisations, les acteurs impliqués et une description pour chaque
cas :
34
Table 2.1 – Découpage des cas d’utilisation en itérations et modules
Nous optons à découper l’ensemble des cas d’utilisations en modules. Chaque module,
contient les cas d’utilisations qui se complètent pour créer un processus. Par suite, nous
affectons chaque module à une itération de la phase d’élaboration pour notre cycle de dé-
veloppement en suivant la méthode processus unifié RUP. Nous avons choisi que le module
inscription soit traité le premier puisqu’il ne dépend pas des autres modules. Par contre les
autres modules dépend de lui. Le deuxième et le troisième module dépend tous les deux du
premier, mais ils ne dépend pas l’un de l’autre, donc nous pouvons les traiter dans n’importe
35
quel ordre. Le quatrième module ne dépend pas des autres modules, mais il n’est pas cri-
tique pour notre solution. La documentation dépend des textes législatives et des paramètres
spécifiques pour chaque pays, donc nous éliminons cette cas d’utilisation pour ce niveau. La
phase du construction sera découpé en 2 sous-phases, l’une pour la construction de la partie
backend et l’autre pour la construction de la partie frontend. Ces deux sous-phases seront
découpé sur quatre itérations chacune. Par analogie au principe de découpage des itérations
de la phase d’élaboration, nous découpons les itérations de la phase de construction. Donc
nous obtenons pour les quatre modules dans chaque sous-phase, huit itérations en total. La
phase de transition sera effectué dans une seule itération.
La planification est parmi les phases d’avant projet les plus importantes. Elle consiste à
déterminer et à ordonnancer les tâches du projet et à estimer leurs charges respectives. Pour
planifier notre projet et suivre l’avancement, nous avons utilisé le diagramme de GANTT
[28]. Ce diagramme permet de planifier le projet et de rendre le suivi de son avancement plus
simple. La figure du diagramme de GANTT suivante représente la planification des phases
et itérations dans notre projet en fonction du temps :
36
Figure 2.6 – Planification du projet
2.5 Conclusion
A travers ce premier chapitre, nous avons pu se placer dans le contexte général de notre
projet en introduisant le domaine de l’application ainsi que le cadre du travail. La détermi-
nation des besoins fonctionnels et non fonctionnels nous a permit de mieux clarifier notre
application, de bien mettre au point nos objectifs au cours de la phase suivante, qui est la
phase d’élaboration. Enfin, nous avons défini les méthodologies et approches à considérer
tout au long de notre projet, qui sera suivit par un diagramme de Gantt.
37
Chapitre 3
Élaboration
Dans ce chapitre nous traitons l’aspect conceptuel de notre application. Pour la conception
et la réalisation de cette dernière, nous nous appuyons sur le formalisme UML basé sur les
diagrammes et offrant une flexibilité marquante. Ces digrammes représentent parfaitement
les modèles exigés par MDA.
38
3.1.1 Diagramme de cas d’utilisation module inscription
Le module inscription englobe les cas d’utilisation qui assurent l’adhésion de l’utilisa-
teur au système, puis sa connexion et déconnexion. Cette phase est primordiale pour notre
système. Le tableau suivant décrit le cas d’utilisation "s’inscrire".
39
Table 3.2 – Description de cas d’utilisation "valider inscription"
Les diagrammes d’activités permettent de mettre l’accent sur les traitements. Ils sont
donc particulièrement adaptés à la modélisation du cheminement de flots de contrôle et de
flots de données [14]. Ils permettent ainsi de représenter graphiquement le comportement
d’une méthode ou le déroulement d’un cas d’utilisation. Les diagrammes d’activités sont
particulièrement adaptés à la description des cas d’utilisation. Plus précisément, ils viennent
illustrer et consolider la description textuelle des cas d’utilisation. De plus, leur représentation
sous forme d’organigrammes les rend facilement intelligibles et beaucoup plus accessibles que
les diagrammes d’états-transitions. On parle généralement dans ce cas de modélisation de
workflow. On se concentre ici sur les activités telles que les voient les acteurs qui collaborent
avec le système dans le cadre d’un processus métier. La figure 3.2 présente le diagramme
d’activité pour le module d’inscription.
40
Figure 3.2 – Diagramme d’activité pour le module d’inscription
Le diagramme de séquences est la représentation graphique des interactions entre les ac-
teurs et le système selon un ordre chronologique dans la formulation UML [14]. Ce diagramme
est utilisé pour représenter certains aspects dynamiques d’un système : dans le contexte d’une
opération, d’un système, d’un sous-système, d’un cas d’utilisation selon un point de vue tem-
porel. La figure 3.3 présente le diagramme de séquences du cas d’utilisation "s’inscrire".
41
Pour le module inscription, lorsque l’internaute clique sur le bouton s’inscrire, il sera
dirigé vers le formulaire d’inscription, il doit remplir ce formulaire dûment et clique sur un
bouton pour soumettre sa demande d’inscription. Cette demande doit être vérifier et valider
par l’administrateur système, si les données pré-rempli sont valide, sinon, l’administrateur va
rejeter cette demande, les informations seront supprimer de la base. Cette interaction dépend
de l’interaction "Valider Inscription" effectuer par l’administrateur. La figure ?? présente le
diagramme de séquence pour le cas d’utilisation "Valider inscription".
Dans le même module, une fois inscrit, un contribuable demande son authentification et
le système lui renvoie le formulaire à remplir, Il saisie ses identifiants .Le système vérifie les
identifiants s’ils sont valide, le système affiche la page d’accueil sinon il envoie un message
d’erreur.
42
Figure 3.5 – Diagramme de séquences pour l’interaction S’authentifier
43
Figure 3.6 – Diagramme de cas d’utilisation gestion du compte contribuable
Le tableau suivant 3.3 décrit le cas d’utilisation "gérer profil", de même pour le cas d’uti-
lisation "gérer compte contribuable" fait par l’administrateur. .
44
Figure 3.7 – Diagramme de séquences du processus gestion profil contribuable
45
Figure 3.8 – Diagramme de cas d’utilisation déclaration des impôts
La figure 3.9 présente le diagramme d’activité pour le module déclaration des impôts.
46
Figure 3.9 – Diagramme d’activité du module déclaration des impôts
Le diagramme de séquences suivant 3.10 décrit l’enchainement des actions qui se déroulent
dans notre système lors d’une déclaration.
47
3.4 Diagramme des classes
Un diagramme de classes dans le langage de modélisation unifié (UML) est un type de
diagramme de structure statique qui décrit la structure d’un système en montrant le système
de classes , leurs attributs, les opérations (ou) les méthodes et les relations entre les classes
[12]. C’est une structure abstraite de notre base de données. les classes seront transformer en
objet, les opérations en méthodes.
Notre système OnImpôts est basée sur le contribuable, il peut être une personne physique,
ou bien une personne morale. Un contribuable est identifié par un numéro d’identification
fiscal (NIF). Les informations indispensables à connaitre à propos un contribuable sont :
son numéro d’affiliation en CNSS, sa nationalité, son adresse, son login et son mot de passe
quelque soit sa catégorie.
Si elle est une personne physique, elle a encore, un CIN, un nom, un prénom, une date
de naissance, une profession, une état civil, un nombre des enfants en charge quoi qu’ils
soient handicapés ou non. Si c’est une personne morale, elle a un numéro de registre de
commerce, un raison social , une date de début d’activité, un secteur d’activité, une activité,
un chiffre d’affaire, un régime d’impôts, un code TVA, un assujettissement TVA, un fait
générateur de TVA, une périodicité d’activité, une périodicité de déclaration d’impôts et un
assujettissement d’impôts.
La personne physique doit déclarer ses impôts sur les revenus, ce dernier contient les bénéfices
commerciaux et industriels, les bénéfices des professions non commerciaux, les bénéfices des
activités agricoles et du pêche, les revenus immobiliers, et toutes autres frais et honoraires.
La personne morale doit déclarer les impôts sur les sociétés qui contiennent le valeur de stock
initial au début de l’exercice, la valeur du stock à la fin de l’exercice, la valeur des achats de
l’exercice, le chiffre d’affaire à l’exportation, le chiffre d’affaire globale TTC, le chiffre d’affaire
golbale hors taxe provenant des activités de services et des activités non commerciales, le
chiffre d’affaire globale hors taxe provenant des activités de consommation sur place, les
montants des primes, le résultat comptable, le résultat fiscal, les bénéfices déduits au titre
de l’exploitation ou du réinvestissement, les bénéfices et recettes non imposables, les impôts
dû, le minimum d’impôt en tenant compte des avantages fiscaux, les paiements des acomptes
provisionnels, les pénalités exigibles sur les bénéfices exonérés non déclarés, les taxes de
visites, les prélèvement sur fonds d’intéressement du personnel non réparti, et le TVA.
De Plus, une personne morale doit déclarer ses loyers, qui ont un numéro de loyer, une adresse,
48
une date de début de contrat, une date de fin de contrat, et un prix brut. En fin, elle doit
déclarer ses employés, qui ont, un numéro, une poste, ,les dates début et fin de service, le
salaire brut, les privilèges en nature, le total de revenu brut imposable, le revenu investi, les
montants réduites, et les montant net payé.
Le contribuable doit effectué une déclaration d’impôts, chaque déclaration a un type, et
une date, et spécifie si elle est obligatoire ou bien forfaitaire. Une déclaration concerne un
exercice, ce dernier a un code, une date de clôture, et un cadre légale. Un contribuable peut
faire plusieurs déclaration d’impôts. Une déclaration concerne un seul exercice. Le symbole"+"
qui se situe devant les attribues et les méthodes, signifie que ces sont public. La figure 3.11
ci-dessous illustre le diagramme de classe de notre système.
49
50
Figure 3.11 – Diagramme des classes pour la plateforme OnImpôts
3.5 Conclusion
Dans ce chapitre nous avons pu présenter notre solution conceptuelement. Nous avons
élaborer les modèles conceptuels nécessaires pour la spécification du système. Nous avons
utilisé le langage unifié UML. Dans le chapitre suivant, nous présenterons la réalisation de
notre système après avoir effectuer les choix technologiques et l’architecture physique.
51
Chapitre 4
Construction et transition
Après avoir élaborer le modèle conceptuel de notre système, nous procédons maintenant
à les implémenter. Dans ce chapitre, nous présentons les itérations de la phase construction
et la phase transition de notre projet.
52
Comme dépendances nous avons choisi initialement les dépendances suivantes(web, Mysql,
Jpa, hibernate, rest, security, etc.) La configuration du fichier application.proprities est un
point clés pour un projet spring boot. Il contient l’url du serveur base de données, avec le
nom de la base, le mot de passe avec lequel il se connecte sur le serveur, les configurations
du Hibernate et JPA. Avec le port sur lequel le serveur web se connecte.
Nous commençons par la création des entités, la déclaration des attributs, et puis la géné-
ration des getters et les setters, et enfin les constructeurs. L’étape suivante est la création des
repositories.Les repositories sont des interfaces héritant de l’interface Repository. L’objectif
de ces interfaces consiste à rendre la création de la couche d’accès aux données (requêtes
SELECT, UPDATE...) plus rapide.
On n’est donc pas obligés d’écrire des requêtes supplémentaires pour retrouver une entité,
par exemple, par son identifiant ou de retrouver toutes les entités disponibles. Les méthodes
findById() et findAll() sont là pour cela. En plus, on peut utiliser les méthodes liées au CRUD
(Create, Read, Update, Delete) sans aucun effort supplémentaire.
En outre, la recherche des éléments par des simples clauses WHERE est possible grâce au
modèle findByName() où "Name" signifie l’attribut name de l’entité qu’on veut récupérer.
On peut également créer des requêtes plus complexes. Pour cela, on emploiera l’annotation
@Query directement au-dessus de la méthode qui doit exécuter la requête. On privilégiera
cette technique dans notre application de test à cause de sa facilité de compréhension. Les
requêtes seront écrites en JPQL(Java Persistence Query Language).
Une fois nous avons créer les interfaces repositories, nous définissons les interfaces des
services à utiliser. Ces services sont implémentés pour définir le comportement exacte pour
chaque méthode. En fin, nous déclarons le contrôleur qui va consommer ces méthodes à
travers des requêtes HTTP. Aussi, le contrôleur contient les valeurs des Mapping avec le
navigateur pour chaque méthode.
53
Postman. Les objets sont représenté dans cette étape sous forme des fichiers JSON. La figure
4.1 représente un exemple de test pour ce module. Pour faire une inscription, c’est la méthode
addContribuable qui est utilisé. Le code de retour 200, signifie que le test a réussit.
54
Figure 4.2 –
Figure 4.3 –
Le module gestion du compte Contribuable touche aussi les mêmes entités que le module
inscription, mais il invoque des méthodes différentes. Puisque un contribuable peut modifier
55
ses informations à travers la méthode update. L’administrateur aussi peut utiliser la même
méthode pour mettre à jours le profil d’un contribuable. La figure 4.4représente le test de
cette méthode à travers l’outils Postman.
Le module déclaration des impôts, touche toutes les entités du système. Pareil aux mo-
dules précédentes. Nous créons les entités, les repositories, les services et les contrôleurs. le
test des api de ce module donne les résultats suivantes.
56
Figure 4.5 – test de module declaration impôts à travers Postman
57
basée sur les patrons de conception, nous facilite la vie en tant que développeurs, citons
par exemple l’utilisation du concept Observable en développons en Angular. Observable est
l’objet de base de la programmation réactive. C’est lui qui va nous permettre de créer des
observables. Subscribe prend en paramètre l’observateur, qui est une simple fonction qui
recevra les valeurs émises par l’observable. Subscribe peut également prendre deux autres
arguments : une fonction appelée en cas d’erreur, et une autre appelée une fois l’observable
fini. La méthode map d’Observable prend des valeurs en entrée, les transforme et les renvoie
en sortie. Il contient aussi les modules suivantes :
• le module HttpClient.
• le module de gestion des routes, lorsque l’URL change
• la gestion des formulaires, lorsque l’utilisateur saisit des valeurs dans des champs de
saisie.
Le décorateur @Injectable() est un décorateur un peu particulier. Il ne permet pas l’injection
à proprement parlé, mais plutôt d’initialiser un contexte de détectabilité. Si nous injectons
dans un de nos services ( sans ce décorateur) un autre service, le moteur d’injection retournera
une erreur. Angular conseille de toujours mettre cette annotation sur un service même si nous
n’utilisons pas les injections dans notre service afin d’éviter de se poser la question plus tard
[25].
Les décorateurs @Component, @Pipe, et @Directive sont des sous classes de @Injectable().
Ces décorateurs ajoutent des MetaDatas au code JavaScript transpilé à partir de nos fichiers
TypeScript. Par défaut, le compilateur TypeScript rejette toutes les meta-données. Pour
que ces metadatas soient integrées au JavaScript, l’option emitDecoratorMetadata doit être
à true dans votre fichier tsconfig.json de votre projet. Angular-CLI a dèjà configuré votre
tsconfig.json pour les prendre en charge.
L’un des énormes avantages d’utiliser Angular est de pouvoir créer des "single page ap-
plication" (SPA). Sur le Web, ces applications sont rapides et lisses : il n’y a qu’un seul
chargement de page au début, et même si les données mettent parfois du temps à arriver, la
sensation pour l’utilisateur est celle d’une application native. Au lieu de charger une nouvelle
page à chaque clic ou à chaque changement d’URL, nous remplaçons le contenu ou une partie
du contenu de la page : nous modifions les components qui y sont affichés, ou le contenu de
ces components. Nous accomplissant tout cela avec le "routing", où l’application lit le contenu
de l’URL pour afficher le ou les components requis.
Angular possède un module appelé Router pour gérer le routage côté client [29]. Pour
58
utiliser le routage dans notre application Angular, il est nécessaire d’effectuer une petite
configuration. La première chose a faire consiste à configurer la base href dans le DOM. Le
routeur utilise l’état de l’historique de navigation du navigateur pour la navigation et l’inter-
action de l’URL. Cela permet essentiellement aux URL d’être utilisées dans une application
client sans déclencher réellement une nouvelle requête à distance. Le code client peut alors
fonctionner contre ces changements d’état et prendre des décisions sur le routage.
Pour cela nous allons ajouter une balise <base> dans la partie ’head’ de notre fichier
index.html de la manière suivante : <base href="/">.
La prochaine chose que nous devons faire est de créer des routes. Faisons-le dans un
nouveau fichier nommé app.routing.ts.
Nous allons tout d’abord importer le module Routes situé dans le paquet ’router’ d’An-
gular. Nous allons créer une variable ’appRoutes’ de type Routes qui sera un tableau. A
l’intérieur pouvons lister les différentes routes de notre application. Chaque élément de ce
tableau est un objet composé de deux propriétés : ’path’ et ’component’. Dans ’path’ nous
mettons l’URL sans ajouter de ’/’ car le router gère la construction de l’URL. Et dans ’com-
ponent’ nous indiquons le composant a afficher.
Après avoir listé toutes nos routes, il reste à indiquer à app.module.ts l’existence de
cette liste. Toujours dans le fichier app.routing.ts, nous importons le module de routeur
qui se trouve également dans le paquet ’router’ d’Angular. Et nous ajoutons une variable
que le nous nommons ’routing’ précédé de la mention ’export’. Cette variable sera égale a
la fonction RouterModule.forRoot qui prend en paramètre un ensemble d’objets de routes.
Nous lui passerons donc notre variable ’appRoutes’.
La dernière chose que nous devons faire est de passer au fichier app.module.ts et d’ajouter
une déclaration d’importation pour le routage. Nous, donc importerons notre variable routing,
et l’ajouterons dans notre liste d’imports dans @NgModule.
Avec cela, notre appModule est conscient des routes que nous avons mis en place et est prêt
à commencer à les traiter. Il est également configuré pour utiliser les directives RouterModule
et les services provenant du RouterModule. Maintenant, une fois terminée toutes ces étapes,
il nous reste que l’écriture des pages HTML, qui nous donne l’allure finale du projet. Dans
les parties qui suivent nous présentons les résultats.
59
4.2.1 Itération 4 : module inscription
Dans cette itération, comme pour les précédentes nous commençons par le module, ins-
cription. La figure 4.6 est l’interface qui permet aux utilisateurs de s’authentifier s’il est déjà
inscrit ou bien de faire une inscription. Il doit spécifier s’il est une personne morale ou bien
une personne physique.
Cette interface permet l’utilisateur de se connecter au système s’il est déjà inscrit„ en
entrant son login et son mot de passe. Si non, l’utilisateur peut choisir l’inscription dans
le système. Lorsqu’il clique sur le bouton "Inscription", il doit préciser s’il est une personne
physique ou bien une personne morale comme indique la figure 4.7.
60
Figure 4.7 – Interface de choix du profil pour l’inscription
Selon le profil choisi, un formulaire d’inscription s’affiche pour être rempli. La figure 4.8
présente le formulaire d’inscription pour une personne physique.
61
Figure 4.9 – L’interface d’inscription pour une personne morale
Une fois le contribuable a terminé son inscription, l’administrateur doit la valider pour
que ce premier peut se connecter avec les identifiants choisi. La figure 4.10 présente l’interface
de validation des inscription faite par l’administrateur pour les personnes morales, pareil pour
les personnes physiques.
Figure 4.10 – L’interface de validation des inscription des personnes morales par l’adminis-
trateur
62
4.2.2 Itération 5 : module gestion compte
Le module déclaration des impôts, est traité pendant la dernière itération de la phase de
construction. Dans ce module le contribuable se connecte et choisi de déclarer ses impôts.
Selon son profil, il sera renvoyé vers le formulaire convenable.
Si le contribuable est une personne morale donc il peut déclarer trois types d’impôts, soit
il déclare des loyers, soit des employées, soit les impôts sur les revenus des sociétés. La figure
4.12 présente le formulaire de déclarations des impôts sur les sociétés.
63
Figure 4.12 – Interface de déclaration des impôts sur les sociétés
Figure 4.13 – Interface de déclaration des loyers pour les personnes Morale
64
Figure 4.14 – Interface de déclaration des employées pour les personnes Morale
65
4.4 Conclusion
Dans ce chapitre nous avons pu implémenter nos modèle et donner une solution logicielle
exécutable, nous avons essayer de nos mieux de vérifier le maximum des besoins fonctionnels
et non fonctionnels. A la fin de ce chapitre nous avons déployé notre solution dans un container
pour qu’il garde son état de fonctionnement même en changeant d’environnement d’exécution.
66
Conclusion générale
ArabSoft, travaille sur les systèmes e-gov, le sujet principal de notre projet. Une plateforme
des télé-procédures est un service qui offre une États à ces citoyens. Le service étudié pour
notre cas est, la déclaration des impôts en ligne.
Les systèmes e-gov sont tellement délicats, ils évolues trop vite et ont tendances à chan-
ger d’une façon répétitive. Les solutions à proposer pour ces systèmes e-gov, vaut mieux être
générique, adaptable et configurable, puisque ça dure beaucoup du temps pour les élaborer
et ça change rapidement. Notre solution vérifie ce contrainte, en suivant l’approche MDA,
nous garantissons la valorisation du savoir faire. Les technologies et les outils nous aident
à gagner du temps et d’effort. OnImpôts offre aux utilisateurs la possibilité de déclarer ses
impôts en ligne, à travers un canal sure et disponible tout le temps. Nous avons proposer
une solution générique et adaptable pour chaque États et pour chaque besoin.L’approche de
programmation générique qui nous avons suivi, impose d’élaborer un modèle initiale, puis
nous sortant deux volets, une contient le logique du métier qui a une très faible probabilité
pour changer, et l’autre volets contient les paramètres. a la fin nous obtiendrons un système
avec deux interfaces, l’une pour le paramétrage et l’autre pour l’exploitation. Cet enchaine-
ment de travail applique le design pattern "Reflexivity". Notre solution proposé, n’est que la
début d’un grand projet, qui nécessite une équipe pour le mettre en œuvre. Par contre nous
avons déjà défini l’architecture et les modèles à suivre dans ce cas. Donc nous avons élaborer
le modèle initiale. Nous avons suivi les méthodologies et les approches qui nous assurent
la mise en œuvre de nos idées. Notre systèmes OnImpôts, offre aux citoyens d’un pays de
déclarer ses impôts en ligne, en se débarrassant des procédures administrative ennuyantes.
67
Ce projet nous a permis de se confronter à tout le cycle de vie d’un logiciel, et par suite de
jouer tous les rôles qu’un ingénieur informatique peut le pratiquer pendant ce cycle. C’étais
une très importante période pour nous, pleine d’expériences et pleine de défis. Parmi les
expériences que nous avons la chance d’avoir sont la gestion d’un projet informatique depuis
la détection des besoin jusqu’au la livraison finale, le travail en équipe et en environnement
professionnel et réelle, et aussi l’apprentissage des nouveaux notions. Les plus importants
défis sont la sensibilité du métier traiter et sa difficulté, le travail sous stress puisque la durée
est limitée et l’auto-formation en parallèle avec ce travail.
Même si nous avons rencontrer quelques difficultés, mais nous avons pu les dépassées
finalement. Nous pensons que la durée du stage été un peu courte pour pouvoir s’approfondir
vraiment dans chaque phase de cycle de vie de la solution. Comme perspectives pour ce projet,
nous proposons de compléter les fonctionnalités manquantes et d’évoluer vers la version
générique et configurable, pour bénéficier des approches suivi et au design pattern choisi et
achever l’idée principale de la solution proposée.
68