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



Similar documents
Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Ingegneria del Software Corso di Laurea in Informatica per il Management. Agile software development

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Software Construction

Agile Development with C#

Agile Development Overview

Introduction to Agile Software Development. EECS 690 Agile Software Development

Agile QA s Revolutionary Impact on Project Management

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

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Introduction to Agile Software Development Process. Software Development Life Cycles

Implementing Continuous Integration Testing Prepared by:

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

Extreme Programming, an agile software development process

Extreme Programming, an agile software development process

What Does Large Mean? Copyright 2003 by N. Josuttis and J. Eckstein 3. Why is Large an Issue?

Continuous Integration. CSC 440: Software Engineering Slide #1

Manifesto for Agile Software Development

Agile processes. Extreme Programming, an agile software development process

Modern practices TIE-21100/

Accelerate Software Delivery

Continuous Integration (CI)

Agile Project Management By Mark C. Layton

Agile Beyond The Team 1

Software Processes. Agile Methods

Agile Software Development in the Large

Agile processes. Extreme Programming, an agile software development process. Extreme Programming. Risk: The Basic Problem

Delivering Quality Software with Continuous Integration

Continuous Delivery. Alejandro Ruiz

Agile Project Management

Continuous Integration: A case study

History of Agile Methods

26 May 2010 CQAA Lunch & Learn Paul I. Pazderski (CSM/CSP, OD-CM, CSQA) spcinc13@yahoo.com Cell: AGILE THROUGH SCRUM

Software Development with Agile Methods

Agile Project Management with Scrum

Distributed Agile Development. Bapiraju Nandury Product Development Manager Bangalore Development Centre

Continuous Integration Optimizing Your Release Management Process

Outline. Agile Methods. Converse of Conway s Law. The Silver Bullet Fantasy (Brooks, 1986)

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

Continuous Integration Northwestern University. Evanston, Illinois November The Business of IT

Test Driven Development with Continuous Integration: A Literature Review

Agile Software Development

Continuous Integration Processes and SCM To Support Test Automation

Agile Overview. 30,000 perspective. Juha Salenius CSPO CSM PMI-ACP PMP SCGMIS Workshop January 23 rd, 2013

Kevin Lee Technical Consultant As part of a normal software build and release process

Continuous Integration, Delivery and Deployment. Eero Laukkanen T Software Testing and Quality Assurance P

Continuous Integration: Aspects in Automation and Configuration Management

Continuous Integration For Real: The Perforce Java Platform. Hamish Reid Perforce Software Inc.

The Importance of Continuous Integration for Quality Assurance Teams

Software Configuration Management Best Practices for Continuous Integration

Introduction to Agile Software Development

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Bottlenecks in Agile Software Development Identified Using Theory of Constraints (TOC) Principles

Continuous integration End of the big bang integration era

Continuous Integration

werteorientierte Unternehmenskultur

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

Agile So)ware Development

Agile Testing and Extreme Programming

This handbook is meant to be a quick-starter guide to Agile Project Management. It is meant for the following people:

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

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

How To Understand The Limitations Of An Agile Software Development

Agile Projects 7. Agile Project Management 21

Introduction to Agile and Scrum

GENiC. Deliverable D5.1 Development & Integration guidelines including integration environment & means. Dissemination Level: Public

Continuous Delivery: implementation considerations. Léon Hagenaars-Keus Edwin van Dillen

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

Best Practices for Java Projects Horst Rechner

Processes in Software Development. Presented by Lars Yde, M.Sc., at Selected Topics in Software Development, DIKU spring semester 2008

Build management & Continuous integration. with Maven & Hudson

Continuous Integration Comes to China.

Creating a High Maturity Agile Implementation

Agile Software Development

Continuous Integration on System z

Agile on huge banking mainframe legacy systems. Is it possible?

Software Continuous Integration & Delivery

Continuous Delivery. Jez Humble, ThoughtWorks #continuousdelivery DevOpsDays, Hamburg

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

CS435: Introduction to Software Engineering! " Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman

Continuous Integration in Kieker

Java Software Quality Tools and techniques

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda

Continuous Integration: Put it at the heart of your development

SCEA 2010 EST06. Estimating Issues Associated with Agile. Bob Hunt. Galorath Incorporated

Quality Assurance Software Development Processes

Contents. 3 Agile Modelling Introduction Modelling Misconceptions 31

Improving your Drupal Development workflow with Continuous Integration

Digital Transformation of the Enterprise for SMAC: Can Scrum help?

IT Home 2015 DevOps 研 討 會

Transcription:

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

One more title Do you love bugs? Or Are you in love with QC members? [Courtesy: Smita N]

Agenda Motivation Practices Advantages The road ahead Q&A

Motivation Enter laptops, enter boards and put together with code, all teams have come together in one abode. Integration in progress. taken from an article published in AForce March 2008 Admin Utility User now can be associated with the profile and action like send sms, call to a specific person or play welcome message on entering in the home. The UI part for above feature is implemented by XYZ. And backend part is implemented by PQR. Integration of the same is pending and will integrate on next week. taken from an weekly status report sent in 1 st week of March 2008 So???

