版本管理是软件研发管理中比较容易忽视的一环,这当然是比较好理解的,因为版本管理毕竟和具体业务关系不大。其实,版本管理是很多更高级管理制度的基础,如果版本管理做得糟糕,类似代码审查一类的工作就很难高效方便的执行。

下面介绍目前我们研发团队建议实行的版本管理制度,仅供参考。

1 工具软件:SVN 和 Beyondcompare

SVN是代码备份软件,Beyond compare 是代码对比软件

2 版本日志

我们要求,每个项目都应当有自己独立的版本日志文件,小的项目或者模块版本日志可以 TXT格式,大的可以用 excel 来保存。

版本日志顾名思义,就是记录项目版本演进的历史。它应当包含的内容有:序号、版本号、提交时间、作者、新增功能、修复bug列表和依赖模块信息。

版本日志存放的目录一般是项目根目录的 ./doc 子目录,直接存放到项目根目录也很好。

序号:每提交一次,序号加一。

版本号:要求每次提交都采用唯一的版本号标示。版本号一般由数字加字母组成,如 V 1.05a 这个版本号,“1.05 ”描述的是软件功能集合,也就是说,V 1.05b、V 1.05c 的功能和 V 1.05a 完全一致,a、b、c 代表软件修复的bug 在减少。

提交时间:版本提交SVN的日期。

作者:提交人。

新增功能:软件新增加的功能列表,只要软件功能增加,则版本号的数字也应当增加,若某版本没有新增功能,则版本号数字不应当变更。新增功能的描述详尽程度以产品经理或者测试功能师能理解为准,太详细了也没必要,过于简单或者有歧义也不行。

修复bug列表:如果修复的bug 是测试部门报告的bug,则用 bug编号记录。如果是研发自己发现的 bug,则应当简要描述bug 现象,方便测试工程师验证。

依赖模块信息:稍微大一点的项目,必然会依赖于大量的独立模块,这些模块可能是第三方开源模块,也可能是公司其他部门或者团队提供的模块,当然,也可以是自己研发的通用功能模块。这些模块名字、版本号必须在版本日志中描述,尤其是这些模块的变更信息,应当明确的进行描述。

版本日志的注意事项:我们明确的规定,如果既没有新增功能,也没有修复bug,则不允许进行代码提交。在很多团队的研发实践中,常常把 SVN 当做日常研发的代码备份工具,代码稍微写了一点,就马上进行提交,比如在开发某一个功能时需要3天时间,有些工程师会有每天下班提交成果到 SVN 的习惯,这种习惯不能说不好,但是我个人感觉不是最好,我相信过多的冗余信息会把真正有用的信息掩盖,所以,我建议的原则是只把真正有用的信息保存下来,同时要求,所有有用的信息都必须保存下来!对一个软件的开发工作而言,新增功能和修复bug 是我们编写代码的全部目的,因此,我们就只关注这两点,而过程则不在项目SVN中记录。

3 提交内容

提交内容应当包括:版本日志、相关代码和资源文件等。

提交的内容应当是完整的、可编译的。这句话的意思是,其他同事在一个新的机器(开发编译环境自己可以安装)上把代码从SVN上Check Out 下来后,可以顺利完成项目的编译。某些项目编译环境有一些特殊的需求,比如要打一些特殊的定制补丁等,对这样的项目,开发人员有义务在 SVN 的 ./doc 目录下进行详尽说明,并完整上传定制补丁在 ./patch 目录下。

在公司有配置管理员的情况下,建议项目编译生成的 bin 文件(即项目成果,如 exe、DLL 或者 *.so 等)由配置管理员编译生成并提交。在没有配置管理员的情况,对重大项目,我们建议采取交叉编译提交的方式,即开发人员只负责提交自己的代码,然后相互编译其他同事的代码和上传别人的 bin文件。这种管理方式有时候可以提前避免很多非技术性纠纷。

开发人员在提交代码前,必须对完成的功能和修复的bug 自己做一次冒烟测试,即冒烟测试原则上应当研发人员自己完成。

对于代码编译过程中产生的一些中间文件,典型的如 *.obj、*.o、*.s 等文件,严禁提交到 SVN。很多工程师提交这些文件的原因主要是对 SVN 不熟。

