Hinter den Kulissen der Entwicklung von Windows 8

Die Entwicklung von Windows 8

Einblicke in die Arbeit des Windows-Entwicklerteams

Hinter den Kulissen der Entwicklung von Windows 8

  • Comments 5

Bevor wir damit beginnen, weitere Einzelheiten über die Consumer Preview und einige Änderungen oder Funktionen zu besprechen, über die wir noch nicht gebloggt haben, möchten wir zuerst das Team noch einmal vorstellen. Die Entwicklung von Windows 8 ist eine wichtige Unternehmung, an der ein Team mit den unterschiedlichsten Hintergründen und Erfahrungen beteiligt ist. Wir sind stolz darauf, dass die Vielfältigkeit unseres Teams so groß ist wie die der Kunden, die Windows weltweit verwenden. Im letzten Beitrag schrieb eines der Teammitglieder, Larry Osterman, über die Arbeit an Windows 7 im Vergleich mit Vorgängerversionen. Dieses Mal diskutiert Larry mit zwei weiteren Teammitgliedern über das Windows 8-Projekt. 
– Steven


Vor drei Jahren schrieb ich für den Blog "Die Technik von Windows 7" einen Beitrag über den Entwicklungsprozess von Windows 7. Dieses Mal lassen wir zwei der neueren Mitglieder des Teams zu Wort kommen. Sie sprechen in einer lockeren Frage- und Antwort-Sitzung mit zwei Mitgliedern unseres Windows Runtime Experience-Teams, die beide erst kurz vor dem Planungsbeginn von Windows 8 damit begonnen haben, sich mit Windows zu beschäftigen. (Windows 8 ist also die erste Windows-Entwicklung, bei der sie von Anfang bis Ende dabei waren.)

Erzählt mir ein bisschen über euch selbst. Woher kommt ihr, und wie lange seid ihr schon bei Microsoft?

Chris: Hi, ich bin Chris Edmonds. Ich bin in Oregon geboren und habe auch an der Oregon State University studiert (Go, Beavers!). Bei der NASA und bei Garmin habe ich Praktika absolviert. Dabei habe ich an Projekten mitgearbeitet, die von Robotertechnik bis zur Luftfahrtelektronik reichten, und ich habe an Highspeed-Routing für Mehrkernprozessoren geforscht. Microsoft hat mich von der Oregon State rekrutiert, und vor ungefähr zweieinhalb Jahren kam ich ins Windows-Team.

Mohammad: Hallo, ich heiße Mohammad Almalkawi. Ich bin Softwaredesigntechniker in der Windows-Abteilung von Microsoft. Ich bin auch seit ungefähr zweieinhalb Jahren bei Microsoft. Ich habe meinen Abschluss an der University of Illinois at Urbana-Champaign (Go, Illini!) gemacht, wo ich an Untersuchungen zu Fehlertoleranz und Echtzeitsystemintegration gearbeitet habe.

Woran arbeitet ihr bei Windows 8?

Chris: Ein paar Monate bevor Windows 7 in Produktion ging, habe ich angefangen, im Windows-Team zu arbeiten. Kurz danach wurde ich Mitglied des neu geschaffenen Windows Runtime Experience-Teams. Das Runtime Experience-Team erstellt viele Komponenten der Windows Runtime-Infrastruktur (WinRT). Während der Entwicklung von Windows 8 hatte ich die Gelegenheit, an einer Vielzahl von WinRT-Elementen mitzuarbeiten.

Im Rahmen des ersten Meilensteins (von drei) arbeitete ich an der Definition von Grundstrukturen des WinRT-Systems. Wir unterteilen das Projekt in drei Meilensteine und verteilen die Architektur und Implementierung darauf, um vom ersten Entwurf zu einem fertigen Produkt zu gelangen. Wir müssen alle nötigen Arbeitsschritte einbeziehen, um die verschiedenen Technologien für Windows 8 zu koordinieren. Im ersten Meilenstein (M1) haben wir Strukturen für Ereignisse, Objektkonstruktion, asynchrone Methoden und Methodenüberladung entworfen. Es war entscheidend, leistungsfähige Strukturen für diese grundlegenden Konzepte zu definieren, um so in jeder Programmiersprache, die mit der WinRT interagiert, den Entwicklern diese Konzepte auf intuitive und vertraute Art verfügbar zu machen.

Im zweiten Meilenstein hatte ich die Gelegenheit, einen Teil der Bereitstellungsmethodik für Apps im Metro-Stil zu entwickeln. Ich habe insbesondere an der Registrierung von Apps im Metro-Stil in der WinRT gearbeitet, sodass sie gestartet werden und mit Verträgen interagieren können.

