IFT 232 Méthodes de Conception Orientée Objets Plan de cours INFORMATIONS GÉNÉRALES Professeur : Session : Crédits : Sylvain Giroux ([email protected]) D4-1010-10 Hiver 2006 3 Local : Mardi 13h30 – 15h20 Mercredi 10h30 – 12h20 D7-2015 Consultation : Mardi 10h30 - 12h00 Pré-requis : IFT 159 Analyse et programmation ou GIF 600 Conception d’un système informatique distribué Horaire : Site web : http://www.dmi.usherb.ca/~sgiroux/cours/2006/IFT232 Liste de redistribution : [email protected] OBJECTIFS Objectifs généraux Spécifier, concevoir et tester des composants logiciels. Tester l'intégration des composants. Mesurer la qualité de la conception. Appliquer le processus de conception au sein d’un cadre documenté et normalisé. Objectifs spécifiques A la fin du cours, l’étudiant devra être capable de : Maîtriser un langage de spécification (UML) Maîtriser la programmation par objets Maîtriser la refactorisation Maîtriser la notion de schémas de conception. Maîtriser les processus de tests. Être capable d’évaluer la qualité de conception d’un programme. Connaître un large éventail de schémas de conception. CONTENU Présentation des types abstraits algébriques. Critères de conception. Revue des concepts d’encapsulation, d’héritage et de polymorphisme. Critères de composition en classes, schémas de conception et cadres d'application. Documentation de la conception avec la notation UML. Techniques de revue de conception. Tests boîte blanche (basés sur la structure du programme) et tests boîte noire (basés sur la spécification du programme). Tests d'intégration. Mesure de qualité de la conception. Présentation des normes de conception IEEE. IFT232 Conception orientée objet 1 Semaine 1 2 3 4 Contenu Organisation du cours Outils utilisés dans le cours : Eclipse, cvs, Junit, Rational Rose Projet Expliquer le déroulement du projet Donner la grille d’évaluation Formation des équipes Principes de la POO Revue des concepts d’encapsulation, d’héritage et de polymorphisme en Java. Types abstraits algébriques Spécification de programmes; préconditions, postconditions, invariants… Séance d’exercices sur Java voir et compléter exercices I Méthodes de tests: Test unitaires: JUnit TP 1 : Définir les spécifications et les tests pour un programme Schéma de conception : Principes généraux Singleton, State Refactorisation Critères de conception et qualité de la conception. Techniques de refactorisation Refactorisation : o Refactorisation d’un programme o Identifier les fonctions de refactorisation utilisée dans Eclipse Programmation extrême, principes… Suisse 9 janvier 16 janvier 23 janvier 30 janvier 7 Normes de conception IEEE UML Cas d’utilisation Vue logique : Diagrammes de classes, d’état, d’interactions, de collaboration. Composants logiciels Déploiement Programmation par composants le modèle JavaBeans (événements, introspection, etc.) Application du schéma de conception Observateur (TPs) Programmation par composants Le modèle JavaBeans (suite) Programmation visuelle et génération de code : Application aux interfaces usagers Intra – pas de cours 8 Relâche 27 février 9 Etude de cas 6 mars 5 6 6 février 13 février 20 février Prendre un des examens de maîtrise Schéma de conception : Principes généraux Singleton, IFT232 Conception orientée objet 2 Observer, Adapter, Command, Composite Abstract Factory, Factory Method, Template Method Decorator Suite Etude de cas Frameworks Principes et applications Etude de l’implémentation de JUnit en tant que framework Approfondissement sur les tests Tests boîte noire, Tests boîte blanche, Tests d’intégration Approfondissement Mesure de qualité de la conception (métrique, voir livre Marc) Remise des projets Examen Final 10 11 12 13 14 15 13 mars 20 mars 27 mars 3 avril 10 avril 17 avril Travaux pratiques TP1 : spécifications et tests TP2 : refactorisation TP3 : Application du Observer Design Pattern Projet Programmation agile : Pair programming Tests Patrons de conception Refactorisation Evaluation TPs Projet Intra Final /10 /15 /35 /40 Durée : 1h50 Durée : 2h50 Documents obligatoires E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns, Addison-Wesley, 1994. Sun Microsystems, JavaBeans, v 1.01, 1997. (beans101.pdf) IFT232 Conception orientée objet 3 Erich Gamma and Kent Beck, JUnitTest Infected: Programmers Love Writing Tests, Java Report, July 1998, Volume 3, Number 7, http://junit.sourceforge.net/doc/testinfected/testing.htm Refactorisation Manuels complémentaires recommandés M. Fowler et K. Scott, UML distilled, A Brief Guide to the Standard Object Oriented Modeling Language, Addison-Wesley, 2003. Extreme programming o Kent Beck, Extreme Programming Explained, Addison-Wesley, 1999 o Extreme programming, A gentle introduction, http://www.extremeprogramming.org/ o Martin Fowler, Is Design Dead?, http://martinfowler.com/articles/designDead.html Joshua Kerievsky, Refactoring to Patterns, Addison-Wesley, 2004 o Refactoring To Patterns Catalog, http://www.industriallogic.com/xp/refactoring/catalog.html M. Fowler, et al., Refactoring, Improving the design of existing code, Addison-Wiley, 2000. o Refactoring Home Page, http://www.refactoring.com/ Kent Beck, Test Driven Development, Addison-Wesley, 2002. Références Barbara Liskov, Program Development in Java, Abstraction, Specification and Object-Oriented Design, Addison-Wesley, 2001. Sun, Java Tutorial, http://java.sun.com/docs/books/tutorial/ Joshua Bloch, Effective Java Programming Language Guide, Addison-Wesley, 2001. Lisa Crispin, Tip House, Testing Extreme Programming, Addison-Wesley, 2002. Logiciels Editeur UML : Rational Rose for Java Java : JSE 1.5.0 ou JSE 1.4.2 (http://java.sun.com) IDEs : Eclipse (http://www.eclipse.org/) Tests : JUnit (http://www.junit.org/) IFT232 Conception orientée objet 4