+ All Categories
Home > Software > Agile Engineering Sparker GLASScon 2015

Agile Engineering Sparker GLASScon 2015

Date post: 21-Jul-2015
Category:
Upload: stephen-ritchie
View: 62 times
Download: 0 times
Share this document with a friend
31
Proprietary Material Provided for Training Purposes Only © 2012 Excella Consulting, Inc.
Transcript

Proprietary Material Provided for Training Purposes Only© 2012 Excella Consulting, Inc.

Stephen Ritchie

◊ 20+ years of experience in software development

◊ Focused on Agile since 2007

– Commercial software development

– .NET software engineering & Agile principles

– Agile coaching & mentoring

◊ Organizer of the DC Alt. NET User Group

◊ CSM, CSPO, CSD, CSP

◊ Building Quality into the process

– Real time identification of quality issues

• Automation

– Using the right tools and techniques

21st Century Engineering Practices

Benefits*

Assuming 100 defects in 10,000 lines of code

1. Traditional testing finds a defect in about 10 hours

2. Manual code inspections find a defect in 1 hour

3. Automated testing finds a defect every 6 minutes

þ 36% reduction in defect ratewhen integration/regression testing at each code check-in

þ 90% reduction in bugs reaching QAMajor municipal gas utility

þ

þ

þ

þ

þ

95% cut in cost of bugsLarge retail web site

90% cut in defect remediation costGlobal supplier of healthcare equipment

Faster time-to-marketMore features and higher quality

Agility in the marketplaceAdded new functionality 2 weeks before ship

Confidence in the process“Oozing Confidence”

*Sources:• Grant, T. (2005). Continuous integration using cruise control. Northern Virginia Java Users Group (Novajug), Reston, Virginia, USA.• Fredrick, J. (2008). Accelerate software delivery with continuous integration and testing. Japanese Symposium on Software Testing, Tokyo,

Japan. • Rico, D. F. (2012). The Cost of Quality (CoQ) for Agile vs. Traditional Project Management. Fairfax, VA: Gantthead.Com.

Technology Stacks

◊ .Net

◊ Java

◊ Python

◊ Ruby

◊ JavaScript

◊ Others….

Don’t Do It All At Once

Do This First1. Version

Control2. Build

Automation 3. Automated

Unit Testing 4. Continuous

Integration

Next Do This5. Static Code

Analysis6. Dependency

Management

Then Do This7. Automated

Integration Testing

8. Automated Acceptance Testing

9. Deployment Automation

First Do This

1. Version Control

– What: Repository to persist and track version of code and artifacts

– Effort: Low

– Sample Tools:

• Traditional – TFS (MS), Subversion

• Distributed Version Control (branching and merging) - Git, Mercurial

First Do This

2. Build Automation

– What: One click or one command launch of build process

– Effort: Low

– Sample Tools:

• Microsoft – MSBuild, Powershell

• Java/Others – Ant, Gradle, Maven

First Do This

3. Automated Unit Testing

– What: An automated stand alone test that test a single unit of the code.

– Effort: Medium

– Sample Tools:

• Unit test tools: JUnit (Java), NUnit (MS), MS Test (MS)

• Advanced tools: Moq, Fluent Assertions

First Do This

4. Continuous Integration

– What: Provides frequent verification and notification of changes to the code and application

– Effort: Medium

– Sample Tools: Jenkins, Hudson, TFS (MS), TeamCity

Continuous Integration

Build #1

compile

unit test

integration test

package

deploy/run

acceptance test

analyze code

Build Report

Version Control

change#1

change#2

BuildServer

Build #2

compile

unit test

integration test

package

deploy/run

acceptance test

analyze code

Build ReportEmail

Failed Build

Continuous Integration

◊ CI involves:

– Frequent code check-ins

– Regularly scheduled, automated builds

– Automated tests

– Immediate feedback to developers detailing any build errors or failed tests

◊ Benefit:

– Developers know immediately upon check-in if their code works and if any other application features were broken as a result

CI Effect on Schedule

Code Phase QA Phase Code Phase QA Phase

Code Phase Code Phase

Code + Test Phase Code + Test Phase

Schedule

Release 1 Release 2

Original Plan

Reality

With CI

Benefits of Continuous Integration

◊ Avoids last-minute chaos at release dates

◊ Early warnings of broken code

◊ Early warning of conflicting changes

◊ Immediate testing of all changes

◊ High availability of a "current" build for testing, demo, or release purposes

Don’t Do It All At Once

Do This First1. Version Control2. Build

Automation 3. Automated

Unit Testing 4. Continuous

