SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
Chp3 : Architecture des Applications Mobiles
MVC, MVVM, MVP…
Conception et Développement d’Applications Mobiles
GL4 (Option Mobile) - 2015
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 1
Structure
•  Usuellement: Application multi-couches
•  Interface Utilisateur
•  Couche métier
•  Couche données
•  Choix possible entre:
•  Client léger web-based
•  Couches métier et client probablement localisées sur le serveur
•  Client lourd et riche
•  Couches métier et client probablement sur l’appareil
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 2
Chp3 : Architecture des Applications Mobiles
PLAN
1.  Principes de Conception Mobile
2.  Les Patrons de conception MV*
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 3
Chp3 : Architecture des Applications Mobiles
PRINCIPES DE CONCEPTION MOBILE
Chp3 : Architecture des Applications Mobiles
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 4
1.  Principes de Conception Mobile
2.  Les Patrons de conception MV*
Principes de Conception Clefs
•  Principes clefs qui vous aideront à concevoir une application
mobile qui correspond aux « meilleures pratiques », minimise
les coûts et besoins de maintenance, et favorise l’utilisabilité
et extensibilité
•  Séparation des préoccupations
•  Principe de responsabilité unique
•  « Don’t Repeat Yourself » (DRY)
•  Ne pas commencer par une conception évoluée
•  Privilégier la composition sur l’héritage
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 5
Conception d’Applications Mobiles
P1: Séparation des Préoccupations
« Separation of Concerns »
•  Diviser votre application en parties distinctes dont les
fonctionnalités se chevauchent le moins possible
•  Avantages
•  Optimisation d’un module ou fonctionnalité indépendamment des
autres
•  Si un module est défaillant, il n’impactera pas les autres
•  Rend l’application plus facile à comprendre et concevoir
•  Facilite la gestion des systèmes complexes indépendants
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 6
Conception d’Applications Mobiles
P2: Principe de Responsabilité Unique
« Single Responsibility Principle »
•  Chaque composant ou module doit être responsable
uniquement d’une fonctionnalité ou caractéristique
•  Avantages
•  Rend les composants plus cohésifs (unis, rassemblés)
•  Rend l’optimisation des composants plus facile si une caractéristique ou
fonctionnalité a changé
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 7
Conception d’Applications Mobiles
P3: Pas de Répétition
« Don’t Repeat Yourself (DRY) »
•  Il ne faut pas dupliquer une fonctionnalité dans une
application sur plusieurs modules
•  Avantages
•  Faciliter l’implémentation des changements
•  Augmenter la clarté
•  Renforcer la consistance du code
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 8
Conception d’Applications Mobiles
P4: Ne pas Commencer par une Conception Évoluée
«Avoid doing a big design upfront »
•  Si vos besoins ne sont pas clairs, ou s’il y’a des risques
d’évolution de la conception dans le temps, éviter de fournir
trop d’effort pour la conception au début
•  Faites en sorte que votre conception progresse avec votre
application
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 9
Conception d’Applications Mobiles
P5: Privilégier la Composition à l’Héritage
«Composition over Inheritance »
•  Utiliser si possible la composition à la place de l’héritage
quand vous voudrez réutiliser une fonctionnalité
•  Avantages
•  L’héritage augmente la dépendance entre les classes parentes et filles
•  Limitation de la réutilisation des classes filles
•  Réduire la hiérarchie de l’héritage, qui peut s’avérer pénible
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 10
Conception d’Applications Mobiles
Mais aussi…
•  Grouper les types de composants différents dans des couches logiques
•  Faire en sorte que les design patterns d’une couche soient consistants
•  Ne pas utiliser de design patterns incompatibles dans une même couche
•  Ne pas mixer plusieurs types de composants dans la même couche logique
•  Déterminer le type de couches que vous voulez renforcer
•  Utiliser l’abstraction pour implémenter le couplage faible entre les couches
•  Éviter de surcharger les fonctionnalités d’un composant
•  Comprendre comment est-ce que les composants communiquent les uns
avec les autres
•  Garder des formats de données consistantes dans une couche
•  Séparer le plus possible le code non fonctionnel (sécurité, logging…) du code
métier
•  Être consistant dans les conventions de nommage
•  Établir des standards pour la gestion des exception
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 11
Conception d’Applications Mobiles
LES PATRONS DE CONCEPTION MV*
Chp3 : Architecture des Applications Mobiles
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 12
1.  Principes de Conception Mobile
2.  Les Patrons de conception MV*
Avantages
« Les patrons de conception sont des solutions réutilisables pour des
problèmes récurrents »
•  Réutilisabilité
•  Le modèle n’est pas couplé avec sa représentation, et peut donc être
facilement réutilisé dans d’autres projets
•  Testabilité
•  Tester les couche indépendamment les unes des autres les rend plus faciles
à gérer et à corriger
•  Maintenabilité
•  Il est plus facile de modifier une partie de l’application sans impacter les
autres modules
•  Compréhensibilité
•  Le code est plus compréhensible et plus lisible
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 13
Les Patrons de Conception MV*
MVC : Model – View – Controller
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 14
Les Patrons de Conception MV*
Model
ControllerView
1*
Classes du Modèle
Requête & RelaiComposants UI
MVC : Couches
•  Model
•  Données de l’application
•  Méthodes manipulant ces données
•  Stockage et extraction de la BD
•  View
•  Représentation visuelle du modèle
•  Gère les interactions utilisateur
•  Contrôleur
•  Accès aux données à partir du modèle
•  Affichage des données dans les vues
•  Intermédiaire entre plusieurs vues et modèles
•  Observe les changements du modèle et les transmet à la vue
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 15
Les Patrons de Conception MV*
M
CV
1*
MVC : Flux
•  Les entrées utilisateur sont interceptées par le contrôleur
•  Un contrôleur peut faire appel à plusieurs vues (erreur, succès…)
•  Une vue n’a pas de visibilité sur son contrôleur
•  Le contrôleur passe le modèle à la vue
•  Le modèle a en général peu (ou pas) de méthodes (comportement)
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 16
Les Patrons de Conception MV*
M
CV
1*
MVC : Références
•  La vue fait référence au modèle, mais pas le contraire
•  La vue « observe » les changements du modèle, et s’y adapte
•  Le contrôleur fait référence au modèle, le remplit et le passe à
la vue
•  La vue n’a pas de visibilité sur le contrôleur, mais fait
référence et s’attend à un modèle particulier
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 17
Les Patrons de Conception MV*
M
CV
1*
MVVM : Model – View – ViewModel
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 18
Les Patrons de Conception MV*
Model
ViewModelView
1*
MVVM : Flux
•  L’ entrée utilisateur commence par la vue et peut provoquer l’exécution
d’un comportement ViewModel
•  La vue et le modèle ne communiquent jamais
•  ViewModel est un modèle fortement typé de la vue, qui est une
réflexion exacte ou une abstraction de cette vue
•  ViewModel et Vue sont toujours synchronisés
•  Le modèle n’a aucune idée que le VM ou la vue existent
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 19
Les Patrons de Conception MV*
M
VMV
1*
MVVM : Références
•  Un VM n’a pas besoin de référencer la vue
•  La vue est reliée à des propriétés du VM
•  La vue n’a aucune idée sur l’existence du modèle
•  Le VM et le modèle n’ont pas de référence ou visibilité sur la vue
•  Le modèle n’a aucune idée de l’existence de la vue et du VM
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 20
Les Patrons de Conception MV*
M
VMV
1*
MVP : Model – View – Presenter
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 21
Les Patrons de Conception MV*
Model
PresenterView
11
MVP : Flux
•  L’ entrée utilisateur commence par la vue, pas par le Presenter
•  La vue invoque les commandes du Presenter, et le Presenter modifie la
vue
•  La vue et le modèle ne communiquent jamais
•  Le Presenter est une couche d’abstraction de la vue
•  Chaque vue a un Presenter qui lui est associé (1-to-1)
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 22
Les Patrons de Conception MV*
M
PV
11
MVP : Références
•  Le Presenter a besoin d’une référence vers la vue
•  La vue a également une référence vers son Presenter
•  C’est le Presenter qui va charger la vue à partir du modèle, pas le
modèle
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 23
Les Patrons de Conception MV*
M
PV
11
Références
•  Microsoft Patterns and Practices, « Mobile Application Architecture
Guide: Application Architecture Pocket Guide », 2008
•  Amir Jalilifard, « A belly dance in the holy lands of MVC, MVP and MVVM
Patterns via Javascript », Code Project, 24 février 2015, url:
http://www.codeproject.com/Articles/844789/A-Belly-Dance-in-Holy-
Lands-of-MVC-MVP-and-MVVM-Pa
•  Ketan Thakkar, « Difference between MVC vs. MVP vs. MVVM », 11
septembre 2014, url:
http://blogs.k10world.com/technology/difference-between-mvc-vs-
mvp-vs-mvvm/
•  Wiztelsys, « Design Patterns used in Mobile », 17 avril 2014, url =
https://wiztelsys.com/blog/design-patterns-used-in-mobiles/
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 24
Sites Web & Livres