Der dritte Meilenstein beinhaltete viel teamübergreifende Zusammenarbeit, bei der ich die Erfahrung machte, dass dies bei einem Projekt von der Dimension von Windows 8 ganz entscheidend ist. Ich habe mit einer Gruppe zusammengearbeitet, um Kernstücke des Anwendungsmodells für Apps im Metro-Stil zu definieren und zu implementieren. Hierdurch konnten wir sicherstellen, dass Apps im Metro-Stil, die in unterschiedlichen Sprachen und auf unterschiedlichen Benutzeroberflächen-Plattformen geschrieben wurden, sich hinsichtlich Verträgen und Anwendungslebensdauer konsistent verhalten.

Mohammad: Ich hatte die Möglichkeit, ganz von Anfang an bei Windows 8 mitzuarbeiten. Wir hatten drei übergeordnete Meilensteine (M1, M2 und M3), um unsere Ziele für Windows 8 zu umzusetzen. Jeder dieser Meilensteine bestand aus:

  • Spezifikations- und Designphase, in der bei Meetings von Funktionsgruppen und in engem Kontakt mit Windows-Partnerteams und in der gesamten Firma die Anforderungen herausgearbeitet wurden. Eine Funktionsgruppe besteht aus den Entwicklern, Testern und Programmmanagern, die an einer bestimmten Funktion arbeiten – normalerweise 4 oder 5 Personen. Das Ergebnis dieser Phase war ein Satz von Spezifikationsdokumenten: Funktional (pm), Entwicklungsdesign (dev), Testdesign und Risikomodell (test). Außerdem erarbeitete die ganze Gruppe einen Ausführungsplan. Auf diese Weise konnten wir ein besseres Verständnis der Funktionsdetails entwickeln und die weitere Arbeit zuversichtlich und konzentriert angehen.
  • Codierungsphase, in der die Funktionen, die in der Spezifikationsphase herausgearbeitet wurden, implementiert und die dazugehörigen Einheits- und Funktionstests durchgeführt wurden.
  • Integrations- und Stabilisierungsphase, in der die verschiedenen Komponenten der unterschiedlichen Teams zusammengefügt und Fehler beseitigt wurden.

Beim ersten Meilenstein habe ich am Design und der Entwicklung zum Finden und Aktivieren von App-Erweiterungen mitgewirkt. Diese WinRT-Infrastruktur ermöglicht es Apps, vom Betriebssystem unterstützte Verträge (wie z. B. Suchen und Freigeben) zu nutzen, und dient als Grundlage für praktische Windows-Funktionen, darunter die Knöpfe "Suche" und "Freigeben".

Im zweiten Meilenstein war ich dafür zuständig, die Windows-Metadatenauflösungsfunktion zu implementieren. Das ist eine Schlüssel-API, die die von der WinRT-Toolkette generierten Windows-Metadaten mit JavaScript- und C#-Sprachprojektionen verbindet.

Im dritten Meilenstein M3 war ich schließlich für Design und Entwicklung der Namespaceenumerations-API zuständig, die dem Chakra-JavaScript-Modul die Unterstützung der Reflektionsfunktionalität über WinRT-Namespaces und -Typen ermöglicht. CLR verwendet diese API ebenfalls, um die Metadatenauflösung zu implementieren. In Visual Studio wird IntelliSense für WinRT-Typen von der API unterstützt.

Wie sieht ein normaler Arbeitstag aus?
Chris: Normaler Tag? Was ich an der Arbeit an Windows wirklich mag, ist, dass es selten einen normalen Tag gibt. Je nach der Phase im Produktzyklus verbringe ich den Tag damit, Spezifikationen oder Code zu schreiben, im Team Ideen auszuarbeiten, Fehler zu beseitigen oder mit einer von vielen anderen Tätigkeiten. Obwohl die Aufgaben abwechslungsreich sind, bin ich fast immer irgendwie mit der Lösung von Problemen beschäftigt. Unabhängig davon, ob es darum geht, die Ursache eines Absturzes zu ermitteln oder beim Funktionsentwurf auszuhelfen, arbeite ich täglich mit klugen Kollegen daran, interessante Probleme zu lösen.

Was war für euch bisher die größte Überraschung?

Chris: Ich glaube, was mich bei der Arbeit an Windows am meisten überrascht hat, war die Größe des Teams und die Menge der Tätigkeiten, die zu jedem beliebigen Zeitpunkt stattfinden. Bei der Arbeit an den wenigen Funktionen, für die ich zuständig war, konnte ich mit Hunderten anderer Kollegen aus dem ganzen Team gemeinsam über Spezifikationen und Lösungen sprechen. Es klingt sehr hektisch (und anfangs war es auch ein wenig überwältigend), aber ich bin immer wieder erstaunt, wie gut die Teams miteinander kommunizieren, um auf hervorragende Problemlösungen zu kommen. Wenn man bedenkt, wie viele Benutzer Windows verwenden, und berücksichtigt, auf wie viele Arten Windows eingesetzt wird, erscheint es wohl ziemlich unglaublich, dass wir all das mit so wenigen Leuten schaffen.

