版本管理与代码走查系统设计与实现

2014-05-25 00:28李嵩泉刘陟升
计算机与网络 2014年6期
关键词:开发人员代码流程

李嵩泉 刘陟升

(1 中国电子科技集团公司第五十四研究所河北石家庄 050081)

(2 沈阳水务集团大东营业分公司辽宁沈阳 110042)

版本管理与代码走查系统设计与实现

李嵩泉1刘陟升2

(1 中国电子科技集团公司第五十四研究所河北石家庄 050081)

(2 沈阳水务集团大东营业分公司辽宁沈阳 110042)

为优化软件项目管理,解决软件版本管理混乱、人工代码走查过程负责和结果难于控制的问题,研究了软件版本管理工具和代码走查工具,介绍了版本管理工具和代码走查工具在软件项目管理中应用。根据实践中软件项目管理的需求,提供了一种版本管理工具Subversion与代码走查工具Reviewboard相结合的系统的实现方法,介绍了版本管理工具和代码走查工具的安装部署,给出了一种基于该系统的软件开发应用流程。

版本管理 代码走查 SVN Reviewboard

1 引言

软件开发项目一般要经过需求分析、软件设计、软件编码和测试等过程。在软件交付后发现的软件缺陷和用户提出的软件改进将重新进行上述流程。不同的用户对软件的功能需求可能有差别,这样一个软件将出现若干版本给不同的用户,而且软件开发过程中,开发团队共同协作,需要高效有序的存放、查找和共享文件代码,因此版本管理的引入成为软件团队开发的必然选项[1,2]。软件团队开发合作,相互走查代码(Code Inspection)是将软件缺陷提前发现的良好手段,如何有效地进行人工代码走查,管理走查结果也是团队开发需要考虑的问题。

2 版本管理

版本管理的作用主要有以下几个。

①能够满足软件开发基本需求:每个程序员都有备份程序的需要,引入版本管理工具,可以省去手工备份的麻烦;历史改动不会丢失,可以快速恢复到任何一个版本;方便查看某个版本的代码改动(例如:上次的那个bug是怎么解决的)。这些要求即便是一个人独立开发也需要的;

②能够满足团队协同开发的需要:团队开发会有多个程序员需要改动同一个文件,需要一种工具配合开发流程能够简化这一问题,记录同一个文件中所有人的更改,并尽可能的自动进行代码合并,而且能够提供方法查询每行代码的改动者,可以确定开发人员的责任;

③能够满足工程管理需要:能够进行多产品多版本的发布管理,当一个软件面向多个用户时,会发布多个版本,这些版本又不是完全独立的,一些BUG的修改和公共的功能,可能要应用到各个版本,而一些客户特殊需求指在个别版本中实现,需要有效的途径管理这些版本,如图1所示。

图1 软件版本管理示意图

版本控制能够在代码库中标识各个发布版本,能够进行不同版本间的代码的融合,例如rel1.1.0中修复的bug能够融入rel2.1.0。在Rel1.0.1上发现一个bug,这bug在软件主干及Rel2.0上也有。这时可以将R1.0.1上解决的bug,合并到软件主干上,再从软件主干合并到Rel2.0的分支上,这样bug在Rel2.0.1中将解决,而且随着软件开发的演进,BUG管理集成及持续集成都需要利用到版本的管理。

3 代码走查

在软件开发过程中,测试作为一个开发阶段的存在,对于整个软件的开发过程起着重要作用,规范的软件项目引入多个测试环节,典型的有单元测试、软件配置项测试、集成测试和系统测试。其中单元测试在实践中一般由代码人员自己进行,包括白盒测试和黑盒测试,白盒测试又分为静态测试和动态测试。静态测试不执行程序,通过人工或工具对代码进行检查,又称为代码走查[3],主要介绍人工的代码走查方式。

人工代码走查是指请开发团队中的专家和同事对一个开发人员的编写的代码进行人工阅读评审,对有关技术、代码风格、可能的错误和是否违背标准等方面进行讨论,指出代码存在的缺陷和需要改进之处。开发人员对这些问题进行整改,直至没有人再有异议。有时也称为代码走读和代码审查。

代码走查相比其他测试方法,具有以下优点:①能够定位问题而非观察测试现象;②尽早发现软件缺陷,开发人员修改问题代价比较小;③能找出其他测试难以发现或隔离的软件缺陷,当然这也取决走查组成员的经验[4,5]。

代码走查主要包括3个步骤;

①走查代码生成分发:开发人员将自己的代码改动生成阅读材料,一般标识自己改动的部分,并包含逻辑上的上下文,将代码分发给走查组成员;

