IFT2251 Introduction au génie logiciel Plan de cours Été 2008 Yann-Gaël Guéhéneuc 1. Introduction Les exigences et les attentes à l égard de la qualité logicielle sont de plus en plus grandes. La taille et la complexité des systèmes informatiques ne cessent d'augmenter. Le développement logiciel ne peut plus être le simple fait du travail «artisanal» d'un développeur aussi ingénieux soit-il. Considérant le rôle critique de certains logiciels, le coût de leur réalisation et les courts échéanciers de production, il est essentiel que développement logiciel intègre une analyse et une conception rigoureuses, une implantation de grande qualité et la vérification. La culture des «bonnes pratiques» et l'application de certains principes de développement contribuent à l'élaboration de logiciels fiables, performants et facilement modifiables. 2. Description du cours et objectifs généraux Le cours IFT2251 est une introduction au génie logiciel. Il vise à initier les étudiants aux processus de développement des logiciels, ainsi qu aux méthodes, techniques et outils utilisés pour développer des logiciels de qualité, c est-à-dire corrects, fiables, robustes, facilement maintenables, évolutifs, etc. L'objectif général du cours est de donner à l étudiant une vision claire du cycle de vie du logiciel, de faire apparaître les enjeux liés à chacune des phases du cycle de vie et de donner des méthodes, techniques et outils pour répondre aux enjeux. Nous verrons comment faire l'analyse et la conception de logiciels à partir des concepts, méthodes et techniques proposées par les approches dites classiques et par l approche orientée objet. Les étudiants apprendront à interpréter et à concevoir des modèles décrivant la structure et le comportement de logiciels tant séquentiels que concurrents. Parmi les modèles «classiques» vus en cours, mentionnons les diagrammes entité association, les diagrammes de flots de données, les réseaux de Petri et les machines à états. Nous verrons également comment faire la spécification de logiciels à l aide d UML, une notation de l approche orientée objet. Nous étudierons les bonnes pratiques de conception et d implantation orientées-objets, notamment les patrons de conception, les patrons de mauvaise conception et les conventions de programmation propre au langage Java, par exemple. Nous mettrons également en avant la programmation par interfaces. Pour clore ce cours d introduction, nous aborderons le sujet de la vérification. Nous survolerons quelques techniques de test (boîte blanche, boîte noire, etc.) et de preuves utilisées pour évaluer la correction des logiciels développés.
3. Clientèle visée Étudiants inscrits au DIRO (en 2 e année) ou dans un programme ayant une composante en informatique. 4. Cours préalables IFT1025 Programmation 2. L étudiant doit maîtriser les concepts avancés de classes, d objets, d héritage, d interfaces (de classe et utilisateur), de réutilisation, et d événements. Il doit savoir utiliser les structures de données de base (listes, arbres binaires, fichiers) et les algorithmes de recherche et de tri qui leur sont associés. 5. Enseignant et démonstrateurs Professeur. Yann-Gaël Guéhéneuc Courriel : guehene@iro.umontreal.ca Bureau : AA-2345 Démonstrateurs (à préciser). Simon Denier Courriel : dift2255@iro.umontreal.ca 6. Horaire Attention! Des changements sont possibles (Ils seront annoncés sur le site du cours.) Voir la page http://www.progcours.umontreal.ca/cours/index_fiche_cours/ift2255.html
7. Objectifs pédagogiques Introduction. Définir ce qu est le génie logiciel, en comprendre les enjeux. Décrire les qualités d un logiciel et les principes de base qui permettent de les réaliser. Expliquer le cycle de vie d un logiciel. Décrire et comparer certains processus de développement classiques et plus récents, comme le processus orienté objets. Analyse et spécification. Expliquer les objectifs et les étapes de la phase d analyse. Décrire les méthodes utilisées. Expliquer l importance de la spécification et distinguer les différents types de notations de spécification existantes. Exposer différentes méthodes et notations (classiques et orientées objets) utilisées pour faire l analyse et la spécification de logiciels. Construire les modèles d analyse d études de cas choisies suivant les approches tant classiques qu orientées objets. o Approche classique : décrire, interpréter et construire des diagrammes entité association, DFD, dictionnaires de données, diagrammes d états et réseaux de Petri pour spécifier les logiciels. o Approche orientée objet avec UML : décrire, interpréter et construire des diagrammes de classes, de cas d utilisation, d activités, de séquence et de collaboration pour spécifier les logiciels. Conception. Expliquer les objectifs et les étapes de la phase de conception. Décrire le principe de modularité et savoir l appliquer. Évaluer les qualités d une conception logicielle. Identifier les différents types d architecture logicielle fréquemment utilisés, les décrire et les comparer. Justifier le choix d une architecture particulière pour la conception d un logiciel donné. Élaborer un modèle de conception détaillée à partir d un modèle d analyse. o Approche classique : construire le structurogramme d un logiciel, à partir des DFD de la phase d analyse, par étude des transactions et des transformations. o Approche orientée objets avec UML : élaborer les diagrammes développés pendant la phase d analyse selon l approche BCE. Décrire et distinguer différentes techniques de réutilisation (bibliothèques, cadriciels, patrons de conception, etc.) et justifier leur utilisation. Décrire les qualités associées à la conception et à l implantation. Vérification. Identifier, décrire et comparer les différentes approches de vérification logicielle et leurs objectifs respectifs. Comprendre les objectifs, les avantages et les inconvénients du test logiciel. Décrire, comparer et savoir utiliser les techniques de génération de jeux de tests de type «boîte blanche» et «boîte noire» pour le calcul de jeux de test pertinents. Et plus globalement Développer une approche de développement rigoureuse. Apprendre à faire des choix judicieux de modélisation, de conception et d implantation.
8. Méthode d enseignement et d apprentissage Formule d enseignement : «connaissances et compréhension». La matière du cours sera essentiellement présentée sous forme de cours magistraux donnés par le professeur. Des exemples seront développés en cours pour illustrer la matière. Formule d apprentissage : «analyse». Les étudiants pourront développer et confirmer leurs apprentissages en réalisant les exercices proposés par les auxiliaires d enseignement pendant les séances de travaux dirigés (démonstrations). Les travaux pratiques, en plus de servir à l évaluation, seront l occasion de développer d autres habiletés liées à ce cours (rigueur, jugement, réflexion, organisation, etc.). Par ailleurs, les étudiants devront compléter leur apprentissage de façon autonome par des lectures et des exercices tirés des livres mis en réserve à la bibliothèque. Cette année, les travaux pratiques pourraient être donnés sous la forme d un projet qui durera toute la session. L objectif du projet, par groupe de quatre étudiants, sera de construire une plate-forme de jeu de rôles sur laquelle s affronte des joueurs automatiques. Les étudiants auront aussi à construire des joueurs pour démontrer la fiabilité, l efficacité, la robustesse de leur plate-forme. Les spécifications du jeu seront données en début du cours et feront l objet de travaux à remettre chaque semaine ou chaque deux semaines : analyse, conception, implantation, tests... Le projet sera réalisé en Java, avec l environnement de développement à code source libre Eclipse et la plate-forme de tests unitaires JUnit. Le système de gestion de configuration CVS pourra être utilisé (à voir avec le Support). Support de cours. Transparents o Ces transparents devront être complétés par des notes de cours personnelles. Site web : o www.iro.umontreal.ca/~pift2255 o Le site web regroupe les énoncés des travaux pratiques et des démonstrations, les transparents, les annonces importantes, etc. o Les informations données en cours prévaudront sur celles du site web. 9. Évaluation L évaluation comportera deux examens et le projet, les pourcentages peuvent changer : Projet 40% Examen intra 30% Examen final 30% Seuil. Une moyenne de 50% aux examens est exigée pour que les résultats du projet soient comptabilisés dans la note finale. (Ainsi, un étudiant qui obtiendrait 60% à l intra. et 20% au final se verrait attribuer 0% pour le projet.)
Retard et absence. À moins d indications contraires, les travaux remis en retard seront pénalisés avec les taux suivants : Retard Pénalité 1 jour -5% 2 jours -15% 3 jours -30% 4 jours -50% 5 6 jours -75% 7 jours et plus -100% Un étudiant absent à l examen intra. passera un examen intra. différé oral devant le professeur et un collègue dans les deux semaines suivantes. Un étudiant absence à l examen final passera un examen final différé organisé par la FAS comme prévu dans le règlement pédagogique. Plagiat et fraude. Ils seront immédiatement sanctionnés conformément aux règlements de l université de Montréal et du DIRO. Pour plus d informations : www.secgen.umontreal.ca/pdf/reglem/francais/sec_30/ens30_3.pdf www.iro.umontreal.ca/codehonneur.pdf 10. Questions et consultations Consultation avec le professeur. Le professeur sera disponible pour répondre à vos questions les mercredis de 10h30 à 12h00 ou sur rendez-vous par courrier électronique. Consultation avec les démonstrateurs. Les démonstrateurs vous communiqueront leurs disponibilités lors de la première séance de démonstration. Questions par courriel. Vous pouvez poser vos questions par courriel au professeur (guehene@iro.umontreal.ca) ou aux démonstrateurs (dift2255@iro.umontreal.ca). Les réponses aux courriels seront données au début des cours et des séances de démonstration. 11. Ouvrages de référence Livres recommandés. John W. Satzinger, Robert B. Jackson, Stephen D. Burd, Michèle Simond et Martin Villeneuve ; Analyse et conception de systèmes d information ; Les Éditions Reynald Goulet, 2 e édition, 2003.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides ; Design Patterns: Elements of Reusable Object-Oriented Software ; Addison-Wesley, 1 e édition, 1994. Autres livres intéressants. Carlo Ghezzi, Mehdi Jazayeri et Dino Mandrioli ; Fundamentals of Software Engineering ; Prentice-Hall, 1 e édition, 2002. Leszek A. Maciaszek ; Requirements Analysis and System Design. Developing Information Systems with UML ; Addison Wesley, 1 e édition, 2001. Shari Lawrence Pfleeger ; Software Engineering: Theory and Practice ; Prentice-Hall, 2 e édition, 2001. James Rumbaugh, Ivar Jacobson et Grady Booch ; The Unified Modeling Language Reference Manual ; Addison Wesley, 1 e édition, 1999. Roger S. Pressman ; Software Engineering: A Practitioner s Approach ; McGraw Hill, 5 e édition, 2001.