106
Agile Tool Hacking: Taking Your Agile Development Tools To The Next Level Craig Smith Suncorp Dr Paul King ASERT

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

Embed Size (px)

DESCRIPTION

 

Citation preview

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

Agile Tool Hacking: Taking Your Agile DevelopmentTools To The Next Level

Craig Smith

Suncorp

Dr Paul King

ASERT

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

Welcome

Overview

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

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

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

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

Image http://blog.theworkinggroup.ca/wp-content/uploads/2009/04/agile-manifesto1.gif

Agile Manifesto on Tools…

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

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

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

Refridgerators vs RadiatorsImage http://3.bp.blogspot.com/_qUcuMWvDsac/SLP8WaIAawI/AAAAAAAAA7U/OC_RU-BlB0M/s400/IMG_2682.jpg

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

Image Beck, Kent – Extreme Programming Explained: Embrace Change

XP Practices over Tooling

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

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

Scrum Practices over Tooling

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

Collaboration

Concept Initiate Deliver Deploy

Storycards & iteration management

Development environments

Development tools

Testing

Continuous integration

Deployment

MonitoringImage http://3.bp.blogspot.com/_H0iqHTCqRyo/RfQyLHm8POI/AAAAAAAAABQ/-ZGsV-p-aVs/s400/evolution.jpg

Tools Usage Timeline

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

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

ToolsHacking

ThinkSimple!

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

Image http://www.collider.com/uploads/imageGallery/A_Team/the_a-team_nbc_tv_show_image__1_.jpg

ToolsHacking

GreatTeam

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

Images http://www.concordion.org/image/example/online-shop/StoryCard.png

http://www.ugleah.com/img/2009/burndown_chart.gif

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

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

Images http://www.selfishprogramming.com/wp-content/uploads/2008/10/building-kanban-board.jpg

http://ssmirnov.files.wordpress.com/2009/02/still-life.jpg

Stories&

Iterations

The ManualWay

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

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 + GreenHopperhttp://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

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

Beginner

Start with a

manual story wall

(index cards, markers

& stickies)

Keep manual BVC’s

& burn charts

Breakdown stories &

estimates (INVEST)

Intermediate

Introduce tool if:

Team members / stakeholders remote

Reporting requirements

Easier stats / BVC

Keep a manual wall

of relevant level

Manual planning poker

Advanced

Connect tools eg.

IDE, VCS

Extend tool with

0wn / community /

commercial plugins

Electronic estimation

& planning

Iteration Tool Maturity

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

Agilo

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

Mingle

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

Jira + GreenHopper

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

Hacking Jira: know the features

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

Hacking tool integration

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

Hacking planning poker

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

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

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

Collaboration

The ManualWay

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

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

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

Beginner

Basic agile / XP / Scrum:Daily scrum / standup,

retrospective,kickoff / demo /

showcase

Basic wiki / shared document environment

Digital camera /whiteboard

Intermediate

Combined kickoff /retrospective for

small projects

Advanced XP techniques: pair

programming, teamownership

Intranet / CMScapability

Wiki gardening

Advanced

Connect tools eg.

iteration management,build tools

Extend tool with

0wn / community /

commercial plugins

Distributedcollaboration

Collaboration Tool Maturity

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

Confluence

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

SharePoint

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

Eclipse DocShare

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

IntelliJ Code Consultant

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

Hacking Wiki + Iteration Mgmt

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

Hacking Distributed Retros

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

Hacking Intranets (Atrium)

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

Development

Environments

Developers:

Pragmatic programmers

Continuous improvement

Efficient / repeatable

Outcomes:

Co-location

Productive hardware

Consistent environments

Scripted machine builds

Environment testingImage http://imgs.xkcd.com/comics/compiling.png

http://api.ning.com/files/mc-

mk7rMBrQx2Jpql3boKhn9N2cHmubcFN6hyDrikT8FIz-

2EhEwcbpzSWjqQ8VdjxBVgOTgSs31-

sL2oBoifORkpQ680Iu0/appleiphonesdklogo.jpg

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

DevelopmentEnvironments

The ManualWay

Image http://www.xtrasens.com/support/manual/install%20flow.png

http://img.dailymail.co.uk/i/pix/2007/07_01/hammerDM0607_468x584.jpg

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

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 optionshttp://code.google.com/appengine/

http://aws.amazon.com/ec2/http://github.com

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

Beginner

Instructions for

building environments

