Craig Smith & Paul King   Agile Tool Hacking   Taking Your Agile Development Tools To The Next Level
Upcoming SlideShare
Loading in...5

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






Total Views
Views on SlideShare
Embed Views



4 Embeds 35 18 15 1 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

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

  • Agile Tool Hacking: Taking Your Agile Development Tools To The Next Level Craig Smith Dr Paul King Suncorp ASERT
  • Overview Welcome Images: I
  • 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:
  • Image Agile Manifesto on Tools…
  • Image Refridgerators vs Radiators
  • Image Refridgerators vs Radiators
  • Image Beck, Kent – Extreme Programming Explained: Embrace Change XP Practices over Tooling
  • Image Scrum Practices over Tooling
  • Concept  Initiate  Deliver  Deploy Storycards & iteration management Collaboration Development environments Development tools Testing Continuous integration Deployment Monitoring Image Tools Usage Timeline
  • Tools Hacking Think Simple! Image
  • Tools Hacking Great Team Image
  • 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
  • Stories & Iterations The Manual Way Images
  • Example Storycards & iteration management tools Open Source / Free:  XPlanner:  Agilefant:  IceScrum:  Agilo: Commercial:  Jira + GreenHopper  Mingle: mingle-agile-project-management  VersionOne:  Rally:
  • 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
  • Agilo
  • Mingle
  • Jira + GreenHopper
  • Hacking Jira: know the features
  • Hacking tool integration
  • Hacking planning poker
  • 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
  • Collaboration The Manual Way
  • Example Collaboration Tools Open Source / Free:  MediaWiki:  Open Atrium:  Google Docs:  Skype:  Eclipse Communications Framework (D0cShare): Commercial:  Confluence: software/confluence/  SharePoint / Office Communicator:  PBWorks:
  • 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
  • Confluence
  • SharePoint
  • Eclipse DocShare
  • IntelliJ Code Consultant
  • Hacking Wiki + Iteration Mgmt
  • Hacking Distributed Retros
  • Hacking Intranets (Atrium)
  • Development Environments Developers:  Pragmatic programmers  Continuous improvement  Efficient / repeatable Outcomes:  Co-location  Productive hardware  Consistent environments  Scripted machine builds Image  Environment testing mk7rMBrQx2Jpql3boKhn9N2cHmubcFN6hyDrikT8FIz- 2EhEwcbpzSWjqQ8VdjxBVgOTgSs31- sL2oBoifORkpQ680Iu0/appleiphonesdklogo.jpg
  • Development Environments The Manual Way Image
  • Example Environment Tools Open Source / Free:  VirtualBox:  NSIS:  Linux distributions (various) Commercial:  VMWare:  Cloud computing options
  • 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
  • VMWare
  • Google App Engine
  • Physical Environment
  • Hacking Dev. Machine Builds
  • Hacking Corporate SOE
  • 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
  • Development Environments The Manual Way Image h/06_Red_Green_Refactor.JPG
  • 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:
  • 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
  • Example Development Tools Open Source / Free: Metrics  Checkstyle:  StyleCop: sourceanalysis  FindBugs:  PMD:  Cobertura:  JDepend:  Panopticode:  CodeCity: codecity.html
  • 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:
  • 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
  • Image IntelliJ
  • Clover
  • Image Code City
  • Hacking IDE Plugins
  • Hacking RYO IDE Plugins
  • • d Hacking VCS: FishEye/SVNStat
  • 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 peter_schaub/WindowsLiveWriter/VSTSRangersProjectsWCFLoadTestToo.0Sh ips_7D80/CLIPART_OF_13165_SM_2.jpg  Reporting 3uqE0/s320/swisstoolcsopen.jpg
  • Testing The Manual Way Image
  • 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:
  • Example Testing Tools Open Source / Free: Test Execution / Record / Log / UI  Selenium:  Watir:  Tellurium:  WebTest: Performance Test  JMeter:  Grinder: Test Management  Radi:  RTH:
  • 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:
  • 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
  • Quality Center
  • Selenium
  • NUnit
  • Hacking JMeter
  • Hacking Performance Tests
  • Hacking Expressive Tests
  • 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
  • Continuous Integration The Manual Way Image
  • Example Continuous Integration Tools Open Source / Free: Continuous Integration Servers  Hudson:  Cruise Control: Build Tools  Ant:  Nant:  Maven:  Gradle:
  • Example Continuous Integration Tools Open Source / Free : Dependency / Repositories  Nexus:  Archiva:  Ivy: Commercial:  Bamboo:  Cruise: cruise-continuous-integration  TeamCity:
  • 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
  • Hudson
  • Hudson Plugins
  • Nexus
  • Hacking CI Data Migration
  • Hacking Hudson / Scoreboard
  • 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
  • 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
  • Deployment The Manual Way Image
  • 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
  • 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
  • Tableaux
  • Tableaux Tokens
  • Tableaux Deployment
  • #/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
  • [...] <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
  • 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
  • Monitoring Tools Advantages:  Visible status of assets  Pro-active maintenance Practices:  Environment monitoring  Process confirmation  Fault monitoring  Configuration monitoring  Security monitoring  Accounting monitoring Image  Log monitoring Image magnifying.jpg
  • Monitoring The Manual Way Image
  • Example Monitoring Tools Open Source / Free:  Roll your own (scripts / CI server)  Cacti:  Zabbix:  Nagios:  Monit: Commercial:  Splunk:  IBM Tivoli:  Hyperic:  NetIQ:
  • 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
  • Tivoli
  • Cacti
  • Splunk
  • Hacking RYO Visual Monitoring
  • 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
  • Wrap Up: Plan your tools & approach Image
  • Wrap Up: Manual first Image
  • Wrap Up: Refactor processes & tools Image WaQdBnHbgYc8jAr3O_NiZ_P4ZMzhh9vo7Ag/Project2.jpg
  • Wrap Up: Learn from retrospectives Image
  • Wrap Up: Eliminate waste Image
  • Wrap Up: Tools Maturity Beginner Intermediate Advanced Collaboration Storycards & Deployment iteration Development tools management Monitoring Testing Development environments Continuous integration
  • Wrap Up: Think like Macgyver Image
  • Wrap Up: Act like an A-Team Image
  • Want More Information? Craig Smith @smithcdau Dr. Paul King @paulk_asert Download this presentation at: ds
  • 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.