②执行走查:走查形式可以分为2种,电子方式和会议方式,电子方式中走查组成员分别审查代码,提出问题建议,并通过电子邮件方式通知走查组组长;会议方式中走查组与开发人员在一起以开会的形式进行代码审查,每个人的意见建议都被直接记录;

③代码修改:开发人员根据走查组形成的问题建议记录,进行代码修改。在修改完毕后,将修改后的代码再次提交走查,由问题提出者确认问题已经解决。

4 系统设计

目前常用的版本控制软件主要有IBM Rational ClearCase、Telologic Synergy、Microsoft Visual SourceSafe、GNU Arch、CVS、Subversion和Git等。前3个都是商业化的软件比较昂贵,后4个是开源的免费软件,更适合中小团队应用。Subversion,即SVN,是目前最为流行的版本管理软件之一,是CVS的替代软件,支持CVS的几乎所有功能,支持Window和Linux多种操作系统。支持本地、SVN服务和HTTP服务等多种访问方式,与Apache的HTTP服务能够紧密结合。

在代码走查方面各个公司的做法有很大差异性,有直接看代码的,也有使用工具生成pdf格式代码审查文件的,也有自己开发代码走查系统的。在开源软件领域值得一提的有Trac[6]和Reviewboard。相对与Trac,Reviewboard更专注与代码走查,提供从走查代码生成,到方便周全的代码审查界面,到最后意见建议总结,而且可以与SVN和Apache的HTTP服务紧密结合。

设计提供一种基于Windows平台的SVN与Reviewboard相结合的软件版本管理和代码走查系统,主要描述了系统的部署和使用流程。系统部署的一个难点是确定要使用的软件和各个软件的版本,因为用到众多开源软件的,其版本的兼容性不是很好,当确定一套软件组成后,尽可能维护住这些软件的版本。后面章节中给出了的软件组成和其版本已经在实际环境下使用,其中用到的软件都是免费软件,在互联网都能够下载。

4.1 SVN系统部署

设计选择SVN最流行的HTTP服务方式,便于后续扩展。需要使用到的软件包括:Subversion 1.6.5、TortoiseSVN 1.6.5和Apache 2.2.14。搭建流程如下:

4.2 Reviewboard系统部署

在安装了SVN的基础上,再部署Reviewboard服务,可以在同一台机器上进行,比较方便。Reviewboard的安装依赖较多的第三方软件,大部分是Python的,如果在连接互连网的机器上安装可以通过easy_install工具自动下载安装。设计实现,整理了其所依赖的第三方软件,即便是没有链接互联网的计算机也可以进行安装。这些软件包括:Python 2.5、GNU patch 2.5.9、mod_Python 3.3.1、Pysvn 1.7.0、Python Imaging Library 1.1.7、PyCrypto2.3、Setup-Tools0.6c11、flup1.0.2、paramiko 1.7.6、Django1.3、Djblets0.6.7、recaptcha-client1.0.6、pytz-2009g、python-memcached 1.47、python-dateutil 1.5、Pygments1.4、django_evolution、ReviewBoard1.5.5、diffutils 2.8.7、simplejson 2.1.6和RBTools 0.3.2。

(1)在运行Reviewboard机器上,安装Python 2.5,并将Python的目录及脚本目录加入到系统PATH环境变量。

(2)安装其他依赖软件:

①patch、mod_Python、Pysvn、PythonImagingLibrary、PyCrypto、Setup-Tools都是可执行安装包,直接运行安装;

②flup、paramiko、Django、Djblets、recaptcha-client、pytz、python-memcache、python-dateutil、Pygments、django_evolution、都是Python的包,使用easy_install安装;

(3)安装Reviewboard:easy_installReviewBoard-1. 5.5-py2.5.egg。

(4)为Reviewboard创建网站:运行rb-site install c: www eviews.my.com,在这一步通过交互式的安装脚本界面,确定域名、数据库类型(sqlite3)、缓存机制(memcached)、web服务(apache)、Python的接口模块(modpython)、管理员账户(admin),即可安装完毕。

(5)修改Apache的配置文件httpd.conf:

①将c:www eviews.my.comconfapache-modpython. conf中的内容添加httpd.conf;

②修改Directory c:/www/reviews.my.com/htdocs一节,访问控制选项为Allow from all;

③添加一行“Listen 8091”允许使用8091端口访问Reviewboard;

④添加对mod_python.so的支持:LoadModule python_module modules/mod_python.so。

