Code
IGFF CSC 4102
Niveau
M1
Graduate
Graduate
Semestre
Spring
Domaine
Informatique
Programme
Programme Ingénieur
Langue
Français/French
Crédits ECTS
3
Heures programmées
30
Charge de travail
60
Coordonnateur(s)
Département
- Informatique
Equipe pédagogique
Organisation
Cours/TD/TP/projet/examen : 8/22Acquis d'apprentissage
À l'issue de ce module les étudiantes et les étudiants seront capables de :
- maîtriser le développement d’applications orientées objet (spécification, préparation des tests de validation, conception préliminaire, conception détaillée, préparation des tests unitaires, programmation de l’application et des tests, et exécution des tests),
- savoir appréhender la qualité logicielle par les tests et la qualité du code,
- savoir organiser le développement logiciel de manière agile,
- maîtriser les outils représentatifs des principales activités du processus de développement.
Compétences CDIO
- 1.2 - Connaissance des principes fondamentaux d'ingénierie
- 1.3 - Connaissances avancées en ingénierie : méthodes et outils
- 2.1.2 - Modélisation
- 4.4.1 - Processus de conception
- 4.5.3 - Processus de réalisation logicielle
- 4.5.5 - Test, vérification, validation et certification
Prérequis
Connaissances de base de la modélisation orientée objet illustrée avec le diagramme de classes UML, - Connaissances de base de la programmation orientée objet illustrée avec Java, et plus particulièrement, concepts de classe, d'objet et d'héritage, - Connaissances de base des activités de développement d’une application logicielle, - Maîtrise d'un langage de programmation procédural.
Mots-clés
Développement d’applications orientées objet, patron de conception, patron de programmation (idiome), qualité logicielle, tests et analyse de code, méthode agile, outils pour le développement logiciel
Contenu
Approfondissement des concepts de la modélisation et de la programmation orientées objet illustrées avec UML (modélisations statique et dynamique) et JAVA (polymorphisme, liaison tardive, classe abstraite, interface, type paramétré, collections, expressions lambda, « Streams », « Optional ») :
- introduction au génie logiciel : approche systématique de développement logiciel (de la modélisation à la programmation et aux tests), patrons de conception et de programmation (idiomes), et qualité logicielle outillée (analyse statique de code, exécution automatisée des tests),
- méthode agile : mise à disposition dans une forge logicielle les artefacts tout au long d'un projet,
- utilisation tout au long du module, dans un projet en binôme, des outils et canevas logiciels suivants : gestion de versions (Git et GitLab), modélisation UML (p.ex. PlantUML), construction de projets Java (Maven), intégration continue (GitLab CI), tests automatisés (Junit), analyse statique de code (SpotBugs, CheckStyle).
Evaluation
La note de première session est calculée comme suit :
- évaluation de la modélisation du logiciel livré (M = 3 points),
- évaluation de la programmation du logiciel livré (P = 3 points),
- évaluation de la complétude (intégralité) du logiciel livré (I = 1 point),
- évaluation de la cohérence entre la spécification, la conception, et le code (C = 1 point),
- évaluation de l'investissement (agilité) dans le projet par la présence (A = 1 point),
- évaluation globale des connaissances par l'oral individuel de validation (O = 10 points).
Note 1è session = si (O ≥ 5) alors (M + P + C + I + A + O) sinon min(M + P + C + I + A + O , 9).
La note de 2è session fait suite à un examen sur table de 1h30 et est écrêtée à 13.
Note finale = max (Note de 1è session, min(Note de 2è session, 13))
Bibliographie
Polycopiés de cours
Approches pédagogiques
Pédagogie par projet