Rap - PFA2 2022 05
Rap - PFA2 2022 05
Rap - PFA2 2022 05
Réf : PFA2-2022- 05
Rapport de
Par
Composition du jury
5, Avenue Taha Hussein – Tunis Tel. : 71 . 496 . 066 :الهاتف شارع طه حسين ـ تونس،5
B. P. 56, Bab Menara 1008 Fax : 71 . 391. 166: فاكس 1008 باب منارة56 : . ب. ص
Remerciements
Mes remerciements les plus sincères vont à ma chère encadrante qui m’a supporté tout
au long de mon travail, Madame Meriem RIAHI. Je lui remercie non seulement pour les
efforts et le temps qu’elle m’a accordés lors de la réalisation de ce projet mais aussi pour
la forte personnalité qu’elle nous a montrée et pour le fait qu’elle n’a jamais cessé de
nous pousser vers l’avant et de nous montrer les bonnes voies vers le savoir.
Je tiens à remercier, également, Madame Nesrine YACOUBI pour son interêt et ses
encouragements pour la réalisation de ce projet.
i
Table des matières
Introduction Générale 1
3 Etude Conceptuelle 17
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Modèle architectural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3 Diagramme de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.1 Diagramme de classe de l’application . . . . . . . . . . . . . . . . . 18
3.4 Diagramme de séquences détaillé . . . . . . . . . . . . . . . . . . . . . . . 20
3.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4 Mise en œuvre 22
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2 Environnement matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3.1 Choix de l’IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3.2 Choix du framework . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.3.3 Choix de plateforme pour la conception de la base de données . . . 24
4.4 Charte graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.4.1 Choix des polices d’écriture . . . . . . . . . . . . . . . . . . . . . . 24
4.4.2 Palette de couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
ii
Table des matières Table des matières
Conclusion Générale 32
Netographie 33
iii
Liste des figures
4.1 Illustration des widgets d’un simple exemple d’une interface graphique . . 23
4.2 Polices d’écriture utilisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.3 Palette de couleurs utilisée . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.4 Page d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.5 Page d’accès aux services de l’application . . . . . . . . . . . . . . . . . . . 26
4.6 Interface d’inscription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.7 Interface de connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.8 Interface principale de l’application . . . . . . . . . . . . . . . . . . . . . . 28
4.9 Page de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.10 Résultats des recherches . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.11 Recette non trouvée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.12 Recettes par catègorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.13 Détails recette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
iv
Liste des tableaux
v
Introduction Générale
Dans le cadre de mon deuxième projet de fin d’année en ingénierie, j’ai proposé un
sujet qui mélange ma passion et mon domaine professionnel. Ce sujet est émané, au début,
d’un besoin personnel. En fait mon passe-temps préféré est l’art de la cuisine. C’est dans la
cuisine que je passe la majorité de mon temps libre, là où j’oublie tout, où je me destresse
et où je passe des bons moments avec mes ingrédients et mes ustensiles.
Sauvgarder mes recettes et les bien organiser est devenu un besoin primordial. Mais ce
n’est plus mon soucis à moi seulement, ça représente un problème pour toutes les femmes.
Une des chefs cuisine que je suis est Madame le chef Nesrine YACOUBI. Cette chef
est très connue chez les amateurs de la cuisine par ses recettes super faciles et astucieuses.
Chef Nesrine, à part qu’elle a un centre de formation, elle est très active sur les réseaux
sociaux. En effet, elle assure plein de formations en ligne.
Dans le but de mieux organiser son travail et de lui donner plus de professionalisme
j’ai proposé à chef Nesrine de lui développer une application qui, d’une part, lui permet
de mieux gérer ses formations et d’autre part de toujours garantir la satisfaction de ses
amateurs. D’où le sujet de ce PFA : conception et développement d’une application mobile
dédiée à des formations de cuisine en ligne.
Finalement, ce rapport est clôturé par une «Conclusion générale» pour récapituler le
travail réalisé et donner quelques persectives .
1
Chapitre 1
1.1 Introduction
Ce chapitre introductif présente, en premier lieu, le cadre général du projet ainsi que les
objectifs à atteindre. Ensuite une étude et critique de l’existant est proposée. Finalement
une description du travail envisagé est détaillée.
Dans ce contexte et dans le cadre de mon deuxième projet de fin d’année, il m’a
été confié de concevoir et de développer une application mobile de cuisine spécifique à
Madame la chef Nesrine Yacoubi dont le but est de mieux gérer ses formations et publier
ses recettes afin de mieux satisfaire ses amateurs/clients.
2
Chapitre 1. Cadre général du projet 1.3. Etude et critique de l’existant
- :
Comme nous pouvons le remarquer à travers les figures 1.2 et 1.3, ci-dessous, «Al
Matbakh al tounssi» est une application très simplifiée dont le but est juste de présenter
les plats les plus connus en Tunisie. Les recettes sont catégorisées seulement en 2 catégo-
ries ; «recettes salées» et «recettes sucrées». Chaque recette est décrite textuellement en
utilisant le dialecte tunisien.
Tout utilisateur a la possibilité d’avoir une liste de ses recettes préférées.[2]
3
Chapitre 1. Cadre général du projet 1.3. Etude et critique de l’existant
- Cuisine Tunisienne :
«Cuisine Tunisienne» offre les mêmes fonctionnalités que les deux précedentes appli-
cations sauf que les catégories proposées sont différentes et qu’elle ajoute la possibilité de
partager une recette avec d’autres personnes.[3]
Les interfaces de cette application mobile sont présentées par la figure 1.4 ci-dessous.
4
Chapitre 1. Cadre général du projet 1.3. Etude et critique de l’existant
- 750 grammes :
750 grammes est aussi une des plus populaires applications de cuisine dans le monde.
Elle expose plus de 80 000 idées de recettes de cuisine décrites par texte, images et aussi,
on trouve quelques-unes qui sont détaillées par des vidéos.
Les catégories des recettes proposées par cette application mobile sont «entrées»,
«plats», «sauces», «petit-déjeuner», «pâtisserie» et «Dessert».
Comme la première solution, Marmiton, celle là propose à ses visiteurs des recettes
du jour en plus de la listes des recettes les plus consultées.
Ajoutant que tout utilisateur inscrit à cette application peut avoir une liste des favo-
rites qui lui facilite l’accès et la consultation de ses recettes préférées.[5]
Les principales interfaces de cette application sont illustrées par la figure 1.7 située
ci-dessous.
5
Chapitre 1. Cadre général du projet 1.4. Conclusion
1.4 Conclusion
Le présent chapitre a été consacré à la présentation du contexte général du projet et
à l’étude et la critique des solutions existantes pour introduire à la fin l’objectif de ce
projet.
Le chapitre suivant est dédié à l’analyse et la spécification détaillée des besoins.
6
Chapitre 1. Cadre général du projet
Application Solutions tunisiennes Solutions étrangères
Cuisine Tunisienne Al Matbakh al Cuisine Tunisienne Marmiton 750g
critère facile tounssi
Recherches variées
Non Non Non Oui Oui
(Seulement par nom) (Seulement par nom) (par plusieurs (par plusieurs
critères) critères)
Organisation des
recettes en Oui Oui Oui Oui Oui
catégories (4 catégories) (2 catègories) (5 catègories) (9 catègories) (9 catègories)
Mise à jour
(pour une Non Non Non Oui Oui
période)
Dates de
publication des Non Non Non Non Non
recettes
Aspect
ergonomique Oui Non Non Oui Oui
(Selon moi, le (Selon moi, le
contenu proposé ne contenu proposé ne
présente aucune présente aucune
créativité) créativité)
Interaction
Non Non Non Oui Oui
(commentaires) (commentaires)
Application
spécifique à un Non Non Non Non Non
1.4. Conclusion
chef
Formations en
ligne Non Non Non Non Non
2.1 Introduction
Ce chapitre traite la spécification et l’analyse des besoins fonctionnels et non fonction-
nels de l’application et les expose en s’appuyant sur la modélisation UML (voir annexe1).
Une fois authentifié, SisinaApp doit garantir à son administrateur la bonne gestion
et la bonne organisation de ses ressources (gestion des formations, gestion des recettes,
gestion des catègories, gestion des annonces et gestion des astuces). Aussi, nous proposons
de lui mettre en place un dashboard qui lui permet d’analyser et évaluer son travail.
Tout utilisateur inscrit, aura en plus des fonctionnalités offertes à un simple visiteur
de SisinaApp, la possibilité d’avoir une liste des recettes préférées, de s’inscrire à une for-
mation payante, de consulter la liste de ses formations et aussi de donner des suggestions.
8
Chapitre 2. Spécification et analyse des besoins 2.3. Analyse
• L’ergonomie : c’est de rendre la plateforme facile et simple à utiliser ; elle doit être
adaptée à l’utilisateur ( fournisse des composants bien organisés et lisibles, bon choix
des couleurs ...)
• La maintenabilité : le code de la plateforme doit être bien écrit et facile à comprendre
afin d’assurer une maintenance facile et rapide.
• La rapidité : La plateforme doit optimiser les traitements pour avoir un temps de
réponse raisonnable (utilisation minimale des ressources).
2.3 Analyse
L’analyse permet de dégager les différents acteurs qui peuvent agir avec la notre appli-
cation et donne une représentation fonctionnelle des différents acteurs et fonctionnalités
du système sous la forme d’un diagramme de cas d’utilisation.
Dans le diagramme de cas d’utilisation global représenté par la figure 2.1, nous modélisons
tous les cas d’utilisations de base afin d’avoir une vue globale de fonctionnement de
l’application.
9
Chapitre 2. Spécification et analyse des besoins 2.3. Analyse
10
Chapitre 2. Spécification et analyse des besoins 2.3. Analyse
11
Chapitre 2. Spécification et analyse des besoins 2.3. Analyse
12
Chapitre 2. Spécification et analyse des besoins 2.3. Analyse
13
Chapitre 2. Spécification et analyse des besoins 2.3. Analyse
14
Chapitre 2. Spécification et analyse des besoins 2.3. Analyse
Table 2.3 – Description textuelle du cas d’utilisation «Chercher une recette» (par caté-
gorie, par nom)
15
Chapitre 2. Spécification et analyse des besoins 2.4. Conclusion
Figure 2.6 – Diagramme de séquences du cas d’utilisation «Chercher une recette» (par
catégorie, par nom)
2.4 Conclusion
Ce chapitre a été dédié à la spécification et l’analyse des besoins du projet. Cette
analyse nous a permis de mieux cerner la problématique et de bien dégager et fixer les
différentes fonctionnalités à développer.
Le chapitre suivant s’intéresse à l’étude conceptuelle du projet.
16
Chapitre 3
Etude Conceptuelle
3.1 Introduction
Ce chapitre est dédié à la phase de conception qui est la phase la plus importante
pour la mise en place d’un logiciel ; elle permet de décrire, d’une manière détaillée, les
différentes fonctionnalités d’un système dans le but de simplifier sa mise en oeuvre.
Nous mettons l’accent, principalement, sur le modèle architectural choisi (design pat-
tern) et le diagramme de classe qui reflète les différentes entitées de la base de données et
les relations entre elles.
Pour notre projet, nous avons utilisé l’architecture MVVM. Elle est présentée ci-
dessous.
Architecture MVVM :
MVVM signifie Model View ViewModel. Il s’agit d’un modèle de conception de logiciel
conçu pour augmenter la lisibilité et la maintenabilité du code source, en répartissant le
code dans les trois sections mentionnées ci-après [6].
17
Chapitre 3. Etude Conceptuelle 3.3. Diagramme de classe
- View-Model : ViewModel est une partie abstraite de la vue, gérant les modèles et les
propriétés à afficher sur l’écran. Il contient toute la logique de la page. View et ViewModel
sont souvent connectés via une liaison de données. Cela signifie que les modifications du
ViewModel, par exemple sur une propriété, sont immédiatement appliquées à la vue, en
modifiant par exemple le texte affiché à l’écran.
18
Chapitre 3. Etude Conceptuelle 3.3. Diagramme de classe
Figure 3.2 – Diagramme de classe
19
Chapitre 3. Etude Conceptuelle 3.4. Diagramme de séquences détaillé
Nous présentons par la figure 3.3 un exemple de diagramme de séquences détaillé du cas
d’utlisation «Chercher une recette». Il s’agit d’une recherche d’une recette, appartenant
à une catégorie bien determinée, par son nom.
Une fois dans l’interface de recherche, l’utilisateur clique sur une des catégories propo-
sées. Le contrôleur traite la requête et la délègue au service de la base de données concerné.
Celui-ci récupère la liste des recettes de la catégorie choisie et l’envoie au contrôleur qui se
charge de la redirection de l’utilisateur vers la page de la catégorie demandée en affichant
la liste de ses recettes.
L’utilisateur tape le nom d’une recette dans le champs de recherche. Le contrôleur
envoie la requête au service de la base de données qui se charge de la récupération du
résultat. Le contôleur notifie la vue de ce résultat. Et la vue s’actualise selon la réponse
retournée.
20
Chapitre 3. Etude Conceptuelle 3.5. Conclusion
Figure 3.3 – Diagramme de séquences détaillé du cas d’utilisation «Chercher une re-
cette»
3.5 Conclusion
Ce chapite a été consacré à l’étude conceptuelle du projet qui présente la phase la plus
importante et sur laquelle se base le fonctionnement de l’application. Le chapitre qui suit
décrit la dernière phase du projet : la phase de réalisation du projet qui englobe le choix
des technologies utilisées et expose les interfaces de la solution proposée.
21
Chapitre 4
Mise en œuvre
4.1 Introduction
Ce chapitre sert à la présentation de l’environnement matériel et logiciel utilisés lors
du développement de l’application et à l’exposition du travail realisé.
— VS Code
Microsoft Visual Studio Code est un éditeur de code multiplateforme édité par Mi-
crosoft. Cet outil supporte plusieurs langages de programmation comme le HTML,
C++, PHP, Javascript, CSS, Python, etc.
22
Chapitre 4. Mise en œuvre 4.3. Environnement logiciel
— Flutter
Aujourd’hui, le marché du mobile est en évolution continue. Le nombre des utilisa-
teurs des appareils mobiles ne cesse pas d’augmenter et les entreprises n’hésitent pas
à s’investir dans le développement leurs propres applications pour être plus proches
de leurs clients.
Les développeurs des applications mobiles doivent, donc, bien choisir la bonne tech-
nologie de développement pour garantir une meilleure qualité de service.
On cherchant sur Internet j’ai constaté que, aujourd’hui, Flutter et React Native
sont situés en tête de la liste des technologies les plus performants pour le déve-
loppement mobile. Et, comme depuis longtemps, je veux découvrir le framework
Flutter, j’ai choisi de l’utiliser pour la mise en place de ce projet.
- Présentation du Flutter
Flutter est un kit de développement logiciel (SDK) d’interface utilisateur open-
source créé par Google. Il est utilisé pour développer des applications pour Android,
iOS, Linux, Mac, Windows, Google Fuchsia et le web à partir d’une seule base de
code.[6]
”Tout est un widget” : c’est le principe de flutter. Des widgets sont fournis pour
tous les éléments principaux de l’interface utilisateur. Ceci est montré par la figure
4.1.
Figure 4.1 – Illustration des widgets d’un simple exemple d’une interface graphique
23
Chapitre 4. Mise en œuvre 4.4. Charte graphique
— Firebase
Firebase est un ensemble de services d’hébergement pour n’importe quel type d’ap-
plication (Android, iOS, Javascript, Node.js, Java, Unity, PHP, C++ ...). Il propose
d’héberger en NoSQL et en temps réel des bases de données, du contenu, de l’au-
thentification sociale (Google, Facebook, Twitter et Github), et des notifications, ou
encore des services, tel que par exemple un serveur de communication temps réel.[7]
Cette panoplie d’offres m’a poussé à découvrir cette plateforme magique et essayer
d’exploiter ses services dans mon projet.
J’ai utilisé le service d’authentification et de la base de données NoSql «firestore».
24
Chapitre 4. Mise en œuvre 4.5. Interfaces de SisinaApp
tout ce dont la couleur est capable et d’apprendre à la contrôler pour créer des interfaces
graphiques de haute qualité. [10]
La palette de couleurs utilisée pour le design de SisinaApp est exposée par la figure
4.3.
25
Chapitre 4. Mise en œuvre 4.5. Interfaces de SisinaApp
Tout utilisateur peut, soit créer un compte pour pouvoir, par la suite, accéder à l’ap-
plication en tant que participant ou bien il peut choisir, tout simplement, consulter, seule-
ment, les recettes exposées gratuitement.
26
Chapitre 4. Mise en œuvre 4.5. Interfaces de SisinaApp
27
Chapitre 4. Mise en œuvre 4.5. Interfaces de SisinaApp
28
Chapitre 4. Mise en œuvre 4.5. Interfaces de SisinaApp
29
Chapitre 4. Mise en œuvre 4.5. Interfaces de SisinaApp
30
Chapitre 4. Mise en œuvre 4.6. Conclusion
4.6 Conclusion
Ce chapitre a été consacré à la présentation de l’environnement matériel et logiciel du
travail, à la justification des choix technologiques et à l’exposition de la solution proposée.
Ce rapport est clôturé par une conclusion générale et quelques perspectives.
31
Conclusion Générale
«SisinaApp» est le résultat d’un travail sérieux et acharné durant mon deuxième pro-
jet de fin d’année. Il s’agit d’une application mobile spécifique à un chef tunisien, Madame
Nesrine YACOUBI, dans le but d’organiser son travail et de mieux satisfaire ses amateurs
et ses clients.
Notre démarche a commencé par l’étude des besoins en se basant sur une étude de
l’existant. Puis, nous avons choisi le langage UML qui nous a permis de proposer une
conception pour SisinaApp. Le reste du travail consistait essentiellement à essayer de me-
ner à bien le projet en utilisant le Framework Flutter et la plateforme Firebase.
Tout au long de ce projet, j’ai réussi à mettre en épreuve mes acquis en informatique
et à manipuler des nouvelles technologies. J’ai pu développer un savoir-faire en créativité
et en design en utilisant la panoplie de «widgets» proposée par le framework flutter.
Néanmoins, le travail sur cette application n’est pas encore achevé. En fait, c’est seule-
ment l’espace dédié à un utilisateur non inscrit qui a été finalisé. Actuellement, la mise
en place de l’espace de l’administrateur est lancée. L’espace privé d’un utilisateur inscrit
va être développé après afin de pouvoir assurer les formations en ligne et de garantir une
interaction entre notre chef et ses amateurs.
Comme futures perspectives, nous pensons à étendre cette application pour devenir
plateforme web/mobile accessible par un plus grand nombre d’amateurs de la cuisine.
32
Netographie
[4]«Marmiton», https://play.google.com/store/apps/details?id=com.aufeminin.
marmiton.activities&hl=fr&gl=US, consulté le 17/03/2022
[5]«750g», https://play.google.com/store/apps/details?id=com.enki.Enki750g&hl=
fr&gl=US, consulté le 17/03/2022
[12]«Architecture BLoC»,https://blog.cellenza.com/mobile/state-management-avec-
bloc-en-flutter/, consulté le 13/05/2022
33
Annexe A
34
Annexe A. Description du Langage de Modélisation Unifié «UML»
35
Annexe B
BLoC signifie Business Logic Components. L’essentiel de BLoC est que tout, dans
l’application, doit être représenté comme un flux d’événements.
Le widget reproduit des évènements : interaction avec l’interface graphique, évènement
système, changement d’orientation, etc.
Le BLoC se trouve derrière le widget et il a la charge d’écouter et de réagir aux
évènements produits par le widget.
L’objectif de BLoC est en quelques sorte de gérer le cycle de vie d’un widget. Le
langage de programmation Dart est même livré avec une syntaxe pour travailler avec des
flux intégrés dans le langage.
On peut donc considérer le BLoC comme étant une architecture clé en utilisant Flutter
dès lors que l’on souhaite piloter un widget contenant de la logique métier.[10]
36
Résumé
Mots clés : cuisine, recettes, formations en ligne, application mobile, flutter, firebase etc.
Abstract
The objective of this project is to design and develop a mobile application, "SisinaApp",
specific to a Tunisian chef to better organize his work and satisfy his followers.
The main functionalities of SisinaApp are the management and publication of Chef Nesrine's
trainings and recipes and quick access to these recipes by the users of the application.
For the development of this application i used the Flutter framework for the frontend and
Firebase for the backend.
Keywords: cooking, recipes, online training, mobile application, flutter, firebase etc.
الملخص
الهدف من هذا المشروع هو تصميم وتطوير تطبيق هاتف محمول خاص بشيف تونسي من أجل تنظيم عمله بشكل أفضل
.وإرضاء متتبعيه
تتمثل الوظائف الرئيسية للتطبيق في إدارة ونشر تدريبات ووصفات الشيف نسرين والوصول السريع إلى هذه الوصفات
.من قبل مستخدمي التطبيق
تطبيق الهاتف، تدريب عبر اإلنترنت، وصفات، طبخ,flutter, firebase : الكلمات المفاتيح