Description détaillée du cours
SEG-2501 "Construction de logiciel" (hiver 2016)
Pour chaque chapitre du cours, vous trouvez les informations suivantes:
- Objectifs d'apprentissage: ce sont les objectifs déjà présentés dans le syllabus.
- Lectures: Ceci inclut les notes de cours (préparées par le professeur) et aussi d'autres textes que couvrent la matière du cours.
- Matériel supplémentaire: Ce sont des lectures supplémentaires qui ne sont pas mandatoires. En partie, ce matériel peut être utile pour une meilleur compréhension de la matière du cours, tandis que d'autre lectures couvrent un champ plus vaste que la matière du cours et sont inclues ici pour le lecteur curieux. Cela s'applique aussi aux "lectures complémentaires" qui sont indiquées à la fin de certaines sous-sections dans les notes de cours. Remarque: Le "matériel supplémentaire" comprend, entre autres choses, quelques notes de cours préparés par Dr. Somè en 2003.
- Vous pouvez aussi consulter le fichier Powerpoint préparé par Hussein Al Osman en 2014.
Notes de curiosité: Voici des commentaires sur des développements historiques, des chercheurs bien connus et des applications particulières qui ne font pas partie des questions d'examen, mais qui font partie du patrimoine informatique et de la culture générale que chaque informaticien devrait connaître.
Outils: L'étudiant va utiliser plusieurs outils informatiques dans les laboratoires et pour les devoirs, en particulier les suivants:
- LTSA : un outil simple pour construire des modèles de machines à états et pour vérifier les bonnes propriétés des modèles qui comportent plusieurs machines concurrentes.
- Outils UML : il existent plusieurs environnements pour la modélisation en UML
- LEX (ou Flex): un outil pour la génération d'analyseurs lexicaux basé sur la définition d'une expression régulière. Note: Des outils pour la génération d'analyseurs syntaxiques seront aussi discutés, mais pas utilisés en pratique).
- Java : un langage de programmation qui a des bonnes propriétés pour l'écriture de programmes avec concurrence.
Section 1: Définition des exigences: modélisation de la structure et du comportement avec des machines à états
Note: Les objectifs d'apprentissage ci-dessous sont précédés 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. En plus, à la fin de chaque objectif est une indication des laboratoires et devoirs qui vous permettent d'atteindre cet objectif.
1. Introduction à la modélisation des exigences
- Objectifs
- Lectures
- Matériel supplémentaire
- Sujets prérequis: Les diagrammes de Classe UML étaient couvertes par le cours SEG-2505; les concepts et notations sont aussi discutés dans les chapîtres 4 - 8 du livre [Booch].
- Notes de cours de 2013
- [Braek] chapîtres 1 et 2
- Les sujets de ces deux premiers chapîtres seront élaborés plus dans le cours SEG-3501 sur les exigences.
- Wikipedia (en anglais): Domain model, Conceptual model, UML Composite Structure diagram
2. Modélisation du comportement dynamique (par machines d'états)
- Objectifs
- (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-2; Lab-3; Devoir 1)
- Lectures
- Course notes
- [Booch] chapîtres 21 - 25 (sur le sujet des machines à états, voir notes imprimées en vente) et chapître 11 (sur les interfaces)
- Exemple: une machine à café (en anglais)
- Exemple: une porte
- Exemple: Hotel (utilisé dans le Lab-2)
- Matériel supplémentaire
3. Machines d'états communicants (la concurrence)
- Objectifs
- (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-2; Lab-4)
- Lectues
- Matériel supplémentaire
Section 2: Langages, grammaires et analyseurs
1. Introduction aux langages et compilateurs
- Objectifs
- (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.
- Lectures
- Matériel supplémentaire
2. Analyse lexicale
- Objectifs
- (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)
- Lectures
- Notes de cours
- [Louden] chapître 2 (sur le sujet "Sanning", voir notes imprimées en vente)
- Matériel supplémentaire
3. Analyse syntaxique
- Objectifs
- (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 équivalentes 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)
- Lectures
- Notes de cours
- [Parson] chapter 3 (sur le sujet "Syntactic Analysis I", voir notes imprimées en vente)
- Matériel supplémentaire
Section 3: La concurrence, questions d'implantation et de performance
1. Concurrence
- Objectifs
- (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)
- Lectures
- Notes de cours
- [Sebesta] chapître 12 (voir notes imprimées en vente) SVP, lire Sebesta 12.1 (Introduction), 12.2
(Introduction to subprogram-level concurrency), 12.3 (Semaphores), 12.4
(Monitors), and 12.7 (Java threads).
- Matériel supplémentaire
2. Conception de l'implantation et questions de performance
- Objectifs
- (1-Connaissances) Comprendre les propriétés non fonctionnelles reliées à la conception d'une implantation, et savoir s'attaquer à ces problèmes.
- (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)
- Lectures
- Matériel supplémentaire
Dernière mise à jour:22 juin,
2015