====== 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&