Syllabus
SEG-2506 "Construction de logiciel" (hiver 2016)
(3 heures de cours magistral, 3 heures de laboratoire
par semaine)
Description dans l'annuaire: Principes
généraux et techniques pour la conception logicielle de bas niveau. BNF et
théorie de base des grammaires et de l'analyse syntaxique. Utilisation de
générateurs d'analyseurs syntaxiques. Fondements de la conception de langages et
de protocoles. Langages formels. Conception à base de tableaux et de transitions
d'états. Méthodes formelles pour la construction de logiciels. Technique de
gestion du parallélisme et de la communication interprocessus. Outils pour la
construction guidée par modèle. Introduction aux couches intergicielles. Analyse
de points chauds et mise au point de la performance. Préalables: CSI-2510,
SEG-2505
Horaire:Cours magistral: Lundi 13:00 - 14:30 et Mercredi 11:30 - 13:00; Laboratoires/Tutoriel:vendredi 14:30-17:30 (voir aussi horaire des cours à l'UofO)
Professeur:
Gregor
v. Bochmann , téléphone: 562-5800 ext.: 6205, courriel
: bochmann@site.uottawa.ca
, bureau: SITE (local 5082), heures de bureau: les mercredis de 14:00 à 15:00
Thèmes généraux:
Le thème général du cours est construction de
logiciel en utilisant des formalismes de
spécification à haut niveau et des outils de programmation (CASE)
correspondants. Plus particulièrement, les sujets principaux
sont:
- Conception de systèmes en temps réel avec une approche
de processus concurrents à états et transitions; méthodes
de vérification et implantation; utilisation d'outils CASE spécialisés
- Définition de langages informatique et d'interactions
par grammaires et automates; conception et implantation d'analyseurs lexicaux et syntaxiques; utilisation d'outils CASE spécialisés dans ce contexte
- Conception, vérification et implantation de programmes avec concurrence
et problèmes de synchronisation dans le contexte de langages
comme machines d'états UML et Java; mesures de performance et simulations
Objectifs d'apprentissage
La liste suivante contient les objectifs d'apprentissage pour chaque chapitre du cours. Chaque objectif est précédé par une référence aux "Qualités requises des diplômés" décrites dans la section 3.1 du document "Normes et procédures d’agrément" du CEAB (les qualités couvertes par ce cours sont: (1) Connaissances en génie, (2) Analyse de problèmes, (3) Investigation, (4) Conception, (5) Utilisation d’outils d’ingénierie, (6) Travail individuel et en équipe, et (7) Communication). En plus, à la fin de chaque objectif est une indication des laboratoires et devoirs qui vous permettent d'atteindre cet objectif. Le cours comprend 10 laboratoires dont trois lab "formels" pour lesquels un rapport doit être préparé, et l'étudiant aura quatre devoirs.
Section 1: Ingénierie des exigences, modélisation de structures et comportement en utilisant des machines d'états
- Introduction à la modélisation des exigences
- (1-Connaissances) - révision de connaissances du cours SEG-2505
- (2-Analyse; 4-Conception; 5-Outils) Construire des modèles de domaine pour un projet de développement donné. (Lab-1; Devoir 1)
- Modélisation du comportement dynamique (en utilisant des machines à états)
- (1-Connaissances) Comprendre les concepts de machines à états de UML et des Diagrammes d'Activités, incluant des états hiérarchiques et concurrents; modélisation du temps réel avec des temporisateurs
- (2-Analyse; 4-Conception; 5-Outils) Construire des machines à états qui modélisent de comportement d'un système en satisfaisant des exigences données (Lab-1; Lab-3; Devoir 1)
- Des machines à états communicants
- (1-Connaissances) Comprendre les concepts de modélisation de concurrence par entrelacement, l'analyse d'accessibilité, des machines à états communicant par rendez-vous ou par passage de messages; comportements non déterministes
- (2-Analyse; 4-Conception; 5-Outils) Concevoir des systèmes comportant des machines à états communicantes, analyser le comportement de tels systèmes, possiblement en utilisant des outils (Lab-1; Lab-4)
Section 2: Langages, grammaires et analyseurs
- Introduction aux langages et compilateurs
- (1-Connaissances) Comprendre les concepts de base pour la définition de langages et l'objet de l'analyse lexicale, syntaxique et sémantique de phrases ou programmes.
- Analyse lexicale
- (1-Connaissances) Comprendre les concepts de langage formel, de la définition de langages par expressions régulières ou machines d'états (appelées automates accepteurs), de machines à états non déterministes et des machines déterministes équivalentes, des méthodes systématiques d'implantation d'analyseurs lexicaux (Lab-5).
- (4-Conception) Trouver une expression régulière, ou un automate accepteur, qui définit un langage qui satisfait des exigences données. (Lab-5; Devoir 2)
- (2-Analyse; 5-Outils) Démontrer la dérivation d'un accepteur déterministe qui définit le même langage qu'une expression régulière donnée. (Lab-6; Devoir 2)
- (2-Analyse; 4-Conception; 5-Outils) Construire un analyseur lexical pour un langage défini par une expression régulière donnée, en écrivant un programme ou en utilisant un outil automatisé. (Lab-5; Devoir 2, Devoir 3)
- Analyse syntaxique
- (1-Connaissances) Comprendre les concepts d'arbre syntaxique, de la définition de langages par grammaire hors-contexte, de l'analyse descendant (déterministe), des conditions LL(1), des méthodes de construction d'analyseurs syntaxiques, des attributs sémantiques, et de la complexité des problèmes de reconnaissance de langages.
- (4-Conception) Trouver une grammaire qui définit un langage qui satisfait certaines exigences données. (Lab-6; Lab-7, Devoir 3)
- (2-Analyse) Pour une grammaire donnée, identifier de l'ambiguïté, des phrases générées et leurs arbres syntaxiques. (Lab-6)
- (2-Analyse; 5-Outils) Vérifier si une grammaire donnée permet l'analyse syntaxique LL(1); sinon, dériver une grammaire équivalente qui le permet. (Lab-7, Devoir 3)
- (2-Analyse; 4-Conception; 5-Outils) Construire un analyseur syntaxique LL(1) pour une langage qui satisfait certaines exigences données; utiliser des attributs sémantiques pour réaliser certaines propriétés sémantiques. (Devoir 3)
Section 3: La concurrence: spécification, vérification et
implantation
- Concurrence
- (1-Connaissances) Comprendre les concepts de concurrence (concurrence logique et physique), de l'ordonnancement des processus, l'exclusion mutuelle pour l'accès aux resources partagées, et la communication entre processus concurrents.
- (1-Connaissances) Comprendre comment la concurrence est supportée par le langage Java.
- (2-Analyse; 5-Outils; 4-Conception) Concevoir, vérifier et implanter des applications avec de la concurrence pour résoudre des problèmes réels. (Lab-9)
- Conception de l'implantation et problèmes de performance
- (2-Analyse; 3-Investigation; 4-Conception) Identifier les problèmes de performance et leurs causes dans une implantation donnée d'un système; suggérer des alternatives de conception pour résoudre ces problèmes. (Lab-11)
- (2-Analyse; 5-Outils; 4-Conception) Étudier les propriétés de performance d'une conception de système par la simulation. (Lab-10; Devoir 4)
Autres objectifs d'apprentissage
Pendant les laboratoires et pour les devoirs, l'étudiant travaillera normalement en groupes de deux. Dans ce contexte, leur travail adressera (dans un certain degré) les qualités requises suivantes:
- (6) Travail individuel et en équipe
- (7) Communication
Évaluation
- devoirs
24%
- Laboratoires: 16% (trois laboratoires "formels": 4% , 3% et 3% ; et les autres ("informels"): 1% chaque)
- Examen mi-session: 20%
- Examen final 40%
- Note: Suivant une
règle établie, la note pour les devoirs et labs ne sera prise en
compte que si votre moyenne dans les examens est plus grand que 50%. (Pour cette moyenne, l'examens mi-session comptera 40% et l'examen final 60%). - revision du 26 janvier.
Manuels (Il n'existe pas un livre qui couvre toute la matière du cours)
- Lectures réquises
- Notes de cours
- Extraits de certains livres qui seront en vente dans le sous-sol de l'immeuble MacDonald:
- [Booch] chapters 21 - 25
- Scanning [Louden, chapt.2] (lecture suggérée)
- Syntax Analysis I [Parson, chapt. 3] (lecture suggérée)
- Concurrency [Sebesta, part of chapt. 13]
- Livres recommandés (de chaque livre, seulement quelques chapîtres seront utilisés pour ce cours)
- [Booch] G. Booch, J. Rumbaugh and I. Jacobson, The Unified Modeling Language User Guide (Second Edition), Addison-Wesley, 2005.
- [Braek] R. Braek and O. Haugen, Engineering Real Time Systems - An
object-oriented methodology using SDL, Prentice Hall (le livre est épuisé) Des extraits sont disponibles dans des photocopies de 2010 - mises en réserve dans la bibliothèque.
- [Louden] K.C. Louden, Compiler Construction - Principles and Practices, PWS Publishing, 1997
- [Parson] T. W. Parson, Introduction to Compiler Construction, Computer Science Press, 1992
- [Aho] A. V. Aho, R. Sethi and J. D. Ullman, Compilers, Principles, Techniques and Outils, Addison
Wesley, 1986, ISBN: 0-201-10088-6
- [Sebesta] R.W.Sebesta, Concepts of Programming Languages, 5th ed., Addison-Wesley, 2002, ISBN: 0-201-75295-6.
- Autres livres
- T. Pittman and J. Peters, The Art of Compiler Conception, Prentice
Hall, 1992, ISBN: 0-13-048190-4. (Remarque: Seulement quelques sections
de ce livre seront utilisées dans ce cours)
- lex & yacc, John R. Levine, Tony Mason & Doug Brown,
O'Reilly & Associates, 1995, Unix Programming Outils Series. ISBN 1-56592-000-7.
Règlement du cours
- Les devoirs et les laboratoires peuvent être faits en groupes d'au maximum deux étudiants.
- Les devoirs en retard seront acceptés jusqu’à 24 heures après la date limite, avec une pénalité de moins 30%.
- Le plagiat est une infraction académique grave qui ne sera pas tolérée.
- Notez que la personne qui fournit des solutions à copier a également commis une infraction car il(elle) est un(e) participant(e) actif(ve) dans le plagiat.
- La personne qui copie et la personne qui laisse copier seront réprimandées également selon les règles de l'Université d'Ottawa.
- S'il vous plaît, référer à ce lien pour plus d'informations: http://www.uottawa.ca/academic/info/regist/crs/0305/home_5_FR.htm
- La présence en classe est obligatoire. Selon les règlements scolaires, les étudiants qui ne se présentent pas pour 80% des cours ne seront pas autorisés à passer les examens finaux.
- Toutes les composantes du cours (ex: rapports de laboratoire, travaux, etc.) doivent être complétées, sinon les étudiants peuvent recevoir une INC comme note finale (équivalente à un F).
- L’absence d'une séance de laboratoire ou d'un examen en raison de maladie sera excusée seulement si vous fournissez un certificat du services de santé (100 Marie Curie, 3e étage) dans la semaine qui suit votre absence.
Dernière mise à jour: 12 janvier,
2016