====== M3105 - Conception et Programmation Objet Avancées ====== xxx ===== Objectifs du module ===== * Produire une conception détaillée en appliquant des patrons de conception, la mettre en oeuvre en utilisant des bonnes pratiques de programmation orientée objet ==== Compétences visées ==== * FA1-A : Analyse d’une solution informatique * FA1-B : Conception technique d’une solution informatique * FA1-C : Réalisation d’une solution informatique ===== Contenus (Extrait du PPN 2013) ===== * C1 : //Approfondissement de la modélisation objet pour l’analyse, la conception et la programmation// * Nous reviendrons sur le cours de S2 pour à la lumière des patterns MVC et DAO revoir les diagrammes de séquence en conception * Nous reprendrons les diagrammes de classes pour travailler plus spécifiquement les diagrammes de packages * C2 : //Compréhension et mise en oeuvre de patrons de conception (design pattern), éléments d'architecture logicielle// * Nous mettrons en avant quelques patterns d'architectures: DAO, CRUD et les seuls patterns de conception Factory, Builder et Singleton qui jouent sur les architectures. D'autres "design patterns" seront étudiés dans un module dédié en S4. * C3 : //Notions avancées de programmation orientée objet (par exemple : responsabilité unique, principe ouvert-fermé, notions de dépendance et de couplage)// * Nous nous appuierons sur les bases des nouvelles méthodes de développement, axés sur les principes agiles, pour mettre en avant ces notions. * C4 : //Sensibilisation aux tests d'intégration// * Nous étudierons les Mocks et autres approches de l'intégration * Le projet forcera une étape importante d'intégration qui sera préparée au début du projet, puis mise en oeuvre dans la dernière phase du projet. ===== Modalités de mise en oeuvre ===== * Utilisation d’un environnement de développement intégré (EDI / IDE) comprenant la modélisation, d'un gestionnaire de versions et d'un environnement de test unitaire * Nous nous basons sur l'environnement [[2014_2015:s3:outils:start|ECLIPSE]] * Les notions doivent être abordées au travers de réalisations concrètes * Une [[2014_2015:s3:etudedecas:etudedecas|étude de cas]] partagée avec le [[2014_2015:s3:methodo:start|M3301- Méthodologie de la production d’applications]] nous permet de travailler la mise en oeuvre. ===== Intervenants ===== ^ Nom ^ Affiliation ^ Adresse ^ | __[[blay@unice.fr|Mireille Blay-Fornarino]]__ | IUT /UNS/ I3S | Bureau XXX Ou Bâtiment Templiers :Bureau 449 ([[http://www.polytech.unice.fr/~blay|www]]) | | [[Rosa.LECAT@unice.fr|Rosa Lecat]] | IUT| Bureau XXX | | [[---|---]] | IUT| Bureau XXX | ===== Planification ===== Ce module sera mené en concordance avec le module [[2014_2015:s3:methodo:start|M3301]]. En particulier par différents exercices, nous travaillerons la mise en oeuvre de cette partie du projet. Dans le cadre de ce module, nous mettrons l'accent sur les parties "Conception" et "Programmation". - {{:2014_2015:s3:concprogobjet:deanalysealaconception2014.pdf|Rappels : De l'analyse à la conception orientées objets}} * [[2014_2015:s3:concprogobjet:td:td1|TD : Rappels de COO et environnement de développement sous Eclipse]] //(C1)// **(S3T : 1/9) (S3A : 12/9) (S3D : 19/1)** - {{:2014_2015:s3:concprogobjet:graspcours2014.pdf|Bases de GRASP : COO et responsabilités}}(S3D : 30/1)//(C2,C3)// * [[2014_2015:s3:concprogobjet:td:td2|TD : Savoir décomposer un problème !]] **(S3T : 8/9)(S3D : 30/1)** - Focus sur le {{:2014_2015:s3:concprogobjet:pragmatiqueprogramming2014.pdf|rôle du programmeur}} par //[[http://pragprog.com/the-pragmatic-programmer|The Pragmatic Programmer: From Journeyman to Master]]// (S3D : 30/1) //(C2,C3)// * [[2014_2015:s3:concprogobjet:td:td3|TD : Soyons Pragmatique !]] **(S3T : 23/9) (S3D : 30/1)** - Suite du cours sur "The pragmatic Programmer" et Ouverture aux principes SOLID (S3D : 16/2 & 9/3) //(C2 C3)// * [[2014_2015:s3:concprogobjet:td:td4|TD4 :]] **(S3T : 1/10)(S3D : 16/3)** - {{:2014_2015:s3:concprogobjet:codesolid2014.pdf|Principes SOLID}} (S3D : 9/3)//(C2 C3)// * [[2014_2015:s3:concprogobjet:td:td4|TD4 :]] **(S3T : 8/10)(S3D : 23/3)** - Retour sur l'analyse et la conception au tableau **(S3T : 15/10)** - {{:2014_2015:s3:concprogobjet:testintegration-2014-2015.pdf|Tests d'Intégration : Mocks}} ((A la demande des étudiants confrontés à ces problèmes)) //(C1,C2,C4)//**(S3T 16/10)** * Fin du TD 4 pour les étudiants n'ayant pas terminés et [[2014_2015:s3:concprogobjet:td:td5|TD5]] : **(S3T : 15/10)** - {{:2014_2015:s3:concprogobjet:tdd2014-2015.pdf|Tests et TDD}} //(C1,C4)// * [[2014_2015:s3:concprogobjet:td:td5|TD 5: Réutilisation]] : **(S3T : 20/10)(S3D : 2/3 & 9/3)** - {{:2014_2015:s3:concprogobjet:mvc-2014-2015.pdf|Séparation des préoccupations de l'interface graphique à la couche métier (DP Observer)}} //(C2)// * [[2014_2015:s3:concprogobjet:td:td6|TD 6 : Tests d'intégration et Observeur]] : **(S3T : 3/11)** - Suite du cours sur la séparation (MVC et listeners) (DAO) * [[2014_2015:s3:concprogobjet:td:td6|TD 6 : Tests d'intégration et Observeur]] : **(S3T : 10/11)** - {{:2014_2015:s3:concprogobjet:patterns.pdf|DP Composite}} * [[2014_2015:s3:concprogobjet:td:td6|TD 6 : Tests d'intégration et Observeur]] **(S3T : 17/11)** - {{:2014_2015:s3:concprogobjet:patterns.pdf|DP}} * [[.:td:reverse-engineering|TD 7 : Qualité des codes]] **(S3T : 24/11)** - * [[2014_2015:s3:concprogobjet:td:td7|TD 8]] **(S3T : 1/12)** - * [[2014_2015:s3:concprogobjet:td:td7| TD 8]] **(S3T : 8/12)** - * [[2014_2015:s3:concprogobjet:td:td7| TD 8 ]]**(S3T : 15/12)** ===== Evaluation du module ===== Ce module est évalué par un examen (coeff. 1) et une [[https://mbf-iut.i3s.unice.fr/doku.php?id=2014_2015:s3:concprogobjet:td:start#evaluation_des_tds|note de TD]](coeff. 1,5). Une page recto-verso A4 est autorisée à l'examen (pas forcément manuscrite). ===== Références ===== * Des cours en ligne sur YouTube de Xavier Blanc: * Introduction cours 1 : https://www.youtube.com/watch?v=BNEtWb3WceQ * //cohésion : 20:49 du 1e// * //couplage : 22:07 du 1e// * //Un SUPER exemple (un jeu!) expliquant la conception// * [[https://www.youtube.com/watch?v=6ZN3-pKU8e4| MVC illustré]] * [[https://www.youtube.com/watch?v=DK6vSUVfyug| Design Patterns]] * Le couplage et quelques règles: http://www.labri.fr/perso/xblanc/teaching.html * [[http://www.eyrolles.com/Informatique/Livre/uml-2-et-les-design-patterns-9782744070907| UML 2 et les design patterns de Craig Larman]] : ce livre est disponible en bibliothèque universitaire, une partie du cours s'appuie sur ce livre. * http://williamdurand.fr/from-stupid-to-solid-code-slides/#/ * http://at2011.agiletour.org/files/agile-architecture-atmontreal2011.pdf * http://www.amazon.com/The-Pragmatic-Programmer-Journeyman-Master/dp/020161622X * http://users.encs.concordia.ca/~abdelw/sba/papers/FIE08-OpenSource.pdf * [[http://www.amazon.fr/Les-patrons-ab%C3%AEm%C3%A9s-Explications-Restructuration/dp/6131535019|Les patrons abimés]] http://www.goprod.bouhours.net/?lang=fr&