Agile Methodology: 1 12/03/16 All Rights Reserved - WWW - Sureshkrishna
Agile Methodology: 1 12/03/16 All Rights Reserved - WWW - Sureshkrishna
Agile Methodology: 1 12/03/16 All Rights Reserved - WWW - Sureshkrishna
Agile Methodology
12/03/16
Agile Development
Agenda
Scope
Agile Development Foundations
Agile Processes
eXtreme Programming
Test-Driven Development
Case study Galaxy
Experiences
12/03/16
Agile Development
Scope :
12/03/16
A process defines what activities are carried out, how they are done,
by whom and when
The amount of ceremony in a process varies from project to
project, company to company
Delivery of Value
12/03/16
Prototyping Model
12/03/16
Agile Development
Agility
Agile processes focus on the control and negotiation of scope
Agility
: The gracefulness of a person that is quick and nimble
Pragmatic : Concerned with practical matters
Dogmatic : Characterized assertion of unproved or unprovable principles
12/03/16
Agile Development
Dependency Management
Minimalism
Less code, more software
The measure of software is in its utility not in the quantity of its
source code
Omit needless code
12/03/16
Agile Development
Remove to Improve
The less code you have, the less you have to fix, debug, optimise, etc.
12/03/16
Agile Development
Iterative and Incremental
Empirically based
12/03/16
Agile Development
Requirements
MacroProcess
MicroProcess
Increment
Analysis
Prototyping
Simple design
Refactoring
Testing
12/03/16
Agile Development
12/03/16
Agile Development
The Agile Manifesto
Putting people into the process, rather than the process into people
12/03/16
Agile Development
Agile Processes
RUP-lite and dX
12/03/16
Agile Development
eXtreme Programming
XP Values
12/03/16
Agile Development
Sit together
Whole team
Informative workspace
XP Primary Practices
Energized work
Pair programming
Stories
Weekly cycle
Quarterly cycle
Slack
Ten-minute build
Continuous integration
Test-Driven Programming
Incremental Design
12/03/16
Agile Development
Real customer involvement
Incremental deployment
XP Corollary Practices
Team continuity
Shrinking teams
Root-cause analysis
Shared code
Code and tests
Single code base
Daily deployment
Negotiated scope contract
Pay-per-use
12/03/16
12/03/16
TDD has emerged from the many practices that form the core of
Extreme Programming
TDD brings testing to the fore of development rather than the aft
12/03/16
Build Practices
Fine grained versioning
Essential Practices
Continuous integration
Example based test cases
Defined stable increments
Active test writing
Sufficient Design
Refactoring
Team Practices
Pair Programming
12/03/16
SCRUM : (rugby) the method of beginning play in which the forwards of each team
crouch side by side with locked arms; play starts when the ball thrown in between them
and the two sides compete for possession
12/03/16
30-day sprints...
Daily scrum...
12/03/16
12/03/16
Whole Team
A team needs to be cross functional Containing all the skills and
perspectives needed for effective project execution
There are many technical roles on a team
System testers
Interaction designers
Architects
Programmers
12/03/16
Agile Development
Energized Work
Anything much over a 40-hour week is often solving the wrong problem.
No more than one week at a time on overtime
Studies do not show that overtime is good for productivity and quality.
Which means that such time is typically a waste, not an investment
Informative Workspace
The workspace should reflect the work and state of the project
12/03/16
Agile Development
Pair Programming
User Stories
12/03/16
Agile Development
Weekly and Quarterly Cycles
Tangible short-term goals are easier to score than ambitious longterm ones
Complete an iteration and produce a stable increment each
week
Use three months as the longer-term horizon for planning and
retrospection
Slack
Slack at all levels is necessary to make the organization work effectively and to grow. It is
the lubricant of change.
Tom DeMarco
12/03/16
Agile Development
Ten-Minute Build
Continuous Integration
12/03/16
Agile Development
Test-First Programming
XP unit-testing and coding practice is based on writing the
tests before the code
Unit testing for all production code
Acceptance test of whole system for integration and release
Testing is integrated into the lifecycle
Continuous testing gives immediate feedback
Incremental Design
Design for today
Do not try to predict the future
A design is always effective and working at a given point in time,
but evolves over time
What works is defined by tests code must pass
12/03/16
John Pawson
Agile Development
Testing can only prove the presence of bugs, not their absence
Testing is therefore about building confidence
12/03/16
Agile Development
12/03/16
Agile Development
Driver Rather than Passenger
Test-driven development is based on writing tests with the code
Unit testing for all production code
Acceptance testing of whole system for integration and release
Integrated into the lifecycle
Continuous testing gives immediate feedback
Refactoring
Refactoring is personal hygiene for software
Ensures that design is clean and sufficient
Also acts as an active form of code review
Predicated on the existence of unit tests
Refactoring (noun): a change made to the internal structure of software to make it easier to
understand and cheaper to modify without changing its observable behavior.
Refactor (verb): to restructure software by applying a series of refactorings without changing
the observable behavior of the software.
Martin Fowler
12/03/16
Domain/Business Developers
12/03/16
12/03/16
Management
Going Agile does not mean Customer is involved all the time
12/03/16
12/03/16
Agile Development
12/03/16
Agile Development
Requirements
A top level feature list is maintained
Usecases forms the basis for the development
Design
Design in small iterations, BUT have a complete overview of system
Refactor the design, BUT dont change the design
Design by contract, BUT make sure that you agree to it
Coding
Source code is maintained in the CVS repository
Everyday developer synchronizes the repository Integration Tests
Everyday a new/small functionality is checked-in
Everyday while synchronizing the repository, code review is done
and directly informed to team members
Refactor the code regularly to make it clean DONT change the
functionality
12/03/16
Agile Development
Unit Tests
Every core function has a JUnit test written
Every module has a test suite that has number of test cases
The entire system put together also has a system test suite
Test suite is run daily and feedback is given to respective users
Testing is not a separate ceremony, its part of development
Integration Tests
No integration process - Covered as a part of the daily synchronization
12/03/16
Agile Development
Thank you
12/03/16