Presentation is loading. Please wait.

Presentation is loading. Please wait.

THE CONTINUOUS DELIVERY ZONE Craig Berntson Chief Software Gardener Mojo Software Worx.

Similar presentations


Presentation on theme: "THE CONTINUOUS DELIVERY ZONE Craig Berntson Chief Software Gardener Mojo Software Worx."— Presentation transcript:

1 THE CONTINUOUS DELIVERY ZONE Craig Berntson Chief Software Gardener Mojo Software Worx

2 Ego stuff  Conference speaker  INETA Community Speaker  ComponentOne Speaker Bureau  Author  Microsoft C# MVP

3 Have you heard these?  It works on my machine  When will you be done  The database changed  Stop shipping! We found a bug!  Give me what you have so we can test  Customer won’t accept – lots of bugs  Code duplication

4 Waterfall Customer InputBusiness AnalysisDevelopmentManual TestingRelease

5 Software Gardening  Agile methodologies  Continuous Delivery  Developer skills  Refactoring  Design Patterns  Test-Driven Development  SOLID OOD  Software Craftsmanship  Dependency Injection

6 Agile methodologies Individuals and interactions Working software Customer collaboration Responding to change

7 Continuous Delivery Continuous Integration Automated Acceptance Testing Automated Capacity Testing Manual Testing Automated Deployment  Software Delivery Pipeline  Fail Fast (Learn Early)  Delivery Team = Development + QA + Operations  DevOps

8 Why Continuous Delivery  Reduce risk  Increase quality  Enable better project visibility  Establish greater product confidence  Reduce repetitive/manual processes

9 Continuous Integration  Also called Commit Stage

10 CI Defined Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. – Martin Fowler http://www.martinfowler.com/articles/continuousIntegration.html

11 CI Defined CI is the embodiment of tactics that gives us, as software developers, the ability to make changes in our code, knowing that if we break software, we’ll receive immediate feedback...[It is] the centerpiece of software development, as it ensures the health of software through running a build with every change. – Paul Duvall Continuous Integration

12 CI Defined An automated process that builds, tests, analyzes and deploys an application to help ensure it functions correctly, follows best practices, and is deployable. This process runs with each source code change and provides immediate feedback to the development team. - Continuous Integration in.NET

13 Definitions tell us  Integrate frequently  Automated build & test  Centerpiece of development  Ensures health  Automated build, test, analyze, deploy  Functions correctly  Follows best practices  Runs with each code change  Immediate feedback

14 Manual process Check outCheck in

15 CI process Get latestCheck in

16 Continuous Integration Process Version Control System Developers Feedback Mechanism Build Script CI Server Stake Holders

17 Version Control System (VCS)  Check in often, several times per day  Do not branch – Always work on trunk  Everything goes into VCS  Tools: TFS, Subversion, Git, Mercurial

18 Project Organization  Each developer:  Uses the same folder structure  Uses the same tools  Uses the same 3 rd party components, placed in project folders  Check everything out from VCS and build

19 Continuous Integration Servers  Manage the CI process  Check out source  Compile  Run tests  Give feedback  Tools: TFS, Jenkins, Team City, Cruise Control

20 Build management  Handles actual build from source  Gets called from CI Server  Tools: MSBuild, Ant, Nant, Rake, PSake

21 Testing

22  Unit tests  Integration tests

23 Unit/Integration testing  Test After Development  Test Driven Development  Unit Test Frameworks  JUnit, NUnit, MSTest, xUnit, rbUnit

24 Artifacts  Potential release candidate  Build & test results  Components for next steps or subsequent builds  Tools: Maven, Npanday, Octopus

25 Feedback  Build reports  Test results  Web, system tray, text, twitter, sound large monitors, lights, Ambient Orb  Build Radiator

26 Build Radiator  Multiple projects  Multiple statistics  Can be whiteboard, colored Post-It notes, web page

27 Build Radiator Examples Michael Brunton-Spall – guardian.co.uk

28 Build Radiator Examples Phil Collins

29 Build Radiator Examples Phil Collins

30 Continuous Integration Demo  Developer process  CI server configuration  Feedback mechanism  Build radiator

31 Best Practices  Commit code frequently  Don’t commit broken code  Fix broken builds immediately  Write automated developer tests  All tests and inspections must pass  Run private builds (each developer runs tests on their own code)  Avoid getting broken code (don’t check out broken code)

32 Continuous Delivery Continuous Integration Automated Acceptance Testing Automated Capacity Testing Manual Testing Automated Deployment

33 Automated Testing Processes Artifact Storage Test System CI Server Feedback Mechanism

34 Automated Acceptance Testing  Validates software from the user perspective  Does the functionality work the way the customer expects?  Given … When … Then …  Test system should resemble production system  Tools: FitNesse, Cucumber, Jbehave, Concordion, Twist

35 Automated Acceptance Testing  Loose coupling  UI Design Patterns MVVM, MVC, MVP  Separation of concerns

36 Automated Capacity Testing  Non-functional requirements  Scalability, Longevity, Throughput, Load  Tools: Jmeter, Marathon, Bench, Ants

37 What happened to QA staff?  Role changes  Write automated test scripts  Analyze test results  Manual testing

38 Manual Testing Process Artifact Storage Feedback Mechanism Test System QA staff

39 Manual Testing  Exploratory, Usability, Showcases  Look and feel  Worst-case

40 Automated Deployment  Process should be identical to testing deployment  Sets up systems and configuration  Don’t forget about rollback (and test this too)  Tools: Puppet, Octopus, System Center

41 Testing Integration Functional Acceptance System Stability Scalability Performance Load Unit Code Analysis Test coverage Dependency Refactoring Code review Static analysis Database Schema Stored proc Test database Unit testing Deployment Install script QA Production Extending Continuous Deployment

42 Review Continuous Integration Automated Acceptance Testing Automated Capacity Testing Manual Testing Automated Deployment

43 Questions  Email: craig@mojosoftwareworx.com  Twitter: @craigber  www.speakerrate.com/craigber


Download ppt "THE CONTINUOUS DELIVERY ZONE Craig Berntson Chief Software Gardener Mojo Software Worx."

Similar presentations


Ads by Google