这两天看了《移山之道:VSTS软件开发指南》,对团队软件开发又有了新的认识。也许对于我们这些软件开发的新手来说,最重要的是具体技术与应用框架,但读了这本书后我感觉到,实际团队项目中工具的使用是次要的,更重要的在于对人员的控制,如何高效得让一个团队各司其职、彼此之间在充分信息交流的基础上协同工作才是一个软件开发过程中最重要的因素。
VSTS 就是微软在MSF框架的基础上发布的一套团队软件开发集成环境,除了开发工具外还集成了测试工具、构建工具、管理工具和协作工具。其逻辑结构简单来说,就是把源代码存放在统一的服务器上,通过服务器程序为客户端不同的人员提供了不同的功能模块,也就是提供了不同的工具,比如为测试人员提供测试模块,为管理人员提供管理模块。不同的模块之间是高度耦合、协同工作的,我认为这样的运作体系之所以高效,除了因为各种工具集成完善之外,更多的原因在于所有人员一切的操作有有迹可寻,这一方面加强了人员的信息交流,免去了很多沟通的障碍,另一方面人们可以学习过去的经验,有一个“错题集”为你整理了过往的全部错题记录,这对于整个团队的建设十分有利。
说到底VSTS只是一个集成环境,完全可以有别的类似的工具出现,微软的这套工具之所以强大,原因在于其背后更深层次的思想与内涵,也就是刚刚说的MSF,即 Microsoft Solver Framework,中文是“微软解决问题框架”,说白了就是大型系统开发指南,是微软在多年软件开发经验的基础上总结出来的一套框架。下面就说说MSF的模型与准则。
MSF框架提出了软件开发过程中的组队模型和过程模型。组队模型其实就是如何进行人员配置,MSF 中技术人员组成为:开发、测试、用户体验、产品管理、程序管理、发布管理几个方面,这套人员体系的提出看似简单,其实背后藏着许多团队的血与泪。
更重要的是过程模型,这是一个团队开发软件的流程框架,如果缺少了这样一套流程体系,像无头苍蝇一样乱撞,开发过程必定会非常低效。过去的软件过程模型有两大类,瀑布模型和螺旋模型。瀑布模型是指,为整个软件开发过程设定一个个里程碑,在完成一个阶段的任务前,后续的工作都无法进行。这对用户需求始终保持不变的项目来说是适用的,但一旦用户需求有变化,整个里程碑的设置都要修改,十分低效。螺旋模型指的是依据用户需求不断改变重新构建软件,这对小型项目比较有效,但一旦项目较大,整个过程会非常混乱。
MSF框架提出的过程模型继承了以上两种模型的优点,它既使用了阶段里程碑的设计,也使用了迭代的方法根据需求重复构建软件。该过程模型中,软件不是像瀑布模型一下开发完整,而是先开发核心功能并构建、发布,然后再根据需求变化加入其他新的功能,不断发布新的版本,这是一个迭代的过程,体现了螺旋模型的优点。而在每一个版本的开发流程中,设置不同的阶段与里程碑,具体分为构思阶段、计划阶段、开发阶段、稳定阶段、部署阶段,分别对应需求分析、方案设计、技术代发、软件测试、项目发布这几个步骤。这样一套结合了迭代与里程碑的高效过程模型,既灵活多变又可稳步前进。
MSF有如下8个准则:推动信息共享与沟通;为共同的远景而工作;充分授权和信任;各司其职,对项目共同负责;重视商业价值;保持敏捷,预期变化;投资质量;学习所有的经验。这样一套设计准则在过程模型中有所体现,也为VSTS工具的设计提供了核心思想,我觉得其更重要的作用是为所有团队人员提供了一套行为与思想准则,是它们软件开发生涯中的人生观与价值观,心齐了步伐才能一致,思想统一团队才能前进。
VSTS集成环境就是对MSF框架的具体实现,其中蕴含了MSF框架的模型与准则。就算大家将来使用不到VSTS工具,了解MSF框架的基本原理对于团队软件开发还是必不可少的。