Developing Component-Based Applications with a Data-Centric Approach and within a Service-Oriented P2P Architecture: Specification, Analysis and Middleware
Développement d'Applications à Base de Composants avec une Approche Centrée sur les Données et dans une Architecture Orientée Service et Pair-à-Pair : Spécification, Analyse et Intergiciel
Résumé
Developing Peer-to-Peer (P2P) applications became increasingly important in software development. Nowadays, a large number of organizations from many different sectors and sizes depend more and more on collaboration between actors (individuals, groups, communities, etc.) to perform their tasks. These P2P applications usually have a recursive behavior that many modeling approaches cannot describe and analyze (e.g., finite-state approaches). Another challenging issue in P2P application development is the tight coupling between application specification and the underlying P2P technologies and protocols. This forces software developers to make tedious efforts in finding and understanding detailed knowledge about P2P low level concerns. Moreover, this tight coupling constraints applications to run in a changeless runtime environment. Consequently, choosing (for example) another protocol at runtime to meet a new requirement becomes very difficult. Besides these previous issues, P2P applications are usually specified with a weak ability to delegate computing activities between peers, and especially focus on data sharing and storage. Thus, it is not able to take full advantages of the computing power of the underlying P2P network. In this thesis, we present an approach that combines component- and service-oriented development with well-understood methods and techniques from the field of Attribute Grammars and Data-Flow Analysis (commonly used in compiler construction) in order to offer greater ease in the specification, analysis and deployment of applications in P2P architecture. This approach embodies: i) A formal language called DDF (Data-Dependency Formalism) to specify applications and construct their Data-Dependency Graphs (DDGs). A DDG has been defined to be an abstract representation of applications. ii) An analysis method that uses DDG to infer and compute various properties, including some properties that model checkers cannot compute if the system presents a recursive behavior. iii) A component-based service middleware called SON (Shared-data Overlay Network) to develop and execute applications within a P2P architecture without the stress of dealing with P2P low level complexity. Thanks to SON's automatic code generation.
Le développement d'applications avec une architecture Pair-à-Pair (P2P) est devenu de plus en plus important en ingénierie du logiciel. Aujourd'hui, un grand nombre d'organisations de tailles et secteurs différents compte d'une manière croissante sur la collaboration entre multiples acteurs (individus, groupes, communautés, etc.) pour accomplir des tâches essentielles. Ces applications P2P ont généralement un comportement récursif que plusieurs approches de modélisation ne peuvent pas décrire et analyser (ex. les approches basées sur les automates à états finis). Un autre challenge qui concerne le développement d'applications P2P est le couplage fort entre la spécification d'une part, et les technologies et protocoles sous-jacents d'autre part. Cela force les développeurs à faire des efforts considérables pour trouver puis comprendre des informations sur les détails de ces couches basses du P2P. De plus, ce couplage fort oblige les applications à s'exécuter dans des environnements figés. Par conséquent, choisir par exemple un autre protocole pour répondre à un nouveau besoin à l'exécution devient une tache très difficile. Outre ces points, les applications P2P sont souvent spécifiées avec une faible capacité à déléguer des traitements entre les pairs, et se focalisent surtout sur le partage et le stockage de données. Ainsi, elles ne profitent pas pleinement de la puissance de calcul et de traitement offerte par le réseau P2P sous-jacent. Dans cette thèse, nous présentons une approche qui combine les principes du développement orienté composants et services avec des techniques issues des Grammaires Attribuées et d'analyses de flot de données (techniques utilisées surtout dans la construction de compilateurs) afin de faciliter la spécification, l'analyse et le déploiement d'applications dans des architectures P2P. Cette approche incorpore: i) Un langage formel nommé DDF (de l'anglais Data-Dependency Formalism) pour spécifier les applications et construire leurs graphes de dépendances de données. Un graphe de dépendances de données est nommé DDG (de l'anglais Data-Dependency Graph) et est défini pour être une représentation abstraite de l'application spécifiée. ii) Une méthode d'analyse qui utilise le graphe de dépendances de données pour inférer et calculer diverses propriétés, y compris certaines propriétés que les model-checkers ne peuvent pas calculer si le système présente un comportement récursif. iii) Un intergiciel nommé SON (de l'anglais Shared data Overlay Network) afin de développer et d'exécuter des applications dans une architecture P2P sans faire face à la complexité des couches sous-jacentes. Cela grâce essentiellement au couplage faible (par une approche orientée services) et à la fonctionnalité de génération de code automatique.