Software Continuous Integration & Delivery



Similar documents
Delivering Quality Software with Continuous Integration

Client Overview. Engagement Situation. Key Requirements

Continuous Integration

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

Agile Software Factory: Bringing the reliability of a manufacturing line to software development

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

WHITEPAPER. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Principle #1, Agile Manifesto

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Test Automation: A Project Management Perspective

Implementing Continuous Integration Testing Prepared by:

We ( have extensive experience in enterprise and system architectures, system engineering, project management, and

Continuous integration End of the big bang integration era

Introduction to Programming Tools. Anjana & Shankar September,2010

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Continuous???? Copyright 2015 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Continuous Delivery. Alejandro Ruiz

Agile ALM. Lightweight tools and Agile strategies MANNING MICHAEL HUTTERMANN. Shelter Island

Software Engineering I (02161)

DevOps Stack. Reid Holmes. Chris Parnin:

Software infrastructure for Java development projects

RELEASE HIGHLIGHTS INTRODUCING COLLABNET TEAMFORGE 8.2

The Benefits of Utilizing a Repository Manager

Global Software Change Management for PVCS Version Manager

Software Construction

Coverity Services. World-class professional services, technical support and training from the Coverity development testing experts

Educational Collaborative Develops Big Data Solution with MongoDB

Agile Austin Dev SIG. June Continuous Integration (CI)

Increasing frequency of releases to every week down from quarterly major releases

How To Achieve Continuous Delivery

Git Branching for Continuous Delivery

Java Software Quality Tools and techniques

Know the Difference. Unified Functional Testing (UFT) and Lean Functional Testing (LeanFT) from HP

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

Continuous Delivery. Ariel Alonso, IPC

Continuous Integration. CSC 440: Software Engineering Slide #1

Enhance visibility into and control over software projects IBM Rational change and release management software

Continuous Integration Multi-Stage Builds for Quality Assurance

Introduction to Agile Software Development Process. Software Development Life Cycles

A Sumo Logic White Paper. Harnessing Continuous Intelligence to Enable the Modern DevOps Team

Solution Spotlight KEY OPPORTUNITIES AND PITFALLS ON THE ROAD TO CONTINUOUS DELIVERY

Releasing High Quality Applications More Quickly with vrealize Code Stream

Meister Going Beyond Maven

Codeless Test Automation for Web Apps

HP ALM11 & MS VS/TFS2010

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Software configuration management

Achieving Rolling Updates & Continuous Deployment with Zero Downtime

TOP 5 REASONS WHY FINANCIAL SERVICES FIRMS SHOULD CONSIDER SDN NOW

Orchestrated. Release Management. Gain insight and control, eliminate ineffective handoffs, and automate application deployments

An introduction to the benefits of Application Lifecycle Management

Improving your Drupal Development workflow with Continuous Integration

Continuous Integration and Delivery at NSIDC

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

Reinforcing Agile Software Development in the Cloud

DATASHEET COLLABNET TEAMFORGE

Accelerate Software Delivery

Introduction and Agenda

POWERING UP THE IN-STORE SHOPPING EXPERIENCE WITH THE CLOUD

ASSURING SOFTWARE QUALITY USING VISUAL STUDIO 2010

Better Software Though Expertise, Collaboration & Automation. BDD, DevOps and Testing

The Benefits of Deployment Automation

DevOps for the Mainframe

Visual Studio - Continuous Integration

Bridging the Gap Between Acceptance Criteria and Definition of Done

QA & Test Management. Overview.

Building Value with Continuous Integration

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Continuous Integration (CI)

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

IT Home 2015 DevOps 研 討 會

Getting started with API testing

Mastering Continuous Integration with Jenkins

HP SAP. Where Development, Test and Operations meet. Application Lifecycle Management

Mobile Test Automation Framework

Continuous Delivery for Force.com

In depth study - Dev teams tooling

Build management & Continuous integration. with Maven & Hudson

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

CREATING AN INTERNAL CLOUD: EPAM DEVELOPS A CUSTOM SOLUTION. Time-consuming infrastructure configuration and maintenance

TEST AUTOMATION FRAMEWORK

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

DELIVERING AGILE QUALITY ASSURANCE THROUGH EXTREME AUTOMATION

Secrets to Automation Success. A White Paper by Paul Merrill, Consultant and Trainer at Beaufort Fairmont, LLC

Key Benefits of Microsoft Visual Studio Team System

Case Studies of Free Test Tools Successful Test Tool Use without a Big Budget

Achieving Continuous Integration with Drupal

Test Automation Tool comparison HP UFT/QTP vs. Selenium - Prashant Malhotra

Break It Before You Buy It!

Maintaining Quality in Agile Environment

Establish a Continuous Delivery Pipeline: IBM UrbanCode Deploy

Development Testing for Agile Environments

Testing. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies. CHAPTER AUTHORS Michael Atmadja Zhang Shuai Richard

Software Configuration Management Best Practices for Continuous Integration

Delivery. Continuous. Jez Humble and David Farley. AAddison-Wesley. Upper Saddle River, NJ Boston Indianapolis San Francisco

Open Source Testing Tools: The Paradigm Shift

systems WHITE PAPER Automating Continuous Integration over Complex IT Infrastructure

Virtual Platforms Addressing challenges in telecom product development

Transcription:

November 2013 Daitan White Paper Software Continuous Integration & Delivery INCREASING YOUR SOFTWARE DEVELOPMENT PROCESS AGILITY Highly Reliable Software Development Services http://www.daitangroup.com Daitan Group 2013. All rights reserved. Other company and product names may be trademarks of their respective owners.

Software Continuous Integration and Delivery 1 ABSTRACT Once upon a time, people wrote code and then ran it to find how well it worked. Working individually, the developer was able to iterate quickly until the software was useful to solve a real problem. As software became more complex, it was broken into separate and independent sub-modules developed more or less in isolation by individual developers. Each sub-module was tested separately, the system was integrated back together, then tested again, staged, released, distributed and deployed. Software development cycles stretched over several months (or several years). The pendulum is swinging back. Software engineering is now evolving towards shortening the feedback loops and minimizing the time it takes from code being written to being in production. This time, we want to do it with more quality and predictability. The tools to achieve that are processes, automation, and collaboration. Moving across the levels depicted in the picture above is not simple. It involves not only adapting processes and automating them, but also changing organizational culture and structure. Continuous Delivery is not necessarily the right objective for all types of software, but generally most software development organizations are moving towards more Software Process Agility. Daitan Group 2013 1

2 AGILE DEVELOPMENT AND DEVOPS Agile Software Development means more iterations. Being Agile is recognizing that predictions of development complexity along with user or market behavior are imprecise. Rather than trying to define requirements and software work based on abstract assumptions, it is better to release software early and often and be prepared to measure and analyze data to adjust execution and move faster. DevOps is a contraction of two words: Developers and Operations, used to indicate the organizational need to integrate them into a collaborative environment to achieve the goals of Agile Development as defined in the previous paragraph. There is no magic recipe for doing Agile Development. There are guidelines, best practices, and process frameworks but each project should design the process to fit its needs. The process should also be reviewed and adapted using feedback from the team after each iteration. As an organization attempts to make software development more Agile and to integrate it into operations, the need for automation of processes, measurement of performance, and usage patterns becomes obvious very quickly. With Agile, developers and IT operations can meet user expectations of availability and continuity of services. Daitan Group 2013 2

3 SOURCE CODE CONTROL AND BUILD AUTOMATION A team of software developers working together must have a consolidated source code repository with versioning and a set of scripts that automate the process of compiling code and generating the executable software. This is the baseline in the Software Development Process. The repository should keep everything needed to build the application including source code, test scripts, properties files, database schema, install scripts, third-party libraries, etc. The team should create guidelines and rules for branching, committing and merging, minimizing the friction of code integration. The automated build system should compile, link and do everything else needed to get the application to run correctly for a given target environment. Virtually every organization developing software today uses source code control, ranging from clientserver tools such as CVS or Subversion (Open Source), ClearCase or Perforce (commercial) to distributed architectures like Git, Bitkeeper, Mercurial (Hg). Build automation tools range from make scripts to more sophisticated tools like Maven and Ant. Daitan Group 2013 3

4 TEST AUTOMATION Rather than testing software manually, automation employs tools to run test cases without manual intervention and compare the output to what was expected. In traditional waterfall software development, test cases were initially run manually and then automated through scripting. There was usually a lack of coverage and lag between coding and test automation, which caused automated quality assurance of software an expensive and often unsuccessful proposition. Agile developers have been researching and experimenting with new approaches to development and automated testing of software. Test-driven development (TDD), where unit test code is written to define the functionality before the actual code is written is one popular technique. Other related techniques are Behavior Driven Development (BDD) and Design Driven Development (DDD). A QA automation framework sets the rules of automation of a specific product. It integrates the function libraries, test data sources, object details and various reusable modules. These components act as small building blocks which need to be assembled to represent a business process. The framework provides the basis of test automation and simplifies the automation effort. Examples of unit test tools include TestNG, xunit, Cucumber (BDD, Ruby), Jasmine (JavaScript). Selenium (Open Source, Web Interfaces), FITnesse (Open Source, Integrated tool), WindMill are examples of QA automation end-to-end tools. Daitan Group 2013 4

5 CONTINUOUS INTEGRATION Continuous Integration (CI) is the practice of accelerating commits and testing of code by software developers. In the past developers would work for weeks before trying to integrate their work to the main tree, in a CI environment developers check-in their work several times a day. A CI server monitors code check-ins by developers and, as often as practical, it checks-out the new code, builds the system and runs unit and integration tests. If there is any failure in the process, the CI server alerts the developers. A broken build gets the attention and top priority from the team. Keeping developers working in isolation without frequent integration can appear to be more efficient, but in practice, integration of code is extremely laborious and the source of most of the software defects in traditional waterfall development. Mandating frequent integration keeps developers from going in different directions for too long and forces the automation of the testing and integration processes. Benefits of Continuous Integration: CI does not eliminate software bugs, but it accelerates their discovery and keeps people from going in the wrong direction for too long. Developers pay more attention to quality and tests since CI failures are very visible and usually block their work if there is a broken build. The system is always in a state that can be released to users. That provides more flexibility to the business and enables the automation of the release process and delivery to users. Jenkins (Open Source), Apache Continuum (Open Source), Travis CI (Open Source), Bamboo (Commercial) are some examples of tools for Continuous Integration. Semaphore and BuildHive are examples of a new generation cloud-based CI frameworks. Daitan Group 2013 5

6 RELEASE AUTOMATION AND CONTINUOUS DELIVERY Once you implement Continuous Integration, it becomes possible to consider automating the release process. By having your CI system run release scripts after a build finishes, you can deploy the application to a live test server that everyone can look at and possibly automatically run postdeployment service tests. As this process matures, you can consider extending the process and automate it all the way to the enduser. Continuous Delivery (CD) is the practice and ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead. In a Continuous Delivery environment, code is compiled and packaged by a build server every time a change is committed to the source control repository. It is automatically tested before it can be marked as releasable. Developers are aware that any code commit may be released to customers at any point. Code branching might still be necessary in a complex system, but only for limited periods of time. The automation system lets changes to the system be released on a granular basis. Releasing features to a subset of users and being able to seamlessly roll back to a previous version becomes possible. The result is that there is no delay between enhancements and bug fixes being implemented and available to users. Daitan Group 2013 6

ABOUT DAITAN GROUP Daitan Group is a software development service provider with focus in Telecom, Unified Communications and real-time Cloud/Web Solutions. We partner with technology vendors to help them develop their next software solution. Be it by providing expert software engineers to extend your development team or leveraging our expertise in automating engineering processes and implementing tools and frameworks, Daitan Group accelerate your software development. Implementation of Software QA automation, Test- and Behavior-Driven Development (TDD, BDD) and work with tools like Bamboo, Jenkins, Jira, Fitnesse, Hammer, Ant, Maven, Continuum, Perforce, Empirix Hammer, and TestNG are just a few examples of our organizational experience in the area of software process agility. To know more about what Daitan can do for you, please visit http://daitangroup.com Daitan Group 2013 7