基于云平台的软件自动持续集成研究
介绍
软件集成是一个软件开发过程,它将经过编码和测试形成的软件组件或代码单元组合成完整的软件产品,然后对该新产品再次进行测试和验证,确保新产品能够满足用户的需求,通常也称其为系统集成或集成测试[1]。企业信息系统通常都是非常大而复杂的,系统建设、开发、测试和集成过程需要的成本非常高,而且在系统集成阶段,经常会出现不可预见的情况。这更加使得集成成为整个项目中最重要的一个阶段。传统的软件集成方法有以下几类[2]。
1)“Big-Bang”集成方法。即一次性非增量式集成。要求软件开发人员首先测试每一个单元模块,然后将所有的已经测试通过的单元模块全部进行集成,然而无法在集成过程中确定缺陷的真正位置。小型系统的单元模块较少时,“Big-Bang”集成方式可能是较好的方法,但是针对如企业信息系统这样大而复杂的项目,开发、集成复杂度提高,需要更好的集成方法。
2)“自顶向下”和“自底向上”集成方法。随着增量式软件开发模型的逐渐成熟,诞生了这两种集成方法。“自顶向下”集成方法能较早检验各功能的可行性,但是由于采用的是从上到下的方式,在集成过程中会出现一些替代模块,可能最终出现问题从而引起过多的回归测试,导致整个测试不充分。“自底向上”这种逆向集成方式可以把最容易出问题的部分尽早解决,同时能够将多个模块并行集成测试,提高效率。缺点
是整个项目一直不能形成一个完整实体,直到最终系统的实现。
3)“迭代递增”集成方法。伴随着迭代式软件开发模式的出现,并以实现功能为目标。“迭代递增式”集成在集成过程中更容易确定故障的位置,利用递增式集成有利于尽快发现缺陷,逐步积累、解决问题,提高排查和改正错误的效率。软件一边开发一边集成,然后再进行测试,所以测试也更加充分全面。但是真正的实践中也出现了一些问题:时间间隔不能确定;只迭代而不递增;只递增而不迭代。
4) 持续集成方法。持续集成是一种软件开发实践,开发团队成员经常集成工作,集成使用自动化的构建进行验证,构建过程中运行回归测试,以尽快检测集成错误。这种方法可以使集成问题大幅减少,更快地实现有凝聚力的软件开发。持续集成方法的使用有如下优势。
①降低风险[3],不断地进行集成、自动化测试,能帮助检查缺陷,越早发现问题,越容易解决缺陷。②减少重复过程,节省时间、费用和工作量。③降低部署难度[4],持续集成不断频繁的集成部署,将部署难度降到最低,能随时随地进行部署,让客户随时得到反馈。④增强项目的可见性,持续集成能发现趋势并进行有效的决策。经常集成可以暴露一些趋势,为构建状态和品质指标提供
严宇平1 王学文2  陆  璐2
1 广东电网公司 广州 510006
2 华南理工大学 广州 510006
摘 要企业信息化项目大部分仍基于传统的软件集成方式,管理和集成等方面存在严重的缺陷。文章提出了持续集成这一新理念并提出一种软件自动持续集成方法,指导在电网系统中实践持续集成,并验证了该方法的可行性,提供云的解决方案,降低了部署成本,保障了电网信息化建设质量,提高了信息化效率。
关键词  持续集成;云计算;自动化构建;版本控制
基金项目:国家自然科学基金项目(61370103);广东省教育部产学研
项目(2012B091000050);广州市产学研重大专项(2009A1-D041)
了及时的信息,甚至提供报告功能完成度和缺陷率。
⑤减少集成问题,实现快速交付。
传统的信息化建设的开发、测试和集成过程是不断将各小模块集成为大模块,通过人工的功能测试后,再部署到生产环境。这种传统的方法在大型企业信息化系统建设过程中存在较多的问题。1)无法验证系统在准实时仿真的生产环境的情况;2)新模块导致旧模块不能正常运行;3)旧模块的重复测试,重复的工作降低工作效率;4)人工编译、构建、测试、发布部署带来更多不确定性因素。
持续集成实践的应用能极大地降低集成风险,逐步明确开发状态,及时改进软件开发过程。与传统的方法相比,持续集成技术的引用能够更好地适应需求的变化,调动开发人员之间交流和合作的积极性,发挥软件开发人员的能动性和自主创造力,提高软件代码的质量,降低开发成本,提高产品交付能力。
1  一种软件自动持续集成方法
随着信息化建设步伐的逐渐加快,信息化在各行业的应用也越来越广泛,与行业相关的业务支撑系统及平台呈规模化、复杂化的发展趋势,随着软件复杂度的不断增加、软件交付周期的不断缩短和交付频率的提高,传统集成方式面临的问题日益严重。软件自动持续集成方法的研究是为了解决以下问题。1)传统的集成采用人工手动执行构建、状态监控及出错检查,该方法工作量大,容易出错,进而影响产品的质量和交付进度;2)传统的集成方法每构建一个项目皆需重新构建,无现成模板可用,且对现有软件进行更新时,也需手动进行新构建部分的集成。
持续集成的要素[5]有9个。单一的代码库;自动构建;自动测试;代码提交频繁;快速构建;模拟生产环境的自动测试;每个人都可以很容易地获取最新可执行的应用程序;每个人都清楚正在发生的状况;自动化的部署。基于以上对持续集成要素的研究,在企业中实践持续集成主要从源代码管理、自动构建、自动测试等方面进行。本文主要围绕这部分进行软件自动持续集成方法的研究。
1.1 软件自动持续集成
软件自动持续集成方法的具体实施方案如图1所示。
S400对软件开发流程进行了结构化和规范化;S401有利于软件开发项目的管理,以促进软件开发工作的进行。本方法预定义了多个软件开发中常用的xml 配置文件模板,以便需要时,自由选择添加使用,大大提高了开发效率,缩短了软件交付周期,降低了开发成本。S405~S408可降低出错率,提高产品质量及开发效率,且扫描自动化及构建发布测试自动化,可减少工作量,进一步缩短软件交付周期,提高开发效率。
图1 软件自动持续集成方法的实施流程示意图
1.2 构建持续集成
构建持续集成方法的研究目标有如下几点。1)可根据实际需要预设各步骤的执行顺序及执行方式,使各步骤流程能自启动;2)可将测试结果自动发送给开发用户;3)可对版本控制库进行实时监控,当发现版本控制库有变化时,即可自动或手动启动相应的构建步骤,及时发现软件缺陷并修复,便于进一步提高开发效率。本
文的软件构建持续集成方法的具体实施方案如图2所示。
图2 软件构建持续集成方法的实施流程示意图软件构建持续集成可帮助建立整个构建所运行的环境,这里构建所运行的环境包括添加初始化模板、设置各步骤的执行顺序及执行方式,开发用户可根据实际需要预设各步骤的执行顺序及执行方式,使各步骤流程能自启动运行,按照预设的执行顺序自动运行,其减少了工作量,降低了开发成本,提高了开发效率;同时,此技术方法可将所述测试结果生成一个入口html文件,并对所述html文件进行压缩打包,通过邮件的方式自动发送给开发用户,所述测试结果包括各步骤的运行时长、运行状态、运行结果及运行日志,开发用户可全面了解掌握各步骤的相关信息,及时发现缺陷并进行修复,避免错误缺陷一直延续至后期,给后期的工作带来更严重错误,因此,其可降低错误率并大大提高开发效率;另外,此方法还可对版本控制库进行实时监控,当发现版本控制库有变化时,可自动或手动启动相应的构建步骤,及时发现软件缺陷并修复,便于进一步提高开发效率。
1.3 自动生成版本更新说明
企业的大型系统总是不断优化升级,使软件版本更新越来越频繁;而每次版本发布,都需要编写版本说明,描述修改的内容。传统的方法是在更新版本发布之前,由开发团队收集整理版本说明,其缺点是无法客观地和代码文件的修改对应起来,容易发生错漏;而且,提供的版本说明,很多是为了应付敷衍了事,质量检查难以逐次分辨。因此,软件版本更新说明存在不完整、不准确,且不能客观地将软件版本更新说明与实际修改的源代码文件一一对应的缺陷。
自动生成版本更新说明方法研究目标:提供一种自动生成软件集成版本更新说明方法,可自动生成版本更新说明,并与实际修改的源代码文件一一对应起来,能减少开发团队的工作量,降低软件更新发布的成本,加快发布时间。此方法的技术点如下。1)逐行读取当前版本的文件,获取注释块;2)筛选出所述注释块中特定格式的注释,所述特定格式为包含SOA字段;3)读取当前版本与前一版本所述注释块中特定格式的最新注释;4)将当前版本与前一版本所述注释块中特定格式的最新注释进行比对,判断是否一样,当判断为否时,提取当前版本注释块中的最新注释,并显示出来;将当前版本中所有被提取出来的最新注释进行汇总,形成版本更新说明。自动生成版本更新的具体实施方案如图3所示
图3 自动生成软件集成版本更新说明方法的实施流程示意图
2  基于云的持续集成平台
2.1 自动持续集成系统功能架构
通过对持续集成相关技术的理论研究和具体实践的探索,本文实现的自动持续集成系统的功能架构如图4所示。此系统囊括了源代码控制管理、构建、代码检查、测试、发布等软件建设流程,从而实现了软件开发过程的自动化、一体化,能有效帮助企业信息化建设提高开发、管理效率,保证软件质量,降低交付风险。下面主要介绍与本文提出的理论方法密切相关的三部分。
1) 源代码控制模块应用了自动生成版本更新说明方法,并通过结合代码管理软件,可允许用户自定义版本更新说明的生成需求。同时,借助代码检查辅助源代码管理,提供自定义的代码设计需求检测,提高整体代码质量。
2) 产品构建则是在构建持续集成理论方法的研究基础上结合构建工具软件,实现软件快速自动构建,从而节省大量的人工成本。甚至能允许各个开发者进行每日构建,并结合自动化测试工具进行回归测试,确保每次修改必然能快速验证其准确性,从而确保最终的软件质量。
3) 发布工具的融合允许有效快速地进行真实环境的测试。通过发布模块将成功通过自动构建、自动回归测试的软件发布到已部署于服务器端的真实运行环境中进行实时测试,从而进一步降低软件交付的风险。
图4 持续集成系统功能架构图
持续集成的概念软件自动持续集成平台通过经常反复地构建软件、代码检查和测试,可以大大提高在早期发现缺陷的可能性,而缺陷在早期还不复杂,容易解决。由此可见,尽早、尽可能地在信息化建设过程中使用持续集成技术便可以尽可能早的发现缺陷,于此同时,缺陷也更可能得以解决,从而确保了最终系统的正确性和精确性,降低交付风险。
2.2 基于云的自动持续集成系统架构
本文通过研究软件自动持续集成方法,明确了相应系统的功能架构,同时,结合电网企业在当前信息化建设过程中显现的突出现象——大量的软件项目仍采用传统的集成方式,迫切需要借助持续集成平台来提高项目建设的质量和效率,提出了采用云计算技术[6]搭建基于云的软件自动持续集成平台,提供随时随地的持续集成服务。该云平台通过有效利用电网内部现有软硬件资源,提供按需的资源配置和服务,来实现“即需即取”的资源管理模式,降低整体的部署成本。基于云的软件自动持续集成平台的整体架构如图5所示。
图5 基于云的软件自动持续集成平台的架构图基于云的自动持续集成平台的主要结构包括以下三个部分。
1) 应用层。提供内部人员持续集成服务,可以随时随地通过基于云的持续集成平台进行持续集成实施、过程管理、维护和最终报告日志的查看等操作。方便内部人员随时随地管理多项目的持续集成情况。
2) 平台层。是该云计算体系结构的核心组成部
分。它负责对资源的统一分配与调度,使得类型繁多的服务能够在复杂底层环境上稳定运行。该平台融合了持续集成过程中各个阶段所需要的软硬件资源、工具等,主要包括如源代码控制工具(SVN)、构建工具(maven)、代码检查(Checkstyle)、测试工具(JUnit)、发布工具(WebSphere)。主要目标是实现集成环境的虚拟化,根据集成项目需求,按需分配虚拟化的持续集成环境。
3) 资源层。为项目提供虚拟化的计算资源、存储资源和网络资源,根据项目需求进行动态分配与调整。资源层又分为物理资源层和虚拟化平台层,其中物理资源层主要是指物理的计算资源、存储资源和网络资源,虚拟化平台层包括虚拟服务器、虚拟存储和虚拟网络。
应用层为云平台提供了更多的应用和内容,满足多种需求、支持更多的应用,平台层与资源层能够为应用层提供运营的平台和更多更灵活的硬件资源,提供按需的资源配置和部署,实现“即需即取”服务模式。
3  结束语
持续集成技术的概念提出已久,软件开发人员也逐渐认识到它的价值,但是真正在系统开发建设过程中实现了持续集成实践的情况并不多见,如何在企业信息化建设过程中充分发挥持续集成的优势显得越来越重要,本文在结合电网公司的信息化建设需求的基础上,提出了一种软件自动持续集成方法。同时,基于该软件自动持续集成方法,运用云计算技术搭建了相应的云平台,来验证该研究的正确性和有效性。该平台采用“按需服务”的管理模式,合理并充分地利用现有的软硬件资
源,提供虚拟化的持续集成环境,从整体上降低持续集成系统的部署成本。
基于云平台的软件自动持续集成方法的研究和实现能有效帮助企业在实施信息化建设过程中,提高效率,降低开发、管理、交付等的成本和风险。基于本文研究实现的基于云平台的自动持续集成系统已经投入使用,从使用效果反馈可以明确,该系统能确保信息系统建设、开发和集成全过程(包括功能模块的编译、构建,各功能模块集成和组装,单元测试、组装测试和回归测试)的自动化,并能通过多种形式及时反馈期间的信息,以便于需求提出人员、系统分析人员、项目管理人员、系统设计人员、系统开发人员和系统测试人员及时了解系统建设过程中出现的情况和问题,能及时进行处理。
参考文献
[1] 张湘辉.软件开发的过程与管理[M].北京:清华大学出版社,
2005
[2] 任玉双.持续集成在项目构件化开发中的应用研究[D].山
东师范大学,2012
[3] Duvall P M,Matyas S,Glover A.Continuous integration:
improving software quality and reducing risk[M]. Pearson Education,2007
[4] 戴建国,赵庆展,郭理,等.持续集成在项目开发中的应用研
究[J].计算机工程与设计,2009,30(10):2573-2576[5] Continuous Integration[EB/OL].[2013-12-21].www.
martinfowler/articles/continunusIntegration.html [6] 吴朱华.云计算核心技术剖析[M].北京:人民邮电出版社,
2011
作者简历
严宇平
硕士研究生,主要研究方向为软件工程、云计算
王学文
硕士研究生,主要研究方向为软件工程、自动化测试、云计算
(下转61页)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。