Deuxième semestre

Conception de logiciel

Objectifs

En dehors des preuves de concept, la conception et la réalisation d’un logiciel nécessite de découper ce dernier en différentes fonctionnalités, en différents sous programmes ou composants logiciel. On retrouve là le concept habituel en informatique : diviser pour régner ou diviser pour résoudre.rnCe principe s’applique aussi bien à la phase d’implémentation qu’à la phase de conception. rnL’objectif est de permettre aux élèves d’acquérir des compétences dans le traitement de sujets relatifs à la conception de logiciels.rnL’enjeu du cours est d’être le plus agnostique du langage python possible, tout en utilisant les compétences acquises des élèves en python pour explorer des enjeux plus généraux du développement et de la conception de logiciels.rn

Plan

• Gestion de projet : Rappels et approfondissement sur Git, forges logicielles, bonnes pratiques.rn• Portabilité et environnement d’exécution du code : introduction aux environnements Linux, compréhension autour des enjeux de la configuration d’un projet.rn• Pattern de développement : Programmation objet et design patterns. Programmation fonctionnelle. Bonnes pratiques pour rendre un code maintenable. Exemples en Python.rn• Partage, utilisation, réutilisation : introduction au monde opensource, utilisation de paquets, gestion des dépendances. Présentation de librairies communes a l’ingénierie des données en python.rn• Qualimétrie, tests unitaires, tests fonctionnels : théorie, pratique et enjeux.rn• Modélisation et structures des données, différents formats de fichiers, SQL, noSQL et ORM.rn• Structure du code, architecture applicative.rn• Web : Architecture client / serveur. Interaction avec un serveur local, avec un serveur distant. Focus sur HTTP.rn• Introduction au CI/CDrnrn

Prérequis

: Bases en développement (POO, Web, SQL)