Systèmes Repartis GIN5108
Enseignant:
Email:
Durée totale du cours: 22.5 H
Semestre: 5
Option : Ingénierie logicielle
Nombre de crédits: 2
| Modules
spécialisés |
Modules de
base |
Sciences et techniques de
l’ingénierie |
Préparation à la carrière professionnelle |
| X |
| Code | : GIN5108 | Systèmes Repartis
|
Volume Horaire : 1,5h Cours intégrés (par semaine)
Objectifs d’apprentissage et compétences visées
A la fin de ce cours l’étudiant sera capable de:
- Énumérer les caractéristiques des systèmes et des applications répartis
- Maîtriser le développement d’applications client/serveur en utilisant les sockets
- Maîtriser le développement d’applications réparties en utilisant les RMI
- Concevoir des algorithmes pour des applications réparties
Contenu du cours
- Introduction générale
- Communication, applications réparties : services fournis, principes de réalisation
- Place respective du système d’exploitation, des couches de communication, du middleware
- Notions communes : noms, adresses, liaison, notions de protocole et d’interface
- Programmation client-serveur sockets – RPC
- Mise en œuvre du modèle client-serveur sur la couche de transport (sockets + RPC)
- Réalisation du RPC (stubs, IDL, conversion de paramètres…)
- Introduction aux objets répartis Java RMI
- Introduction aux objets répartis
- Patrons de base : proxy, factory, nommage
- Un exemple de middleware à objets : Java RMI
- Utilisation
- Principes et détails techniques de mise en œuvre
- Introduction à l’algorithmique des systèmes répartis
- Temps et état dans un système réparti.
- Coopération de processus répartis
- Tolérance aux fautes
- Consensus et validation
- Désignation dans les systèmes répartis
- Gestion répartie de l’information
Méthodes d’enseignement et d’apprentissage
- Enseignement frontal (magistral) avec des exemples à résoudre en
- Exercices théoriques et études de cas (présentation et discussion).
- Travaux pratiques (laboratoire)
- Travaux à faire à domicile (mini-projet, exposé, compte-rendu, …)
Connaissances et compétences pré-requises
- Programmation C et Programmation JAVA
- Systèmes d’exploitation
- Introduction aux réseaux
Références bibliographiques
- Un polycopié (Notes du cours) de l’enseignant sera
- Autres références sous forme de tutoriaux, manuels ou documents à télécharger
- Les recommandations bibliographiques suivantes doivent être considérées :
- Coulouris, J. Dollimore, T. Kindberg, G. Blair, « Distributed Systems: Concepts and Design », Addison-Wesley, 5th Ed., 1047 pages, 2012.
Modalité d’évaluation
- 40% Contrôle continu (Test, Assiduité, Devoir surveillé, travaux non présentiels, …)
- 60% Examen semestriel
- Test, Assiduité, Travaux non présentiels, Mini-projets, … = 60% de Contrôle Continu
- Note de DS = 40% de Contrôle Continu
Résultats d’apprentissage :
Compétences Techniques:
- Conception de systèmes répartis: Les étudiants devraient être capables de concevoir des systèmes informatiques répartis en utilisant des architectures appropriées, des protocoles de communication et des modèles de distribution.
- Programmation distribuée: Ils devraient maîtriser la programmation orientée objet, les services web, les technologies de middleware, et être capables de développer des applications distribuées.
- Gestion des données distribuées: Les étudiants devraient comprendre les bases de données distribuées, la gestion des transactions, la réplication des données et la cohérence dans les environnements distribués.
- Sécurité des systèmes répartis: Ils devraient être conscients des défis liés à la sécurité des systèmes répartis, y compris l’authentification, la confidentialité, l’intégrité des données et la gestion des certificats.
- Scalabilité et performance: Comprendre les techniques de mise à l’échelle des systèmes répartis pour répondre aux besoins de performance et de charge de travail croissants.
- Virtualisation et conteneurisation: Familiarisation avec les technologies de virtualisation et de conteneurisation (comme Docker et Kubernetes) pour le déploiement et la gestion d’applications distribuées.
Compétences Transversales:
- Collaboration en équipe: Travailler efficacement en équipe pour la conception, le développement et la maintenance de systèmes répartis.
- Résolution de problèmes: Capacité à analyser et à résoudre des problèmes complexes liés aux systèmes répartis.
- Communication technique: Savoir communiquer efficacement des concepts techniques à un public non technique.
- Pensée critique: Développer la capacité à évaluer les choix d’architecture et de conception de manière critique et à prendre des décisions informées.
- Éthique professionnelle: Comprendre et appliquer des principes éthiques dans la conception et l’utilisation de systèmes répartis.
- Adaptabilité: Être capable de s’adapter aux évolutions constantes des technologies et des besoins du domaine des systèmes répartis.
- Gestion de projet: Avoir une compréhension de base de la gestion de projet pour planifier, exécuter et contrôler des projets liés aux systèmes répartis.