Agile Release Maturity
Investing in reliable Software Release Management
This webinar is worth 1 PDU
Hosted by cPrime
Today’s PresenterKendrick Burson
Software Engineer since 1997
Agile Development Coach
CI systems consultant
Talk about what?
Agile Release MaturityThis is not a sales presentation for any specific tool, language or framework
It is a selection of practices that can be applied to most software platforms
It is Based on personal experience on various projects with tools used in Java ,C# and C++
This webinar is worth 1 PDU
User Poll 1If you are working on an Agile project, what agile methodology are you using?
1) Not using Agile
2) Scrum
3) eXtreme Programming
4) Feature Driven Development
5) Other
Principles behind the Agile ManifestoWe follow these principles:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Working software is the primary measure of progress.
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Continuous attention to technical excellence and good design enhances agility.
Simplicity--the art of maximizing the amount of work not done--is essential.
The best architectures, requirements, and designs emerge from self-organizing teams.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Release Management ?
The integration and flow of development, testing, deployment, and support of complex software systems
User Poll 2
How often do you release software?1) Daily
2) Every Iteration
3) Quarterly
4) Once or Twice a year
5) Still waiting
Agile Release Maturity
Build Automation
Source Control
Continuous Integration
Continuous DeliveryRelease Automation
Test Automation
AGILE PROCESS MATURITY
The GoalContinuous Delivery
Agile Release Maturity ?
Level 0Source Control
SCM / RCSSCM (Source Code Management)
RCS ( Revision Control System )
Single Repository
Commit to Trunk
Branch For Defect
SCM/RCS Servers
Open Source
Subversion (SVN)
Git
CVS
Mercurial
…
Commerical
Perforce
ClearCase
AccuRev
TFS
…
User Poll 3
How many branches of your project are in progress simultaneously?1) Trunk
2) Trunk + Defect
3) Release A, B and C
4) I lost count
Level 1Build Automation
Dependency Management
Resource Management
CompileLogs: Compiler warnings and violations
Database CRUD
Build Automation Frameworks
Make, Cmake
MSBuild
Ant, Nant
Maven
Gradle
Rake
ScriptUnix shell
Vb script
Ruby
Python
User Poll 4
If your project requires a database, how do you manage the version of the database in each installation ?1) Do not interact with database directly (i.e. access
thru separate web service)
2) Manual inspection
3) Row in settings table
4) Automated database versioning tool
Level 2Test Automation
Execute TestsTest Pyramid
Generate ReportsPass, Fail, Skip
Manual
Tests
Test Automation
xUnitJunit, TestNG, Nunit, PHPUnit, QTUnit, PyUnit, Test::Unit, MSTest
GoogleTest
VisualAssert
Database
DBUnit, TSQLUnit
Selenium / Webdriver
WatiN / Watir
SoapUI
TestPartner
Level 3Continuous Integration
What is CI ?Continuous vs Continual
CI is a practiceBroken build is priority #1 for all.
No Commits on broken build.
No Commit and Dash.
A CI Server is a build scheduler and traffic cop
Scheduled CRON job
Event Triggers
External Triggers
CI ServersCommercial
ThoughtworksCruiseControl, Go
AtlassianBamboo
UrbanCodeAnthill Pro
MicrosoftTFS
Jet BrainsTeam City
Electric CloudElectric Commander
MaestroDev
Open SourceJenkins
Hudson
Tinderbox
CDash
Apache Gump
Continuum
BuildDependency Management
Resource Management ConfigurationApp Data
Compile & Link
TestBuild Test Classes
Execute Tests
Generate report
Advanced TestCode Coverage
Instrument application codeExecute with coverage runner
Test Suites (fast, unit, integ, smoke…)
Multiple reportsSeparate coverage reports (unit/integ)Aggregated coverage reports
PackageGenerate deployable artifact
ZIP
Exe
MSI
JAR
WAR
EAR
RPM
DeployIIS
SCP
MSI
TomcatEmbedded (jetty)External (cargo)
VerifyAcceptance Tests
Functional Tests
System Tests
Capacity Tests
User Poll 5
Does your company have a dedicated QA department ?1) Yes
2) No
AnalyzeStatic Code Analysis
Standards ComplianceCustomized rules
Dependency analysis
Complexity analysis
Source Analysis
DynamicCode Coverage
Coberatura, Emma,Clover, Ncover, MSTest, CoverMe, JSCover, …
StaticCoding standards
Sonar
PMD, CPD, Checkstyle, xDepend
Findbugs, CRAP4J, FxCop, StyleCop, Lint, …
CodeCity, JNCSS
Advanced CIMultiple environments
Integration
QA
Staging
Production
Virtualized EnvironmentsClone as necessary
Event TriggerSCM Hook
ALM IntegrationReport build status for code change committed against feature requirement
Agile Release Maturity
Build Automation
Source Control
Continuous Integration
Continuous DeliveryRelease Automation
Test Automation
AGILE PROCESS MATURITY
Level 4Release Automation
Push button release to productionDeploy artifact promoted from CI
Update target database
Configure environment settingsEnvironment agnostic
User Poll 6
Does your company have a dedicated Release/Configuration Management Team ?1) Yes
2) No
Level 5Continuous
Delivery
ArchiveRepository of Release artifacts
Store multiple versions of artifacts
Deploy versions directly from repository
Artifact Repository Servers
Nexus by Sonotype
Artifactory by Jfrog
Archiva by Apache
PublishPush to production
Release Automation
User Poll 7
How long does it take to push a new release to production in your company?1) A few hours
2) The whole weekend
3) About a week
4) A month
5) I’ll tell you when we finish
User Poll 8
How many people are involved in a typical release at your company?1) 1
2) 2-3
3) 4-7
4) 9 or more
5) All hands on deck
Advanced CDAuto Trace Documentation
Full circle document traceDefine / Update StoryDefine / Update TaskCommit code for taskBuild job pass /fail
Build, Test, Package, Deploy, Verify, Analyze, Archive, Publish
Agile Lifecyle Management (ALM)
Jira +Grasshopper
Velocity Platform
TeamForge
Team Foundation Server
Rally
VersionOne
HP
Serena
IBM
Agile Release Maturity
Build Automation
Source Control
Continuous Integration
Continuous DeliveryRelease Automation
Test Automation
AGILE PROCESS MATURITY
Agile Release Maturity
User Survey
How useful was this webinar to you?
Is there anything you would like to know more about in a future webinar?
Q & A
For more information
about Agile and Project Management cPrime has a large selection of white papers and webinars regarding project management including a dedicated section on Agile
http://www.cprime.com/resources
Referencesabout Release Management and Continuous Delivery
Books---------------------------------------------------------------------------------------------------------Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automationhttp://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912/ref=sr_1_1?ie=UTF8&qid=1337550162&sr=8-1
Continuous Integration: Improving Software Quality and Reducing Riskhttp://www.amazon.com/Continuous-Integration-Improving-Software-Reducing/dp/0321336380/ref=sr_1_3?ie=UTF8&qid=1337550162&sr=8-3
Recipes for Continuous Database Integrationhttp://www.amazon.com/Recipes-Continuous-Database-Integration-ebook/dp/B000RH0EI4/ref=sr_1_14?ie=UTF8&qid=1337550162&sr=8-14
Configuration Management Best Practices: Practical Methods that Work in the Real Worldhttp://www.amazon.com/Configuration-Management-Best-Practices-Practical/dp/0321685865/ref=sr_1_12?s=books&ie=UTF8&qid=1337799141&sr=1-12
Enterprise Release Management: Agile Delivery of a Strategic Change Portfoliohttp://www.amazon.com/Enterprise-Release-Management-Strategic-Portfolio/dp/1608071685/ref=sr_1_4?s=books&ie=UTF8&qid=1337799413&sr=1-4