Les coulisses de la conception de Windows 8

Conception de Windows 8

Vision en coulisses de l'équipe d'ingénierie Windows

Les coulisses de la conception de Windows 8

  • Comments 0

Avant de décrire plus en détail la version Consumer Preview et certaines des modifications, ou simplement les fonctionnalités sur lesquelles nous n'avons pas encore eu l'occasion d'écrire un billet, nous souhaitons prendre du recul et présenter quelques membres de l'équipe. La conception de Windows 8 est une entreprise importante qui requiert une équipe aux expériences et origines diverses et variées. Nous sommes fiers du fait que la diversité de notre propre équipe reflète la diversité des clients qui utilisent Windows dans le monde entier. Lors de la dernière version, un des membres de l'équipe, Larry Osterman, a décrit le travail sur Windows 7 par rapport aux versions précédentes. Dans ce billet, Larry réfléchit au projet Windows 8 à travers le regard de deux autres membres de l'équipe. 
--Steven


Il y a trois ans, j'ai rédigé un billet sur le blog Engineering Windows 7 concernant le processus de développement de Windows 7. Cette fois, nous avons pensé vous faire connaître certains des nouveaux membres de l'équipe en réalisant un entretien informel avec deux membres de notre équipe Windows Runtime Experience. Tous deux ont commencé à travailler sur Windows juste avant que nous commencions à planifier Windows 8 (Windows 8 est ainsi leur première expérience en développement de Windows du début à la fin).

Parlez-moi un peu de vous. D'où venez-vous et depuis combien de temps êtes-vous chez Microsoft ?

Chris : Bonjour, je m'appelle Chris Edmonds. Je suis originaire de l'Orégon. J'ai fait mes études à l'Université d'État de l'Oregon (Allez les Beavers !) et ai été stagiaire à la NASA et chez Garmin. Pendant ces périodes, j'ai travaillé sur des projets allant de la robotique à l'avionique et ai effectué des recherches sur le routage haut débit pour les processeurs à plusieurs noyaux. Microsoft m'a recruté à la sortie de l'université et j'ai intégré l'équipe de Windows il y a environ deux ans et demi.

Mohammad : Bonjour, Je m'appelle Mohammad Almalkawi. Je suis ingénieur conception logiciel dans le service Windows de Microsoft. Je suis également chez Microsoft depuis environ deux ans et demi. Je suis diplômé de l'Université de l'Illinois à Urbana-Champaign (Allez les Illini !) où j'ai fait des recherches sur l'intégration des systèmes de tolérance de panne et des systèmes en temps réel.

Sur quoi travaillez-vous pour Windows 8 ?

Chris : J'ai commencé à travailler avec l'équipe Windows quelques mois avant la commercialisation de Windows 7. Peu après, j'ai rejoint l'équipe Windows Runtime Experience qui venait d'être formée. L'équipe Runtime Experience crée de nombreux composants de l'infrastructure Windows Runtime (WinRT). Au cours du développement de Windows 8, j'ai eu l'opportunité de travailler sur plusieurs aspects de WinRT.

Lors de la première étape (sur trois), j'ai travaillé sur la définition des principaux modèles du système WinRT. Nous décomposons le projet en trois étapes en répartissant l'architecture et l'implémentation sur chacune afin de parvenir à un produit fini à partir d'une simple esquisse. Nous devons intégrer tout le travail nécessaire à la coordination des différentes technologies dans Windows 8. À la première étape, nous avons conçu les modèles pour les événements, la construction d'objets, les méthodes asynchrones et la surcharge de méthode. Il était important de définir des modèles forts pour ces concepts de base afin de permettre à chaque langage de programmation interopérant avec le système WinRT d'exposer ces concepts de façon naturelle et familière pour leurs développeurs.

Au cours de la deuxième étape, j'ai eu la possibilité de participer au développement des applications de style Metro. Plus précisément, j'ai travaillé sur l'inscription des applications de style Metro avec le système WinRT afin qu'elles puissent être lancées et interagir avec les contrats.

