Agile Tool Hacking:
 Taking Your Agile Development
 Tools To The Next Level

   Craig Smith        Dr Paul King
   Suncorp...
Overview




Welcome




          Images: http://1.bp.blogspot.com/_FNT-_PKRcfs/R-uigRW64pI/AAAAAAAAA7M/iLGM-vOzlRM/s400/...
According to the
                                                                                   Compact Oxford
       ...
Image http://blog.theworkinggroup.ca/wp-content/uploads/2009/04/agile-manifesto1.gif




                                 ...
Image http://i.pbase.com/g3/64/559164/2/55171028.Pictures0588047R103315.jpg   http://www.design-industry.com.au/en/wp-cont...
Image http://3.bp.blogspot.com/_qUcuMWvDsac/SLP8WaIAawI/AAAAAAAAA7U/OC_RU-BlB0M/s400/IMG_2682.jpg




                    ...
Image Beck, Kent – Extreme Programming Explained: Embrace Change




                                  XP Practices over T...
Image http://blogs.conchango.com/Admin/ImageGallery/blogs.conchango.com/Colin.Bird/Scrum%20Overview%20Diagram.png




    ...
Concept                               Initiate                         Deliver             Deploy

                    ...
Tools
Hacking

 Think
Simple!


          Image http://www.appart.com/Blog/image.axd?picture=2009%2F6%2Fmacgyver.jpg
Tools
Hacking

 Great
 Team


          Image http://www.collider.com/uploads/imageGallery/A_Team/the_a-team_nbc_tv_show_i...
Storycards & iteration
                                                                                      management
  ...
Stories
    &
Iterations

The Manual
   Way

             Images http://www.selfishprogramming.com/wp-content/uploads/2008...
Example Storycards & iteration
          management tools
Open Source / Free:
 XPlanner: http://www.xplanner.org
 Agilef...
Iteration Tool Maturity
     Beginner               Intermediate              Advanced

     Start with a          Introdu...
Agilo
Mingle
Jira + GreenHopper
Hacking Jira: know the features
Hacking tool integration
Hacking planning poker
Collaboration

                                                                              Team:
                       ...
Collaboration

The Manual
   Way
Example Collaboration Tools
Open Source / Free:
 MediaWiki: http://www.mediawiki.org
 Open Atrium: http://openatrium.com...
Collaboration Tool Maturity
       Beginner               Intermediate            Advanced
Basic agile / XP / Scrum:   Com...
Confluence
SharePoint
Eclipse DocShare
IntelliJ Code Consultant
Hacking Wiki + Iteration Mgmt
Hacking Distributed Retros
Hacking Intranets (Atrium)
Development
                                                            Environments
                                     ...
Development
Environments

The Manual
   Way


               Image http://www.xtrasens.com/support/manual/install%20flow.p...
Example Environment Tools

Open Source / Free:
 VirtualBox: http://www.virtualbox.org
 NSIS: http://nsis.sourceforge.net...
Environment Tool Maturity
      Beginner                 Intermediate                 Advanced

    Instructions for      ...
VMWare
Google App Engine
Physical Environment
Hacking Dev. Machine Builds
Hacking Corporate SOE
Development Tools

                                                                Developers:
                           ...
Development
Environments

The Manual
   Way


               Image http://www.domainlanguage.com/_library/images_people_wo...
Example Development Tools

Open Source / Free:
IDE’s (multiple language support)
 Eclipse: http://www.eclipse.org
 NetBe...
Example Development Tools

Open Source / Free:
Version Control Systems
 Subversion: http://subversion.tigris.org
 Git: h...
Example Development Tools

Open Source / Free:
Metrics
 Checkstyle: http://checkstyle.sourceforge.net
 StyleCop: http://...
Example Development Tools
Commercial:
IDE’s (multiple language support)
 IntelliJ IDEA / RubyMine / ReSharper:
    http:/...
Development Tool Maturity
      Beginner                Intermediate                Advanced

Usage of IDE with team      ...
Image http://alagad.com/upload/intellij_tests_21.gif
                                                       IntelliJ
Clover
Image http://www.inf.unisi.ch/phd/wettel/codecity-wof.html
                                                             Co...
Hacking IDE Plugins
Hacking RYO IDE Plugins
• d




Hacking VCS: FishEye/SVNStat
Testing Tools

                                                                       Testers:
                           ...
Testing

The Manual
   Way


             Image http://tell.fll.purdue.edu/JapanProj/FLClipart/Verbs/understand.gif
      ...
Example Testing Tools
Open Source / Free:
Test Specification – xUnit Tools
 JUnit: http://www.junit.org
 Nunit: http://w...
