Chaque module vaut 3 ECTS. Vous sélectionnez 10 modules/30 ECTS parmi les catégories suivantes:
- 12-15 crédits ECTS en Modules technico-scientifiques (TSM)
Les modules TSM vous transmettent une compétence technique spécifique à votre orientation et complètent les modules de spécialisation décentralisés. - 9-12 crédits ECTS en Bases théoriques élargies (FTP)
Les modules FTP traitent de bases théoriques telles que les mathématiques élevées, la physique, la théorie de l’information, la chimie, etc., vous permettant d’étendre votre profondeur scientifique abstraite et de contribuer à créer le lien important entre l’abstraction et l’application dans le domaine de l’innovation. - 6-9 crédits ECTS en Modules contextuels (CM)
Les modules CM vous transmettent des compétences supplémentaires dans des domaines tels que la gestion des technologies, la gestion d’entreprise, la communication, la gestion de projets, le droit des brevets et des contrats, etc.
Le descriptif de module (download pdf) contient le détail des langues pour chaque module selon les catégories suivantes:
- leçons
- documentation
- examen
Génie logiciel: méthodes de développement et architecture (TSM_SoftwEng)
Le module fournit une étude approfondie des sujets sélectionnés dans le domaine du génie logiciel. Ces sujets sont issus des domaines suivants: méthodes de spécification, méthodes de développement agiles, architecture logicielle, évolution du logiciel.
Compétences préalables
- Conception et programmation orientées selon l’objet dans plus d’un langage de programmation
- Unified Modeling (UML)
- Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, Helm, Johnson, Vlissides; ISBN 0-201-63361-2)
- Notions de gestion des versions et des configurations
- Notions de tests unitaires (par exemple junit ou nunit)
- Connaissance de base de Scrum
Objectifs d'apprentissage
- L’étudiant comprend et peut expliquer les avantages d'une méthodologie de développement itérative et incrémentale.
- En fonction des caractéristiques d'un projet donné, l’étudiant est en mesure de sélectionner, d'adapter et d'appliquer la méthodologie de développement appropriée.
- L'étudiant connaît des principes de conception et d'architecture avancés et peut les utiliser pour diriger la phase de conception d'un système.
- L'étudiant est conscient qu'un logiciel est un système complexe en évolution constante.
- L’étudiant sait comment améliorer, étendre et intégrer des logiciels existants, tout en maintenant leur qualité.
Contenu des modules
Génie Logiciel
- Principes et valeurs des méthodes de développement agiles
- Création de valeur
- Gestion du risque
- Culture d’équipe
- Relations clients
- Bonnes pratiques et techniques de gestion
- Gestion de la communication entre parties prenantes
- Revues de projets
- Assurance qualité
- Gestion des changements
- Planification itérative et incrémentale
- Méthodologies de développement modernes
- Vue d’ensemble et comparaison de différentes approches
- Unified Process (UP), eXtreme Programming (XP), Scrum
- Implications sur la gestion de projet
Architecture logicielle
- Le role de l'architecture est des architectes logiciels
- notion d'architecture
- modèles de référence, architectures de référence
- structures et vues architecturales
- architecture et documentation
- les roles de l'architecte logiciel
- Principes de conception avancés
- interface-oriented design
- couplage et cohésion
- gestion des dépendances
- les principes SOLID
- conception par contrat
- Modèles de conception et d'architecture
- styles d'architectures
- modèles pour architectures distribuées
- Sélection, création et évaluation d'architectures logicielles
- qualités systémiques
- méthodes d'analyse
Evolution du logiciel
- Principes d'évolution
- Développement, maintenance, évolution
- “Software aging”
- Compréhension du code
- Analyse et qualité du logiciel
- métriques
- techniques d'analyse et de visualisation
- contrôle de qualité continu
- Evolution de code hérité
- Re-Technologies: Reverse Engineering, Re-Engineering, Re-Factoring
- Re-engineering orienté objet
- Travailler efficacement avec du code hérité
- Tester des systèmes hérités
Méthodes d'enseignement et d'apprentissage
travail personnel, lectures et exercices
Bibliographie
- Mary & Tom Poppendiek: Lean Software Development
Kent Beck: eXtreme Programming Explained 2nd Ed. - Ken Schwaber et al, Agile Software Development with Scrum, Prentice Hall, 2002
- Alistair Cockburn: Agile Software Development
- Robert C. Martin: Agile Software Development
- Tom Mens: Software Evolution
- Doug Schmidt et.al.: Pattern-oriented Software Architecture, Vol. 2
Frank Buschmann et al: Pattern-oriented Software Architecture, Vol. 4 - Len Bass, Paul Clements, Rick Kazman: Software Architecture in Practice 2nd Ed.
- Gernot Starke: Effektive Software Architekturen 2. Auflage
- Lehmann "Laws of Software Evolution Revisited"
- Martin Fowler et al, Refactoring
Joshua Kerievsky, Refactoring to Patterns - Michael Feathers, Working Effectively with Legacy Code
- Andreas Zeller: Why Programs Fail ISBN 1558608664
Télécharger le descriptif complet
Retour