1. Chennai Agile Workshop
20th March 2009
Releasing Quality Software
By
Balaji D Loganathan
Agile Java Architect and Co-Founder, Spritle
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
2. About 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) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
3. 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) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
4. 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) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
5. 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) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
6. Quality in Agile – How ?
Incremental delivery
Continuous Quality Assurance
Test Driven Development
Refactoring
Continuous Integration
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
7. Incremental Delivery - I
Picture taken from http://epf.eclipse.org/wikis/scrum/
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
8. Incremental 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) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
9. Incremental Delivery - III
Scope of ‘Done’ changes
Source: Kent’s Presentation
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
10. Incremental Delivery - Benefits
Faster ROI from deployment of more
valuable software
Frequent releases helps understand
requirements better and implement
valuable piece of the product
Lower cost of quality
The earlier we catch bugs, the less they
cost to fix
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
11. Test Driven Development - I
Design
TEST TEST
Implement
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
12. Test Driven Development - II
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
13. Test 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 smells
Duplicated Code
Long Method
Long Loop
Extract Method
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
14. Test Driven Development - Benefits
Stability
Accountability
Improvement in code quality
Ease of maintenance
Reduced bugs
Ease of upgrade
Reduces production ‘surprises’
Higher developer confidence
Separated Concerns
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
15. Continuous 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) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
16. Continuous Integration - II
Source http://blog.briandicroce.com/2008/03/
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
17. Continuous Integration - III
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
18. Continuous Integration - Benefits
Early detection of errors
Reducing 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) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
19. What can affect Quality in Agile ?
Overtime and Weekends
Cut Testing (unit, acceptance,
performance)
Cut review (design, code)
Don’t follow standards
No refactoring
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
20. Agile 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) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
21. Agile Quality - Areas
Phases
Release Cycles
Iteration Cycles
Development Cycles
Types:
Engineering Testing (Unit and Integration)
User Functionality Testing
Acceptance Testing
Regression Testing
Exploratory Testing
Performance and Scalability Testing
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com
22. Thank You
Question ?
Balaji D Loganathan, Spritle Software
bloganathan@spritle.com
SPRITLE Software (P) Limited http://www.spritle.com
Your partner in Distributed Agile
info@spritle.com