设置
  • 日夜间
    随系统
    浅色
    深色
  • 主题色

微软自曝:Windows8开发幕后鲜为人知的故事

2012/3/13 16:39:24 来源:IT之家 作者:子非 责编:子非

随着Win8消费者预览版的发布,微软Windows8团队开始更多的专注讨论Win8 CP版的发布,以及其中的修改,这段时间并未在官方博客介绍新功能。退一步讲,微软重新介绍了自己的团队。构建构建Windows8是一项浩大的工程,需要具有不同背景和经验的众多团队成员共同参与。微软团队的这种多样性同样反映了全球各地Windows用户的多样性,这让他们倍感自豪。

本篇博文中,微软团队的Larry Osterman撰文,通过两名其他团队成员的口述,向用户展示Windows8项目的一些侧面。

微软官方博文如下:

三年前,我曾撰写过一篇有关Win7开发过程的 Engineering Windows 7 博文。这一次,我们将通过与 Windows 运行时体验团队两名新成员的非正式互动问答,帮助您了解他们的心声,这两名成员都是在我们即将开始规划Windows8前,才加入了我们的团队(因此,Win8是他们从头至尾开发完整 Windows 的初次体验)。

先来进行一下自我介绍吧。你们来自哪里,在 Microsoft 工作了多久?

Chris:大家好,我叫 Chris Edmonds,是俄勒冈本地人,我毕业于俄勒冈州立大学(上吧,海狸队!),并曾在 NASA 和 Garmin 实习。在这些学习和工作经历中,我曾参与过机器人和航空电子学的项目,并从事过多核处理器高速路由的相关研究。Microsoft 从俄勒冈州录用了我,并在大约两年半之前安排我加入了 Windows 团队。

Mohammad:大家好,我叫 Mohammad Almalkawi,是 Microsoft Windows 部门的一名软件设计工程师。我已经在 Microsoft 工作了约两年半。我毕业于伊利诺伊大学香槟校区(上吧,伊人队!),并曾在该校从事过容错和实时系统集成的研究。

你们在 Windows 8 项目中负责哪些工作?

Chris:我在Windows7正式发布前几个月加入到 Windows 团队。不久之后,我加入了新成立的 Windows 运行时体验团队。运行时体验团队构建了 Windows 运行时 (WinRT) 基础架构的方方面面。在 Windows 8 的开发过程中,我有幸参与了 WinRT 多个部分的设计。

在(三个时间段中的)第一个时间段,我参与了 WinRT 系统核心模式的定义。我们将整个项目划分为了三个时间段,并根据从最初设计到最终产品的过程,将体系结构和实施划分到这些时间段中。我们必须承担起协调 Windows 8 所涉及各种技术的全部工作。在第一个时间段 (M1),我们设计了事件、对象构建、异步方法和方法重载的模式。为这些基本概念定义坚实的模式非常重要,这样才能保证与 WinRT 进行互操作的每种编程语言能够以自然和熟悉的方式向开发人员呈现这些概念。

在第二个时间段,我有幸参与了 Metro 风格应用程序的部分开发工作。我负责的具体工作是 Metro 风格应用程序在 WinRT 中的注册,以便它们可以通过合约启动和交互。

第三时间段包括大量跨小组的协作,我意识到,对于 Windows 8 这样浩大而复杂的项目来说,这种协作的确至关重要。在本时间段中,我与一个团队合作定义和实施了 Metro 风格应用程序的应用程序模型的核心部分。这项工作可以确保以不同语言编写并在不同 UI 平台上运行的 Metro 风格应用程序具有一致的合约行为和应用程序生命周期。

Mohammad:我有幸参与了从初始阶段开始的整个 Windows 8 项目。我们划分了三个主要的功能时间段(M1、M2 和 M3)来逐步实现 Windows 8 的目标。每个时间段的阶段包括:

— 规格和设计阶段,我们会在该阶段通过功能人员会议以及与 Windows 部门和整个公司中其他合作伙伴团队的积极沟通,梳理出功能需求。功能人员由研究同一功能的 4 至 5 名开发人员、测试人员和项目经理共同组成。本阶段会产生一系列规格文档,包括由项目经理提出的功能性文档,由开发人员提出的开发设计文档,由测试人员提出的威胁模型文档,以及由所有成员共同提出的执行计划。这可以帮助我们进一步理解功能的细节,并帮助我们充满信心,同时有所侧重地实施这些设计。
— 接下来是编码阶段,我们会在该阶段实施规格阶段梳理出的功能,并对其进行单元测试和功能测试。
— 最后是集成和稳定化阶段,我们会在该阶段将来自多个团队的不同部分予以集成,并修复缺陷。

