Ce cours traite de différents aspects de l'ingénierie du logiciel pour un public de développeurs et de statisticiens.
Programme
- Git avancé, environnement de travail : rappels sur l'utilisation de Git, travail collaboratif, issues, merge / pull requests.
- Portabilité, configuration, packaging : lancer du code sans IDE, comprendre l'environnement d'exécution, environnements virtuels et gestion de paquets.
- Tests, automatisation et initiation à l'intégration continue : tests unitaires, mocking, automatisation via script sur environnement Linux, initiation au principe d'intégration continue.
- Applications web et webservices : présentation des différents enjeux, en tant que client et en tant que serveur.
- Architecture applicative avancée : zoom sur des concepts plus avancés – ORM et différents types de bases de données, patrons de conception et prise de perspective avec la POO, introduction à la programmation fonctionnelle.
Langage
Les mises en pratique seront principalement en Python mais des parallèles avec d'autres langages seront faits tout au long du cours.
Approche pédagogique
Le cours met l'accent sur l'ingénierie de développement et sur la vie d'un code.
L'important ce n'est pas de savoir quoi écrire mais où l'écrire.
Fil rouge et évaluation
- Publier, sur un dépôt public, le code source d'un projet de développement web moderne.
- Diffuser publiquement un livrable de l'application, construit automatiquement à partir des sources.
- Le livrable devra pouvoir être utilisé tel quel sur différents environnements et configurable pour choisir le modèle et d'autres paramètres.
Sections du cours

Frontend, JavaScript et React
18 mins
Présentation des données destinée aux utilisateurs : le frontend avec le framework React

HTML, JS, CSS, Templating et rendu côté serveur (SSR)
Découverte des standards du web pour le frontend et de solutions applicatives pour la mise en place de frontend pilotées par python

Récupération de données via le webscraping
Techniques de web scraping et récupération de données depuis le web.

Etats et Persistence des données
Gestion des états des applications, base de données

HTTP: Consommation et construction d'API webservice
API webservices et HTTP, FastAPI.


Analyse dynamique d'une base de code
7 mins
Analyse dynamique, tests unitaires, fonctionnels et de charge


Bonnes pratiques du développement et design patterns
Bonnes pratiques de code, détection des code smells et introduction aux design patterns

Configuration du code en fonction de l'environnement
7 mins
Gestion de la configuration et des variables d’environnement en développement logiciel

Gestionnaire de package, partage de code, industrialisation
Comprendre la portabilité applicative via l’utilisation de dépendances logicielles

Architecture applicative
22 mins
Appréhender les enjeux de l’architecture logicielle pour la conception logicielle
