Dossier Microsoft (Cinquième partie)
Le développement
Publié le 21 February 2008
L'article qui suit constitue le cinquième volet d'un dossier consacré à Microsoft publié en cinq parties. Après les quatre premières parties faisant l'état des lieux de la situation de Microsoft en 2008, présentant la stratégie poste client et serveur de l'éditeur et le positionnement en matière de business productivity, le présent article traite du développement.
Par Hugo Lunardelli.
* *
*
Le développement constitue pour Microsoft une activité particulière. Il s'agit en soi d'un business rentable, les revenus issus de la commercialisation de Visual Studio ou de MSDN ne sont pas négligeables, mais cette activité a ceci de particulier qu'elle est en relation directe avec le cœur de métier de l'éditeur, son histoire et son avenir.
Une perspective historique
L'existence de Microsoft débute en 1975 lorsque Bill Gates et Paul Allen, deux étudiants passionnés de technologie, découvrent dans la presse la commercialisation du MITS Altair 8800, premier représentant de ce que l'on allait par la suite appeler PC pour Personal Computer.
En face de cette machine, les deux étudiants prennent conscience des bouleversements qui peuvent potentiellement découler de cette introduction (on parlerait aujourd'hui de changement de paradigme). Il s'agit en effet du premier ordinateur personnel dans l'histoire, c'est-à-dire d'une machine que chacun peut potentiellement acquérir et programmer en vue d'une utilisation personnelle, là où les ordinateurs existants (IBM, Dec...) étaient exclusivement dédiés à des applications scientifiques ou de gestion.
Oui, mais justement il n'existe pas de langage permettant de programmer l'Altair 8800 et c'est ce constat qui va pousser les deux étudiants à développer un outil permettant de programmer cette machine en Basic ; ce qui constitua l'acte de naissance de Microsoft et le début d'une saga qui continue à ce jour.
Les premières années de Microsoft furent dominées par la commercialisation de BASIC pour les ordinateurs personnels de l'époque, y compris l'Apple II. D'autres langages vinrent compléter cette offre et notamment des compilateurs C, Fortran et Cobol.
Ce n'est qu'en 1981 que Microsoft devait licencier MS-DOS à IBM, en vue d'équiper son premier PC , devenant par cela un éditeur système.
La naissance de Windows
Très vite, Microsoft fût convaincu qu'il était nécessaire de doter le PC d'un environnement graphique similaire à celui qu'avaient développé les chercheurs de Xerox au PARC (Palo Alto Research Center) et qui allait également équiper les machines d'Apple. Après tout, Steve Jobs était venu rendre visite à Microsoft pour présenter le prototype de ce qui allait devenir le Macintosh (en 1984) et obtenir de l'éditeur qu'ils développe des outils et des applications pour cette machine.
Microsoft décida donc d'investir dans ce qui allait devenir Windows, annoncé en 1983 et commercialisé dans sa version 1.0 en 1985.

Compte tenu de ses origines, Microsoft était convaincu de la nécessité de proposer des outils de développement performants susceptibles de faciliter le développement d'applications pour Windows. C'est ce qui conduisit Microsoft à développer un Software Development Kit (puis un DDK pour faciliter le développement de drivers) contenant la documentation des API (Application Programming Interface) permettant de gérer les éléments d'une application Windows (emplacement et taille des fenêtres, gestion de la souris, de l'impression...).
Le paradigme du PC
Le développement de Windows devait conduire Microsoft à étoffer l'API de ce système, appelée Win16, qui devait évoluer en Win32 pour accompagner les versions 32 bits qu'étaient Windows 95 et Windows NT 3.1.
On notera la sortie de Visual Basic en 1991, destinée à ouvrir l'univers de la programmation Windows à des développeurs occasionnels, et l'arrivée en 1997 de la première version de Visual Studio dans lequel Microsoft regroupait pour la première fois la plupart de ses outils de développement ainsi que la documentation système qui les accompagne.
Au cours des années des années 90, Win32 devait intégrer des évolutions telles que COM et DCOM permettant de gérer les échanges entre applications Windows, y compris dans un environnement distribué, ces évolutions s'inscrivant dans une vision « PC centrique » de l'informatique.
L'avènement soudain de l'Internet au début des années 90, accompagné par l'annonce de Java, devait mettre un terme à cette vision.
La naissance de .NET
Face aux perspectives ouvertes par l'Internet, confronté à la menace que faisait peser Java sur le rôle du PC et l'importance de Windows, Microsoft se devait de remettre en cause sa vision d'un univers informatique dominé par des machines Windows.
La montée en puissance de l'Internet a pour corollaire l'avènement d'un environnement distribué dans lequel toute machine peut potentiellement communiquer avec n'importe quel autre équipement, du moment que ces deux machines utilisent le même protocole, IP en l'occurrence.
Microsoft devait donc faire évoluer sa plate-forme de développement pour prendre un compte un univers fondamentalement hétérogène, composé de terminaux divers (portable, smartphone, PDA, PC...) et devant pouvoir interagir avec des services hébergés sur des serveurs Unix, Linux ou Windows.
C'est cette perspective qui devait accompagner la conception d'un nouveau « Framework » introduit en 2001 sous le nom de .NET 1.0.
Principes de .NET
.NET constitue un environnement de développement qui est indépendant du langage utilisé.
Il supporte le développement d'applications à travers plusieurs dizaines de langages, parmi lesquels on trouve des implémentations de Cobol, de Pascal, de C ++ de Fortran, ... ainsi que des langages de script comme Javascript ou IronPython. Les plus utilisés étant C#, développé pour .NET, et Visual Basic .NET. Chaque langage .NET respecte une spécification appelée CLS pour Common Language Specification.
Le code source de chacun de ces langages est compilé dans un langage intermédiaire, appelé MSIL (pour Microsoft Intermediate Language), qui est indépendant de la plateforme hardware cible.
Cette compilation sera ensuite exécutée dans une machine appelée CLR, pour Common Language Runtime, qui est installée sur chacune des plateformes cibles (Windows Vista, XP, Windows Server 2003 et 2008, Windows Mobile ou Mono qui représente l'adaptation de .NET sous Linux).
. NET permet au développeur de choisir le langage le plus adapté à son projet, en garantissant une exécution cohérente sur l'ensemble des plate-formes ciblées.
De .NET 1.0 à .NET 3.5
.NET a connu un certain nombre d'itérations : une version 2.0 a été diffusée en 2005 qui introduisait une nouvelle CLR, devenu entre-temps un standard ECMA.
.NET devait connaître une évolution majeure avec la version 3.0 introduite avec Windows Vista fin 2006. Cette version comprenait des évolutions importantes telles que Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF) et Windows Workflow (WF) sur lesquelles nous reviendrons. La version courante de .NET est la version 3.5 qui fût livrée avec Visual Studio 2008 fin 2007.
RIA & SOA
Les évolutions récentes de .NET (3.0 & 3.5) ont pour objet d'adresser le développement de deux classes d'applications très différentes.
D'un côté, il s'agit de favoriser l'émergence d'une nouvelle classe d'applications « clientes » tirant parti de la richesse graphique de Vista avec WPF. Ces applications, qui sont destinées à s'exécuter sur le poste client, mais aussi à l'intérieur du navigateur, sont appelées RIA pour Rich Internet (une variante donne Interactive) Application. A noter que WPF est doté d'un sous ensemble, originellement appelé WPF/E (E pour everywhere), et heureusement rebaptisé Silverlight dont nous reparlerons plus loin.
De l'autre côté, WCF a pour objet le développement de services Web et vise donc le back office, la communication d'application à application, les mash-ups et donc d'une façon générale ce que l'on définit sous le terme de SOA.
.NET vs J2EE, la réponse à la menace Java
Les ambitions des deux Frameworks concurrents sont assez similaires même si les implémentations différent notablement.
L'arrivée de Java fût saluée comme la promesse d'une nouvelle catégorie d'applications qui seraient développées avec un nouveau langage (Java) et qui bénéficieraient de la caractéristique essentielle de pouvoir s'exécuter dans n'importe quel environnement qui dispose d'une machine virtuelle Java (JVM). Un principe appelé « write once run everywhere » qui fût par la suite détourné en « write once debug everywhere » étant donné la difficulté de développer des machines virtuelles homogènes sur l'ensemble des plate-formes ciblées.
Java devait adresser l'ensemble des plate-formes existantes: le poste client, le serveur, les équipements mobiles et enfin les cartes à puce. En pratique, Java a trouvé une place sur le serveur avec J2EE (Java 2, Enterprise Edition) et est beaucoup moins utilisé sur le poste client que ce que l'on envisageait il y a quelques années.
L'examen des deux modèles que sont .NET et J2EE rappelle en partie la comparaison entre un environnement dit propriétaire comme Windows et un système dit ouvert, par exemple Linux. Dans les deux cas, on est en présence d'une plate-forme dont le contrôle est assuré par une entreprise commerciale et d'une technologie qui est plus ou moins du domaine public se prêtant à de multiples développements indépendants qui sont à l'origine de divergences techniques et fonctionnelles. On a ainsi d'un côté, .NET dont les spécifications et les implémentations sont verrouillées par Microsoft (même si le code source est par ailleurs accessible) et de l'autre côté, une multitude d'implémentations de J2EE qui peuvent potentiellement poser des problèmes de portabilité. En pratique, faire un choix J2EE signifie faire le choix d'un vendeur et de ses outils.
Si l'on cherche à comparer l'adoption de ces différentes technologies on peut considérer les données d'utilisation des Frameworks ainsi que celui des outils de développement associés, en l'occurrence Eclipse et Visual Studio.
Sur le premier point, une étude de l'institut Forrester réalisée en 2007 donne l'avantage à .NET en tant que plate-forme la plus utilisée par les entreprises des deux côtés de l'atlantique. Microsoft France relève la même tendance sur le territoire national.