Example Testing Tools
Open Source / Free:
Test Execution / Record / Log / UI
 Selenium: http://seleniumhq.org
 Watir: ht...
Example Testing Tools

Commercial:
Test Execution / Record / Log / UI
 Twist: http://studios.thoughtworks.com/
      twis...
Testing Tool Maturity
                 Beginner                                        Intermediate               Advanced...
Quality Center
Selenium
NUnit
Hacking JMeter
Hacking Performance Tests
Hacking Expressive Tests
Continuous Integration

                                                   Advantages:
                                   ...
Continuous
Integration

The Manual
   Way


              Image http://farm4.static.flickr.com/3122/3121915858_06a783e594....
Example Continuous Integration
  Tools

Open Source / Free:
Continuous Integration Servers
 Hudson: https://hudson.dev.ja...
Example Continuous Integration
  Tools

Open Source / Free :
Dependency / Repositories
 Nexus: http://nexus.sonatype.org
...
Continuous Integration Maturity
      Beginner                Intermediate                  Advanced
 Implementation of   ...
Hudson
Hudson Plugins
Nexus
Hacking CI Data Migration
Hacking Hudson / Scoreboard
Hudson Swarms                            Plugin Growth
> java -jar swarm-client-jar-with-
dependencies.jar
Continuous Inte...
Deployment Tools
                                                                        Advantages:
                     ...
Deployment

The Manual
   Way


             Image http://www.thekua.com/rant/wp-content/uploads/2006/03/RetrospectiveTime...
Example Deployment Tools

Open Source / Free:
 Roll your own (scripts / build / CI server)
 Cargo: http://cargo.codehaus...
Deployment Tool Maturity
                 Beginner                                        Intermediate           Advanced
...
Tableaux
Tableaux Tokens
Tableaux Deployment
#/bin/bash

SCRIPT_DIR=`dirname $0`
. $SCRIPT_DIR/setup.sh

HOST=$1
PORT=$2
ACTION=$3

