加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

NEWT的技术转化之路

(2009-12-03 11:45:21)
标签:

微软亚洲研究院

newt

技术转化

visual

studio

创新技术

跨组合作

it

分类: 技术

作者:创新工程中心  杨帆

 

维护和更新NEWT,是我进入微软接触到的第一个项目,现在NEWT即将随下一代的微软开发工具Visual Studio 2010发布,我很自豪自己也为这个软件的发展出过一份力。

NEWT的技术转化之路

 

Figure 2 NEWT会作为Visual Studio 2010负载测试的一个模块

 

为内部用户服务

NEWT在很长一段时间是仅提供给微软内部的员工来使用,微软内部有一个软件共享的网站叫Toolbox,很多项目组都把自己实验性的新软件和一些工具通过Toolbox来共享,NEWT也是其中的很受欢迎的一员。我们在公司内部维护一个关于NEWT技术讨论的邮件列表,起初的目的主要用来回答内部用户提出的问题,接收使用的反馈。简单的统计,有超过100个用户加入这个列表。我们也可以看到,这些用户遍及微软的各个重要研发部门,Windows、Office、Bing、XBox等等,分散在世界的各个角落。通过这样的邮件列表,我们也是在维护一个内部的技术社区,社区的力量在于有效的互动来不断提高软件,通过解答用户的问题,我们对于NEWT本身也有了更深的认识。

 

不同的软件有着不同的测试场景,有很多其他产品部门的资深同事给我们提出了很多好的建议,其中包括了很多隐蔽的BUG、平台和与其他软件的兼容性问题,和一些新的功能等等。现在在Office组的吉姆佩尔森是位资深的网络性能优化的专家,他和他的团队致力于提供网络性能测量分析的工具,并帮助微软的在线服务提高性能,当吉姆使用了NEWT后,敏锐的发现了这个工具的优点,然后在他们的解决方案中一直首推NEWT作为其核心部件,甚至在他给公司的高层领导做报告时也力推使用NEWT作为公司下一代平台的网络仿真工具解决方案。象吉姆这样在NEWT社区中很活跃的专家还有很多,NEWT在微软内部的不断推广也和他们的支持有着很大的关系。我们基于社区用户的反馈,修正程序的不足,在内部发布出新的版本,用户的满意程度也在逐步提高。

NEWT的技术转化之路

 

Figure 1 NEWT收到内部用户的积极反馈

 

NEWT对于测试工程师是很有效的一个工具,通过仿真不同的网络状况来测试,可以发现软件中很多网络通讯潜在的问题,不仅内部的同事在使用,其合作伙伴也了解并体验到网络仿真对于测试带来的方便。在NEWT的邮件列表中,我们经常能够收到有同事转达他们的合作伙伴的信息,其中甚至包括当前很有名的互联网公司,他们希望NEWT能够给他们作为商用,对于这样的请求我们只能委婉的拒绝,这是因为NEWT一直还只是一个内部使用的工具,微软的规定不允许发行未经审核的软件,需要通过相应的流程来规范软件,然后才能对外发布。微软的产品部门有着很丰富的经验开发高质量的大型软件,这些经验和相关的最佳实践被总结出来就形成了发布软件所需要遵循的流程。为了进一步的提高NEWT的质量,以达到对外发布的质量,我们进行了SWI/CPx的流程,这些流程从安全,隐私,法律,维护性等方面提出问题,如果软件在某些方面有违反的,就需要进行修正。经过了3个多月的时间,我们完成了SWI和CPx的流程,这也就是说NEWT已经具备的了对外发布的基本条件。

 

Visual Studio 结缘

