% MGL7361 — Principes et applications de la conception de logiciels % UQAM — Département d'informatique % Plan de cours — Automne 2019 * Horaires, locaux et enseignants: Responsable(s) du cours ======================= Coordination ------------ Moha, Naouel PK-4425 poste 1660 Enseignant(s) ------------- Berger, Jacques PK-4115 Description du cours ==================== Rôle de la conception dans le cycle de vie du logiciel. Apprentissage des principales méthodes de conception. Évaluation de nouvelles méthodes de conception. Sélection et utilisation d'une méthode propre à un système logiciel donné. Évaluation de la conception: choix de la méthode, qualité de la conception, vérification formelle, respect des exigences, etc. Outils de conception. Objectif du cours ================= Le cours vise à rendre l'étudiant apte à participer de façon active à la conception de systèmes d'information contemporains dans une organisation. Il vise également à développer chez l'étudiant un esprit critique face aux pratiques courantes utilisées pour la conception de systèmes d'information. En particulier, le cours vise à : - Donner aux étudiants un aperçu théorique du cycle de vie du logiciel en en particulier de la conception. - Sensibiliser les étudiants à l'importance des normes en génie logiciel et leur faire connaître les principales références dans le domaine concernant la conception. - Familiariser les étudiants avec les activités antérieures à la conception. - Initier les étudiants aux principaux modèles contemporains concernant la conception architecturale. - Donner aux étudiants un aperçu théorique des principales propriétés d'une bonne conception. - Initier les étudiants aux architectures n-tiers. - Familiariser les étudiants à l'architecture par microservices. - Faire apprécier aux étudiants l'importance des enjeux reliés à la conception. - Familiariser les étudiants aux principaux patrons utilisés pour la conception. - Rendre les étudiants aptes à réaliser un document de conception. - Sensibiliser les étudiants aux activités postérieures à la conception. - Initier les étudiants aux nouvelles approches dans le domaine. Contenu du cours ================ THÈMES - Introduction - Conception dans le cycle de vie logiciel - Normes de conception - Principes de base de la conception - Modèle en couches - La problématique des systèmes d'entreprise - Patrons et anti-patrons - Styles architecturaux - Métaphores de conception - Approche orientée objet - Approche fonctionnelle - Approche centrée sur les données - Approche monolithique - Approche REST - Approche microservices - Approche SOA - Applications mobiles Approche pédagogique Le cours se base sur une approche par projet. L'approche par projet s'inscrit dans l'esprit de la formation par compétence. Il permet la mobilisation des ressources de l'étudiant dans la réalisation d'une tâche authentique. Les étudiants devront travailler en équipe (taille: de 3 à 4 étudiants maximum). Il est fortement conseillé de ne pas effectuer les projets seul. Les critères de correction et les attentes ne seont pas modifiées en fonction du nombre d'étudiants dans l'équipe. Modalités d'évaluation ====================== Type Pondération ---------------------------------------------- ------------- Examen intra 25% Examen final 25% Projet \#1 - Évaluation d'une conception 15% Projet \#2 - partie 1 - Architecture 15% Projet \#2 - partie 2 - Conception détaillée 10% Évaluation par les pairs 10% Un travail remis en retard reçoit la note de zéro à moins d'avoir fait l'objet d'une entente préalable avec le professeur. Le détail des conditions de réalisation de chaque travail est précisé avec la description du travail. La qualité du français fait partie intégrante des critères d'évaluation des travaux et des examens jusqu'à un maximum de 25%. La politique de tolérance zéro du Département d'informatique sera appliquée à l'égard des infractions de nature académique. La note de passage du cours est de 60% pour l'ensemble de l'évaluation et de 50% pour les examens. Médiagraphie ============ ABBOTT, Martin L. & FISHER, Michael T.\ THE ART OF SCALABILITY -- SECOND EDITION\ Pearson Education, Inc. 2015 -- ISBN : 978-0-13-403280-1 BASS, Len & WEBER, Ingo & ZHU, Liming\ DEVOPS -- A SOFTWARE ARCHITECT'S PERSPECTIVE\ Pearson Education 2015 -- ISBN : 978-0-13-404984-7 BECK, Kent Beck\ IMPLEMENTATION PATTERNS\ Pearson Education, Inc. 2008 -- ISBN : 978-0-321-41309-3 CERVANTES, Humberto & KAZMAN, Rick\ DESIGNING SOFTWARE ARCHITECTURES: A PRACTICAL APPROACH\ Addison-Wesley Professional 2016 -- ISBN : 978-013-439078-9 ESTES, Philip & DAVIS, Doug\ OPEN BY DESIGN\ O'Reilly 2015 -- ISBN : 978-1-491-94109-6 EVANS, Eric\ DOMAIN-DRIVEN DESIGN\ Pearson Education, Inc. 2004 -- ISBN : 0-321-12521-5 FREEMAN, Eric & ROBSON, Elisabeth\ HEAD FIRST DESIGN PATTERNS\ O'Reilly 2014 -- ISBN : 978-0-5960-07126 LARMAN, Craig\ APPLYING UML AND PATTERNS -- THIRD EDITION\ Prentice Hall 2004 -- ISBN : 007-6092037224 MITRA, Tilak\ PRACTICAL SOFTWARE ARCHITECTURE: MOVING FROM SYSTEM CONTEXT TO DEPLOYMENT\ IBM Press 2015 -- ISBN : 978-0-13-376303-4 MONSON-HAEFEL, Richard -- éditeur\ 97 THINGS EVERY SOFTWARE ARCHITECT SHOULD KNOW\ O'Reilly 2009 -- ISBN : 978-0-596-52269-8 NADAREISHVILI, Irakli, MITRA, Ronnie, McLARTY, Matt & AMUNDSEN, Mike\ MICROSERVICE ARCHITECTURE\ O'Reilly 2016 -- ISBN : 978-1-491-95979-4 NEWMAN, Sam\ BUILDING MICROSERVICES\ O'Reilly 2015 -- ISBN : 978-1-491-95035-7 O'GRADY, Stephen\ THE SOFTWARE PARADOX\ The Rise and Fall of the Commercial Software Market\ O'Reilly 2015 -- ISBN : 978-1-491-90093-2 RICHARDS, Mark\ SOFTWARE ARCHITECTURE PATTERNS\ O'Reilly 2015 -- ISBN : 978-1-491-92424-2 RICHARDSON, Leonard & AMUNDSEN, Mike\ RESTFUL WEB APIS\ O'Reilly 2013 -- ISBN : 978-1-449-35806-8 RODGER, Richard\ THE TAO OF MICROSERVICES\ Manning 2016 -- MEAP ROZANSKI, Nick & WOODS, Eoin\ SOFTWARE SYSTEMS ARCHITECTURE -- SECOND EDITION\ Addison-Wesley 2012 -- ISBN : 978-0-321-71833-4 VIDELA, Alvaro & WILLIAMS, Jason J.W.\ RABBITMQ IN ACTION\ Manning 2012 -- ISBN : 9781935182979