另外,需要着重指出的是,提交的代码,应当是和版本日志中描述的新增功能和修复bug 相关的。在实践中,有工程师在编程时会发现以前某些代码文件的版式不漂亮、代码注释太多等等,然后就随手做了一些修改;另外就是在提交代码时,某些正在进行中的功能开发代码也顺便做了提交。就我个人的建议,这不是好的做法,我们应当尽力避免。因为版本日志是版本管理的总纲,版本日志的核心又是新增功能和修复bug两项,这意味着我们提交的代码是围绕着这两个核心进行的。在SVN的提交日志上可以清楚看到每次提交的代码文件名,如果按照规定做的话,这些文件名应当是完整说明了版本日志中对应的功能和修复bug所需要新增或者修改的代码文件,在这里,我不希望出现冗余信息,理由前面说过。

4 提交时间

我们建议采取以功能点和修复的bug为线索的提交方式,即完成一个功能或者修复一个bug 后就立即提交。

先把提交版本和发布版本的概念做一个清晰定义。提交版本意即开发工程师完成若干功能或者修复若干bug 后,把代码上传到SVN服务器,而发布版本意即由配置管理员从SVN更新到最新代码,并进行编译和bin提交,然后把bin发布给测试部门。

我们建议采取的是多次提交对应一次发布的原则,而很多研发团队事实上采取的是一次提交对应一次发布的原则,即在版本发布的截止时间点做一次匆忙的提交活动,这种方式是可能存在一些隐患的。

5 优势

采用这样的版本管理方法,研发团队是可以获取很多好处,也可以在流程上预先排除一些隐患。当然,自卖自夸不是好习惯,所以这部分我只是简单的说几点,真正的益处,是要大家在实践中去体会的,当然,可能也还有缺点也不完善,这也需要大家在实践中去发现。

有些工程师出于各种原因,可能没有完整提交代码,对这种现象,我们采取了增加配置管理员编制的方法来解决。

有些团队一方面提交的代码和最终生成的bin 不一致,另一方面,SVN服务器上的bin 和测试的bin 又可能不一致,对这种现象,配置管理员的设置解决了前者,而通过开放SVN上 ./bin 和 ./doc 两个目录权限给测试部门可以解决后者。

测试工程师对于发布的版本可以采取增量测试的方法进行测试,减少测试工程师系统测试的次数,这样可以极大的提高测试工程师的工作效率。所谓增量测试,指的是只测试和验证发布版本的新增功能和修复的bug。

刚发布的版本很快就被测试打回,这个现象的原因很复杂,但是,通过研发人员自己完成冒烟测试可以极大缓解该现象。

有利于培养研发工程师对待代码的严肃性,为代码规范等一系列规定创造一个比较好的环境。

现在回归测试更方便和有效了。研发工程师通过回归测试的方式可以更容易的排查bug了。

有些团队测试平时很空闲,一发布版本就很忙,甚至有可能要搞通宵。现在我们通过多次提交对应一次发布的方法来解决这个问题。测试平时就可以随着研发的进行先把提交的版本测试起来,极大的提高的测试的工作效率,使得测试工程师的工作量安排分布更加均匀。

最大的好处是,使得团队内部互相 code review 成为可能。Code review 是在研发阶段消灭软件质量最好的方法,也是促进新手程序员成长的最高效方式。在严格的版本管理制度下,每个功能、每个bug 对应修改的代码在SVN上可以简明的看到,这极大的方便了资深工程师对新手代码的审查,同时,也极大的方便了新手程序员向资深工程师的学习。我一向的观点是,软件工程师把一个功能完成算不得什么,如果百分制的话,完成功能最多得30分,我们除了功能,还应当考虑稳定性、可靠性、可扩展性,还有注重代码的可读性和可维护性等等,这些东西新手程序员是很难全面兼顾的,这就需要资深工程师进行现场指导,结合新手工程师自己写的代码进行讲解,这是最快速的优秀程序员培养模式。

