FACTOID # 48: Many Americans live alone - the United States leads the world in one person households.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

FACTS & STATISTICS    Simple view

  1. Select countries to view: (hold down Control key and click to select several)

     

     

    Compare:

     

     

  1. Select fact or statistic: (* = graphable)

     

     

     

  2. (OPTIONAL) Compare to statistic: (both need to be graphable)

     

     

     

  3. View result as:

     

       
(OR) SEARCH ALL encyclopedia, stats & forums:   

Encyclopedia > Continuous integration

The term Continuous integration emerged in the Extreme Programming community. It describes a set of Software Engineering practices that speed up the delivery of software by decreasing integration times. Extreme programming advocates Martin Fowler and Kent Beck first wrote about Continuous integration near the turn of the millennium: making it part of the Extreme Programming discipline. Fowler's paper[1] is a popular source of information on the subject. Beck's book Extreme Programming Explained (1999, ISBN 0-201-61641-6), the original reference for Extreme Programming, also describes the term. Image File history File links Emblem-important. ... Extreme Programming (or XP) is a software engineering methodology, the most prominent of several agile software development methodologies, prescribing a set of daily stakeholder practices that embody and encourage particular XP values (below). ... Software engineering (SE) is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. ... Extreme Programming (or XP) is a software engineering methodology, the most prominent of several agile software development methodologies, prescribing a set of daily stakeholder practices that embody and encourage particular XP values (below). ... Martin Fowler is a famous author and international speaker on software architecture, specializing in object-oriented analysis and design, UML, Patterns, and agile software development methodologies, including Extreme Programming. ... Kent Beck is the creator of Extreme Programming and is one of the founders of the Agile Manifesto. ... Extreme Programming (or XP) is a software engineering methodology, the most prominent of several agile software development methodologies, prescribing a set of daily stakeholder practices that embody and encourage particular XP values (below). ... Extreme Programming (or XP) is a software engineering methodology, the most prominent of several agile software development methodologies, prescribing a set of daily stakeholder practices that embody and encourage particular XP values (below). ...

Contents

The Practices

Although these practices existed before, extreme programming practitioners recommend that teams require their developers to continuously integrate.


Maintain a code repository

This practice advocates the use of a revision control system for the projects source code. All artifacts that are needed to build the project should be placed in the repository. In this practice, and in the revision control community is that the system should be buildable from a fresh checkout and not require additional dependencies. Fowler also mentions that where Branch is supported by tools its use should be minimised: prefer instead to integrate changes rather than create multiple versions of the software that are maintained simultaneously. The mainline (or trunk) should be the place for the working version of software. Revision control (also known as version control (system) (VCS), source control or (source) code management (SCM)) is the management of multiple revisions of the same unit of information. ... Revision control (also known as version control (system) (VCS), source control or (source) code management (SCM)) is the management of multiple revisions of the same unit of information. ... The trunk refers to the unnamed branch (version) of a file tree under revision control. ...


Automate the build

The system should be buildable using a single command. Many build tools exist, make has existed for many years, other more recent tools like Ant or MSBuild are frequently used in Continuous Integration environments. Automation of the build should include automating the integration which often includes deployment into a production-like environment. In many cases the build script not only compiles binaries but also generates documentation, website pages, statistics and distribution media (such as Windows MSI files or RPM files). In computer programming, make is a utility for automatically building large applications. ... Apache Ant is a software tool for automating software build processes. ... MSBuild is the build platform for Microsoft and Visual Studio. ... The Windows Installer (previously known as Microsoft Installer, codename Darwin) is an engine for the installation of programs on Microsoft Windows systems. ... RPM Package Manager (originally Red Hat Package Manager, abbreviated RPM) is a package management system. ...


Make your build self-testing

