Révision du modèle MVC et du perceptron

Slides:



Advertisements
Présentations similaires
Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012
Advertisements

Création de la base du SI Idée de départ : créer plusieurs couches de données avec chacune un intérêt propre et indépendante. Chaque couche doit pouvoir.
Module 5 : Implémentation de l'impression
Chap. 4 Recherche en Table
1 IXERP consulting. L archivage consiste à extraire de la base de données opérationnelle les informations qu' il n est plus nécessaire de conserver «
La politique de Sécurité
Introduction à la POO: Les classes vs les objets
12 novembre 2012 Grégory Petit
FSAB1402: Informatique 2 Techniques de Programmation Orientée Objet
Etude des Technologies du Web services
SECURITE DU SYSTEME D’INFORMATION (SSI)
Créer une animation simple Gif avec ImageReady.
Principes de la technologie orientée objets
Introduction au Génie Logiciel
EXTENSION FONDATION DE NOUVEAUX CLUBS Bienvenue chers amis Lions.
Architecture Réseau Modèle OSI et TCP.
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Section XI Traitement de fichiers
1 Sécurité Informatique : Proxy Présenter par : Mounir GRARI.
Initiation à la conception de systèmes d'information
Réalisée par :Samira RAHALI
Apprendre à mieux se servir de L’explorateur de Windows
Chaque use-case génère un ou des scénarios, traduits par des diagrammes objets, qui permettent d’introduire et/ou de compléter les diagrammes des catégories.
Révision et principes SOLID
Révision Les principes SOLID.
Chap 4 Les bases de données et le modèle relationnel
Demain se construit aujourd'hui
28 novembre 2012 Grégory Petit
Développement dapplication avec base de données Semaine 3 : Windows Form avec Entité Framework Automne 2013.
IFT1025, Programmation 2 Jian-Yun Nie
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Classes abstraites et Interfaces
Gestion des bases de données
Techniques de test Boulanger Jean-Louis.
Structures de données IFT-2000
Introduction au paradigme orienté-objet (suite)
Présentation du mémoire
Portée, arrimages et intervenants Évolution des méthodes
Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013.
Patrons de conceptions de créations
Travaux Pratiques Représentation des connaissances
Agents intelligents.  L’IA peut être envisagée de différentes manières. Les deux questions essentielles qu’ il convient de se poser sont: Vous intéressez-vous.
RESEAU.
Stratégie d’entreprise - Alstom Transport – Marco Férrogalini
La Modélisation Orientée Objet Concevoir un programme : modélisation du problème à résoudre Notion de programme : machine de Turing Pouvoir d’expression.
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
Créer des packages.
Vérification dans le cycle de vie GEF492A 2014 Référence: [HvV §14.2, 14.9] Capt Vincent Roberge Collège Militaire Royal du Canada Génie électrique et.
2003 (revisé 2008)SEG Chapitre 11 Chapitre 1 “The Systems Engineering Context” Le contexte du génie de systèmes.
Allez sur Bonjour! Je vous présente class dojo, un site qui permet une gestion de classe plus facile et surtout beaucoup.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Introduction au Génie Logiciel
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Windows 2003 Server Modification du mode de domaine
KEY NOTE GRH.
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
Développement d’application avec base de données Semaine 6 : Windows Form avec Entité Framework Automne 2014.
ISNET-43 Atelier de génie logiciel Approche fonctionnelle ou objets Concurrence ou complémentarité ? Synthèse.
Création JJ Pellé novembre 2014Musique : David Schombert.
Applications Internet Cours 3 21 janvier 2010 Cours 3 21 janvier 2010.
Nouvelles Technologies Internet & Mobile
Introduction à la Programmation Orientée Objet
E2CTF – Support Meta-Data 19 novembre 2008 Liens entre applications Smarteam Intégration APIs CDD Number Server Obtention Numéro CERN CartWeb Editeur Cartouche.
Test et assurance qualité : Focus Projet Outiz
BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ
Template Method Design Pattern. But Définir le squelette d’un algorithme tout en déléguant certaines étapes aux sous-classes. Les sous-classes peuvent.
PRÉSENTATION AGL LES TESTS LOGICIELS LES TEST LOGICIELS 1 Mickael BETTINELLI Brandon OZIOL Gaétan PHILIPPE Simon LUAIRE.
Développement d’application avec base de données Semaine 6 : Windows Form avec Entité Framework Automne 2015.
Révision Les principes SOLID. Question  Qu’est-ce que le S de Solid?
Transcription de la présentation:

