System Integration and Build Management

Similar documents
SOFTWARE LIFE-CYCLE MODELS 2.1

Chapter 9. Software Testing

The SD-WAN security guide

Software Life Cycle. Main issues: Discussion of different life cycle models Maintenance or evolution

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?

Analysis of the Test Driven Development by Example

CS193D Handout 15 Winter 2005/2006 February 8, 2006 Software Engineering Methodologies and XP. See also: Chapter 6. The Stagewise Model

MAGENTO ADD MULTIPLE PRODUCTS TO CART

Software Engineering Testing and Debugging Testing

Three things you should know about Automated Refactoring. When planning an application modernization strategy

Continuous Integration / Continuous Testing

Test Driven Development TDD

Practical Objects: Test Driven Software Development using JUnit

TITAN 5300 Software. Unit Test Guidelines. S. Darling, S. Harpster, R. Hite, K. Konecki, W. Martersteck, R. Stewart. Revision 2.0

Project Automation. If it hurts, automate it! Jan Pool NioCAD University of Stellenbosch 19 March 2008

Test-driven development

Designed in collaboration with Infosys Limited

18-642: Software Development Processes

Hello everyone, how are you enjoying the conference so far? Excellent!

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering

CMSC 132: OBJECT-ORIENTED PROGRAMMING II

Testing in Agile Software Development

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur

Using Storyotypes to Split Bloated XP Stories

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through

Unit Testing. CS 240 Advanced Programming Concepts

1. I NEED TO HAVE MULTIPLE VERSIONS OF VISUAL STUDIO INSTALLED IF I M MAINTAINING APPLICATIONS THAT RUN ON MORE THAN ONE VERSION OF THE.

Test First Software Development

3 Continuous Integration 3. Automated system finding bugs is better than people

CONFERENCE PROCEEDINGS QUALITY CONFERENCE. Conference Paper Excerpt from the 28TH ANNUAL SOFTWARE. October 18th 19th, 2010

REPORT MICROSOFT PATTERNS AND PRACTICES

Adventures of a Development DBA: Iterative Development

Integration and Testing. Uses slides from Lethbridge & Laganiere, 2001

AGILE. Getting Started on Your Team. Davisbase. Copyright 2011 Davisbase LLC. Licensed for Classroom Use to ASPE for Webinar Use Only

Effective Threat Modeling using TAM

