7.6: Always Have a Running Version

Object-Oriented Reengineering Patterns · LibreTexts

0%

Contents

    Text

    Size
    100%
    Theme
    Typeface
    Line length
    Spacing

    From LibreTexts, under CC BY-SA, as the source states it; its equations are written in TeX, which the PDF shows typeset. This page at LibreTexts.

    7.6: Always Have a Running Version

    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.