Opening the book…
Intent Increase confidence in changes by regularly rebuilding the system.
Problem
How do you convince your customer that you are on the right path?
This problem is difficult because:
- It can be hard to demo a software system under development, or to discuss problems with users since there is often no stable, running version of the system available.
- Integrating changes from multiple versions of a system can be slow and painful.
Yet, solving this problem is feasible because:
- You don’t have to wait until a component is “finished” before integrating it.
Solution
Institute a discipline of integrating new changes and developments on a daily basis.
Steps
- Have version management and configuration management systems in place.
- Make sure you have regression tests in place for the parts you are working on.
- Institute a discipline of short transactions for checking out system components and checking them back in again. Plan iterations to be as short as possible to allow changes to be integrated into a running system.
Tradeoffs
Pros
- You always have a working version to demo.
- You can always have a working version to run your regression tests.
- You can quickly validate your changes, thereby helping you to Build Confidence.
Cons
- You must continuously integrate changes.
Difficulties
- Large systems may have very long build times. You may need to rearchitect the system first to enable shorter build times.
- It can be hard to break some kinds of large modifications into meaningful updates that can be individually integrated.
Rationale
Many practitioners advocate a process of continuous integration as a way to avoid a risky and painful big-bang integration [Boo94].
Related Patterns
Regression Test After Every Change minimizes the risk of defects creeping in during integration.
Continuous Integration [Boo94] [Bec00] is a proven way to Always Have a Running Version.
This page titled 7.6: Always Have a Running Version was last modified on Tue, 01 Dec 2020 03:50:33 GMT and is shared under a CC BY-SA license and was authored, remixed, and/or curated by Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz.
The book could not be loaded just now.