Test suites Obviously you have to test your code to get it working in the first place You can do ad hoc testing (testing whatever occurs to you at

Software Engineering

Converged Infrastructure Matures And Proves Its Value

Amyyon customers can t wait to get their hands on it s new application, developed in Uniface.

Software Engineering (CSC 4350/6350) Rao Casturi

Going Agile. UK TMF April 2011

Virtual Memory. Chapter 8

A Tutorial for Adrift, Version 5

Kotlin for Android Developers

Market Report. Scale-out 2.0: Simple, Scalable, Services- Oriented Storage. Scale-out Storage Meets the Enterprise. June 2010.

Virtual Private Networks with Cisco Network Services Orchestrator Enabled by Tail-f - Fast, Simple, and Automated

Task-Oriented Solutions to Over 175 Common Problems. Covers. Eclipse 3.0. Eclipse CookbookTM. Steve Holzner

About CVS. 1 Version Control - what is it? why is it useful?

Categorizing Migrations

CS 520 Theory and Practice of Software Engineering Fall 2018

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

Content. Development Tools 2(57)

Without further ado, let s go over and have a look at what I ve come up with.

CHAPTER 1. Objects, UML, and Java

Why C? Because we can t in good conscience espouse Fortran.

Test Driven Development. René Barto SES Agile Development - Test Driven Development

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

GETTING STARTED. User Story Mapping

Making the case for SD-WAN

2016 All Rights Reserved

18-642: Code Style for Compilers

Software Testing Prof. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur. Lecture 13 Path Testing

(Refer Slide Time: 01.26)

SQL Server Upgrade Series

STQA Mini Project No. 1

A Practitioner s Approach to Successfully Implementing Service Virtualization

The Need for Agile Project Management

Agile Engineering. and other stuff I m working on

Git Branching for Agile Teams

12/30/2013 S. NALINI,AP/CSE

Systems Analysis & Design

DESIGNING RESPONSIVE DASHBOARDS. Best Practices for Building Responsive Analytic Applications

Steps for project success. git status. Milestones. Deliverables. Homework 1 submitted Homework 2 will be posted October 26.

Hi. My name is Jasper. Together with Richard we thought of some ways that could make a parallel approach to sequential flowsheeting attractive.

ITC213: STRUCTURED PROGRAMMING. Bhaskar Shrestha National College of Computer Studies Tribhuvan University

This document describes suggested best practices for deploying and upgrading ProActive DBA software in medium to large enterprises.

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change

The main website for Henrico County, henrico.us, received a complete visual and structural

Image Splitters. Sponsor s Representative(s) Faculty Mentor

Javaentwicklung in der Oracle Cloud

CS/ISE 5714 Usability Engineering. Topics. Introduction to Rapid Prototyping. Rapid Prototyping in User Interaction Development & Evaluation

Building in Quality: The Beauty of Behavior Driven Development (BDD) Larry Apke - Agile Coach

Executing Large-Scale Data Center Transformation Projects with PlateSpin Migrate 12

Areas of QA. Code Design Browser/Device Admin Interaction Strategy

PACE Suite. Release Notes. Version Document version

Storing and Managing Code with CVS

The Design Space of Software Development Methodologies

MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: April 1, 2015

12/7/09. How is a programming language processed? Picasso Design. Collaborating with Subversion Discussion of Preparation Analyses.

Software Design COSC 4353/6353 D R. R A J S I N G H

Overview. Consolidating SCM Infrastructures - Migrating between Tools -

CS/ENGRD 2110 SPRING Lecture 3: Fields, getters and setters, constructors, testing

Lecture 34 SDLC Phases and UML Diagrams

An Unexpected Journey. Implementing License Matching using the SPDX License List

Shift Left Testing: are you ready? Live Webinar, Sept 19

Test Your XAML-based Windows Store Apps with Visual Studio 2013 Benjamin Day

Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm. Rao Casturi 11/10/2015

18-642: Code Style for Compilers

Incremental development A.Y. 2018/2019

Predictive Insight, Automation and Expertise Drive Added Value for Managed Services

Transcription:

System Integration and Build Management Christian Schröder and Roman Antonov May 29, 2006 1

Contents 1 Introduction 3 2 Continuous Builds 3 3 Continuous Tests 3 4 Continuous Integration 4 5 Conclusion 5 6 References 6 2

1 Introduction Extreme programming and other agile software development methods have introduced plenty of new software development methods. In this elaboration we will explain three methods that are going hand in hand with XP s principle of Continuous Iteration and thus are named Continuous Integration, Continuous Builds and Continuous Tests. On an abstract layer these three methods are mainly independent, in practice they depend and benefit from each other. For each method we will introduce tools that can be used for their realization. Each method deals with problems of midto large-scale software development projects. For each method it is an important precondition that every developer is working with the latest version of the source code and all sources are available from one location. For this reason the production codebase should reside in a source control system 2 Continuous Builds For technical reasons every software development project should be build from scratch at least once a day. From scratch means you are starting with a clean system, the latest version of the code and all resources are checked out from a version control system. This eliminates the possibility of files not checked in to the version control system or linker failures. In mid- to large-scale software development projects a build from scratch should be done more often, because more developers working on a project increase the probability of dependencies of their work and their mistakes. Building the entire system than can be a time consuming process. Hence, dedicated build servers, running a build engine like Ant or Maven [www6] should do this work. These servers build the entire system multiple times a day, typically every hour, with given parameters and notify every developer who was involved in the last changes to the code if a build fails. Directives Build the system on your local machine before checking in! Before leaving work, wait for a successful build message from the build server! If you are notified of a failed build, immediately fix the problem! Benefits Reduction of problems with files not checked in, linker errors, etc. The dedicated build server reduces the need of builds from scratch on the developer machines and though saves time. When the project reaches a stable state and all parts of the project are integrated, regular builds can serve as demo-versions for the customer. Disadvantages The maintenance overhead of a build server. The cost of a dedicated build server Continuous Builds are not specific for agile software development projects. This technique has often been adopted in traditional software development projects and today is a common practice. 3 Continuous Tests As described in Continuous Builds regular builds can serve as demo-versions provided that the project is in a stable and integrated state. The application of Continuous Tests can lead to this 3

required stability. Continuous Testing requires the developer to write code testing the functionality of his work. These test are called test cases. They test very specific behavior of the system as the input can only be concrete values. For organizational reasons Test Cases are often organized as groups, called Test Suites. As every change to the code can lead to unexpected side effects it is recommended to always run an entire system Test Suite after every change. This can be a process even more time consuming as a complete build from scratch. Thus the existing infrastructure for Continuous Builds is used to set up a test engine. Tools like Maven [www6] provide an easy way to integrate testing frameworks like JUnit [www7], which is a very common tool for the purpose of writing, organizing and execution of tests. This tool, originally written for Java has been ported for most programming languages. The build server executes an entire system test after every successful build of the build engine and also notifies the developers involved in the last changes to the code if a test does not pass at 100 percent. Directives Write test cases for every functionality you implement! Test your changes locally before checking in! If your changes to the code do not pass the tests at 100 If notified of a failed test by the server, immediately fix the problem! Benefits Reduces the general probability of bugs. Especially reduces the probability of bugs caused by side effects. Can be easily integrated into an existing Continuous Builds infrastructure Disadvantages The maintenance overhead of a test server High effort of writing test cases Continuous Test are specific for agile software development projects as the use of Test Cases was developed from XP [www2]. Continuous Tests are often combined with XP s method Test First. 4 Continuous Integration In most software development projects system integration is the most time-consuming process. It is the process of bringing together the work of several teams at the end of a project iteration, merging their work and fixing bugs caused by side effects originating from the cooperation of the different sub modules. This kind of integration is often called Big Bang - Integration [www1]. The Extreme Programming paradigm is the source for a different kind of integration strategy, called Continuous Integration or Relentless Integration [1]. Continuous Integration tells you to integrate more often, even continuously. Continuously means to integrate several times a day or ideally after every completion of a task. If you follow XP principles your tasks are kept very small. But how can that work? The integration of trivial tasks becomes trivial itself. The integration work is broken into small pieces. When you merge your part of the software with the rest of the system after every change, you know that if a bug occurs the code that caused the bug must be the one you ve just done. This disburdens you from the time consuming process of stepping through a huge amount of code and searching for the bug line after line. Directives 4

Integrate as often as possible! Write Test Cases for your integration code! Meet with members of other teams if you got problems integrating their code! Benefits of Continuous Integration Integrating continuously means to have a running system at any time of the project. It means there is always a successful build available you can show to your customer and it gives the developers a better feeling for the project as a whole. In turn, this makes integration easier. With a running system at hand all project members (developers AND management) got a better overview of the project s status. Additionally the duty to integrate after every task empowers developers to keep their tasks small and simple, making the code better readable and easier to maintain. As a manager you got a better overview what developers are doing because of short check-in cycles. Disadvantages The immediate impact of checking-in incomplete or broken code acts as a disincentive to developers to provide frequent check-ins The maintenance overhead 5 Conclusion All methods mentioned in this elaboration require a severe discipline from the developer. Continuous Builds can t work if the developer doesn t know if the code she has just written causes the problem or the incorrect code was checked in earlier. This also applies for Continuous Tests. Continuous Integration and Continuous Tests always need some time to get accepted by the developer, because both methods seem to require a lot of additional work by the developer, but in total these methods lead to better code in less time. The methodologies can strongly benefit from each other because they can use the same infrastructure. They follow the same iterative approach and thus integrate easily into a agile project structure. 5

6 References [www1 ] http://www.martinfowler.com/articles/continuousintegration.html [www2 ] http://www.extremeprogramming.org/ [www3 ] http://en.wikipedia.org/wiki/continuous integration [www4 ] http://www.xprogramming.com/xpmag/whatisxp.htm [www5 ] http://cruisecontrol.sourceforge.net/ [www6 ] http://maven.apache.org/ [1 ] A Practical Guide to extreme programming, D. Astels, G. Miller, M. Novak (2002) [2 ] Agile Software Development, Alistair Cockburn (2001) 6