Les articles de ESSI# - Microsoft Academic Days 2003 à Paris

RACINE

Page d'origine sur ESSI# : http://www.essisharp.ht.st !!!


Journées Académiques Microsoft Research 2003 à Paris

Introduction

Je vais essayer ici de vous présenter un compte rendu des Journées académiques Microsoft Research : "Les Technologies .NET dans la recherche et l'enseignement supérieur". Pour chaque session, j'essayerai de faire un court résumé et de souligner certains points d'intérêts pour la communauté des développeurs .NET.

La conférence s'est déroulée dans le cadre superbe de l'Hôtel de Harlay, à la Maison du Barreau.


Les participants : enseignants - chercheurs, étudiants (privilégiés) et autres invités (en tout une centaine de personne) ont pu assiter aux conférences dans un petit amphi confortable et très bien équipée.

Lundi 17 mars 2003

XML : De la vision d'origine à XML pour l'utilisateur, perspectives

Cette session a été tenue par Jean Paoli architecte XML chez Microsoft et membre actif du W3C, il est un des nombreux pères du XML et co-créateur du standard XML 1.0. Jean Paoli après avoir dirigé le composant MSXML travaille maintenant comme architecte dans l'équipe Office.

Après une rapide présentation de XML (que je ne résumerai pas ici), il nous a été presenté l'intégration de XML dans la nouvelle version d'Office : Office 11 (encore un nom de code). A noter l'apparition du nouvel outil InfoPass (ou XDocs) qui sera un "outil de génération de formulaires" (désolé si je réduis son champ d'action à cette définition).
XML sera donc au coeur des produit Office soit Word, Excel, Access, Visio, InfoPass et FrontPage. Vous remarquerez que rien ne concerne PowerPoint, oublié pour cette version mais qui aura droit à sa mouture XML pour la prochaine version d'Office.
Ainsi, votre fichier .doc ne sera plus (obligatoirement?) comme on le connaissait avant, mais un fichier XML probablement joint à une feuille XSD et une feuille XSLT pour le formattage. Ceci laisse à supposer que l'on pourra bien plus facilement réutiliser les documents Word dans les produits concurrents et du domaine libre : une belle avancée si elle se concrétise qui est à saluer.

Vous retrouverez des modifications semblables dans les autres produits ci-dessus cités. Toutefois un bémol, l'intégration de XML ne signifie pas forcément ouverture vers les autres. Ainsi, si la collaboration sera plus facile elle n'en sera pas forcément automatique ...

.NET : les points essentiels

Cette session a été tenue par Eric Mittelette .NET developpeur évangéliste chez Microsoft. Encore un excellent animateur de session, qui comme Pascal Belaud sait transmettre son enthousiasme dans une présentation dynamique et des plus interressantes. Mon conseil, si vous pouvez voir une de leur présentation : foncez, ils sont géniaux.

Le but de la session était de présenter .NET : qu'est ce que c'est, à quoi ça sert et que peut-on faire avec ? Cette mission parfaitement remplie nous a permit de (re)voir de quoi était composé le CLR, quelles sont les capacités du .NET Framework ou encore à quoi peut ressembler (de loin) du code MSIL.
Après avoir vu les différents scénarios de compilation, déploiement, exécution ou configuration, nous avons eu droit à un tour d'horizon sur ADO.NET, les Windows Forms, Web Forms et les WebServices. Le tout entremêlé de démonstrations fort attractives, il va de soit (technos Microsoft oblige).

Une démonstration un peu trop courte, mais très interressante et servie avec talent par un orateur qui mérite son titre d'évangéliste.

Mardi 18 mars 2003

Generics for C# and .NET

Andrew Kennedy, chercheur à Microsoft Cambridge nous a présenté cette session et la suivante (en anglais) -- http://research.microsoft.com/users/akenn/. La page du projet : http://research.microsoft.com/projects/clrgen/.

