LOG8430 : Architecture logicielle et conception avancée Yann-Gaël Guéhéneuc Présentation du cours This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 3.0 Unported License
Plan de la séance Introduction Inventaire des concepts Conception architecturale 2/59
Plan de la séance Introduction Inventaire des concepts Conception architecturale 3/59
Introduction Professeur et chargé de lab. Objectifs de l informatique Objectifs du cours Méthodologie du cours Évaluation du cours 4/59
Introduction Professeur et chargé de lab. Objectifs de l informatique Objectifs du cours Méthodologie du cours Évaluation du cours 5/59
Professeur (1/10) Né à Nantes, Bretagne, France, 1975 6/59
Professeur (2/10) 1998 : DEA et diplôme d ingénieur École des Mines Université de Nantes Titre: Syntax Errortolerant Java parser Analyse syntaxique, construction d outils et Java 7/59
Professeur (3/10) 2003 : doctorat (Ph.D.) en génie logiciel École des Mines Université de Nantes Titre: A framework for the traceability of design motifs Patrons de conception et rétro-conception des programmes 8/59
Professeur (4/10) Arrivé à Montréal, Québec, Canada, 2003 9/59
Professeur (5/10) 2003 2008 : professeur assistant puis agrégé Université de Montréal Design patterns Code and design smells Linguistic smells Evolution patterns Features and concepts Requirements traceability Quality models 10/59
Professeur (6/10) 2008 présent : professeur agrégé puis titulaire Polytechnique Montréal Code and design smells Linguistic smells Design patterns Evolution patterns Features and concepts Requirements traceability Quality models 11/59
Professeur (7/10) Chaire de recherche du Canada «Software Patterns and Patterns of Software», 2009 Ouverture des intérêts de recheche Identifier analysis API evolution Program comprehension Licensing issues Test-case generation 12/59
Professeur (8/10) 2013 2014 : 객원교수, SNU와 연세대학교 * Conception logicielle et études empiriques sur la compréhension de programmes * Professeur invité à Seoul National University et Yonsei U. 13/59
Professeur (9/10) Aussi 1998 2000 : deux ans à Object Technology International, Inc., Ottawa, ON, Canada (maintenant IBM Ottawa Labs) 2000 présent : donné 27 cours à 707 étudiants 2003 présent : gradué 11 Ph.D. et 30 M.Sc. 14/59
Professeur (10/10) www.ptidej.net/members/guehene yann-gael.gueheneuc@polymtl.ca Local M-4103 15/59
Chargé de lab. (1/2) Zéphyrin SOH Diplôme d Études Approfondies en Informatique Étudiant de doctorat en génie logiciel Enseignements : génie logiciel, programmation, bases de données, etc. 16/59
Chargé de lab. (2/2) www.ptidej.net/members/zohzephy Zephyrin.soh@polymtl.ca Local M-4118 17/59
Introduction Professeur et chargé de lab. Objectifs de l informatique Objectifs du cours Méthodologie du cours Évaluation du cours 18/59
Objectifs de l informatique (1/7) Créer des logiciels Résoudre des problèmes existants Résoudre ces problèmes bien Logiciel Programme (code source / binaire) Architecture Conception Structure de données / données Documents 19/59
Objectifs de l informatique (2/7) Pour créer de bons logiciels Connaissances Compréhension Application Analyse Synthèse Évaluation 20/59
Objectifs de l informatique (3/7) Joshua Bloch ; Effective Java; 2 e Édition, Addison Wesley, avril 2008 Pour créer de bons logiciels Grammaire Algorithmique Paradigmes Vocabulaire Structure de données Opérations Services Usages Pratiques Efficacité Dans le cas de Java par exemple Grammaire Vos cours précédents Orienté objets Vocabulaire JLS JVM Bibliothèque de classes Usages Architectures, patrons de conception... 21/59
Objectifs de l informatique (4/7) Comment créer de bons logiciels? Qui résolvent de vrais problèmes Qui résolvent ces problèmes bien? 22/59
Objectifs de l informatique (5/7) The quality of the end result is dependent upon the quality of the machine, the quality of our ideas, and the quality of our code Kanat-Alexander in Code Simplicity 23/59
Objectifs de l informatique (6/7) [a] good programmer creates things that are easy to understand, so that it s really easy to shake out all the bugs Kanat-Alexander in Code Simplicity 24/59
Objectifs de l informatique (7/7) [S]pending a little more time writing simple code turns out to be faster than writing a lots of code quickly at the beginning and then spending a lot of times trying to understand it later. Kanat-Alexander in Code Simplicity 25/59
Introduction Professeur et chargé de lab. Objectifs de l informatique Objectifs du cours Méthodologie du cours Évaluation du cours 26/59
Objectifs du cours Présenter les principaux types d architectures logicielles et de critères de choix d un type d architecture Présenter des approches basées sur des patrons de conception pour la réalisation d applications (distribuées) Donner un aperçu des approches émergentes de conception logicielle 27/59
Objectifs du cours À la fin du cours, l étudiant se en mesure de Concevoir l architecture d un logiciel en choisissant et en justifiant les architectures, les patrons de conception et les techniques de conception avancée utilisés (entre autres à la méta-programmation, la programmation par composants, les patrons d architecture distribuée, les architectures orientées services) ; Concevoir les composantes de l architecture d un logiciel (classes orientées-objets, composants logiciels ou services logiciels) à l aide de techniques avancées et à partir de patrons d architecture distribuée parmi les plus utilisés et de justifier ses choix ; Juger de la conception de l architecture d un logiciel et de suggérer des changements à cette architecture. 28/59
Situation du cours LOG8430 termine une chaîne de cours Le cours de programmation procédurale Le cours de programmation orientée objets Le cours de conception logicielle 29/59
Situation du cours LOG8430 termine une chaîne de cours Le cours de programmation procédurale INF1005C Le cours de programmation orientée objets INF1010 Le cours de conception logicielle LOG2410 30/59
Situation du cours LOG8430 est aussi un cours gradué Lectures et résumé d articles Présentation d articles Concepts avancés 31/59
Situation du cours LOG8430 est aussi un cours gradué Lectures et résumé d articles Être à l aise avec l anglais écrit Présentation d articles Être à l aise avec la critique (donnée, reçue) Être à l aise devant les autres Concepts avancés Être à l aise avec les concepts objets Être à l aise avec C++ (et Java) 32/59
Introduction Professeur et chargé de lab. Objectifs de l informatique Objectifs du cours Méthodologie du cours Évaluation du cours 33/59
Méthodologie du cours Taxonomie de Bloom Niveau Activités 1. Connaissance Mémoriser des informations, définir des terminologies, des techniques, etc. 2. Compréhension Comprendre un article afin d'en faire un résumé 3. Application Utiliser les connaissances de l'apprenant pour les appliquer dans une situation concrète («la vraie vie») 4. Analyse Demander à l'apprenant de disséquer un sujet, d'en expliquer les tenants et les aboutissants 5. Synthèse Reformuler les parties d'un sujet ensemble mais d'une nouvelle manière en se basant sur plusieurs sources 6. Évaluation Juger la valeur d'un sujet dans un but spécifique 34/59
Méthodologie du cours Dreyfus model 35/59
Contenu du cours Mois Jeudi (cours) Ven. (labs.) Contenus Cours Contenus labs. Janvier 8 9 1. Conception architecturale Pas de lab. 15 2. Conception architecturale 22 23 3. Défaut de conception et qualité Lab. 1 29 4. Concepts de la POO et problèmes Février 5 6 5. Bibliothèques et chargement dynamique 12 6. Cadres de références et plugiciels Lab. 1 (cont.) 19 20 Lab. 2* Lab. 2 (cont.) 26 7. Conception orientée aspects Fiche de lecture * Yann à Ottawa pour le CRSNG 36/59
Contenu du cours Mois Jeudi (cours) Ven. (labs.) Contenus cours Mars 5 6 Semaine de relâche et SANER 15 12 13 8. Composition et architectures par composants 19 9. Patrons d applications distribuées Contenus labs. Lab. 3 26 27 10. Patrons d applications distribuées Lab. 3 (cont.) Avril 2 11. Architectures orientées services Mai 2 9 Lab. 4 16 17 Pas de cours (cours du lundi) Lab. 4 (cont.) 18 Examen (date à préciser) Fiche de lecture 37/59
Contenu des labs. Sujets (possibles) des séances de labs. Sujets Lab. 1 Conception et implantation d un système de gestion de fichiers, choix/justification de l architecture avec chargement dynamique du code des fonctionnalités Lab. 2 Conception et implantation du même système de gestion de fichiers en utilisant un cadriciel, lui-même à base de «plugiciels» Lab. 3 Conception et implantation du même système de gestion de fichiers en utilisant la programmation par composants Lab. 4 Conception et implantation du même (?) système de gestion de fichiers en utilisant des services Lab. 5? Application de la programmation orientée aspect pour tracer et profiler le système de gestion de fichiers 38/59
Contenu des labs. Durant les labs. Conception et implantation de logiciels en utilisant techniques et concepts avancés Analyses de solutions alternatives développées par d autres équipes Appliquer un outil d analyse de la qualité 39/59
Contenu des labs. Durant les labs. Conception et implantation de logiciels en utilisant techniques et concepts avancés Analyses de solutions alternatives développées par d autres équipes Appliquer un outil d analyse de la qualité 40/59
Contenu des labs. Durant les labs. Conception et implantation de logiciels en utilisant techniques et concepts avancés Analyses de solutions alternatives développées par d autres équipes Appliquer un outil d analyse de la qualité Bonus en cas de contributions à cet outil! 41/59
Travail personnel du cours Triplet horaire 4,5 heures de travail personnel par semaine Étudier les notions présentés durant les séances de cours, en particulier les nombreux exemples Appliquer les concepts vu en cours ainsi que ceux présentés dans les articles discutés en cours Travailler sur les labs. du cours Préparer les fiches de lecture 42/59
Contenu des fiches de lecture Titres (possibles) de articles F.L. 1 F.L. 2 F.L. 3 F.L. 4 Titres A Hierarchical Model for Object-Oriented Design Quality Assessment by Jagdish Bansiya and Carl G. Davis What Do We Know about the Effectiveness of Software Design Patterns? by Cheng Zhang and David Budgen Automated verification of design patterns: A case study by Jon Nicholson, Amnon H. Eden, Epameinondas Gasparis, and Rick Kazman An empirical study on the influence of pattern roles on changeproneness by Daryl Posnett, Christian Bird, and Prem Dévanbu 43/59
Contenu des fiches de lecture Utilité d une fiche de lecture Forcer la lecture de l article Restituer le contenu avec ses propres mots Identifier les forces et faiblesses Formes Fonds Bonus pour une fiche de lecture sur un article présenté pendant SANER 15 44/59
Contenu des fiches de lecture Utilité d une fiche de lecture Forcer la lecture de l article Restituer le contenu avec ses propres mots Identifier les forces et faiblesses Formes Fonds Bonus pour une fiche de lecture sur un article présenté pendant SANER 15 45/59
SANER 15 saner.soccerlab.polymtl.ca 46/59
Important Toutes matière présentée pendant les séances de cours ou de lab. est contrôlable Les travaux remis en retard seront pénalisés de 10% par jour de retard Toute demande d examen différé doit passer par le bureau des affaires académiques Les labs. se font par équipes immuables de 2 à 3 étudiants Les fiches de lecture font 1 à 2 pages 47/59
Important Les règlements relatifs au plagiat s appliquent en tout temps 48/59
Important Assister aux séances de cours et de labs. La matière du cours vous intéresse Les explications aident à comprendre la matière Les étudiants qui assistent régulièrement au cours réussissent mieux le cours Les travaux pratiques et l examen final porteront sur le contenu des séances de cours 49/59
Manuel du cours Software engineering: A practitioner's approach, Roger S. Pressman. 5th ed., McGraw Hill, 2001 The unified software development process, Ivar Jacobson, Grady Booch, and James Rumbaugh. ACM Press/Addison Wesley,1999 Software architecture in practice, Len Bass, Paul Clements, Rick Kazman. Addison-Wesley, 1998 Software architecture design patterns in Java, Partha Kuchana. Auerbach Publications, 2004 Architecture logicielle : concevoir des applications simples, sûres et adaptables, Jacques Printz. Dunod, 2006 50/59
Introduction Professeur et chargé de lab. Objectifs de l informatique Objectifs du cours Méthodologie du cours Évaluation du cours 51/59
Évaluation du cours Rapports de labs. En équipe Objectifs Compréhension Application Nombres 4 (à confirmer) Pondération 20% 52/59
Évaluation du cours Évaluation par les pairs des rapports En équipe Objectifs Analyse Évaluation Nombres 4 (à confirmer) Pondération 20% 53/59
Évaluation du cours Fiches de lecture Individuel Objectif Compréhension Analyse Synthèse Nombre 4 Pondération 20% 54/59
Évaluation du cours Examen final Individuel Nombre 1 Pondération 40% 55/59
Plan de la séance Introduction Inventaire des concepts Conception architecturale 56/59
Inventaire des concepts (1/2) Observation Différences de parcours des étudiants et du professeurs Objectif du test Faire l inventaire des concepts connus (ou non) Ajuster le contenu du cours Rendre le cours plus intéressant 57/59
Inventaire des concepts (2/2) Procédure Distribution des questionnaires Complétion pendant 1 h Collection Important Questionnaires anonymes Questionnaires non notés 58/59
Plan de la séance Introduction Inventaire des concepts Conception architecturale 59/59