Agile Release Maturity
Investing in reliable Software Release Management

              This webinar is worth 1 PDU
Hosted by cPrime
Today’s Presenter
Kendrick Burson
 Software Engineer since 1997
 Agile Development Coach
 CI systems consultant
Talk about what?
Agile Release Maturity
  This 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 1
If 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 Manifesto
We follow these principles:

Our highest priority is to satisfy the              Working software is the primary measure of
customer through early and continuous               progress.
delivery of valuable software.
                                                    Agile processes promote sustainable development.
Welcome changing requirements, even late in         The sponsors, developers, and users should be
development. Agile processes harness change for     able to maintain a constant pace indefinitely.
the customer's competitive advantage.
                                                    Continuous attention to technical excellence and
Deliver working software frequently, from a         good design enhances agility.
couple of weeks to a couple of months, with a
preference to the shorter timescale.                Simplicity--the art of maximizing the amount
                                                    of work not done--is essential.
Business people and developers must work
together daily throughout the project.              The best architectures, requirements, and designs
                                                    emerge from self-organizing teams.
Build projects around motivated individuals. Give
them the environment and support they need, and     At regular intervals, the team reflects on how to
trust them to get the job done.                     become more effective, then tunes and adjusts its
                                                    behavior accordingly.
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



                                                       Continuous Delivery
                                          Release Automation

                              Continuous Integration
                     Test Automation
         Build Automation
Source Control
The Goal
Continuous Delivery
Agile Release Maturity ?
Level 0
           Source Control
SCM / RCS
   SCM (Source Code Management)
   RCS ( Revision Control System )

Single Repository
Commit to Trunk
Branch For Defect
SCM/RCS Servers
Open Source         Commerical
 Subversion (SVN)    Perforce
 Git                 ClearCase
 CVS                 AccuRev
 Mercurial           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 1
          Build Automation

Dependency Management
Resource Management
Compile
  Logs: Compiler warnings and violations

Database CRUD
Build Automation
           Frameworks
Make, Cmake
MSBuild          Script
                   Unix shell
Ant, Nant
                   Vb script
Maven              Ruby
                   Python
Gradle
Rake
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 2
           Test Automation
                             Manual
                              Tests
Execute Tests
  Test Pyramid

Generate Reports
  Pass, Fail, Skip
Test Automation
xUnit                      Selenium / Webdriver
   Junit, TestNG, Nunit,
   PHPUnit, QTUnit,        WatiN / Watir
   PyUnit, Test::Unit,
                           SoapUI
   MSTest
                           TestPartner
GoogleTest

VisualAssert

Database
   DBUnit, TSQLUnit
Level 3
Continuous Integration
What is CI ?
Continuous vs Continual

CI is a practice
   Broken 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 Servers
Commercial                Open Source
   Thoughtworks              Jenkins
     CruiseControl, Go       Hudson
   Atlassian                 Tinderbox
     Bamboo
                             CDash
   UrbanCode
                             Apache
     Anthill Pro
                               Gump
   Microsoft
     TFS
                               Continuum

   Jet Brains
     Team City
   Electric Cloud
     Electric Commander
   MaestroDev
Build
Dependency Management
Resource Management
  Configuration
  App Data

Compile & Link
Test
Build Test Classes
Execute Tests
Generate report
Advanced Test
Code Coverage
  Instrument application code
  Execute with coverage runner
    Test Suites (fast, unit, integ, smoke…)

Multiple reports
  Separate coverage reports (unit/integ)
  Aggregated coverage reports
Package
Generate deployable artifact
  ZIP
  Exe
  MSI
  JAR
  WAR
  EAR
  RPM
Deploy
IIS
      SCP
      MSI

Tomcat
      Embedded (jetty)
      External (cargo)
Verify
Acceptance Tests
Functional Tests
System Tests
Capacity Tests
User Poll 5
Does your company have a dedicated
QA department ?
1) Yes