Probablement une des sessions les plus interressantes (et celle que j'ai trouvé la plus interressante personnellement, professionnelement parlant). La possibilité de faire en natif de la généricité en C#.
Mais attention, pas comme en C++ où l'on avait en fait des template que l'on pouvait rapprocher (grossièrement) des macros. Mais d'une VRAI généricité et qui se situe au niveau de la compilation pour les vérifications de types, et non à l'exécution.


La généricité porte et portera sur les classes, interfaces, structures, méthodes et delegates :
class Set<T> {...}
interface IComparable<T> {...}
struct HashBucket<K, D> {...}
static void Reverse<T> (T[] arr) {...}
delegate void OnClick<T> (T arg) {...}
Des contraintes peuvent aussi être posées sur le type de la généricité :
class Grid<T> where T : Control {...} //doit dériver de...

class Set<T> where T : IComparable<T> {...} //doit implémenter...

La généricité dont le mérite et le bénéfice sont énormes est implémentée de manière à éviter les pièges que cette opération. Par exemple, il n'y a pas d'opération de boxing/unboxing avec les types primitifs qui consomment non seulement de la mémoire, prennent du temps et font fonctionner le Garbage Collector plus que necessaire.

Etat de l'art : utilisable de manière "non immédiate" en C# avec le .NET Framework version 1.1, il sera COMPLETEMENT intégré en NATIF dans le .NET Framework v1.2 . Il va hélàs falloir attendre pour pouvoir utiliser ces fantastiques capacités de manière transparente. Perso, j'ai hâte ! ;)

Functionnal Programming in ML for .NET

Andrew Kennedy, chercheur à Microsoft Cambridge nous a présenté cette session et la suivante (en anglais) -- http://research.microsoft.com/users/akenn/. La page du projet : http://research.microsoft.com/projects/sml.net/.

