win847 发表于 2010-8-29 12:39:21

多客户软件开发中的管理问题

大家好,目前在开发软件中遇到了和版本管理相关的问题,想请教一下大家有什么好的办法

我们公司是做Router Turnkey方案的,采用的Linux系统。目前我们有很多客户,各个客户之间都有不同的定制需求,这样会导致版本管理和维护上面的问题

以前我们另外一套非开源的系统采用的方案如下:
当有新的客户需求进来,就在主Trunk上面用最后一个Release的版本基础上拉出一个Branch出来,然后针对这个客户定制的需求实现后都会提交代码到这个Branch上面,给客户出版本时也会

从这个Branch上面出。最后等客户需求全部都处理完,暂告一个段落时。会重新将这个Branch上面把客户相关的东西重新Merge到主Trunk上面去统一维护

这样做的好处是:在处理这个客户的需求时,增加的代码都会只针对该客户,增加的代码相对比较单一,测试中出现问题追溯起来相对比较容易。
坏处是:开发期间如果出现一些通用的Bug和Feature需要Merge到所有的Branch上面,开发结束后需要重新Merge到主Trunk上面,耗费时间和需要重新测试验证


所以现在的想法是采用一个Trunk的方式来处理,具体如下:
在一个主Trunk上面进行各个客户的需求开发,开发过程中各个客户的需求需要用compile option隔得很开,这样在出每个客户的版本时都不会受到相互的影响。

但是Linux下大部分的Source Code是开源的,包括Kernel和大部分的上层应用都需要开放给各个客户,这样的话如果每个客户的需求都放在一起的话客户之间就能互相了解会导致一些不必要

的麻烦

现在想的是Kernel部分的开发尽量用Module的方式,Module部分不开放Source code,然后客户之间的Feature的compile option定义需要用和客户无关的信息来命名

但是现在觉得还是有问题的是:
1.有些客户需求会需要改动整个系统的架构,这样必不可少需要新的Trunk来维护这中类型的需求(升级主Trunk的版本)
2.采用一个Trunk的维护方式需要加强个各个开发Team之间的Sync动作,这样才能保证Code不会被冗余开发
3.随着客户定制需求的增多,整个Trunk的维护会变得更加复杂,Feature之间可能会出现冲突的问题,在后期可能做更多的规划

所以想在这里请教一下大家,有相关的经验的请指点一下这种多客户的软件开发和版本管理有没有好的方案,谢谢!
页: [1]
查看完整版本: 多客户软件开发中的管理问题