manually / consistently

Plan for pragmaticprogrammer techniques

Manual tests forchecking environments

Co-located team

Intermediate

Automated builds forapplication environments

Automated environment

tests on demand

Required hardware / software

Physical environmentrenovations

Advanced

Automated build for

developer machines

Testers, team membersusing similar environment

Consider cloudcomputing opportunities

Zero cubicles, pairing stations, breakout /

team area

Environment Tool Maturity

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

VMWare

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

Google App Engine

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

Physical Environment

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

Hacking Dev. Machine Builds

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

Hacking Corporate SOE

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

Development Tools

Developers:

Craftsmanship / clean code

Quality non-negotiable

Tool Types:

Integrated DevelopmentEnvironment (IDE)

Database SQL clients

Version control

Web Service / SOAP tools

File & operating system tools

MetricsImage http://www.cornetdesign.com/images/bowling_all2s.jpg

http://cybernetnews.com/wp-content/uploads/2007/07/hacker.jpg

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

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

DevelopmentEnvironments

The ManualWay

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

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

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

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

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

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

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

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

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

Beginner

Usage of IDE with teamagreed setup

Awareness / use of basic tools / metrics

Use of version control

Team understanding ofquality

Intermediate

Mastery of IDE keystrokes / features /

plugins

Team commitment toreact to metrics output

Usage of advancedversion control features

Quality non-negotiable /

clean code

Advanced

Mastery of advanced IDE features / plugin

development

Usage of advanced

metrics tools & features

Usage of distributedversion control

Advanced clean code /software craftsman

Development Tool Maturity

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

Image http://alagad.com/upload/intellij_tests_21.gif

IntelliJ

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

Clover

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

Image http://www.inf.unisi.ch/phd/wettel/codecity-wof.html

Code City

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

Hacking IDE Plugins

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

Hacking RYO IDE Plugins

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

• d

Hacking VCS: FishEye/SVNStat

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

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

3uqE0/s320/swisstoolcsopen.jpg

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

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

Image http://tell.fll.purdue.edu/JapanProj/FLClipart/Verbs/understand.gif

http://thedailystandup.com/wp-content/uploads/2008/12/istock_000004776276xsmall.jpg

Testing

The ManualWay

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

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

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

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/

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

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/

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

Beginner

Automated developerunit tests

Some automatedacceptance / functional

tests

Developers / testersworking together pluscombined definition of

done

Usage of GUI test robots

Intermediate

Test driven development

BDD / mock testing

Automated regressiontests – new / legacy

All tests run in CI build(unit / acceptance /

functional)

Usage of expressive /DSL testing

Advanced

100% test coverage(unit / acceptance /

functional)

Developer / testerpair programming

Automated performancetesting with functional

test reuse

Risk based testing

Based on Elements of Enterprise CIhttp://www.anthillpro.com/html/resources/elements_of_ci_A4.pdf

Testing Tool Maturity

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

Quality Center

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

Selenium

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

NUnit

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

Hacking JMeter

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

Hacking Performance Tests

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

Hacking Expressive Tests

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

Image http://www.michaelfransen.com/wp-

content/uploads/2008/02/wheresthebuild-small.jpg

Continuous Integration

Advantages:

Early warning

Consistent test / integrate

Centrepiece for quality

Practices:

Version control / automatedbuild / automated test

Commit early & often

Fast feedback

Visible / audible results

Artefacts

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

Image http://farm4.static.flickr.com/3122/3121915858_06a783e594.jpg?v=0

http://www.michaelfransen.com/wp-content/uploads/2008/02/wheresthebuild-small.jpg

ContinuousIntegration

The ManualWay

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

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

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

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

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

Beginner

Implementation ofcore build steps

Frequent check-in toversion control system

Adequate hardwareto run build

Team commitment tofixing broken builds

Intermediate

Implementation ofcontinuous integrationserver to auto-run build

Dedicated buildmachine

Advanced / refactored /multiple builds

Broken build alerts &team procedures

Advanced

Usage of build clusters /slaves / VM snapshots

Dependency management& internal repository

High frequency check-into version control

system

Builds for environment /project impediments

Continuous Integration Maturity

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

Hudson

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

Hudson Plugins

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

Nexus

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

Hacking CI Data Migration

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

Hacking Hudson / Scoreboard

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

Hudson Swarms

> java -jar swarm-client-jar-with-

dependencies.jar

Plugin Growth

