Windows 8開發的幕后故事

fmms 12年前發布 | 9K 次閱讀 Windows 8

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

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

你們在 Windows 8 項目中負責哪些工作?

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

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

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

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

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

— 規格和設計階段。功能人員由研究同一功能的 4 至 5 名開發人員、測試人員和項目經理共同組成,本階段會產生一系列規格文檔。

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

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

在 M1 階段,我參與了應用程序擴展查找和激活的設計和開發。這一 WinRT 基礎架構允許應用程序參與受操作系統支持的合約(例如,搜索和共享),并充當現有 Windows 功能的基礎。

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

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

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

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

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

你們必須克服的最大挑戰是什么?

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

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

Windows 8 的規劃是如何出爐的?

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

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

Mohammad:我對現有 Windows 工程系統的質量感到印象深刻;它可以同時支持數千名 Windows 軟件工程師,并可確保數百萬行代碼在日常構建和質量檢測過程中的健康。自動質量檢測包括關鍵的端到端測試、性能測試、應用程序兼容性測試、靜態代碼分析和其他有助于快速發現問題的測試,并嚴格控制其通過正向和逆向集成在分支機構間的傳播。

Windows 8 的開發工作目前的重點是?

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

我負責的功能接近軟件堆棧底層,并且經常使用,因此性能對于它們來說至關重要。我目前正在重點關注性能分析,以及各種性能改進的原型設計和集成。我們從設計之初就將性能放在首位,因此對于已經寫入基礎架構的大量代碼,我們只需對其性能進行精細調整。

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!