Une forte collaboration entre les groupes a eu lieu lors de la troisième étape, ce qui, comme je l'ai appris, est crucial pour un projet aussi vaste et profond que Windows 8. J'ai travaillé avec une équipe pour définir et implémenter les principaux composants du modèle d'application pour les applications de style Metro. Par ce travail, nous nous sommes assurés que les applications de style Metro écrites en différents langages et sur différentes plateformes d'interface utilisateur se comportent de façon cohérente par rapport aux contrats et à la durée de vie de l'application.

Mohammad : J'ai eu la chance de participer à Windows 8 depuis le début. Nous avons connu trois étapes majeures en termes de fonctionnalités afin de réaliser les objectifs de Windows 8. Chacune de ces étapes s'est composée comme suit :

  • Phase de spécification et de conception pour déterminer la configuration requise par le biais de réunions d'équipes chargées des fonctionnalités et d'une participation active avec les équipes partenaires dans Windows et dans toute l'entreprise. Une équipe chargée des fonctionnalités se compose de développeurs, testeurs et directeurs de projet qui travaillent sur une fonctionnalité spécifique. Elle est généralement constituée de 4 ou 5 personnes. Cette phase a permis de générer un ensemble de documents de spécifications : tests fonctionnels (directeur de projet), conception de développement (développeur), conception de tests et modèle de risque (testeur), ainsi qu'un plan d'exécution (nous tous). Cela nous a permis de mieux comprendre les détails des fonctionnalités et de travailler en concentrant nos efforts avec une grande assurance.
  • Phase de codage pour implémenter les fonctionnalités identifiées lors de la phase de spécification, ainsi que leurs tests unitaires et tests fonctionnels.
  • Phase d'intégration et de stabilisation en vue d'intégrer et de rassembler les différents composants provenant des diverses équipes et de résoudre les bogues.

Au cours de la première étape, j'ai travaillé sur la conception et le développement de la découverte et de l'activation des extensions d'applications. Cette infrastructure WinRT permet aux applications de participer aux contrats pris en charge par le système d'exploitation (tels que la recherche et le partage) et sert de base aux extraordinaires fonctionnalités de Windows, notamment les « charms » de recherche et de partage.

Dans la deuxième étape, j'étais chargé de l'implémentation de la fonctionnalité de résolution des métadonnées Windows, qui est une API clé qui associe les métadonnées Windows générées par la chaîne de l'outil WinRT et les projections des langages JavaScript et C#.

Lors de la troisième étape, j'étais responsable de la conception et du développement de l'API d'énumération des espaces de noms, qui a permis au moteur JavaScript Chakra de prendre en charge les fonctionnalités de réflexion dans les espaces de noms et les types WinRT. CLR utilise également cette API pour implémenter la résolution des métadonnées et Visual Studio l'utilise pour prendre en charge Intellisense pour les types WinRT.

À quoi ressemble une journée de travail ordinaire ?
Chris : Une journée ordinaire ? Une des choses que j'apprécie le plus dans le fait de travailler sur Windows, c'est qu'il n'y a presque jamais de journées ordinaires. Selon le moment au sein du cycle du produit, je peux passer ma journée à écrire des spécifications, à écrire du code, à formuler des idées avec les membres de mon équipe, à résoudre des bogues ou à me consacrer à une de mes nombreuses autres activités. Même si les activités sont variées, une partie de ma journée est presque toujours consacrée aux résolutions des problèmes, que ce soit sous une forme ou sous une autre. Qu'il s'agisse de déterminer la cause d'un blocage ou d'aider à concevoir des fonctionnalités, je travaille tous les jours avec des gens intelligents à résoudre des problèmes intéressants.

Quelle a été votre plus grande surprise ?

Chris : Je pense que ce qui m'a le plus surpris dans le travail sur Windows était la taille de l'équipe et le nombre d'activités qui s'effectuent en permanence. En travaillant sur les nouvelles fonctionnalités qui m'ont été affectées, j'ai eu l'opportunité d'interagir avec des centaines d'autres personnes dans l'équipe pour mettre au point des spécifications et des solutions. Le travail semblait vraiment intensif (et un peu étourdissant au début), mais j'ai toujours été étonné de voir la façon efficace dont les équipes communiquaient entre elles pour parvenir à trouver des solutions vraiment formidables aux problèmes. Lorsque je pense au nombre de personnes qui utilisent Windows et au nombre de façons dont Windows est utilisé, je me dis que cela peut sembler incroyable de parvenir à réaliser tout ce travail avec si peu de personnes comme nous le faisons.

