�� LarryLarry, an open source, collaboration & Agile evangelist, an open source, collaboration & Agile evangelist
�� Software Practice PioneerSoftware Practice Pioneer to discover the best suitable to discover the best suitable
methods and tools to improve the efficiency of software methods and tools to improve the efficiency of software
developmentdevelopment
ProfileProfile
�� ALM (Application Lifecycle Management) tools and Agile ALM (Application Lifecycle Management) tools and Agile
in quick viewin quick view
�� Whether Whether ALMALM system support system support AgileAgile software software
development development
�� Does tools really matter ?Does tools really matter ?
�� Does tools improve agile deployment ?Does tools improve agile deployment ?
�� One Scrum way to deploy ALM systemOne Scrum way to deploy ALM system
AgendaAgenda
�� Does not say open source is the only solutionDoes not say open source is the only solution
�� Does not say we solve all the problems using open Does not say we solve all the problems using open
source toolssource tools
�� Open source are better choice ;Open source are better choice ;--))
Reminds before detailsReminds before details
Introduction for Agile & ALMIntroduction for Agile & ALM
Pair programming
Daily short meeting
Extreme ProgrammingSCRUM
Continuous integration
Different agile approach share common agile practices
In 2001, form Agile alliance create Agile Manifesto
Agile Modeling
Feature Driven Development
…..
Agile practices comes out
Customer tests
Prove it With Code
Collective Ownership
…
Pair programming
Daily short meeting
Continuous integration
Customer tests
Prove it With Code
Collective Ownership
…
History of AgileHistory of Agile
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
�� ALM (Application Lifecycle Management) ALM (Application Lifecycle Management) is the marriage ofis the marriage of business business
managementmanagement toto software engineeringsoftware engineering made possible by tools that made possible by tools that
facilitate and integratefacilitate and integrate requirements managementrequirements management,, architecturearchitecture, ,
codingcoding, , testingtesting,, trackingtracking, and, and release managementrelease management. .
Source http://www.manning.com/huettermann/
ALMALM
Requirement/tracking management
buildquality
codeIDE
ALM in reality (one example)ALM in reality (one example)
ALM Tools in AgileALM Tools in Agile
�� How to change from long integration phase to short How to change from long integration phase to short
iteration and decrease repeating manual work ?iteration and decrease repeating manual work ?
�� How to manage the backlog, tasks, internal TR ?How to manage the backlog, tasks, internal TR ?
�� How to do quality control & keep track the work status ?How to do quality control & keep track the work status ?
�� When to do code review ?When to do code review ?
�� Can team to have a separate branch ?Can team to have a separate branch ?
�� ……
Issues in agile developmentIssues in agile development
�� Basic automation steps in CIBasic automation steps in CI
�� Developers commit the codes, trigger the buildDevelopers commit the codes, trigger the build
�� CI run Compile, Unit level testing (code)CI run Compile, Unit level testing (code)
�� CI Acceptance Testing (verification)CI Acceptance Testing (verification)
�� Feedback to develop team (fail/success)Feedback to develop team (fail/success)
�� CI changes from big/long integration phase to CI changes from big/long integration phase to
frequent/short integration.frequent/short integration.
Ref: http://martinfowler.com/articles/continuousIntegration.html
Builds Builds –– Continuously IntegrationContinuously Integration
�� Hudson is a deHudson is a de--facto CI facto CI
standard used for lots of standard used for lots of
productsproducts
�� Easy to start, configure Easy to start, configure
and extending (300+ and extending (300+
plugins)plugins)
�� Easy to handle your legacy Easy to handle your legacy
systemsystem
Hudson 1.394 (Sun + community)
Hudson (oracle)
Jenkins (community)
Since 2011
Hudson vs. JenkinsHudson vs. Jenkins
Numbers to rank the product
Visualize the quality result to everyone in CI loop
Sonar for java productsSonar for java products
�� Key issuesKey issues
�� Let CI running , ALWAYSLet CI running , ALWAYS
�� Stop if CI turns redStop if CI turns red
�� More features around itMore features around it
�� Continuous deployment (Package, Install)Continuous deployment (Package, Install)
�� Regression testing (System testing)Regression testing (System testing)
�� Continuous delivery for Continuous delivery for SaaSSaaS/Cloud system/Cloud system
CI’s job is to remove waste for the things can be auto
More for CIMore for CI
1.1. CI is fundamental for agile deployment, focus on how to CI is fundamental for agile deployment, focus on how to
effectively improve it step by step effectively improve it step by step
ConclusionConclusion
�� Requirement management (Planning meeting, Release, Requirement management (Planning meeting, Release,
Product backlog) Product backlog) –– Product ownerProduct owner
�� Task management (Daily standup meeting, sprint Task management (Daily standup meeting, sprint
backlog)backlog)
-- TeamTeam
�� Internal Bugs (trouble report inside sprint) Internal Bugs (trouble report inside sprint) -- Team Team
Issue managementIssue management
�� So far no good ALM system cover them all in excellent So far no good ALM system cover them all in excellent
way.way.
�� $ JIRA$ JIRA
�� $ $ ScrumWorksScrumWorks ProPro
�� TracTrac ((AgiloAgilo))
�� redmineredmine
�� $ IBM Rational Jazz based$ IBM Rational Jazz based
�� $ $ IntlandIntland CodebeamerCodebeamer
�� ……
Existing ALM cover issue tracksExisting ALM cover issue tracks
Redmine is a Redmine is a flexible project managementflexible project management web web
application for issue managementapplication for issue management
http://www.redmine.org/
Issue management systemIssue management system
Quick viewQuick view
�� What tool supports managing large backlogs ? Use a What tool supports managing large backlogs ? Use a
simple spreadsheet. Not because a spreadsheet is so simple spreadsheet. Not because a spreadsheet is so
good; just because it is better than the alternativesgood; just because it is better than the alternatives
-- Book : Scaling Lean & Agile Development Book : Scaling Lean & Agile Development
–– Craig Craig LarmanLarman/Bas /Bas VoddeVodde
�� We usually do this in an Excel document with sharing We usually do this in an Excel document with sharing
enabled (i.e. multiple users can edit simultaneously)enabled (i.e. multiple users can edit simultaneously)
-- Book: Scrum and XP from the Trenches Book: Scrum and XP from the Trenches -- HenrikHenrik KnibergKniberg
Source : book - Scrum and XP from the Trenches
RequirementRequirement
�� Task on Task on
whiteboardwhiteboard
�� Bugs are on Bugs are on
yellow sticks on yellow sticks on
whiteboard , Wiki whiteboard , Wiki
system, Excel filessystem, Excel files
Source: http://www.infoq.com/minibooks/scrum-xp-from-the-trenches
Task management & BUGSTask management & BUGS
1.1. CI is fundamental for agile deployment, focus on how to CI is fundamental for agile deployment, focus on how to
effectively improve it step by stepeffectively improve it step by step
2.2. DonDon’’t need to introduce electrical whiteboard in the t need to introduce electrical whiteboard in the
beginning for agile development, Use ebeginning for agile development, Use e--whiteboard whiteboard
when your team really understand scrumwhen your team really understand scrum
ConclusionConclusion
�� One feature One feature ““Support Support WinstoneWinstone”” is used in hudson for is used in hudson for
auto start the web application ?auto start the web application ?
�� How to do it in How to do it in clearcase/svnclearcase/svn ? How long time ?? How long time ?
Find the codes -> Blame (see history) -> Search “Wi nstone” -> Roll back to history
One case One case –– find the changesfind the changes
�� Git is an open source version control system designed Git is an open source version control system designed
for for speed and efficiencyspeed and efficiency
�� Mercurial (hg) is dMercurial (hg) is distributed version control systemistributed version control system
�� Clearcase, svn are central version control systemClearcase, svn are central version control system
distributed
�� Initial development by Initial development by
LinusLinus TorvaldsTorvalds
�� Used by e.g. the Linux Used by e.g. the Linux
kernel and Ruby on kernel and Ruby on
RailsRails, Android, Android
Git overviewGit overview
�� In agile way of working, mostly centralized workflow is In agile way of working, mostly centralized workflow is
used, and ask developers to commit code frequentlyused, and ask developers to commit code frequently
�� Git can open more workflow from it (distribution, big Git can open more workflow from it (distribution, big
refactorying..)refactorying..)
Pictures from Pro Git site
Code workflowCode workflow
Branch Strategy for gitBranch Strategy for git
�� What we do code review now ? Post or PreWhat we do code review now ? Post or Pre
�� Extra benefitExtra benefit
�� Mentoring of new developers / contributorsMentoring of new developers / contributors
�� Good alternative to Good alternative to pair programmingpair programming
�� Coding standardsCoding standards ((Keep overall readability & code quality highKeep overall readability & code quality high))
�� Modern code reviewModern code review
�� Goal is cooperation, not faultGoal is cooperation, not fault--finding finding
�� Integral part of coding processIntegral part of coding process
Source: Guido van Rossum, code review on the web in 2006http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
Code ReviewCode Review
�� Gerrit serves as a Gerrit serves as a git servergit server adding access control and adding access control and
work flowwork flow..
�� Gerrit is a Gerrit is a Code ReviewCode Review system based on system based on jgitjgit
�� Gerrit designed for collaboration in open source Gerrit designed for collaboration in open source
communitycommunity
http://http://code.google.com/p/gerritcode.google.com/p/gerrit//
�� Used by Used by �� Android: Android:
https://review.source.android.com/https://review.source.android.com/
�� JGit/EgitJGit/Egit: : http://egit.eclipse.org/r/http://egit.eclipse.org/r/
�� Google, Google, RedhatRedhat
Gerrit Code reviewGerrit Code review
Developer PC
gitgit
Gerrit
git gitgitgit
push improved change 10
master
change 12
change 10
change 23 / separate branch
submit accepted change 12
fetch master to get updates
Source: http://www.slideshare.net/caniszczyk/effective-git-with-eclipse
1.1. Pull from Pull from mastermaster branch branch
2.2. Push (submit) changes to one Push (submit) changes to one
separate placeseparate place in gerritin gerrit
3.3. Some checks are done in Some checks are done in separate separate
branchbranch›› Code Review are finished with vote + 2Code Review are finished with vote + 2
›› CI verify the codes and vote +1CI verify the codes and vote +1
4.4. Merge to Merge to master branchmaster branch when when
approved by submitterapproved by submitter
Standard Gerrit workflowStandard Gerrit workflow
Code ReviewCode Review
1.1. CI is fundamental for agile deployment, focus on how to CI is fundamental for agile deployment, focus on how to
effectively improve it step by step, visible the quality effectively improve it step by step, visible the quality
inside CI loop.inside CI loop.
2.2. DonDon’’t need to introduce electrical whiteboard in the t need to introduce electrical whiteboard in the
beginning for agile development, Use ebeginning for agile development, Use e--whiteboard whiteboard
when your team really understand scrumwhen your team really understand scrum
3.3. Tools could promote your agile deployment, new tools Tools could promote your agile deployment, new tools
like like ““Git/GerritGit/Gerrit””, it will change your agile thinking, it will change your agile thinking
ConclusionConclusion
Scrum Way to deploy toolsScrum Way to deploy tools
�� Define the Define the Vision/GoalVision/Goal
�� Choose open source toolsChoose open source tools to reduce direct cost but keep the to reduce direct cost but keep the
possibility for commercial tools in ALM selectionpossibility for commercial tools in ALM selection
�� E2E thinking to integrate with different existing systemE2E thinking to integrate with different existing system
�� IterativelyIteratively (stepwise) introduce this to organization to (stepwise) introduce this to organization to
benefit from beginningbenefit from beginning
�� Lean thinkingLean thinking
�� Find the bottleneck & waste to Find the bottleneck & waste to prioritize backlogprioritize backlog
�� Continuously improvementContinuously improvement by retrospective.by retrospective.
Scrum way to deploy toolsScrum way to deploy tools
It is all about the people
Tools does matter for agile
use tools to support PEOPLE
ReferenceReference
�� My blog: My blog: http://codeslife.comhttp://codeslife.com
�� Mail: Mail: [email protected]@gmail.com
�� (Chinese twitter): (Chinese twitter): http://weibo.com/larrycaiyuhttp://weibo.com/larrycaiyu
�� (Chinese) Article at (Chinese) Article at ““ProgrammerProgrammer”” : Agile & Tools: Agile & Tools
http://www.programmer.com.cn/8020/http://www.programmer.com.cn/8020/
�� CI: Jenkins (hudson) CI: Jenkins (hudson)
�� Quality: SonarQuality: Sonar
�� Version control: Git (Version control: Git (svnsvn, , clearcaseclearcase))
�� Code review: Gerrit Code review: Gerrit
�� ALM (issues): RedmineALM (issues): Redmine
�� Others: Others: githubgithub, , BalsamiqBalsamiq
Tools discussed in this slidesTools discussed in this slides