软件研发管理之版本管理相关推荐

  1. 代码管理和版本管理的作业流程以及规范是怎样的?

    代码管理和版本管理的作业流程以及规范是怎样的? 代码管理和版本管理的作业流程以及规范是怎样的?下面以文档的形式进行详细分析,希望能够给予测试人员一些帮助和指导. 本文目的 本文试图提供一套有效进行代码 ...

  2. ONES 联合中国信通院发布《中国企业软件研发管理白皮书》

    4月20日,由 ONES 与中国信通院联合发起的<中国企业软件研发管理白皮书>发布会暨「软件质效沙龙一北京站」正式举行.发布会上,ONES 与中国信通院云计算与大数据研究所的各位领导.行业 ...

  3. ONES × 中国信通院《中国企业软件研发管理白皮书》即将发布 | 预约直播

    由 ONES 与中国信息通信研究院联合发起的<中国企业软件研发管理白皮书>(下称「白皮书」)将于 4 月 20 日 正式发布.白皮书由 ONES.中国信息通信研究院云计算与大数据研究所.招 ...

  4. 软件研发管理高效的关键:11项自动化功能

     1.自动锁定需求缺陷 为了提高用户需求分析质量,尽早发现需求缺陷,CoCode开发云特开发了需求分析工具,使用AI,通过需求测试和一致性检测,能够在几分钟内快速分析用户需求缺陷,如歧义.重复.遗漏. ...

  5. 共创实效改进平台 | 第九届麦哲思软件研发管理战略与战术论坛在上海成功举办!

    7月20日至21日,由麦哲思主办,艾纵咨询.禅道协办的第九届软件研发管理战略与战术论坛在上海虹桥圆满落下帷幕. 麦哲思研发管理论坛现场 本届论坛以"力出一孔撬动效能杠杆 齐头并进汇聚真知灼见 ...

  6. 软件研发管理最佳实践(2012-10-20 深圳)

    课程摘要:项目团队没有凝聚力,除了项目经理其他成员似乎不太关注项目成败: 项目需求变来变去,客户喜欢你先做出来看看,一直无法形成书面的需求文档: 测试时间压缩再压缩,测试阶段发现的大量问题,常常因为已 ...

  7. 软件研发管理工具Ones横评,对比国内外主流项目管理软件

    深圳复临科技有限公司 (ONES) 成立于 2015 年,号称国内领先的企业级研发管理解决方案提供商. ONES 研发管理工具包括项目管理.测试管理.流水线管理.效能管理.工单管理.知识库管理等能力. ...

  8. 国内IT公司病的有多重?技术圈交际花谈软件研发管理怪现状

    虎嗅注:在创业过程中,研发管理是很重要的内容.但是国内创业公司的研发管理却长期处于一种比较混乱的状态.国内创业公司的研发管理到底出了什么问题?技术人攻略的Gracia采访了素有"技术圈交际花 ...

  9. 如何做好项目规划?以及项目规划常用的管理软件盘点

    简单地说,项目管理就是制定计划.执行计划.监控计划的过程.然而,在实际管理过程中,我们经常忽略计划的重要性,一些人认为去做计划这样的管理活动耗费时间,不如直接去做设计.开发等工程活动更为接近交付目标. ...

  10. 企业研发管理工具应用分析

    企业使用信息管理工具可以显著提升工作效率,积累知识财富,这一点早已成为大家的共识.近几十年来,国内企业在企业信息化上的投入越来越大,从开始的财务管理系统,到进存销系统,到ERP系统,基本涵盖了从财务. ...

最新文章

  1. 人工智能发展弊端的解决方案_高中优秀作文赏析:科技创新、人工智能与人类未来之辩...
  2. 剑指Offer——二叉树的镜像
  3. DM9000网卡原理与基地址设置
  4. [android] 请求码和结果码的作用
  5. 记一次pthread_cancel_init段错误分析(bpftrace)
  6. matplotlib之legend图例和标注(笔记三)
  7. 健康生活--16个健康习惯
  8. SYN Flood攻击及防御方法 (转)
  9. xp-80c打印机无法打印_6种方法解决打印机无法打印问题
  10. 【转】ASP.NET Core 2.0 支付宝当面付之扫码支付
  11. indesign安装包.exe 自动简繁互转for_InDesign 简繁互换插件
  12. 雅思两次7.5经验分享~希望帮你冲击雅思高分!
  13. 加快5G视频客服能力构建PPT
  14. 一个基于 Vue3 Vite 的相册应用
  15. html怎么打五角星符号怎么打,五角星符号怎么打,五角星符号大全
  16. 华为p20Pro投屏电脑 手机投屏电脑教程
  17. vue点击按钮打开新页签,并传参
  18. 2020 中国企业 500 强:华为投入研发 1317 亿、阿里 431 亿、中国移动 235 亿、百度 183 亿
  19. 添加遮罩层,实现点击穿透,实现遮罩层按钮点击,遮罩层下层点击事件
  20. windows bat 批量修改文件名。不改变后缀

热门文章

  1. cdr添加节点快捷键_CorelDRAW常用热键|cdr快捷键大全
  2. ppt五种经典字体组合
  3. Warship+NPOI导入导出组件介绍【对象化】
  4. 彻底解决--“未能加载文件或程序集“xxx.dll”或它的某一个依赖项”
  5. impalahive大数据平台数据血缘与数据地图(四)-impala血缘架构图及功能介绍
  6. 阿铭Linux_公有云学习笔记20190116
  7. 全球人工智能与机器学习大会PPT
  8. python车牌识别_Python+Tensorflow+CNN实现车牌识别的示例代码
  9. 华为Smartkit CRU和FRU工具使用教程
  10. Latex beamer制作ppt