Contenu connexe

Tendances

Cloud et Virtualisation
Cloud et VirtualisationCloud et Virtualisation
Cloud et Virtualisation
Marc Jouve
 
gestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiquegestion de magasin vente matériels informatique
gestion de magasin vente matériels informatique
Oussama Yoshiki
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Riadh K.
 

Tendances (20)

Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
Cloud et Virtualisation
Cloud et VirtualisationCloud et Virtualisation
Cloud et Virtualisation
 
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
 
Rapport de projet de fin d"études
Rapport de projet de fin d"étudesRapport de projet de fin d"études
Rapport de projet de fin d"études
 
Présentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clientsPrésentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clients
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Projet Fin D'étude Application Mobile
Projet Fin D'étude Application MobileProjet Fin D'étude Application Mobile
Projet Fin D'étude Application Mobile
 
Rapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc InformatiqueRapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc Informatique
 
gestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiquegestion de magasin vente matériels informatique
gestion de magasin vente matériels informatique
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédia
 
Conception et réalisation d’une application Mobile banking
Conception et réalisation d’une application  Mobile banking  Conception et réalisation d’une application  Mobile banking
Conception et réalisation d’une application Mobile banking
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications Mobiles
 
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
Projet de fin étude  ( LFIG : Conception et Développement d'une application W...Projet de fin étude  ( LFIG : Conception et Développement d'une application W...
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
 
Rapport de projet de conception et de développement
Rapport de projet de conception et de développementRapport de projet de conception et de développement
Rapport de projet de conception et de développement
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 

En vedette

En vedette (20)

Mobile-Chp4 côté serveur
Mobile-Chp4 côté serveurMobile-Chp4 côté serveur
Mobile-Chp4 côté serveur
 
Chp6 - Développement iOS
Chp6 - Développement iOSChp6 - Développement iOS
Chp6 - Développement iOS
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
P4 intents
P4 intentsP4 intents
P4 intents
 
P2 éléments graphiques android
P2 éléments graphiques androidP2 éléments graphiques android
P2 éléments graphiques android
 
P6 composants avancés
P6 composants avancésP6 composants avancés
P6 composants avancés
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
P5 stockage
P5 stockageP5 stockage
P5 stockage
 
Android-Tp4: stockage
Android-Tp4: stockageAndroid-Tp4: stockage
Android-Tp4: stockage
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
P3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésP3 listes et elements graphiques avancés
P3 listes et elements graphiques avancés
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de Services
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOA
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
Sécurité des Systèmes Répartis- Partie 1
Sécurité des Systèmes Répartis- Partie 1 Sécurité des Systèmes Répartis- Partie 1
Sécurité des Systèmes Répartis- Partie 1
 
eServices-Tp3: esb
eServices-Tp3: esbeServices-Tp3: esb
eServices-Tp3: esb
 

Similaire à Chp3 - Architecture Logicielle des Applications Mobiles

2.2 cycles de vie
2.2 cycles de vie2.2 cycles de vie
2.2 cycles de vie
Harun Mouad
 
Objecteering mdday2010
Objecteering mdday2010Objecteering mdday2010
Objecteering mdday2010
MD DAY
 

Similaire à Chp3 - Architecture Logicielle des Applications Mobiles (20)

eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API Management
 
Introducthion mvvm avec wpf
Introducthion mvvm avec wpfIntroducthion mvvm avec wpf
Introducthion mvvm avec wpf
 
WPF MVVM
WPF MVVMWPF MVVM
WPF MVVM
 
les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture
 
cycle de vie
cycle de vie cycle de vie
cycle de vie
 
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveDesign applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
 
Trouver le chemin des bonnes pratiques
Trouver le chemin des bonnes pratiquesTrouver le chemin des bonnes pratiques
Trouver le chemin des bonnes pratiques
 
Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...
Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...
Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...
 
Cours spring
Cours springCours spring
Cours spring
 
2.2 cycles de vie
2.2 cycles de vie2.2 cycles de vie
2.2 cycles de vie
 
2 ModéLe Mvc
2 ModéLe Mvc2 ModéLe Mvc
2 ModéLe Mvc
 
MVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejMVVM par Karim PIerre Maalej
MVVM par Karim PIerre Maalej
 
Objecteering mdday2010
Objecteering mdday2010Objecteering mdday2010
Objecteering mdday2010
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Programmation Web developpement dynamique
Programmation Web developpement dynamiqueProgrammation Web developpement dynamique
Programmation Web developpement dynamique
 
developpement web framework cms developpement brute
developpement web framework cms developpement brutedeveloppement web framework cms developpement brute
developpement web framework cms developpement brute
 
Une application sans framework en 2019
Une application sans framework en 2019Une application sans framework en 2019
Une application sans framework en 2019
 
Créer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShopCréer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShop
 
Prezentare ASP.Net.pptx
Prezentare ASP.Net.pptxPrezentare ASP.Net.pptx
Prezentare ASP.Net.pptx
 
Versionning et travail en équipe avec Salesforce - 27/11/2014
Versionning et travail en équipe avec Salesforce - 27/11/2014Versionning et travail en équipe avec Salesforce - 27/11/2014
Versionning et travail en équipe avec Salesforce - 27/11/2014
 

Plus de Lilia Sfaxi

Plus de Lilia Sfaxi (20)

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 

Chp3 - Architecture Logicielle des Applications Mobiles

  • 1. Chp3 : Architecture des Applications Mobiles MVC, MVVM, MVP… Conception et Développement d’Applications Mobiles GL4 (Option Mobile) - 2015 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 1
  • 2. Structure •  Usuellement: Application multi-couches •  Interface Utilisateur •  Couche métier •  Couche données •  Choix possible entre: •  Client léger web-based •  Couches métier et client probablement localisées sur le serveur •  Client lourd et riche •  Couches métier et client probablement sur l’appareil Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 2 Chp3 : Architecture des Applications Mobiles
  • 3. PLAN 1.  Principes de Conception Mobile 2.  Les Patrons de conception MV* Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 3 Chp3 : Architecture des Applications Mobiles
  • 4. PRINCIPES DE CONCEPTION MOBILE Chp3 : Architecture des Applications Mobiles Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 4 1.  Principes de Conception Mobile 2.  Les Patrons de conception MV*
  • 5. Principes de Conception Clefs •  Principes clefs qui vous aideront à concevoir une application mobile qui correspond aux « meilleures pratiques », minimise les coûts et besoins de maintenance, et favorise l’utilisabilité et extensibilité •  Séparation des préoccupations •  Principe de responsabilité unique •  « Don’t Repeat Yourself » (DRY) •  Ne pas commencer par une conception évoluée •  Privilégier la composition sur l’héritage Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 5 Conception d’Applications Mobiles
  • 6. P1: Séparation des Préoccupations « Separation of Concerns » •  Diviser votre application en parties distinctes dont les fonctionnalités se chevauchent le moins possible •  Avantages •  Optimisation d’un module ou fonctionnalité indépendamment des autres •  Si un module est défaillant, il n’impactera pas les autres •  Rend l’application plus facile à comprendre et concevoir •  Facilite la gestion des systèmes complexes indépendants Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 6 Conception d’Applications Mobiles
  • 7. P2: Principe de Responsabilité Unique « Single Responsibility Principle » •  Chaque composant ou module doit être responsable uniquement d’une fonctionnalité ou caractéristique •  Avantages •  Rend les composants plus cohésifs (unis, rassemblés) •  Rend l’optimisation des composants plus facile si une caractéristique ou fonctionnalité a changé Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 7 Conception d’Applications Mobiles
  • 8. P3: Pas de Répétition « Don’t Repeat Yourself (DRY) » •  Il ne faut pas dupliquer une fonctionnalité dans une application sur plusieurs modules •  Avantages •  Faciliter l’implémentation des changements •  Augmenter la clarté •  Renforcer la consistance du code Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 8 Conception d’Applications Mobiles
  • 9. P4: Ne pas Commencer par une Conception Évoluée «Avoid doing a big design upfront » •  Si vos besoins ne sont pas clairs, ou s’il y’a des risques d’évolution de la conception dans le temps, éviter de fournir trop d’effort pour la conception au début •  Faites en sorte que votre conception progresse avec votre application Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 9 Conception d’Applications Mobiles
  • 10. P5: Privilégier la Composition à l’Héritage «Composition over Inheritance » •  Utiliser si possible la composition à la place de l’héritage quand vous voudrez réutiliser une fonctionnalité •  Avantages •  L’héritage augmente la dépendance entre les classes parentes et filles •  Limitation de la réutilisation des classes filles •  Réduire la hiérarchie de l’héritage, qui peut s’avérer pénible Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 10 Conception d’Applications Mobiles
  • 11. Mais aussi… •  Grouper les types de composants différents dans des couches logiques •  Faire en sorte que les design patterns d’une couche soient consistants •  Ne pas utiliser de design patterns incompatibles dans une même couche •  Ne pas mixer plusieurs types de composants dans la même couche logique •  Déterminer le type de couches que vous voulez renforcer •  Utiliser l’abstraction pour implémenter le couplage faible entre les couches •  Éviter de surcharger les fonctionnalités d’un composant •  Comprendre comment est-ce que les composants communiquent les uns avec les autres •  Garder des formats de données consistantes dans une couche •  Séparer le plus possible le code non fonctionnel (sécurité, logging…) du code métier •  Être consistant dans les conventions de nommage •  Établir des standards pour la gestion des exception Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 11 Conception d’Applications Mobiles
  • 12. LES PATRONS DE CONCEPTION MV* Chp3 : Architecture des Applications Mobiles Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 12 1.  Principes de Conception Mobile 2.  Les Patrons de conception MV*
  • 13. Avantages « Les patrons de conception sont des solutions réutilisables pour des problèmes récurrents » •  Réutilisabilité •  Le modèle n’est pas couplé avec sa représentation, et peut donc être facilement réutilisé dans d’autres projets •  Testabilité •  Tester les couche indépendamment les unes des autres les rend plus faciles à gérer et à corriger •  Maintenabilité •  Il est plus facile de modifier une partie de l’application sans impacter les autres modules •  Compréhensibilité •  Le code est plus compréhensible et plus lisible Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 13 Les Patrons de Conception MV*
  • 14. MVC : Model – View – Controller Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 14 Les Patrons de Conception MV* Model ControllerView 1* Classes du Modèle Requête & RelaiComposants UI
  • 15. MVC : Couches •  Model •  Données de l’application •  Méthodes manipulant ces données •  Stockage et extraction de la BD •  View •  Représentation visuelle du modèle •  Gère les interactions utilisateur •  Contrôleur •  Accès aux données à partir du modèle •  Affichage des données dans les vues •  Intermédiaire entre plusieurs vues et modèles •  Observe les changements du modèle et les transmet à la vue Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 15 Les Patrons de Conception MV* M CV 1*
  • 16. MVC : Flux •  Les entrées utilisateur sont interceptées par le contrôleur •  Un contrôleur peut faire appel à plusieurs vues (erreur, succès…) •  Une vue n’a pas de visibilité sur son contrôleur •  Le contrôleur passe le modèle à la vue •  Le modèle a en général peu (ou pas) de méthodes (comportement) Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 16 Les Patrons de Conception MV* M CV 1*
  • 17. MVC : Références •  La vue fait référence au modèle, mais pas le contraire •  La vue « observe » les changements du modèle, et s’y adapte •  Le contrôleur fait référence au modèle, le remplit et le passe à la vue •  La vue n’a pas de visibilité sur le contrôleur, mais fait référence et s’attend à un modèle particulier Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 17 Les Patrons de Conception MV* M CV 1*
  • 18. MVVM : Model – View – ViewModel Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 18 Les Patrons de Conception MV* Model ViewModelView 1*
  • 19. MVVM : Flux •  L’ entrée utilisateur commence par la vue et peut provoquer l’exécution d’un comportement ViewModel •  La vue et le modèle ne communiquent jamais •  ViewModel est un modèle fortement typé de la vue, qui est une réflexion exacte ou une abstraction de cette vue •  ViewModel et Vue sont toujours synchronisés •  Le modèle n’a aucune idée que le VM ou la vue existent Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 19 Les Patrons de Conception MV* M VMV 1*
  • 20. MVVM : Références •  Un VM n’a pas besoin de référencer la vue •  La vue est reliée à des propriétés du VM •  La vue n’a aucune idée sur l’existence du modèle •  Le VM et le modèle n’ont pas de référence ou visibilité sur la vue •  Le modèle n’a aucune idée de l’existence de la vue et du VM Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 20 Les Patrons de Conception MV* M VMV 1*
  • 21. MVP : Model – View – Presenter Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 21 Les Patrons de Conception MV* Model PresenterView 11
  • 22. MVP : Flux •  L’ entrée utilisateur commence par la vue, pas par le Presenter •  La vue invoque les commandes du Presenter, et le Presenter modifie la vue •  La vue et le modèle ne communiquent jamais •  Le Presenter est une couche d’abstraction de la vue •  Chaque vue a un Presenter qui lui est associé (1-to-1) Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 22 Les Patrons de Conception MV* M PV 11
  • 23. MVP : Références •  Le Presenter a besoin d’une référence vers la vue •  La vue a également une référence vers son Presenter •  C’est le Presenter qui va charger la vue à partir du modèle, pas le modèle Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 23 Les Patrons de Conception MV* M PV 11
  • 24. Références •  Microsoft Patterns and Practices, « Mobile Application Architecture Guide: Application Architecture Pocket Guide », 2008 •  Amir Jalilifard, « A belly dance in the holy lands of MVC, MVP and MVVM Patterns via Javascript », Code Project, 24 février 2015, url: http://www.codeproject.com/Articles/844789/A-Belly-Dance-in-Holy- Lands-of-MVC-MVP-and-MVVM-Pa •  Ketan Thakkar, « Difference between MVC vs. MVP vs. MVVM », 11 septembre 2014, url: http://blogs.k10world.com/technology/difference-between-mvc-vs- mvp-vs-mvvm/ •  Wiztelsys, « Design Patterns used in Mobile », 17 avril 2014, url = https://wiztelsys.com/blog/design-patterns-used-in-mobiles/ Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 24 Sites Web & Livres