Agile Engineering Environment (Agile Tour 2009 Chengdu)
An Agile Engineering Environment
(in 59 minutes or less)
October 24, 2009
Presented by: Vernon Stinebaker ( )
Agenda
Ground rules
Purpose and expected outcomes
About the presenter
An agile engineering environment
Summary
Q&A
2
Ground Rules
Mute your cell phone
Participate – ask and answer questions
Do Don’t
3
Purpose and expected outcomes
Purpose:
– To describe an agile engineering environment and share some
options for establishing such an environment
Outcomes:
– Understand many of the key components that can be used to
establish an agile engineering environment
– Gain exposure to various tools which can be used to build out an
agile engineering environment
– Hopefully everyone will walk away with knowledge of at least one
new tool (that you can go back and think about putting into use
on Monday)
About Me
Vernon Stinebaker (
http://www.linkedin.com/in/vernonstinebaker
– Director of Technology/Principal Architect
– 20+ years software development and process experience
• CMMI, SDLC/waterfall, and agile methodologies
– Certified ScrumMaster/Certified Scrum Practitioner
– 9+ years experience with Feature Driven Development
– Founding member of the open source FDD Tools project
5
About Perficient
Established presence in Hangzhou in 2004
150 people in Hangzhou/1500 across Perficient
Early adapter of agile methodologies
17 offices in the US
Public company (NASDAQ: PRFT)
20 CSMs in China
CMMI Level 5 using agile methodology
Track record of success delivering distributed projects
using agile
6
Today’s Focus
Establishing and Agile Engineering Environment
7
Agile Engineering Environment
What comprises an agile engineering environment?
– The environment itself
• Open environment -- bring your screwdriver
8
Agile Engineering Environment
What comprises an agile engineering environment?
– The environment itself
• Open environment -- bring your screwdriver
• No walls, open, whiteboards
8
Agile Engineering Environment
What comprises an agile engineering environment?
– The environment itself
• Open environment -- bring your screwdriver
• No walls, open, whiteboards
• Open minds/open culture
8
Agile Engineering Environment
What comprises an agile engineering environment?
– The environment itself
• Open environment -- bring your screwdriver
• No walls, open, whiteboards
• Open minds/open culture
– Tools
8
Agile Engineering Environment
What comprises an agile engineering environment?
– The environment itself
• Open environment -- bring your screwdriver
• No walls, open, whiteboards
• Open minds/open culture
– Tools
• This is what we’ll focus on today
8
Agile Engineering Environment
What comprises an agile engineering environment?
– The environment itself
• Open environment -- bring your screwdriver
• No walls, open, whiteboards
• Open minds/open culture
– Tools
• This is what we’ll focus on today
• What do you use?
8
First things first
If you have a chance to do so, start off right
If you don’t have a chance to start right, set a plan to
make things right
9
Pieces of the puzzle
Hudson
– Simple, single WAR (JAR)
installation
– Up and running in one
command
– Excellent plug-in support
Co
ntin – Advanced features
u
Inte ous Not
gra the only option
tion
11
Pieces of the puzzle
Mercurial
– Distributed version control
– Works well on-the-go and with distributed teams
Ver
sion
Co
ntr
ol
Not the only option
12
Pieces of the puzzle
IDE
NetBeans
– Strong support for a variety of languages
– Excellent plug-in support for other components presented
– Looks great on the Mac :-)
Not the only option
13
Pieces of the puzzle
xUnit
Tes – The granddaddy of Unit Testing
t
Fra ing – Great IDE support
me
wo
rks Fit/Fitnesse
– The granddaddy of Functional
Testing
Selenium
– Solid web-UI testing tool
– Recording/scripting capabilities
Not the only options
14
Pieces of the puzzle
Review Board
– Web based code review
– Scalable
– Works well for distributed Teams
Not the only option
Co
de
Rev
iew
15
Pieces of the puzzle
Sonar
– Integrates numerous open source projects
– Excellent dashboard
Not the only option
Co
de
Qu
alit
y
16
Putting it all together
Tes
t
Fra ing IDE
me
wo
rks
Co Ver
ntin s Co
u ion de
Inte ous Co Rev
gra ntr iew
tion ol
Co
de
Qu
alit
y
17
More pieces?
Req Tes
t
uire
me Fra ing IDE
nts me
wo
rks
Tes Co Ver
tC ntin s Co
Ma ase u ion de
nag Inte ous Co Rev
em gra ntr iew
ent tion o l
Co Proj Co
mm ect de
uni Qu
(W catio alit
iki) ns y
18
A deployment-time view
Organizational
Requirements
Management &
Defect Tracking
Developer's Desktop Workgroup/Team Organizational
DVCS DVCS DVCS
IDE
(Mercurial) (Mercurial) (Mercurial)
Web CI Web CI Web CI
Server (Hudson) Server (Hudson) Server (Hudson)
Quality Quality Quality
(Sonar) (Sonar) (Sonar)
19
Why this toolset?
Cross platform
High degree of integration/interoperability
Scalable
Supported/rapidly developing
Simple
– Require little or no configuration
– Can be started with just a single command
They ‘just work’
But don’t forget. There are other options!
20
A quick demo
Iftime permits
Script
– Mercurial
• sudo easy_install mercurial
– Download hudson.war
• nohup java -jar hudson.war &
• Verify and add plug-ins -- Mercurial and Sonar
– Download Sonar
• unzip, and change to root of unzipped archive
• ./bin/macosx-universal-32/sonar.sh start
– Download NetBeans, install and run
• Create simple Maven app
• Configure Hudson in NetBeans
• Kick off Hudson build
– Verify build in Hudson and review Sonar results
21