(6)重新启动Apache服务,以管理员身份(admin)登录Reviewboard网页(http://192.168.0.100:8091/)对Reviewboard进行进一步配置:

①从Admin链接进入管理的Dashboard页面,再进入Repositories页面,通过Add repository添加需要支持的项目版本库(例如:上一节建立的http://192. 168.0.100/svn/myproject);

②进入Users页面添加用户,包括走查的提交者以及审查者,用户名和密码最好与SVN系统保持一致,方便记忆。

(7)客户端安装

在Windows系统下,需要使用Python、Setup-Tools、diff工具以及simplejson和RBTools,前三者直接运行安装程序,后2个软件需要通过easy_install进行安装。如果使用Linux系统做为开发环境,一般系统自带了Python和diff,只需要安装其他3个软件。

4.3 应用流程

以修改一个软件发行版本上的bug为例,说明本系统的使用流程。当一个问题反馈到研发团队,项目管理者指定一个开发人员解决,开发人员遵循流程如图2所示。

图2 软件问题修改流程

①开发人员将发行版本对应代码从SVN服务器(192.168.0.100)检出到本地:svncheckouthttp://192. 168.0.100/svn/myproject/branches/r1.0.1/;

②分析问题修改对应的代码,解决问题;

③生成代码走查文件:在代码跟目录下运行post-review --server="http://192.168.0.100:8091/"--username=user1生成走查申请;

④登录到Reviewboard系统,在Outgoing Reviews中可以看到有一个名为[Draft]的走查申请,对它进行编辑,编写题目,描述和分支等信息,选择走查人员Reviewers,最后选择Publish提交申请,发送给走查组成员;

⑤走查组成员登录Reviewboard系统,在Incoming Reviews中可以看到所有发送给自己的走查申请,选择一个申请,选择View Diff,可以查看申请者对代码的改动,所有修改的地方会以高亮的方式表示,如果发现问题,点击问题行的最左边,可以在You comment对话框添加你的意见建议。在走查完毕通过Edit Review按钮,可以添加对这次走查的整体意见,并通过Publish Review提交走查建议;

⑥开发者在Reviewboard系统,查看代码走查中审查人员提出的问题和建议,并根据问题和建议修改代码,提交第二次修改的走查;post-review--server="http://127.0.0.1:8091/"username=user1-r2(-r2是上次提交的申请号,如果忘记了可以通过网页的URL获得,例如http://192.168.0.100: 8091/r/2/的申请号就是2)

⑦如果走查组没有什么异议,那么这次走查完毕,开发者可以在Reviewboard中结束(Close)走查任务;

⑧开发者将走查过的代码提交到SVN代码服务器;

⑨当若干bug修改完毕后,并经过后续测试工作,根据工作计划发布一个新的版本。

5 结束语

进行版本管理是团队软件开发的必然选择,也是持续集成的基础,代码走查是团队合作的一个优势体现。通过使用由SVN和Reviewboard软件搭建的版本管理与代码走查系统以及对代码提交流程设计,能够使开发人员代码维护更加简单,代码走查更加方便,研发流程更加规范,软件产品管理维护更加便利,提高了软件开发发的效率。该系统已经在几个中小规模的项目中的开始应用。

[1]戴楠,闫明星.用SVN实现软件的版本控制[J].电脑知识与技术,2009,5(16):4289-4290.

[2]罗雅丽.版本控制在开发项目中的应用[J].电脑编程技巧与维护,2011(14):39-40.

[3]高如莎.一种软件单元测试策略[J].无线电工程,2007,37(8): 54-57.

[4]孙卫红.代码走查的研究与实践[J].计算机与网络,2007,33 (22):41-42.

[5]李燕.软件质量保证方法的研究及在同行评审改进项目的应用[D].北京:北京邮电大学,2011:40-53.

[6]胡争辉.从SVN Trac开始中小团队项目管理之路[J].程序员,2008(4):129-131.

Design and Implementation of Version Management and Code Walkthrough System

LI Song-quan1,LIU Xi-sheng2
(1 The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)
(2 Dadong Branch,Shenyang Water Group Co.Ltd.,Shenyang Liaoning 110042,China)

In order to optimize the software project management and solve the problems such as orderless software version management,complicated artificial code walkthrough process and difficult control of results,this paper studies the software version management tool and the code walkthrough tool,introduces their application in the software project management.Based on the requirements of software project management in practice,this paper provides an implementation method of combination system of Subversion version management tool and Reviewboard code walkthrough tool,introduces the installation and deployment of version management tool and code walkthrough tool and proposes a software development and application process based on this system.

version management;code walkthrough;SVN;Reviewboard

TP391.4

A

1008-1739(2013)06-53-4

定稿日期:2014-2-26

猜你喜欢
开发人员代码流程
吃水果有套“清洗流程”
Semtech发布LoRa Basics 以加速物联网应用
创世代码
创世代码
创世代码
创世代码
违反流程 致命误判
本刊审稿流程
析OGSA-DAI工作流程
后悔了?教你隐藏开发人员选项