Université du Québec en Outaouais Département d'informatique et d'ingénierie
Sigle : INF1583  Gr. 01
Titre : Développement des systèmes informatiques
Session : Automne 2016  Horaire et local
Professeur : Iglewski, Michal
1. Description du cours paraissant à l'annuaire :

Objectifs

Introduire l'étudiant à l'approche professionnelle utilisée dans les différentes étapes du développement de systèmes informatiques (y compris des systèmes à temps réel). Lui présenter les différentes techniques formelles existantes dans le domaine et montrer comment les appliquer dans un projet informatique. Lui apprendre à documenter un système informatique. Introduire l'étudiant au travail en équipe.

Contenu

Principaux types de documents dans un système informatique et définitions de leurs contenus. Rôle des spécifications et méthodes formelles. Introduction à certaines notations formelles pour décrire les exigences et spécifications de composants et systèmes logiciels : modélisation abstraite, spécifications algébriques des types abstraits et/ou automates et systèmes de transition. Méthode rigoureuse de développement. Techniques de validation, tests, inspection. Travail en équipe, gestion de l'équipe, productivité, métriques. Outils de programmation supportant le développement des logiciels.
2. Objectifs spécifiques du cours :
Apprentissage par problèmes et par projets.
3. Stratégies pédagogiques :

Au cours de cette activité, diverses formules pédagogiques seront utilisées, notamment: cours magistraux, devoirs, exercices en classe et lectures personnelles. Les attentes sont que les étudiant(e)s investissent au moins 90 heures de travail personnel en plus des 45 heures de cours.

Les devoirs seront effectués sur deux plateformes: Windows et Unix.

La page Moodle sera utilisée pour communiquer d'autres informations au cours de la session.

Des séances de travaux dirigés (2h/semaine) viendront appuyer les séances de cours. Ces séances se font en présence d'un assistant. La présence des étudiants à ces laboratoires est obligatoire.

4. Heures de disponibilité ou modalités pour rendez-vous :

Consultations : mercredi : 15h00 à 17h00 ou sur rendez-vous

Les étudiants sont priés de respecter les heures des consultations. En dehors des heures de consultation, les foires aux questions de Moodle constituent la voie principale de communication entre les étudiants et le professeur.

5. Plan détaillé du cours sur 15 semaines :
Semaine Thèmes Dates
1   

Plan de cours

Systèmes de gestion de versions (CVS, Bazaar, Git, ...)

Présentation du projet de session

TD - le 8 sept.

06 sept. 2016 
2   

Assertions

Tests traditionnels

Framework pour l'exécution de tests unitaires (JUnit)

Comment tester avec JUnit

PHPUnit

13 sept. 2016 
3   

Qualité du code (introduction)

Vérification et validation de systèmes

Vérification formelle

Inspection

20 sept. 2016 
4   

Tests

TD - le 29 sept.

27 sept. 2016 
5   

Métriques logicielles

SonarQube

Outils de build

  • make, ant
  • gestion de dépendances (JavaScript, PHP)
  • Maven
04 oct. 2016 
6    Semaine d'études 11 oct. 2016 
7   

Notion de génie logiciel, étapes

Pourquoi méthodes formelles ?

Outils mathématiques pour ingénieurs de logiciel (suite)

  • paradoxes, ensembles, formules logiques, variables libres
  • construction "where"
  • fonctions et relations
  • prédicats
  • relation d'équivalence
  • représentations tabulaires
  • automates à états

TD - le 20 oct.

18 oct. 2016 
8    Examen de mi-session

Spécifications des programmes

  • description formelle des effets de programmes
  • différences entre une spécification de programme et une spécification de module
25 oct. 2016 
9   

Spécifications des programmes (suite)

  • programmes déterministes et non-déterministes
  • spécifications des programmes sous forme de « fonctions de programme » (LD-relations)
  • tables décrivant les fonctions de programme
  • exemples de spécifications
  • documentation de programmes avec « displays »
  • étude de cas
01 nov. 2016 
10   

Principes de conception modulaire

Guide de modules

Spécifications d'interfaces de module

  • exemples en Lotos et Z

TD - le 10 nov.

08 nov. 2016 
11   

Spécifications d'interfaces de modules

  • règles pour des spécifications formelles et abstraites
  • méthode de traces
15 nov. 2016 
12   

Exemples de spécifications de modules

TD - le 24 nov.

22 nov. 2016 
13   

Documentation interne de modules

  • choix de la structure de données et définition de la fonction d'abstraction
29 nov. 2016 
14   

Documentation interne de modules (suite)

Documentation des besoins

TD - le 8 déc.

06 déc. 2016 
15    Examen final 13 déc. 2016 
6. Évaluation du cours :

L'évaluation est l'appréciation du niveau d'apprentissage atteint par l'étudiant par rapport aux objectifs des cours et des programmes.

L'attribution des notes se fera selon la répartition suivante :
  • Examen de mi-session : 20 %
  • Examen de fin de session : 20 %
  • Devoirs : 60 %

Pour les devoirs d'équipe, les notes peuvent être attribuées d'une manière individuelle selon la contribution de l'étudiant.

Attention: La présence aux cours est fortement recommandée.
7. Politiques départementales et institutionnelles :
8. Principales références :
Volumes suggérés :
  • Sommerville, I.; Software Engineering; Addison-Wesley, 2010, 9/e, ISBN: 9780321313799
  • Articles :
    • Articles : Parnas, D.L., Madey, J., "Functional Documents for Computer Systems", Science of Computer Programming, 25, 1, pp. 41-61.
    • Parnas, D.L., "On the Criteria to be Used in Decomposing Systems into Modules", Communications of the ACM, Vol. 15, No. 12, December 1972, pp. 1053-1058.
    • Parnas, D.L., Madey, J., Iglewski, M., "Formal Documentation of Well-Structured Programs", IEEE Transactions on Software Engineering, Vol. 20, No.12, 1994, pp.948-976.
    • Parnas, D.L., Clements, P.C., "A Rational Design Process: How any Why to Fake It", IEEE Transactions on Software Engineering, Vol. SE-12, No. 2, February 1986, pp. 251-257.
Volumes de références:
  • Brooks, F.P., No Silver Bullet--Essence and Accidents of Software Engineering, Computer, 20(4), 1987 (aussi un chapitre dans The Mythical Man Month: Essays on Software Engineering, Anniversary Edition, Addison-Wesley, 1995).
  • Ghezzi, C., Jazayeri, M., Mandrioli, D.; Fundamentals of Software Engineering; 2e, Prentice-Hall, 2002, ISBN 0-13-305699-6.
  • Pressman, R.; Software Engineering: A Practitioner's Approach; McGraw-Hill, 7/e, 2010, ISBN: 0073375977.
9. Page Web du cours :
http://moodle.uqo.ca/course/view.php?id=17413