Contact pour le module :
Florian Brandner (@ telecom-paris.fr)
Description du module :
La plupart des applications que vous utilisez tous les jours réalisent en parallèle plusieurs activités. Par exemple, votre client mail ou navigateur web préféré va collecter et mettre à jour différentes informations vérifier l’état des mises à jour, gérer les téléchargements de fichiers. Cette tendance va en augmentant si l’on considère le cas d’application reposant sur des programmes s’exécutant sur différent ordinateurs ou dispositifs portables (e.g. téléphones portables, tablettes).
Lors de la conception d’une application, l’identification des activités menées par le logiciel est une étape cruciale de sa conception. C’est durant cette phase que l’on décide de découpler certains traitements et de la manière dont les applications vont communiquer avec d’autres applications.
La plupart des modèles de programmation introduisent une notion de tâche ou thread. Ce concept permet de définir une activité séquentielle et donne donc les moyens de décrire plusieurs activités concurrentes interagissant les unes avec les autres. Un thread va appeler des méthodes dans des bibliothèques ou interagir avec d’autres thread. On distinguera les interactions ayant pour but la communication ou le partage d’information, des interactions ayant pour but de synchroniser les activités. Cette présentation est une version simplifiée et très partielle de ce qui peut être vu en inf223.
En fonction du type d’interaction entre un thread et son environnement, il sera possible d’étudier la notion de protocole de communication (soit en temps qu’utilisateur ou concepteur).
Objectifs du module :
- Savoir définir et utiliser dans la description de vos objectifs les termes : threads, variables partagées, messages, protocoles et interfaces de communication.
- Être capable d’utiliser les bibliothèques Java / Android pour implémenter les threads et les communications / interactions entre threads.
Livrables envisageables :
En fonction de la complexité du module à réaliser tout ou partie des points suivants pourrait être considéré comme des étapes réalistes de la mise au point de votre application concurrente ou répartie :
- PAN1 :
- Connaître les définitions de haut niveau des termes : threads, variables partagées, messages, protocoles et interfaces de communication.
- Utiliser le vocabulaire appris pour justifier l’intérêt du module en expliquant l’usage que vous pensez pouvoir en faire.
- PAN2 :
- Livrable: Etude bibliographique sur la notation de diagramme de séquence.
- Livrable: Définition des threads et objets partagés sous forme de classes + diagramme de séquence identifiant les threads et leur enchaînement / leurs collaborations possibles.
- PAN3 :
- Livrable: code Java / Android permettant l’exécution des activités principales.
- · PAN4 :
- Livrable : Code intégrant l’ensembles des différentes activités avec couverture de l’ensemble des scénarios décrit dans le diagramme de séquence du PAN1.
- Livrable: Description complète du protocole applicatif et code Java / Android assurant l’initialisation des communications, leur gestion, l’envoi et la réception de messages.