This touches on another aspect of Extreme programming: Test-driven development. As much as possible the system should be written with tests that verify it performs as intended. These tests should be run as part of the build. Automated tests are increasingly valuable as the system ages. Extreme Programming (or XP) is a software engineering methodology, the most prominent of several agile software development methodologies, prescribing a set of daily stakeholder practices that embody and encourage particular XP values (below). ... Test-Driven Development (TDD) is a software development technique consisting of short iterations where new test cases covering the desired improvement or new functionality are written first, then the production code necessary to pass the tests is implemented, and finally the software is refactored to accommodate the changes. ...


Everyone commits every day

By committing regularly every committer can reduce the number of conflicting changes. Checking in weeks worth of work runs the risk of conflicting with other features and can be very difficult to solve. Early small conflicts in an area of the system cause team-members to communicate about the change they are making.


Every commit (to mainline) should be built

Commits to the current working version should be built to verify they have been integrated correctly. A common practice is to use Automated Continuous Integration although this may be done manually. Indeed some prefer this approach. In many people's eyes continuous integration is synonymous with using Automated Continuous Integration where a continuous integration server or daemon monitors the version control system for changes, then automatically runs the build process. In Unix and other computer multitasking operating systems, a daemon is a computer program that runs in the background, rather than under the direct control of a user; they are usually instantiated as processes. ... Revision control is an aspect of documentation control wherein changes to documents are identified by incrementing an associated number or letter code, termed the revision level, or simply revision. It has been a standard practice in the maintenance of engineering drawings for as long as the generation of such drawings...


Keep the build fast

The build needs to be fast so that if there is a problem with integration it is quickly identified.


Test in a clone of the production environment

Having a test environment can lead to failures in tested systems when they are deployed to the production environment because the production environment may differ from the test environment in a significant way.


Make it easy to get the latest deliverables

Making builds readily available to stakeholders and testers can reduce the amount of rework necessary rebuilding a feature that doesn't meet requirements. In addition, early testing reduces the chances that defects would survive until deployment. Finding issues earlier also, in some cases, reduces the amount of work necessary to resolve them.


Everyone can see the results of the latest build

It should be easy to find out whether the build is broken and who made the change.


Automate Deployment

Advantages

Continuous integration has many advantages:

  • 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.

Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware thus making it behave as expected. ...

Software

Notable examples of continuous integration software include:

  • AnthillPro — a continuous integration server from Urbancode
  • Apache Continuum — a continuous integration server supporting Apache Maven and Apache Ant
  • Apache Gump — Apache's continuous integration tool
  • Atlassian Bamboo — commercial continuous integration server from Atlassian
  • BuildBot — a Python/Twisted-based continuous build system
  • Build Forge — IBM Rational Software's adaptive framework to standardize and automate build and release processes
  • CABIE — Continuous Automated Build and Integration Environment. Open source, written in Perl, works with CVS, Subversion and Perforce.
  • CruiseControlJava-based framework for a continuous build process
  • CruiseControl.NET — .NET-based automated continuous integration server
  • CruiseControl.rb for Ruby and Rails applications
  • Electric Commander — a continuous integration server by Electric Cloud
  • HudsonMIT licensed, written in Java, runs in servlet container, supports CVS, Subversion, Ant, Maven, and shell scripts
  • OpenMake Meister - CI Builds with Continuous Build Scripts and Build Avoidance by OpenMake Software.
  • OpenMake Mojo - freeware continuous integration server, written as an Eclipse RCP plugin
  • TeamCity - a continuous integration by JetBrains
  • Tinderbox — a Mozilla based product written in Perl
  • Parabuild — a commercial Continuous integration and release management system from Viewtier

