SlideShare a Scribd company logo
1 of 57
版本控制系统进阶 施懿民 无锡海辉
将项目管理的流程整合进工具里面 使用Visual Studio Team Foundation
规划项目开发流程 定义项目
好的项目开发经验 MSF = “Build IT Right” http://msdn.microsoft.com/en-us/teamsystem/aa718795.aspx MOF = “Run IT Right” http://technet.microsoft.com/en-us/library/cc506049.aspx
产品操作和支持信息系统 操作手续和流程 知识库、报表和操作日志 存放文档、测试结果和源代码的文档库 项目结束报告 用户满意度调查报告 下一个版本的定义 远景和项目范围文档 项目团队结构组建完毕 风险评估文档定型 金盘 发布说明 性能测试指标数据 测试结果和测试工具 产品源代码和相关程序 项目文档 里程碑总结文档 功能说明书 风险管理计划 项目计划和项目进度 产品源代码和程序 安装脚本和安装配置文件 功能列表不再更改 测试用例 产品性能测试支持元素
基于里程碑的增量开发模式 里程碑里有主要里程碑和过渡里程碑 各个子团队通过里程碑来同步进度 不同的里程碑由项目组不同的角色来驱动
MSF的特性 基于里程碑的开发模式。 是一个迭代(重复)的过程。 将源代码的编译以及中间产品的发布管理整合在开发流程当中。 MSF的介绍未完待续……
定义项目范围 渐进螺旋型的开发模式。 细分项目的不同功能模块。 2 1
有效授权 注重产品的 商业价值 对需求变化快速反应 培养开放的沟通环境 职责明确, 分担责任 MSF团队原则 MSF团队理念 平等的 团队成员 有动力的团队 是最高效的 客户至上的 开发思维 将每个交付物 当作产品对待 乐于总结和学习 零缺陷的 开发思路
确定团队成员 T TFS客户端采取通用用户权限管理方式—用户分组,Windows集成身份验证等……
团队成员确立以后,需要建立一套完善的源文件管理规则,这样才能确保服务器上的代码是最完善的。
无规矩不成方圆 – 定义代码管理规则 T 建议启用规则:“所有签入的代码都是可以编译通过的!” 以及“所有的代码签入必须跟一个任务相关联。”
计划项目开发过程 使用VSTF管理工作任务
管理项目中的工作任务 任务列表 TFS将所有的工作任务存放在数据库,并且提供方法跟踪任务完成的进度。 项目经理可以通过各种不同的查询条件了解项目的健康状况,例如进度是否落后,支出是否超出预算等等…… 任务数据库和 查询条件 数据仓库 报表
TFS里面将工作任务细分为以下五种: 用户使用场景 服务质量要求 任务 产品缺陷(Bug) 风险
用户使用场景 描述用户使用习惯 将场景细分成任务 编码 设计测试用例 执行测试用例 头脑风暴用户使用场景 用户场景描述了用户通常是如何跟系统打交道的。用户代表使用系统是为了完成某个目标,而场景就描述了用户尝试达到目标而执行的具体步骤。
服务质量要求 头脑风暴QoS需求 将QoS细分成任务 编码 设计性能测试 执行测试用例 定义QoS优先级列表 描述各个需求的具体用户场景 确定QoS需求 设计安全测试 确定安全操作的目标 设计压力测试 设计负载测试 服务质量要求(QoS)描述了系统的各种特性, 例如性能(Performance)、负载(Load)、有效性(Availability)、压力(Stress)、可操作性(Accessibility)、耐用性(Serviceability)和可维护性(Maintainability)等各项指标。
工作任务 将场景细分成任务 设计性能模型 评估任务执行进度 执行测试用例 将QoS细分成任务 编码 团队中不同的角色有不同的任务,例如程序员的任务是编码,而测试工程师的任务是设计和执行测试用例。 在TFS里面,分配给不同角色的任务的填写的域也不一样。
产品缺陷 报告产品缺陷 诊断缺陷 重现缺陷 验证产品 验证修复方案 定位缺陷的原因 关闭缺陷报告 将缺陷分配给功能负责人 编码
风险 确定风险 构建风险解决方案原型 任何可能导致项目失败的事件或者因素都是风险。 将风险当作一个任务来看待,可以将风险记录下来并且进行有效的跟踪。 风险有可能会转变成一个有效的任务,例如一个技术上的风险可以通过分解成 重新架构和重新编码等任务来避免它。
创建任务 T TFS会根据不同的任务种类显示不同的属性域。
查询任务列表 T 你还可以创建并且保存新的查询条件
确定任务进度计划 T 点击“Get Work Items”按钮也可以从TFS服务器里面查询任务。 点击“Publish”按钮更新进度计划 1 在TFS里面就可以看到Project 2007当中更新的进度了 2
分析项目健康状况 使用VSTF的报表功能
还有多少未完成任务
产品质量
查看代码覆盖率
查看团队成员的利用率
查看功能完成情况
等等
……
可以根据需要使用SQL Reporting Services和Excel定制不同的报表.
使用TFS进行项目日常开发 客户端TFS Explorer的使用
打开项目和设置服务器连接 TFS客户端是以Visual Studio的插件形式安装的,它与服务之间通过普通的Web方式连接,可以是HTTP协议,也可以是HTTPS协议。
工作目录和代码服务器路径 代码服务器路径 工作目录路径
检视代码解决方案 解决方案(.sln)文件也是一个文本文件,在解决方案里添加新项目后不要忘记签入解决方案文件。 3 也可以在“解决方案查看器”中找到修改过的文件。 2 你可以通过“Pending Changes”窗口查看所有修改过的文件。 1
其他的代码分析工具可以通过与MSBUILD整合的形式来实现签入代码时自动分析新代码的功能。 例如将stylecop整合进TFS: http://blogs.msdn.com/sourceanalysis/pages/source-analysis-msbuild-integration.aspx
签入文件 T 在签入代码的时候和工作任务关联起来,这样更新任务进度更加便捷。 Chek-in notes可以强迫代码签入者输入代码审核人的姓名,将人工审核代码的流程无缝地整合进来。
备份(Shelve)文档改动 T 备份文档改动可以将改动保存起来,但是不将改动实际签入到代码服务器中去,这样Shelve Changes功能在要求他人做代码审核的时候特别有用。
对比不同版本文件的差异 TFS允许你将当前工作目录里面的文件夹与历史记录进行对比……
对比不同版本文件的差异 T 使用这两个按钮可以快速浏览到两个文件的差异处。 当然也允许对比文件不同版本之间的差异。
签入文件冲突解决办法 同前……
版本发布控制 使用TFS管理多个版本的项目文件
项目版本和文件版本之间
项目版本号与组成项目的各个文件的版本号是区别的,一个项目里面文件之间的版本也是千差万别的。 在发布的时候,都是按照项目版本号来提取项目交付物的。
发布管理的概念 Branch 代码树 树有主干和分支 Trunk
主程序开发永远都是在主干(Trunk)中完成的,例如程序的1.0、2.0等主要版本。
3.0 新功能研发 分支 T 有些分支最终会合并到代码树主干上。 大客户定制 功能分支 2.0 售后 支持 补丁包 分支 1.0 主干(Trunk) 与分支(Branch)的应用 程序主要版本的开发
FI (Forward Integration) 的概念 当主干树里面有最新文档改动的时候,源代码服务器可以将这个更新自动发布到代码树的各个子功能分支上。 子分支树可以随时或者定期从代码树主干获取最新的更改。同步完成以后,需要执行一次较为完整的测试。  最新改动 代码树主干  功能集一  功能I 功能III 功能IV 功能II
RI(Reverse Integration) 的概念 每个功能分支树也可以将自己最新的代码合并到主干里面去。 子分支树在合并之前,需要符合一系列项目计划时定下的代码合并质量要求,例如合并进来的代码需要有足够的代码覆盖率等条件。 RI之后,其他功能分支可以通过FI操作获取最新的改动。 代码树主干  功能集一  功能I 功能III 功能IV 功能II
RI和FI操作确保了代码主干树里保存的代码永远都是质量最好的代码。
标识一个主要版本 T Label其实就是很多文件分别指定版本的快捷方式而已。 Label用来标识每个里程碑完成时,当时源代码的版本。在功能开发出现重大失误的时候,它允许你有一个后悔药可以吃。
使用Label标识各个里程碑的代码以后,在以后就可以引用它……
使用标签(Label) 标签这个概念的引入方便程序员随时下载到正确版本的代码。 除了根据标签下载以外,你还可以根据时间戳—不需要是完全正确的时间,一个大概的范围就可以了。 T 点击“Edit”按钮可以编辑标签所代表的文件版本范围……
创建一个分支 T 分支的命名一般以版本号命名。 分支操作会在服务器上将原始代码复制一份,这样两个团队可以在不同的分支上进行开发。
合并分支 合并分支的时候,总是需要解决不同分支里面修改冲突,合并完成以后,需要执行一次完整的测试确保合并操作成功。 T 选择要合并的分支名称
没有了,谢谢 啊?没有啦……

