MGL 7361



SYLLABUS



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.

OBJECTIFS



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 et 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.

ÉVALUATION



Un travail remis en retard reçoit la note 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 %. En accord avec le Règlement 18, 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.

Description sommaire Pondération Remise
Remise du choix de lecture (individuel) s. o. Période 3
Choix du travail pratique, plan et bibliographie 5 % Période 4
Résumé de lecture (individuel) 15 % Période 7
Présentation du projet 15 % Périodes 12 et 13
Rapport final 25 % Période 15
Examen Final 40 % Période 15

CALENDRIER


Notes et lectures



Période Date Contenu Lecture
1 2018-01-09 Introduction
2 2018-01-16 Conception vs construction — Approche n-tiers Code as Design : Three Essays by Jack W. Reeves
3 2018-01-23 Métaphores d’appel distant
4 2018-01-30 Contexte de la conception Software Architecture Patterns by Mark Richards
5 2018-02-06 Gestion de la complexité et problème complexe Architects Dont Code
6 2018-02-13 Normes de conception
7 2018-02-20 Patrons et antipatrons de conception I
8 2018-03-06 Patrons et antipatrons de conception II Big Ball of Mud
9 2018-03-13 Services transversaux
10 2018-03-20 Tendances actuelles Microservices vs. Service-Oriented Architecture
11 2018-03-27 Effets pervers de certaines approches de développement Cloud Native Foundations — Chapter 1
12 2018-04-03 Présentations des équipes – partie I Cloud Native Foundations — Chapter 2
13 2018-04-10 Présentations des équipes – partie II et conclusion Cloud Native Foundations — Chapter 3
14 2018-04-17 Révision
15 2018-04-24 Examen final

Autres thèmes possibles


  • La conception dans le cycle de vie du logiciel
  • Niveaux de conception (Architectures, Composants, Idiomes)
  • La conception est un problème complexe
  • Gestion de la complexité
  • Créativité
  • Granularité
  • Normes de conception (IEEE Std 1471-2000, UML, Documentation, Points de vue, Perspectives)
  • Dettes technologiques
  • Utilisation/réutilisation de services et de composants existants à l’interne et à l’externe (API)
  • Contexte (Cohabitation avec des systèmes existants, Nouveaux systèmes)
  • Approche n-tiers (Niveau présentation, Niveau métier, Niveau persistance)
  • Services transversaux (Authentification, autorisation, Journalisation, Messagerie inter-service, Annuaire, Pilotage/monitoring)
  • Environnements d’exploitation (Machine virtuelle, Conteneur)
  • Patrons et antipatrons de conception (SOLID, GRASP, Loi de Conway, Granularité, Stateless et stateful, ACID, DRY)
  • Appel synchrone et asynchrone
  • Métaphores de conception (OO, FP, data-centered, monolithique, REST, Reactive, SOA)
  • Système pour faire des systèmes
  • Système apprenant
  • Moteur de règles
  • Blockchain
  • Preuves de concept
  • Application sans serveur (Serverless Architectures)
  • Internet des objets
  • SQL, NoSQL, Entrepôts de données et Big Data
  • Effets pervers de certaines approches de développement
  • Développement Agile
  • Développement orienté test
  • DevOps

Projet de session


 




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 seront pas modifiés en fonction du nombre d’étudiants dans l’équipe.

Exemples de projets de session


Ces exemples sont à titre indicatif seulement. N’hésitez pas à proposer un sujet qui tient à cœur aux membres de votre équipe.

  • Étude comparative de certains logiciels de messagerie inter-service : ZeroMQ, RabbitMQ, ActiveMQ, etc.
  • Réalisation d’un prototype d’apprentissage profond.
  • Réalisation d’un prototype d’aiguilleur de services : NGINX, etc.
  • Étude comparative des avantages et inconvénients des bases de données relationnelles et NoSQL dans un contexte donné : PostgreSQL, MongoDB, etc.
  • Réalisation d’un prototype à base de conteneur.
  • Réalisation d’un prototype de micro-service.
  • Étude comparative de cadriciels pour la couche présentation : Angular.js, React.js, Vue.Js, jQuery.js.
  • Réalisation d’un prototype d’analyse de données massives.
  • Étude comparative des environnements de gestion des API.
  • Réalisation d’un environnement complet de DevOps.
  • Réalisation d’un prototype utilisant une approche serverless.
  • Étude comparative de l’approche OO et de l’approche fonctionnelle pour un problème donné.
  • Réalisation d’un prototype utilisant un ensemble de services en infonuagique pour une application donnée.
  • Réalisation d’un prototype pour le pilotage/monitoring/déploiement d’une application moderne.
  • Réalisation d’un prototype utilisant un moteur de règles pour un domaine d’application complexe.
  • Réalisation d’une application mobile.



François-Xavier Guillemette, M.Sc.

     

François-Xavier est consultant et formateur en design logiciel et en développement web. Actuellement, il a le privilège de diriger CODE3 coopérative de solidarité et il enseigne à l'UQÀM au baccalauréat et à la maîtrise en informatique et génie logiciel.




Template created by BlackTie.co — Copyright 2014