软件开发为何采用持续集成

软件开发过程中,我们会涉及到配置管理、源码控制、发布计划、审计、符合性和集成,以及构建测试和部署流程、验收测试、依赖管理和生产环境的创建与管理,很多人认为这些与确定需求、实现需求、写代码相比,这些活动并不那么重要,它只为是软件开发过程很小的一部分并且不需求多大的技术投入。其实不然,恰恰相反它们会消耗大量的时间和精力,而且是成功交付软件的关键因素。假如没有关注这一方面带来的潜在风险,就可能耗费大量不必要的资金,甚至导致整个项目严重延期。

  如果没有持续集成,我们可能会遇到下列问题:

  1、如何将一个想法以最快的速度交付给用户。

  2、如何协调开发人员、测试人员,以及构建和运维人员在一起高效地工作

  3、在发布当天是否遇到很多的问题,发布过程时候需要很长的时间。

  4、是否在开发完成之后才发布软件,失败后长期的加班。

  5、如何快速的获取用户的反馈,并让团队人员及时的改正。

  6、生产环境是否还是采用的手工部署,还在为不同环境之间的部署烦恼。

  7、在开发过程中,应用程序在相当长的一段时间内无法运行,无法验证每次修改的正确性。

  一行代码的改动需要花多长时间才能部署上线,处理方式是否可重复且可靠呢?从决定做某种修改到该修改结果正式上线的这段时间称为周期时间。对任何项目而言,它都是一个极为重要的度量标准。

  软件开发的首要任务是尽早交付有价值的软件并让客户满意,速度是至关重要的,因为未交付的软件就意味着成本。如果不能按时按量的交付,就会产生不必要的成本浪费。而为了更好的协调组内人员高效的工作,在整个交付过程中,团队中的每一个成员都必须对每一个交付特性负责,无论什么样的修改都应该触发反馈流程,反馈应该尽快发出,团队必须接受反馈,并依据它作出相应的行动。快速的交付使你能够验证那些新开发的特性或者修复的缺陷是否真的有用。

  为了达到短周期、高质量的交付目标,发布软件必须自动且频繁化。

  自动化:构建、部署、测试、发布

  频繁化:频繁发布,每个发布版本之间的差异会很小,大大减少与发布相关的风险,且容易回滚,频繁发布也会加快反馈速度。每当有人提交代码,就对整个应用进行构建,执行全面的自动化测试,以验证其正确性。更重要的是,如果构建或测试失败了,开发团队就要停下手头的工作,立即修复它,时时刻刻都要让正在开发的软件一直处于可工作的状态。

  实现持续集成,你需要的:

  1、版本控制,所有涉及产品的都要加入到版本控制中,包括构建与部署脚本。

  2、自动化构建,自动化的构建整个过程,缩短周期时间(Cycle time)。

  3、持续集成系统,Jenkins, ThoughtWorks公司的Go,JeBrains的TeamCity等。

  提交代码必须遵守以下原则:

  1、查看构建是否成功,如果失败,停下手头的工作和团队中的其他人一起修复。

  2、如果构建且测试全部通过,就从版本控制库中的代码更新到自己的开发环境上。

  3、在自己的修改上重新构建,运行所有的测试,确保在自己机器上的代码都是正确的且工作正常。

  4、如果本地构建成功, 再从版本构建库中更新代码到本地, 再做一次构建,如果成功的话,就提交本地的修改到版本库中。

  5、在远程持续集成服务器上再次构建包含你的这次提交的构建结果(通常是自动的)。

  6、如果构建失败,就停下手中的事,在自己的开发机上修复这个问题后,再重新回到步骤3.。

  7、构建成功,小庆祝一下,并开始下一项任务。

  持续集成缩短从想法到商业价值实现的时间,减少时间和降低风险,增加反馈,改进负责交付的开发、测试和运维人员之间的协作关系。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-18 17:41:14

软件开发为何采用持续集成的相关文章

基于Docker的开发模式驱动持续集成落地实施

11月30日,资深质量优化专家陈能技老师,在[DBA+社群]中间件用户组进行了一次主题为"基于Docker的开发模式驱动持续集成落地实施"的线上分享.小编特别整理出其中精华内容,供大家学习交流.同时,也非常感谢陈能技老师对DBA+社群给予的大力支持.    嘉宾简介   资深质量优化专家,12年软件测试与质量管理经验 <软件性能测试诊断分析与优化>等多本IT畅销书作者 演讲实录   今天主要交流的主题是基于Docker的开发模式如何驱动持续集成落地实施,这里会涉及两个主要的

利用Rational Team Concert在敏捷开发中进行持续集成