More Related Content

What's hot

稽核系統開發經驗
稽核系統開發經驗稽核系統開發經驗
稽核系統開發經驗易風 林
 
360 如何成为一名优秀的产品经理?
360 如何成为一名优秀的产品经理?360 如何成为一名优秀的产品经理?
360 如何成为一名优秀的产品经理?VImLai
 
没有研发背景的产品经理如何掌控软件产品全进程
没有研发背景的产品经理如何掌控软件产品全进程没有研发背景的产品经理如何掌控软件产品全进程
没有研发背景的产品经理如何掌控软件产品全进程suso zhang
 
Duannian agile
Duannian agileDuannian agile
Duannian agiled0nn9n
 
分布式系统测试实践
分布式系统测试实践分布式系统测试实践
分布式系统测试实践drewz lin
 

What's hot (6)

迭代试验
迭代试验迭代试验
迭代试验
 
稽核系統開發經驗
稽核系統開發經驗稽核系統開發經驗
稽核系統開發經驗
 
360 如何成为一名优秀的产品经理?
360 如何成为一名优秀的产品经理?360 如何成为一名优秀的产品经理?
360 如何成为一名优秀的产品经理?
 
没有研发背景的产品经理如何掌控软件产品全进程
没有研发背景的产品经理如何掌控软件产品全进程没有研发背景的产品经理如何掌控软件产品全进程
没有研发背景的产品经理如何掌控软件产品全进程
 
