FR 3038744 A1 20170113 FR 1556433 A 20150707 B13842 FR 1 SYSTEME ET PROCEDE POUR L'ADAPTATION MAL ÉTIQUE D'UNE INTERFACE D'UTILISATEUR Domaine La présente description concerne le domaine de l'interaction homme-ordinateur, et en particulier un système et un procédé pour générer une interface d'utilisateur. Exposé de l'art antérieur Les interfaces utilisateurs comprennent des dispositifs matériels et des applications logicielles qui facilitent l'interaction entre les humains, appelés ici utilisateurs, et des machines. Dans le domaine des technologies de l'infor- mation, un composant essentiel de l'interface utilisateur est l'interface utilisateur graphique (GUI), qui est affichée sur un afficheur d'un dispositif d'utilisateur. Le dispositif d'utilisateur pourrait par exemple être un ordinateur de bureau, un ordinateur portable, un smartphone, une tablette informatique, etc... En plus ou à la place de l'interface d'utilisateur graphique, une interface utilisateur peut comprendre une interface de type audio basée sur de la parole, et une interface de type tactile et/ou un autre type d'interface. Les interfaces utilisateurs sont utilisées dans une 20 grande diversité d'applications logicielles, comme le traitement de texte, les tableurs, les navigateurs web, etc... 3038744 B13842 FR 2 Le contenu numérique des interfaces utilisateurs, et la manière avec laquelle elles sont présentées sur le dispositif d'utilisateur, sont déterminés par les données fournies par un fichier mémorisé sur un dispositif d'utilisateur ou transmis par 5 un serveur distant. Par exemple, des fenêtres d'affichage concernant certaines applications peuvent être représentées par des fichiers codés en Java ou en C++, alors que les pages sont en général codées par des fichiers de type HTML (langage de marquage hypertexte). 10 De nos jours, les interfaces utilisateurs sont en général conçues pour être compatibles avec une gamme relativement large de dispositifs d'utilisateurs, de sorte qu'un utilisateur peut accéder avec succès à des informations, faire des sélections, naviguer vers de nouvelles fenêtres/pages, et 15 introduire des données. Cependant, on s'est aperçu qu'il peut être souhaitable d'adapter ces interfaces utilisateurs aux catégories de dispositifs sur lesquelles elles sont exécutées. Par exemple, dans le cas d'une page web, on fait souvent la distinction entre dispositif « de bureau » et dispositif « mobile ». Alors qu'un dispositif de bureau est en général considéré comme comprenant un écran relativement grand de 12 pouces ou plus, un clavier et une souris, un dispositif mobile est en général caractérisé en ce qu'il utilise un écran tactile de dimensions relativement faibles, et par l'absence de clavier ou de souris. Par conséquent, il y a souvent deux versions d'une interface utilisateur graphique, l'une étant adaptée aux dispositifs « de bureau », et l'autre étant adaptée aux dispositifs « mobiles ». L'utilisateur installe la version de l'application correspondant à son dispositif, ou dans le cas d'interfaces web, les deux types de pages web sont mémorisés par le serveur distant hébergeant le site, et les unes ou les autres sont transmises au dispositif d'utilisateur, par exemple sur la base d'une détection automatique du type du dispositif d'utilisateur, et/ou sur la base d'une sélection par l'utilisateur. 3038744 B13842 FR 3 Au cours de ces dernières années, de nouveaux types de dispositifs d'utilisateurs sont apparus, comprenant des dispositifs correspondant à la technologie appelée en anglais « wearable technology », c'est-à-dire « technologie pouvant être 5 portée sur soi », comme des montres à capacité internet, ou des écouteurs ayant la forme de lunettes. En outre, il est devenu courant que des utilisateurs utilisent leur dispositif d'utilisateur pour accéder à du contenu ou exécuter des applications logicielles dans une grande gamme d'environnements, 10 comme dans les trains, les avions, les automobiles, pendant des réunions, etc. Au vu de ces facteurs, il serait souhaitable d'avoir une plage encore plus grande de versions d'interface, chaque version étant adaptée à une catégorie de dispositifs différents, à des utilisateurs différents et/ou un environnement 15 d'accès différent. Une solution pour obtenir de telles versions de l'interface utilisateur serait d'étendre la stratégie actuellement adoptée pour créer et mémoriser plus d'une seule version de chaque interface. Toutefois, puisque le nombre de 20 versions à prendre en charge augmente, cette solution conduirait à un coût élevé en stockage de données, et aussi à un coût élevé pour le développement et la maintenance de chaque version. Une approche conceptuelle connue sous le nom anglais de « Responsive Design » a été proposée pour adapter une page 25 web à une taille particulière de fenêtre d'affichage. Cette approche implique la programmation du fichier CSS (Cascading Style Sheets) associé à un document HTML de telle sorte que le format d'affichage soit sélectionné sur la base d'une taille de fenêtre détectée dans laquelle la page web doit être affichée. 30 L'adaptation peut changer l'organisation de l'affichage (par exemple, modifier l'emplacement de certaines parties de l'interface utilisateur), ou rendre certaines parties de l'interface utilisateur invisibles. Ainsi, le même code d'interface utilisateur est transmis à tous les dispositifs 35 accédant à la page web, et l'un des formats d'affichage défini 3038744 B13842 FR 4 dans le fichier CSS de ce code va être sélectionné en fonction de la taille de la fenêtre. Toutes les données qui pourraient être affichées q sur le dispositif sont transférées, même si les directives CSS expriment que, dans la situation courante, 5 certaines des données ne sont pas affichées. En plus du fait que l'adaptation d'une conception réactive soit limitée à la taille de la fenêtre, un inconvénient de l'approche « Responsive Design » est que, au vu de la taille supérieure des fichiers CSS et HTML, les temps de téléchargement 10 des pages web peuvent être accrus, et que les performances du dispositif sur lequel l'interface utilisateur est affichée sont aussi réduites. En outre, le fait de développer une interface utilisateur sur la base de cette approche conceptuelle est complexe et consommatrice de temps. 15 Il existe donc un problème technique pour permettre qu'une grande gamme de versions d'interface soit accessible, sans augmenter de façon significative les coûts de stockage de données, de développement et de maintenance. Résumé 20 Un objet de modes de réalisation de la présente description est de résoudre au moins partiellement un ou plusieurs problèmes de l'art antérieur. Selon un aspect, on prévoit un système pour générer une interface d'utilisateur, 25 d'utilisateur, le système UI, à exécuter sur un dispositif comprenant : un ou plusieurs dispositifs mémoires mémorisant des caractéristiques associées au dispositif d'utilisateur, à un ou plusieurs utilisateurs du dispositif d'utilisateur et/ou à l'environnement du dispositif d'utilisateur ; et un dispositif de traitement adapté à générer 30 du code UI pour mettre en oeuvre l'UI : en générant une premiété portion du code UI en utilisant une ou plusieurs premières transformations sélectionnées sur la base d'une ou plusieurs des caractéristiques ; en générant une deuxième portion du code UI en utilisant une ou plusieurs deuxièmes transformations 35 sélectionnées sur la base d'une ou plusieurs des caracté- 3038744 B13842 FR 5 ristiques ; et en assemblant au moins les première et deuxième portions pour générer le code UI. Selon un mode de réalisation, lesdits un ou plusieurs dispositifs mémoires mémorisent en outre un contenu dynamique à 5 représenter par l'UI, et le dispositif de traitement est adapté à sélectionner lesdites une ou plusieurs premières et deuxièmes transformations en outre sur la base du contenu dynamique. Selon un mode de réalisation, les caractéristiques comprennent une ou plusieurs caractéristiques parmi : une 10 indication de la taille de l'afficheur du dispositif d'utilisateur ; une indication d'au moins un langage de programmation d'UI compatible avec le dispositif d'utilisateur ; une indication d'un niveau de lumière ambiante détecté par le dispositif d'utilisateur ; une indication d'un niveau de bruit 15 ambiant détecté par le dispositif d'utilisateur ; une indication d'un niveau d'expertise de l'utilisateur du dispositif d'utilisateur ; une indication de la langue de l'utilisateur du dispositif d'utilisateur ; et une indication du niveau de la vue de l'utilisateur du dispositif d'utilisateur. 20 Selon un mode de réalisation, le dispositif d'utilisateur comprend un ou plusieurs éléments paLmi : un détecteur de lumière ambiante pour détecter le niveau de lumière ambiant ; un microphone pour détecter le niveau de bruit ambiant ; et un dispositif de localisation pour détecter la 25 position du dispositif d'utilisateur. Selon un mode de réalisation, l'UI est une interface audio. Selon un mode de réalisation, l'UI est une interface utilisateur graphique, et chacune des première et deuxième 30 portions du code UI génère une fenêtre élémentaire correspondante de l'interface d'utilisateur graphique. Selon un mode de réalisation, au moins l'une des première et deuxième portions du code UI met en oeuvre un élément de saisie d'utilisateur pour permettre à un utilisateur 35 d'introduire une sélection. 3038744 B13842 FR 6 Selon un mode de réalisation, le dispositif de traitement est en outre adapté à générer un code d'entête et un code de terminaison du code UI. Selon un mode de réalisation, pendant l'exécution du 5 code UI par le dispositif d'utilisateur, le dispositif de traitement est en outre adapté à recevoir une ou plusieurs caractéristiques modifiées et à adapter le code UI sur la base des caractéristiques modifiées. Selon un mode de réalisation, l'adaptation du code UI 10 sur la base des caractéristiques modifiées est une adaptation globale du code UI comprenant la régénération de la totalité du code UI. Selon un mode de réalisation, le dispositif de traitement est adapté à identifier au moins la première portion 15 du code UI à adapter sur la base des caractéristiques modifiées, et l'adaptation du code UI comprend une adaptation locale du code UI dans laquelle la première portion du code UI est adaptée mais pas la deuxième port ion. Selon un mode de réalisation, le dispositif de 20 traitement est adapté à sélectionner les première et deuxième transformations en calculant une distance par rapport à un volume Vi correspondant à chaque transformation sur la base de l'équation suivante : d(C,V) = n mina Kic -KlViminKic Kivimax I) -12 2 5 [(Kic Kivimin ^ Kic Kivimax) ? 0 : JTKi 1=1 Kimax Kimin où Kic est une valeur courante de chacune des caractéristiques Ki, chaque volume Vi est défini par des valeurs minimum et maximum de chaque caractéristique K1 à Kn de la façon suivante : Vi= , et 30 chaque caractéristique Ki est associée à une valeur maximum Kimax et une valeur minimum Kimin, et ni« est un coéfficient de pondération. 3038744 B13842 FR 7 Selon un mode de réalisation, le système est mis en oeuvre : dans le dispositif d'utilisateur ; et/ou dans un serveur distant agencé pour communiquer avec le dispositif d'utilisateur par l'intermédiaire d'un ou plusieurs réseaux 5 intermédiaires. Selon un autre aspect, on prévoit un procédé pour générer une interface d'utilisateur, UI, à exécuter par un dispositif d'utilisateur, le procédé comprenant : générer du code UI pour mettre en oeuvre l'UI : en générant une première 10 portion du code UI en utilisant une ou plusieurs premières transformations sélectionnées sur la base d'une ou plusieurs caractéristiques associées au dispositif d'utilisateur, à un ou plusieurs utilisateurs du dispositif d'utilisateur et/ou à l'environnement du dispositif d'utilisateur ; en générant une 15 deuxième portion du code UI en utilisant une ou plusieurs deuxièmes transformations sélectionnées sur la base d'une ou plusieurs des caractéristiques ; et en assemblant au moins les première et deuxième portions pour générer le code UI ; et exécuter le code UI par le dispositif d'utilisateur. 20 Selon un mode de réalisation, l'assemblage d'au moins les première et deuxième portions pour générer le code UI comprend la génération d'un code d'entête et d'un code de terminaison du code UI. Selon un mode de réalisation, la première portion de 25 code correspond à une fenêtre élémentaire de l'interface d'utilisateur, et la génération de la première portion de code comprend la génération d'un entête de code d'un élément de GUI (interface d'utilisateur graphique) et d'une terminaison de code d'un élément de GUI. 30 Selon un autre aspect, on prévoit un support de stockage lisible par un ordinateur mémorisant sur lui des instructions qui, lorsqu'elles sont exécutées par un dispositif de traitement, mettent en oeuvre le procédé susmentionné. 3038744 B13842 FR 8 Brève description des dessins Les caractéristiques et avantages susmentionnés, et d'autres, apparaîtront clairement à la lecture de la description détaillée suivante de modes de réalisation, donnés à titre 5 d'illustration et non de limitation en référence aux dessins joints dans lesquels : la figure 1 illustre schématiquement un exemple de système pour fournir une interface utilisateur à un dispositif d'utilisateur ; 10 la figure 2 illustre schématiquement un système pour fournir une interface utilisateur à un dispositif d'utilisateur selon un exemple de réalisation de la présente description ; la figure 3 illustre schématiquement un dispositif d'utilisateur selon un exemple de réalisation ; 15 la figure 4A représente une interface utilisateur graphique selon un exemple de réalisation ; la figure 4B représente une fenêtre élémentaire d'introduction de données de l'interface de la figure 4A selon un exemple de réalisation ; 20 la figure 4C représente des fenêtres élémentaires d'identification de l'interface de la figure 4A selon plusieurs exemples de réalisation ; les figures 5A, 5B et 5C sont des organigrammes illustrant des opérations dans un procédé pour générer une 25 interface utilisateur selon un exemple de réalisation ; la figure 6 est un schéma représentant des catégories d'interfaces utilisateurs adaptées à des niveaux de lumière, à l'expertise de l'utilisateur, et à la surface d'affichage, selon un exemple de réalisation ; 30 la figure 7A est un schéma représentant des volumes dans un espace monodimensionnel selon un exemple de réalisation ; la figure 7B est un schéma représentant des volumes dans un espace monodimensionnel selon un autre exemple de 35 réalisation ; 3038744 B13842 FR 9 la figure 7C est un schéma représentant des volumes dans un espace bidimensionnel selon un exemple de réalisation ; la figure 8 est un organigramme illustrant des opérations dans un procédé pour générer une interface 5 utilisateur selon un exemple de réalisation ; les figures 9A et 9B sont des organigrammes représentant des opérations dans un procédé de sélection d'un volume magnétique sur la base d'un calcul de distance selon un exemple de réalisation ; 10 la figure 10A est un organigramme illustrant un procédé d'adaptation dynamique d'une interface utilisateur selon un exemple de réalisation ; la figure 10B est un organigramme illustrant des étapes d'une opération de la figure 10A de 15 contexte selon un exemple de réalisation ; la figure 10C est un organigramme étapes d'une opération de la figure 10A pour interface utilisateur préexistante selon réalisation ; 20 la figure 10D étapes d'une opération fonctionnement défectueux la figure 10E étapes d'une opération 25 fonctionnement défectueux Description détaillée Bien qu'on décrive surveillance de illustrant des sélectionner une un exemple de est un organigramme illustrant des de la figure 10A pour gérer un selon une approche centralisée ; et est un organigramme illustrant des de la figure 10A pour gérer un selon une approche distribuée. ici des modes de réalisation faisant référence à une interface utilisateur graphique (GUI), il sera clair pour l'homme de l'art que les techniques décrites 30 ici pourraient être appliquées à d'autres types d'interfaces utilisateurs, comme des interfaces basées entièrement ou partiellement sur du son, comme une interface vocale interactive. La figure 1 illustre schématiquement un exemple de 35 système 100 pour fournir une interface utilisateur graphique 3038744 B13842 FR 10 selon une solution similaire à celle décrite dans la section d'art antérieur susmentionnée. Le système comprend un certain nombre de dispositifs d'utilisateurs, comme un ordinateur portable 102, un smartphone 104, et une montre à capacité 5 internet 106. Chaque dispositif d'utilisateur 102, 104, 106 comprend un afficheur pour afficher un GUI. Par exemple, chaque dispositif d'utilisateur 102, 104, 106 peut exécuter un navigateur web agencé pour communiquer avec un serveur distant (SERVER) 108 par l'intermédiaire d'un ou 10 plusieurs réseaux intermédiaires 110 comprenant par exemple le réseau internet. Un navigateur web est une application logicielle, chargée sur un dispositif d'utilisateur, qui permet d'accéder à des informations par l'intermédiaire de pages web fournies par un serveur distant. Le navigateur web amène des 15 ressources d'information à un utilisateur, permettant à l'utilisateur de visualiser les informations, d'introduire des données, et d'accéder à d'autres informations en navigant sur d'autres pages. Le serveur distant (SERVER) 108 transmet par exemple des pages web aux dispositifs d'utilisateurs 102, 104, 20 106 afin d'afficher un contenu et de recevoir des sélections faites par l'utilisateur. Les pages web sont par exemple mémorisées en format HTML par un ou plusieurs dispositifs mémoires (MEMORY) 112 au niveau du serveur distant 108. Dans l'exemple de la figure 1, la mémoire 112 mémorise différentes 25 versions de chaque page web, chaque version assurant une interface utilisateur graphique (GUI) différente, GUI 1 à GUI N. Chacune de ces interfaces est par exemple adaptée à un type différent de dispositif d'utilisateur, d'expertise de l'utilisateur et/ou d'environnement. Bien que le temps de 30 réponse soit relativement court pour la transmission d'une version appropriée des versions de la page web vers un dispositif d'utilisateur demandeur, lorsque le nombre N de versions GUI devient relativement élevé, il y aura une augmentation correspondante des ressources mémoires nécessaires 35 pour stocker ces interfaces. 3038744 B13842 FR 11 En plus ou à la place, chaque dispositif d'utilisateur 102, 104, 106 est par exemple agencé pour exécuter une ou plusieurs applications logicielles. En association avec chaque application logicielle, le dispositif d'utilisateur 102, 104, 5 106 mémorise par exemple N interfaces GUI1 à GUIN (non illustré en figure 1). Pour prendre un exemple, il peut être souhaité que les différents GUI prennent en compte les caractéristiques variables suivantes : 10 Caractéristiques du dispositif : - 4 tailles d'affichage : montre, smartphone, tablette, PC ; - 5 langages de programmation : Objective C sur Windows, AppKit sur MacOs, UIKit sur iOS, Java sur 15 Android et une version HTML pour les autres cas ; Caractéristiques de l'utilisateur : - 5 langues écrites : français, anglais, allemand, italien, espagnol ; - 5 niveaux d'expérience de l'utilisateur : novice, 20 débutant, compétent, performant, expert ; - 4 types de qualification d'utilisateur : électricien, plombier, ingénieur en électronique, spécialiste réseau ; Caractéristiques d'environnement : 25 - 3 niveaux de lumière ambiante : faible, moyen et fort. Dans le cas où les GUI sont stockés au niveau d'un serveur distant et mis à la disposition de n'importe quel type de dispositif, le développement d'un GUI correspondant à chaque 30 combinaison possible de ces caractéristiques nécessiterait la création d'un nombre N d'interfaces égal à (nombre de tailles)*(nombre de langages de programmation)*(nombre de langues écrites)*(nombre de niveaux d'expérience)*(nombre de types de qualification d'utilisateur)*(nombre de niveaux de 35 lumière ambiante), en d'autres termes 4*5*5*5*4*3 = 6000 3038744 B13842 FR 12 versions du GUI. En supposant qu'une application ou un site web comprennent 100 GUI, en d'autres termes 100 pages web ou fenêtres, cela conduirait à un total de 600 000 interfaces. Les besoins en stockage pour ces nombreuses interfaces seraient 6000 5 fois ceux des 100 GUI, et le coût de développement et de maintenance serait excessif. Dans le cas où la sélection entre les GUI se fait de façon native sur le dispositif lui-même, le nombre de versions de GUI pourrait être déjà limité à un type donné de dispositif 10 et à un langage de programmation donné, ce qui diviserait par 20, dans l'exemple précédent, le nombre de versions devant être disponibles. Cependant, le nombre de versions de GUI serait encore de 300, ce qui est susceptible de dépasser la capacité de stockage disponible d'une montre à capacités internet ou d'un 15 smartphone. La figure 2 illustre schématiquement un exemple de système 200 pour fournir une interface utilisateur selon un exemple de réalisation de la présente description. Selon l'exemple de réalisation de la figure 2, des interfaces 20 utilisateurs (UI) adaptées sont générées par un serveur 208 et transmises aux dispositifs d'utilisateurs (non illustrés en figure 2). Comme dans le système 100 de la figure 1, le système 200 peut communiquer avec un ou plusieurs dispositifs 25 d'utilisateurs par l'intermédiaire d'un ou plusieurs réseaux intermédiaires 110 comme l' internet. Le système 200 comprend le serveur 208 et un ou plusieurs dispositifs mémoires (MEMORY) 212 stockant des profils d'utilisateurs ou de dispositifs 1 à N (USER/DEVICE PROFILE1 à USER/DEVICE PROFILEN), comme on va le 30 décrire plus en détail ci-après. Le serveur 208 comprend par exemple une interface de communication (COMMS INTERFACE) 220 pour communiquer avec les dispositifs d'utilisateurs par l'intermédiaire des réseaux intermédiaires 110. L'interface de communications 220 est 35 couplée à un module de génération d'UI 222. Le module 222 est 3038744 B13842 FR 13 par exemple mis en oeuvre par du logiciel. Par exemple, le module 222 comprend un dispositif de traitement (P) 224 comprenant un ou plusieurs processeurs sous le contrôle d'instructions mémorisées dans une mémoire d'instructions (INSTR MEM) 226. Le 5 module 222 comprend aussi par exemple une ou plusieurs mémoires (MEMORY) 228 mémorisant le contenu dynamique (DYNAMIC CONTENT) d'un UI, et des transfolmations (TRANSFORMATIONS) utilisées pendant la génération de l'UI, comme on va le décrire plus en détail dans la suite. 10 En fonctionnement, le module de génération d'UI 222 génère par exemple des UI, pratiquement en temps réel, en réponse à des requêtes provenant de dispositifs d'utilisateurs. Par exemple, pour chaque dispositif d'utilisateur, et/ou pour chaque utilisateur, la mémoire 212 mémorise par exemple un 15 profil indiquant des caractéristiques concernant le dispositif d'utilisateur, comme le type de dispositif, la taille de l'écran d'affichage, et d'autres capacités du dispositif. La mémoire 112 mémorise aussi par exemple des caractéristiques concernant l'utilisateur, comme sa langue préférée, son niveau d'expertise, 20 et une indication d'exigences spécifiques de l'utilisateur, comme une taille de texte plus grande pour des utilisateurs ayant une mauvaise vue, etc. Par exemple, pour un dispositif d'utilisateur donné, il pourrait y avoir une pluralité de profils d'utilisateurs, chacun correspondant à chaque 25 utilisateur qui peut se servir du dispositif. En plus ou à la place, pour chaque utilisateur, il pourrait y avoir une pluralité de profils de dispositifs, chacun correspondant à chaque dispositif d'utilisateur que l'utilisateur peut utiliser pour accéder à des pages web. 30 Le module de génération d'UI 222 génère par exemple des UI sur la base du profil de l'utilisateur et/ou du dispositif demandant un accès à une page web/UI, et sur la base d'une ou plusieurs caractéristiques d'environnement, qui sont par exemple reçues du dispositif d'utilisateur. Optionnellement, 35 le module de génération d'UI 222 adapte aussi l'UI sur la base 3038744 B13842 FR 14 d'un contenu dynamique récupéré par le serveur 208 et qui doit être affiché à l'utilisateur. L'adaptation de l'UI peut être décrite comme étant « magnétique » dans le sens où l'UI générée est par exemple celle qui correspond le plus à un contexte 5 courant, en d'autres termes à des caractéristiques courantes de dispositif, d'utilisateur et/ou d'environnement. La figure 3 illustre schématiquement un dispositif d'utilisateur 300 selon un exemple de réalisation. Comme cela est illustré, le dispositif d'utilisateur 300 comprend par 10 exemple une interface de communication (COMMS INTERFACE) 302 permettant des communications avec le serveur distant 208. En outre, le dispositif 300 comprend par exemple un dispositif de traitement 304 comprenant un ou plusieurs processeurs sous le contrôle d'instructions mémorisées dans une mémoire d'ins- 15 tractions (INSTR MEM) 306, les processeurs 304 réalisant les fonctions du dispositif mobile. Parmi les applications mémorisées par la mémoire 306, un navigateur web permet par exemple de visualiser des pages web sur un afficheur (DISPLAY) 307 du dispositif d'utilisateur En plus ou à place, d'autres 20 types d'applications mémorisées par la mémoire 306 peuvent permettre que d'autres types d'UI soient affichés à un utilisateur. Le dispositif d'utilisateur 300 comprend par exemple un ou plusieurs détecteurs, comme un détecteur de lumière 25 ambiante (AMBIENT LIGHT DETECTOR) 308, un microphone (MICROPHONE) 310, et un dispositif de localisation (GPS) 312. Par exemple, le détecteur dé lumière ambiante 308 indique le niveau de luminosité à utiliser pour l'UI. Les données provenant du microphone indiquent par exemple si l'utilisateur est dans un 30 environnement calme comme un bureau, ou dans un environnement bruyant conme dans des transports publics. Le GPS 312 peut par exemple indiquer la position du dispositif d'utilisateur et/ou la vitesse avec laquelle l'utilisateur se déplace, ce qui pourrait influencer la façon dont l'UI est généré pour ce 35 dispositif d'utilisateur. 3038744 B13842 FR 15 Le dispositif d'utilisateur 300 peut recevoir des interfaces d'utilisateur, comme des pages web, générées par le serveur distant 208. Dans un tel cas, pour aider à cette génération, des données capturées par un ou plusieurs des 5 détecteurs 308, 310, 312 sont par exemple transmises au serveur distant 208 et utilisées pour définir le profil du dispositif 300 mémorisé dans la mémoire 212. En plus ou à la place, le dispositif d'utilisateur 300, et en particulier le dispositif de traitement 304 sous le 10 contrôle de la mémoire d'instructions 306, peut lui-même générer des interfaces utilisateurs adaptées. Pour cela, le dispositif d'utilisateur 300 comprend par exemple un ou plusieurs dispositifs mémoires (MEMORY) 314, qui pourraient être la même mémoire ou une mémoire différente de la mémoire d'instructions 15 306, et qui par exemple mémorisent un profil d'utilisateur et/ou de dispositif (USER/DEVICE PROFILE) 316 et des transformations (TRANSFORMATIONS) utilisées pendant la génération de l'UI, comme on va le décrire plus en détail dans la suite. Le profil de l'utilisateur et/ou du dispositif peut inclure une ou plusieurs 20 lectures provenant des détecteurs 308, 310 et 312. En plus ou à la place, le profil de l'utilisateur et/ou du dispositif peut inclure d'autres caractéristiques pertinentes concernant le dispositif d'utilisateur 300 et/ou son environnement, comme une indication des dimensions de l'afficheur 307, une indication de 25 l'espace de stockage mémoire disponible du dispositif pour mettre en tampon des pages web, une indication de la puissance de traitement desdits un ou plusieurs processeurs 304, une indication du niveau de lumière ambiante, etc. Dans certains modes de réalisation, ces caractéristiques peuvent en plus être 30 transmises périodiquement au serveur distant 208 pour former le profil de dispositif associé au dispositif d'utilisateur 300. La figure 4A illustre un exemple d'interface utilisateur graphique 400, qui est par exemple généré par le module de génération d'UI 222, ou par le dispositif de 35 traitement 304 du dispositif d'utilisateur 300. Le GUI 400 a par 3038744 B13842 FR 16 exemple la forme d'une page web au format de fichier HTML, ou d'un autre langage de programmation approprié. Le GUI 400 est représenté à l'intérieur d'une frontière 401 représentant la limite extérieure de la fenêtre UI globale formant le GUI 400. 5 Lorsque le GUI 400 est affiché sur un afficheur, cette fenêtre globale 401 peut être entièrement visible sur l'afficheur, ou bien seulement une partie de cette fenêtre peut être visible, et l'utilisateur peut naviguer dans la fenêtre 401, par exemple en provoquant un défilement en utilisant une souris ou en touchant 10 un écran tactile. Le GUI 400 comprend par exemple des fenêtres élémentaires à l'intérieur de la fenêtre GUI globale, chaque fenêtre élémentaire comprenant un ou plusieurs éléments d'interface comme des titres, des boîtes de dialogue, des 15 boutons à cliquer, etc. Dans l'exemple de la figure 4A, le GUI fou rnit, par exemple en réponse à une requête d'utilisateur faite en utilisant une page web séparée, une liste de cinémas dans une zone de 1 kilomètre autour du dispositif d'utilisateur. Cela est 20 indiqué dans une fenêtre élémentaire 402, ayant le titre « Cinémas dans un rayon de 1 Km ». Le GUI 400 comprend par exemple un contenu dynamique dans une fenêtre élémentaire 404, qui par exemple indique une liste 406 de cinémas (CINEMA 1 à CINEMA J), une liste 407 des 25 distances de chaque cinéma par rapport à l'utilisateur, et une liste 408 des adresses de chaque cinéma. Un formulaire de réservation de tickets de cinéma 410 est aussi par exemple prévu sur le GUI 400, permettant à un utilisateur du dispositif d'utilisateur de réserver des tickets 30 en ligne pour aller voir un film passant dans un des cinémas. Le formulaire 410 comprend par exemple une fenêtre élémentaire 412 répétant la liste des cinémas identifiés, chacun muni d'une case de sélection 413 permettant à l'utilisateur de sélectionner l'un des cinémas. Une fenêtre élémentaire d'introduction de date et 35 d'heure, 414, permet par exemple à l'utilisateur de sélectionner 3038744 B13842 FR 17 une heure et une date pour le film. Une fenêtre élémentaire 416 fournit une boîte de sélection de films pour présenter, en réponse au fait que l'utilisateur tape une ou plusieurs lettres du film, une liste 417 de films disponibles dont le nom commence 5 par ces lettres. Une fenêtre élémentaire d'identification 418 est aussi par exemple prévue dans le GUI 400, et est constituée de boîtes d'introduction de texte où l'utilisateur peut introduire un nom d'utilisateur et un mot de passe d'identification. Par exemple, 10 en s'identifiant sur le site web, des données de compte d'utilisateur préenregistrées, comme des détails de carte de paiement, peuvent être récupérées pour permettre l'achat d'un ticket de cinéma. C'est par exemple le module de génération d'UI 222 du 15 serveur distant 208, ou du dispositif d'utilisateur 300, qui sélectionne le format et/ou le type de fenêtre élémentaire 402, 404, 412, 414, 416 et 418, sur la base de caractéristiques du dispositif d'utilisateur, de l'utilisateur et/ou de l'environnement. Par exemple, chacune des fenêtres élémentaires 402, 404, 20 412, 414, 416 et 418 est générée sur la base de caractéristiques telles que les dimensions de l'afficheur du dispositif d'utilisateur, du fait que l'afficheur est un écran tactile, du fait qu'une souris est ou pas disponible, et/ou de l'expertise de l'utilisateur pour réaliser ce type d'introduction de 25 données. En outre, bien que cela ne soit pas représenté en figure 4A, dans certains modes de réalisation, la couleur et/ou le contraste du GUI 400 sont adaptés sur la base du niveau de lumière ambiante détecté par le dispositif d'utilisateur. Par exemple, dans certains modes de réalisation, le format de 30 fichier HTML peut permettre de définir un réglage de luminosité pour contrôler la luminosité de l'afficheur du dispositif d'utilisateur. La figure 4B illustre un exemple de variante d'une fenêtre élémentaire d'introduction de date 414' qui pourrait se 35 substituer à la fenêtre élémentaire 414 dans une version 3038744 B13842 FR 18 différente du GUI 400. Par exemple, la fenêtre élémentaire d'introduction de date 414 de la figure 4A est adaptée pour les utilisateurs avancés, et pelliet d'introduire une date et une heure. La fenêtre élémentaire d'introduction de date 414' est 5 par exemple destinée à des utilisateurs moins compétents, et ne permet qu'une sélection de la date. La figure 4C illustre des exemples de la mise en oeuvre de la fenêtre élémentaire d'identification 418 qui pourrait être utilisée dans le GUI 400. 10 Par exemple, une fenêtre élémentaire 420 selon une mise en oeuvre minimum comprend seulement une boîte d'introduction de texte 422 permettant à un utilisateur d'introduire des données d'identification et une autre boîte d'introduction de texte 424 permettant à un utilisateur d'introduire un mot de 15 passe, et un petit bouton 426, que l'utilisateur peut cliquer en utilisant une souris, ou toucher sur un écran tactile, afin de soumettre les données qui ont été introduites. Cette mise en oeuvre est par exemple appropriée pour un très petit afficheur, et pour des utilisateurs raisonnablement avancés, puisqu'il n'y 20 a pas d'indication concernant les données qui sont requises dans chaque boîte de texte. Une fenêtre élémentaire légèrement plus grande 430 mettant en oeuvre la fenêtre d'identification 418 comprend les mêmes éléments que la mise en oeuvre 420, mais avec les mots 25 « Identifiant : » et « Mot de passe : » ajoutés. Cette mise en oeuvre est par exemple appropriée pour des utilisateurs moins avancés que pour la fenêtre 420, mais nécessite aussi un afficheur légèrement plus grand. Les fenêtres élémentaires 440 et 450 fournissent des 30 mises en oeuvre progressivement de plus en plus grandes de la fenêtre d'identification 418, contenant les boîtes d'introduction de texte 422, 424 et le bouton 426, les deux mises en oeuvre comprenant l'instruction "Veuillez-vous identifier :", ce qui rend ces interfaces adaptées à des utilisateurs encore moins 35 compétents. La fenêtre élémentaire 450 comprend en plus un logo 3038744 B13842 FR 19 de société 452 et une image d'arrière-plan 454, nécessitant un écran d'affichage relativement La figure 5A est opérations dans un procédé de 5 de réalisation. Ces opérations module de génération d'UI 222 instructions de logiciel d'instructions 226. grand. un organigramme illustrant des génération d'UI selon un exemple sont par exemple réalisées par le de la figure 2, en exécutant des mémorisées dans la mémoire Coune cela est représenté par un bloc 501 en figure 10 5A, on suppose que l'interface d'utilisateur est représentée : par un modèle de domaine représentant les concepts manipulés sur le GUI. En prenant l'exemple du GUI 400 de la figure 4, les concepts pourraient inclure les cinémas ; par un modèle de contexte représentant tous les 15 paramètres à prendre en compte pendant le processus d'adaptation de l'UI, comme la luminosité, la taille de l'écran, le niveau de la vue de l'utilisateur, etc... ; par une ou plusieurs transformations, et un modèle définissant l'interface utilisateur, qui est soit un modèle en 20 tâches, représentant l'interface sous forme d'une série de tâches, soit un modèle d'UI abstrait qui représente les divers espaces de travail dans l'UI et les possibilités de navigation entre eux, soit un modèle d'UI concret qui représente les intervenants sélectionnés, comme des intervenants composites 25 (par exemple un panneau), ou des intervenants élémentaires (par exemple un champ de texte), des espaces de travail de l'UI abstrait. Dans une opération 502, le niveau d'abstraction du modèle d'UI est détecté. Par exemple, chaque type de modèle est 30 associé à un méta-modèle donné décrivant le modèle, et le système est capable de détecter le type du modèle sur la base du méta-modèle. Dans le cas où le modèle d'UI est un modèle en tâches, dans une opération 503, le modèle est transformé en un modèle 35 d'UI abstrait, et l'opération suivante est l'opération 504. 3038744 B13842 FR 20 Dans le cas où le modèle d'UI est un modèle d'UI abstrait, ou à la suite de l'opération 503, le modèle est transformé en un modèle d'UI concret, et l'opération suivante est l'opération 505. 5 Dans le cas où le modèle d'UI est un modèle d'UI concret, ou à la suite de l'opération 504, le modèle est transformé en code pour exécuter l'UI, par exemple au format de fichier HTML ou similaire. La génération de code de l'opération 505 va maintenant 10 être décrite plus en détail en faisant référence aux figures 5B et 5C. La figure 5B est un organigramme illustrant un exemple d'opérations dans un procédé de génération du code de l'UI au niveau global, en d'autres termes pour la fenêtre UI globale, 15 colitie la fenêtre 401 dans l'exemple de la figure 4A. Dans une opération 506, une OU plusieurs transformations concernant la fenêtre UI globale sont sélectionnées. Par exemple, chaque transformation génère une fenêtre UI globale ayant des dimensions particulières, un modèle de 20 couleur particulier, un agencement particulier des fenêtres élémentaires, et/ou d'autres éléments caractéristiques. La sélection d'une transformation va maintenant être décrite plus en détail. Dans une opération 507, un entête de code GUI global 25 du code représentant le GUI est généré. Dans une opération suivante 508, le corps du code GUI global est généré en utilisant lesdites une ou plusieurs transformations sélectionnées. Le corps est généré par l'exécution d'une ou plusieurs tâches élémentaires pour générer 30 chaque fenêtre élémentaire. Ces tâches élémentaires sont appelées éléments enfants. Dans une opération 510, on détermine s'il y a un élément enfant à traiter. Si oui, l'opération suivante est l'opération 511, dans laquelle le code de l'élément enfant est 35 généré, comme on va le décrire en référence à la figure 5C. Le 3038744 B13842 FR 21 procédé revient ensuite à l'opération 510. Dans l'autre cas, si tous les éléments enfants ont été traités, l'opération suivante est une opération 512 dans laquelle une terminaison du code GUI global est générée afin d'achever la représentation du code du 5 GUI. Dans une opération 513, on détermine ensuite si le code nécessite une compilation. Si oui, le code est compilé dans une opération 514. Dans l'autre cas, si aucune compilation n'est 10 nécessaire, ou après l'opération 514, l'opération suivante est une opération 515, dans laquelle le fichier comprenant le code généré est transmis à un dispositif d'utilisateur pour être affiché. La figure 5C est un organigramme illustrant un exemple 15 d'opérations pour mettre en oeuvre l'opération 511 de la figure 5B afin de générer le code pour un élément enfant. Dans une opération 516, une ou plusieurs transformations sont sélectionnées afin de générer le code d'une fenêtre élémentaire du GUI, sur la base du contenu à afficher, et des 20 caractéristiques du profil d'utilisateur et/ou du dispositif et/ou de l'environnement (luminosité, bruit, etc.). Par exemple, pour au moins certaines des fenêtres élémentaires de l'interface utilisateur, il y a une pluralité de transfoLwations potentielles qui peuvent être utilisées afin de générer la 25 fenêtre élémentaire ayant des éléments adaptés à certaines caractéristiques du dispositif d'utilisateur, de l'environnement et/ou de l'utilisateur. La sélection d'une transformation peut impliquer un calcul d'une distance représentant l'étendue dans laquelle chaque transformation concorde avec les caracté- 30 ristiques, avec optionnellement l'application d'une pondération différente à chaque caractéristique. Un exemple de procédé pour sélectionner une transformation va être décrit plus en détail ci-après. Après la sélection de la transformation, dans une 35 opération 517, un entête d'élément de code GUI est généré. 3038744 B13842 FR 22 Dans une opération 518, un corps d'élément de code de GUI est alors généré en utilisant une ou plusieurs transformations sélectionnées. Dans une opération 519, on détermine s'il y a un 5 élément enfant à traiter. Si oui, l'opération suivante est l'opération 520, dans laquelle le code de l'élément enfant est généré. On revient ensuite à l'opération 519. Dans l'autre cas, si tous les éléments enfants ont été traités, l'opération suivante est l'opération 521, dans laquelle une terminaison 10 d'élément de code de GUI est générée afin d'achever la représentation en code de l'élément enfant du GUI global. Des techniques pour sélectionner les transformations à utiliser pour générer une ou plusieurs fenêtres élémentaires de l'UI, correspondant à l'opération 516 en figure 5C, vont 15 maintenant être décrites en faisant référence aux figures 6 à 9. La figure 6 illustre un exemple d'espace 3D de caractéristiques, dans lequel un niveau d'expertise d'utilisateur (USER EXPERTISE) est représenté sur l'axe x, un niveau de lumière ambiante (LIGHT LEVEL) est représenté sur l'axe y, et la 20 taille de l'affichage (DISPLAY SURFACE) est représentée sur l'axe z. Bien sûr, les caractéristiques présentes en figure 6 ne sont qu'un exemple, et en fonction de la fenêtre élémentaire UI à générer, des caractéristiques différentes pourraient être prises en compte. 25 Dans l'exemple de la figure 6, on suppose que, pour une fenêtre élémentaire UI donnée à générer, il y a trois transformations différentes possibles. Une première transfor- mation conduit à un composant élémentaire d'UI qui est approprié pour des niveaux de caractéristiques tombant dans un volume V1 30 de la figure 6, une deuxième transformation conduit à un composant élémentaire d'UI qui est approprié pour des niveaux de caractéristiques tombant dans un volume V2 de la figure 6, et une troisième transformation conduit à un composant élémentaire d'UI qui est approprié pour des niveaux de caractéristiques 35 tombant dans un volume V3 de la figure 6. 3038744 B13842 FR 23 Pour un niveau donné d'expertise de l'utilisateur, de niveau lumineux et de surface d'affichage, le module de génération d'UI 222 sélectionne par exemple la transformation associée aux volumes V1, V2 et V3 sur la base d'un calcul de 5 distance par rapport à chaque volume. On va maintenant décrire plus en détail des exemples de calculs de distance en faisant référence aux figures 7A, 7B et 7C. La figure 7A est un diagramme illustrant le cas de volumes monodimensionnels V1 et V2 pour une seule 10 caractéristique, chaque volume correspondant à une transformation donnée. La distance d(C,Vi) d'un point C par rapport à un volume Vi est par exemple considérée nulle si le point C tombe dans le volume, en d'autres termes si Vimin V2: Dans l'exemple de la figure 7C, un point Cl tombe dans le volume V1, et ainsi sa distance par rapport à ce volume est égale à 0. Cependant, le point C2 est dans la plage du volume V1 30 en ce qui concerne la caractéristique Kl, mais pas en ce qui concerne la caractéristique K2. Le point C3 n'est pas dans les' plages des volumes V1 ou V2 pour aucune des caractéristiques K1 et K2. Chacune des distances entre C2 et C3 et les volumes V1 et V2 est par exemple définie comme la plus petite longueur d'une 3038744 B13842 FR 25 ligne droite joignant un point situé dans le volume Vi au point C : d(C,Vi) =V(dKi(C,Vi) 4c1K2(CIVi)2) De préférence, lorsqu'on applique cette équation, les 5 valeurs des caractéristiques K1 et K2 ont été normalisées l'une par rapport à l'autre, par exemple sur une échelle de 0 à 100, où 0 correspond à la valeur la plus faible Kmin de la caractéristique K, et 100 correspond à la valeur la plus élevée Kma x de la caractéristique K. La formule pour la distance entre 10 un point C représentant un contexte courant et un volume V= , pour une caractéristique K= [KminrKmax] est ainsi : d(C,V)=(C/KminACKmax)?0:min(IC-Vi K1 i Kid Klmax Klmin Dans certains cas, la sélection de certains volumes pour des caractéristiques de certaines plages peut être 5 complètement empêchée. Par exemple, il pourrait être impossible qu'une certaine fenêtre élémentaire associée à un certain volume soit appliquée à un écran d'affichage qui est plus grand qu'une certaine taille. De tels volumes sont par exemple définis par : V- , où Limmin est la valeur la plus 10 faible d'une caractéristique K pour laquelle le volume V peut être sélectionné, et Limmax est la valeur la plus forte de la caractéristique K pour laquelle le volume V peut être sélectionné. Bien sûr, dans certains modes de réalisation, seule la limite inférieure Limmin ou seule la limite supérieure Limmax 15 pourrait être prévue. La figure 8 est un organigramme représentant un exemple d'opérations dans un procédé de création de modèles et de transformations pour générer une fenêtre élémentaire selon un exemple de réalisation. Ces opérations sont par exemple 20 réalisées par un concepteur pendant une phase de conception. Dans une opération 801, on identifie un ensemble de n caractéristiques pertinentes {Ki}n. Par exemple, cette opération implique de déterminer, pour le contenu donné à afficher, quelles sont les caractéristiques pertinentes qui peuvent 25 affecter la façon avec laquelle le contenu est affiché. Par exemple, lorsque le nombre d'éléments à afficher est supérieur à un certain nombre, la taille de l'afficheur du dispositif d'utilisateur peut devenir pertinente pour décider de la façon de représenter ce contenu. 30 Dans une opération 802, une plage de valeurs possibles, entre Kimin et Kimax, est récupérée ou définie pour chaque caractéristique, comme cela est représenté par ji=1 n 3038744 B13842 FR 27 I /n- Par exemple, chaque caractéristique peut prendre l'une des formes suivantes : - une valeur binaire, comme « vrai » ou « faux ». Exemple : une caractéristique définissant si le 5 dispositif d'utilisateur a ou pas un système de positionnement global ; - un classement ordonné de niveaux prédéfinis. Exemple : le niveau d'expertise d'un utilisateur, qui peut être défini parmi les niveaux « novice », 10 « débutant », « compétent », « expérimenté », et « expert » ; - une valeur dans une plage continue de nombres. Exemple : une valeur représentant le niveau lumineux ambiant, qui va par exemple de 0 (noir 15 absolu) à 120000 (soleil direct) ; - des valeurs discrètes. Exemple : les valeurs représentant la taille de l'afficheur, qui pourrait aller d'une valeur de diagonale la plus petite de 0,27 pouce jusqu'à une valeur de diagonale la plus 20 grande de 4015 pouces. Dans une opération 803, on définit des poids relatifs nki pour chaque caractéristique. Les poids sont définis sur la base du contenu. Par exemple, en fonction du contenu à afficher, la taille de l'afficheur du dispositif d'utilisateur peut avoir 25 une importance élevée lors de la définition de l'UI. Dans une opération 804, on définit une pluralité de volumes magnétiques Vi, par exemple en subdivisant chaque plage de caractéristique en deux ou plusieurs sous-plages, chaque volume magnétique correspondant à un vecteur d'une combinaison 30 de sous-plages sélectionnées. Dans une opération 805, on définit par exemple des conditions pour un fonctionnement effectif de chaque UI afin de spécifier les exigences fonctionnelles de l'UI et/ou des composants élémentaires de l'UI. Par exemple, si l'UI affiche la 35 température courante, il a besoin d'une connexion à un capteur 3038744 B13842 FR 28 de température pour obtenir des mesures de température. Si cette connexion est perdue, l'UI ne peut pas fonctionner correctement, et par exemple il produit une réaction comme l'affichage d'un message d'avertissement ou d'erreur. De telles conditions 5 fonctionnelles et de telles réactions peuvent être définies au niveau de l'UI ou au niveau composant élémentaire. Dans une opération 806, un ou plusieurs modèles et une ou plusieurs transformations sont conçus et générés ou créés d'une autre façon pour générer une fenêtre élémentaire d'UI 10 associée à chaque volume. Par exemple, les transformations qui comprennent des instructions utilisées par le module de génération d'UI ou par un dispositif d'utilisateur pendant la génération d'un UI, sont créées par un concepteur. En outre, des modèles de tâches, de domaines et de contextes sont par exemple 15 créés par un concepteur, et ces modèles sont aussi utilisés pendant la génération de l'UI. Le modèle de contexte peut être rempli par un concepteur sur la base de caractéristiques d'utilisateurs, ou par des programmes et/ou des capteurs, par exemple sur la base de géolocalisation. D'autres modèles, comme 20 le modèle d'UI abstrait et le modèle d'UI concret peuvent être générés automatiquement sur la base du modèle de tâche. La figure 9A est un organigramme illustrant des opérations dans un procédé de sélection de transformations pour générer un UI constitué d'une ou plusieurs fenêtres élémen- 25 taires. Ce procédé est par exemple réalisé pendant l'opération 516 de la figure 5C. Comme cela est représenté dans l'opération 901, on suppose qu'un processus de conception a fourni N caractéristiques de contextes K-----{ }n , et des trans- 30 formations pour générer des fenêtres élémentaires d'UI ayant des volumes magnétiques correspondants V={ }*, où * est un entier égal ou supérieur à 0 représentant le nombre de volumes. Dans une opération 902, une fonction "getTrans35 formation" est appelée, avec comme paramètres d'entrée le 3038744 B13842 FR 29 contexte courant C, les volumes magnétiques V, et les caractéristiques de contexte K avec leurs poids associés JTKL. Dans une opération 903, une variable "minDistance" est mise à l'infini, une valeur de résultat "Transformation" de la 5 fonction est mise à une valeur nulle, et une variable v est mise à 0. Dans une opération 904, on détermine si la variable v est inférieure à Card(V), en d'autres termes le nombre de volumes magnétiques. Si la réponse est non, les opérations 905 à 10 908 sont réalisées. Dans l'opération 905, une distance est calculée en appelant une autre fonction "magneticDistance", avec comme paramètres d'entrée le contexte courant C, le volume V[v], et les caractéristiques de contexte K. 15 Dans l'opération 906, on détermine si la distance déterminée dans l'opération 905 est inférieure à la valeur de la variable minDistance. Si oui, l'opération suivante est l'opération 907, dans laquelle la variable minDistance est mise égale à la valeur de distance, et la valeur de "Transformation" 20 est mise égale à la transformation associée au volume V[v]. Après l'opération 907, ou si dans l'opération 906 la distance n'est pas inférieure à la valeur de la variable minDistance, l'opération suivante est l'opération 908, dans laquelle la variable v est incrémentée, puis on revient à l'opération 904. 25 Lorsque la valeur du paramètre v n'est plus inférieure au nombre de volumes magnétiques V, l'opération après l'opération 904 est une opération 909, dans laquelle la valeur de la variable "Transformation" est retournée comme résultat. La figure 9B illustre un exemple d'opérations mettant 30 en oeuvre le calcul de distance de l'opération 905 de la figure 9A. Comme cela est représenté en 910, la' fonction est appelée avec des paramètres d'entrée C={Ci}n, vo1={ }n, où vol est l'un des volumes de 35 l'ensemble V de volumes, et K={ REVENDICATIONS1. Système pour générer une interface utilisateur (UI) à exécuter sur un dispositif d'utilisateur (300), le système comprenant : un ou plusieurs dispositifs mémoires (212, 228) 5 mémorisant des caractéristiques associées au dispositif d'utilisateur, à un ou plusieurs utilisateurs du dispositif d'utilisateur et/ou à l'environnement du dispositif d'utilisateur ; et un dispositif de traitement (224, 304) adapté à générer du code UI pour mettre en oeuvre l'UI : 10 en générant une première portion du code UI en utilisant une ou plusieurs premières transformations sélectionnées sur la base d'une ou plusieurs des caractéristiques ; en générant une deuxième portion du code UI en utilisant une ou plusieurs deuxièmes transformations sélec15 tionnées sur la base d'une ou plusieurs des caractéristiques ; et en assemblant au moins les première et deuxième portions pour générer le code UI. 2. Système selon la revendication 1, dans lequel 20 lesdits un ou plusieurs dispositifs mémoires (212, 228) mémorisent en outre un contenu dynamique à représenter par l'UI, et dans lequel le dispositif de traitement (224) est adapté à sélectionner lesdites une ou plusieurs premières et deuxièmes transformations en outre sur la base du contenu dynamique. 25 3. Système selon la revendication 1 ou 2, dans lequel les caractéristiques comprennent une ou plusieurs caractéristiques parmi : une indication de la taille de l'afficheur du dispositif d'utilisateur ; 30 une indication d'au moins un langage de programmation d'UI compatible avec le dispositif d'utilisateur ; une indication d'un niveau de lumière ambiante détecté par le dispositif d'utilisateur ; 3038744 B13842 FR 37 une indication d'un niveau de bruit ambiant détecté par le dispositif d'utilisateur ; une indication d'un niveau d'expertise de l'utilisateur du dispositif d'utilisateur ; une indication de la langue de l'utilisateur du dispositif d'utilisateur ; et une indication du niveau de la vue de l'utilisateur du dispositif d'utilisateur. 4. Système selon la revendication 3, dans lequel le 10 dispositif d'utilisateur comprend un ou plusieurs éléments parmi : un détecteur de lumière ambiante (308) pour détecter le niveau de lumière ambiante ; un microphone (310) pour détecter le niveau de bruit 15 ambiant ; et un dispositif de localisation (312) pour détecter la position du dispositif d'utilisateur. 5. Système selon l'une quelconque des revendications 1 à 4, dans lequel l'UI est une interface audio. 20 6. Système selon l'une quelconque des revendications 1 à 5, dans lequel l'UI est une interface utilisateur graphique, et dans lequel chacune des première et deuxième portions du code UI génère une fenêtre élémentaire correspondante de l'interface utilisateur graphique. 25 7. Système selon la revendication 6, dans lequel au moins l'une des première et deuxième portions du code UI met en oeuvre un élément de saisie d'utilisateur pour permettre à un utilisateur d'introduire une sélection. 8. Système selon l'une quelconque des revendications 1 30 à 7, dans lequel le dispositif de traitement (224, 304) est en outre adapté à générer un code d'entête et un code de terminaison du code UI. 9. Système selon l'une quelconque des revendications 1 à 8, dans lequel, pendant l'exécution du code UI par le 35 dispositif d'utilisateur, le dispositif de traitement (224, 304) 303S744 B13842 FR 38 est en outre adapté à recevoir une ou plusieurs caractéristiques modifiées et à adapter le code UI sur la base des caractéristiques modifiées. 10. Système selon la revendication 9, dans lequel 5 l'adaptation du code UI sur la base des caractéristiques modifiées est une adaptation globale du code UI comprenant la régénération de la totalité du code UI. 11. Système selon la revendication 9, dans lequel le dispositif de traitement est adapté à identifier au moins la première portion du code UI à adapter sur la base des caractéristiques modifiées, et dans lequel l'adaptation du code UI comprend une adaptation locale du code UI dans laquelle la première portion du code UI est adaptée mais pas la deuxième portion. 12. Système selon l'une quelconque des revendications 1 à 11, dans lequel le dispositif de traitement (224, 304) est adapté à sélectionner les premières et deuxièmes transformations en calculant une distance par rapport à un volume Vi correspondant à chaque transformation sur la base de l'équation suivante : d(C,V) = j n Milleic - Kivimin I, IKic - Kivi I) MM., 12 [(Kir > Kivi i A Kir Kivimax) ? 0 : 7T --K1 IL .0 - ' m n J Kimax - Kimin inl où Ki0 est une valeur courante de chacune des caractéristiques Ki, chaque volume Vi est défini par des valeurs minimum et maximum de chaque caractéristique K1 à Kn de la façon suivante : Vi= , èt dans lequel chaque caractéristique Ki est associée à une valeur maximum Kimax et une valeur minimum Kimin, et 7Ki est un coéfficient de pondération. 13. Système selon l'une quelconque des revendications 1 à 12, mis en oeuvre : dans le dispositif d'utilisateur ; et/ou 3038744 B13842 FR 39 dans un serveur distant (208) agencé pour communiquer avec le dispositif d'utilisateur par l'intermédiaire d'un ou plusieurs réseaux intermédiaires (110). 14. Procédé pour générer une interface d'utilisateur 5 (UI) à exécuter par un dispositif d'utilisateur (300), le procédé comprenant : générer du code UI pour mettre en oeuvre l'UI : - en générant une première portion du code UI en utilisant une ou plusieurs premières transformations 10 sélectionnées sur la base d'une ou plusieurs caractéristiques associées au dispositif d'utilisateur, à un ou plusieurs utilisateurs du dispositif d'utilisateur et/ou à l'environnement du dispositif d'utilisateur ; 15 - en générant une deuxième portion du code UI en utilisant une ou plusieurs deuxièmes transformations sélectionnées sur la base d'une ou plusieurs des caractéristiques ; et - en assemblant au moins les première et deuxième 20 portions pour générer le code UI ; et exécuter le code UI par le dispositif d'utilisateur. 15. Procédé selon la revendication 14, dans lequel l'assemblage d'au moins les première et deuxième portions pour générer le code UI comprend la génération d'un code d'entête et 25 d'un code de terminaison du code UI. 16. Procédé selon la revendication 14 ou 15, dans lequel la première portion de code correspond à une fenêtre élémentaire de l'interface d'utilisateur, et dans lequel la génération de la première portion de code comprend la génération 30 d'un entête de code d'un élément de GUI (interface d'utilisateur graphique) et d'une terminaison de code d'un élément de GUI. 17. Support de stockage lisible par un ordinateur mémorisant sur lui des instructions qui, lorsqu'elles sont exécutées par un dispositif de traitement, mettent en oeuvre le 35 procédé de l'une quelconque des revendications 14 à 16.