Overview of the agile software development. This contents was originally created for my team's internal workshop. It includes basic concept of the agile software development, and introduction of some practices and tools for it.
2. Today’s theme
In this workshop, I will introduce the basic knowledge of the agile software
development and would like to discuss with you about the applicability of the
agile software development to our team.
3. Agenda
What does “agile” mean?
Manifesto for Agile Software Development
Agile development practices
Agile development tools
Suitable situation to adopt agile model
4. What does “agile” mean?
Agile software development is one of the software development methods. The
main feature is to break tasks into small increments (iterations, typically 1-4
weeks) and release new functions in each iteration, which minimize risks and
adopt to changes quickly.
Requirement
Definition
Design Development Test Deploy
Req
Def
Dsgn Dev Test Dep
Req
Def
Dsgn Dev Test Dep
Req
Def
Dsgn Dev Test Dep
Time
WF
model
Agile
model
1 iteration
There are many frameworks, method which are included in or compatible with agile development;
Extreme programming
Scrum
Feature driven development (FDD)
5. Manifesto for Agile Software Development
In 2001, 17 Gurus of Agile development discussed and issued the manifesto
below. Agile development prioritizes practical benefit from software than strict
rules and documentation.
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
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.
Source: http://www.agilemanifesto.org/
6. Agile development practices
Based on practical experiments, agile developments have many practices which
can be adopted individually.
Planning
Poker
Pair
Program
ming
Test
Automa
tion
Refactor
ing
Test
Driven
Develop
ment
(TDD)
Continu
ous
Integ
ration
Two members work together to develop or
test programs at one PC. This practice can
improve quality and decrease dependencies
on individual skills.
Automation of (especially regression) testing
derives less time-consuming works and
consistent quality of systems. The benefit of
automation will be amplified by adopting
refactoring and TDD.
Restructure existing program logic without
changing its behavior. This improves
maintainability of applications, that is, low
impact analysis and CR efforts.
Build a test script first, being consistent with
requirements. After that, to pass that
test, build a actual program logic. This style
let developers imagine how the functionality
is used by users.
Merge all development works (application
logics, table structure etc.) with a shared
mainline several times a day. Team
can avoid or minimize integration problem.
A technique of estimation. Members shows
numbered cards with relative size of
estimated effort, not with absolute size. With
the result, discussion will be held to make a
consensus.
7. Agile development tools
There are many tools which encourage productivity of system developments, not
only in the context of agile, but also DevOps.
Version Mgmt CI DeployTest Automation
Sub
version
GitLab
VSS
Jenkins
Seleniu
m
SOASTA+Script FabricGerrit
Ticket Mgmt
Trac
Bugzilla Bazaar
JUnit
Find
bugs
Infrastructure
Puppet
8. Suitable situation to adopt agile model
It is suitable for a small and proficient team combating many changes to adopt
Agile model. How do you think which model to be taken for our team?
Low criticality system
More senior developers than juniors
Requirements change often
Small number of developers (around 10)
Culture that responds to change
High criticality system
More junior developers than seniors
Requirements do not change often
Large number of developers
Culture that demands order
Agile model
will suit
Waterfall model
will suit