InfoS7AA - Software Engineering
Software Engineering - Software Development
Responsable : Cedric Zanni, Maître de Conférences , cedric.zanni@univ-lorraine.fr
Pierre-Etienne MOREAU (Pierre-Etienne.Moreau@univ-lorraine.fr)
Durée du module : 21 heures
Crédits ECTS : 2
Objectif général :
Acquérir les bases techniques et théoriques nécessaires à une compréhension approfondie des méthodes de production de logiciels.
Programme et contenu
Ce cours introduit aux différents concepts clé du développement logiciel ainsi qu'aux principaux outils associés.
On abordera notamment la notion de design pattern en étudiant leurs utilisations dans la librairie standard Java et JavaFX. Nous étudierons également les grandes familles de méthode de développement logiciel (cycle de développement en V et méthode agiles) ainsi que les différents concepts et outils à disposition pour améliorer la qualité du code/logiciel produit (intégration continue, programmation défensive et par contrat, diagrammme de classe, de cas d'utilisation, de séquence, d'état transition).
Les différents concepts vus seront mis en pratique avec le langage Java ainsi que l'outil Git et la bibliothèque Junit.
La notion d'intégration continue sera abordée en lien avec le projet du cours d'Operating Systems et sera mis en oeuvre avec GitLab CI/CD.
Séances :
Introduction et programmation objet Slides, complement
Test unitaire Slides
Design pattern et librairie standard Slides, complement, exemple
Méthodes Agiles, Slides
SOLID, Reactive UI, Slides
Intégration Continue Slides
Projets en groupe
Projet :
Individuel, TD1-3 : File de Priorité
Groupe, TD5-7 : ImageProcessing
Framework MVC, JavaFX :
Debugging :
Pré-requis : Programmation
Niveau à atteindre
maitriser les outils de base du développement logiciel (systèmes de gestion de version, tests unitaires)
comprendre les concepts utilisés par la librairie standard Java et savoir développer des structures de données similaires
Modalité d'évaluation
1 Projet individuel et 1 Projet en groupe.
Rappel :
Git : Slides, Exercices, GitHub CheatSheet
Java et Débogage: Exercices
Docker: Slides
Notes de cours :
Il vous sera demandé de prendre des notes sur un outil de prise de notes collaboratif (ou pad). Tous les étudiants pourront participer mais certains seront officiellement en charge des notes.
Méta-outils : Etherpad (prise de notes collaboratives) de l'Université de Lorraine, Google docs, éventuellement Crocodoc (annotation collaborative).
Compléments de cours :
The Art of Lean Software Development, Curt Hibbs, Steve Jewett & Mike Sullivan, O’Reilly, 2009