`
ihuashao
  • 浏览: 4720549 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

持续集成——保持项目节奏实践之一

阅读更多

第9章 保持项目节奏

项目经理不但要用管理实践掌控项目,还可以欢迎团队改变自己的技术实践,从而获得更大收益。本章包含的一系列实践,能为项目带来很多好处。项目经理和团队要根据自身的实际情况,判断如何调整、使用这些实践,而不要强制推行。如果你认为它们有所裨益,不妨将其介绍给团队,并欢迎团队积极尝试。

9.1 在项目中使用持续集成

开发人员用一两个小时编写一段代码,对其进行编译,测试,复查,构建,运行冒烟测试,并验证做出的改变不会破坏现有系统代码,再将其签入到代码库中。持续集成就这么发生了。

持续集成可以让开发人员马上得到所做工作的反馈。他们开始考虑将大任务拆分成更小的部分(这可以让他们以更快的步伐前进),还能尽早识别出项目的集成风险。持续集成让开发人员每天都能有所收获,帮助项目团队找到符合自己的节奏。

开发人员只有在完成了某个功能的代码后才将其签入,这就是按阶段集成的方式。有些开发人员一周签入一次代码。有些更糟糕的项目,开发人员一到两个月才签入一次代码。按阶段集成会打断项目的节奏。构建时出现的问题,会中断设计和编写新功能代码的人们的思路。他们不得不记住很多小细节,而这些小细节覆盖了从项目开始直到进行集成的各个阶段。如果忘记了这些细节,项目进度会放缓,因为团队发现了缺陷,而且必须想起可能是几个月前所写代码的细枝末节。这其实是一种同时处理多任务的方式,而且特别不容易发现。人们是在做同一个项目的工作,而且手上的任务可能也相关,但是思考问题时的抽象层次却有所不同(设计比调试的抽象层次更高),而且也不再是处理同一个功能的问题,思考问题的上下文由此发生了变化。所有切换上下文的代价都发生在这里(参见16.7.3节),在设计下一个功能时,开发人员可能会因此而丧失好的想法,还可能增加向设计中引入缺陷的潜在风险。

频繁构建是为开发人员和项目经理准备的

如果你提出使用每日构建,测试人员可能会抱怨:“我们做不到以如此快的速度构建,只能每周构建一次。”频繁构建,比如每小时甚或每天,不是为测试人员准备的。频繁构建可以为开发人员提供反馈,同时让项目经理了解项目状态。

如果测试人员可以利用每日构建来运行测试,那就太棒了。不过即使测试人员做不到这一点,通过每天构建可工作的代码,并维持这样的节奏,开发人员也可以从中获得有价值的反馈。

如果项目经理不能将变更后的代码集成到代码库中,你可以采取持续集成的变种。假设你管理一个项目团队,大家的任务是扩展一个已存在产品的设计。团队目前正在处理的部分产品代码是整个产品的基础。如果这部分代码无法运行,那整个产品都不能运行。你现在不想签入代码,因为这样会破坏现有的产品,而且会占用三个月的时间来添加和替换产品的现有功能。你该怎么做?

应该选择现有状况下的最佳方案。你可以将主代码库做一个分支版本,并让所有开发人员在这个分支版本上开发。他们每次签入一些代码,都会与主线代码进行同步,保证自己的分支代码是最新版本。这使得开发人员总是在最新和最全的代码版本库上进行开发,而且他们一直都在进行集成。当他们完成各自工作后,就会将所有代码都合并回主线。

这是持续集成的一个变种。如果必须重写已经存在的代码,而且在开发变更代码时不想破坏现有系统,可以采用这种方式。如果项目经理管理的项目所提供的服务要为一组产品使用,比如一个程序库或是一个平台,这种方式同样适用。


见http://www.martinfowler.com/articles/continuousIntegration.html。

分享到:
评论

相关推荐

    重构极限编程_XP的实践与反思(PDF).rar

    此外,测试驱动开发(TDD)是XP的关键实践之一,要求开发者先写测试用例,再编写满足这些测试的代码,确保代码的正确性。 书中还讨论了如何通过“计划游戏”来管理项目,这是一种高度互动的规划方法,让客户、...

    重构极限编程XP的实践与反思

    极限编程XP的核心实践包括:频繁交付、客户参与、结对编程、测试驱动开发(TDD)、持续集成、重构、简单设计、集体代码所有制、计划游戏和现场客户。书中对这些实践进行了详尽的解析,分析它们在实际项目中的应用和...

    【单片机项目】制作一辆基于STM32的智能小车——概述

    本文以"【单片机项目】制作一辆基于STM32的智能小车——概述"为标题,介绍了作者从购买STM32F429开发板到逐步掌握相关技术的过程,展现了学习单片机开发的挑战与乐趣。 STM32是一款广泛应用于各种嵌入式系统中的微...

    EDA课程设计——音乐发生器及简单电子琴设计

    EDA(Electronic Design Automation)课程设计是电子工程领域中的一项重要实践教学,旨在让学生掌握电路设计、模拟与数字系统集成以及计算机辅助设计等技能。在这个项目中,我们将专注于创建一个音乐发生器和简单的...

    IAST实践分享 - 安全技术资料汇总(共2份).zip

    通过集成到持续集成/持续部署(CI/CD)管道,IAST可以确保安全测试与开发节奏同步,提高效率,减少误报。 二、灰盒安全测试工具的分析 "基于IAST技术_灰盒安全测试工具产品分析.pdf"文档则专注于IAST中的灰盒测试...

    软件架构:组织原则与模式_Part1

    作者可能分享了如何设置和维持开发周期、迭代节奏以及如何通过持续集成和持续交付来优化流程的方法。 第五章“预见:预测、验证与调整”关注的是预见未来需求和问题的能力。这部分可能会讲解如何通过预测技术、风险...

    单片机课程设计——连续报警音发生器.zip

    在这个项目中,我们关注的是“连续报警音发生器”的实现,这是一个常见的单片机应用,常用于安全系统、智能家居、汽车电子设备等领域,以发出持续的音频警告信号。 首先,我们需要理解单片机是什么。单片机是一种微...

    minjiekaifa.rar_agile_敏捷_敏捷开发_敏捷软件开发

    XP则强调编程实践,如对测试驱动开发(TDD)、结对编程和持续集成的重视。 敏捷开发的原则包括: 1. 我们的最高优先级是通过尽早并持续交付有价值的软件来满足客户。 2. 即使在开发的后期,也欢迎改变需求。敏捷...

    敏捷开发的必要技巧完整版

    8. 持续集成(CI)与持续部署(CD):CI是频繁将代码集成到主分支的过程,而CD是自动化部署代码到生产环境的实践,两者结合能快速发现集成错误并实现快速交付。 9. 重构:为了改善代码结构和设计,而不改变其外部...

    敏捷开发资料Agile

    8. 保持可持续的开发速度,团队成员应该能够保持一个稳定的工作节奏,项目应该可以长久地进行下去。 9. 追求技术卓越和良好的设计,增强敏捷性。 10. 简单——使未完成的工作最小化,最大化开发工作的透明度。 三、...

    SAFe-术语表-精益软件和系统工程

    持续集成是一种软件开发实践,要求开发人员频繁地将代码合并到共享仓库中,通常是每天或每周几次。每次合并后,都会自动运行构建过程,包括编译、构建和测试,以便尽早发现错误并确保软件的质量。通过持续集成,可以...

    Lean.Software.Development.An.Agile.Toolkit.2003

    1. **持续集成**:这是一种开发实践,要求开发人员频繁地将他们的代码变更集成到主分支,通常每天至少一次。这有助于尽早发现并解决合并冲突,减少集成难题。 2. **工作流可视化**:通过可视化工作流程,团队可以更...

    dianziqin.rar_dianziqin

    《电子琴程序开发详解——基于MT-IDE的优化实践》 在编程的世界里,创新与艺术结合的例子不胜枚举,而“dianziqin.rar_dianziqin”项目正是这样的一个典范,它是一个利用MT-IDE(Microcontroller Toolchain ...

    去软件公司实习报告5篇.pdf

    南京__软件有限公司专注于软件开发和信息系统集成,拥有自主知识产权的项目管理软件产品,例如__投资控制合同管理软件、__进度控制计划管理软件、__质量控制安全管理软件等。这些产品已在重大工程项目中得到应用,如...

    敏捷开发,敏捷开发,敏捷开发,敏捷开发

    - **实践建议**:采用短周期迭代、持续集成等敏捷实践,加强团队间的沟通与协作。 2. **态度决定一切** - **做事**:保持积极主动的态度,主动解决问题。 - **欲速则不达**:避免急于求成,耐心细致地处理每一个...

    开课吧Web全栈架构师第六期详解

    8. **DevOps实践**:Git版本控制、持续集成/持续部署(CI/CD)流程的搭建和使用。 9. **安全实践**:XSS、CSRF等常见Web安全问题的防范措施,以及HTTPS的使用。 10. **项目实战**:通过实际项目开发,巩固理论知识,...

    cpp-一个用于经典视频游戏的音乐音序器

    本文将深入探讨一个用C++语言编写的用于经典视频游戏的音乐音序器项目——"organya-master"。这个项目展示了如何利用C++进行多媒体处理,特别是音频处理,为游戏中的音乐创作提供了一种高效且灵活的解决方案。 音序...

    可演奏的电子琴PROTEUS仿真

    【可演奏的电子琴PROTEUS仿真】是一个利用专业电路设计与仿真软件——PROTEUS进行构建的电子琴项目。这个项目旨在通过单片机技术,实现一个完整的、功能丰富的电子琴,使得用户不仅能够观察到电路的工作原理,还能...

    五线谱学习工具(附加C#源代码)

    《五线谱学习工具——深度探索与C#编程实践》 五线谱是音乐理论的基础,它是记录音乐的图形语言,让音乐家们能够准确地表达旋律、节奏和和声。这款五线谱学习工具正是为了帮助音乐爱好者们更好地理解和掌握这一语言...

Global site tag (gtag.js) - Google Analytics