1. Agile & ALM Tools
Larry Cai
larry.caiyu@gmail.com
2. Profile
Larry, an open source, collaboration & Agile evangelist
Software Practice Pioneer to discover the best suitable
methods and tools to improve the efficiency of software
development
3. Agenda
ALM (Application Lifecycle Management) tools and Agile
in quick view
Whether ALM system support Agile software
development
Does tools really matter ?
Does tools improve agile deployment ?
One Scrum way to deploy ALM system
4. Reminds before details
Does not say open source is the only solution
Does not say we solve all the problems using open
source tools
Open source are better choice ;-)
6. History of Agile
Agile practices comes out
Collective Ownership
Collective Ownership
Customer tests
Customer tests
Continuous integration
Continuous integration Prove it With Code
Prove it With Code
Pair programming
Daily short meeting
Daily short meeting
…
…
Agile Modeling …..
Extreme Programming
SCRUM
Feature Driven Development
Different agile approach share
common agile practices
In 2001, form Agile alliance
create Agile Manifesto
7. Manifesto for Agile Software Development
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.
http://agilemanifesto.org
8. ALM
ALM (Application Lifecycle Management) is the marriage of business
management to software engineering made possible by tools that
facilitate and integrate requirements management, architecture,
coding, testing, tracking, and release management.
Source http://www.manning.com/huettermann/
9. ALM in reality (one example)
quality build
Requirement/tracking management
IDE code
11. Issues in agile development
How to change from long integration phase to short
iteration and decrease repeating manual work ?
How to manage the backlog, tasks, internal TR ?
How to do quality control & keep track the work status ?
When to do code review ?
Can team to have a separate branch ?
…
12. Builds – Continuously Integration
Basic automation steps in CI
Developers commit the codes, trigger the build
CI run Compile, Unit level testing (code)
CI Acceptance Testing (verification)
Feedback to develop team (fail/success)
CI changes from big/long integration phase to
frequent/short integration.
Ref: http://martinfowler.com/articles/continuousIntegration.html
13. Hudson vs. Jenkins
Hudson is a de-facto CI
standard used for lots of
products
Easy to start, configure
and extending (300+
Jenkins (community)
Hudson 1.394 plugins)
(Sun + community)
Easy to handle your legacy
system
Hudson (oracle)
Since 2011
14. Sonar for java products
Numbers to rank the product
Visualize the quality result
to everyone in CI loop
15. More for CI
Key issues
Let CI running , ALWAYS
Stop if CI turns red
More features around it
Continuous deployment (Package, Install)
Regression testing (System testing)
Continuous delivery for SaaS/Cloud system
CI’s job is to remove waste
for the things can be auto
16. Conclusion
1. CI is fundamental for agile deployment, focus on how to
effectively improve it step by step
18. Existing ALM cover issue tracks
So far no good ALM system cover them all in excellent
way.
$ JIRA
$ ScrumWorks Pro
Trac (Agilo)
redmine
$ IBM Rational Jazz based
$ Intland Codebeamer
…
19. Issue management system
Redmine is a flexible project management web
application for issue management
http://www.redmine.org/
21. Requirement
What tool supports managing large backlogs ? Use a
simple spreadsheet. Not because a spreadsheet is so
good; just because it is better than the alternatives
- Book : Scaling Lean & Agile Development
– Craig Larman/Bas Vodde
We usually do this in an Excel document with sharing
enabled (i.e. multiple users can edit simultaneously)
- Book: Scrum and XP from the Trenches - Henrik Kniberg
Source : book - Scrum and XP from the Trenches
22. Task management & BUGS
Task on
whiteboard
Bugs are on
yellow sticks on
whiteboard , Wiki
system, Excel files
Source: http://www.infoq.com/minibooks/scrum-xp-from-the-trenches
23. Conclusion
1. CI is fundamental for agile deployment, focus on how to
effectively improve it step by step
2. Don’t need to introduce electrical whiteboard in the
beginning for agile development, Use e-whiteboard
when your team really understand scrum
24. One case – find the changes
One feature “Support Winstone” is used in hudson for
auto start the web application ?
How to do it in clearcase/svn ? How long time ?
Find the codes -> Blame (see history) -> Search “Winstone” -> Roll back to history
25. Git overview
distributed
Git is an open source version control system designed
for speed and efficiency
Mercurial (hg) is distributed version control system
Clearcase, svn are central version control system
Initial development by
Linus Torvalds
Used by e.g. the Linux
kernel and Ruby on
Rails, Android
26. Code workflow
In agile way of working, mostly centralized workflow is
used, and ask developers to commit code frequently
Git can open more workflow from it (distribution, big
refactorying..)
Pictures from Pro Git site
28. Code Review
What we do code review now ? Post or Pre
Extra benefit
Mentoring of new developers / contributors
Good alternative to pair programming
Coding standards (Keep overall readability & code quality high)
Modern code review
Goal is cooperation, not fault-finding
Integral part of coding process
Source: Guido van Rossum, code review on the web in 2006
http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
29. Gerrit Code review
Gerrit serves as a git server adding access control and
work flow.
Gerrit is a Code Review system based on jgit
Gerrit designed for collaboration in open source
community
http://code.google.com/p/gerrit/
Used by
Android:
https://review.source.android.com/
JGit/Egit: http://egit.eclipse.org/r/
Google, Redhat
30. Standard Gerrit workflow
Gerrit
master
git git
change 12
submit accepted git git
change 10 change 12
change 23 / separate branch
fetch master
to get
push improved 1. Pull from master branch
updates
change 10
2. Push (submit) changes to one
separate place in gerrit
Developer PC
3. Some checks are done in separate
branch
› Code Review are finished with vote + 2
git › CI verify the codes and vote +1
git 4. Merge to master branch when
approved by submitter
Source: http://www.slideshare.net/caniszczyk/effective-git-with-eclipse
32. Conclusion
1. CI is fundamental for agile deployment, focus on how to
effectively improve it step by step, visible the quality
inside CI loop.
2. Don’t need to introduce electrical whiteboard in the
beginning for agile development, Use e-whiteboard
when your team really understand scrum
3. Tools could promote your agile deployment, new tools
like “Git/Gerrit”, it will change your agile thinking
34. Scrum way to deploy tools
Define the Vision/Goal
Choose open source tools to reduce direct cost but keep the
possibility for commercial tools in ALM selection
E2E thinking to integrate with different existing system
Iteratively (stepwise) introduce this to organization to
benefit from beginning
Lean thinking
Find the bottleneck & waste to prioritize backlog
Continuously improvement by retrospective.
35. Tools does matter for agile
It is all about the people
use tools to support PEOPLE
36. Reference
My blog: http://codeslife.com
Mail: larry.caiyu@gmail.com
(Chinese twitter): http://weibo.com/larrycaiyu
(Chinese) Article at “Programmer” : Agile & Tools
http://www.programmer.com.cn/8020/
37. Tools discussed in this slides
CI: Jenkins (hudson)
Quality: Sonar
Version control: Git (svn, clearcase)
Code review: Gerrit
ALM (issues): Redmine
Others: github, Balsamiq