`
landmine
  • 浏览: 95060 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

全面分析持续集成优缺点(1)

阅读更多

由于这是Fowler先生送给全体中国软件开发者的礼物,所以我绝对不敢独占。任何人都可以在任何地方随意转载本文,但是在转载时请保持本文完整性--包括标题、版权声明、原文链接、译者语……总之,请不要在转载的时候做任何改动或增删。另外,如果能在转载的时候顺手给我一个mail,我会更加高兴。

  下面,请开始欣赏这篇精彩的文章。

  在任何软件开发过程中都有一个重要的部分:得到可靠的软件创建(build)版本。尽管知道创建的重要性,但是我们仍然会经常因为创建失败而惊讶不已。在这篇文章里,我们将讨论Matt(Matthew Foemmel)在ThoughtWorks的一个重要项目中实施的过程,这个过程在我们的公司里日益受到重视。它强调完全自动化的、可重复的创建过程,其中包括每天运行多次的自动化测试。它让开发者可以每天进行系统集成,从而减少了集成中的问题。

  ThoughtWorks公司已经开放了CruiseControl软件的源代码,这是一个自动化持续集成的工具。此外,我们还提供CruiseControl、Ant和持续集成方面的顾问服务。如果需要更多的信息,请与Josh Mackenzie(jmackenz@ThoughtWorks.com)联系。

  本文有以下主要内容:

  持续集成的优点

  集成越频繁,效果越好

  一次成功的创建是什么样的?

  单一代码源

  自动化创建脚本

  自测试的代码

  主创建

  代码归还

  总结

  在软件开发的领域里有各种各样的"最佳实践",它们经常被人们谈起,但是似乎很少有真正得到实现的。这些实践最基本、最有价值的就是:都有一个完全自动化的创建、测试过程,让开发团队可以每天多次创建他们的软件。"日创建"也是人们经常讨论的一个观点,McConnell在他的《快速软件开发》中将日创建作为一个最佳实践来推荐,同时日创建也是微软很出名的一项开发方法。但是,我们更支持XP社群的观点:日创建只是最低要求。一个完全自动化的过程让你可以每天完成多次创建,这是可以做到的,也是完全值得的。

  在这里,我们使用了"持续集成(Continuous Integration)"这个术语,这个术语来自于XP(极限编程)的一个实践。但是我们认为:这个实践早就存在,并且很多并没有考虑XP的人也在使用着它。只不过我们一直用XP作为软件开发过程的标准,XP也对我们的术语和实践产生了深远的影响。尽管如此,你还是可以只使用持续集成,而不必使用XP的任何其他部分--实际上,我们认为:对于任何切实可行的软件开发活动,持续集成都是很基本的组成部分。

  实现自动化日创建需要做以下几部分的工作:

  将所有的源代码保存在单一的地点,让所有人都能从这里获取最新的源代码(以及以前的版本)。

  使创建过程完全自动化,让任何人都可以只输入一条命令就完成系统的创建。

  使测试完全自动化,让任何人都可以只输入一条命令就运行一套完整的系统测试。

  确保所有人都可以得到最新、最好的可执行文件。

  所有这些都必须得到制度的保证。我们发现,向一个项目中引入这些制度需要耗费相当大的精力。但是,我们也发现,一旦制度建立起来,保持它的正常运转就不需要花多少力气了。

持续集成的优点

  描述持续集成最大的难点在于:它从根本上改变了整个开发模式。如果没有在持续集成的实践环境中工作过,你很难理解它的开发模式。实际上,在单独工作的时候,绝大多数人都能感觉到这种气氛--因为他们只需要与自己的系统相集成。对于许多人来说,"团队开发"这个词总让他们想起软件工程领域中的一些难题。持续集成减少了这些难题的数量,代之以一定的制度。 [Page]

  持续集成最基本的优点就是:它完全避免了开发者们的"除虫会议"--以前开发者们经常需要开这样的会,因为某个人在工作的时候踩进了别人的领域、影响了别人的代码,而被影响的人还不知道发生了什么,于是bug就出现了。这种bug是最难查的,因为问题不是出在某一个人的领域里,而是出在两个人的交流上面。随着时间的推移,问题会逐渐恶化。通常,在集成阶段出现的bug早在几周甚至几个月之前就已经存在了。结果,开发者需要在集成阶段耗费大量的时间和精力来寻找这些bug的根源。

  如果使用持续集成,这样的bug绝大多数都可以在引入的同一天就被发现。而且,由于一天之中发生变动的部分并不多,所以可以很快找到出错的位置。如果找不到bug究竟在哪里,你也可以不把这些讨厌的代码集成到产品中去。所以,即使在最坏的情况下,你也只是不添加引起bug的特性而已。(当然,可能你对新特性的要求胜过了对bug的憎恨,不过至少你可以多一种选择。)

  到现在为止,持续集成还不能保证你抓到所有集成时出现的bug。持续集成的排错能力取决于测试技术,众所周知,测试无法证明已经找到了所有的错误。关键是在于:持续集成可以及时抓到足够多的bug,这就已经值回它的开销了。

  所以,持续集成可以减少集成阶段"捉虫"消耗的时间,从而最终提高生产力。尽管现在还不知道是否有人对这种方法进行过科学研究,但是作为一种实践性的方法,很明显它是相当有效的。持续集成可以大幅减少耗费在"集成地狱"中的时间,实际上,它可以把地狱变成小菜一碟。

集成越频繁,效果越好

  持续集成有一个与直觉相悖的基本要点:经常性的集成比很少集成要好。对于持续集成的实践者来说,这是很自然的;但是对于从未实践过持续集成的人来说,这是与直观印象相矛盾的。

  如果你的集成不是经常进行的(少于每天一次),那么集成就是一件痛苦的事情,会耗费你大量的时间与精力。我们经常听见有人说:"在一个大型的项目中,不能应用日创建",实际上这是一种十分愚蠢的观点。

  不过,还是有很多项目实践着持续集成。在一个五十人的团队、二十万行代码的项目中,我们每天要集成二十多次。微软在上千万行代码的项目中仍然坚持日创建。

  持续集成之所以可行,原因在于集成的工作量是与两次集成间隔时间的平方成正比的。尽管我们还没有具体的衡量数据,但是可以大概估计出来:每周集成一次所需的工作量绝对不是每天集成的5倍,而是大约25倍。所以,如果集成让你感到痛苦,也许就说明你应该更频繁地进行集成。如果方法正确,更频繁的集成应该能减少你的痛苦,让你节约大量时间。

分享到:
评论

相关推荐

    综合论述SSH的优缺点

    标题“综合论述SSH的优缺点”指的是对Secure Shell(SSH)协议的全面分析,包括它的优点和不足。SSH是一种网络协议,用于安全地远程登录到服务器,执行命令,传输数据,以及在不安全的网络环境中提供加密通信。SSH...

    bk-ci蓝鲸持续集成平台 v1.14.0.zip

    对于计算机案例研究,可以对比分析bk-ci与其他同类工具(如Jenkins、Travis CI)的优缺点,或者探讨其在特定行业的应用情况和效果。模板建站则可能涉及如何利用bk-ci快速搭建和部署网站项目。 总的来说,bk-ci蓝鲸...

    软件工程中的测试自动化与持续集成.pptx

    ### 软件工程中的测试自动化与持续集成 #### 第一章:软件工程中的测试自动化与持续集成 **软件测试的重要性** 软件测试是确保软件质量和可靠性的关键步骤。通过全面而深入的测试,可以在软件发布前发现并修复...

    系统集成项目案例系统集成项目案例

    案例分析可能揭示了在实际操作中如何权衡不同技术的优缺点,以及如何设计出可扩展、可维护的系统架构。 实施阶段通常包括设备采购、安装调试和系统测试。在这一环节,案例可能详细描述了如何进行硬件部署、软件安装...

    ### GitHub: 信息、使用技巧和优缺点

    4. **自动化部署**:结合 GitHub Actions、Travis CI 等持续集成/持续部署(CI/CD)工具,实现自动化构建、测试和部署。这不仅提高了开发效率,还确保了软件质量的一致性和可靠性。 5. **社区参与**:积极参与 ...

    CRM优缺点.pdf

    4. **定制和集成**:不同的企业有不同的需求,系统可能需要定制或与其他业务系统集成,这可能带来复杂性和额外成本。 5. **持续维护和升级**:CRM系统需要持续的维护和升级,以应对市场变化和技术进步,这也是一项...

    OA厂商优缺点 方面的文档 我在网上找的

    OA厂商众多,各有优缺点,选择合适的OA系统对于企业的数字化转型至关重要。以下是对一些常见OA厂商的详细分析: 1. 泛微(www.weaver.com) 泛微采用J2EE开发技术,拥有强大的市场地位和理念,其产品功能齐全,品牌...

    BIM软件的优缺点及BIM软件的选择.pdf

    1. **集成信息:** BIM软件能够整合建筑、结构和机电等多个专业领域的信息,提供全面的项目视图。 2. **协同设计:** 支持团队间的实时协作,减少设计冲突和错误。 3. **可视化:** 提供高精度的三维模型,便于设计...

    淘宝网产品优缺点分析报告,抛砖引玉.ppt

    作为中国网络卖家和购物者的首选平台,淘宝网凭借其独特的战略和产品特性,成功地构建了一个全面的商业生态系统。 淘宝网的战略定位是电子商务基础服务提供商,它的市场策略主要针对卖家和买家。对卖家,淘宝采取...

    【淘宝网产品优缺点分析报告】.pptx

    1. 融合的电子商务平台:集成了购物、支付、交流等多元化的在线交易功能。 2. 完善的支付体系:通过支付宝提供安全的支付服务,包括密码安全控件、手机验证支付、账户CA验证等多种支付方式,覆盖众多银行和支付渠道...

    2014年上半年系统集成项目管理工程师案例分析考试学习重点

    每种模型都有其适用场景与优缺点,文章中简要介绍了这些模型的基本概念及其在项目管理中的应用。 - **知识点五:沟通管理** 沟通管理对于项目的成功同样至关重要。有效的沟通能够确保团队成员之间信息的准确传递...

    电子功用-数字集成电路自动测试系统

    4. 测试策略与方法:讨论如何选择合适的测试模式,包括边界扫描测试、功能测试、静态时序分析等,并分析不同测试方法的优缺点。 5. 故障模型和检测覆盖率:介绍常见的故障类型,如短路、开路、参数漂移等,以及如何...

    2021-2025年中国集成电路制造行业调研及投资战略研究报告.pdf

    7. 集成电路制造行业投资战略的类型与选择:报告详细讨论了企业在投资战略中的各种选择,包括重点投资战略、稳定型投资战略和紧缩型投资战略,并分析了其优缺点。 8. 投资战略选择的原则与注意事项:报告探讨了企业...

    2021-2025年中国集成吊顶行业调研及社交媒体营销战略研究报告.pdf

    本报告基于社交媒体的内涵、特点、优缺点,从营销概念和特点出发,结合微信营销案例,分析了社交媒体营销的具体应用和传播策略,包括品牌展示、客户维护、业绩提升、服务改善和形象宣传。而传播策略方面则着重于情感...

    电子功用-用于太阳能电池模块的集成背板

    集成背板的材料选择通常包括聚氟乙烯(Teflon)、聚酯(PET)、聚酰胺(PA)和氟化乙丙烯(FEP)等,这些材料各有优缺点,选择时需根据实际应用环境和成本考虑。 此外,集成背板的设计也至关重要,包括背板的厚度、...

    系统集成项目管理工程师

    - **典型架构**:如客户端/服务器架构、分层架构、微服务架构等,每种架构都有其适用场景和优缺点。 - **软件架构设计方法**:包括自顶向下、自底向上、基于模式的设计等,选择合适的方法对于构建稳定可靠的系统至关...

    软件及系统集成行业客户满意度调查问卷.doc

    在软件研发业务部分(问题8-9),调查问卷关注了软件产品的来源渠道和质量评价,这有助于企业了解产品推广的有效途径以及产品本身的优缺点,以便优化产品开发和市场营销策略。 综上所述,这份调查问卷旨在全面评估...

    系统集成项目管理工程师知识要点一览

    它包括系统开发审计、数据中心和网络通信设施的结构审计、支持其他审计工作、提供增值服务、灾难恢复和业务持续计划审计、系统安全审计、网站信息审计、全面控制审计、系统运营效能审计、投资回报率审计以及供应商...

    jbpm选择理由及其优势

    8. **JavaEE标准接口集成**:预留了WebService、JCA、JMS等JavaEE标准接口,使得jBPM能够轻松地与标准JavaEE程序集成,增强了系统的互操作性。 9. **跨平台能力**:作为完全的Java工作流引擎,jBPM可以无缝移植到...

Global site tag (gtag.js) - Google Analytics