Mohammad : Ce qui m'a le plus surpris chez Microsoft, c'est que vous êtes tout de suite confronté aux problèmes concrets et qu'on vous permet de gérer des composants primordiaux. Vous apprenez en faisant le travail et non en assistant à des formations, qui sont également disponibles si vous en avez besoin.

Bien sûr, on ne vous laisse pas vous débrouiller tout seul. De nombreux modes d'assistance, des experts dans divers domaines et des ingénieurs expérimentés sont là pour vous aider lorsque vous en avez besoin.

En quoi Windows 8 a-t-il été différent des autres projets sur lesquels vous avez travaillé ?

Chris : Ayant principalement travaillé sur de plus petits projets à l'Université d'État de l'Oregon et lors des stages que j'ai effectués (la plupart des projets de code sont de moindre envergure que Windows), la plus grande différence est la quantité de code que je lis chaque jour. Je passe une bonne partie de mon temps à lire et à déboguer du code écrit par d'autres équipes avant mon arrivée à Microsoft, ainsi qu'à parcourir le code que j'ai écrit moi-même lors d'une étape précédente. Cela me fait vraiment apprécier le code bien écrit.

Quel a été le défi le plus important que vous ayez dû résoudre ?

Mohammad : Peu après avoir rejoint l'équipe, j'ai dû apporter des corrections à du code que je ne connaissais pas vraiment dans l'activation COM. Ce code est très infrastructurel, car une grande partie des composants de Windows repose dessus. Il était donc crucial que mes modifications ne provoquent aucune régression.

Les experts de mon équipe pensaient peut-être que ce code était simple, mais ce n'était certainement pas le cas pour un nouveau comme moi. J'ai dû lire beaucoup de code, parcourir le débogueur et écrire un grand nombre de tests pour améliorer ma compréhension et renforcer ma confiance afin d'apporter les modifications nécessaires sans rien endommager.

Pouvez-vous me raconter à quoi ressemble l'élaboration de la planification de Windows 8 ?

Chris : Planification Windows 8 revêt différentes formes pour les différents membres de l'équipe. Dans le cadre de la planification, l'équipe Runtime Experience nouvellement constituée a consacré une semaine à créer des applications à l'aide de différents langages, piles, structures et technologies. En effet, un des principes de conception de Windows 8 est qu'il peut être programmé dans plusieurs langages. Ce travail avait en partie pour objectif de forcer chacun d'entre nous à utiliser un langage qui ne nous était pas encore familier afin que nous puissions suivre la courbe d'apprentissage. J'ai travaillé sur un programme de génération de terrain 3D avec IronPython et XNA, une application de galerie de photos avec HTML\JavaScript et un moteur physique 2D simple en C++ avec GDI pour le dessin. À partir des exercices de conception des applications, nous avons créé des présentations à donner à l'équipe sur la conception de chaque application, avec une liste de points positifs, négatifs et horribles.

Qu'est-ce qui vous a impressionné ?

Mohammad : J'ai été très impressionné par la qualité du système d'ingénierie de Windows. Il soutient des milliers d'ingénieurs informatiques Windows et permet à des millions de lignes de code de fonctionner parfaitement au sein du système d'exploitation grâce aux versions (builds) nocturnes et aux évaluations de qualité. Les évaluations de qualité automatiques comprennent des tests intégraux critiques, des tests de performances, des tests de compatibilité des applications, des analyses de code statique et d'autres tests que nous utilisons pour découvrir rapidement les problèmes et pour contrôler étroitement leur propagation via les intégrations en amont ou en aval.

Qu'entend-on par étape de qualité ?