Révision du modèle MVC et du perceptron Architecture d’application Hugo St-Louis

This slide is for display to the audience to show them how they will vote on your polls in your presentation. You can remove this slide if you like or if the audience is already comfortable with texting and/or voting with Poll Everywhere. Sample Oral Instructions: Ladies and gentlemen, throughout today’s meeting we’re going to engage in some audience polling to find out what you’re thinking, what you’re up to and what you know. Now I’m going to ask for your opinion. We’re going to use your phones to do some audience voting just like on American Idol. So please take out your cell phones, but remember to leave them on silent. You can participate by sending a text message. This is a just standard rate text message, so it may be free for you, or up to twenty cents on some carriers if you do not have a text messaging plan. The service we are using is serious about privacy. I cannot see your phone numbers, and you’ll never receive follow-up text messages outside this presentation. There’s only one thing worse than email spam – and that’s text message spam because you have to pay to receive it!

PollEv.com This slide is for display to the audience to show them how they will vote on your polls in your presentation. You can remove this slide if you like or if the audience is already comfortable with texting and/or voting with Poll Everywhere. Sample Oral Instructions: Ladies and gentlemen, throughout today’s meeting we’re going to engage in some audience polling to find out what you’re thinking, what you’re up to and what you know. Now I’m going to ask for your opinion. We’re going to use your phones or laptops to do some audience voting just like on American Idol. So please take out your mobilephones or laptops, but remember to leave them on silent. You can participate by submitting an answer at PollEv.com on your laptop or a mobile phone. The service we are using is serious about privacy. I cannot see who you are or who voted.

Don’t forget: You can copy-paste this slide into other presentations, and move or resize the poll. http://www.polleverywhere.com/multiple_choice_polls/MTQ2ODkwMTU2Mw If you like, you can use this slide as a template for your own voting slides. You might use a slide like this if you feel your audience would benefit from the picture showing a text message on a phone. Poll: Qu'est-ce qu'un perceptron?

Don’t forget: You can copy-paste this slide into other presentations, and move or resize the poll. http://www.polleverywhere.com/multiple_choice_polls/MjI0NjAwMzAx If you like, you can use this slide as a template for your own voting slides. You might use a slide like this if you feel your audience would benefit from the picture showing a text message on a phone. Poll: Qu'est-ce qu'un critère de convergence?

Don’t forget: You can copy-paste this slide into other presentations, and move or resize the poll. http://www.polleverywhere.com/multiple_choice_polls/LTYyMzU0MDE0MA If you like, you can use this slide as a template for your own voting slides. You might use a slide like this if you feel your audience would benefit from the picture showing a text message on a phone. Poll: À quoi sert le vecteur de poids synaptiq...

Don’t forget: You can copy-paste this slide into other presentations, and move or resize the poll. http://www.polleverywhere.com/multiple_choice_polls/LTM0MTQwMTk0Nw If you like, you can use this slide as a template for your own voting slides. You might use a slide like this if you feel your audience would benefit from the picture showing a text message on a phone. Poll: Comment interroger un perceptron?

Don’t forget: You can copy-paste this slide into other presentations, and move or resize the poll. http://www.polleverywhere.com/multiple_choice_polls/MTM3ODc2MzYzMA If you like, you can use this slide as a template for your own voting slides. You might use a slide like this if you feel your audience would benefit from the picture showing a text message on a phone. Poll: Pourquoi utiliser le modèle MVC?

Don’t forget: You can copy-paste this slide into other presentations, and move or resize the poll. http://www.polleverywhere.com/multiple_choice_polls/NTQwMzIyNDI5 If you like, you can use this slide as a template for your own voting slides. You might use a slide like this if you feel your audience would benefit from the picture showing a text message on a phone. Poll: Qu'est-ce que la Business Logic(BL)?

