Windows 8開發(fā)幕后的故事

2012-03-15 09:21:53來源:maxbeta作者:

Windows 8消費者預(yù)覽版的發(fā)布讓世人都有機會體驗這款全新的操作系統(tǒng),那么在其開發(fā)的背后,有什么有趣的故事嗎?微軟近日在官方博客中介紹了Windows 8開發(fā)團隊的兩位新成員及Windows 8項目的“細(xì)枝末節(jié)”。

Windows 8消費者預(yù)覽版的發(fā)布讓世人都有機會體驗這款全新的操作系統(tǒng),那么在其開發(fā)的背后,有什么有趣的故事嗎?微軟近日在官方博客中介紹了Windows 8開發(fā)團隊的兩位新成員及Windows 8項目的“細(xì)枝末節(jié)”。

Chris Edmonds和Mohammad Almalkawi都是在Windows 8即將開始規(guī)劃時加入了微軟開發(fā)團隊,因此,Windows 8是他們從頭至尾開發(fā)完整Windows的初次體驗,下面通過他們的口述,我們能了解很多Windows 8的幕后故事。

你們在Windows 8項目中負(fù)責(zé)哪些工作?

Chris:我在Windows 7正式發(fā)布前幾個月加入到Windows團隊。不久之后,我加入了新成立的Windows運行時體驗團隊。運行時體驗團隊構(gòu)建了Windows運行時 (WinRT)基礎(chǔ)架構(gòu)的方方面面。在Windows 8的開發(fā)過程中,我有幸參與了WinRT多個部分的設(shè)計。

在Windows 8開發(fā)的M1階段,我參與了WinRT系統(tǒng)核心模式的定義。我們將整個項目劃分為了三個時間段,并根據(jù)從最初設(shè)計到最終產(chǎn)品的過程,將體系結(jié)構(gòu)和實施劃分到這些時間段中。我們必須承擔(dān)起協(xié)調(diào) Windows 8所涉及各種技術(shù)的全部工作。在M1階段,我們設(shè)計了事件、對象構(gòu)建、異步方法和方法重載的模式。為這些基本概念定義堅實的模式非常重要,這樣才能保證與WinRT進行互操作的每種編程語言能夠以自然和熟悉的方式向開發(fā)人員呈現(xiàn)這些概念。

在M2階段,我有幸參與了Metro風(fēng)格應(yīng)用程序的部分開發(fā)工作。我負(fù)責(zé)的具體工作是Metro風(fēng)格應(yīng)用程序在WinRT中的注冊,以便它們可以通過合約啟動和交互。

M3包括大量跨小組的協(xié)作,我意識到,對于Windows 8這樣浩大而復(fù)雜的項目來說,這種協(xié)作的確至關(guān)重要。在本時間段中,我與一個團隊合作定義和實施了Metro風(fēng)格應(yīng)用程序的應(yīng)用程序模型的核心部分。這項工作可以確保以不同語言編寫并在不同 UI平臺上運行的Metro風(fēng)格應(yīng)用程序具有一致的合約行為和應(yīng)用程序生命周期。

Mohammad:我有幸參與了從初始階段開始的整個Windows 8項目。我們劃分了三個主要的功能時間段(M1、M2和M3)來逐步實現(xiàn)Windows 8的目標(biāo)。每個時間段的階段包括:

— 規(guī)格和設(shè)計階段。功能人員由研究同一功能的4至5名開發(fā)人員、測試人員和項目經(jīng)理共同組成,本階段會產(chǎn)生一系列規(guī)格文檔。

— 接下來是編碼階段,我們會在該階段實施規(guī)格階段梳理出的功能,并對其進行單元測試和功能測試。

— 最后是集成和穩(wěn)定化階段,將來自多個團隊的不同部分予以集成,并修復(fù)缺陷。

在M1階段,我參與了應(yīng)用程序擴展查找和激活的設(shè)計和開發(fā)。這一WinRT基礎(chǔ)架構(gòu)允許應(yīng)用程序參與受操作系統(tǒng)支持的合約(例如,搜索和共享),并充當(dāng)現(xiàn)有Windows功能的基礎(chǔ)。

在M2階段,我負(fù)責(zé)實施Windows元數(shù)據(jù)解析功能,這是一個將由WinRT工具鏈生成的元數(shù)據(jù)與JavaScript和C#語言投影聯(lián)系起來的重要API。

