Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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


Published on

Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level, presented by Craig Smith & Paul King at the Agile 2009 conference in Chicago

Published in: Technology
  • Best dissertation help you can get, thank god a friend suggested me ⇒⇒⇒ ⇐⇐⇐ otherwise I could have never completed my dissertation on time.
    Are you sure you want to  Yes  No
    Your message goes here
  • If we are speaking about saving time and money this site ⇒ ⇐ is going to be the best option!! I personally used lots of times and remain highly satisfied.
    Are you sure you want to  Yes  No
    Your message goes here
  • Hello! I do no use writing service very often, only when I really have problems. But this one, I like best of all. The team of writers operates very quickly. It's called ⇒ ⇐ Hope this helps!
    Are you sure you want to  Yes  No
    Your message goes here
  • You can try to use this service ⇒ ⇐ I have used it several times in college and was absolutely satisfied with the result.
    Are you sure you want to  Yes  No
    Your message goes here
  • Did you try ⇒ ⇐?. They know how to do an amazing essay, research papers or dissertations.
    Are you sure you want to  Yes  No
    Your message goes here

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

  1. Agile Tool Hacking: Taking Your Agile Development Tools To The Next Level Craig Smith Dr Paul King Suncorp ASERT
  2. Overview Welcome Images: I
  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:
  4. Image Agile Manifesto on Tools…
  5. Image Refridgerators vs Radiators
  6. Image Refridgerators vs Radiators
  7. Image Beck, Kent – Extreme Programming Explained: Embrace Change XP Practices over Tooling
  8. Image Scrum Practices over Tooling
  9. Concept  Initiate  Deliver  Deploy Storycards & iteration management Collaboration Development environments Development tools Testing Continuous integration Deployment Monitoring Image Tools Usage Timeline
  10. Tools Hacking Think Simple! Image
  11. Tools Hacking Great Team Image
  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 Images  Estimation
  13. Stories & Iterations The Manual Way Images
  14. Example Storycards & iteration management tools Open Source / Free:  XPlanner:  Agilefant:  IceScrum:  Agilo: Commercial:  Jira + GreenHopper  Mingle: mingle-agile-project-management  VersionOne:  Rally:
  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. Agilo
  17. Mingle
  18. Jira + GreenHopper
  19. Hacking Jira: know the features
  20. Hacking tool integration
  21. Hacking planning poker
  22. Collaboration Team:  Daily Scrum / Standup  Retrospective  Kickoff / Demo / Showcase  Collective team ownership  Pair Programming Output:  Project Documentation  Email / telephone / IM Images 2d9d-4525-8301-d40ad993e66f.jpg
  23. Collaboration The Manual Way
  24. Example Collaboration Tools Open Source / Free:  MediaWiki:  Open Atrium:  Google Docs:  Skype:  Eclipse Communications Framework (D0cShare): Commercial:  Confluence: software/confluence/  SharePoint / Office Communicator:  PBWorks:
  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. Confluence
  27. SharePoint
  28. Eclipse DocShare
  29. IntelliJ Code Consultant
  30. Hacking Wiki + Iteration Mgmt
  31. Hacking Distributed Retros
  32. Hacking Intranets (Atrium)
  33. Development Environments Developers:  Pragmatic programmers  Continuous improvement  Efficient / repeatable Outcomes:  Co-location  Productive hardware  Consistent environments Image  Scripted machine builds  Environment testing mk7rMBrQx2Jpql3boKhn9N2cHmubcFN6hyDrikT8FIz- 2EhEwcbpzSWjqQ8VdjxBVgOTgSs31- sL2oBoifORkpQ680Iu0/appleiphonesdklogo.jpg
  34. Development Environments The Manual Way Image
  35. Example Environment Tools Open Source / Free:  VirtualBox:  NSIS:  Linux distributions (various) Commercial:  VMWare:  Cloud computing options
  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. VMWare
  38. Google App Engine
  39. Physical Environment
  40. Hacking Dev. Machine Builds
  41. Hacking Corporate SOE
  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  Metrics
  43. Development Environments The Manual Way Image h/06_Red_Green_Refactor.JPG
  44. Example Development Tools Open Source / Free: IDE’s (multiple language support)  Eclipse:  NetBeans:  SharpDevelop:  RadRails:  Visual Studio Express: Database Clients  DBVisualizer:  SQuirreL: Web Service / SOAP Tools  soapUI:
  45. Example Development Tools Open Source / Free: Version Control Systems  Subversion:  Git:  Bazaar:  Mercurial: File & operating system tools  PowerShell: windowsserver2003/technologies/ management/powershell/default.mspx fish:  Cygwin:  Miscellaneous OS tools
  46. Example Development Tools Open Source / Free: Metrics  Checkstyle:  StyleCop: sourceanalysis  FindBugs:  PMD:  Cobertura:  JDepend:  Panopticode:  CodeCity: codecity.html
  47. Example Development Tools Commercial: IDE’s (multiple language support)  IntelliJ IDEA / RubyMine / ReSharper:  Visual Studio: Web Service / SOAP Tools  Oxygen: Metrics  Clover: clover  Simian: Profilers  YourKit:
  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. Image IntelliJ
  50. Clover
  51. Image Code City
  52. Hacking IDE Plugins
  53. Hacking RYO IDE Plugins
  54. • d Hacking VCS: FishEye/SVNStat
  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  Reporting Image peter_schaub/WindowsLiveWriter/VSTSRangersProjectsWCFLoadTestToo.0Sh ips_7D80/CLIPART_OF_13165_SM_2.jpg 3uqE0/s320/swisstoolcsopen.jpg
  56. Testing The Manual Way Image
  57. Example Testing Tools Open Source / Free: Test Specification – xUnit Tools  JUnit:  Nunit: Test Specification Tools – Expressive/BDD  Spock:  FitNesse:  Concordion:  Cucumber:  easyb: Test Specification Tools – Mocking  NMock:  EasyMock:
  58. Example Testing Tools Open Source / Free: Test Execution / Record / Log / UI  Selenium:  Watir:  Tellurium:  WebTest: Performance Test  JMeter:  Grinder: Test Management  Radi:  RTH:
  59. Example Testing Tools Commercial: Test Execution / Record / Log / UI  Twist: twist-agile-test-automation  GreenPepper:  Squish: Integrated  HP Quality Center / QTP / LoadRunner: display/main/hpms_home.jsp ?zn=bto&cp=1_4011_100__  SpiraTest:
  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
  61. Quality Center
  62. Selenium
  63. NUnit
  64. Hacking JMeter
  65. Hacking Performance Tests
  66. Hacking Expressive Tests
  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 content/uploads/2008/02/wheresthebuild-small.jpg
  68. Continuous Integration The Manual Way Image
  69. Example Continuous Integration Tools Open Source / Free: Continuous Integration Servers  Hudson:  Cruise Control: Build Tools  Ant:  Nant:  Maven:  Gradle:
  70. Example Continuous Integration Tools Open Source / Free : Dependency / Repositories  Nexus:  Archiva:  Ivy: Commercial:  Bamboo:  Cruise: cruise-continuous-integration  TeamCity:
  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. Hudson
  73. Hudson Plugins
  74. Nexus
  75. Hacking CI Data Migration
  76. Hacking Hudson / Scoreboard
  77. Hudson Swarms Plugin Growth > java -jar swarm-client- jar-with-dependencies.jar Continuous Integration Game Plugin Jira Plugin Amazon EC2 Plugin Image Hacking Hudson Plugins
  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 illustration2-286-23.jpg
  79. Deployment The Manual Way Image
  80. Example Deployment Tools Open Source / Free:  Roll your own (scripts / build / CI server)  Cargo:  Capistrano:  SmartFrog: Commercial:  Tableaux:  IBM Rational Suite:  BMC BladeLogic: products/offering/bmc-bladelogic-application- release-manager.html
  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
  82. Tableaux
  83. Tableaux Tokens
  84. Tableaux Deployment
  85. #/bin/bash SCRIPT_DIR=`dirname $0` . $SCRIPT_DIR/ 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. [...] <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. 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. Monitoring Tools Advantages:  Visible status of assets  Pro-active maintenance Practices:  Environment monitoring  Process confirmation  Fault monitoring  Configuration monitoring  Security monitoring  Accounting monitoring Image magnifying.jpg  Log monitoring Image
  89. Monitoring The Manual Way Image
  90. Example Monitoring Tools Open Source / Free:  Roll your own (scripts / CI server)  Cacti:  Zabbix:  Nagios:  Monit: Commercial:  Splunk:  IBM Tivoli:  Hyperic:  NetIQ:
  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. Tivoli
  93. Cacti
  94. Splunk
  95. Hacking RYO Visual Monitoring
  96. 2009-07-14 17:10:00,028 [ERROR,] Unhandled exception caught in action: null java.lang.NullPointerException at at at at at com.thoughtworks.web.AbstractAction.execute( at org.apache.struts.action.RequestProcessor.processActionPerform( at com.thoughtworks.web.struts.CustomRequestProcessor.process( at org.apache.struts.action.ActionServlet.process( at org.apache.struts.action.ActionServlet.doPost( at javax.servlet.http.HttpServlet.service( at javax.servlet.http.HttpServlet.service( at weblogic.servlet.internal.ServletStubImpl$ at weblogic.servlet.internal.ServletStubImpl.invokeServlet( at weblogic.servlet.internal.TailFilter.doFilter( at weblogic.servlet.internal.FilterChainImpl.doFilter( at at org.springframework.web.filter.OncePerRequestFilter.doFilter( at weblogic.servlet.internal.FilterChainImpl.doFilter( at weblogic.servlet.internal.WebAppServletContext$ at at at weblogic.servlet.internal.WebAppServletContext.invokeServlet( at weblogic.servlet.internal.ServletRequestImpl.execute( at weblogic.kernel.ExecuteThread.execute( at 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 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. Wrap Up: Plan your tools & approach Image
  98. Wrap Up: Manual first Image
  99. Wrap Up: Refactor processes & tools Image WaQdBnHbgYc8jAr3O_NiZ_P4ZMzhh9vo7Ag/Project2.jpg
  100. Wrap Up: Learn from retrospectives Image
  101. Wrap Up: Eliminate waste Image
  102. Wrap Up: Tools Maturity Beginner Intermediate Advanced Collaboration Storycards & Deployment iteration Development tools management Monitoring Testing Development environments Continuous integration
  103. Wrap Up: Think like Macgyver Image
  104. Wrap Up: Act like an A- Team Image
  105. Want More Information? Craig Smith @smithcdau Dr. Paul King @paulk_asert Download this presentation at:
  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.