Attention : Il y a une douce chance que vous vous trouviez en pleine ligne de mire d'une attaque de chocolat !

Watch out: There's a sweet chance you might find yourself in the line of fire of a chocolate attack!

Description

Méthodes de conception avancées de logiciels et choix d'architecture. Architectures logicielles : multi-niveaux, clients-serveurs, extensibles et dynamiques. Concepts et implantations avancées des bibliothèques et du chargement de composantes dynamiques. Cadres de référence et plugiciels. Composition et architecture par composantes. Patrons de conception avancés pour les systèmes distribués : accès aux services et configuration, traitement d'événements, synchronisation et accès simultanés. Approches émergentes de conception et d'architecture : conception orientée aspect, architecture orientée services et autres.

Advanced software design methods and choice of architecture. Multi-tier, client-server, extensible, and dynamic software architectures. Advanced design and implementation of libraries and dynamic binding of components. Frameworks and pluggable architectures. Design and composition of component architectures. Advanced design patterns for distributed architectures: service access and configuration, event processing, synchronization, and parallelism. Emerging design and architecture approaches cloud architectures, service-oriented architectures, and others.

Pourquoi ce cours / Why this course? 

This course is ideal for students seeking to deepen their understanding of advanced software design and architecture. This course covers emerging approaches like block-chain, cloud, and service-oriented architectures, preparing students for developing cutting-edge, robust, scalable, and adaptable software solutions. 

Ce cours est idéal pour les étudiants souhaitant approfondir leur compréhension de la conception avancée de logiciels et des architectures. Il couvre des approches émergentes comme la blockchain, le cloud et les architectures orientées services, préparant les étudiants à développer des solutions logicielles de pointe, robustes, évolutives et adaptables.

Aperçu du cours / Overview of the course

Module 1 : Architecture et conception des systèmes distribués / Architecture and design of distributed systems

  • Les principes de conception SOLID, les architectures distribuées, les styles et modèles architecturaux, la qualité de la conception, les attributs de qualité et les métriques de qualité, la mauvaise conception, les anti-modèles, les "design smells", les architectures de composants modulaires, les frameworks, les architectures orientées événements, les architectures enfichables et les architectures logicielles orientées modèles.
  • SOLID design principles, Distributed architectures, Architectural styles and patterns, Design quality, Quality attributes and quality metrics, Bad design, antipatterns, design smells, Modular component architectures, Frameworks, Event-driven architectures, Pluggable Architecture and Pattern-oriented software architectures.

Module 2 : Systèmes multi-niveaux /  Multi-tier systems

  • Le traitement des événements, la synchronisation et la concurrence, les architectures orientées services, les microservices, les systèmes de systèmes, les systèmes distribués de big data, la blockchain et la programmation orientée aspects.
  • Event processing, Synchronization and concurrency, Service-oriented architectures, Microservices, Systems of systems, Distributed big data systems, Blockchain and Aspect-oriented Programming

Style d'enseignement / Teaching Style

  • Cours magistraux : Présentations complètes sur les concepts clés / Lectures: Comprehensive presentations on key concepts.
  • Résolution de problèmes en groupe : Au moins un tiers du temps de cours est consacré à la résolution collective de problèmes techniques / Collaborative Problem-Solving: At least 1/3 of the lecture time is dedicated to collectively solving technical problems.
  • Engagement des étudiants : La participation active et l'engagement des étudiants sont fortement encouragés et généreusement récompensés (voir le disclaimer en haut ;)) / Student Engagement: Active participation and engagement are strongly encouraged and generously rewarded (see the disclaimer on top ;))
  • Sessions de laboratoire pratiques : Pratique concrète pour renforcer les connaissances théoriques / Practical Lab Sessions: Hands-on practice to reinforce theoretical knowledge.
  • TPs : Tâches régulières pour appliquer et tester la compréhension du matériel du cours / Assignments: Regular tasks to apply and test understanding of the course material.