开发流程及使用的工具


在不影响现有功能的前提下,进行快速迭代开发满足顾客要求。

从开发方法的角度来讲,我们采用的是scrum+XP的敏捷开发。并采用TDD(Test Driven Development)、BDD(Behavior Driven Development)、DDD(Domain Driven Design)等设计开发方法,以及CI(Continuous Integration)、CD(Continuous Delivery)等开发实践。
另外,我们使用了很多工具来支持这些开发实践。例如bug管理系统,版本管理系统,自动测试工具,代码静态解析工具,以及代码review工具,自动部署工具等。

您在开发的时候是怎么做的呢?
在这里介绍一下我们团队开发的流程,包括需求管理,版本管理,测试以及产品发布。

敏捷开发

我们采用敏捷开发的Scrum框架进行开发。
我们的sprint周期是一个月,每个月的月初开始计划和故事点的工时估计然后进行开发测试。

早上进行每日例会,确认燃尽图之后开始每天的开发测试工作。
产品backlog的管理我们使用 Pivotal Tracker



每次sprint里都会召开的会议有sprint开始时的计划会议,每天早上进行每日例会,sprint结束前的review会议,以及sprint结束后的回顾会议。回顾会议里面总结本次sprint里面的不足然后大家达成共识在下个月进行改善。这样周而复始的不断改善进行开发。

代码review

在shanon所有提交到代码库的代码都要经过review。
代码review工具我们使用 Review Board ,最近同时也使用 github 的review功能。
进行代码review的理由有一下几点。
  • 提高代码质量
  • 提早发现bug
  • 学习其他人的代码中的优点
在这种流程下,由于自己的代码需要经过别人的review,所以不会发生随便乱写代码的情况。另外通过review别人的代码也会达到学习的效果。

github

合理使用版本管理工具,是团队开发可以顺利进行的最基本条件。
能否正确理解版本管理的概念和意义,直接左右着团队所开发产品的品质。

shanon使用github进行版本管理。使用github的最大好处是可以使用fork和pull request这两个功能。 如果想修改其他人的项目,可以简单的clone(fork)这个项目,修改后向元项目发送patch(pull request)。
另外,通过向pull request加钩子(hook),可以实现在jenkins中自动执行测试,保证提交过来的patch都是经过测试的。
通过这一方法可以初步保证文件的漏提交、没经过本地测试的提交等问题。  
 
 

自动测试及自动构建环境

每天在自动构建环境中通过执行自动化回归测试来保证提交的代码没有引发其他bug。
按照上述一个月的sprint周期,产品每个月都进行新版本发布。
关于自动测试请参照 品质管理 页面。  
 
 
 
 
 
 

部署

开发时的质量保证是非常重要的事情。但是如果质量保证的范围不包括部署发布的话基本上是没有意义的。
应该保证版本管理系统里的最新代码是随时可以发布的状态,另外,还应该保证测试环境和生产环境以同一步骤和方法进行部署。
以手动部署的方式总有各种问题出现,shanon采用 Cheffabric 来行进自动部署和发布。  
 
 
このページの先頭へ