在第一个时间段,我参与了应用程序扩展查找和激活的设计和开发。这一 WinRT 基础架构允许应用程序参与受操作系统支持的合约(例如,搜索和共享),并充当现有 Windows 功能的基础,包括,搜索和共享个性分类。

在第二个时间段,我负责实施 Windows 元数据解析功能,这是一个将由 WinRT 工具链生成的元数据与 JavaScript 和 C# 语言投影联系起来的重要 API。

在第三个时间段,我负责设计和开发命名空间枚举 API,该 API 支持 Chakra JavaScript 引擎将功能映射至 WinRT 命名空间和类型。CLR 也使用此 API 来实施元数据解析,并且 Visual Studio 使用此 API 来支持 WinRT 类型的 Intellisense。

能否描述一下你们的日常工作状态?

Chris:日常?在 Windows 团队中度过的每一天都是不同凡响的,这也是最吸引我的地方。根据产品在生命周期中所处的阶段,我可能会将一天的时间花在编写规范、编写代码、与团队中的同事交换意见、修复缺陷或很多其他活动中。尽管工作内容有所不同,但几乎在每天的工作中,我都需要通过解决某种形式的问题。无论是查找奔溃的原因,还是帮助设计某些功能,我每天都需要和各位聪明绝顶的同事们一起解决一些有趣的问题。

这个项目最让你们感到惊奇的部分是什么?

Chris:我认为参与 Windows 项目最令我感到惊奇的部分是团队的规模和始终同时开展的活动数量。在开发分配给我的几项功能的过程中,我有幸与团队中的数百名成员进行交流,并梳理出了规范和解决方案。这种工作方式听起来有些紧张(并且最初确实令我有些手忙脚乱),但当我们通过团队交流得出精彩的点子时,总是令我倍感兴奋。我觉得凭借如此有限的人力,就完成了 Windows 这样具有如此众多用户和用途的项目,简直是一项不可思议的成就。

Mohammad:我觉得在 Microsoft 工作最令我感到惊奇的就是经常会解决一些实际问题,并有机会从头开始负责一些关键部分的开发。我不但能够获得所需的培训,还从实际工作中受益匪浅。

当然,我也并非一个人在黑暗中独自摸索,各种支持渠道、各领域的专家和高级工程师们都会在我需要时伸出援手。

Windows 8 和两位参与过的其他项目有何不同?

Chris:我在俄勒冈州的工作和之前的实习经历中,参与的都是一些规模较小的项目(大部分项目的代码量都远远少于Windows),这其中最大的不同是我每天需要阅读的代码量。我发现在加入 Microsoft 之后,每天需要花大量时间阅读和调试由其他团队编写的代码,还要检查自己在上一个时间段编写的代码。这让我意识到结构良好的代码有多么重要。

你们必须克服的最大挑战是什么?

Mohammad:加入团队后不久,我必须着手修改 COM 激活中的陌生代码。这些代码非常基础,许多 Windows 组件都在其基础上构建,因此我必须保证自己进行的更改不会适得其反。

这些代码对于团队中的专家来说可能非常简单明了,但对于我这样的新手来说绝非如此。我必须阅读大量代码,执行单步调试,并编写大量测试案例,这不但能促进我对代码的理解,还能确保我在未破坏原有功能的同时进行了必要的修改。

你们能否描述一下Windows 8的规划是如何出炉的?

Chris:规划 Windows 8 的情形对于团队中的不同成员来说可谓天差地别。作为规划工作的一部分,新成立的运行时体验团队花费了一周的时间来使用各种语言、堆栈、框架和技术来构建应用程序。这是由于 Windows 8 的设计宗旨之一是可通过多种语言编程。这一宗旨的部分目标是为了强迫我们每个人使用自己并不熟悉的语言,以便体验学习曲线。我使用 IronPython 和 XNA 开发了一个 3D 地形生成程序,使用 HTML\JavaScript 开发了一个照片库应用程序,并使用 C++ 通过绘画 GDI 开发了一个简单的 2D 物理引擎。通过这些应用程序构建练习,我们得以向团队介绍构建每个应用程序所获得的经验,包括正面、负面和不堪回首的经验。

