c outils de prototypage rapide multi- dispositifs : wcomp.net jean-yves tigli,...
TRANSCRIPT
COutils de Prototypage Rapide Multi-Dispositifs : Wcomp .NET
Jean-Yves Tigli, [email protected] Enseignant ChercheurUniversité de Nice Sophia Antipolis
Polytech’Nice Sophia AntipolisDépartement InformatiqueFilière Systèmes Embarqués et Applications Mobiles
Equipe Rainbow, laboratoire I3S UMR 6070 CNRS UNSA
C
Wcomp .NET (2004-2005)
Daniel Cheung Foo Wo,
[email protected] Rainbow
Samuel Weibel,
[email protected]énieur ESSI - Polytech Nice Sophia Antipolis
Wagner De Morais
[email protected] de Master recherche
ESSI - Polytech Nice Sophia Antipolis
Avec le soutien de
Et un grand nombre de projets d’étudiants du Département d’Informatique de l’EcolePolytechnique de l’Université de Nice Sophia Antipolis…
C
Partie 1 : Contexte de Travail
C Futur : un grand nombre de dispositifs
Exemples : Pour les ordinateurs « portables » du futur Pour les bâtiments
Contexte les systèmes Multi-dispositifs
CC
Wearable Computer
“Controllable by the user, is always on, always accessible and do not disturbs the user attention. [Mann]”
CC
Multi-dispositifs Alternatifs
Dispositifs d’entrée textuelle Chord Keyboard - Wrist Keyboard - Virtual keyboard
Dispositifs de pointage Essential Reality P5 Glove
CC
Multi-dispositifs Alternatifs
Dispositifs de sortie Eyeglasses
CC
Même problématique dans le BHT …
Collaboration avec le CSTB Sophia Antipolis
CC
Partie 2 : Notre Approche de RAD dans ce contexte …
CC
RAD dans les IHMs
Cycle en spyral
Bien connu Pour les GUI …
Mais aussi pour les systèmes multi-dispositifs en général
CC
RAD et Programmation Evénementielle
Programmation Evénementielle<< L’approche événementielle intervient
principalement dans l’interface entre le logiciel et l’utilisateur, mais aussi dans la liaison dynamique du logiciel avec le système, et enfin dans la sécurité. >>
CC
RAD et Programmation Visuelle Programmation Visuelle Deux approches :
Basée sur le Rendu Graphique (Visual Studio) Nous aide et simplifie notre tâche dans la construction
du dialogue homme-machine Approche multi-dispositifs [Phidget]
Basée sur le Graphe événementiel (notre approche)
Intéressante pour la perspectives multi-dispositifs car pas forcémment de fonction graphique [ICON, WComp]
CC
Approche Wcomp …
Objectifs :
Outils de programmation visuelle et événementielle orienté graphe événementiel
Utilisant des composants Mixtes logiciel/matériel
CC
Approche Wcomp …
Vers une méthodologie de RAD matériel / logiciel :
1. Connecter les dispositifs utilisés pour utiliser les composants logiciels associés
2. Construire, si besoin est, de nouveaux composants logiciels
3. Créer le graphe événementiel de l’application
CC
Partie 3 : Les outils Wcomp .Net
CC
Les Outils
Wcomp Dev Center Visual Studio Add-On
CC
Architecture Générale Wcomp Dev Center
Générateur de Code Import / Export XML Générateur de Bean SOAP
CC
Visual Studio Add-on : Bean .Net builder
using System; using WComp.Beans; namespace Bean2 { /// <summary> /// Description rsume de Class1. /// </summary> [Bean] public class Class1 { // // TODO: ajoutez ici les proprits et les mthodes de ce Bean // } }
CC
DEMO ….
Wcomp Dev Center Création d’un lien simple Connexion d’un lien incompatible
Visual Studio Add Ons Création d’un Beanet
Exemple : Texttospeech
CC
Partie 4 : Quelques éléments d’implémentation …
De Wcomp Java à .Net
CC
Les événements en Java Une première approche basée sur les
Beans en Java est le pattern « observateur » ou source/listener
CC
Les événements en .Net
Déjà pris en charge grâce à la délégation : Un abonné est une méthode Un événement est un délégué particulier
CC
La Délégation
Declarer un delegate
Instancier un delegate
Appeler un delegate
delegate void MyDelegate1(string s);delegate void MyDelegate1(string s);
MyDelegate1 a = new MyDelegate1(MyClass.Hello); MyClass p = new MyClass(); MyDelegate1 b = new MyDelegate1(p.AMethod);
MyDelegate1 a = new MyDelegate1(MyClass.Hello); MyClass p = new MyClass(); MyDelegate1 b = new MyDelegate1(p.AMethod);
a("World");a("World");
CC
Les événements Déclarer un événement
Souscrire à un événement
Emettre un événement
public delegate void MouseClickedEventHandler();public class Mouse { public static event MouseClickedEventHandler
MouseClickedHandler;}
public delegate void MouseClickedEventHandler();public class Mouse { public static event MouseClickedEventHandler
MouseClickedHandler;}
private void MouseClicked() {...}Mouse.MouseClickedHandler += new
MouseClickedEventHandler(MouseClicked);
private void MouseClicked() {...}Mouse.MouseClickedHandler += new
MouseClickedEventHandler(MouseClicked);
if (MouseClickedHandler != null) MouseClickedHandler();
if (MouseClickedHandler != null) MouseClickedHandler();
CC
Les attributs personnalisés
On peut étendre le .NET Framework avec ses propres attributs appelés attributs personnalisés
Ecrire une classe dérivant de System.Attribute
les informations contenues dans les métadonnées sont accessibles via les méthodes des classes proposées par l'espace de nom System.Reflection
CC
Les attributs personnalisés Déclaration d’un attribut personnalisé
Utilisation d’un attribut personnalisé
public class MyClass{ [MyAttribute] public virtual void MyMethod() { //... }}
public class MyClass{ [MyAttribute] public virtual void MyMethod() { //... }}
public class MyAttribute :Attribute{}
public class MyAttribute :Attribute{}
CC
Le Bean .Net Evénementsusing System; using System.ComponentModel; using WComp.Beans; namespace Bean4 { /// <summary> /// Description rsume de Class1. /// </summary> [Bean] public class Class1 { // delegate implicite de void EventHandler(object sender, EventArgs e) public event EventHandler MyEvent; // graphiquement ce qui sera fait : // MyEvent += new EventHandler(func) // avec private void func(object sender, EventArgs e)
Attribut Personnalisé
Evénement
CC
Le Bean .Net
Propriétés… // Nom de la propriété avec minuscule // variable de sauvegarde propriété protected int myprop = 1; //meta donnée : valeur par défaut propriété [DefaultValue(1)] // déclaration propriété : public <type> Nom public int Myprop { get { return myprop; } set { if (myprop < 1) { throw new ArgumentException("positif !"); } // mot clef value myprop = value; } } …
Propriété
Attribut Personnalisé
CC
Le Bean .Net
Méthodes
// méthodes public void MyStep(int val1, int val2) { if (myprop >= max) { myprop=1; MyEvent(this, null); } else myprop++; }
CC
Partie 5 : Application
Sur une idée d’Eric Mittelette (Microsoft
France)…
CC
Dirigeable : Evolution 1
http://www.plantraco.com/main.html
http://www.airpubimpact.com
CC
Dirigeable Wcomp .NET
CC
Partie 5 : Conclusion
CC
Limites de Wcomp .Net
Extension Compact .Net Framework : absence de mécanisme de réflexion
.Net Framework 2.0, enfin SerialCom en code managé !
…
CC
Perspectives de Wcomp .Net
[Pédagogie] Wearable Computer ou
Ordinateur Porté, Xybernaut MA V sous windows XP
[Recherche] Vers Wcomp supérieures
pour l’adaptation dynamique des applications
CC
Remerciements Pierre Louis Xech, MSR Eric Mittelette, Laurent Ellerbach,
Laurent Herbulot, Microsoft France …
Les étudiants de Polytech’ Nice Sophia Antipolis : Daniel, Samuel, Wagner, Geoffroy, etc.
CC
Quelques Références
Equipe Rainbow : http://rainbow.essi.fr Wcomp : http://parpaouin.essi.fr
Wcomp Java Wcomp .NET
Mann Steeve, http://wearcam.org/steve.html Phidget : http://www.phidgets.com/ ICON : http://liihs.irit.fr/dragice/icon/
Steve Mann,” Definition of Wearable Computer”,http://wearacam.org/wearcompdef.html
“What's a Wearable?”, http://wearables.www.media.mit.edu/projects/wearables/
M. Billinghurst, J. Bowskill, N. Dyer and J. Morphett, “An Evaluation of Wearable Information Spaces”