URLS=("gi/underwriting/ncd/calculat...
[...]
<configuration>
  <container>
                                                                  > mvn cargo:deploy
 ...
Cucumber Feature
Feature: Deployment
 In order to use the latest version of testApp
 A support officer should be able to
 ...
Monitoring Tools
                                                                               Advantages:
              ...
Monitoring

The Manual
   Way


             Image http://upload.wikimedia.org/wikipedia/commons/5/52/Unix-process-list.pn...
Example Monitoring Tools

Open Source / Free:
 Roll your own (scripts / CI server)
 Cacti: http://www.cacti.net
 Zabbix...
Monitoring Tool Maturity
        Beginner                  Intermediate                Advanced

 Base level / centralised...
Tivoli
Cacti
Splunk
Hacking RYO Visual Monitoring
2009-07-14 17:10:00,028 [ERROR,au.com.suncorp.ldocs.web.AbstractAction] Unhandled exception caught in action: null
java.la...
Wrap Up:

Plan your
 tools &
approach


            Image http://jenn98.com/bugs/images/bugs-elmer-daffy.jpg
Wrap Up:

                                                                                    Manual
                     ...
Wrap Up:

 Refactor
processes &
   tools


              Image http://33epua.blu.livefilestore.com/y1pF8NaSRUp9Ge4uyvRJLXu...
Wrap Up:

                                 Learn from
                               retrospectives



Image http://www.di...
Wrap Up:

Eliminate
  waste



            Image http://www.cartoonstudio.co.uk/images/kmeters/ABBwaste.jpg
Wrap Up: Tools Maturity
    Beginner        Intermediate   Advanced
  Collaboration     Storycards &   Deployment
        ...
Wrap Up:

Think like
Macgyver



             Image http://jira.atlassian.com/secure/attachment/16943/macgyver.gif
Wrap Up:

Act like an
 A-Team



              Image http://www.popartuk.com/g/l/lgpp31670+i-love-it-when-a-plan-comes-tog...
Want More Information?
Craig Smith
http://www.suncorp.com.au
http://www.agileacademy.com.au
craig.smith@suncorp.com.au
@sm...
Acknowledgments
    Suncorp is one of Australia and New Zealand's largest diversified
 financial services providers, suppl...
Upcoming SlideShare
Loading in...5
×

Craig Smith & Paul King Agile Tool Hacking Taking Your Agile Development Tools To The Next Level

6,402

Published on

Published in: Technology, Business
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,402
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
129
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Craig Smith & Paul King Agile Tool Hacking Taking Your Agile Development Tools To The Next Level

  1. 1. Agile Tool Hacking: Taking Your Agile Development Tools To The Next Level Craig Smith Dr Paul King Suncorp ASERT
  2. 2. Overview Welcome Images: http://1.bp.blogspot.com/_FNT-_PKRcfs/R-uigRW64pI/AAAAAAAAA7M/iLGM-vOzlRM/s400/vegemite.jpg http://www.sciencenews.net.au/images/kangaroo-and-baby-joey1.jpg http://www.vtxpress.com/tripleheader-fluke-rigs/knife.jpg I http://www.sail-world.com/photos/Alt_AustraliaII.jpg http://geology.com/world/map/map-of-australia.gif
  3. 3. According to the Compact Oxford Dictionary: Tool (noun) 1. a device or implement used to carry out a particular function. 2. a thing used to help perform a job. 3. a person used by another. Image: http://i.ehow.com/images/GlobalPhoto/Articles/2065416/dictionary_Full.jpg
  4. 4. Image http://blog.theworkinggroup.ca/wp-content/uploads/2009/04/agile-manifesto1.gif Agile Manifesto on Tools…
  5. 5. Image http://i.pbase.com/g3/64/559164/2/55171028.Pictures0588047R103315.jpg http://www.design-industry.com.au/en/wp-content/uploads/2007/07/fridge_01_400x400.jpg Refridgerators vs Radiators
  6. 6. Image http://3.bp.blogspot.com/_qUcuMWvDsac/SLP8WaIAawI/AAAAAAAAA7U/OC_RU-BlB0M/s400/IMG_2682.jpg Refridgerators vs Radiators
  7. 7. Image Beck, Kent – Extreme Programming Explained: Embrace Change XP Practices over Tooling
  8. 8. Image http://blogs.conchango.com/Admin/ImageGallery/blogs.conchango.com/Colin.Bird/Scrum%20Overview%20Diagram.png Scrum Practices over Tooling
  9. 9. Concept  Initiate  Deliver  Deploy Storycards & iteration management Collaboration Development environments Development tools Testing Continuous integration Deployment Monitoring Image http://3.bp.blogspot.com/_H0iqHTCqRyo/RfQyLHm8POI/AAAAAAAAABQ/-ZGsV-p-aVs/s400/evolution.jpg Tools Usage Timeline
  10. 10. Tools Hacking Think Simple! Image http://www.appart.com/Blog/image.axd?picture=2009%2F6%2Fmacgyver.jpg
  11. 11. Tools Hacking Great Team Image http://www.collider.com/uploads/imageGallery/A_Team/the_a-team_nbc_tv_show_image__1_.jpg
  12. 12. Storycards & iteration management Storycards:  Promise for a conversation  INVEST  Defect tracking Iteration / Release / Project tracking:  Prioritised backlog  Iteration story wall  Burn-up & burn down charts  Metrics / Velocity  Estimation Images http://www.concordion.org/image/example/online-shop/StoryCard.png http://www.ugleah.com/img/2009/burndown_chart.gif
  13. 13. Stories & Iterations The Manual Way Images http://www.selfishprogramming.com/wp-content/uploads/2008/10/building-kanban-board.jpg http://ssmirnov.files.wordpress.com/2009/02/still-life.jpg
  14. 14. Example Storycards & iteration management tools Open Source / Free:  XPlanner: http://www.xplanner.org  Agilefant: http://www.agilefant.org  IceScrum: http://www.icescrum.org  Agilo: http://www.agile42.com/cms/pages/agilo/ Commercial:  Jira + GreenHopper http://www.atlassian.com/software/jira/ http://www.atlassian.com/greenhopper/  Mingle: http://studios.thoughtworks.com/ mingle-agile-project-management  VersionOne: http://www.versionone.com/  Rally: http://www.rallydev.com
  15. 15. Iteration Tool Maturity Beginner Intermediate Advanced Start with a Introduce tool if: Connect tools eg. manual story wall Team members / IDE, VCS (index cards, markers stakeholders remote & stickies) Reporting requirements Extend tool with Easier stats / BVC 0wn / community / Keep manual BVC’s commercial plugins & burn charts Keep a manual wall of relevant level Electronic estimation Breakdown stories & & planning estimates (INVEST) Manual planning poker
  16. 16. Agilo
  17. 17. Mingle
  18. 18. Jira + GreenHopper
  19. 19. Hacking Jira: know the features
  20. 20. Hacking tool integration
  21. 21. Hacking planning poker
  22. 22. Collaboration Team:  Daily Scrum / Standup  Retrospective  Kickoff / Demo / Showcase  Collective team ownership  Pair Programming Output:  Project Documentation  Email / telephone / IM Images http://fabiopereira.me/blog/wp-content/uploads/2008/11/walldc93a7f3- 2d9d-4525-8301-d40ad993e66f.jpg http://www.idea.gov.uk/idk/aio/8172457
  23. 23. Collaboration The Manual Way
  24. 24. Example Collaboration Tools Open Source / Free:  MediaWiki: http://www.mediawiki.org  Open Atrium: http://openatrium.com/  Google Docs: http://docs.google.com  Skype: http://www.skype.com  Eclipse Communications Framework (D0cShare): http://www.eclipse.org/ecf/ Commercial:  Confluence: http://www.atlassian.com/ software/confluence/  SharePoint / Office Communicator: http://sharepoint.microsoft.com  PBWorks: http://pbworks.com
  25. 25. Collaboration Tool Maturity Beginner Intermediate Advanced Basic agile / XP / Scrum: Combined kickoff / Connect tools eg. Daily scrum / standup, retrospective for iteration management, retrospective, small projects build tools kickoff / demo / showcase Advanced XP Extend tool with techniques: pair programming, team 0wn / community / Basic wiki / shared document environment ownership commercial plugins Digital camera / Intranet / CMS Distributed whiteboard capability collaboration Wiki gardening
  26. 26. Confluence
  27. 27. SharePoint
  28. 28. Eclipse DocShare
  29. 29. IntelliJ Code Consultant
  30. 30. Hacking Wiki + Iteration Mgmt
  31. 31. Hacking Distributed Retros
  32. 32. Hacking Intranets (Atrium)
  33. 33. Development Environments Developers:  Pragmatic programmers  Continuous improvement  Efficient / repeatable Outcomes:  Co-location  Productive hardware  Consistent environments  Scripted machine builds Image http://imgs.xkcd.com/comics/compiling.png  Environment testing http://api.ning.com/files/mc- mk7rMBrQx2Jpql3boKhn9N2cHmubcFN6hyDrikT8FIz- 2EhEwcbpzSWjqQ8VdjxBVgOTgSs31- sL2oBoifORkpQ680Iu0/appleiphonesdklogo.jpg
  34. 34. Development Environments The Manual Way Image http://www.xtrasens.com/support/manual/install%20flow.png http://img.dailymail.co.uk/i/pix/2007/07_01/hammerDM0607_468x584.jpg
  35. 35. Example Environment Tools Open Source / Free:  VirtualBox: http://www.virtualbox.org  NSIS: http://nsis.sourceforge.net  Linux distributions (various) http://www.linux.org http://distrowatch.com Commercial:  VMWare: http://www.vmware.com  Cloud computing options http://code.google.com/appengine/ http://aws.amazon.com/ec2/ http://github.com
  36. 36. Environment Tool Maturity Beginner Intermediate Advanced Instructions for Automated builds for Automated build for application environments developer machines building environments manually / consistently Automated environment Testers, team members tests on demand using similar environment Plan for pragmatic programmer techniques Required hardware / Consider cloud software computing opportunities Manual tests for checking environments Physical environment Zero cubicles, pairing renovations stations, breakout / Co-located team team area
  37. 37. VMWare
  38. 38. Google App Engine
  39. 39. Physical Environment
  40. 40. Hacking Dev. Machine Builds
  41. 41. Hacking Corporate SOE
  42. 42. Development Tools Developers:  Craftsmanship / clean code  Quality non-negotiable Tool Types:  Integrated Development Environment (IDE)  Database SQL clients  Version control  Web Service / SOAP tools  File & operating system tools Image http://www.cornetdesign.com/images/bowling_all2s.jpg  Metrics http://cybernetnews.com/wp-content/uploads/2007/07/hacker.jpg
  43. 43. Development Environments The Manual Way Image http://www.domainlanguage.com/_library/images_people_working/designing_at_whiteboard.jpg http://4.bp.blogspot.com/_9kQQgQD35rY/SaV5p8YBGhI/AAAAAAAAAkg/HOvlhIo7yGI/s1600- h/06_Red_Green_Refactor.JPG
  44. 44. Example Development Tools Open Source / Free: IDE’s (multiple language support)  Eclipse: http://www.eclipse.org  NetBeans: http://www.netbeans.org  SharpDevelop: http://www.icsharpcode.net  RadRails: http://www.aptana.com/rails  Visual Studio Express: http://www.microsoft.com/express/ Database Clients  DBVisualizer: http://www.dbvis.com/  SQuirreL: http://squirrel-sql.sourceforge.net Web Service / SOAP Tools  soapUI: http://www.soapui.org
  45. 45. Example Development Tools Open Source / Free: Version Control Systems  Subversion: http://subversion.tigris.org  Git: http://git-scm.com  Bazaar: http://bazaar-vcs.org  Mercurial: http://mercurial.selenic.com File & operating system tools  PowerShell: http://www.microsoft.com/ windowsserver2003/technologies/ management/powershell/default.mspx fish: http://fishshell.org  Cygwin: http://www.cygwin.com  Miscellaneous OS tools
  46. 46. Example Development Tools Open Source / Free: Metrics  Checkstyle: http://checkstyle.sourceforge.net  StyleCop: http://code.msdn.microsoft.com/ sourceanalysis  FindBugs: http://findbugs.sourceforge.net  PMD: http://pmd.sourceforge.net  Cobertura: http://cobertura.sourceforge.net  JDepend: http://clarkware.com/software/JDepend.html  Panopticode: http://www.panopticode.org  CodeCity: http://www.inf.unisi.ch/phd/wettel/ codecity.html
  47. 47. Example Development Tools Commercial: IDE’s (multiple language support)  IntelliJ IDEA / RubyMine / ReSharper: http://www.jetbrains.com/  Visual Studio: http://www.microsoft.com/visualstudio Web Service / SOAP Tools  Oxygen: http://www.oxygenxml.com/ Metrics  Clover: http://www.atlassian.com/software/ clover  Simian: http://www.redhillconsulting.com.au Profilers  YourKit: http://www.yourkit.com
  48. 48. Development Tool Maturity Beginner Intermediate Advanced Usage of IDE with team Mastery of IDE Mastery of advanced agreed setup keystrokes / features / IDE features / plugin plugins development Awareness / use of Usage of advanced basic tools / metrics Team commitment to react to metrics output metrics tools & features Use of version control Usage of distributed Usage of advanced version control features version control Team understanding of quality Advanced clean code / Quality non-negotiable / software craftsman clean code
  49. 49. Image http://alagad.com/upload/intellij_tests_21.gif IntelliJ
  50. 50. Clover
  51. 51. Image http://www.inf.unisi.ch/phd/wettel/codecity-wof.html Code City
  52. 52. Hacking IDE Plugins
  53. 53. Hacking RYO IDE Plugins
  54. 54. • d Hacking VCS: FishEye/SVNStat
  55. 55. Testing Tools Testers:  Automate  Continuous feedback  Bridge communication gaps Tool types:  Test specification generation  Test execution / record / log  Test user interfaces  Performance test  Test / incident management Image http://blogs.msdn.com/blogfiles/willy- peter_schaub/WindowsLiveWriter/VSTSRangersProjectsWCFLoadTestToo.0Sh ips_7D80/CLIPART_OF_13165_SM_2.jpg http://2.bp.blogspot.com/_U08AbEz5lx4/Ra9UkCi4EeI/AAAAAAAAAAY/vLpsqL  Reporting 3uqE0/s320/swisstoolcsopen.jpg
  56. 56. Testing The Manual Way Image http://tell.fll.purdue.edu/JapanProj/FLClipart/Verbs/understand.gif http://thedailystandup.com/wp-content/uploads/2008/12/istock_000004776276xsmall.jpg
  57. 57. Example Testing Tools Open Source / Free: Test Specification – xUnit Tools  JUnit: http://www.junit.org  Nunit: http://www.nunit.org Test Specification Tools – Expressive/BDD  Spock: http://code.google.com/p/spock/  FitNesse: http://fitnesse.org  Concordion: http://www.concordion.org  Cucumber: http://cukes.info  easyb: http://www.easyb.org Test Specification Tools – Mocking  NMock: http://www.nmock.org  EasyMock: http://easymock.org
  58. 58. Example Testing Tools Open Source / Free: Test Execution / Record / Log / UI  Selenium: http://seleniumhq.org  Watir: http://wtr.rubyforge.org  Tellurium: http://kenai.com/projects/tellurium  WebTest: http://webtest.canoo.com Performance Test  JMeter: http://jakarta.apache.org/jmeter/  Grinder: http://grinder.sourceforge.net/ Test Management  Radi: http://radi-testdir.sourceforge.net  RTH: http://sourceforge.net/projects/rth/
  59. 59. Example Testing Tools Commercial: Test Execution / Record / Log / UI  Twist: http://studios.thoughtworks.com/ twist-agile-test-automation  GreenPepper: http://www.greenpeppersoftware.com/en/  Squish: http://www.froglogic.com Integrated  HP Quality Center / QTP / LoadRunner: https://h10078.www1.hp.com/cda/hpms/ display/main/hpms_home.jsp ?zn=bto&cp=1_4011_100__  SpiraTest: http://www.inflectra.com/SpiraTest/
  60. 60. Testing Tool Maturity Beginner Intermediate Advanced Automated developer Test driven 100% test coverage unit tests development (unit / acceptance / functional) Some automated BDD / mock testing acceptance / functional Developer / tester tests Automated regression pair programming tests – new / legacy Developers / testers Automated performance working together plus All tests run in CI build testing with functional combined definition of (unit / acceptance / test reuse done functional) Risk based testing Usage of GUI test Usage of expressive / robots DSL testing Based on Elements of Enterprise CI http://www.anthillpro.com/html/resources/elements_of_ci_A4.pdf
  61. 61. Quality Center
  62. 62. Selenium
  63. 63. NUnit
  64. 64. Hacking JMeter
  65. 65. Hacking Performance Tests
  66. 66. Hacking Expressive Tests
  67. 67. Continuous Integration Advantages:  Early warning  Consistent test / integrate  Centrepiece for quality Practices:  Version control / automated build / automated test  Commit early & often  Fast feedback  Visible / audible results  Artefacts Image http://www.michaelfransen.com/wp- content/uploads/2008/02/wheresthebuild-small.jpg
  68. 68. Continuous Integration The Manual Way Image http://farm4.static.flickr.com/3122/3121915858_06a783e594.jpg?v=0 http://www.michaelfransen.com/wp-content/uploads/2008/02/wheresthebuild-small.jpg
  69. 69. Example Continuous Integration Tools Open Source / Free: Continuous Integration Servers  Hudson: https://hudson.dev.java.net  Cruise Control: http://cruisecontrol.sourceforge.net Build Tools  Ant: http://ant.apache.org  Nant: http://nant.sourceforge.net  Maven: http://maven.apache.org  Gradle: http://www.gradle.org
  70. 70. Example Continuous Integration Tools Open Source / Free : Dependency / Repositories  Nexus: http://nexus.sonatype.org  Archiva: http://archiva.apache.org  Ivy: http://ant.apache.org/ivy Commercial:  Bamboo: http://www.atlassian.com/software/bamboo/  Cruise: http://studios.thoughtworks.com/ cruise-continuous-integration  TeamCity: http://www.jetbrains.com/teamcity
  71. 71. Continuous Integration Maturity Beginner Intermediate Advanced Implementation of Implementation of Usage of build clusters / core build steps continuous integration slaves / VM snapshots server to auto-run build Frequent check-in to Dependency management version control system Dedicated build & internal repository machine Adequate hardware to run build Advanced / refactored / High frequency check-in multiple builds to version control Team commitment to system fixing broken builds Broken build alerts & team procedures Builds for environment / project impediments
  72. 72. Hudson
  73. 73. Hudson Plugins
  74. 74. Nexus
  75. 75. Hacking CI Data Migration
  76. 76. Hacking Hudson / Scoreboard
  77. 77. Hudson Swarms Plugin Growth > java -jar swarm-client-jar-with- dependencies.jar Continuous Integration Game Plugin Jira Plugin Amazon EC2 Plugin Image http://weblogs.java.net/blog/kohsuke Hacking Hudson Plugins
  78. 78. Deployment Tools Advantages:  Repeatable from development to Production  No “fight night” surprises Practices:  Automated deployment script  Environment management  Environment tokens  Automated & manual steps  Smoke test / confirmation Image http://www.serena.com/images/products/dimensions-deploy/deploy- illustration2-286-23.jpg http://ciadvantage.com/cs/photos/storage/ctd.gif
  79. 79. Deployment The Manual Way Image http://www.thekua.com/rant/wp-content/uploads/2006/03/RetrospectiveTimelineEvents.jpg http://farm4.static.flickr.com/3645/3340381990_fa9f004e5b.jpg
  80. 80. Example Deployment Tools Open Source / Free:  Roll your own (scripts / build / CI server)  Cargo: http://cargo.codehaus.org  Capistrano: http://www.capify.org  SmartFrog: http://www.smartfrog.org Commercial:  Tableaux: http://www.incanica.com  IBM Rational Suite: http://www-01.ibm.com/software/rational/  BMC BladeLogic: http://www.bmc.com/ products/offering/bmc-bladelogic-application- release-manager.html
  81. 81. Deployment Tool Maturity Beginner Intermediate Advanced Documented manual Fully scripted Usage of deployment deployment & rollback deployment & rollback tool (roll your own / process / checklist where applicable open source / commercial) Documented manual Roll your own basic smoke tests deployment to test Repeatable deployment environments using to all environments Automated helper CI server (tokenized) scripts Repeatable build for Automated production “go-live” processes deployment (push button or automatic) Based on Elements of Enterprise CI http://www.anthillpro.com/html/resources/elements_of_ci_A4.pdf
  82. 82. Tableaux
  83. 83. Tableaux Tokens
  84. 84. Tableaux Deployment
  85. 85. #/bin/bash SCRIPT_DIR=`dirname $0` . $SCRIPT_DIR/setup.sh HOST=$1 PORT=$2 ACTION=$3 URLS=("gi/underwriting/ncd/calculator?brand=wally" "gi/underwriting/ncd/service/ws/GiNcdService?wsdl") [ "${ACTION}" == "Test Installation" ] && { echo "Running test of the installation"; TMPFILE=/tmp/wgetresult.$$ for i in "${URLS[@]}"; do echo wget --no-proxy http://${HOST}:${PORT}/${i} >$TMPFILE 2>&1 wget --no-proxy http://${HOST}:${PORT}/${i} >$TMPFILE 2>&1 RESULT=`grep '200 OK' $TMPFILE` echo RESULT is [ $RESULT ] if [ -z "$RESULT" ] ; then echo "ERROR: NCD ${i} did not start" exit 1 else echo "SUCCESS: NCD ${i} started OK" fi rm $TMPFILE done; exit 0; } Hacking Manual Scripts
  86. 86. [...] <configuration> <container> > mvn cargo:deploy <containerId>tomcat5x</containerId> <type>remote</type> </container> <configuration> <type>runtime</type> <properties> <cargo.remote.username>username</cargo.remote.username> <cargo.remote.password>password</cargo.remote.password> </properties> </configuration> <deployer> <type>remote</type> <deployables> <deployable> <groupId>war group id</groupId> <artifactId>war artifact id</artifactId> <type>war</type> <properties> <context>optional root context</context> </properties> <pingURL>opt. url to ping to know deployed</pingURL> <pingTimeout>opt. timeout (default 20000ms)</pingTimeout> </deployable> [...] Hacking RYO Cargo
  87. 87. Cucumber Feature Feature: Deployment In order to use the latest version of testApp A support officer should be able to Check that testApp.war has been deployed to the remote machine Scenario: User deploys Given app testApp When I deploy Then the testApp.war file should be deployed to remote Cucumber / Capistrano Step Definition [...] When /^I deploy$/ do Dir.chdir(@app_dir) do system "cap deploy:setup" system "cap deploy" end end Then /^ the testApp.war file should be deployed to remote$/ do [...] Hacking Deployment Tests
  88. 88. Monitoring Tools Advantages:  Visible status of assets  Pro-active maintenance Practices:  Environment monitoring  Process confirmation  Fault monitoring  Configuration monitoring  Security monitoring  Accounting monitoring Image http://www.monitoringsoftwareonline.com/files/QuickSiteImages/computer_plus_  Log monitoring Image http://www.kace.com/img/content/screenshots/1000/reporting-dashboard.png magnifying.jpg http://www.kace.com/img/content/screenshots/1000/reporting-dashboard.png
  89. 89. Monitoring The Manual Way Image http://upload.wikimedia.org/wikipedia/commons/5/52/Unix-process-list.png http://www.petri.co.il/images/virtual_vmware_files_explained_03.jpg http://trubke.net/_nw/1/17916.png
  90. 90. Example Monitoring Tools Open Source / Free:  Roll your own (scripts / CI server)  Cacti: http://www.cacti.net  Zabbix: http://www.zabbix.com  Nagios: http://www.nagios.org  Monit: http://mmonit.com/monit/ Commercial:  Splunk: http://www.splunk.com  IBM Tivoli: http://www.ibm.com/software/tivoli  Hyperic: http://www.hyperic.com  NetIQ: http://www.netiq.com
  91. 91. Monitoring Tool Maturity Beginner Intermediate Advanced Base level / centralised Roll your own basic Usage of monitoring monitoring on critical monitoring for tools at all levels components processes / logs / including application (eg. hardware, operating environments at level system, web server, application level database) Monitoring alert process Refactored logs Useful logs (logging (central location, Visual display of levels, log rolling, known redundant details monitoring tool / status support procedures) fixed / removed) Monitoring of advanced Ad-hoc usage of tools / Ad-hoc usage of tools / items (eg. configuration, procedures for procedures for accounting) reactive support proactive support
  92. 92. Tivoli
  93. 93. Cacti
  94. 94. Splunk
  95. 95. Hacking RYO Visual Monitoring
  96. 96. 2009-07-14 17:10:00,028 [ERROR,au.com.suncorp.ldocs.web.AbstractAction] Unhandled exception caught in action: null java.lang.NullPointerException at au.com.suncorp.ldocs.web.RetrieveSADSAction.retrieveRtf(RetrieveSADSAction.java:98) at au.com.suncorp.ldocs.web.RetrieveSADSAction.executePost(RetrieveSADSAction.java:59) at au.com.suncorp.ldocs.web.AbstractAction.performIt(AbstractAction.java:66) at au.com.suncorp.ldocs.web.AbstractAction.performPost(AbstractAction.java:60) at com.thoughtworks.web.AbstractAction.execute(AbstractAction.java:58) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at com.thoughtworks.web.struts.CustomRequestProcessor.process(CustomRequestProcessor.java:159) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6356) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118) at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635) at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170) 2009-07-14 17:10:00,028 [INFO ,com.thoughtworks.web.struts.CustomRequestProcessor] END REQUEST 2009-07-14 17:10:02,841 [INFO ,com.thoughtworks.web.struts.CustomRequestProcessor] Processing a 'GET' for path '/ChibaSADS' 2009-07-14 17:10:02,841 [INFO ,com.thoughtworks.web.struts.CustomRequestProcessor] BEGIN REQUEST 2009-07-14 17:10:02,841 [INFO ,com.thoughtworks.command.Command] BEGIN COMMAND au.com.suncorp.ldocs.command.DocumentGenerationServiceCommand 2009-07-14 17:10:02,856 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [START] FETCH EFFECTIVE TEMPLATE 2009-07-14 17:10:02,856 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [START] FETCH TEMPLATE VERSION 2009-07-14 17:10:03,544 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [END] FETCH TEMPLATE VERSION 2009-07-14 17:10:03,544 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [END] FETCH EFFECTIVE TEMPLATE 2009-07-14 17:10:03,544 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [START] DEEPEN THE QUERY Hacking Log Files
  97. 97. Wrap Up: Plan your tools & approach Image http://jenn98.com/bugs/images/bugs-elmer-daffy.jpg
  98. 98. Wrap Up: Manual first Image http://jellyflux.files.wordpress.com/2008/11/woman-surrounded-by-robots.jpg
  99. 99. Wrap Up: Refactor processes & tools Image http://33epua.blu.livefilestore.com/y1pF8NaSRUp9Ge4uyvRJLXucalRXqNYGecfm2RUe_VN8Es7rSSe7N- WaQdBnHbgYc8jAr3O_NiZ_P4ZMzhh9vo7Ag/Project2.jpg
  100. 100. Wrap Up: Learn from retrospectives Image http://www.dilbert.com
  101. 101. Wrap Up: Eliminate waste Image http://www.cartoonstudio.co.uk/images/kmeters/ABBwaste.jpg
  102. 102. Wrap Up: Tools Maturity Beginner Intermediate Advanced Collaboration Storycards & Deployment iteration Development tools management Monitoring Testing Development environments Continuous integration
  103. 103. Wrap Up: Think like Macgyver Image http://jira.atlassian.com/secure/attachment/16943/macgyver.gif
  104. 104. Wrap Up: Act like an A-Team Image http://www.popartuk.com/g/l/lgpp31670+i-love-it-when-a-plan-comes-together-weenicons-a-team-poster.jpg
  105. 105. Want More Information? Craig Smith http://www.suncorp.com.au http://www.agileacademy.com.au craig.smith@suncorp.com.au @smithcdau Dr. Paul King http://www.asert.com.au paulk@asert.com.au @paulk_asert Download this presentation at: http://www.agile2009.org/node/2840 http://www.agileacademy.com.au/knowledgehub/downloa ds
  106. 106. Acknowledgments Suncorp is one of Australia and New Zealand's largest diversified financial services providers, supplying banking, insurance and wealth management products to around 7 million customers through well- established and recognised brands such as AAMI, Australian Pensioners Insurance Agency, Shannons, Vero, Asteron and Tyndall, as well as Suncorp and GIO. Today, Suncorp is Australia's fifth largest bank and second largest domestic general insurance group, with over 16,000 staff. Suncorp has representation in 450 offices, branches and agencies throughout Australia and New Zealand. ASERT is one of Australia’s leading suppliers of development services, mentoring and training in Agile, Web Services, Web Applications, Java, Groovy and Grails.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×