PFE Sesame Copie Final Copy
PFE Sesame Copie Final Copy
R´ealis´e par
WIEM JEMAI
Session : 2020-2021
Ecole sup´erieure
des sciences appliqu
priv´e
´ees de
et
mangement
R´ealis´e par
WIEM JEMAI
Encadreur de
Encadreur acad´emique
l’entreprise : Date :
: Date :
Signature :
Signature :
Remerciem
Wiem JEMAI
i
R´esum´e /
This report is the result of hard work of 6 months within BILOG In order
to carry out the end of studies project to obtain the National Diploma in
software engineering.
i
Table des
Introduction g´en´erale 1
1 E´ tude pr´eliminaire 2
1.1 Introduction............................................................................................................2
1.2 Organisme d’accueil...........................................................................................2
1.2.1 Pr´esentation de l’organisme d’accueil .............................................3
1.2.2 Secteur d’activit´e ...................................................................................3
1.3 Contexte g´en´eral ...............................................................................................3
1.3.1 Introduction a` l’assurance qualit´e ...................................................4
1.3.2 Tests logiciel..............................................................................................4
1.3.3 Les bugs......................................................................................................5
1.4 Etude de l’existant...............................................................................................6
1.4.1 E´ tat actuel de la soci´et´e ..................................................................6
1.4.2 Probl´ematique ..........................................................................................7
1.4.3 Solution et architecture du projet....................................................8
1.5 M´ethodologies de travail ..................................................................................9
1.5.1 Avantages de la m´ethode agile Scrum ............................................9
1.5.2 Ce qui change avec Scrum...............................................................10
1.5.3 L’´equipe scrum ......................................................................................10
1.5.4 Le sprint....................................................................................................11
1.5.5 Les artefacts............................................................................................11
1.5.6 Les ´ev`enements scrum .....................................................................11
1.6 M´ethodologie de conception ..........................................................................12
1.7 Environnement de travail..............................................................................13
1.7.1 Choix technologiques..........................................................................13
1.7.2 Choix logiciel..........................................................................................15
1.8 Etude comparative............................................................................................17
1.8.1 Gestionnaire de version : Git vs SVN..........................................18
1.8.2 Serveur d’orchestration.....................................................................18
1.8.3 Sonarqube vs SonarLint.....................................................................18
1.8.4 Conteneurs vs Machines virtuelles...............................................19
1.9 Conclusion............................................................................................................20
i
Table des
Table des mati`eres
Webographie 50
i
Table des
iv
v
Table des figures
v
Table des figures
vi
Introduction g´en´erale
1
1 E´ tude pr´eliminaire
1.1 Introduction
L’´etude pr´eliminaire constitue une ´etape primordiale a` la r´ealisation
d’une application. En effet, elle permet d’analyser, d’´evaluer et de critiquer
le fonctionnement habituel, tout en ´elaborant la liste des solutions possibles.
Elle fera donc l’int´erˆet du premier chapitre qui sera consacr´e `a la pr
´esentation de l’orga- nisme d’accueil, la pr´esentation du projet, l’´etude
de l’existant ainsi que la d´efinition de la m´ethode de d´eveloppement et
ses piliers.
2
1.3. Contexte g
— D´eveloppement au forfait
— Contrˆole qualit´e
— Audit de code source
— Applications mobile
— Cloud computing
— Infog´erance
— Portage d’applications
— Gestion industrielle
— Infog´erance
— Portage d’applications
— Gestion industrielle
— Secteur m´edical
— Tierce maintenance applicative
— Assistance utilisateurs
— Assistance technique
4
1.3. Contexte g
5
1.3. Contexte g
recommande comme activit´e de validation et de v´erification. [6]
6
1.3. Contexte g
Activit´e ISTQB
Plan Revue de sp´ecification (User Stories) Testabilit´e / Coh
´erence.
Tests statiques : revue de code, qualim´etrie
Code
Tests unitaires.
Build Tests d’int´egration.
Test Tests syst`emes.
Release Tests d’acceptation.
Deploy, Operate Tests de non-r´egression.
Le terme BUG est utilis´e pour d´esigner : Erreur → De´f aut → Def aillance → Anomalie.
7
1.4. Etude de
Gravit´e Description
Des anomalies entraˆıneront l’arrˆet complet du syst`eme
Bloquante ou des com-
posants fonctionnels n´ecessaires.
Une fonctionnalit´e indispensable est partiellement inop
Majeure ´erante sans
op´erer des outils de blocage. L’application peut
continuer.
Panne fonctionnelle inutile sans blocager du
Mineure fonctionnement de
l’outil.
1. L’´equipe analyse le cahier des charges et les sp´ecifications envoy´es par le client
8
1.4. Etude de
2. l’´equipe d´eveloppement r´ealise l’application.
3. l’´equipe assurance qualit´e (QA) cr´ee un plan de test sur l’application TestLink.
9
1.4. Etude de
5. L’´equipe QA cr´ee un ticket pour chaque bug d´etect´e sur l’application Redmine.
7. L’´equipe d´eveloppement corrige les bugs et met `a jour le statut des tickets
puis doit relivrer l’application en recette avec les nouvelles fonctionnalit´es corrig
´ees.
TestLink
c’est un outil de gestion des tests (ALM) open source bas´es sur le web et totalement
gratuit. Il permet, comme d’autres ALM, de g´erer ses exigences, tests et campagnes de
test tout en les liant entre elles.
Redmine
— La gestion multiprojets
— Etc
Zulip
Zulip est une application de messagerie pour les entreprises et les organisations (web,
bureautique ou Android) qui vise `a combler les besoins de communication de groupes.
1.4.2 Probl´ematique
Les inconv´enients de la m´ethode utilis´ee par bilog dans la gestion des projets sont les suivants :
— Pas de liaison entre les outils : chaque application fonctionne ind´ependamment de l’autre.
1
1.4. Etude de
GitLab est une plateforme DevOps compl`ete propos´ee sous la forme d’une
application unique. Elle r´evolutionne le d´eveloppement, la s´ecurit´e, l’exploitation et la
collaboration entre les ´equipes. Nous avons choisi GitLB dans notre projet parce qu’il
est open source et populaire.
Jenkins est le coueur d’une plateforme DevOps,il assure le lien entre les diffrents composnts.
SonrQube est un logiciel libre qui permet de mesurer la qualit´e du code source.
Selenium est un projet englobant un ´eventail d’outils et de librairies permettant
l’automtisation des navigateurs internet.
Docker est une technologie de conteneuristion qui permet la cr´eation et l’utilisation de
conteneurs.
1
1.4. Etude de
1. L’´equipe analyse le cahier des charges et les sp´ecifications envoy´es par le client
1
1.5. M´ethodologies de
2. l’´equipe ´elabore le TDD (Test Driven Development) et le plan de test en utilisant TestLINK
5. L’´equipe lance l’ex´ecution de la chaine, une fois l’application d´etecte une erreur,
un ticket va ˆetre cr´e´e automatiquement sur REDMINE. Apr`es le test un
rapport va ˆetre g´en´er´e automatiquement et publi´e dans la room du projet dans
l’application zulip.
6. Apr`es la correction des bugs d´etect´es, tous les sc´enarios seront faits suite au
lancement de la chaine. D`es qu’on obtient une application qui r´epond aux
crit`eres et au besoin client l’application sera livr´ee en prod.
— Avoir une id´ee claire sur les diff´erentes ´etapes du projet : une vue
d’ensemble sur l’´evolution du projet du l’´etape de d´eveloppement vers l’´etape
de production.
— Avoir une flexibilit´e totale du projet : le client peut avoir une flexibilit´e
totale au niveau de la d´efinition des priorit´es selon ses besoins.
1
1.5. M´ethodologies de
— Avoir une planification adapt´ee `a votre besoin : une planification d´etaill´ee `a
court terme et `a long terme.
1
1.5. M´ethodologies de
1
1.5. M´ethodologies de
Membres taches
S’assure que les principes et les valeurs de Scrum sont
Le Scrum Master
respect´es. Facilite la communication au sein de
l’´equipe.
Cherche `a am´eliorer la productivit´e et le savoir-faire de
son ´equipe.
Pas de rˆole bien d´etermin´e : architecte, d
L’E´ quipe de d
´eveloppement ´eveloppeur, testeur. Tous les membres de l’´equipe
apportent leur savoir-faire pour ac- complir les tˆaches.
Taille de 6 `a 10 personnes en g´en´eral et pouvant aller
jusqu’`a 200
personnes.
Expert m´etier, d´efinit les sp´ecifications fonctionnelles.
Le Product Owner
E´ tablit la priorit´e des fonctionnalit´es `a d´evelopper
ou corriger. Valide les fonctionnalit´es d´evelopp´ees.
Joue le rˆole du client.
1.5.4 Le sprint
Au cœur de Scrum, le sprint a une dur´ee d’un mois ou moins au cours duquel une
version ≪ termin´ee≫, utilisable et potentiellement livrable du logiciel est cr´e´ee. Il est pr
´ef´erable que les sprints gardent une dur´ee constante tout au long de l’initiative de d
´eveloppement. Un nouveau Sprint d´ebute imm´ediatement apr`es la conclusion du pr´ec
´edent.
— Le Product Backlog : C’est l’ensemble des fonctionnalit´es du produit que l’on veut d
´evelopper.
— Le Sprint Backlog : C’est une liste de tˆaches identifi´ees par l’´equipe `a remplir pendant un
sprint.
1
1.6. M´ethodologie de
Revue de sprint : Le but de la revue est de montrer les r´ealisations r´ealis´ees lors du
sprint afin d’arriver
`a des r´esultats pour le reste du projet.
1
1.6. M´ethodologie de
comme m´ethode m´ethodologique.
UML est un langage qui s’appuie sur un m´eta-mod`ele, un mod`ele de plus haut niveau qui d
´efinit les
´el´ements d’UML (les concepts utilisables) et leur s´emantique (leur signification et
leur mode d’utilisa- tion). UML est un langage, donc un formalisme pour repr´esenter
un des concepts. Il ne suffit pas de
1
1.7. Environnement de
produire des logiciels de qualit´e, mais son utilisation, largement r´epandue, a prouv
´e son utilit´e dans la sp´ecification d’une application.
UML offre diff´erents mod`eles pour sp´ecifier et concevoir un logiciel. Ces mod`eles utilisent une
repr´esentation graphique sous forme de diagrammes repr´esentant des vues diff´erentes du
syst`eme (diagramme de cas d’utilisation, diagramme de classes, diagramme de s´equence,
diagramme de d´eploiement, diagramme d’ac- tivit´es...).
Dans notre travail, nous allons nous int´eresser `a l’´elaboration des diagrammes suivants ;
— Diagrammes de s´equences.
— Diagramme de d´eploiement
web services.[3]
Selenium WebDriver est un framework web qui vous permet d’ex´ecuter des tests
multi-navigateurs. Cet outil est utilis´e pour automatiser les tests d’applications Web
pour v´erifier qu’ils fonctionnent cor- rectement.
1
1.7. Environnement de
NUnit est un framework de test unitaire pour tous les langages .NET.
Initialement port´ee `a partir
2
1.7. Environnement de
NUnit est pr´ef´er´e aux autres frameworks de test car il est compatible avec la suite
de tests Selenium. Les tests NUnit pour l’automatisation Selenium sont largement utilis´es
en raison des avantages suivants par rapport aux autres frameworks de test :
— Le TDD est principalement utile car les tests unitaires sont essentiels pour trouver des
probl`emes
/ bogues au cours des premi`eres ´etapes du d´eveloppement du produit. Le
framework de test NUnit peut ˆetre utilis´e avec Selenium si vous pr´evoyez
d’utiliser TDD (Test Driven Development) pour l’activit´e de test.
— A` l’aide de NUnit, vous pouvez ex´ecuter des cas de test `a partir de l’ex
´ecution de la console par un outil de test d’automatisation tiers ou par
l’adaptateur de test NUnit dans Visual Studio.
2
1.7. Environnement de
StarUML est un logiciel de mod´elisation UML, c´ed´e comme open source par
son ´editeur, `a la fin de son exploitation commerciale, sous une licence modifi´ee de
GNU GPL. Nous l’avons utilis´e pour la conception du projet.[2]
Jenkins est un outil logiciel d’int´egration continue. Il s’agit d’un logiciel open source d
´evelopp´e `a l’aide du langage de programmation Java. Il vous permet de tester et
de signaler les modifications apport´ees sur une large base de code en temps r´eel.
En utilisant ce logiciel, les d´eveloppeurs peuvent rapidement d´etecter et r´esoudre
les probl`emes dans la base de code. En cons´equence, les tests nouvellement construits
peuvent ˆetre automatis´es, ce qui facilite l’int´egration continue des modifications dans le
projet. L’objectif de Jenkin est d’acc´el´erer le d´eveloppement de logiciels grˆace `a
2
1.7. Environnement de
l’automatisation. Jenkins peut int´egrer toutes les ´etapes du cycle de d
´eveloppement. Nous avons utilis´e cet outil pour l’orchestration entre les
2
1.7. Environnement de
2
1.8. Etude
Zulip est un outil de chat et de collaboration interne dont le rˆole est d’´etablir des
discussions internes et d’informer les parties prenantes du projet `a travers de nouveaux
´ev´enements. Zulip peut envoyer des messages internes et des messages courts
rapidement et facilement. Il offre une visibilit´e sur le statut des employ´es (en r
´eunion/disponible/absent). Il prend en charge la fonction de notification de bureau et peut
´egalement ˆetre notifi´e via l’interface des outils GitLAB / SonarQube et Jenkins
DevOps. Il convient `a la version web/de bureau/t´el´ephone mobile.
2
1.8. Etude
Dans cette partie, nous devons proc´eder `a une ´etude comparative entre les diff´erents
outils qui existent sur le march´e.
2
1.8. Etude
2
1.8. Etude
Apr`es cette comparaison, nous avons choisi de travailler avec Sonarqube comme
serveur de qualit´e de code.
Vu ses points forts, nous avons d´ecid´es de choisir docker comme solution de
virtualisation pour mettre en place notre plateforme d’int´egration continue.
2
1.9.
1.9 Conclusion
Dans ce chapitre, nous avons donn´e un aper¸cu du projet en d´ecrivant l’organisme
d’accueil BILOG, et le contexte du projet. Nous avons pr´esent´e aussi la m´ethode
de travail Agile scrum, le langage de mod´elisation UML, environnement de travail et
nous avons termin´e par l’´etude comparative.
Le prochain chapitre sera consacr´e `a l’analyse et la sp´ecification des besoins.
3
2 Analyse et sp´ecification des besoins
2.1 Introduction
Ce chapitre sera commenc´e par la sp´ecification des besoins, ensuite nous allons
voir le diagramme des cas d’utilisation globale et nous terminerons par le pilotage du
projet par Scrum.
— Rapidit´e : Le syst´eme doit optimiser les traitements pour avoir un temps de g´en
´eration de sch´emas raisonnable.
Invit´e : cet utilisateur n’appartient pas `a l’´equipe scrum, il peut ˆetre un chef de
projet, un respon- sable du pˆole, etc.
Ingenieur QA c’est l’ex´ecuteur des cas de tests. Il enregistre les anomalies et les d
´efauts du produit dans l’outil, enregistre les exigences du produit, pr´epare et d
´eveloppe les sc´enarios de tests.
2
2.3. Diagramme des cas d’utilisation
Acteur Role
Ingenieur QA G´erer les projets de
test G´erer les plans
de test
G´erer et Suivre les anomalies d´etect´ees et les
tickets cr´e´es
Suivre les comptes rendus
D´eveloppeur Configurer la chaine DEVOPS
G´erer et Suivre les anomalies d´etect´ees et les
tickets cr´e´es Suivre les comptes rendus
Invit´e Suivre les comptes rendus
Au cours des sprints, on construira une conception plus d´etaill´ee d’une fa¸con incr´ementale.
2
2.4. Le pilotage du projet par
L’´equipe de d´eveloppement( d´eveloppeur et QA) : Fares BEN REJIBA ,Fethi SLIM et Wiem
JEMAI
La figure 2.4 repr´esente le d´ecoupage de notre projet en diff´erents lots d’activit´es afin
d’avoir des parties dont la complexit´e est plus ais´ement maitrisable.
2
2.4. Le pilotage du projet par
— Le backlog du produit
— Le backlog Sprint
— L’incr´ement du produit.
Le Product Backlog est le point central de tout projet Scrum. Il est sous la
responsabilit´e unique du Product Owner, mais doit ´egalement ˆetre accessible par
l’´equipe.
2
2.4. Le pilotage du projet par
dans la chaine
devops.
En tant que membre de l’´equipe
scrum,
2.4 Elev´e
je veux utiliser SonarQube dans
la chaine devops.
2
2.4. Le pilotage du projet par
Scrum Board :
Pour mieux organiser notre travail, nous avons utilis´e l’un des outils offerts par
Scrum qui est Scrum Board.
Scrum Board est un outil qui aide les ´equipes `a rendre visibles les ´el´ements du
SprintBacklog. Le tableau peut prendre de nombreuses formes physiques et virtuelles, mais
2
2.4. Le pilotage du projet par
il remplit la mˆeme fonction, quel que soit son aspect. Le tableau est mis `a jou par
l’´equipe et montre tous les ´el´ements qui doivent ˆetre compl´et´es
2
2.5. Conclusion
2.5 Conclusion
Dans ce chapitre, nous avons extrait les besoins ainsi que les acteurs qui vont nous
servir pour guider dans le d´eveloppement qu’on va entamer d`es le prochain chapitre.
Selon notre planning, le d´eveloppement sera d´ecoup´e en deux sprints, pour s´eparer et
simplifier les tˆaches. Dans le chapitre suivant nous allons ´etudier le premier sprint
”d´eveloppement des tests automatis´es et installation des outils”
2
3
Sprint 1 - D´eveloppement des tests
automatises et installation des outils
´
3.1 Introduction
Au d´ebut de chaque sprint, nous d´efinissons un objectif et nous lui associons
une liste de fonction- nalit´es qui constituera le sprint backlog. Au cours d’un sprint,
l’objectif et la composition de l’´equipe ne peuvent ˆetre modifi´es. Durant ce sprint, nous
devons r´ealiser les tests automatis´es et installer les diff´erents outils de syst`eme.
Le sprint backlog
Notre sprint backlog se pr´esente comme suit :
— Authentification
Les packages
Pour ces tests nous allons utiliser le NUnit Framework, l’adaptateur de test NUnit
et le Selenium WebDriver.
2
3.3. Tests
Pour trouver l’´el´ement avec pr´ecision sur les pages Web, il existe diff´erents types de
localisateurs :
3
3.3. Tests
— Texte du lien : Pour trouver l’´el´ement par texte du lien
3
3.4. Installation des
— XPath : XPath requis pour trouver l’´el´ement dynamique et passer entre divers ´el
´ements de la page Web
— Chemin CSS : Le chemin CSS localise ´egalement les ´el´ements sans nom, classe ou ID.
Locator est une commande qui indique `a Selenium IDE quels ´el´ements de
l’interface graphique (par exemple, zone de texte, boutons, cases `a cocher, etc.) il
doit fonctionner. L’identification des ´el´ements d’interface utilisateur corrects est une
condition pr´ealable `a la cr´eation d’un script d’automatisation.
Dans l’automatisation Selenium, si les ´el´ements ne sont pas trouv´es par les
localisateurs g´en´eraux tels que id, classe, nom, etc., XPath est utilis´e pour trouver un
´el´ement sur la page Web.
Sc´enario du bug :
— Supprimer la fiche.
⇒ La fiche a ´et´e supprim´ee avec succ`es
— Cr´eer une autre fiche m´edecin avec le mˆeme nom, pr´enom et code postale de l’ancienne
fiche.
⇒ D´etection d’un doublon, impossible de cr´eer la fiche.
3
3.4. Installation des
3.4 Installation des outils
A` ce niveau-l`a nous allons installer les diff´erents outils de notre pipeline.
3
3.4. Installation des
3.4.1 Jenkins
Nous avons install´e et configur´e l’outil Jenkins sur le serveur DevOps, pour
l’orchestration entre les autres outils, et afin d’automatiser le pipeline.
La figure 3.5 contient l’interface web de Jenkins apr`es l’installation.
3.4.3 Docker
Nous avons install´e Docker sur le serveur de d´eploiement, pour d´eployer le projet.
3
3.5.
3.5 Conclusion
Dans ce chapitre, nous avons expos´e l’installation de diff´erents outils de notre
syst`eme ainsi le d´eveloppement des tests automatis´es.
Dans la partie suivante nous allons ´etudier la configuration de notre chaine DEVOPS.
3
4 Sprint 2 - Configuration des outils
4.1 Introduction
Durant ce sprint, nous devons mettre en place et configurer les diff´erents outils de syst`eme.
Le sprint backlog
Notre sprint backlog se pr´esente comme suit :
Le diagramme repr´esent´e ci-dessous par la figure 4.3 d´ecrit les diff´erentes actions r´ealis´ees
3
4.3. Diagramme de Cas
par l’invit´e
3
4.4. Diagramme de d
syst´eme.
3
4.5. Conception
4.5 Conception
La conception est la deuxi`eme ´etape dans ce sprint. Elle se traduit par, un
diagramme de s´equences. Ce diagramme permet de repr´esenter une vue dynamique du
syst`eme. Il permet de d´ecrire les sc´enarios de chaque cas d’utilisation en mettant
l’accent sur la chronologie des op´erations en interaction avec les objets.
La figure repr´esent´ee ci-dessous par la figure 4.5 d´ecrit l’interactions entre les
acteurs et les diff´erents outils de syst`eme selon un ordre chronologique.
Les webhooks permettent de d´eclencher une action suite `a un ´ev´enement. Ils sont g
´en´eralement utilis´es pour faire communiquer des syst`emes. C’est la fac¸on la plus
simple de recevoir une alerte lorsque quelque chose se produit dans un autre syst`eme.
Description du syst`eme :
2. Le GitLAB notifie l’orchestrateur Jenkins par le nouveu push. Jenkins clone le code
depuis GitLAB et lance le build.
3. Jenkins notifie SonarQube pour clone et lance l’audit qualit´e du code source.
Jenkins rec¸oit le rapport sonar si le code passed ou non.
5. Jenkins notifie Selenium pour cloner et lancer les tests. Jenkins rec¸oit un rapport d´etaill´e.
3
4.6. R´ealisation : mettre en place le
2. Upload du projet
3
4.6. R´ealisation : mettre en place le
Nous avons choisi un projet ”free-style” car il est facile et non limit´e
4. Configuration webhook
Apr`es la cr´eation du projet Jenkins nous avons configur´e le ”Webhook”, afin de g´en´erer un
token.
Dans la figure 4.9 nous avons g´en´er´e le token.
4
4.6. R´ealisation : mettre en place le
A` ce niveau il faut assurer la liaison entre Jenkins et Gitlab en utilisant le token g´en´er´e.
La figure 4.10 pr´esente la liaison entre jenkins et GitLab.
Nous avons ajout´e l’URL de Jenkins et le token dans le projet GitLab.
Apr`es la configuration, Gitlab va envoyer une requˆete vers le lien Jenkins, ce dernier va
recevoir l’envoi, puis lancer l’ex´ecution.
4
4.6. R´ealisation : mettre en place le
— Ajouter l’URL de GitLab, pour que Jenkins puisse r´ecup´erer le code : git clone ’URL’
— Installer les d´ependances du projet (exemple : prime Ng, input Groupe ...) en
utilisant la commande ”npm install”, les d´ependances install´ees seront trouv´ees
dans un dossier nomm´e ”node-modules”. (NB : il faut que ”node js” d´eja installer
dans notre machine).
4
4.6. R´ealisation : mettre en place le
4
4.6. R´ealisation : mettre en place le
4
4.6. R´ealisation : mettre en place le
4
4.6. R´ealisation : mettre en place le
4
4.6. R´ealisation : mettre en place le
4
4.6. R´ealisation : mettre en place le
avons lanc´e les tests en utilisant la
4
4.6. R´ealisation : mettre en place le
4
4.7. Conclusion
4.7 Conclusion
Au cours de ce sprint nous avons termin´e la mise en place et la configuration de notre chaine.
Avec ce chapitre, on clˆoture le d´eveloppement et notre release est prˆete.
5
Conclusion g´en´erale &
Pour impl´ementer la solution, nous avons tout d’abord identifi´e les besoins de l’entreprise et
lanc´e une
´etude technique sur les diff´erentes technologies pour faire le bon choix des outils. Nous
avons ensuite mis en place les chaines DEVOPS.
A` l’issue de ce projet, nous pouvons envisager plusieurs perspectives. En fait, notre plateforme
a ´et´e
appliqu´ee sur une application web afin d’automatiser la phase audit qualit´e code
source, tests automa- tis´es, build et d´eploiement ainsi que la diffusion de l’information
dans l’outil chat et la cr´eation des tickets bugs. Nous pouvons envisager d’appliquer
cette solution sur les projets desktop et mobile.
5
Bibliograp