Continuum is a great partner to Apache Maven which will run builds on a configurable schedule. ... For other uses of the word Maven see: Maven (disambiguation) Maven is a software tool for Java programming language project management and automated software build. ... Apache Ant is a software tool for automating software build processes. ... This article or section is not written in the formal tone expected of an encyclopedia article. ... Bamboo is a continuous integration server from Atlassian Software Systems, the makers of JIRA, Confluence and Crowd. ... BuildBot is a software development continuous integration tool which automates the compile/test cycle required to validate changes to the project code base. ... Python is a high-level programming language first released by Guido van Rossum in 1991. ... Twisted is an event-driven networking framework written in Python and licensed under the MIT licence. ... Rational Machines was founded by Paul Levy and Mike Devlin in 1981 to provide tools to expand the use of modern software engineering practices, particularly explicit modular architecture and iterative development. ... Continuous Automated Build and Integration Environment. ... Wikibooks has a book on the topic of Perl Programming Perl is a dynamic programming language created by Larry Wall and first released in 1987. ... The Concurrent Versions System (CVS), also known as the Concurrent Versioning System, is an open-source version control system invented and developed by Dick Grune in the 1980s. ... In computing, Subversion (SVN) is a version control system (VCS) initiated in 2000 by CollabNet Inc. ... Perforce, is a commercial, proprietary revision control system. ... In software development, CruiseControl is a Java-based framework for a continuous build process. ... Java language redirects here. ... The Microsoft . ... Electric Cloud, Inc. ... Hudson is a continuous integration tool written in Java, and runs in a servlet container, such as Apache Tomcat or the Glassfish application server. ... The MIT License, also called the X License or the X11 License, originated at the Massachusetts Institute of Technology, is a license for the use of certain types of computer software. ... Java is an object-oriented programming language developed initially by James Gosling and colleagues at Sun Microsystems. ... A servlet container comprises essentially the component of an application server that hosts and interacts with Java servlets. ... A shell script is a script written for the shell, or command line interpreter, of an operating system. ... Eclipse is an open-source software framework written primarily in Java. ... A Rich Client Platform (RCP) is a piece of software consisting of the following components: a core; a standard bundling framework; a portable widget toolkit; file buffers, text handling, text editors; a workbench (views, editors, perspectives, wizards). ... TeamCity is a commercial distributed build management and continuous integration system that allows software teams to run and monitor the software building process while improving the team communication and the integration of changes created by company JetBrains. ... JetBrains is a Czech software development company with offices in Prague, Czech Republic; Saint Petersburg, Russia and Boston, USA. It is known for its Java IDE, IntelliJ IDEA. JetBrains was founded in 2000 as a private company. ... Tinderbox is Mozillas detective tool, which allows developers to manage software builds and to correlate build failures on various platforms and configurations with particular code changes. ... Mozilla was the official, public, original name of Mozilla Application Suite by the Mozilla Foundation, nowadays called SeaMonkey suite. ...

See also

Build Automation is the act of scripting or automating the process of turning computer source code into binary code. ... It has been suggested that this article or section be merged into Martin Fowler. ...

Further reading

  • Duvall, Paul M. (2007). Continuous Integration. Improving Software Quality and Reducing Risk. Addison-Wesley. 0-321-33638-0. 

References

  1. ^ FOWLER, Martin. Continuous Integration.

External links

  • Continuous integration by Martin Fowler (an introduction)
  • Continuous Integration at the Portland Pattern Repository (a collegial discussion)
  • Cross platform testing at the Portland Pattern Repository
  • Continuous Integration Server Feature Matrix (a guide to tools)
  • Continuous Integration: The Cornerstone of a Great Shop by Jared Richardson (an introduction)
  • A Recipe for Build Maintainability and Reusability by Jay Flowers
  • Continuous Integration anti-patterns by Paul Duvall
  • Extreme programming

  Results from FactBites:
 
Continuous Integration (7442 words)
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day.
Continuous Integration assumes a high degree of tests which are automated into the software: a facility I call self-testing code.
Continuous Integration is all about communication, so you want to ensure that everyone can easily see the state of the system and the changes that have been made to it.
Continuous integration - Wikipedia, the free encyclopedia (565 words)
Continuous integration is a software engineering term describing a process that completely rebuilds and tests an application frequently.
Continuous integration is frequently associated with Extreme programming and other agile software development practices, but can be, and has been, adopted by more conventional methodologies too.
Sin [8] - Continuous Integration for Subversion [9] - a framework continuous integration.
  More results at FactBites »


 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments
Please enter the 5-letter protection code

Want to know more?
Search encyclopedia, statistics and forums:

 


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.