APP下载

软件开发过程的持续集成探讨

2013-06-04蒋苗林

科技致富向导 2013年10期
关键词:软件开发

蒋苗林

【摘 要】目前软件开发越来越多采用敏捷开发方式,敏捷开发在软件工程领域中得到广泛应用,如何能在不断变化的需求中快速适应和保证软件的质量也显得尤为重要,持续集成在软件开发的应用能够快速提供版本和完成验证交付。

【关键词】软件开发;持续集成;Jenkins

0.前言

持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。本文通过具体实例,介绍了如何借助持续集成工具提高软件生产力。

1.当前公司的版本发布工作

当前各个公司的版本发布工作差异很大,有些公司没有每日编译版本,等到正式发布时发布一下;有些公司则是写一个脚本每天晚上定时编译一下,第二天开发人员就可以使用前一晚上生成的版本;有些公司使用持续集成工具编译版本,代码有更改时就会触发编译;还有些公司根据每日编译的状态触发电子装备,亮红灯或绿灯来显示版本的状态,有些甚至利用发声装备发出导致版本编译失败的代码上传者的名字。

可见各个公司在持续集成方面的投入差异巨大,持续集成投入越多,软件版本交付能力就会越强,软件生产力也就越高。

2.持续集成的核心价值

(1)持续集成中的任何一个环节都是自动完成的无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量。

(2)持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能。

(3)持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。

3.持续集成的原则包括

(1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有IBM Rational ClearCase、CVS、SVN等。

(2)开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地。

(3)需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每1小时构建一次,还可以由上游项目编译成功后触发。

(4)必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。

4.持续集成工具介绍

4.1持续集成工具主要分两大类,开源的和商用的

(1)开源工具。

CruiseControl、Hudson、LuntBuild

(2)商用工具。

TeamCity、AntHill Pro、Bamboo、QuickBuild

CruiseControl和LuntBuild在持续集成领域进入较早,Hudson作为OpenSource里持续集成的后起之秀,现在已经赶超了这两个前辈,目前恐怕是使用最多的一个CI Server了。国外使用商用的工具多些,而在国内用开源的多些,其中Hudson工具使用较为广泛,现在叫Jenkins,是基于Java开发的一种持续集成工具,它主要包括:

(1)持续的软件版本发布/测试项目。

(2)监控外部调用执行的工作。

4.2 Jenkins具有以下突出的特点

(1)开源免费,容易安装,只需要执行Java-jar jenkins.war即可。

(2)容易配置,可以通过友好的webGUI来配置,几乎每个配置都有帮助信息提示。

(3)跨平台,几乎支持所有的平台,例如Windows,Ubuntu/Debian,RedHat/Fedora/CentOS,MacOSX,openSUSE,FreeBSD,OpenBSD,Solaris/OpenIndiana.Gentoo。

(4)master/slave支持分布式的build,jenkins能够分发build/test的负载到多台机器,能够更好地利用硬件资源,提高build的时间。

(5)插件支持,已有200多个插件,可通过第三方的插件来扩展。

(6)Junit/TestNG测试报告,能够很好地显示各种测试的报告,且可以生成失败的趋向图。

5.应用举例

(1)某产品开发部有驱动、软件等小组,各小组的代码是各自管理的,但接口文件是共同的。假如软件小组的某个头文件修改的时候驱动小组也需要同步修改,该文件受软件小组管理,驱动小组需要同步,如果靠人工每天去看对方的头文件是否更改,比较费时,也容易漏掉。如果你使用Jenkins工具新建一线程,专门检测对方的接口文件,当然对方该部分代码需要给对方小组某成员开读权限,当检测到对方头文件有修改时则将该文件check到本地,然后再check自己的代码,将对方的接口文件上传到自己的库里。完成后再触发邮件系统将邮件发送到相关开发人员。这样开发人员能够把更多的精力花在关键事务上。

(2)上传代码到自动化测试一气呵成。某部门开发一套指纹识别项目,开发人员优化该项目时,由于优化过程是持续累积的过程,每天可能都能提高一点,当开发人员将阶段性的成果上传到代码库中,系统按设置的一定时间间隔完成编译并将编译库放到服务器,自动化测试程序也会每隔一定时间去取这个库,并运行程序,并将运行结果直接发送到开发人员工作信箱里。开发人员也能很快速方便地看到自己优化的结果。

6.结语

工欲善其事,必先利其器。软件开发也要借助于提高软件生产力的工具,持续集成工具能够把开发人员从繁琐的代码同步、版本发布、查找编译失败等工作中解脱出来,让开发人员把精力聚焦在核心业务上。

【参考文献】

[1]Jez Humble David Farley.持续交付发布可靠软件的系统方法[M].北京:人民邮电出版社,2011:50-51.

猜你喜欢

软件开发
基于安卓平台的移动式教学模式研究
软件开发中JAVA编程语言的应用
信息安全环境下的计算机软件开发研究
核电厂定期试验管理软件开发
FPGA软件开发过程中编码规范的作用