?!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
软g开发,在保证功能完成之后,首要的一件事是Q确保Y件不会给客户带来破坏。因此除了敏捷开发以外,我们主要做了三g事情来让码农不要在开发的时候太分心搞别的?/span>
W一件事是你做了一个关键的设计之后Q会有一个负责security review的小l来看你的文档,问你问题Q根据他们的专业l验指出软g哪里可能是会被攻ȝ薄弱环节。D个例子,你用了XML做配|文Ӟ如果用户偷偷l你换了一个破坏过的XMLQ你的程序就会挂。一旦程序进入挂了的状态的时候,是很危险的。如果你试图恢复它然后l运行,你就得考虑大量的细节,来把你的软g从错误的状态恢复到正确的状态。中间稍有不慎就Ҏ被攻凅R所以我们都鼓励_一旦发生了q些不可逆{的破坏,pE序自己出dump然后自杀。当然具体到XMLq个例子Q我们还有xsd文gQ用Windows自带的MSXMLlg来实现验证一下,所以还是个小事。JSON没q个利了?/span>
W二件事情就是,我们的环境搭得特别科学。譬如说你开发SQLServer2014Q那你还要给SQLServer2008打补丁?008打补丁的时候用的SDK和开发环境可能跟2014有巨大的区别。所以我们有一个Build TeamQ写了几万行的perl和bat脚本Q来使得我们可以做到_我们只要?014的branch切换?008的branchQ这些工具就自动变了Q譬如说cl.exe׃新的版本指向了旧的版本,库啊什么其他的׃八糟的也是。如果你刚好用不上Visual Studio的话Q只要你把代码从Source Control上搞下来Q运行他帮你建立在桌面上的一个快h式,可以打开一个cmdQ里面的环境都配|好了, 而且不会污染别的cmd 。那我们再也不怕手忙脚q错工h开发导致出现更多问题了。一个h有可能要同时在不同的版本上干不同的事情,因此q是很重要的。因此我们也会把大量的二q制文gcheckinq去Q因此很多组试使用git最后都p|?/span>
W三件事情就是制度的问题了。品狗在我们这里,责Q很大Q权力很。原则上产品狗是不了我们的Q我们之所以听产品狗的话,是因为我们跟产品狗都有相同的目标——把软g做好。所以每当品狗做了一些奇怪的军_的时候,我们可以很容易的拒绝他。他Z完成他们自己的工作指标,要么p来说服我们,要么只能改自己的决定了。因Z品狗和码农之间没有达成一致从而导致Y件没按时完成的,产品狗具有很大的责Q。我们还有专业的试团队。测试团队的权力不小。譬如说产品狗提了一个需求,试可以跛_来说q个功能会给试带来无比的困难,从而拒l品狗的决定。因此品狗的每一个决定,首先要保证可以被U学的实现出来。当然品狗自己通常可能不知道什么是U学Q所以我们要通过不断的打他的脸来让他明白Q什么是U学?/span>