Concernant les outils de développement, les chiffres qui nous ont été fournis par Microsoft font état d'une base de 47 % de développeurs utilisant Visual Studio contre 21 % ayant installé Eclipse, les deux outils n'étant pas exclusifs l'un de l'autre. Ce chiffre est à interpréter en prenant en compte le fait que Visual Studio est un outil généraliste touchant une cible plus large que celle d'Eclipse à finalité quasi exclusivement professionnelle.
Un des points forts de Microsoft étant le support actif de sa communauté de développeurs, à travers notamment le programme MSDN, Visual Studio jouit d'une visibilité et d'un marketing beaucoup plus conséquents.
Visual Studio et Expression Studio
Visual Studio continue de représenter l'environnement de développement intégré (IDE) de Microsoft avec la version 2008 disponible depuis quelques semaines.
Cette version fournit des outils destinés à faciliter le développement d'applications sous Vista, notamment dans l'usage de WPF et de XAML décrit plus avant.
Il comporte en outre une technologie appelée LINQ qui permet de faciliter le développement de requêtes SQL en gérant la syntaxe du langage de requête ainsi que les champs à manipuler via Intellisense, de la même façon que le langage Visual Basic ou C#. Intellisense permet de vérifier la syntaxe du langage utilisé en utilisant des codes couleurs pour l'affichage des mots clés du langage.