Pour tout ceux qui portent un intérêt aux langages fonctionnels, il sera peut être agréable d'apprendre qu'un nouveau langage vient grossir la famille des langages .NET : SML.NET .
C'est un langage ML, dont un proche parent est le fort connu CAML. Il permet d'utiliser les classes et objets du .NET Framework au prix de l'arrivée d'une petite subtilité de notation (l'envoi de message est .#). La réciproque, c'est à dire l'utilisation de votre code SML.NET à partir d'une classe C# ou autre, se fait en "classifiant" votre code au moyen du mot reservé __classtype. Cela ne fait pas très fonctionnel, mais il faut faire des concessions pour permettre aux mondes fonctionels et objets de collaborer et cohabiter.
Sachez qu'il est complètement integré à Visual Studio .NET, et permet la complétion automatique, Intellisense, l'exploration des classes et tout ce que vous trouvez normalement avec C# ou VB.NET.

NB : sachez qu'un autre langage fonctionnel est développé à MSR Cambridge, c'est le F#.

Assemblage dynamique de composants logiciels

C'est M. Michel Riveill (riveill@unice.fr), professeur et chercheur à l'ESSI à Nice-Sophia Antipolis qui nous a présenté cette session. Equipe Rainbow http://rangiroa.essi.fr/rainbow/.

Le projet présenté se nomme NOAH qui est un serveur d'interactions. Une interaction est une règle logicielle définissant le comportement que doit avoir un composant (un objet par exemple) quand certaine de ses méthodes sont appelées.
Mais prenons le problème de son commencement. Plantons le décor : un certain nombre de composants métier, écrits dans des langages différents évoluent sur des machines distantes (cela marche évidement en local). Voilà votre problématique : vous aimeriez bien que ces objets soient capables d'interagir. Par exemple, que quand un objet A voit une certaine de ses méthode M appelée, qu'un autre objet appelé B exécute lui sa méthode N.

Premier problème, vos objets doivent se connaître et être capables de communiquer, mais ils sont écrits dans des langages hétérogènes et ils se situent sur des machines différentes. Deuxièmement, pour changer leur comportement vous devez modifier leur code source et les recompiler, ce qui implique en plus de les arrêter et de les relancer ensuite.

Les interactions, décrite dans un langage informatisé permettent de modifier le comportement des composants "à chaud", et apportent une abstraction par rapport aux langages dans lequel ces derniers ont été écrits. En fait, les objets "interagissants" on été modifiés après leur compilation pour pouvoir accepter ce traitement. Dorénavant, avant d'appeler leur méthodes, ils vérifient s'ils ne doivent pas faire "autre chose" que l'appel standard.

NOAH est le serveur qui connait les objets et auprès de qui on enregistre des schémas d'interactions (équivalent à des classes) et auprès duquel on les instancient (équivalent à des objets). Ce dernier est écrit en Java (pour des raisons historiques) et permet à l'heure actuelle de faire cohabiter des objets .NET et Java et de poser des interactions entre eux.

Ce projet prometteur sera bientôt finalisé pour sa présentation officielle au cours d'une conférence à Pise dans les mois qui viennent. Vous pouvez vous tenir au courant sur http://rangiroa.essi.fr/noah/ et http://rangiroa.essi.fr/rainbow/.

Sécurité NGSCB "Next Generation Secure Computer Base" (aka Palladium) : mythes et réalités

Bernard Ourghanlian, directeur technique chez Microsoft France nous a présenté un nouvel acronyme barbare NGSCB plus connu (et prononçable) en tant que Palladium.

Je ne connaissais pas NGSCB avant cette présentation, et celle-ci a je pense bien répondu à son rôle informatif. Je vais essayer de résumer ici (et sans faire d'erreurs) ce qu'est NGSCB.

Le besoin vient du manque de sécurité du monde informatique d'aujourd'hui. Les virus, chevaux de Troie et autres programmes malicieux ou mal-écrits causent trop de dégats. La solution souvent mise en avant est de signer ces programmes et de ne laisser tourner que ceux dignes de confiance. Mais encore, cela ne résoud pas tout les problèmes ...

L'idée de NGSCB est de faire apparaître un nouveau mode au niveau du CPU : le mode Trusted (et par opposition, le mode Standard). Il suffit pour cela d'y adjoindre un jeux de 6 nouvelles instructions et un petit chip posé sur la carte mère (pour stocker le nexus). Voici l'expliquation donnée à Paris du fonctionnement de NGSCB : Passer à NGSCB revient à racheter un PC compatible NGSCB. En effet, avec un PC de ce type, plus besoin de cage de Farraday pour protéger vos secrets : les communications électromagnétiques seront brouillées (évidement, cela suppose un équippement écran, clavier et souris dédié et capable d'effectuer ce brouillage). De plus, les applications non sécurisés (au sens, ne s'exécutant pas en mode trusted) tourneront toujours sur votre PC NGSCB ! Simplement, une certaine zone de la mémoire leur sera inaccessible (au niveau du CPU même).
Tout les NCA (les applications sécurisées) seront en charge de fournir des services sécurisés au applications non sécurisées, en se basant sur les API fournies par le nexus (E/S sécurisées, thread, etc...).

Le reste de cette présentation étant autrement pointue et longue à décrire, je préfère rester sur cette explication un peu sommaire et vous laisser glaner des informations sur NGSCB.

Contrôles d'accès et sécurité du code mobile

Encore une présentation sur la sécurité emmenée par Cédric Fournet chercheur MSR. http://research.microsoft.com/users/fournet/.

Le travail présenté ici est un autre model de gestion de la sécurité d'une application par rapport à la notion d'appels sécurisés et non sécurisés. Le but étant d'éviter qu'un code n'ayant pas certains droit réussisse quand même à effectuer un code lui étant interdit par le truchement d'une navigation au travers de code autorisé (celui du Framework .NET dans notre cas).

Le model présenté se présenterai programmatoirement comme un avatar du try ... catch .... Voici deux exemples :
/* vérifications sur le code */
Grant (certainsDroits)
{
  /* code avec permissions */
}
/* code ordinaire */
Accept (certainsDroits)
{
  s = unknown();
  //vérifications sur s
}
/* code ordinaire utilisant s */

Réalisation d'un Extranet à partir de WebServices

Dominique Verez (Dominique.Verez@univ-lille1.fr) du Groupe Logiciel (groupement de 240 établissements de l'éducation nationale ayant pour but la liaison avec les industriels de l'informatique) nous a présenté en quoi .NET et les WebServices ont apporté une solution simple et efficace à une de ses problématiques.

Pour mettre en place un Extranet sur l'Internet, il utilise un WebService pour savoir si oui ou non la machine demandant l'accès à certaines ressources appartient ou non au réseau du Groupe Logiciel.

Comme il le décrit lui même, il avait peu de moyen (en fait, sa seule personne), peu de temps (3 semaines) et pas d'expérience préalable dans ce domaine. Le besoin d'un IDE s'étant fait sentir, c'est sur Visual Studio .NET que son choix s'est naturellement porté. Et cette aventure a été couronnée de succès !

Cette session fut un exemple simple et vivant d'une réussite dans l'application des technologies autour desquelles .NET est centré. Simple et fraiche, une présentation enrichissante sur l'aspect utilisation de ces nouvelles technologies.

Mercredi 19 mars 2003

Nouveaux terminaux

Une présentation par l'excellentissime Pascal Belaud architecte chez Microsoft France et As de la présentation vivante et marseillaise.

Cette présentation s'est axée sur deux plans, le .NET Compact Framework et le SDK Tablet. Le premier est le portage poids ultra léger (pensez : 1.5 Mo) du runtime .NET et le second est le SDK utilisé pour développer des application pour les Tablet PC et tirer parti de leur étonnante capacité de reconnaissance de l'écriture manuscrite.

Le .NET Compact Framework est 100% compatible avec le .NET Framework "pour PC" et contient un sous ensemble des classes présentes dans la version PC. La doc est évidement absente de la distribution, car présente sur la version PC nécessaire pour développer des applications. Dans cette version sont absent tout ce qui se rapproche de la notion de server : on part du principe qu'un PDA ne sera pas serveur Web Service ou autre (pas trop hasardeux comme prédicat). Par contre, vous pouvez très aisément être client d'un WebService (qui lui tournera sur votre serveur ou station de travail).
Pour développer votre application, Microsoft a fait fort. Avec Visual Studio .NET 2003 (à sortir) et le .NET Compact Framework (à sortir aussi) vous aurez une parfaite intégration de ce Framework dans l'IDE de Microsoft. Pour développer votre PDA, un nouveau modèle d'application est apparu dans VS.NET. Vous développez votre application comme une application Visual C# ou VB.NET, sans aucune indication que vous développez une application pour PDA. Un émulateur Pocket PC est fourni pour ceux qui veulent tester sur leur machine ou qui n'ont pas de Pocket PC sous la main.
Sachez aussi que Microsoft a développé un SQL Server CE pour PDA : un mini SQL Server qui ressemble à s'y méprendre à papa SQL Server (évidement, certaines choses sont passées à la trappe, tel les procédures stockées, etc ...).

Deuxième partie, les Tablet PC : ces PCs tout plats sur lesquels ont doit poser la main pour écrire (si si si) au moyen d'un stylet electromagnétique (c'est pourquoi on peut poser la main). La reconnaissance de l'écriture de ces petits appareils est très bonne, mais pas parfaite (évidement) : l'optique choisie a été que plutôt que le Tablet PC apprenne l'écriture de la personne, que de puissants algorithmes épaulés par des base de données des écritures différentes. Résultat, au prix d'une petite attention et vérification quand on écrit, le résultat est superbe.

Ce qui était présenté est le Tablet PC SDK, qui en fait ajoute deux nouveaux composants dans votre VS.NET : une zone de texte permettant la reconnaissance de votre prose (InkEdit), et une zone de dessin multi-layer (InkPicture) apportant elle aussi une grande facilité et une utilisation optimum du stylet. Sachez que vous pouvez tester votre application sur votre PC de bureau, votre souris émulant dans ces composants le stylet (mais le résultat est risible, quiconque a essayé de signer à la souris vous le dira). Bien entendu, une fois déployée sur le Tablet PC, ce sont des composants natifs de l'OS de ces jolis devices.

Un exemple très sympa était un formulaire de constat d'accident de voiture (avatar de notre constat à l'amiable) avec des champs à remplir et un dessin de la voiture sur laquelle on pouvait dessiner pour indiquer les impactes. Notez que cet exemple utilisait bien les layers des zones de dessins des Tablet PC, car on pouvait choisir de ne voir par exemple que les bris de glace, ou alors là où la tôle était froissée, ainsi de suite. Une application très pratique pour un assureur en mission (si derrière vous couplez ça avec le reseau, des Web Services et du .NET, c'est la totale Microsoft.

XP Tablet PC Ed. : http://www.microsoft.com/windowsxp/tabletpc/

Manipulations d'images

Présentation des différents outils développés à Microsoft Research à Cambridge dans le domaine de l'imagerie 2D par Patrick Perez (Chercheur à Cambridge).

JetStream

Une technologie permettant de découvrir les contours de différents objets dans une image de manière interactive. Le système se base dur les chaine de Markov de niveau 2 (pour les matheux dont je ne fais pas partie) et part d'un constat simple : si on avait telle direction à l'instant t (vecteur définit par la position en t-1 et t), il a de forte chance de continuer dans le même direction en t+1. On valide en vérifiant si on est toujours sur un contour, et on laisse la possibilité à l'utilisateur de "revenir en arrière", la découverte étant iterrative. En effet, la notion de "probabilité de continuer dans la même direction" induit le fait ... de se tromper. Et ainsi, comme la découverte se fait pas à pas, l'utilisateur peut demander un retour en arrière en cas de faux pas, pour laisser une chance à l'ordinateur de trouver "juste". C'est assez déroutant à expliquer, car ça l'est aussi à voir. Ce sera bientôt normalement inclus dans le logiciel de retouche d'image de Microsoft (anciennement PictureIt).

Patchwork

Technologie qui permet grossièrement de remplir des trous. Vous définissez une zone dans une image que vous souhaitez boucher, et l'algorithme le fait pour vous. Typiquement, vous l'utiliserez sur des images de mauvaise qualité, des scans de photos anciennes, de la retouche d'image (pour oter une ombre, un détail ou un touriste en short sur votre photo de vacance).
Ce n'est pas innovant, mais cette technologie utilise une idée à l'encontre des us habituels. Généralement, on essaye de deviner à partir des bords de l'image; le résultat était plutôt aléatoire, et sur des "trop grandes" zones, le résultat était trop visible. L'idée est ici d'utiliser la force brut des machines de maintenant à la place des techniques moins gourmandes du passé. On génère un dictionnaire de tout les "mots de l'image" et on cherche lequel irrait bien à l'endroit problématique. Ces "mots" sont en fait des suites de pixels présents dans l'image, et à proximité de la zone à remplir. Mais ce dictionnaire est ENORME dans le cas de certaines images, et la complexité bien que finie est relativement énorme à cause du volume de données à traiter.
Cette technologie est paramètrable et donne des résultats bluffants (des exemples dès réception du DVD de la conférence) !

Blender

Tout le monde a un jour voulu faire un montage photo sympa et vite fait. Mais on se casse vite les dents sur des problèmes d'intégration de l'artefact dans l'image destination, car cela fait vite "faux". Cette technologie essaye de répondre à cette problématique, et là aussi avec talent.
Je vous passe les détails techniques, et vous enjoind à vous y interresser dès son intégration dans le futur PictureIt.

Le mot de la fin

Conclusion

Voilà ! Un petit résumé pour que vous sachiez à quoi vous attendre dans le futur, et que dire que Microsoft Research réunis énormément de grands chercheurs n'est pas un vain mot. J'espère aussi que vous aurez déduit que .NET est une plateforme qui se prête bien au développement avec ses specs publiées et normalisées.

Si vous avez des remarques concernant cet article ((im)précisions, remarques, ...) faites moi signe ;)!!

Remerciements et salutations

Monsieur Laurent ELLERBACH, responsable relation études supérieures chez Microsoft France, pour sa sympathie, ses idées, son soutien logistique et son invitation.
Monsieur Pierre-Louis XECH, Microsoft Research à Cambridge, responsable sud-ouest de la France pour Microsoft Research.
Monsieur Richard CLARCK (C2I.fr) pour sa bonne humeur et son esprit.

Ressources

Sur le Web :





par Alain Vizzini (vizzini@essi.fr )
pour l'ESSI & Microsoft, création 22-03-2003, dernière màj 27-04-2003


+ 17.000 pages vues depuis le 14 oct. 2002