Mohammad: Was mich bei Microsoft am meisten überrascht hat, ist, dass du gleich auf Probleme in der richtigen Welt losgelassen wirst und die Chance erhältst, von Anfang an für entscheidende Komponenten verantwortlich zu sein. Du lernst beim Arbeiten und nicht in Schulungen, obwohl auch diese bei Bedarf zur Verfügung stehen.

Du wirst natürlich nicht alleine gelassen, denn es gibt viele Unterstützungsmöglichkeiten, Experten für Fachgebiete und erfahrene Techniker, die dir ggf. helfen können.

Wie unterscheidet sich Windows 8 von anderen Projekten, an denen ihr gearbeitet habt?

Chris: Bisher habe ich ja an der Oregon State und bei meinen vorigen Praktika vor allem an kleineren Projekten gearbeitet (die meisten Codierungsprojekte sind klein im Vergleich zu Windows), daher ist der größte Unterschied, wie viel Code ich jeden Tag lese. Ich verbringe einen Großteil des Tags damit, Code zu lesen und Fehler zu beheben, den andere Teams geschrieben haben, bevor ich zu Microsoft kam, aber auch Code zu überarbeiten, den ich in einem früheren Projektmeilenstein selbst geschrieben habe. Dadurch weiß ich gut geschriebenen Code inzwischen wirklich zu schätzen.

Was war die größte Herausforderung, die ihr bisher lösen musstet?

Mohammad: Kurz nachdem ich ins Team kam, musste ich Fehler in der COM-Aktivierung beheben, die in unvertrautem Code geschrieben war. Dieser Code gehört zur grundlegenden Infrastruktur, da viele Windows-Komponenten darauf aufbauen. Es war daher entscheidend, dass meine Änderungen keine Regression verursachen.

Für die Experten in meinem Team war der Code vermutlich unkompliziert, aber für einen Neuling wie mich war er das mit Sicherheit nicht. Ich musste sehr viel Code lesen, mich mit dem Debugger vertraut machen und viele Testfälle schreiben, um so mein Verständnis zu verbessern und sicherer zu werden, damit ich die nötigen Änderungen vornehmen konnte, ohne etwas zu beschädigen.

Könnt ihr mir ein bisschen darüber erzählen, wie die Planung für Windows 8 abläuft?

Chris: Die Planung von Windows 8 stellt die einzelnen Leute im Team vor verschiedene Herausforderungen. Das neu formierte Runtime Experience-Team verbrachte im Rahmen der Planungsarbeiten eine Woche damit, Apps in einer Vielzahl von Sprachen, Stapeln, Frameworks und Technologien zu erstellen. Der Grund hierfür war, dass ein Entwicklungsgrundsatz von Windows 8 darin besteht, mehrere Sprachen bei der Programmierung einsetzen zu können. Dadurch sollte jeder von uns gezwungen werden, eine unvertraute Sprache zu verwenden und so die Lernkurve zu erleben. Ich habe mit IronPython und XNA an einem 3D-Geländegenerierungsprogramm gearbeitet, an einer Fotogalerie-App in HTML/JavaScript und an einem einfachen 2D-Physikmodul in C++ mit GDI zum Zeichnen. Zu den App-Entwicklungsübungen haben wir Präsentationen für das Team erstellt, um die guten und schlechten Erfahrungen bei der Entwicklung der Apps untereinander auszutauschen.

Was hat euch beeindruckt?

Mohammad: Ich war von der Qualität des von uns eingesetzten Windows-Konstruktionssystems sehr beeindruckt. Es unterstützt Tausende von Windows-Softwaretechnikern und sorgt durch das Ausführen von Builds und Quality Gates über Nacht dafür, dass Millionen Zeilen von Code im Betriebssystem intakt bleiben. Die automatisierten Quality Gate-Durchläufe umfassen entscheidende End-to-End-Tests, Leistungstests, App-Kompatibilitätstests, statische Codeanalyse und noch ein paar andere Tests, mit denen wir Probleme rasch entdecken können und durch Vor- und Rückintegrationen sicher unter Kontrolle haben.

Was bedeutet Meilensteinqualität (MQ)?

