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 2008 3 Local : Mardi 15h30 – 17h20 Mercredi 10h30 – 12h20 D7-2020 Consultation : Mardi 14h30 - 15h30 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/2008/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. CONTENU Présentation des types abstraits algébriques. Critères de conception. Étude 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 Contenu Organisation du cours Plan de cours, logiciels utilisés dans le cours, projet. Programmation par objets Les principes de base de la programmation par objets : instanciation, encapsulation, héritage, polymorphisme, transmission de messages… Eléments de Java : classes, interfaces, variables, typage, exceptions... 2 Spécifications et tests unitaires: Types abstraits algébriques Spécification de programmes; préconditions, postconditions, invariants… Test unitaires: JUnit 3 Schéma de conception : Principes généraux, Singleton, State Refactorisation Critères de conception et qualité de la conception. Techniques de refactorisation 4 5 -6 Méthodes de conception Méthodes de conception agiles. Normes de conception IEEE UML Programmation par composants : le modèle JavaBeans (événements, introspection...) 7 Examen intra Pas de cours 8 Semaine de Relâche Pas de cours 9-10 Etude de cas sur les schémas de conception et la refactorisation : Singleton, Observer, Adapter, Command, CompositeAbstract Factory, Factory Method, Template Method, Decorator 11 Frameworks: Principes et applications Etude de cas : JUnit 12 Approfondissement sur les tests : tests boîte noire, tests boîte blanche, tests d’intégration 13 Approfondissement : Mesure de qualité de la conception 14 Remise des projets 15 Examen Final IFT232 Conception orientée objet 2 Evaluation Projet /30 Intra /30 Final /40 Durée : 1h50 Durée : 2h50 Projet Les notions suivantes seront appliquées dans un projet de moyenne envergure : méthodologie agile, tests, patrons de conception et refactorisation. Les équipes seront composées de 6 à 10 étudiants. A la fin du projet, chaque équipe devra réaliser une démonstration du projet et remettre un rapport. Bibliographie E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns, Addison-Wesley, 1994. Sun Microsystems, JavaBeans, v 1.01, 1997. (beans101.pdf) 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 Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates, Head First Design Patterns, O'Reilly, 2004. Joshua Bloch, Effective Java Programming Language Guide, Prentice Hall, 2001. 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. 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/ Lisa Crispin, Tip House, Testing Extreme Programming, Addison-Wesley, 2002. Logiciels disponibles Editeur UML : Rational Rose for Java Java : JSE 1.5.0 (http://java.sun.com) IDEs : Eclipse (http://www.eclipse.org/) Tests : JUnit (http://www.junit.org/) IFT232 Conception orientée objet 3