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

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

Embed Size (px)

DESCRIPTION

Agile Tool Hacking: Taking Your Agile Development Tools To The Next Level presented by Craig Smith at the September Brisbane Scrum User Group meeting.

Citation preview

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

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

Craig SmithSuncorp

Dr Paul KingASERT

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

Welcome

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

According to theCompact OxfordDictionary:

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: 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: 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: 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: 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: 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: 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: 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: 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: 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 trackingIteration / Release / Project

tracking: Prioritised backlog Iteration story wall Burn-up & burn down charts Metrics / Velocity Estimation

Page 13: 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 Manual

Way

Page 14: 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 + 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

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

Beginner

Start with amanual story wall

(index cards, markers& stickies)

Keep manual BVC’s& burn charts

Breakdown stories &estimates (INVEST)

Intermediate

Introduce tool if:Team members /

stakeholders remoteReporting requirements

Easier stats / BVC

Keep a manual wallof relevant level

Manual planning poker

Advanced

Connect tools eg. IDE, VCS

Extend tool with0wn / community /commercial plugins

Electronic estimation& planning

Iteration Tool Maturity

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

Agilo

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

Mingle

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

Jira + GreenHopper

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

Hacking Jira: know the features

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

Hacking tool integration

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

Hacking planning poker

Page 22: 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 ProgrammingOutput: 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: Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level

Collaboration

The ManualWay

Page 24: 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: 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 with0wn / community /commercial plugins

Distributedcollaboration

Collaboration Tool Maturity

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

Confluence

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

SharePoint

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

Eclipse DocShare

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

IntelliJ Code Consultant

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

Hacking Wiki + Iteration Mgmt

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

Hacking Distributed Retros

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

Hacking Intranets (Atrium)

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

DevelopmentEnvironments

Developers: Pragmatic programmers Continuous improvement Efficient / repeatableOutcomes: Co-location Productive hardware Consistent environments Scripted machine builds Environment testing

Image http://imgs.xkcd.com/comics/compiling.png

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

mk7rMBrQx2Jpql3boKhn9N2cHmubcFN6hyDrikT8FIz-

2EhEwcbpzSWjqQ8VdjxBVgOTgSs31-

sL2oBoifORkpQ680Iu0/appleiphonesdklogo.jpg

Page 34: 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: 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.orghttp://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: Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level

Beginner

Instructions forbuilding environmentsmanually / consistently

Plan for pragmaticprogrammer techniques

Manual tests forchecking environments

Co-located team

Intermediate

Automated builds forapplication environments

Automated environmenttests on demand

Required hardware / software

Physical environmentrenovations

Advanced

Automated build fordeveloper machines

Testers, team membersusing similar environment

Consider cloudcomputing opportunities

Zero cubicles, pairing stations, breakout /

team area

Environment Tool Maturity

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

VMWare

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

Google App Engine

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

Physical Environment

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

Hacking Dev. Machine Builds

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

Hacking Corporate SOE

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

Development Tools

Developers: Craftsmanship / clean code Quality non-negotiableTool Types: Integrated Development

Environment (IDE) Database SQL clients Version control Web Service / SOAP tools File & operating system tools Metrics

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

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

Page 43: 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: 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: 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: 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: 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/visualstudioWeb 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: 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 advancedmetrics tools & features

Usage of distributedversion control

Advanced clean code /software craftsman

Development Tool Maturity

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

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

IntelliJ

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

Clover

Page 51: 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: Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level

Hacking IDE Plugins

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

Hacking RYO IDE Plugins

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

• d

Hacking VCS: FishEye/SVNStat

Page 55: 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 gapsTool types: Test specification generation Test execution / record / log Test user interfaces Performance test Test / incident management Reporting

Page 56: 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: 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: 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: 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: 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: Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level

Quality Center

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

Selenium

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

NUnit

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

Hacking JMeter

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

Hacking Performance Tests

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

Hacking Expressive Tests

Page 67: 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 qualityPractices: Version control / automated

build / automated test Commit early & often Fast feedback Visible / audible results Artefacts

Page 68: 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: 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: 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: 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: Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level

Hudson

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

Hudson Plugins

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

Nexus

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

Hacking CI Data Migration

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

Hacking Hudson / Scoreboard

Page 77: 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: 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 development

to Production No “fight night” surprises Practices: Automated deployment script Environment management Environment tokens Automated & manual steps Smoke test / confirmation

Page 79: 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: 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: 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: Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level

Tableaux

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

Tableaux Tokens

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

Tableaux Deployment

Page 85: 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: 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: 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: 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 monitoring

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

Page 89: 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: 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: 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: Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level

Tivoli

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

Cacti

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

Splunk

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

Hacking RYO Visual Monitoring

Page 96: 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: 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: 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: 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: Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level

Image http://www.dilbert.com

Wrap Up:

Learn from retrospectives

Page 101: 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: 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: 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: 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: Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level

Want More Information?

Craig Smithhttp://www.suncorp.com.auhttp://[email protected]@smithcdau

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

Download this presentation at:http://www.slideshare.net/smithcdau

Page 106: 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.