如果NEWT能够对外发布,全世界的软件工程师都能够从中受益。我们希望能够有产品部门来接手NEWT,并提供更加专业的维护和用户支持。我们也和多个产品部门的同事进行合作,首先NEWT成为了XBox XDK, Windows Game Live开发包中的一部分,和微软有协议的第三方游戏开发公司的软件工程师就可以使用到NEWT,但是软件的用户数量还是很有限制。然后我们另一个重要的合作伙伴是Visual Studio部门。Visual Studio是微软提供的一个强大的集成软件开发环境,它提供了软件的设计,开发,测试,管理这些重要功能,一个软件团队可以高效的通过Visual Studio来进行协同。Visual Studio的测试功能中很重要的一部分是可配置的负载压力测试,比如网站的开发人员可以很容易的在Visual Studio中实现按照特定模式的负载请求,通过这些请求来测试网页的响应时间和服务器端的性能。NEWT是Visual Studio中进行压力测试很重要的一个补充,在实验室中来模拟真实的网络环境是很有意义的,很有效的降低了构建测试网络的成本。NEWT为Visual Studio贡献了对于网络带宽,延迟,丢包等方面的仿真功能。 

 

在和Visual Studio部门的合作过程中,我们是要把根据其产品的需求,把NEWT集成进最新的Visual Studio 2010版本中去,这是代码上的技术转化,我们和Visual Studio部门的同事进行了更加密切的合作。微软的产品部门有着自己很严格的开发流程,同时对模块的质量也有着更高的要求。我们又有了很多新的挑战,比如转换编译环境;将以前内核驱动中存在潜在风险的C++实现的部分改写为C语言实现;支持WOW64接口;修改对于驱动的日志管理以方便诊断等等。技术方面的问题,一般来说都可以找到合适的解决方案,对于我们最大的挑战实际是在于和Visual Studio部门同事的沟通,我们所合作的Visual Studio部门位于美国北卡罗来纳州的城市罗利,它和北京有着12个小时的时差,开玩笑的说,那些同事基本上是位于我们的脚底下,我们工作时他们休息,我们休息时又到了他们的工作时间。Visual Studio部门的劳尼主要和我们一起负责集成NEWT到Visual Studio中,这个同事我见过,长得很高很胖,如果戴上墨镜看起来给人感觉,还就真像是电影中的美国保镖,而他在工作中也是十分细致认真,经常在我们北京时间早上和中午给我发消息讨论技术问题,这一度让我不好意思,以至于有一段时间在我们的北京时间晚上十一二点钟时等着他上班了上线,回复他没有讨论完的问题。

 

此外,在合作过程中,也会有一些小插曲,Visual Studio部门的软件测试更加的严格,他们就发现这样一个问题,是在极限的压力测试下,安装有NEWT的电脑会在测试时导致网络失去连接。开始没有找到原因的时候,我们一度忐忑不安,担心会影响产品发布的进度,经过我们进一步的测试发现,这个问题在仅在某些网卡上有重现,其他的网卡是正常的。最终是发现原来导致这个问题的原因是那些网卡本身的驱动软件没有很好的处理在有压力的网络流量的情况下缓冲区管理的问题。NEWT帮助我们找出了那款网卡驱动的BUG。针对这个问题我们做了一个折中的方案来保证NEWT可以正常工作。辛苦的工作总会换来回报,当我们的模块能够正常的工作在Visual Studio 2010的测试版本中时,那种兴奋和满足的感觉也是平常的工作所没有的,感觉就像是把多年患难与共的好友送上一艘远行探险的大船。

 

现在互联网的用户已经可以通过下载使用Visual Studio 2010 Beta1预览版本来使用网络仿真器的功能,最终在Visual Studio 2010正式版中也会包含这个功能,为广大的程序员所使用。NEWT是个很有用的软件,当NEWT能够为更为广大的程序员使用,并帮助他们提高软件的质量时,才算是发挥其最重要的影响力,为了这一点,我们一直在努力。

 

作者介绍

 

杨帆:陕西人,北京航空航天大学计算机专业硕士,微软亚洲研究院创新工程中心软件开发工程师。

 

相关文章:NEWT的前世今生

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有