Motivation Integration is an EVENT!!! Can we have something like following? Image Courtesy: Book on CI by PMD

What is CI? 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. 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 reduced integration problems and allows a team to develop cohesive software more rapidly. taken from Martin Fowlers article on CI

Agile manifesto Individuals and interactions <OVER> processes and tools Working software <OVER> comprehensive documentation Customer collaboration <OVER> contract negotiation Responding to change <OVER> following a plan That is, while there is value in the items on the right, we value the items on the left more.

Agile principles 1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. 2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. 3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter time scale. 4. Business people and developers must work together daily throughout the project. 5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

Agile principles (contd) 6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. 7. Working software is the primary measure of progress. 8. Agile processes promote sustainable development. 9. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. 10. Continuous attention to technical excellence and good design enhances agility. 11. Simplicity the art of maximizing the amount of work not done is essential. 12. The best architectures, requirements, and designs emerge from self-organizing teams. 13. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Adaptive (agile) vs Predictive (plan-driven) Agile home ground Low criticality Senior developers Requirements change very often Small number of developers Culture that thrives on chaos Plan-driven home ground High criticality Junior developers Requirements don't change too often Large number of developers Culture that demands order

Extreme programming Form of agile software development Traditional software engineering practices taken to so-called "extreme" levels leads to a development process that is more responsive to customer needs ("agile") than traditional methods, while creating software of better quality. Values and/or principles Communication Simplicity Feedback Courage Respect Activities Coding Testing Listening Designing

XP practices Fine scale feedback Pair programming Planning Game Test driven development Whole team Continuous process Continuous Integration Refactoring or Design Improvement Small Releases Shared understanding Coding Standards Collective Code Ownership Simple Design System Metaphor Programmer welfare Sustainable pace

Coming back to CI 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. 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 reduced integration problems and allows a team to develop cohesive software more rapidly. taken from Martin Fowlers article on CI

Practices Maintain a single source repository Keep everything needed for build in CVS E.g. code, database schema, IDE configuration, test scripts etc but not application server and jdk. Even no build artifacts! Keep branches to minimum (in size and in lifetime)

Practices Automate the build From compilation to deployment Configure the build: Master build on server Developers build from IDE Build with test, without test or different set of tests!

Processes Make your build self-testing High degrees of automated tests suits to check larger code base Though TDD not mandatory but its helpful Test case failed: build failed! XUnit tools like JUnit and/or end-to-end testing tools like selenium Imperfect tests, run frequently, are much better than perfect tests that are never written at all.

Processes Everyone commits every day Every commit shall succeed the build Frequent commits: small work packets for developer Mentoring and practice is the key

Processes Every commit should build the mainline on an integration machine You shouldn t go home until the mainline build has passed with any commits you ve added late in the day! Don t check in untested / broken code Don t check in when build is broken The whole point of CI is to detect integration errors as soon as possible Peers pressure within team ensures policies are followed

Processes Keep the build fast XP guideline: 10 mins build! Staged build (build pipeline) Commit build Secondary build Performance build If secondary build fails move the test case to commit build Parallel builds

Processes Test in a clone of production environment Every environmental difference results in a risk: what happens under test wont happen in production E.g. Same IP, port, machine, hardware, os etc Virtualization can help

Processes Make it easy for anyone to get the latest executable Its very hard to specify what you want in advance and be correct; people find it much easier to see something that s not quite right and say how it needs to be changed Many executables in a day so not in CVS

Processes Everyone can see what's happening CI is all about communication Build status indicators: lava lamps, colored labels, hooters, mails Build history and build status reports indicates the project health Matrices are helpful to guide project management

Processes Automate deployment Use deployment pipeline Automated rollback

Advantages Reduces risk Integration is predictable now We know where we are, what works, what doesn't work, how many outstanding bugs are there Makes dramatically easier to find and remove bugs Bugs - these are the nasty things that destroy confidence and mess up schedules and reputations. Bugs in deployed software make users angry with you. Bugs in work in progress get in your way, making it harder to get the rest of the software working correctly. Broken windows syndrome Break Barriers between customer and development Add more features rapidly, give rapid feedback

The road ahead Just give it a try Start with commit build Add some automated test Use deployment pipeline Speed up the build Integrate with anything and everything available like project management tools, bug trackers, code analysis tools etc

Deployment pipeline Image Courtesy: Paper on Deployment Pipeline by Dave Farley

Cruise control Open source CI toolkit from ThoughtWorks Support for different plugins like email, source control, builder, ant etc Support of web ui for build status Integrate with many code analysis tools, scm tools, build tools, reporting tools etc

Cruise control Image Courtesy: CC documentation on cc website

References http://martinfowler.com/articles/continuousintegration.html http://en.wikipedia.org/wiki/agile_software_development http://en.wikipedia.org/wiki/extreme_programming http://cruisecontrol.sourceforge.net/

Q&A Thanks!