2) No
Analyze
Static Code Analysis
Standards Compliance
  Customized rules

Dependency analysis

Complexity analysis
Source Analysis
Dynamic
   Code Coverage
     Coberatura, Emma,Clover, Ncover, MSTest, CoverMe,
     JSCover, …

Static
   Coding standards
     Sonar
     PMD, CPD, Checkstyle, xDepend
     Findbugs, CRAP4J, FxCop, StyleCop, Lint, …
     CodeCity, JNCSS
Advanced CI
Multiple environments
   Integration
   QA
   Staging
   Production

Virtualized Environments
   Clone as necessary

Event Trigger
   SCM Hook

ALM Integration
   Report build status for code change committed against feature
   requirement
Agile Release Maturity



                                                       Continuous Delivery
                                          Release Automation

                              Continuous Integration
                     Test Automation
         Build Automation
Source Control
Level 4
       Release Automation
Push button release to production
  Deploy artifact promoted from CI
  Update target database
  Configure environment settings
     Environment agnostic
User Poll 6
Does your company have a dedicated
Release/Configuration Management
Team ?
1) Yes

2) No
Level 5
Continuous Delivery
Archive
Repository 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
Publish
Push 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 CD
   Auto Trace Documentation

Full circle document trace
  Define / Update Story
  Define / Update Task
  Commit code for task
  Build job pass /fail
    Build, Test, Package, Deploy, Verify, Analyze, Archive, Publish
Agile Lifecyle Management
            (ALM)
Jira +Grasshopper        Rally

Velocity Platform        VersionOne

TeamForge                HP

Team Foundation Server   Serena

                         IBM
Agile Release Maturity



                                                       Continuous Delivery
                                          Release Automation

                              Continuous Integration
                     Test Automation
         Build Automation
Source Control
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
References
                     about Release Management and Continuous Delivery


Books
---------------------------------------------------------------------------------------------------------
Continuous Delivery: Reliable Software Releases through Build, Test, and
Deployment Automation
http://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 Risk
http://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 Integration
http://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 World
http://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
Portfolio
http://www.amazon.com/Enterprise-Release-Management-Strategic-
Portfolio/dp/1608071685/ref=sr_1_4?s=books&ie=UTF8&qid=1337799413&sr=1-
4