Integration

Next Do This5. Static Code

Analysis6. Dependency

Management

Then Do This7. Automated

Integration Testing

8. Automated Acceptance Testing

9. Deployment Automation

Next Do This

5) Static Code Analysis

– What: Checks for coding standards and code quality

– Effort: Low

– Sample Tools: Visual Studio Code Analysis, FindBugs(Java), PMD, Cobertura, Sonar, CheckStyle

Code Quality

Next Do This

6) Dependency Management

– What: Manages 3rd party components and ensure we have the latest / correct version these components

– Effort: Low

– Sample Tools: Gradle, NuGet

Don’t Do It All At Once

Do This First1. Version Control2. Build

Automation 3. Automated

Unit Testing 4. Continuous

Integration

Next Do This5. Static Code

Analysis6. Dependency

Management

Then Do This7. Automated

Integration Testing

8. Automated Acceptance Testing

9. Deployment Automation

Then Do This

7. Automated Integration Testing

– What: Testing interaction between multiple components to ensure our component dependencies don’t break

– Effort: Medium to High

– Sample Tools: DBUnit (Java), NDBUnit (MS)

Then Do This

8. Automated Acceptance Testing

– What: Automated testing to ensure the systems meets business needs

– Effort: High

– Sample Tools: SpecFlow, Cucumber, FitNess

– For Browser Testing: Selenium, WatiN

Automated Tests

◊ Automated tests involves:– Unit tests: Testing of smallest possible piece of code that can

operate in isolation– Integration tests: Testing interaction between multiple

components– Acceptance tests: Testing complete segments of a system to

ensure it meets the business needs

◊ Benefits– Enables rapid discovery of root cause– Reduces defect rate– Saves time in system test– Ensures testing starts early in cycle– Provides for a free regression testing suite

Testing Quadrant

Functional TestsAcceptance Tests

Unit TestsComponent TestsSystem Tests

ShowcasesExploratory TestsUsability Tests

Performance TestsSecurity Tests

The T

eam

The P

roduct

Functionality

The Systemfrom Brian Marick

Then Do This

8. Automated Deployment

– What: Push button deployment capabilities

– Effort: High

– Sample Tools: FluentMigrator, Puppet, Octopus

Automated Deployments

Sandbox

ProductionVersion Control

CIServer

DB

Web ServerWeb Server

DB

Test

DB

Web ServerWeb Server

DB

DB

Web Server

Automated NightlyDeployments

Push Button Deployments

Managed Deployments

Benefits of Automated Deployments

◊ Reduces complexity by using standardized script

◊ Reduces risk by re-running same script

◊ Reduces cost by speeding up deployment

◊ Frees up resources to focus on new features

One More Thing - Developers

Developer’s Bill of Rights1. Every programmer shall have two monitors 2. Every programmer shall have a fast PC 3. Every programmer shall have their choice of mouse

and keyboard 4. Every programmer shall have a comfortable chair 5. Every programmer shall have a fast internet

connection 6. Every programmer shall have {effective} working

conditions

Posted by Jeff Atwood , http://www.codinghorror.com/blog/2006/08/the-programmers-bill-of-rights.html

Book Resources

Clean Code

Robert C. Martin

ISBN-10 #0132350882

Code Complete

Steve McConnell

ISBN-10 #0735619670

Working Effectively with Legacy Code

Michael Feathers

ISBN-10 #0131177052

Pro .NET Best Practices

Stephen Ritchie

ISBN #14302402237

Continuous Delivery

Jez Humble

ISBN #0321601912

Growing Object-Oriented Software, Guided by Tests

Steve Freeman

ISBN #0321503627

Contact Information

Stephen Ritchie

[email protected]

http://ruthlesslyhelpful.net

http://www.excella.com

Twitter: @RuthlessHelp

Fadi Stephan

[email protected]

703-840-8665

http://www.excella.com

Twitter: @FadiStephan

Excella ConsultingExperience and Expertise in Agile Solutions

– Coaching

– Training

– Assessments

– Agile Adoption

– Agile Development Teams

– Agile PMO

Training Courses– Certified ScrumMaster (CSM)

– Certified Scrum Product Owner (CSPO): The Agile Business Analyst

– Advanced Certified Scrum Product Owner (CSPO)

– Certified Scrum Developer (CSD)

– Agile Testing

– Agile Business Intelligence and Data Warehousing

See http://www.excella.com/services/agile-training-services.aspx for more information

Agile Training

Richard K Cheng

[email protected]

703-967-8620

http://www.excella.com

Twitter: @RichardKCheng


Recommended