Image http://weblogs.java.net/blog/kohsuke

Jira Plugin

Amazon EC2 Plugin

Continuous Integration Game Plugin

Hacking Hudson Plugins

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

Image http://www.serena.com/images/products/dimensions-deploy/deploy-

illustration2-286-23.jpg

http://ciadvantage.com/cs/photos/storage/ctd.gif

Deployment Tools

Advantages:

Repeatable from developmentto Production

No “fight night” surprises

Practices:

Automated deployment script

Environment management

Environment tokens

Automated & manual steps

Smoke test / confirmation

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

Image http://www.thekua.com/rant/wp-content/uploads/2006/03/RetrospectiveTimelineEvents.jpg

http://farm4.static.flickr.com/3645/3340381990_fa9f004e5b.jpg

Deployment

The ManualWay

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

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

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

Beginner

Documented manualdeployment & rollback

process / checklist

Documented manualsmoke tests

Automated helperscripts

Intermediate

Fully scripteddeployment & rollback

where applicable

Roll your own basicdeployment to testenvironments using

CI server

Repeatable build for“go-live” processes

Advanced

Usage of deploymenttool (roll your own /

open source / commercial)

Repeatable deploymentto all environments

(tokenized)

Automated productiondeployment (push

button or automatic)

Based on Elements of Enterprise CIhttp://www.anthillpro.com/html/resources/elements_of_ci_A4.pdf

Deployment Tool Maturity

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

Tableaux

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

Tableaux Tokens

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

Tableaux Deployment

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

#/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

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

[...]

<configuration>

<container>

<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>

[...]

> mvn cargo:deploy

Hacking RYO Cargo

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

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 Feature

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

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

Image

http://www.monitoringsoftwareonline.com/files/QuickSiteImages/computer_plus_

magnifying.jpg

http://www.kace.com/img/content/screenshots/1000/reporting-dashboard.png

Monitoring Tools

Advantages:

Visible status of assets

Pro-active maintenance

Practices:

Environment monitoring

Process confirmation

Fault monitoring

Configuration monitoring

Security monitoring

Accounting monitoring

Log monitoringImage http://www.kace.com/img/content/screenshots/1000/reporting-dashboard.png

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

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

Monitoring

The ManualWay

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

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

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

Beginner

Base level / centralisedmonitoring on critical

components(eg. hardware, operating

system, web server,database)

Useful logs (logginglevels, log rolling, known

support procedures)

Ad-hoc usage of tools / procedures for

reactive support

Intermediate

Roll your own basicmonitoring for

processes / logs /environments atapplication level

Refactored logs(central location, redundant detailsfixed / removed)

Ad-hoc usage of tools / procedures for

proactive support

Advanced

Usage of monitoringtools at all levels

including applicationlevel

Monitoring alert process

Visual display ofmonitoring tool / status

Monitoring of advanceditems (eg. configuration,

accounting)

Monitoring Tool Maturity

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

Tivoli

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

Cacti

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

Splunk

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

Hacking RYO Visual Monitoring

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

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

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

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

Wrap Up:

Plan your tools &

approach

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

Image http://jellyflux.files.wordpress.com/2008/11/woman-surrounded-by-robots.jpg

Wrap Up:

Manual first

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

Image http://33epua.blu.livefilestore.com/y1pF8NaSRUp9Ge4uyvRJLXucalRXqNYGecfm2RUe_VN8Es7rSSe7N-

WaQdBnHbgYc8jAr3O_NiZ_P4ZMzhh9vo7Ag/Project2.jpg

Wrap Up:

Refactorprocesses &

tools

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

Image http://www.dilbert.com

Wrap Up:

Learn from retrospectives

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

Image http://www.cartoonstudio.co.uk/images/kmeters/ABBwaste.jpg

Wrap Up:

Eliminate waste

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

Beginner

Collaboration

Development tools

Testing

Intermediate

Storycards & iteration

management

Development environments

Continuous integration

Advanced

Deployment

Monitoring

Wrap Up: Tools Maturity

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

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

Wrap Up:

Think like Macgyver

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

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

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

Want More Information?

Craig Smithhttp://www.suncorp.com.au

http://www.agileacademy.com.au

[email protected]@smithcdau

Dr. Paul Kinghttp://[email protected]@paulk_asert

Download this presentation at:http://www.agile2009.org/node/2840http://www.agileacademy.com.au/knowledgehub/downloads

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

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.