Continuous Integration & the Release Maturity Model

  • 1.
    Agile Release Maturity Investingin reliable Software Release Management This webinar is worth 1 PDU
  • 2.
  • 3.
    Today’s Presenter Kendrick Burson Software Engineer since 1997 Agile Development Coach CI systems consultant
  • 4.
    Talk about what? AgileRelease Maturity This 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
  • 5.
    User Poll 1 Ifyou 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
  • 6.
    Principles behind theAgile Manifesto We follow these principles: Our highest priority is to satisfy the Working software is the primary measure of customer through early and continuous progress. delivery of valuable software. Agile processes promote sustainable development. Welcome changing requirements, even late in The sponsors, developers, and users should be development. Agile processes harness change for able to maintain a constant pace indefinitely. the customer's competitive advantage. Continuous attention to technical excellence and Deliver working software frequently, from a good design enhances agility. couple of weeks to a couple of months, with a preference to the shorter timescale. Simplicity--the art of maximizing the amount of work not done--is essential. Business people and developers must work together daily throughout the project. The best architectures, requirements, and designs emerge from self-organizing teams. Build projects around motivated individuals. Give them the environment and support they need, and At regular intervals, the team reflects on how to trust them to get the job done. become more effective, then tunes and adjusts its behavior accordingly. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  • 7.
    Release Management ? Theintegration and flow of development, testing, deployment, and support of complex software systems
  • 8.
    User Poll 2 Howoften do you release software? 1) Daily 2) Every Iteration 3) Quarterly 4) Once or Twice a year 5) Still waiting
  • 9.
    Agile Release Maturity Continuous Delivery Release Automation Continuous Integration Test Automation Build Automation Source Control
  • 10.
  • 11.
  • 12.
    Level 0 Source Control SCM / RCS SCM (Source Code Management) RCS ( Revision Control System ) Single Repository Commit to Trunk Branch For Defect
  • 13.
    SCM/RCS Servers Open Source Commerical Subversion (SVN) Perforce Git ClearCase CVS AccuRev Mercurial TFS … …
  • 14.
    User Poll 3 Howmany branches of your project are in progress simultaneously? 1) Trunk 2) Trunk + Defect 3) Release A, B and C 4) I lost count
  • 15.
    Level 1 Build Automation Dependency Management Resource Management Compile Logs: Compiler warnings and violations Database CRUD
  • 16.
    Build Automation Frameworks Make, Cmake MSBuild Script Unix shell Ant, Nant Vb script Maven Ruby Python Gradle Rake
  • 17.
    User Poll 4 Ifyour 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
  • 18.
    Level 2 Test Automation Manual Tests Execute Tests Test Pyramid Generate Reports Pass, Fail, Skip
  • 19.
    Test Automation xUnit Selenium / Webdriver Junit, TestNG, Nunit, PHPUnit, QTUnit, WatiN / Watir PyUnit, Test::Unit, SoapUI MSTest TestPartner GoogleTest VisualAssert Database DBUnit, TSQLUnit
  • 20.
  • 21.
    What is CI? Continuous vs Continual CI is a practice Broken 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
  • 22.
    CI Servers Commercial Open Source Thoughtworks Jenkins CruiseControl, Go Hudson Atlassian Tinderbox Bamboo CDash UrbanCode Apache Anthill Pro Gump Microsoft TFS Continuum Jet Brains Team City Electric Cloud Electric Commander MaestroDev
  • 23.
    Build Dependency Management Resource Management Configuration App Data Compile & Link
  • 24.
    Test Build Test Classes ExecuteTests Generate report
  • 25.
    Advanced Test Code Coverage Instrument application code Execute with coverage runner Test Suites (fast, unit, integ, smoke…) Multiple reports Separate coverage reports (unit/integ) Aggregated coverage reports
  • 26.
    Package Generate deployable artifact ZIP Exe MSI JAR WAR EAR RPM
  • 27.
    Deploy IIS SCP MSI Tomcat Embedded (jetty) External (cargo)
  • 28.
  • 29.
    User Poll 5 Doesyour company have a dedicated QA department ? 1) Yes 2) No
  • 30.
    Analyze Static Code Analysis StandardsCompliance Customized rules Dependency analysis Complexity analysis
  • 31.
    Source Analysis Dynamic Code Coverage Coberatura, Emma,Clover, Ncover, MSTest, CoverMe, JSCover, … Static Coding standards Sonar PMD, CPD, Checkstyle, xDepend Findbugs, CRAP4J, FxCop, StyleCop, Lint, … CodeCity, JNCSS
  • 32.
    Advanced CI Multiple environments Integration QA Staging Production Virtualized Environments Clone as necessary Event Trigger SCM Hook ALM Integration Report build status for code change committed against feature requirement
  • 33.
    Agile Release Maturity Continuous Delivery Release Automation Continuous Integration Test Automation Build Automation Source Control
  • 34.
    Level 4 Release Automation Push button release to production Deploy artifact promoted from CI Update target database Configure environment settings Environment agnostic
  • 35.
    User Poll 6 Doesyour company have a dedicated Release/Configuration Management Team ? 1) Yes 2) No
  • 36.
  • 37.
    Archive Repository of Releaseartifacts Store multiple versions of artifacts Deploy versions directly from repository
  • 38.
    Artifact Repository Servers Nexus by Sonotype Artifactory by Jfrog Archiva by Apache
  • 39.
    Publish Push to production Release Automation
  • 40.
    User Poll 7 Howlong 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
  • 41.
    User Poll 8 Howmany 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
  • 42.
    Advanced CD Auto Trace Documentation Full circle document trace Define / Update Story Define / Update Task Commit code for task Build job pass /fail Build, Test, Package, Deploy, Verify, Analyze, Archive, Publish
  • 43.
    Agile Lifecyle Management (ALM) Jira +Grasshopper Rally Velocity Platform VersionOne TeamForge HP Team Foundation Server Serena IBM
  • 44.
    Agile Release Maturity Continuous Delivery Release Automation Continuous Integration Test Automation Build Automation Source Control
  • 45.
  • 46.
    User Survey How usefulwas this webinar to you? Is there anything you would like to know more about in a future webinar?
  • 47.
  • 48.
    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
  • 49.
    References about Release Management and Continuous Delivery Books --------------------------------------------------------------------------------------------------------- Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation http://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 Risk http://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 Integration http://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 World http://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 Portfolio http://www.amazon.com/Enterprise-Release-Management-Strategic- Portfolio/dp/1608071685/ref=sr_1_4?s=books&ie=UTF8&qid=1337799413&sr=1- 4

