TFS是微软的应用软件生命周期管理(ALM)的解决方案产品,相比我们常见的一些ALM产品,例如HP ALM, IBM Rational, Atlanssian Jira等,其最大的区别在于TFS将软件研发的详细过程和交付物都集中收集在同一个平台中,实现了软件研发资产的集中管控。同时将软件研发过程中的各种角色, 例如需求分析师、开发人员、测试人员、运维实施人员等集中在一个平台中办公,实现数据的充分共享和互通,大幅提高了企业中不同部门之间的沟通效率。
而在软件研发过程中最重要和最受关注的,非开发人和源代码莫属!在一个软件研发团队中,可以没有需求管理工具(有人用Word或者电子邮件管理),可以没有Bug管理工具(有人用Excel),也可以没有测试用例工具,但是不可以没有源代码管理工具。没有源代码管理工具的团队,其开发效率和质量和因此带来的版本管理混乱的问题,是可以预见的。因此在大部分软件研发团队中,都会使用各自习惯的代码管理工具,例如SVN, CVS, Git, VSS等。代码管理工具对于软件代码的备份、隔离、分支和版本管理等,起到了至关重要的作用。
但是仅有代码管理工具,我们很难追踪代码变更的的缘由,特别是时间一长,或者是开发人员因为工作原因离开了研发团队,新接手的开发人员很难快速介入到代码的开发工作中。更严重的情况是,新的团队接手一个软件系统的开发,经常发现需要耗费大量的时间去整理现有代码结构和变更的原因,由于系统复杂,很多人不愿意在这里花费时间,于是采取重写全部功能的极端方式,完全放弃了之前的代码。之所以造成这种现象,很大一部分原因是由于代码变更没有与对应的需求、任务、bug关联,无法查找到代码变更的来龙去脉,新的开发人员不敢在现有系统中做任何改动,担心动一发而牵全身,造成无法预见的问题。
为了加强代码变更和需求之间的关联,微软TFS在代码与工作项之间创建了强大的关联关系,可以通过需求,实现基于代码行级别的需求跟踪,精确分析代码和需求之间的互动关系。
下图是TFS系统中工作项和代码直接的关联关系图,通过下图可以看到代码变更(变更集)与需求关联在一起,而变更集则包含了每次变更的文件和代码变化信息。
Figure 1 - TFS工作项和变更集关系图
基于上述关系,开发人员在签入代码时,可以选择本次签入的关联工作项,可以是需求、任务或Bug等任何一种工作项类型,如下图:
Figure 2 - 签入代码时,关联工作项
当开发团队按照上面的思路和操作方法签入代码时,TFS则在系统中存储了代码和相关工作的关联关系,为研发团队后续分析问题,修复Bug等提供了数据记录。通过这种数据关系,也可以很方便的基于需求或者Bug抽取受影响的文件,为发布版本创建增量包提供基础数据。例如,我们可以使用一个流行的免费工具(Sidekicks http://www.attrice.info/downloads/index.htm),抽取一条需求受影响的全部文件,如下图:
Figure 3 – 在Sidekicks中,通过工作项查询获取所需的工作项
Figure 4 - 将受影响的文档列表导出成Excel(CVS)文件
Figure 5 - 在Excel中展示需求受影响的代码文件
http://www.cnblogs.com/danzhang/ ALM MVP 张洪君