Premier semestre

Génie logiciel

Objectifs

L’objectif de ce cours est d’introduire les moyens de concevoir des applications informatiques de qualité (répondant aux besoins, évolutives et faciles à maintenir).

Le cours présente une introduction aux modèles de conception classiques, base du génie logiciel autour des technologies objet, en proposant des applications pratiques au cours de travaux pratiques et en étudiant des patrons de conception développés en Java. Cet enseignement vise également à apprendre à développer et déployer un site Web dynamique en Java en utilisant Spring Boot. Il permet de se familiariser avec les architectures n-tiers et les serveurs d’applications et de bien maîtriser les principaux outils et langages avancés de développement des applications Web/JavaEE.

L’autre partie de ce cours se concentrera sur les méthodes de packaging et de livraison d’application pour se rapprocher des standards de l’entreprise. Pour java on le cours se concentrera sur Maven, python ne disposant pas d’outil de livraison car le langage est simplement interprété on parlera rapidement de pip et des venv. Enfin le cours s’attardera sur les technologies de conteneurisation avec l’exemple de Docker et d’orchestration avec Docker Compose et Kubernetes.

Plan

I. Le génie logiciel
1. Introduction au génie logiciel et bonne pratique de conception.
2. Architecture logicielle et modèle en couche, Exemple sur GWT.
3. Principaux patrons de conception, principe et mise en œuvre en Java.
4. Le test logiciel et l’ingénierie des langages.
5. L’ingénierie dirigée par les modèles.

II. Programmation Client Serveur (JavaEE)
1. Architectures distribuées et plate-forme JavaEE
i. Le framework SpringBoot
ii. Architecture : composants, services et communications
iii. Les problématiques des applications serveurs
2. La persistance avec JPA
i. Problématique du "mapping" objet-relationnel
ii. Les outils de mapping : JPA, Hibernate
iii. Le mapping
iv. L’entity-manager

III. Packaging et livraison
1. Maven
2. Docker
3. Docker Compose
4. Kubernetes

Prérequis

Non indiqué