哪些方面给你们留下了最深刻的印象?

Mohammad:我对现有 Windows 工程系统的质量感到印象深刻;它可以同时支持数千名 Windows 软件工程师,并可确保数百万行代码在日常构建和质量检测过程中的健康。自动质量检测包括关键的端到端测试、性能测试、应用程序兼容性测试、静态代码分析和其他有助于快速发现问题的测试,并严格控制其通过正向和逆向集成在分支机构间的传播。

什么是时间段质量 (MQ)?

Chris:本时间段的主要工作是为下一个产品周期准备好代码库、工程工具和工程流程。据我所知,MQ 是检查代码并进行清理工作的阶段,范围从清理源文件直到重做抽象,以便为我们在 Windows 8 中进行的工作做好准备。代码对我们来说是重要的资产,花费时间来维护这些资产对我们来说至关重要。在 Windows 8 的 MQ 阶段,我参与了三项不同的工作。第一项是创建一个可以根据每日测试的通过情况,通过团队的内部面板,自动回报代码覆盖量的系统。这是我在 Microsoft 负责的第一项工作,它给了我一个了解工程系统的绝佳机会。我参与的第二项工作是代码清洁惯例,该管理有助于标准化我们使用代码库中资产的方式。我参与的最后一项工作是一个原型系统,该系统会使用 IntelliSense 基础架构的某些部分来自动编录 SDK 的所有部分。

你们目前正在重点关注哪些方面?

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

我负责的功能接近软件堆栈底层,并且经常使用,因此性能对于它们来说至关重要。我目前正在重点关注性能分析,以及各种性能改进的原型设计和集成。我们从设计之初就将性能放在首位,因此对于已经写入基础架构的大量代码,我们只需对其性能进行精细调整。

你们如何对工作成果进行端到端验证?

Chris:改善应用程序开发人员的体验是团队的宗旨之一,作为团队的成员之一,我们经常需要进行从操作系统开发人员到应用程序开发人员的身份转换,以便进行换位思考。这一理念渗透在日常工作的点滴之中,但应用程序开发周是此类努力中最有组织的行动之一。从规划阶段的首次应用程序开发周以来,我们会在每个时间段花费一些时间来使用 WinRT 开发应用程序,在这一过程中,不同的团队将负责不同的语言和 API。在仍处于开发阶段的平台上编写应用程序会遇到一些有趣的挑战,而这些开发周对我们来说也是一种愉快的调剂。通过这些应用程序开发周(其中一些包含更多的团队),我们找出了大量缺陷,并重新审视和修改了某些 API 指南,以便为开发人员提供更加自然和熟悉的体验。“缺陷”包括致命崩溃、内存泄漏或安全漏洞以及报告“出现某种异常。”等任何问题。我们将所有问题都作为缺陷处理。并通过一系列流程对这些报告进行编录并划分优先级。这些报告来自根据 API 划分的 Windows 小组、Microsoft 的其他小组、设备和 PC 制造商等初期合作伙伴、实习人员(您已经在 //build/ 大会上见过他们)以及目前正在开发人员预览版上开发应用程序的论坛用户。

你们从这个项目中汲取的最大收获是什么?

Mohammad:我实实在在的体会到了“只要存在出错的可能性,错误就一定会发生”这句谚语的含义,考虑到产品的规模和用户数量,一个微小的疏漏都可能酿成大错(顺便一提,从最初在主要开发计算机上的工作开始,我们就在不断试用自己的工作成果)。这让我明白了关注细节和每行代码的质量对于产品整体稳定性有多麽重要。当然,我的收获远不止于此,并且我的 Windows 初体验也还尚未结束,我期待着在后续的产品阶段中学到更多东西。

对此,我已经迫不及待了。

Chris:我也是!!

本文原文出处:Win8之家 - 《微软Win8团队讲述:构建Windows8的幕后故事

最新消息,提醒大家关注Win8之家Windows 8 客户预览版中文论坛

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。

软媒旗下网站: IT之家 辣品 - 超值导购,优惠券 最会买 - 返利返现优惠券 iPhone之家 Win7之家 Win10之家 Win11之家

软媒旗下软件: 魔方 云日历 酷点桌面 Win7优化大师 Win10优化大师 软媒手机APP应用