在M3階段,我負(fù)責(zé)設(shè)計和開發(fā)命名空間枚舉API,該API支持Chakra JavaScript引擎將功能映射至WinRT命名空間和類型。CLR也使用此API來實施元數(shù)據(jù)解析,并且Visual Studio使用此API來支持WinRT類型的Intellisense。

這個項目最讓你們感到驚奇的部分是什么?

Chris:我認(rèn)為參與Windows項目最令我感到驚奇的部分是團隊的規(guī)模和始終同時開展的活動數(shù)量。在開發(fā)分配給我的幾項功能的過程中,我有幸與團隊中的數(shù)百名成員進行交流,并梳理出了規(guī)范和解決方案。這種工作方式聽起來有些緊張(并且最初確實令我有些手忙腳亂),但當(dāng)我們通過團隊交流得出精彩的點子時,總是令我倍感興奮。我覺得憑借如此有限的人力,就完成了Windows這樣具有如此眾多用戶和用途的項目,簡直是一項不可思議的成就。

Mohammad:我覺得在微軟工作最令我感到驚奇的就是經(jīng)常會解決一些實際問題,并有機會從頭開始負(fù)責(zé)一些關(guān)鍵部分的開發(fā)。我不但能夠獲得所需的培訓(xùn),還從實際工作中受益匪淺。當(dāng)然,我也并非一個人在黑暗中獨自摸索,各種支持渠道、各領(lǐng)域的專家和高級工程師們都會在我需要時伸出援手。

你們必須克服的最大挑戰(zhàn)是什么?

Mohammad:加入團隊后不久,我必須著手修改COM激活中的陌生代碼。這些代碼非;A(chǔ),許多Windows組件都在其基礎(chǔ)上構(gòu)建,因此我必須保證自己進行的更改不會適得其反。

這些代碼對于團隊中的專家來說可能非常簡單明了,但對于我這樣的新手來說絕非如此。我必須閱讀大量代碼,執(zhí)行單步調(diào)試,并編寫大量測試案例,這不但能促進我對代碼的理解,還能確保我在未破壞原有功能的同時進行了必要的修改。

Windows 8的規(guī)劃是如何出爐的?

Chris:規(guī)劃Windows 8的情形對于團隊中的不同成員來說可謂天差地別。作為規(guī)劃工作的一部分,新成立的運行時體驗團隊花費了一周的時間來使用各種語言、堆棧、框架和技術(shù)來構(gòu)建應(yīng)用程序。這是由于Windows 8的設(shè)計宗旨之一是可通過多種語言編程。這一宗旨的部分目標(biāo)是為了強迫我們每個人使用自己并不熟悉的語言,以便體驗學(xué)習(xí)曲線。我使用IronPython和XNA開發(fā)了一個3D地形生成程序,使用HTML\JavaScript開發(fā)了一個照片庫應(yīng)用程序,并使用C++通過繪畫GDI開發(fā)了一個簡單的2D物理引擎。通過這些應(yīng)用程序構(gòu)建練習(xí),我們得以向團隊介紹構(gòu)建每個應(yīng)用程序所獲得的經(jīng)驗,包括正面、負(fù)面和不堪回首的經(jīng)驗。

哪些方面給你們留下了最深刻的印象?

Mohammad:我對現(xiàn)有Windows工程系統(tǒng)的質(zhì)量感到印象深刻;它可以同時支持?jǐn)?shù)千名Windows 軟件工程師,并可確保數(shù)百萬行代碼在日常構(gòu)建和質(zhì)量檢測過程中的健康。自動質(zhì)量檢測包括關(guān)鍵的端到端測試、性能測試、應(yīng)用程序兼容性測試、靜態(tài)代碼分析和其他有助于快速發(fā)現(xiàn)問題的測試,并嚴(yán)格控制其通過正向和逆向集成在分支機構(gòu)間的傳播。

Windows 8的開發(fā)工作目前的重點是?

Mohammad:性能、性能—除此之外還是性能!

我負(fù)責(zé)的功能接近軟件堆棧底層,并且經(jīng)常使用,因此性能對于它們來說至關(guān)重要。我目前正在重點關(guān)注性能分析,以及各種性能改進的原型設(shè)計和集成。我們從設(shè)計之初就將性能放在首位,因此對于已經(jīng)寫入基礎(chǔ)架構(gòu)的大量代碼,我們只需對其性能進行精細(xì)調(diào)整。

關(guān)鍵詞:win8

贊助商鏈接: