Les systèmes d’édition collaboratifs
En 1989, Ellis et Gibbs proposent la définition d’un groupware, terme généralement traduit par collecticiel : « computer-based systems that support groups of people engaged in a common task (or goal) and that provide an interface to a shared environment. » [Ellis et Gibbs, 1989]. Une application collaborative est une application qui accompagne un groupe de participants dans la réalisation d’une tâche ou d’un objectif en fournissant une interface vers un environnement partagé. Cette définition, assez large, englobe un ensemble très hétérogène d’applications permettant le travail collaboratif. Vidot propose de distinguer les différentes catégories de collecticiels en fonction de leur rapport au temps et à l’espace [Vidot, 2002]. L’aspect temporel se réfère à la synchronicité des interactions. Une synchronicité élevée implique que les actions des utilisateurs sont visibles en temps réel (action synchrone). Au contraire, une synchronicité faible, implique qu’un temps notable s’écoule entre l’action d’un utilisateur et sa visibilité chez les autres (action asynchrone). L’aspect spatial s’intéresse à la répartition géographique des utilisateurs. Les environnements sont dits répartis lorsque les utilisateurs travaillent sur des ressources réparties sur le réseau. Cette thèse concerne les applications collaboratives appartenant à la catégorie des applications synchrones réparties.
Un modèle d’édition collaborative en temps réel permet à plusieurs utilisateurs de visualiser et d’éditer de manière simultanée le même document (texte, image, objet 3D) depuis plusieurs sites connectés par un réseau de communication. Un modèle d’édition collaborative se compose d’un nombre connu ou inconnu de répliques. Une réplique est une copie du document partagé modifiable à n’importe quel instant. L’exécution d’une opération de modification se fait localement sur la réplique, qui la diffuse ensuite à l’ensemble des répliques. La notification de la modification, contenant l’opération de modification, est communiquée de manière asynchrone. Les répliques distantes qui reçoivent cette notification exécutent alors l’opération localement. L’une des difficultés principale de ces systèmes est d’en maintenir la cohérence. Il existe différents facteurs pouvant pousser un système à ne plus être cohérent :
— La divergence. Les opérations peuvent arriver sur plusieurs sites dans différents ordres, provoquant des résultats dissemblables sur chaque réplique participant à l’édition collaborative – à moins que les opérations ne soient commutatives (ce qui est rarement le cas). Dans les cas d’application où la cohérence du résultat final est nécessaire, la divergence doit être évitée. C’est possible grâce à l’utilisation d’un protocole de sérialisation.
— La violation de la causalité. Le fait que la latence dans une communication soit intrinsèquement non-déterministe peut conduire le système à une violation de la causalité : les opérations peuvent arriver et être exécutées dans un ordre qui ne respecte pas l’ordre causal.
— La violation de l’intention. Suite à la génération d’opérations concurrentes, l’effet d’une opération au moment de son exécution peut être différent de l’intention de cette opération au moment de sa génération.
Ces trois facteurs d’incohérence sont indépendants, notamment en ce qui concerne la violation de l’intention et le problème de divergence qui sont deux problèmes d’incohérence de différente nature : le premier facteur peut toujours être résolu en utilisant un protocole de sérialisation alors que le dernier ne peut utiliser un protocole de sérialisation fixé si les opérations sont exécutées sous leurs formes originelles [Sun et al., 1997]. Le modèle Causality, Convergence, Intention (CCI) proposé par Sun et al. [Sun et al., 1998] propose un modèle de cohérence pour les systèmes d’édition collaborative qui aborde ces problèmes afin d’assurer « la préservation de la convergence, de la causalité et la préservation de l’intention » [Sun et al., 1998]. Une majorité des travaux qui se sont intéressés aux propriétés CCI portent sur des documents textuels [Weiss et al., 2010]. Cette thèse s’intéresse précisément à l’édition collaborative d’espace de travail en 3D. Sont considérées ici les opérations d’ajout et de suppression d’éléments 3D dans un espace partagé, ainsi que les modifications de haut niveau sur ces éléments 3D telles que la translation, la rotation et l’homothétie.
Les architectures orientées événements pour la collaboration
Un événement est un élément omniprésent de la vie. Le terme événement existe dans presque tous les champs en science, avec différents sens. Le but de cette section est de répertorier les différentes notions d’événements. Pour cela, différentes descriptions du terme sont proposées pour plusieurs domaines, notamment l’informatique. Dans la littérature, une variété de définitions du terme événement existe. Habituellement, un événement est considéré comme quelque chose qui « se produit », en particulier quelque chose d’inhabituel ou d’important. Cependant la plupart des travaux de la littérature évitent de définir le sens précis des événements en n’indiquant pas le champ d’application dans lequel ils sont utilisés. Il existe trois entrées pour le terme événement dans le dictionnaire Larousse . La première entrée se réfère à la physique (dans le cadre de la théorie de la relativité), où un événement est « un phénomène considéré comme localisé et instantané, survenant en un point et un instant bien déterminés ». La seconde se réfère à la théorie des probabilités, indiquant qu’un événement est « la partie d’un univers Ω réalisée quand l’une des éventualités la composant se réalise ». La troisième définition se rapporte à la psychologie impliquant « tout ce qui est capable de modifier la réalité interne d’un sujet (fait extérieur, représentation, etc.) ». Cette dernière définition est très proche de ce que l’on retrouve en informatique, comme les changements d’état ou les actions entraînant certaines conséquences.
Dans une application, il peut être important de s’intéresser au déplacement d’un objet de quelques unités (object moved event) ou d’apprendre qu’un utilisateur est passé de déconnecté à connecté (status changed). On s’applique donc à identifier ce qui modifie l’état intrinsèque d’un objet et sa représentation. Bien que ces différentes descriptions permettent d’avoir une compréhension générale du terme événement, chaque sous-discipline de l’informatique comprend ses propres associations.
L’implantation d’une architecture orientée événements (de l’anglais Event Driven Architecture (EDA)) nécessite l’instanciation d’une architecture abstraite, le positionnement des composants sur des machines, ainsi que des protocoles pour subvenir à l’interaction, en utilisant des technologies et des produits spécifiques. Une telle instance est appelée architecture système. De ce fait, les architectures de systèmes distribués orientés événements doivent répondre aux exigences des utilisateurs et aux problèmes liés à la nature des plateformes et applications. Le passage à l’échelle (nombre d’utilisateurs, ressources distribuées sur de grandes zones géographiques) génère un grand nombre d’événements qui doivent être traités de façon efficace. Les systèmes complexes distribués sont construits à partir de collections couplées de manière dite « lâche » (loosely coupled) , technologiquement neutre et indépendante de la localisation des services. Le développement d’applications dirigées par les événements est un challenge tripartite: la production d’événements, le traitement des événements et la consommation des événements [Chandy et al., 2011]. Cristea et al. [Cristea et al., 2011] présentent un aperçu des architectures distribuées pour les systèmes orientés événements. Cette approche est utilisée dans de nombreuses applications réactives. Souvent appliquées à la finance ou aux systèmes logistiques, de telles solutions peuvent également intégrer les besoins de plateformes distribuées à grande échelle, comme les applications web et le travail collaboratif.
Sensibilisation et perception du groupe
Le travail collaboratif peut également être supporté par des modèles orientés événements prenant en compte la sensibilisation au groupe (awareness) dans des activités. Ces systèmes sont présents dans la littérature depuis les prémices de la technologie web [Bentley et Wakefield, 1997, Steinfield et al., 1999, You et Pekkola, 2001]. Ces propositions ont commencé par approcher la sensibilisation à l’espace de travail dans le but d’informer les utilisateurs des changements se produisant dans l’espace de travail partagé. Des travaux plus récents se sont concentrés sur des nouveaux paradigmes comme les systèmes pair à pair (P2P) pour proposer des groupware décentralisés ubiquitaires et sensibles à l’environnement. La sensibilisation au sein du groupe n’est pas seulement utilisée pour notifier les utilisateurs ; son but est également d’aider dans les processus de groupes pour éviter les problèmes. Ces derniers peuvent prendre différentes formes comme : l’inefficacité due à une information limitée ou un système de communication restreint ; la présence d’informations superflues ; la difficulté d’extraire l’information pour surveiller ou faire des rapports ; l’utilisation des données issues des ressources produites par le groupe pour améliorer sa perception des données disponibles. Par exemple, Xhafa et Poulovassilis [Xhafa et Poulovassilis, 2010] exposent une approche distribuée basée événements pour gérer des collecticiels (groupware) en P2P.
|
Table des matières
1 Introduction
1.1 Contexte
1.1.1 La collaboration
1.1.2 Les environnements virtuels collaboratifs 3D
1.1.3 Les systèmes d’édition collaboratifs
1.1.4 Les architectures orientées événements pour la collaboration
1.2 Problématique
1.3 Contributions
1.3.1 Contributions théoriques
1.3.2 Contributions pratiques
1.4 Organisation du manuscrit
2 État de l’art
2.1 Modélisation 3D collaborative sur le web
2.1.1 Collaboration et concurrence en 3D
2.1.2 … sur le web : HTML5, web 3D et au-delà
2.2 Communication en temps-réel
2.2.1 Les principaux protocoles de transport
2.2.2 WebRTC : le web hypermedia en P2P
2.2.3 Quel protocole dans quel EVC3D ?
2.3 Les systèmes distribués orientés événements pour la collaboration
2.3.1 Introduction
2.3.2 Systèmes Publish-Subscribe
2.3.3 Domain Driven Design
2.3.4 Command Query Responsability Segregation
2.3.5 Event Sourcing
2.4 Conclusion
3 Contributions
3.1 Introduction
3.2 Modèle événementiel pour l’intégration du domaine 3D dans les EVC
3.2.1 Modèle général
3.2.2 Adaptation des patrons Event Sourcing (ES) et Command Query Responsability Segregation (CQRS)
3.2.3 Journal des événements
3.2.4 Flexibilité de la visualisation
3.2.5 Cohérence éventuelle en CQRS
3.2.6 Bilan
3.3 Architecture de communication hybride
3.3.1 Éléments constitutifs d’un pair
3.3.2 Architecture hybride « orientée états »
3.3.3 De l’état à l’événement
3.3.4 Architecture de communication hybride « orientée événements »
3.3.5 Bilan comparatif
3.4 Conclusion du chapitre
4 Prototypes d’application web pour la conception 3D collaborative
4.1 Introduction
4.2 3DState : une preuve de concept orientée états
4.2.1 Implantation des composants pour la communication
4.2.2 Interface de 3DState
4.2.3 Gestion de la session
4.2.4 Bilan critique
4.3 3DEvent : une approche découplée orientée événements
4.3.1 Intergiciel pour l’échange de 3D par événements
4.3.2 Interface orientée tâches
4.3.3 Sélection fantôme
4.3.4 Bilan
4.4 Conclusion du chapitre
5 Conclusion