continuous integration introduction

21
Continuous Integration

Upload: faber-d-giraldo

Post on 15-Jan-2015

1.280 views

Category:

Education


0 download

DESCRIPTION

Slides for introducing Continuous Integration into the software development process

TRANSCRIPT

Page 1: Continuous Integration Introduction

Continuous Integration

Page 2: Continuous Integration Introduction

Agenda

• Definition• CI Considerations• About tools• CI as a scheduling in the development process

Page 3: Continuous Integration Introduction

Sources

• Duvall, Matyas and Glover. Continuous integrationimproving software quality and reducing risk. AddisonWesley, 2007.

• Martin Fowler. Continuous Integration. Available inhttp://www.martinfowler.com/articles/continuousIntegration.html

• Schach, Stephen R. Object-Oriented and ClassicalSoftware Engineering Eighth Edition. Mc Graw Hill, 2010

• And so others…

Page 4: Continuous Integration Introduction

Critical Issue

Supporting the idea of creating systems tocontinuously build and test systems inresponse to changes in source control.

Page 5: Continuous Integration Introduction

Continuous Integration(From Wikipedia)

• Continuous Integration emerged in the ExtremeProgramming (XP) community

• XP advocates Martin Fowler and Kent Beck first wrote aboutcontinuous integration (1999).

• Beck's book Extreme Programming Explained, theoriginal reference for Extreme Programming, also describesCI.

• Fowler's paper is a popular source of information on thesubject.

Page 6: Continuous Integration Introduction

Martin Fowler and CIIn his very popular “Continuous Integration” article, Martin Fowlerdescribes CI as:

• “. . . a software development practice where members of a teamintegrate their work frequently, usually each person integrates atleast daily—leading to multiple integrations per day.

• Each integration is verified by an automated build (including test)to detect integration errors as quickly as possible.

• Many teams find that this approach leads to significantly reducedintegration problems and allows a team to develop cohesivesoftware more rapidly”

Page 7: Continuous Integration Introduction

Wikipedia say us!!!

Continuous integration (CI) implements continuousprocesses of applying quality control — smallpieces of effort, applied frequently.Continuous integration aims to improve the qualityof software, and to reduce the time taken to deliverit, by replacing the traditional practice of applyingquality control after completing all development.

From: http://en.wikipedia.org/wiki/Continuous_integration

Page 8: Continuous Integration Introduction

This means

• Continuous integration improving software quality andreducing risk

• As the complexity of a project increases (even just addingone more person), there is a greater need to integrate andensure that software components work together—earlyand often.

• Waiting until the end of a project to integrate leads to allsorts of software quality problems, which are costly andoften lead to project delays. CI addresses these risksfaster and in smaller increments

Page 9: Continuous Integration Introduction

The value of CI is to:

• Reduce risks• Reduce repetitive manual processes• Generate deployable software at any time and at

any place• Enable better project visibility• Establish greater confidence in the software

product from the development team

Page 10: Continuous Integration Introduction

Typical CI context

From: Continuous integration improving software quality and reducing risk

Page 11: Continuous Integration Introduction

Beyond to the CI Tools…

Practicing CI is more than installing and configuringsome tools.

• How many of the following items are youconsistently performing on your project?

• How many of the other CI practices can improveyour development capabilities?

Page 12: Continuous Integration Introduction

Beyond to the CI Tools…• On average, is everyone on your team committing code at least once a

day? Are you employing techniques to make it easier to commit codeoften?

• What percentage of each day’s integration builds is successful (that is, themost recent build run has passed)?

• Is everyone on your team running a private build before committing to therepository so that integration errors are reduced?

• Have you scripted your builds to fail if any of your tests or inspections fail?• Is a broken integration build a priority to fix on your projects?• Do you avoid getting the latest code from the version control system when

there is a broken build?• How often do you consider adding automated processes to your build and

CI system—on a continuous or even periodic basis?

Page 13: Continuous Integration Introduction

But Tools are so important…

…Hudson/Jenkins is widely recognized as a coretool for developers, QA engineers, projectmanagers, release engineers, DevOps, andmanagers. It is also a crucial open source option forteams using Agile methodology, in which continuousintegration is a fundamental practice…

• Kohsuke Kawaguchi - Creator of the Jenkins CI server.In: 7 Ways to Optimize Jenkins/Hudson White Paper

Page 14: Continuous Integration Introduction

The Hudson Book (pages 3-4)

• Without continuous integration, developing modernapplications is practically impossible withoutdramatic inefficiency. There is too much unproductivedown-time, and far too much waste. The developmentgroup described above would be hard pressed to releaseanything more than a global update once a month

• In other words, when you automate build, test, andverify using a tool like Hudson you can continuedeveloping your applications without having to wait(or synchronize) on some manual build, test, verifyprocess.

Page 15: Continuous Integration Introduction

Just for information…

• Jenkins and Hudson are the same =) inhttp://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software• Why Hudson and Jenkins names were choosed?

• Jenkins is an open source continuous integration toolwritten in Java. The project was forked from Hudsonafter a dispute with Oracle, which claims the right totrademark the Hudson name and has applied for such atrademark as of December 2010

Page 16: Continuous Integration Introduction

CI as a scheduling method

• RUP proposes the Integration Build Plan

• The purpose of this is to define the order inwhich the components should beimplemented, which builds to create whenintegrating the system, and how they are to beassessed.

Page 17: Continuous Integration Introduction

CI as a scheduling method

• RUP: You should adjust the outline of the Integration BuildPlan to suit the nature of your project. For example, if thesystem is large, there may be a case for having subsidiaryplans for each implementation subsystem. The formality andextent of the test material contained or referenced from theIntegration Build Plan will vary depending on the significanceof the build.

• The RUP approach to integration is to incrementallyintegrate the software. Incremental integration means thatcode is written and tested in small pieces, and thencombined into a working whole by adding one piece at atime.

Page 18: Continuous Integration Introduction

Integration approaches

• Integration then integration

• Top-down Integration

• Bottom-up integration

• Sandwich integration

Source: Object-Oriented and Classical Software Engineering Eighth Edition

Page 19: Continuous Integration Introduction

Integration approaches

Source: Object-Oriented and Classical Software Engineering Eighth Edition

Page 20: Continuous Integration Introduction

Integration approaches

Source: Object-Oriented and Classical Software Engineering Eighth Edition

Page 21: Continuous Integration Introduction

Thanks for your [email protected]