Multi-stage continuous integration

Multi-stage continuous integration

Multi-Stage Continuous integration allows for a high degree of integration to occur in parallel while vastly reducing the scope of integration problems. [1]

Contents

Theory

Multi-Stage CI takes advantage of a basic unifying pattern of software development: software moves in stages from a state of immaturity to a state of maturity, and the work is broken down into logical units performed by interdependent teams that integrate the different parts together over time. What changes from shop to shop is the number of stages, the number and size of teams, and the structure of the team interdependencies.

Recommended Practices

Multi-stage Continuous Integration is an expansion upon Continuous integration, it presumes that you are already following those recommended practices.

The larger and/or more complex the project, the higher the chance that the project becomes unstable. Alerts and broken builds increase as the project grows. Progress decreases and the mainline gets increasingly unstable. The risk of build failure increases exponentially as the number and locations of developers grow.[2]

Recommended Practice #1

Each developer works on their own task. As they make changes, CI is done against that team's branch. If it does not succeed, then that developer (possibly with help from her teammates) fixes the branch. When there is a problem, only that team is affected, not the whole development effort. This is similar to how stopping the line works in a modern lean manufacturing facility. If someone on the line pulls the "stop the line" cord, it only affects a segment of the line, not the whole line.

On a frequent basis, the team will decide to go to the second phase: integration with the mainline. In this phase, the team does the same thing that an individual would do in the case of mainline development. The team's branch must have all changes from the mainline merged in (the equivalent of a workspace update), there must be a successful build and all tests must pass. Integrating with the mainline will be easier than usual because only pre-integrated features will be in it, not features-in process. Then, the team's changes are merged into the mainline which will trigger a build and test cycle on the mainline. If that passes, then the team goes back to the first phase where individual developers work on their own tasks. Otherwise, the team works on getting the mainline working again, just as though they were an individual working on mainline.

Changes propagate as rapidly as possible, stopping only when there is a problem. Ideally, changes make it to the main integration area just as frequently as when doing mainline development. The difference is that fewer problems make it all the way to the main integration area. Multi-Stage CI allows for a high degree of integration to occur in parallel while vastly reducing the scope of integration problems. [3]

Recommended Practice #2

For Multi-Stage CI, each team must have its own branch.

Advantages

Multi-stage Continuous integration has many advantages:[citation needed]

  • When unit tests fail, or a bug is discovered, developers might revert the codebase back to a bug-free state, without wasting time debugging.
  • Integration problems are detected and fixed continuously - no last minute hiatus before release dates;
  • Early warning of broken/incompatible code;
  • Early warning of conflicting changes;
  • Immediate unit testing of all changes;
  • Constant availability of a "current" build for testing, demo, or release purposes;
  • The immediate impact of checking in incomplete or broken code acts as an incentive to developers to learn to work more incrementally with shorter feedback cycles.

Tools

Tools that support Multi-stage continuous integration include:

  • AccuRev[4] - Version Control and ALM tool
  • Electric Cloud — Build, test and deployment framework tool designed to automate the software production lifecycle
  • AnthillPro - Build, dependency, release tool [5]
  • Rational Team Concert[6] ALM-Platform

See also

References

  1. ^ http://www.ddj.com/development-tools/212201506 Multi-Stage Continuous Integration accessdate 2009-02-25, Poole, Damon, 2008-12-02 Dr. Dobb's, Published by TechWeb
  2. ^ http://damonpoole.blogspot.com/2008/01/advanced-multi-stage-continous.html Advanced Multi-Stage Integration, accessdate 2009-03-19, Poole, Damon, 2009-01-17 Agile Development Thoughts
  3. ^ http://www.cmcrossroads.com/content/view/12685/135/ Large Scale Continuous Integration, Poole, Damon, 2009-01-19 CMCrossroads Published by CMC Media
  4. ^ http://www.accurev.com/press-releases/030408-accurev-electriccloud.html AccuRev and Electric Cloud Partner to Advance Multistage Continuous Integration and Scalable Agile Best Practices, accessdate 2009-03-19
  5. ^ http://www.anthillpro.com/html/resources/build-pain-relief/team-based-streams.html Pain Free Building Guide: Team Based Streams
  6. ^ http://jazz.net/

Wikimedia Foundation. 2010.

См. также в других словарях:

  • Continuous integration — In software engineering, continuous integration (CI) implements continuous processes of applying quality control small pieces of effort, applied frequently. Continuous integration aims to improve the quality of software, and to reduce the time… …   Wikipedia

  • Continuous Integration — Kontinuierliche Integration (auch: fortlaufende oder permanente Integration, en. Continuous Integration) ist ein Begriff aus der Software Entwicklung, der den Prozess des regelmäßigen, vollständigen Neubildens und Testens einer Anwendung… …   Deutsch Wikipedia

  • Multi-Purpose Logistics Module — 10 March 2001 – The Leonardo Multi Purpose Logistics Module rests in Discovery s payload bay in this view taken from the ISS by a crew member using a digital still camera during STS 102 …   Wikipedia

  • Continous integration — Kontinuierliche Integration (auch: fortlaufende oder permanente Integration, en. Continuous Integration) ist ein Begriff aus der Software Entwicklung, der den Prozess des regelmäßigen, vollständigen Neubildens und Testens einer Anwendung… …   Deutsch Wikipedia

  • Kontinuierliche Integration — (auch: fortlaufende oder permanente Integration, en. Continuous Integration) ist ein Begriff aus der Software Entwicklung, der den Prozess des regelmäßigen, vollständigen Neubildens und Testens einer Anwendung beschreibt. Obwohl dieses Konzept… …   Deutsch Wikipedia

  • Delta-sigma modulation — Delta sigma (ΔΣ; or sigma delta, ΣΔ) modulation is a method for encoding high resolution or analog signals into lower resolution digital signals. The conversion is done using error feedback, where the difference between the two signals is… …   Wikipedia

  • Adel Sedra — is an Egyptian electrical engineer whose research specialization is microelectronics, with particular emphasis on applications in communication and instrumentation systems. He received his bachelor of science in electrical engineering from Cairo… …   Wikipedia

  • Marshall Space Flight Center — George C. Marshall Space Flight Center Aerial view of the test area at MSFC …   Wikipedia

  • Internal Market (European Union) — European Union This article is part of the series: Politics and government of the European Union …   Wikipedia

  • Bicycle — For other uses, see Bicycle (disambiguation). A mountain bike, a popular multi use bicycle. A bicycle, also known as a bike, pushbike or cycle, is a human powered, pedal driven, single track vehicle, having two wheels attached to a frame, one… …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»