Chris: In diesem Meilenstein geht es darum, die Codebasis, die Konstruktionstools und den Konstruktionsprozess für den nächsten Produktzyklus vorzubereiten. Wie ich gelernt habe, dient die MQ dazu, den Code zu überprüfen und ihn in Ordnung zu halten. Das reicht vom einfachen Bereinigen der Quelldateien bis zur Wiederholung der Abstraktionen, mit denen wir uns auf unsere Entwicklungsarbeiten für Windows 8 vorbereiteten. Code ist unser Kapital, also ist es wichtig, ihn immer einwandfrei zu halten. Ich war während der MQ von Windows 8 an drei verschiedenen Aufgaben beteiligt. Die erste bestand in der Erstellung eines Systems, das, basierend auf den täglichen Testläufen, Codeabdeckungszahlen mittels eines internen Dashboards automatisch an das Team übermittelt. Dies war eine meiner ersten Aufgaben bei Microsoft, und sie bot mir eine großartige Gelegenheit, unsere Konstruktionssysteme kennenzulernen. Die zweite Aufgabe, an der ich mitwirkte, war ein Codehygieneverfahren, das zur Standardisierung von Assertionen innerhalb der gesamten Codebasis beitragen sollte. Schließlich war ich noch an einem Prototypsystem beteiligt, das mithilfe einiger Elemente der IntelliSense-Infrastruktur automatisch alle Komponenten des SDK katalogisieren sollte.

Worauf konzentriert ihr euch zurzeit?

Mohammad: Leistung, Leistung und nochmal Leistung!

Die Funktionen in meinem Verantwortungsbereich befinden sich weit unten im Softwarestapel und werden häufig verwendet, sodass ihre Leistung von ganz entscheidender Bedeutung ist. Ich konzentriere mich daher darauf, die Leistung zu analysieren und Prototypen für verschiedene Verbesserungen zu entwickeln und zu integrieren. Wir haben die Elemente von Anfang an auf Hochleistung ausgelegt, und jetzt arbeiten wir an der Feinabstimmung der Leistung, angesichts der unglaublichen Menge an Code, die für diese Infrastruktur geschrieben wurden.

Wie überprüft ihr die Arbeit als Ganzes?

Chris: Wir sind Teil eines Teams, das sich mit der Verbesserung der Arbeitsbedingungen von App-Entwicklern beschäftigt. Daher ist es wichtig, dass wir uns regelmäßig aus unserer Rolle als Betriebssystementwickler heraus- und in die eines App-Entwicklers hineinversetzen. Im Kleinen erfolgt das bei der täglichen Arbeit, aber besonders strukturiert während der App-Entwicklungswochen. Auf Grundlage der anfänglichen App-Entwicklungswoche während der Planungsphase gibt es in jedem Meilenstein einen Zeitraum, in dem wir mithilfe der WinRT eine App entwickeln. Dabei konzentrieren sich verschiedene Teams auf unterschiedliche Sprachen und APIs. Das Schreiben von Apps auf einer Plattform, die noch in der Entwicklung ist, stellt eine interessante Herausforderung dar, sodass diese Wochen einen Tempowechsel mit sich bringen, der Spaß macht. Als Ergebnis dieser App-Entwicklungswochen, an denen manchmal auch andere Teams beteiligt waren, wurden etliche Fehler katalogisiert. Sie bewogen uns, einige unserer API-Anleitungen zu überdenken und zu ändern, damit sie von den Entwicklern leichter und intuitiver genutzt werden können. Ein "Fehler" kann alles sein, vom Totalabsturz über Arbeitsspeicherverluste oder Sicherheitslücken bis hin zu Berichten, dass "irgendetwas nicht ganz in Ordnung zu sein scheint". Wir behandeln all dies als Fehler und kategorisieren und gewichten die Berichte nach einem festen Schema. Die Berichte stammen von den Gruppen, die an den Windows-APIs arbeiten, von anderen Gruppen bei Microsoft, von frühen Partnern wie etwa Geräte- und PC-Herstellern, von unseren Praktikanten (wie Sie auf der //build/ sehen konnten) und von Personen in Foren, die jetzt mit der Developer Preview Apps entwickeln.

Was war das Wichtigste, das ihr gelernt habt?

Mohammad: Ich musste die Erfahrung machen, dass tatsächlich "alles, das schiefgehen kann, auch schiefgehen wird", und das bei den Dimensionen des Produkts und der großen Anzahl seiner Benutzer. Übrigens verwenden wir unsere Entwicklungen ganz von Anfang an intern selbst auf unseren Hauptentwicklungscomputern. Das hat mich gelehrt, dass es für die allgemeine Stabilität des Produkts von höchster Bedeutung ist, sich bei jeder Zeile Code auf die Qualität zu konzentrieren und jedes Detail zu beachten. Natürlich ist das nur eine von vielen wichtigen Erfahrungen, die ich bislang gemacht habe. Ich bin immer noch dabei, mich durch meine erste Windows-Veröffentlichung zu arbeiten und bin sicher, dass es auch in den kommenden Entwicklungsphasen des Produkts noch viel zu lernen gibt.

Ich kann es kaum erwarten.

Chris: Ich auch nicht!

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