% INF5151 — Génie logiciel: analyse et modélisation % UQAM — Département d'informatique % Plan de cours — Hiver 2020 * Horaires, locaux et enseignants: Responsable(s) du cours ======================= Coordination ------------ Lounis, Hakim PK-4920 poste 2364 Enseignement ------------- Martin, Louis PK-4330 poste 3172 Description du cours ==================== Explorer les fondements et l'évolution des méthodes d'analyse. Procéder à l'étude détaillée et à l'application d'une méthode. Situer le rôle de l'utilisateur. Notion de système et d'approche systémique. Modèles du cycle de vie du logiciel. Les processus de base. Artefacts principaux: principes d'opération et spécification des exigences. Modélisation conceptuelle, fonctionnelle et dynamique. Outils d'aide à la définition des exigences. Regard critique sur les méthodes en application dans l'industrie et rôle de l'utilisateur dans l'analyse. Préalables académiques ---------------------- Avoir réussi 30 crédits pour les étudiants du baccalauréat en informatique et génie logiciel ou 15 crédits et avoir au moins un an d'expérience professionnelle pertinente en informatique pour les étudiants du certificat en informatique. Objectif du cours ================= - Donner aux étudiants un aperçu théorique du cycle de vie du logiciel. - Sensibiliser les étudiants à l'importance des normes en génie logiciel et leur faire connaitre les principales références dans le domaine. - Familiariser les étudiants avec les activités antérieures au développement. - Rendre les étudiants capables de réaliser une étude de faisabilité. - Apprendre aux étudiants la notation UML. - Rendre les étudiants aptes à réaliser des modèles OO en utilisant un logiciel de modélisation. - Familiariser les étudiants à l'approche des cas d'utilisation. - Rendre les étudiants aptes à réaliser un document de spécification des exigences utilisateur. - Sensibiliser les étudiants aux activités postérieures à la définition des exigences. - Initier les étudiants aux nouvelles approches dans le domaine. > *Les livres d'art (dessin, peinture, etc.) ne promettent pas de vous > transformer en artiste. Ils ne peuvent que vous apporter les outils, > les techniques et les processus de réflexion employés par d'autres > artistes. Il en va de même pour ce cours. Il ne promet pas de faire de > vous un bon analyste ou de vous donner cette "sensibilité aux > exigences". Il ne peut que vous montrer les méthodes des bons > analystes, ainsi que les astuces, les techniques et les outils qu'ils > utilisent.*\ > --- Texte adapté tiré du livre *Coder proprement* de Robert C. Martin Contenu du cours ================ Thèmes abordés -------------- - Étude de faisabilité - Approche systémique - UML - Modélisation conceptuelle - Cas d'utilisation - Exigences et spécifications - Conseils pratiques Boite à outils -------------- - Identification du problème ou de l'opportunité - Étude de faisabilité - Spécification des requis - Préparation et compte rendu des entretiens - Diagramme de cas d'utilisation - Description des cas d'utilisation - Modèle conceptuel - Définition des événements systèmes et des contrats - Wiki/Git Modalités d'évaluation ====================== **Type** **Pondération** **Date de remise** ----------------------------------------------------- ----------------- -------------------- TP 1 --- Diagramme de contexte et parties prenantes 10 % 2020-01-30 TP 2 --- Modèle conceptuel 10 % 2020-02-13 TP 3 --- Cas d'utilisation 10 % 2020-03-12 TP 4 --- *Behavior Driven Development* 10 % 2020-04-09 Projet de session 10 % 2020-04-16 Examen intra 25 % 2020-02-20 Examen final 25 % 2020-04-23 Concernant l'examen final ------------------------- **Modalité** L'examen final est de type «take home» individuel. L'énoncé de l'examen sera disponible à 12 h (midi) le 16 avril 2020. Votre copie devra être remise avant 12 h (midi) le 23 avril 2020. Durant cette semaine, aucune question n'obtiendra de réponse. **Modalité de remise** Via Moodle, une seule remise par personne, le seul format accepté: PDF. La structure du nom de fichier est du type «EXF-NOMP12345678» avec votre code permanent. 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 TP est précisé avec la description du TP. La qualité du français et de la présentation font 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 de l'institution 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 deux examens combinés. Les règlements concernant le plagiat seront strictement appliqués. Pour plus de renseignements, consultez le site suivant : Médiagraphie ============ Livres ------ - ADZIC, Gojko\ *Specification by Example*\ Manning Publications 2011 - AMBLER, Scott W.\ *The Elements of UML 2.0 Style*\ Cambridge University Press 2005 - BEATTY, Joy & CHEN, Anthony\ *Visual Models for Software Requirements*\ Microsoft Press 2015 - BOEHM, Barry & TURNER, Richard\ *Balancing Agility and Discipline*\ Pearson Education, Inc. 2004 - COCKBURN, Alistair\ *Rédiger des cas d'utilisation efficaces*\ Eyrolles 2001 - COHN, Mike\ *User Stories Applied*\ Addison-Wesley 2004 - CONSTANTINIDIS, Yves\ *Expression des besoins pour le SI --- Deuxième édition*\ Eyrolles 2013 - GOTTESDIENER, Ellen\ *The Software Requirements Memory Jogger*\ Memory Jogger 2005 - LARMAN, Craig\ *UML 2 et les design patterns --- Troisième édition*\ Pearson 2005 - LONCHAMP, Jacques *Analyse des besoins pour le développement logiciel*\ Dunod 2015 - NICIEJA, Kamil\ *Writing Great Specifications --- Using Specification by Example and Gherkin*\ Manning Publications 2018 - PAUL, Debra & YEATES, Donald & CADLE, James\ *Business Analysis --- Second Edition*\ BCS The Chartered Institute for IT 2010 - ROBERTSON, Suzanne & ROBERTSON, James\ *Mastering the Requirement Process --- Third Edition*\ Pearson Education, Inc. 2013 - ROQUES, Pascal\ *UML 2.5 par la pratique --- Huitième édition*\ Eyrolles 2018 - ROSE, Seb, WYNNE, Matt & HELLESOY, Aslak\ *The Cucumber for Java Book --- Behaviour-Driven Development for Testers and Developers*\ The Pragmatic Programmers 2015 - WIEGERS, Karl E. & BEATTY, Joy\ *Software Requirements --- Third Edition*\ Microsoft Press 2013 Normes ------ - ISO/IEC/IEEE 29148 --- Ingénierie des systèmes et du logiciel --- Processus du cycle de vie --- Ingénierie des exigences Sites ----- - [UML Diagrammes](http://www.uml-diagrams.org/) - [UML Introduction](https://lipn.univ-paris13.fr/~gerard/docs/cours/uml-cours-slides.pdf) Présentation de Pierre Gérard --- Université de Paris 13 - [UML MOOC gratuit](https://mooc-francophone.com/cours/mooc-debutez-lanalyse-logicielle-avec-uml/) - [UML Version 2.5](https://www.omg.org/spec/UML/2.5/PDF) --- spécification formelle (794 pages) - [PracticalAnalyst](http://practicalanalyst.com/category/requirements/) --- un site dédié au travail de l'analyste - [Volere](http://www.volere.co.uk/) --- plusieurs gabarits facilitant la cueillette des besoins Outils ------ - Éditeur de texte : - [Atom](https://atom.io/) - [Visual Source Code](https://code.visualstudio.com) - Transformation : [Pandoc](http://pandoc.org/) - Production de document : - [MacTeX --- distribution LaTeX pour OS X](http://www.tug.org/mactex/) - [MiKTeX --- distribution LaTeX pour Windows](https://miktex.org/) - Gestion des versions : [Bitbucket --- GIT](https://bitbucket.org/product) - Carte heuristique *Mind Map* : [FreeMind](https://sourceforge.net/projects/freemind/) - Logiciels de modélisation - [Modelio](https://www.modelio.org/) - [ArgoUML](http://argouml.tigris.org/) - [UMLet](https://www.umlet.com/) - Pour la génération des diagrammes UML dans un texte *Markdown* : - Prérequis : *Python 2.7* et *Java* - Télécharger `plantuml.jar` disponible sur - Installer `pandocfilters` - Pour Mac OS X, faire la commande `sudo easy_install pandocfilters` - Installer *Graphviz* disponible sur - Pour d'autres outils textuels générant des diagrammes . - Pour l'approche *BDD*, avec *Python 3*, utilisation de *Behave* avec traitement pour générer un rapport *PDF*.