Don’t forget: You can copy-paste this slide into other presentations, and move or resize the poll. http://www.polleverywhere.com/multiple_choice_polls/MTg1MDA0Nzg1NQ If you like, you can use this slide as a template for your own voting slides. You might use a slide like this if you feel your audience would benefit from the picture showing a text message on a phone. Poll: Dans le modèle MVC, qu'est-ce que la cou...

Don’t forget: You can copy-paste this slide into other presentations, and move or resize the poll. http://www.polleverywhere.com/multiple_choice_polls/LTEyMzE2NzM5MDA If you like, you can use this slide as a template for your own voting slides. You might use a slide like this if you feel your audience would benefit from the picture showing a text message on a phone. Poll: Dans le modèle MVC, qu'est-ce que la cou...

Don’t forget: You can copy-paste this slide into other presentations, and move or resize the poll. http://www.polleverywhere.com/multiple_choice_polls/NDk1MTkwMTc0 If you like, you can use this slide as a template for your own voting slides. You might use a slide like this if you feel your audience would benefit from the picture showing a text message on a phone. Poll: Dans le modèle MVC, qu'est-ce que la cou...

Lecture Obligatoire Vous devez lire le fichier architecture.pdf sur le site Internet du cours. Ce document explique l’architecture en couche selon une approche intéressante. IMPORTANT POUR L’EXAMEN!!!

Introduction aux principes SOLID Architecture d’application Hugo St-Louis

Introduction aux principes SOLID Architecture d’application Hugo St-Louis

Plan Introduction Principes SOLID Conclusion

Introduction Métrique d’un bon programme objet Cohésion: Une classe => une tâche Couplage: Liens entre les objets pour former un tout. Encapsulation: Rendre invisible l’implémentation

SOLID SOLID est l'acronyme de cinq principes de base (Single Responsibility Principle, Open/Closed Principle, Liskov Substitution Principle, Interface Segregation Principle et Dependency Inversion Principle) que l'on peut appliquer au développement objet. Basé sur la méthodologie AGILE, tels que décrits dans le livre de Robert Martin, Agile Software Development, Principles, Patterns, and Practices

Responsabilité unique (SRP: Single Responsibility Principle) Définition:"Si une classe a plus d'une responsabilité, alors ces responsabilités deviennent couplées. Des modifications apportées à l'une des responsabilités peuvent porter atteinte ou inhiber la capacité de la classe de remplir les autres. Ce genre de couplage amène à des architectures fragiles qui dysfonctionnent de façon inattendues lorsqu'elles sont modifiées." -- Robert C. Martin

Responsabilité unique (SRP: Single Responsibility Principle)

Responsabilité unique (SRP: Single Responsibility Principle) Le principe de responsabilité unique, réduit à sa plus simple expression, est qu'une classe donnée ne doit avoir qu'une seule responsabilité, et, par conséquent, qu'elle ne doit avoir qu'une seule raison de changer.

Responsabilité unique (SRP: Single Responsibility Principle) Les avantages de cette approche sont les suivants: Diminution de la complexité du code Augmentation de la lisibilité de la classe Meilleure encapsulation, et meilleure cohésion, les responsabilités étant regroupées

Comment appliquer Pour une classe de taille importante, il est souvent bénéfique de lister toutes les méthodes, et de regrouper celles dont le nom ou les actions semblent être de la même famille. Si plusieurs groupes apparaissent dans une classe, c'est un bon indicateur que la classe doit être reprise.

Comment appliquer Une autre méthode est de regarder les dépendances externes de la classe. La méthode appelle-t-elle directement la base de données ? Utilise-t'elle une API spécifique ? Certains membres sont-ils appelés uniquement par une fonction, ou par un sous-ensemble de fonctions ? Si c'est le cas, ce sont peut-être des responsabilités annexes, dont il faut se débarrasser..