Duannian agile
Duannian agileDuannian agile
Duannian agile
 
分布式系统测试实践
分布式系统测试实践分布式系统测试实践
分布式系统测试实践
 

Viewers also liked

一次Web性能测试小结
一次Web性能测试小结一次Web性能测试小结
一次Web性能测试小结beiyu95
 
Web系统性能测试方案浅谈
Web系统性能测试方案浅谈Web系统性能测试方案浅谈
Web系统性能测试方案浅谈beiyu95
 
如何Hold住性能测试
如何Hold住性能测试如何Hold住性能测试
如何Hold住性能测试higkoo
 
系统性能分析和优化.ppt
系统性能分析和优化.ppt系统性能分析和优化.ppt
系统性能分析和优化.pptFrank Cai
 
Load runner测试技术
Load runner测试技术Load runner测试技术
Load runner测试技术yiditushe
 
复件 大型网站性能测试方案的制定与实践
复件 大型网站性能测试方案的制定与实践复件 大型网站性能测试方案的制定与实践
复件 大型网站性能测试方案的制定与实践sharetojsl
 
更好的文件组织
更好的文件组织更好的文件组织
更好的文件组织Kejun Zhang
 
产品设计与用户体验(据说是马化腾用来做培训的PPT)
产品设计与用户体验(据说是马化腾用来做培训的PPT)产品设计与用户体验(据说是马化腾用来做培训的PPT)
产品设计与用户体验(据说是马化腾用来做培训的PPT)Dahui Feng
 
了解集群
了解集群了解集群
了解集群Feng Yu
 
Java 性能瓶劲分析之最佳实践
Java 性能瓶劲分析之最佳实践Java 性能瓶劲分析之最佳实践
Java 性能瓶劲分析之最佳实践Denger Tung
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1yiditushe
 

Viewers also liked (11)

一次Web性能测试小结
一次Web性能测试小结一次Web性能测试小结
一次Web性能测试小结
 
Web系统性能测试方案浅谈
Web系统性能测试方案浅谈Web系统性能测试方案浅谈
Web系统性能测试方案浅谈
 
如何Hold住性能测试
如何Hold住性能测试如何Hold住性能测试
如何Hold住性能测试
 
系统性能分析和优化.ppt
系统性能分析和优化.ppt系统性能分析和优化.ppt
系统性能分析和优化.ppt
 
Load runner测试技术
Load runner测试技术Load runner测试技术
Load runner测试技术
 
