Download - Agile Workshop: Releasing Quality Software
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Releasing Quality SoftwareReleasing Quality SoftwareBy
Balaji D LoganathanAgile Java Architect and Co-Founder, Spritle
Chennai Agile Workshop20th March 2009
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
About the SpeakerAbout the Speaker
Agile Java Architect and Co-Founder, Spritle Software –A recent Startup
Around 10 years of experience in IT Field 6 years of experience in enterprise Java 5 years of service to United Nations, Swiss B.E / India; Master’s in IT / Australia Moderator at Javaranch UNeDocs India Focal Point Certified SCRUM Master and Agile
Practitioner
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Agile Quality Agile Quality
Can Agile software development techniques and practices delivers quality software than the traditional software teams ?
Can Agile helps me to cut cost spent on Quality checking ?
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
What is ‘Quality Software’ ?What is ‘Quality Software’ ? In the context of software engineering, software quality
measures how well software is designed (quality of design), and how well the software conforms to that design (quality of conformance), although there are several different definitions. [Source: Wikipedia]
Steve McConnell’s Code Complete divides software as “Internal and External Quality Characteristics”
Dr. DeMarco says “a product’s quality is a function of how much it changes the world for the better – In other words User Satisfacation ”
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Quality in Agile – What ?Quality in Agile – What ?
Agile Manifesto
Working software over comprehensive documentation
Agile Principles
Working software is the primary measure of progress.
Continuous attention to technical excellence and good design enhances agility.
The best architectures, requirements, and designs emerge from self-organizing teams.
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Quality in Agile – How ?Quality in Agile – How ?
Incremental deliveryContinuous Quality Assurance
Test Driven DevelopmentRefactoring
Continuous Integration
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Incremental Delivery - IIncremental Delivery - I
Picture taken from http://epf.eclipse.org/wikis/scrum/
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Incremental Delivery - IIIncremental Delivery - II
Set Quality with ‘Definition of Done’ Code produced (all 'to do' items in code completed) Code commented, checked in and run against current version
in source control Builds without errors Unit tests written and passing Deployed to system test environment and passed system tests Passed UAT (User Acceptance Testing) and signed off as
meeting requirements Any build/deployment/configuration changes
implemented/documented/communicated Relevant documentation/diagrams produced and/or updated Remaining hours for task set to zero and task closed
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Incremental Delivery - IIIIncremental Delivery - III
Scope of ‘Done’ changes
Source: Kent’s Presentation
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Incremental Delivery - BenefitsIncremental Delivery - Benefits
Faster ROI from deployment of more valuable softwareFrequent releases helps understand
requirements better and implement valuable piece of the product
Lower cost of qualityThe earlier we catch bugs, the less they
cost to fix
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Test Driven Development - ITest Driven Development - I
Design
TEST TEST
ImplementImplement
Design
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Test Driven Development - IITest Driven Development - II
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Test Driven Development - IIITest Driven Development - III
Refactoring• “change to the internal structure of software
to make it easier to understand and cheaper to change, WITHOUT changing the observable behaviour” (Martin Fowler, 1999)
Code smellsDuplicated CodeLong MethodLong LoopExtract Method
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Test Driven Development - BenefitsTest Driven Development - Benefits
StabilityAccountabilityImprovement in code qualityEase of maintenanceReduced bugsEase of upgradeReduces production ‘surprises’Higher developer confidenceSeparated Concerns
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Continuous Integration - IContinuous Integration - I
Automated Build and Test as Changes Occurs
The CI Server sits on a clean, non-developer machine and rebuilds your project every time someone commits new changes
May include “Agile Metrics”
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Continuous Integration - IIContinuous Integration - II
Source http://blog.briandicroce.com/2008/03/
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Continuous Integration - IIIContinuous Integration - III
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Continuous Integration - BenefitsContinuous Integration - Benefits
Early detection of errorsReducing slipping of schedule caused by
significant time losses Reducing and oftentimes eliminating loss
of productivity caused by code base breakage
Increasing team morale and helping to maintain capable engineers on board
Reducing development time and hitting the market before competitors
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
What can affect Quality in Agile ?What can affect Quality in Agile ?
Overtime and WeekendsCut Testing (unit, acceptance,
performance)Cut review (design, code)Don’t follow standardsNo refactoring
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Agile Quality - ImplicationsAgile Quality - Implications
Greater quality implies less need for quality assurance activities
Evolving Artifacts
Multi-Skilled Team
Agile shifted our attention to small teams incrementally delivering quality software
• Testing at the end is no longer applicable
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Agile Quality - AreasAgile Quality - Areas
PhasesRelease Cycles Iteration CyclesDevelopment Cycles
Types: Engineering Testing (Unit and Integration) User Functionality Testing Acceptance Testing Regression Testing Exploratory Testing Performance and Scalability Testing
SPRITLE Software (P) LimitedSPRITLE Software (P) LimitedYour partner in Distributed Agile
http://www.spritle.com
Thank YouThank You
Question ?
Balaji D Loganathan, Spritle [email protected]