Continuous Delivery and Quality Monitoring

Slides:



Advertisements
Similar presentations
Test process essentials Riitta Viitamäki,
Advertisements

PROC-1 3. Software Process. PROC-2 What’s a process? Set of activities in creating software It involves creativity –hard to automate –Requires human judgment.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Agile Development.
Agile development By Sam Chamberlain. First a bit of history..
Improving Process for Better Software. Who We Are An experiential learning program that provides technology solutions for our partners, and real- world.
Production Programming in the Classroom Eric Allen, Robert Cartwright, and Charles Reis Rice University {eallen, cork,
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Agile Software Development
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Introduction to Continuous Integration Mike Roberts.
 Definitions  Background/History  Continuous Delivery › How to practice Continuous Delivery  Continuous Integration  Continuous Integration Tools.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
QWise software engineering – refactored! Testing, testing A first-look at the new testing capabilities in Visual Studio 2010 Mathias Olausson.
FINAL DEMO Apollo Crew, group 3 T SW Development Project.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Agile Web Development C. Daniel Chase University of Colorado at Boulder.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
EMI INFSO-RI SA2 - Quality Assurance Alberto Aimar (CERN) SA2 Leader EMI First EC Review 22 June 2011, Brussels.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
CS CS 5150 Software Engineering Lecture 2 Software Processes 1.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
1 Software Engineering and Security DJPS April 12, 2005 Professor Richard Sinn CMPE 297: Software Security Technologies.
Anubha Gupta | Software Engineer Visual Studio Online Microsoft Corp. Visual Studio Enterprise Leveraging modern tools to streamline Build and Release.
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
CSE 403, Spring 2007, Alverson Agile Development Practices.
Pavel Nevski DDM Workshop BNL, September 27, 2006 JOB DEFINITION as a part of Production.
Cruise Training Introduction of Continuous Integration.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
1 Punishment Through Continuous Delivery If it hurts, do it more often…
Benjamin Day Get Good at DevOps: Feature Flag Deployments with ASP.NET, WebAPI, & JavaScript.
Internal developer tools and bug tracking Arabic / Hebrew Windows 3.1Win95 Japanese Word, OneNote, Outlook
Agile Center of Excellence. Richard K Cheng Agile is just a high level concept.
Baby Steps to Agility How to Grow Into Agile. A little about me A little about Agile Growing into Agile Questions Goals.
Continuous Delivery and Quality Monitoring 1 iCSC2016, Kamil Henryk Król, CERN Continuous Delivery and Quality Monitoring Kamil Henryk Król CERN Inverted.
About Me learn Professor 3 startups. Simplifying Agile – Delivering Value Quickly.
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
1 © Agitar Software, 2007 Automated Unit Testing with AgitarOne Presented by Eamon McCormick Senior Solutions Consultant, Agitar Software Inc. Presented.
Embedded Systems Software Engineering
CS223: Software Engineering
Where Agile Business Meets Agile Development
Continuous Integration and Testing
Introduction to Software Engineering
X in [Integration, Delivery, Deployment]
DevOps CSCI 577b.
How to Successfully Implement an Agile Project
Get Good at DevOps: Feature Flag Deployments with ASP
Automated Testing and Integration with CI Tool
Chapter 3 – Agile Software Development
Quality Assurance in an Agile Development Team Michelle Wu 2018 PNSQC
Continuous Integration
Chapter 3: Agile Software Processes
Refactoring.
Bringing more value out of automation testing
Extreme Programming.
Node.js Test Automation using Oracle Developer Cloud- Simplified
Agile Development.
Extreme Programming (and Pair Programming)
System Development Methods
Jamie Cool Program Manager Microsoft
Presentation transcript:

Continuous Delivery and Quality Monitoring Kamil Henryk Król CERN Inverted CERN School of Computing, 29 February – 2 March 2016

Outline Continuous Delivery Quality Monitoring

Software challenges Team work Multiple people Different backgrounds High turnover Growing complexity of project Quality degradations Example for quality degradations: Leave the project for half a year, what happens with quality?

Software challenges The cost of fixing the defect grows exponentially in time!

Software challenges Brian Foote Joseph Yoder “Big Ball of Mud”

Outline Continuous Delivery Quality Monitoring

Continuous Delivery Continuous Integration

Continuous Delivery The challenge PRO servers Backup servers DEV servers Cloud Reference servers

Continuous Delivery Release Release == Risk Release == Fear Release == Working over time - frequent calls Release == Working during weekends Release == Long preparations Release == Boring repeatable tasks Can we do something with it? Question to the audience to raise hands!

Continuous Delivery The Agile Manifesto …. We follow these principles: Our highest priority is to satisfy the customer through early and CONTINUOUS DELIVERY of valuable software. .... @see: Agile Manifesto

Continuous Delivery Incremental development TEST ? IMPLEMENT REFACTOR

Continuous Delivery The definition “Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.“ @Martin Fowler

Continuous Delivery The definition “Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.“ @Martin Fowler

Continuous Delivery Principles Continuous Delivery needs to be built on the solid Continuous Integration Frequent integration with others - (ideally) one main trunk Confident tests protecting our development Easy rollback should be possible “it works on my machine” / “in my case it works”

Continuous Delivery Principles Introduce as much automation as possible Test close to the production Test environments and testing approaches should be similar to real life use cases

Continuous Delivery Principles Avoid: unofficial releases hot fixes without releasing patches sent via e-mail “it works on my machine” / “in my case it works” Full history of releases

Continuous Delivery Principles More releases => smaller releases Avoid release chains ALFA BETA RC PRODUCTION 2012 2013 2014 2015

Continuous Delivery Why? Small release v. big release? Questions to the audience? How easy is to find the bug? Small release v. big release? How often do you hear the task is done? We cannot see what is important/how good is the functionality until the user starts using it

Continuous Delivery Why? RELEASE A - 5 changes RELEASE B - 1 change Something goes wrong during the release... V. In case of which release is easier to locate the problem?

Continuous Delivery Why? Small release v. big release? Lower the deployment risk As a developer, when do you consider the functionality done (completed)? Sense of progress How do you validate/test application functionalities? Do we work on the right thing? Questions to the audience? How easy is to find the bug? Small release v. big release? How often do you hear the task is done? We cannot see what is important/how good is the functionality until the user starts using it

Continuous Delivery Why? “50% or more of functionality delivered is rarely or never used.“ @Jim Highsmith, Adaptive Leadership

Continuous Delivery Why? Small release v. big release? Lower the deployment risk As a developer, when do you consider the functionality done (completed)? Sense of progress How do you validate/test application functionalities? Do we work on the right thing? Quick user feedback Questions to the audience? How easy is to find the bug? Small release v. big release? How often do you hear the task is done? We cannot see what is important/how good is the functionality until the user starts using it

Continuous Delivery Why? We can do the same work, but: Working less In more relaxed environment Avoiding risk Having more constant workload With level of confidence “I wish we did it the old way” @noone

Continuous Delivery How? Continuous Delivery is the natural continuation of the Continuous Integration processes Continuous Integration Continuous Delivery

Continuous Delivery How? Continuous Delivery can be implemented using most build servers (both open source and commercial tools available)

Continuous Delivery How? Continuous Delivery is not a complete set of tools which needs to be used It more a way of thinking about the development!

Continuous Delivery Do we do it right? The ‘deploy’ button How confident are you? Answer these 3 questions Is it easy to deploy? Is it easy to rollback? Clients not affected? If you answer yes to all questions, you are doing the Continuous Delivery right!

Continuous Delivery Summary Continuous Delivery can give us high level of confidence It imposes the incremental development We build the right thing It’s easy to locate problems It helps developers see the progress Clients receive functionalities quickly It’s fashionable It’s a standard

Outline Continuous Delivery Quality Monitoring

Quality Monitoring Quality? “the standard of something as measured against other things of a similar kind; the degree of excellence of something”

Quality Monitoring Monitor? Monitoring? “observe and check the progress or quality of (something) over a period of time; keep under systematic review”

Quality Monitoring How do we check the quality? Manual Manual testing Conventions within the team Definition of done Pair programming Code reviews Automatized Good coverage of good tests Static code analysis

Quality Monitoring Manual testing Tests which are carried manually by a person or the testing team Easy to define Expensive to run on daily basis Prone to human errors Boring ...

Quality Monitoring Code conventions Common way of producing the code Shared within the team / within the organisation Should be as close as possible to industry standards

Quality Monitoring Code conventions Naming conventions Variables Constants Classes Enums etc... Method parameters conventions Layout conventions Project structure conventions Documentation conventions Example with: experiment documenteation etc...

Quality Monitoring Code conventions Examples: Java Code Conventions Python Style Guide C++ Programming Style Guidelines Example with: experiment documenteation etc...

Quality Monitoring Definition of done //TO BE REMOVED FROM THE PRINTABLE VERSION List of conditions which need to be completed before the functionality is considered as DONE.

Quality Monitoring Definition of done

Quality Monitoring Pair programming 2 people - 2 different opinions Driver + Navigator Often change roles Immediate feedback On-spot bug fixes Synergy effect

Quality Monitoring Code reviews Knowledge Systematic review with Co-worker Team External people Face 2 Face v. ‘Online’ Knowledge //TODO: Find a better word than ‘online’ Fresh mind reviewers Improvement ideas Great way of sharing knowledge

Quality Monitoring Code reviews Review participants Files under review Review objectives

Quality Monitoring Code reviews Code snippets Discussions

Quality Monitoring Good coverage of good tests We can (should) test at different levels Unit testing Integration testing Acceptance testing System testing Automatic tests Quick Repeatable Easy to maintain Need to be executed continuously

Quality Monitoring Good coverage of good tests How much do we cover with tests? Test coverage Question to the audience: Which code is better tested? Legend: instruction covered instruction partially covered instruction uncovered

Quality Monitoring Static code analysis Tools which help you to find bugs Are there any? Static = without running software Can (or even should!) be automatized Find errors which are hard to spot by a human Easy shortcut to the better quality

Quality Monitoring Static code analysis

Quality Monitoring Static code analysis Complexity metrics Code quality issues Test coverage Project statistics

Quality Monitoring Static code analysis Project statistics (quality metrics) over the time

Quality Monitoring Static code analysis Life demo time! You can play on your own at: http://sonar.cern.ch

Quality Monitoring Quality Monitoring - Summary Code is read much more often than it is written! Keep an eye on the code quality - continuous monitoring can help you a lot. Variety of tools available - choose your own set and take advantage of them. QUALITY

Thanks a lot! Any questions?