复件 大型网站性能测试方案的制定与实践
复件 大型网站性能测试方案的制定与实践复件 大型网站性能测试方案的制定与实践
复件 大型网站性能测试方案的制定与实践
 
更好的文件组织
更好的文件组织更好的文件组织
更好的文件组织
 
产品设计与用户体验(据说是马化腾用来做培训的PPT)
产品设计与用户体验(据说是马化腾用来做培训的PPT)产品设计与用户体验(据说是马化腾用来做培训的PPT)
产品设计与用户体验(据说是马化腾用来做培训的PPT)
 
了解集群
了解集群了解集群
了解集群
 
Java 性能瓶劲分析之最佳实践
Java 性能瓶劲分析之最佳实践Java 性能瓶劲分析之最佳实践
Java 性能瓶劲分析之最佳实践
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1
 

Similar to 版本控制系统进阶

腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松Michael Zhang
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松areyouok
 
zhuwenlongChinese
zhuwenlongChinesezhuwenlongChinese
zhuwenlongChineseWenlong Zhu
 
打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012Qiao Liang
 
service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012Qiao Liang
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)Duran Hsieh
 
建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4Cat Chen
 
領域驅動設計
領域驅動設計領域驅動設計
領域驅動設計Clark
 
領域驅動設計 (Domain Driven Design)
領域驅動設計 (Domain Driven Design)領域驅動設計 (Domain Driven Design)
領域驅動設計 (Domain Driven Design)Jeff Chu
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressAppzhoujg
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)vanadies10
 
(宇宏)生產履歷 建議方案 20100901 v2
(宇宏)生產履歷 建議方案 20100901 v2(宇宏)生產履歷 建議方案 20100901 v2
(宇宏)生產履歷 建議方案 20100901 v2Sonny Chen
 
金蝶 Togaf 企业架构培训方案
金蝶 Togaf 企业架构培训方案金蝶 Togaf 企业架构培训方案
金蝶 Togaf 企业架构培训方案pdffile
 
民间秘方
民间秘方民间秘方
民间秘方dynasty
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Gelis Wu
 
Top100summit 陈辉-游戏测试平台 策划资源文件自动化测试体系
Top100summit 陈辉-游戏测试平台 策划资源文件自动化测试体系Top100summit 陈辉-游戏测试平台 策划资源文件自动化测试体系
Top100summit 陈辉-游戏测试平台 策划资源文件自动化测试体系drewz lin
 
面向数据流的软件设计方法
面向数据流的软件设计方法面向数据流的软件设计方法
面向数据流的软件设计方法happyjin2010
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介Allen Lsy
 
The way to continuous delivery
The way to continuous deliveryThe way to continuous delivery
The way to continuous deliveryQiao Liang
 

Similar to 版本控制系统进阶 (20)

腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
 
zhuwenlongChinese
zhuwenlongChinesezhuwenlongChinese
zhuwenlongChinese
 
打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012
 
service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
 
建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4
 
領域驅動設計
領域驅動設計領域驅動設計
領域驅動設計
 
領域驅動設計 (Domain Driven Design)
領域驅動設計 (Domain Driven Design)領域驅動設計 (Domain Driven Design)
領域驅動設計 (Domain Driven Design)
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)
 
Xpp
XppXpp
Xpp
 
(宇宏)生產履歷 建議方案 20100901 v2
(宇宏)生產履歷 建議方案 20100901 v2(宇宏)生產履歷 建議方案 20100901 v2
(宇宏)生產履歷 建議方案 20100901 v2
 
金蝶 Togaf 企业架构培训方案
金蝶 Togaf 企业架构培训方案金蝶 Togaf 企业架构培训方案
金蝶 Togaf 企业架构培训方案
 
民间秘方
民间秘方民间秘方
民间秘方
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
 
Top100summit 陈辉-游戏测试平台 策划资源文件自动化测试体系
Top100summit 陈辉-游戏测试平台 策划资源文件自动化测试体系Top100summit 陈辉-游戏测试平台 策划资源文件自动化测试体系
Top100summit 陈辉-游戏测试平台 策划资源文件自动化测试体系
 
面向数据流的软件设计方法
面向数据流的软件设计方法面向数据流的软件设计方法
面向数据流的软件设计方法
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
The way to continuous delivery
The way to continuous deliveryThe way to continuous delivery
The way to continuous delivery
 

版本控制系统进阶