互联网敏捷开发配置管理策略思考
作者:网络转载 发布时间:[ 2013/2/16 11:44:08 ] 推荐标签:
由于互联网行业需求变化快、开发迭代周期短、上线频繁的现实状况决定了合理的软件配置管理策略对于软件质量保证、协作开发效率至关重要。
目前公司配置管理在策略上采用的是不稳定主干模式,所有的项目都在同一主干上进行修改,在每周上线后并没有明确的stable分支版本,基本上是靠SCM人员手工拷贝代码来管理维护的。这引起了很多问题:
1)多个项目组开发人员都可能并发对同样代码进行修改,造成了严重的代码冲突问题。例如张三修改了a.java并上QA测试服务器,在QA测试过程中,李四也对a.java进行修改并上QA,李四的代码覆盖了张三的代码。由于是SCM人员并不清楚代码冲突情况,这样张三和李四的代码上QA很容易相互影响并很难查具体原因
2)由于没有明确stable分支版本,导致上QA、上生产只能采用增量更新,上QA、上生产出问题后的代码回滚很麻烦,严重影响了测试、上线效率。对于生产环境运行的代码的具体版本并没有明确的管理,导致生产系统出问题后要排查问题也很难查。
3)由于核心基础包没有与上层应用隔离,导致大家都会对核心包进行修改,修改后代码质量并没有有效控制。于是出现因为修改基础包影响整个系统功能等现象
类似的问题很多。要在新的项目实施及后期运营中避免类似问题的重现,至少要从如下几个方面来:
(1)分支管理策略:采用适当的分支管理策略来保证开发库、测试库、发布库的隔离
(2)适当引入每日编译、持续集成、Code Review等敏捷开发的佳实践
(3)采用自动化脚本完成上QA、上生产的部署工作,避免人工失误
(4)对核心框架、后台应用、前端页面开发采用不同的配置管理策略
1、分支策略
代码分支管理策略一般分为3种
1)不稳定主干策略
此种分支策略使用主干作为新功能开发主线,分支用作发布。此种分支管理策略被广泛的应用于开源项目。比如freebsd的发布是一个典型的例子。 freebsd的主干永远是current,也是包括所有新特性的不稳定版本。然后随着新特性的逐步稳定,达到一个发布的里程碑以后,从主干分出来一个stable分支。freebsd是每个大版本一个分支。也是说4.x,5.x,6,x各一个分支。每个发布分支上只有bug修改和现有功能的完善,而不会再增加新特性。新特性会继续在主干上开发。当稳定分支上发生的修改积累到一定程度以后,会有一次发布。发布的时候会在稳定分支上再分出来一个 release分支。
此种分支管理策略比较适合诸如传统软件产品的开发模式,例如微软Windows开发,对于互联网开发不是很适合。已经在主干上集成的新功能,如果达不到里程碑的要求,稳定分支不能创建,很有可能影响下一个发布的计划。还有一个问题是bug修改必须在各个分支之间合并。
2)稳定主干策略
此种分支策略使用主干作为稳定版的发布。主干上永远是稳定版本,可以随时发布。bug的修改和新功能的增加,全部在分支上进行。而且每个bug和新功能都有不同的开发分支,完全分离。而对主干上的每一次发布都做一个标签而不是分支。分支上的开发和测试完毕以后才合并到主干。
这种发布方法的好处是每次发布的内容调整起来比较容易。如果某个新功能或者bug在下一次发布之前无法完成,不可能合并到主干,也不会影响其他变更的发布。另外,每个分支的生命期比较短,长期存在的是主干,这样每次合并的风险很小。每次发布之前,只要比较主干上的新版本和上一次发布的版本能够知道这次发布的文件范围了。
此种分支策略的缺点之一是如果某个开发分支因为功能比较复杂,或者应发布计划的要求而长期没有合并到主干上,很可能在后合并的时候出现冲突。另外由于对于每一分支都要进行测试才能够合并到主干中,测试工作量较大。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11