Techniques de développement logiciel
Niveau M1
"Le premier objectif est d'apporter aux élèves une formation aux méthodes de développement rigoureuses permettant d'écrire efficacement un programme correct et de vérifier sa correction par le test. Le second objectif est d'initier les élèves à la gestion d'un projet logiciel et de présenter les outils nécessaires. Le troisième objectif est de donner aux élèves une culture générale dans le domaine du développement logiciel.
Un projet utilisant des composants logiciels externes et possiblement plusieurs langages de programmation permet d'éprouver ces méthodes et outils sur un projet de taille significative."

Xavier Clerc
1. Python orienté objet 1
- Introduction
- Encapsulation et abstraction
- Définition de classes
- Propriétés
- Héritage simple
- Polymorphisme
2. Python orienté objet 2
- Introduction
- héritage multiple
- Exceptions
- Gestion de ressources
3. Python orienté objet 3
- Introduction
- UML
- UML : diagrammes de classes
- UML : cas d'utilisation
- UML : diagrammes de séquence
- UML : diagrammes d'états
- Design patterns
- Design pattern : singleton (creational)
- Design pattern : adaptateur (structural)
- Design pattern : itérateur (behavioural)
- Design pattern : visiteur (behavioural)
4. Gestion de projet
- Introduction
- Gestion de projet classique
- Gestion de projet waterfall
- Gestion de projet par cycle en V
- Gestion de projet itérative
- Gestion de projet scrum
- Gestion de projet XP
5. Architecture logicielle
- Introduction
- Généralités
- Architectures en couches
- Pipelines
- Automates
- MVC
- Architectures client-serveur
- Architectures SOA
- Architectures clusters
- Architectures map/reduce
- Architectures cloud computing
- Composition de motifs architecturaux
- Interfaces graphiques : généralités
- Interfaces graphiques : librairie Qt en Python
6. Test
- Introduction
- Questions générales
- Types de tests
- Natures de tests
- Techniques de tests
- Couverture de code
- Pratiques associées au test
- Codage de ses propriétés dans le programme
- Log
- Automatisation des tests
- Tests en Python
- Log en Python
- Autres outils Python
7. Bases de données
- Introduction
- Périmètre et objectifs
- Concepts élémentaires
- SGBD
- Modèle de l'algèbre relationnelle
- SQL : DDL
- SQL : DML
- Utilisation de SQL depuis un langage de programmation
- Utilisation via l'API sqlite3
- Utilisation via l'ORM storm
- Dépendance fonctionnelle et formes normales
- Modélisation d'une base de données
- NoSQL
8. Concurrence
- Généralités
- Programmation à l'aide de threads
- Programmation à l'aide de processus
9. Interopérabilité
- Généralités
- Interopérabilité par XML
- Interopérabilité par JSON
- Interopérabilité avec C/C++
- Interopérabilité et parallélisme pour l'amélioration de performances
10. Programmation réseau et web
- Introduction
- Notions de base sur les réseaux
- Utilisation de sockets en Python
- Programmation web
- Architecture web
- Web côté serveur (back-end) : API REST
- Web côté serveur (back-end) : framework Flask
- Web côté client (front-end) : framework Angular
- Web côté client (front-end) : développement d'applications mobiles
- Bonnes pratiques
