Agile & ALM Tools

Larry Cai
larry.caiyu@gmail.com
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
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
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 ;-)
Introduction for Agile & ALM
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
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
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/
ALM in reality (one example)


            quality       build


       Requirement/tracking management



               IDE          code
ALM Tools in Agile
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 ?
  …
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
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
Sonar for java products




              Numbers to rank the product




 Visualize the quality result
 to everyone in CI loop
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
Conclusion
1.   CI is fundamental for agile deployment, focus on how to
     effectively improve it step by step
Issue management
 Requirement management (Planning meeting, Release,
 Product backlog) – Product owner
 Task management (Daily standup meeting, sprint
 backlog)
 - Team
 Internal Bugs (trouble report inside sprint) - Team
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
    …
Issue management system
 Redmine is a flexible project management web
  application for issue management




                                http://www.redmine.org/
Quick view
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
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
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
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
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
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
Branch Strategy for git
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
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
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
Code Review
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
Scrum Way to deploy tools
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.
Tools does matter for agile
  It is all about the people
use tools to support PEOPLE
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/
Tools discussed in this slides
  CI: Jenkins (hudson)
  Quality: Sonar
  Version control: Git (svn, clearcase)
  Code review: Gerrit
  ALM (issues): Redmine
  Others: github, Balsamiq

Agile & ALM tools

  • 1.
    Agile & ALMTools Larry Cai larry.caiyu@gmail.com
  • 2.
    Profile Larry, anopen 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 (ApplicationLifecycle 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 ;-)
  • 5.
  • 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 AgileSoftware 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 LifecycleManagement) 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
  • 10.
  • 11.
    Issues in agiledevelopment 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 – ContinuouslyIntegration 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 javaproducts 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
  • 17.
    Issue management Requirementmanagement (Planning meeting, Release, Product backlog) – Product owner Task management (Daily standup meeting, sprint backlog) - Team Internal Bugs (trouble report inside sprint) - Team
  • 18.
    Existing ALM coverissue 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/
  • 20.
  • 21.
    Requirement Whattool 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
  • 27.
  • 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
  • 31.
  • 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
  • 33.
    Scrum Way todeploy tools
  • 34.
    Scrum way todeploy 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 matterfor 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 inthis slides CI: Jenkins (hudson) Quality: Sonar Version control: Git (svn, clearcase) Code review: Gerrit ALM (issues): Redmine Others: github, Balsamiq