本文将介绍如何利用 Rational Team Concert(RTC)在敏捷开发过程中进行持续集成.详细说明了如 何在 RTC 中通过采取一系列的步骤和脚本开发,来保证持续集成过程的连续性和提高整个项目的效率. 同时还阐述了每一步可以利用的工具和最佳实践,从而使开发过程更加规范化,高效化. 概述 Rational Team Concert(RTC)是 Jazz 产品中最重要的一个,是一个可以任务分解集成,源代码版 本控制,进行自动构建和报告的工具.Jazz 做为 IBM 下一代的软件交付平台,

让你提前认识软件开发(51):VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改

第3部分 软件研发工作总结 VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改   [文章摘要]         Pclint是一种C/C++软件代码静态分析工具.它是一种更加严格的编译器,能够发现普通编译器所不能发现的代码中的很多问题,因此被广泛应用于软件开发项目中.        本文介绍了如何在VC++集成开发环境中配置Linux下的Pclint工程,给出了C语言中pclint规则A检查的常见错误,并描述了对应的修改办法.   [关键词]          VC++

java软件开发时采用CVS进行版本管理

问题描述 在java开发中使用cvs进行配置管理的详细说明?大家帮一下忙,谢谢! 解决方案 解决方案二:CVS配置管理的步骤如下:1.安装CVS服务器,并设置客户端用户名和密码.2.安装CVS客户端,用Eclipse对CVS进行集成并登录到CVS服务端.3.新建CVS服务端目录,并发布需要管理的项目.4.用Eclipse对项目进行迁入迁出管理.解决方案三:谢谢!

软件测试持续集成的方法实践

配置管理 配置管理在软件开发项目中极其重要,它记录了软件开发流程的演进过程.它能够实现软件增量式开发,并随时可以追溯或查看任意时间的软件版本.持续集成一书中对配置管理是这样定义的: 配置管理是指一个过程,通过该过程,所有与项目相关的产物,以及它们之间的关系都被唯一的定义.修改.存储和检索. 那么我们怎么做配置管理? (一)版本控制 (1)首先我们需要一个版本控制系统,Subversion.Mercurial或者Git,对于一个分布式的团队最好优先选择Mercurial或者Git. (2)把软件开

持续集成:软件质量改进和风险降低之道

问题 在软件行业发展的初期,软件项目中最棘手.最紧张的时刻就是集成.单独能工作的一些模块被组装在一起,系统整体却常常失败,而且很难找到失败的原因. 解决办法 解决办法的关键在于更为频繁地进行集成. 它给项目带来了完全不同的感觉.项目的可见性变得好了很多,因为问题能够更快地检测出来.引入缺陷和发现缺陷之间的时间间隔变短,就更容易发现缺陷,您可以很容易地看见改变了什么,以方便找到问题的根源.当它与良好的测试程序配合时,可以大大减少缺陷的数量.结果是,开发者在调试上花的时间减少了,在增加功能上花的时间

云计算提高敏捷软件开发的六种方式

云计算和虚拟化可以让你创建虚拟机,并使用基于云的服务用于项目管理.问题管理和具有自动化测试的软件构建.而这又从六个方面鼓励了敏捷软件开发. 澳大利亚综合金融服务领先供应商之一澳洲联邦银行(Commonwealth Bank)建立了一个私有云来运行内部应用程序作为服务.这些应用程序使用超过300个Oracle数据库,这些数据库都被合并到按需Oracle实例中,而该实例可以由浏览器界面内的应用程序开发团队进行非常迅速的配置.这使开发团队配置生产质量环境的准备时间从三个月缩减到两分钟. 同时,Sale

使用Subversion、Hudson和Eclipse构建持续集成系统的过程

持续集成系统是指持续地编译.测试.检查和部署源代码的系统. Martin Fowler 对持续集成是这样定义的 : 持续集成是一种软件开发实践,团队开发成员经常集成它们的工作,通常每个成员每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译.发布.自动化测试)来验证,从而尽快地发现集成错误.这个过程可以大大减少集成的问题,从而让团队能够更快的开发内聚的软件. 持续集成有以下几个特点和要求: 有统一的源代码库. 开发人员基于同一个源代码库进行开发是进行持续集成的一个前提.为了让持续集成系统

使用 Subversion、Hudson 和 Eclipse 构建持续集成系统

持续集成系统简介 持续集成系统是指持续地编译.测试.检查和部署源代码的系统. Martin Fowler 对 持续集成是这样定义的 : 持续集成是一种软件开发实践,团队开发成员经常集成它们的工作,通常每个成员每天可 能会发生多次集成.每次集成都通过自动化的构建(包括编译.发布.自动化测试)来验证,从而尽快地发现集成错误.这 个过程可以大大减少集成的问题,从而让团队能够更快的开发内聚的软件. 持续集成有以下几个特点和要求: 有统一的源代码库. 开发人员基于同一个源代码库进行开发是进行持续集成的一个