Exemple Pour faire simple, on va prendre un mauvais exemple, que l'on va refactoriser. Le pattern utilisé n’est pas mauvais en soit, mais il ne respecte pas les règles SOLID.

Exemple Voir le mauvais exemple En termes de responsabilités, cette classe a les responsabilités: de créer les objets de stocker les données de l'objet et de gérer la persistance des objets. Voir le bon exemple.

Exemple Suite a cette factorisation, les responsabilités de nos trois classes sont beaucoup plus évidentes, la classe d'accès aux données ne traite plus que des données, l'objet possède des méthodes pour manipuler ses propres données, et la factory a la responsabilité de faire travailler ensemble la classe d'accès aux données et l'objet...

Exemple Une notion à garder à l'esprit est qu'il ne faut pas aller trop loin dans la séparation des responsabilités, au risque de tomber dans un excès inverse.

Ouvert/fermé (OCP: Open/closed Principle) Définition: "Les modules qui se conforment au principe ouvert/ferme ont deux attributs principaux. 1 - Ils sont "ouverts pour l'extension". Cela signifie que le comportement du module peut être étendu, que l'on peut faire se comporter ce module de façons nouvelles et différentes si les exigences de l'application sont modifiées, ou pour remplir les besoins d'une autre application. 2 - Ils sont "Fermés à la modification". Le code source d'un tel module ne peut pas être modifié. Personne n'est autorisé à y apporter des modifications."

Ouvert/fermé (OCP: Open/closed Principle) Pour quelles raisons voudrait-on pouvoir mettre notre programme en conformité avec ce principe ? Plus de flexibilité par rapport aux évolutions Diminution du couplage

Ouvert/fermé (OCP: Open/closed Principle) Deux possibilités nous sont données, la première étant de chercher à identifier une fonction ou une méthode dont le comportement est susceptible d'être fortement impacté par une modification ultérieure. => Difficile  La seconde méthode, plus agile, est de conserver un design simple, et lorsqu’on arrive aux limites de ce design, d'en changer...

Ouvert/fermé (OCP: Open/closed Principle) On va donc, le plus souvent, commencer par le code le plus simple pouvant fonctionner, et, lorsque l'on rencontre une exception nous obligeant à modifier la classe pour l'étendre, s'assurer qu'une modification ultérieure de même type ne nous forcera pas à modifier de nouveau notre design.

Ouvert/fermé (OCP: Open/closed Principle) Comme règles de bonne conduite, on peut essayer d'une part de ne pas dépendre du type d'un objet pour choisir un chemin de traitement. D'autre part, on peut limiter l'héritage, en y préférant la composition. Est-ce que vous reconnaissez un design pattern? Par exemple, DP Décorateur permet de rajouter à un objet de nouvelles fonctionnalités sans modifier son code, par décoration, le DP Visiteur permet d'étendre les capacités de la collection parcourue sans modifier l'implémentation des objets manipulés, etc...

Exemple Après une itération, on va avoir une nouvelle demande de notre client (interne, mais client quand même), à savoir qu'il veut pouvoir gérer plusieurs types de work items.  Voir le bon et le mauvais exemple

La substitution de Liskov Définition pour ceux qui veulent aller à l’Université : Si pour chaque objet o1 de type S il existe un objet o2 de type T tel que pour tout programme P défini en termes de T, le comportement de P est inchangé quand on substitue o1 à o2, alors S est un sous-type de T.

La substitution de Liskov Définition: Les sous-types doivent être remplaçables par leur type de base. Là, je vais en voir un ou deux (ou plus) dire: « Oui, mais à partir du moment où ma classe S hérite de ma classe T », je dois pouvoir caster S en T et là ça va marcher... 

La substitution de Liskov Le but de ce principe est exactement de pouvoir utiliser une méthode sans que cette méthode ait à connaitre la hiérarchie des classes utilisées dans l'application, ce qui veut dire: pas de cast pas de as pas de is

La substitution de Liskov

