Déroulement du projet
Le cours comprend 13 séances de cours théorique et 12 séances de laboratoire. Il est donné en format accéléré à raison de deux séances de cours et deux séances de laboratoire par semaine.
Durant les séances de cours, du contenu théorique sera présenté durant les premières séances portant sur les généralités de la conduite de projet informatique. D'autres séances de cours théoriques pourraient s'ajouter selon les besoin des projets à réaliser. Le reste des séances théoriques ainsi que les séances de laboratoire sont consacrées entièrement à la réalisation du projet en équipe.
Les compétences acquises dans le cadre du programme de Cheminement universitaire en technologie option informatique sont mises en application dans le cadre d'un projet d'envergure. La réalisation se fait de façon autonome par les étudiantes et étudiants qui sont encouragés à combler leurs lacunes par eux-mêmes. L'enseignante ou l'enseignant est toutefois disponible pour les guider au besoin.
Les étudiantes et étudiants doivent proposer un projet de session de leur choix qui respecte les exigences énoncées ci-dessous. Les sujets proposés doivent être approuvés par l'enseignante ou l'enseignant afin de s'assurer du respect des objectifs du cours et de l'équité entre les groupes.
Méthodologies et analyse des besoins logiciels
- Qu'est-ce que le génie logiciel?
- Comment mener un projet de développement logiciel?
- Phases de développement
- Méthodologies traditionnelles et agiles
- Méthodologie Scrum
- Analyse des exigences
- Étude d'opportunité
- Techniques d'analyse des exigences
- Propriétés des exigences
- Exigences fonctionnelles vs non-fonctionnelles
Séance de laboratoire
- Analyse des exigences du projet proposé et énoncé des fonctionnalités principales
- Identification des données manipulées par l'application
Modélisation
- L'utilité et l'objectif de la modélisation
- Les bases de la modélisation UML (p.ex. diagramme de cas d'utilisation, diagramme de séquences et diagramme de classes).
Séance de laboratoire
- Modélisation des principaux cas d'utilisation
- Diagramme des séquences système des principaux cas d'utilisation
- Identification des principaux concepts du domaine et leurs relations (diagramme de concepts)
- Diagramme architectural
Conception et développement du projet
- Mise en place de l'architecture
- Développement des composants métiers de l'application
- Développement des interfaces
- Revues régulières avec l'enseignante et l'enseignant qui agit en soutien et comme expert produit
- Présentation de matière et d'outils techniques selon les besoins et les choix technologiques des étudiantes et étudiants, selon le jugement de l'enseignante ou de l'enseignant.
Séances de laboratoire
- Réalisation du projet en équipes
Exigences du projet
Le projet à réaliser est laissé au choix des membres d'une équipe. L'enseignante ou l'enseignant agira comme guide pour aider les étudiantes et étudiants à choisir et délimiter le périmètre de leur projet. Chaque projet doit répondre aux exigences suivantes :
- Comporter une partie backend accessible via une API REST qui implémente la logique métier de l'application et contrôle l'accès aux données.
- Comporter au moins deux applications clientes qui doivent être soit une application Web, une application mobile ou une application de bureau (en Java Swing ou FX). Les deux applications doivent utiliser des technologies différentes (p. ex. pas deux interfaces Web).
- Comporter une base de données relationnelle dont la complexité est jugée suffisante par l'enseignante ou l'enseignant.
- Être multi-usager avec authentification des usagers. L'application doit fournir des informations personnalisées et/ou des fonctionnalités personnalisées selon le profil de l'usager authentifié.
- N'utilise pas des cadriciels et librairies autres que celle qui ont été approuvées par l'enseignante ou l'enseignant.
En tout état de cause, l'enseignante ou l'enseignant peut émettre des exigences supplémentaires et/ou modifier les projets qui lui seront proposés.
Réalisation du projet
Le projet doit être réalisé selon une méthodologie agile (p.ex. SCRUM). Les étudiantes et étudiants utiliseront l'outil de leur choix pour effectuer le suivi du projet avec un outil spécialisé tel que Jira, Trello, GitHub Projects, etc. Ce dernier peut-être imposé par l'enseignante ou l'enseignant. Notez que l'enseignante ou l'enseignant se réserve le droit de tenir compte de la qualité des artéfacts trouvés sur ces outils et plateformes lors de l'évaluation.
Le projet doit être réalisé en utilisant l'outil de travail collaboratif Git et publié sur un dépôt privé tel que GitHub, BitBucket, etc.
Le projet doit être réalisé en plusieurs sprints dont les exigences (backlog) seront déterminées par l'équipe et discutées/validées par l'enseignante ou l'enseignant.
Conformément aux méthodologies agiles, tous les membres du projet doivent être solidaires et compétents sur tous les aspects du projet. Tous les membres du projet doivent contribuer de façon équitable. Les journaux d'activités de GitHub ainsi que les revues par les pairs peuvent être utilisés pour évaluer la contribution de chacun.