% INF2050 — Outils et pratiques de développement logiciel % UQAM — Département d'informatique % Plan de cours — Été 2020 * Horaires, locaux et enseignants: Responsable(s) du cours ======================= Coordination ------------ Trudel, Sylvie PK-4720 poste 5538 Enseignement ------------- Berger, Jacques PK-4115 poste 3699 Description du cours ==================== Objectifs --------- Initier les étudiants au développement de logiciel dans un contexte et un environnement de développement professionnel. Sommaire du contenu ------------------- Faire connaître aux étudiants les principaux outils utilisés pour le développement professionnel de logiciel. Comparaison des modèles de développement traditionnels et des processus de développements modernes. Développement de logiciel dans un contexte de logiciel libre (open source). Étude de cas. Utilisation d'outils contemporains pour de développement : cadre de test, gestion de la configuration, construction automatisée, environnement intégré de développement, outils de pistage et de revue de code. Modalité d'enseignement ----------------------- Ce cours comporte une séance obligatoire de laboratoire (2 heures). Préalables académiques ---------------------- - INF1070 - Utilisation et administration des systèmes informatiques - INF1120 - Programmation I Objectif du cours ================= Comprendre les principales caractéristiques des différentes approches de développement. Identifier les facteurs favorisant une approche agile. Établir des normes de codification et paramétrer les outils pour les mettre en application. Sensibiliser les étudiants aux techniques du réusinage (refactoring). Rendre les étudiants aptes à définir et à implémenter des tests. Initier les étudiants aux principales normes en génie logiciel. Familiariser les étudiants avec les outils de construction automatisée. Sensibiliser les étudiants à la problématique de la gestion des changements durant la réalisation des projets. Familiariser les étudiants à un environnement de développement intégré (IDE). Initier les étudiants à la problématique de la gestion des versions. Sensibiliser les étudiants aux concepts d'écosystème de développement. Initier les étudiants aux nouvelles approches dans le domaine. Connaître certains outils de pistage et de documentation agile. Identifier les principaux facteurs favorisant un écosystème de développement efficace. Contenu du cours ================ 1. Méthodes de développement 2. Environnements de développement 3. Développement agile 4. Normes de codification 5. Gestion des versions 6. Revues de code 7. Tests automatisés et TDD 8. Réingénierie (refactoring) continue 9. Documentation agile 10. Construction automatisée 11. Écosystème de développement 12. Intégration continue 13. DevOps Modalités d'évaluation ====================== Description sommaire Date Pondération ------------------------------ ----------------- ------------- Examen final 11 août 2020 30% Projet de session - Partie 1 2 juin 2020 10% Projet de session - Partie 2 23 juin 2020 20% Projet de session - Partie 3 14 juillet 2020 20% Projet de session - Partie 4 4 août 2020 20% Un travail remis en retard reçoit la note zéro à moins d'avoir fait l'objet d'une entente préalable avec l'enseignant. Le détail des conditions de réalisation de chaque évaluation est précisé avec la description de l'évaluation. La qualité du français fait partie intégrante des critères d'évaluation des travaux jusqu'à un maximum de 10%. La note de passage du cours est de 60% pour l'ensemble des évaluations. Les règlements concernant le plagiat seront strictement appliqués. Pour plus de renseignements, consultez le site suivant : Médiagraphie ============ - VO MARTIN, Robert C. -- *Coder proprement 2009* -- PEARSON -- ISBN: 978-2-7440-2327-9 Ouvrage en français disponible à la Coop. - VC MARTIN, Robert C. -- *Agile Software Development, Principles, Patterns, and Practices 2002* -- PEARSON -- ISBN: 0135974445 - VC McCONNELL, Steve -- Code Complete, 2e édition -- MICROSOFT PRESS - ISBN: 978-0735619678