Enfin, Visual Studio comprend VSTO, Visual Studio Tools for Office destiné au développement applications basées sur Office, appelées OBA.
Expression Studio a vu le jour en En 2007 sous la forme d'une famille d'outils destinée aux développeurs et designers qui ont pour cible le développement d'applications web et multimédia interactives. Ces produits succèdent à FrontPage.
Les investissements de Microsoft sur le RIA
Prenant en considération la popularité d'Ajax dans le développement d'applications Web, Microsoft a implémenté un ensemble d'outils permettant l'utilisation de cette technologie dans la version 3.5 de .NET ainsi que dans Visual Studio. Mais les efforts de Microsoft se portent plus dans le développement d'une plateforme qui puisse représenter une alternative à la plateforme Flash d'Adobe qui jouit d'un monopole de fait dans le domaine du streaming media ainsi que des applets hébergées sur les sites Web. Flash est la technologie à l'œuvre dans des sites vidéos tels que Youtube ou Dailymotion et la pénétration de Flash sous la forme d'un plug-in intégré dans les navigateurs approche les 95 %.
Microsoft annonçait en 2007 une technologie appelée Silverlight ainsi qu'une nouvelle famille de produits destinés aux designers appelée Expression Studio. Silverlight, dont le nom de code était WPF/E, a depuis été livré dans une version 1.0 qui permet de gérer le streaming vidéo en supportant les standards VC-1 et Windows Media très largement répandus. Le développement se faisant en Javascript.
Conçu comme un plug-in multi-navigateurs et multi-plateformes, il supporte en pratique IE 7 et Firefox sur Windows et Safari sur Mac OS. Une version Linux est en cours de développement sous le nom de Moonlight.
Le véritable impact de Silverlight se fera sentir avec la version 2.0 qui intègrera un sous ensemble du Framework .NET permettant le développement en Visual Basic .NET et C#, mais aussi via des langages dynamiques tels que Python et Ruby. Le développement d'applications Silverlight tirera profit des outils de développement et de déboggage intégrés à Visual Studio.
En théorie, Silverlight 2.0 devrait constituer un environnement de développement accessible à l'ensemble de la communauté des développeurs .NET, là ou Flex, une technologie d'origine Macromedia racheté par Adobe, est employée avec Flash par une communauté plus restreinte et se prêtant moins facilement au développement d'applications sophistiquées. Cette différence de positionnement devrait jouer en faveur de Microsoft, notamment dans un environnement d'entreprise, compte tenu des compétences .NET que l'on peut y trouver.
En développant Silverlight, Microsoft cherche à faire du Web une plate-forme programmable en s'affranchissant des limitations des applications reposant aujourd'hui sur HTML et HTTP. Même si Ajax représente un contournement de certaines restrictions induites par une application HTML, il n'en reste pas moins que ni HTML, ni HTTP n'avaient été conçus pour autre chose que de l'affichage d'informations et du transport de données.
Offrir à des développeurs professionnels le choix de langages évolués et dynamiques s'appuyant sur une API moderne et cohérente, devrait déboucher sur une nouvelle génération d‘applications riches, tant du point de vue de la richesse fonctionnelle que de la qualité de l'interface utilisateur.
Un autre élément qui joue en faveur de Silverlight réside dans l'utilisation de XAML (Extensible Application Markup Language) en tant que langage déclaratif permettant à un designer de concevoir, sous Visual Studio ou Expression Studio, le canevas visuel d'une application avant que de transmettre celui-ci aux équipes de développement qui seront en charge de coder la logique métier correspondante.
Un développeur qui se voit confié une maquette XAML pourra intégrer directement ce fichier dans Visual Studio et commencer immédiatement son travail. Cette approche permet une collaboration inédite entre designer et développeurs à même d'accélérer significativement le développement des applications Intranet comme Internet.
OBA ou Office en tant que plate-forme de développement d'applications métiers
Comme déjà indiqué dans le précédent volet de ce dossier, Microsoft a pour ambition de faire d'Office le frontal préféré des futures applications métier en entreprise. L'interface d'Office étant généralement connue de la plupart des utilisateurs, la période d'apprentissage d'une application est à priori plus courte quand il s'agit d'appréhender les fonctions métiers intégrées dans un onglet du ruban d'Office 2007.
Ces applications appelées OBA, pour Office Business Application, vont s'appuyer sur les services d'Open XML qui permettent entre autres d'intégrer un schéma métier dans les fichiers qui sont générés par ces applications. On peut ainsi envisager, avec un minimum de développement, d'utiliser Word comme outil de saisie de documents comptables qui iront directement alimenter un ERP.
Ces applications OBA pourront tirer parti des services de la plate-forme .NET intégrée à Windows Server, en particulier pourront s'appuyer sur Workflow Foundation pour le développement de flux de travail, accéder aux données de production via le Business Data Catalog ou encore communiquer avec d'autres applications en utilisant Windows Communication Foundation.