Chris : Cette étape a pour objectif de faire en sorte que le code base, les outils d'ingénierie et les processus d'ingénierie soient prêts pour le prochain cycle du produit. Comme je l'ai appris, cette étape est le moment d'analyser le code et de faire un peu de maintenance, qu'il s'agisse de simplement nettoyer les fichiers source ou de refaire les abstractions qui nous ont préparés au travail que nous ferions dans Windows 8. Le code est notre atout et consacrer du temps à nous occuper de cet atout est très important. Lors de l'étape de qualité de Windows 8, j'ai participé à trois tâches distinctes. La première consistait à créer, en fonction de nos tests quotidiens, un système qui indiquait automatiquement les numéros de couverture du code via un tableau de bord interne pour notre équipe. C'est une des premières choses sur lesquelles j'ai travaillé chez Microsoft, qui m'a permis d'en savoir beaucoup plus sur les systèmes d'ingénierie. La deuxième tâche à laquelle j'ai participé était une méthode de nettoyage du code visant à standardiser la façon dont nous utilisons les assertions dans le code base. Enfin, j'ai travaillé sur un système prototype qui devait utiliser certains composants de notre infrastructure IntelliSense pour cataloguer automatiquement toutes les parties de notre SDK.

Sur quoi vous concentrez-vous maintenant ?

Mohammad : Les performances, les performances et encore les performances !

Les fonctionnalités que j'ai gérées sont proches du bas de la pile logicielle et sont utilisées très fréquemment, ce qui fait que leurs performances sont primordiales. Par conséquent, je me concentre maintenant sur l'analyse des performances et sur la création de maquettes et l'intégration de différentes améliorations des performances. Depuis le début, nous avons créé chaque composant pour qu'il soit hautement performant, et nous sommes donc maintenant en train d'affiner ces performances, étant donné la tonne de code qui a été écrite dans l'infrastructure.

Comment validez-vous l'intégralité du travail ?

Chris : En tant que membre d'une équipe dédiée à l'amélioration de l'expérience des développeurs d'applications, il est important de quitter régulièrement le rôle de développeur système pour endosser le rôle de développeur d'applications. Cela s'effectue à petites doses dans notre travail de tous les jours, mais nous le faisons de façon plus structurée lors des semaines de conception d'applications. En nous reposant sur la semaine initiale de conception d'applications qui a eu lieu lors de la planification, nous avons pris le temps à chaque étape de développer une application à l'aide du système WinRT, avec différentes équipes concentrées sur différents langages et API. Écrire des applications sur une plateforme qui est encore en cours de développement engendre certains défis intéressants et ces semaines amènent un changement de rythme agréable. Ces semaines de conception d'applications (certaines incluent un plus grand nombre d'équipes) ont permis de classer de nombreux bogues et nous ont conduit à repenser et à modifier certaines de nos instructions concernant les API afin de rendre l'expérience des développeurs plus naturelle et familière. Un « bogue » peut prendre la forme d'un blocage irrécupérable, d'une fuite de mémoire ou d'une faille de sécurité, tout ce qui mène à un rapport du genre « quelque chose semble anormal ». Nous traitons tous les phénomènes comme des bogues et suivons un processus de classement et d'établissement de priorités de ces rapports. Les rapports émanent de groupes qui conçoivent Windows dans nos API, d'autres groupes à Microsoft, de partenaires de longue date, tels que des fabricants de périphériques et de PC, de nos assistants (comme vous l'avez vu lors de la conférence //build/) et de personnes participant aux forums qui créent maintenant des applications dans la version Developer Preview.

Quelle est la leçon la plus importante que vous avez apprise ?

Mohammad : J'ai pu être confronté à l'idée que « tout ce qui peut aller de travers ira de travers » étant donné la taille et l'échelle du produit et le grand nombre d'utilisateurs (au fait, nous testons notre travail en interne depuis le tout début sur nos machines de développement principales). Cela m'a appris qu'être attentif aux détails et se concentrer sur la qualité de chaque ligne de code est très important pour la stabilité globale du produit. Bien sûr, ce n'est qu'une des nombreuses leçons importantes que j'ai apprises jusqu'ici. Je travaille toujours sur ma première version de Windows et je m'attends à apprendre d'autres choses lors des phases prochaines du produit.

J'ai hâte d'y être.

Chris : Moi aussi !!

  • Loading...
Leave a Comment
  • Please add 7 and 1 and type the answer here:
  • Post