La substitution de Liskov Ce principe apporte: Augmentation de l'encapsulation Diminution du couplage. En effet, LSP permet de contrôler le couplage entre les descendants d'une classe et les clients de cette classe. L’idée qui se cache derrière cette image est que le canard électrique est une spécialisation du canard naturel (la classe canard électrique hérite de la classe canard)…et qae cela pose un problème parce que le canard électrique à un besoin  impératif de batterie pour fonctionner contrairement au canard naturelle.

La substitution de Liskov Comment l'appliquer: Pour détecter le non respect de ce principe, on va se poser la question de savoir si on peut, sans dommage, remplacer la classe en cours par une interface d'un niveau supérieur.

Exemple Bien que ce soit compliquer à comprendre le résultat est simple. Utiliser des noms significatifs pour pouvoir redéfinir leur comportement plutôt que de créer plusieurs méthodes.

Séparation des Interfaces (ISP: Interface Segregation Principle) Définition: Les clients d'une entité logicielle ne doivent pas avoir à dépendre d'une interface qu'ils n'utilisent pas. Ce principe apporte principalement une diminution du couplage entre les classes (les classes ne dépendant plus les unes des autres). L'autre avantage d'ISP est que les clients augmentent en robustesse.

Séparation des Interfaces (ISP: Interface Segregation Principle) Application: On va réunir les groupes "fonctionnels" des méthodes de la classe dans des Interfaces séparées. L'idée étant de favoriser le découpage de façon à ce que des clients se conformant à SRP n'aient pas à dépendre de plusieurs interfaces. Exemple: IList<T> ICollection<T> IEnumerable<T> Ilist Icollection IEnumerable

Exemple Dans nos exemples de Work Items, on va devoir gérer des Work Items pour lesquels il existe une deadline. Nos Work Items dépendant tous de IWorkItem, on va directement ajouter Les informations de gestion de deadline au niveau de IWorkItem et de WorkItem.

Exemple

Exemple Jusqu'ici, tout va bien...Sauf que le marketing ne veut pas entendre parler de deadline pour ses items. On peut donc, soit renvoyer une information erronée, pour continuer à utiliser le IWorkItem courant, soit se conformer au principe ISP, et séparer notre interface en IWorkItem et IDeadLineDependent.

Exemple

Exemple L'intérêt est que, si demain on a besoin d'une fonction ExtendDeadline dans IDeadLinedItem, cela n'impactera pas les WorkItems ne comportant pas de Deadline. Et si on ne le modifie pas, on n'introduit pas de bugs.

Inversion des dépendances (DIP: Dependency Inversion Principle) Définition: Les modules de haut niveau ne doivent pas dépendre des modules de bas niveau. Les deux doivent dépendre d'abstractions. Les abstractions ne doivent pas dépendre des détails. Les détails doivent dépendre des abstractions.

Inversion des dépendances (DIP: Dependency Inversion Principle) Définition: Si on change le mode de fonctionnement de la base (passage de Oracle à SQL Server), du réseau (changement de protocole), de système d'exploitation, les classes métiers ne doivent pas être impactées. Inversement, le fait de changer les règles de validation au niveau de la partie métier du framework ne doit pas demander une modification de la base de données (à la limite, modifier une fonction, mais ne pas changer les briques de base).

Inversion des dépendances (DIP: Dependency Inversion Principle) Ce principe est équivalent au principe d'Hollywood ("Ne nous appelez pas, nous vous appellerons"),

Inversion des dépendances (DIP: Dependency Inversion Principle)

Inversion des dépendances (DIP: Dependency Inversion Principle) Avantages: Une nette diminution du couplage Une meilleure encapsulation, l'implémentation concrète pouvant éventuellement être choisie dynamiquement.

Inversion des dépendances (DIP: Dependency Inversion Principle) Comment l'appliquer: L'idée est que chaque point de contact entre deux modules soit matérialisé par une abstraction. Est-ce que ça vous fait penser à quelque chose???? 

Exemple

Exemple

Conclusion Les principes SOLID dictes la philosophie à adopter lors de la conception ou la maintenance d’un système. L’architecture doit être repensé en cours de développement. Ces points sont des repères que vous dicterez les limites selon votre expérience.