Editor's Notes

  • #5 Compiled LanguagesJavaC#C++VB.netInterpreted LanguagesPHPRubyPython
  • #8 A release manager is:Facilitator: serves as a liaison between varying business units to guarantee smooth and timely delivery of software products or updates.Gatekeeper: “holds the keys” to production systems/applications and takes responsibility for their implementations.Architect: helps to identify, create and/or implement processes or products to efficiently manage the release of code.Server application support engineer: help troubleshoot problems with an application (although not typically at a code level).Coordinator: utilized to coordinate disparate source trees, projects, teams and components.Build Engineering : How to compile, link, package and deploy software products reliably and repeatablyContinuous or Continual !Integration vsDelivery What is CIWhat is CDWhat is
  • #10 Agile Maturity Model Processes and Practices in Agile Project ManagementBuild EngineeringContinuous Integration
  • #11 PackageJar,War, Ear,MSIPublishCargoShell/Bat/ScriptSCP
  • #12 Most teams are not ready to adopt every practice we are going to discussEvery team should start somewhereFind the strata that best fits your current environment.
  • #14 SCM (Source Code Management) RCS ( Revision Control System )
  • #16 Single click build (dbl click)
  • #19 Reports for unit tests passed, failed, skipped.Trend reports and historical analysisDiagnostic information for failed tests.
  • #20 Selenium / WebdriverCross platform web browser control frameworksWatiN / WatirWatiN: Web application testing in .NetWatir: Web application testing in RubySoapUISOAP and REST web service testing
  • #21 Reports for unit tests passed, failed, skipped.Trend reports and historical analysisDiagnostic information for failed tests.
  • #24 Dependency ManagementResource Management (config files)Compile & Link
  • #25 Dependency ManagementResource Management (config files)Compile & Link
  • #26 Dependency ManagementResource Management (config files)Compile & Link
  • #27 Dependency ManagementResource Management (config files)Compile & Link
  • #28 Dependency ManagementResource Management (config files)Compile & Link
  • #29 Dependency ManagementResource Management (config files)Compile & Link
  • #31 Dependency ManagementResource Management (config files)Compile & Link
  • #33 Build Server is a glorified scheduler. Shedule Trigger Polling SCM External Trigger Related build completes
  • #34 Agile Maturity Model Processes and Practices in Agile Project ManagementBuild EngineeringContinuous Integration
  • #35 Cascading Builds
  • #37 PackageJar,War, Ear,MSIPublishCargoShell/Bat/ScriptSCP
  • #38 Dependency ManagementResource Management (config files)Compile & Link
  • #40 Dependency ManagementResource Management (config files)Compile & Link
  • #45 Agile Maturity Model Processes and Practices in Agile Project ManagementBuild EngineeringContinuous Integration
  • #46 PackageJar,War, Ear,MSIPublishCargoShell/Bat/ScriptSCP