Comme déjà indiqué, un exemple de ce type d'application se trouve dans Duet, un co-développement entre SAP et Microsoft déjà commercialisé à plusieurs centaines de milliers d'exemplaires.

Développements SOA : Oslo
La plateforme SOA de Microsoft est basée sur plusieurs composantes et en particulier sur Windows Server (et donc sur les services du Framework .NET), sur SQL Server et sur un outil d'intégration appelé BizTalk Server.
La notion de Web service faisait partie intégrante de la vision .NET d'origine, ce qui devait conduire Microsoft à développer, conjointement avec IBM et quelques autres, une série de spécifications collectivement appelées WS-*ayant pour objet de définir les mécanismes de sécurité, de gestion transactionnelle, ... nécessaires pour le déploiement d'applications métiers dans un contexte Web.
Ces spécifications sont supportées dans WCF, mais également dans BizTalk, lui-même employé pour l'intégration et la coordination de processus applicatifs à l'intérieur comme à l'extérieur de l'entreprise.
En fin d'année 2007, Microsoft annonçait Olso qui consiste en une roadmap stratégique en matière de SOA. Spécifiquement, ce qu'annonçait Microsoft consiste dans l'utilisation d'un langage de modélisation universel destiné à décrire les processus que BizTalk et les autres composants nécessaires seront amenés à exécuter. Ce langage pourra directement être utilisé par les responsables opérationnels en vue d'une représentation plus fidèle des processus de l'entreprise.
L'autre composante d'Oslo repose sur un référentiel unique dans lequel seront stockés l'ensemble des données de conception, d'exécution et de supervision des applications.
Un processus métier modélisé par l'intermédiaire de Visual Studio, sera accessible dans ce référentiel par BizTalk Server en vue de son exécution et pourra enfin être utilisé par un produit comme System Center Operation Manager pour surveiller ses paramètres de fonctionnement.
Oslo facilitera l'utilisation de services « hébergés » sur le Web et Microsoft compte étendre le concept d'ESB (Entreprise Service Bus) en forgeant le terme d'Internet Service Bus sur lequel seront disponibles des services d'intermédiation destinés à faciliter le développement d'applications inter entreprises, par exemple la communication entre applications d'un donneur d'ordre avec ses nombreux fournisseurs.
Le développement représente le cœur de l'activité de Microsoft
Le métier historique de Microsoft consiste à commercialiser des plate-formes extensibles.
La programmation a de tout temps constitué la caractéristique essentielle de la plupart des solutions de l'éditeur. Qu'il s'agisse des applications Office (avec leurs macros associées, VBA et maintenant OBA), de Windows bien sûr et de .NET aujourd'hui, la force de Microsoft a été de pouvoir s'appuyer sur une communauté active de développeurs qui confèrent leur valeur aux plate-formes que l'éditeur développe.
.NET, Visual Studio, MSDN, Expression Studio, XNSA, Silverlight, SQL Server ou BizTalk Server sont autant d'exemples de produits développés dans ce but.
Première partie : Microsoft à la croisée des chemins
Deuxième partie : Le poste Client
Troisième partie : L'infrastructure serveur
Quatrième partie : La Business Productivity ou productivité organisationnelle
_______________
Hugo Lunardelli a occupé différentes fonctions marketing au sein de Microsoft France et de Microsoft Europe avant de démarrer une activité de consultant, d'analyste et de journaliste.
Il co-anime, avec Bernard Laur, « Face à Microsoft : quels choix, quelles stratégies ? » un séminaire de deux jours visant à apporter une information complète sur Microsoft, sa stratégie, ses partenariats, son organisation au niveau mondial et national ; à présenter une vision complète de son offre présente et à venir et enfin à donner les clefs d'un choix de licence optimisé.
