TwitterFacebookGoogleLinkedInRSS

Sujet

Sujet et Motivation

L’augmentation du nombre d’applications disponibles sur les téléphones mobiles, sur les tablettes tactiles ou encore sur les ordinateurs personnels prouve la rapidité de réaction et de développement que les éditeurs logiciels doivent avoir pour ne pas se faire distancer par la concurrence. La plupart des développements effectués au sein d’un même éditeur logiciel montre une grande réutilisation de certaines fonctionnalités qui sont récurrentes dans leurs différentes applications sur différents supports. Si nous prenons par exemple les fonctionnalités de géolocalisation disponible dans différentes applications, nous pourrons constater que leur intégration varie d’une application à une autre. En prenant deux applications de même type (localisation des points d’intérêts remarquables autour de la position de l’utilisateur ou encore application de localisation spécifique aux distributeurs d’une banque…), nous pourrons constater chez certains la présence de la fonctionnalité de calcul de l’itinéraire vers le point d’intérêt pour l’autre seulement son adresse etc… Pour expliquer ces différences d’intégration d’une même fonctionnalité, les éditeurs d’applications ont entre autre des difficultés pour composer différentes fonctionnalités dans une même application. Cela s’explique par le fait que, de manière générale, les applications sont développées en séparant la partie fonctionnalités de l’application, de la partie interface graphique de l’application, la conception de celle-ci étant trop souvent reprise de zéro pour chacune des applications. Mes travaux consistent, après avoir étudié les différentes possibilités, en termes de développement d’application et surtout de composition d’application, d’améliorer l’intégration de fonctionnalités provenant d’applications existantes pour construire une nouvelle application.

Problématique

Mon travail s’inscrit plus particulièrement dans le domaine du génie logiciel et plus précisément dans le domaine de la composition d’applications. En considérant une application comme l’ensemble composé des fonctionnalités de l’application et de l’interface utilisateur de l’application, nous pouvons constater que les travaux existants montrent une certaine maitrise en termes de composition pour chacun des niveaux. Au niveau fonctionnel, des solutions peuvent être mises en place grâce à plusieurs techniques comme les orchestrations de services, la programmation par aspects ou encore la programmation par composants et leur assemblage. Au niveau interface utilisateur, des solutions basées sur la description multi-niveaux des interfaces peuvent être utilisées, notamment grâce à des opérateurs ensemblistes manipulant l’interface comme un ensemble d’éléments. Certaines solutions exploitent les descriptions en amont, c’est-à-dire au moment de la description de l’arbre de tâches des interfaces utilisateurs (première étape de la conception d’une interface) afin de composer ces différentes descriptions et de pouvoir générer par la suite l’interface finale de l’application. Aucune de ces approches ne permet de pouvoir réutiliser les morceaux provenant d’applications existantes en conservant leurs propriétés fonctionnelles et graphiques. D’une part, au niveau fonctionnel, après composition des fonctionnalités, l’interface utilisateur de l’application est totalement reconstruite sans tenir compte des interfaces des applications existantes et qui seraient réutilisables. D’autre part, au niveau interface utilisateur, la composition se base sur des opérateurs ensemblistes qui limitent le niveau granularité de la composition et surtout cette composition n’est en aucun cas lié à la partie fonctionnelle des applications ce qui entraine un travail supplémentaire pour lier l’interface composée aux différentes fonctionnalités.

Proposition

Pour répondre à cette problématique, je propose un modèle d’application tenant compte des différentes informations disponibles sur une application, que ce soit au niveau interface utilisateur, ou fonctionnel. Ce modèle permet d’avoir la description des liens existants entre les deux niveaux de l’application et permet aussi d’avoir un lien entre l’arbre de tâches de l’application et les éléments de l’application eux-mêmes. Je propose un raisonnement sur ce modèle basé sur une sélection par le développeur des différents éléments qu’il veut réutiliser dans une nouvelle application. A partir de cette sélection, je propose des extensions à celle-ci basées sur les liens existants entre les différentes parties de l’application et permettant de garantir une sélection qui soit opérationnelle. Après la sélection des différents morceaux provenant des applications que le développeur veut combiner, je propose ensuite différents opérateurs permettant entre autre la fusion de certains éléments (d’interfaces ou fonctionnelles) pour permettre la mise en place de la glue nécessaire entre les différents morceaux afin d’obtenir la nouvelle application composée. Les perspectives de mes travaux sont multiples. Nous pourrions étudier les différences et la complémentarité de cette approche de composition suivant l’angle par lequel la composition est effectuée. Effectivement, l’approche que je propose permet d’adresser différents types d’utilisateurs qui pourraient effectuer la composition soit à partir de la manipulation exclusive des éléments de l’interface utilisateur, soit à partir de la manipulation exclusive des éléments du niveau fonctionnel, soit par une combinaison des deux. L’étude des différences de résultats selon les différents angles d’attaque de la composition ou la complémentarité de ceux-ci pourrait permettre d’aller plus loin dans la composition d’application et l’aide apportée aux développeurs pour valider leur nouvelle application ainsi composée.

CyberChimps