Managing Technical Debt Pierre G. Boutquin. Welcome!

Slides:



Advertisements
Similar presentations
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Advertisements

Test Automation Success: Choosing the Right People & Process
Welcome! Dial In Number: PIN: # Video Technical Support: Audio Technical Support: *0.
Discounted Cash Flow Valuation Chapter 5 2 Topics Be able to compute the future value of multiple cash flows Be able to compute the present value of.
QAAC 1 Metrics: A Path for Success Kim Mahoney, QA Manager, The Hartford
Alternate Software Development Methodologies
BTS530: Major Project Planning and Design Iterative Development References: Agile & Iterative Development, by Craig Larman, 2004, Addison Wesley. Agile.
NAUG NAUG Knowledge Evening – th February 2007.
1 Design and Integration: Part 1. 2 What’s a metaphor? Ward Cunningham cites George Lakoff’s book, Metaphors We Live By: Lakoff argues that the assumptions.
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
Testing and Debugging pt.2 Intro to Complexity CS221 – 2/18/09.
1 Extreme Programming & New Theory of Programming.
Welcome!. Looking at Student Notebooks, Goals: Deepen understanding of the nature and purpose of science notebook entry types Deepen understanding of.
Agile Development from a Product Management Perspective Scott Cressman Technical Product Manager, Sophos.
Managing a Project Using an Agile Approach and the PMBOK® Guide
CHAPTER 6 Discounted Cash Flow Valuation. Key Concepts and Skills Be able to compute the future value of multiple cash flows Be able to compute the present.
XUnit Test Patterns writing good unit tests Peter Wiles.
Agile Methodologies for Project Management By – Komal Mehta.
By Bob Bunson  Simulation of software development project  Fictitious system from Concept to Code  Oriented around the.
28/08/2015SJF L31 F21SF Software Engineering Foundations ASSUMPTIONS AND TESTING Monica Farrow EM G30 Material available on Vision.
SENG 403, Winter 2012 SENG 403 – Winter  Exploring unit-testing frameworks in.NET  Writing our first test with NUnit  Unit Testing in Visual.
Behaviour Driven Development with Cucumber for Java.
Computer Science II 810:062 Section 01 Session 2 - Objects and Responsibilities.
Business Communication Workshop
CSE G674/2009 Project Project Management Section Presented by: Amir Aref Adib.
Recursion James Wright St Peter’s Secondary School 733 Parkhill Road West Peterborough,Ontario K9J-8M4
Copyright David Churchville - XP and Agile Planning David Churchville ExtremePlanner Software XP Fishbowl.
Things you should know… NOW !! Jana C. Davidson AVMA GHLIT Director of Student Services Mississippi State University CVM January 30, 2009.
6-0 Finding the Number of Payments – Example 1 You ran a little short on your February vacation, so you put $1,000 on your credit card. You can only afford.
Fifth Third Bank, Member FDIC. Eisenhower High School September 15, 2013.
Some Sub-Activities within Requirements Engineering 1.Prototyping 2.Requirements Documentation 3.Requirements Validation 4.Requirements Measurements 5.Requirements.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
1 Planning – Agile Style Highsmith, Ch 7 All kinds of iterations! CSSE579 Session 3 Part 1.
CSC1401 Classes - 2. Learning Goals Computing concepts Adding a method To show the pictures in the slide show Creating accessors and modifiers That protect.
Session # Rational User Conference 2002 Author Note: To edit Session # go to: View/Master/Title Master ©1998, 1999, 2000, 2001, 2002 Rational Software.
Systems Development Life Cycle
Roy Osherove Sela Group ISerializable.com (blog)
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
Design Patterns David Talby. This Lecture Re-routing method calls Chain of Responsibility Coding partial algorithms Template Method The Singleton Pattern.
BEHAVIOR DRIVEN TEST DEVELOPMENT Specification by Example.
1 Presentation Title Test-driven development (TDD) Overview David Wu.
CreatingClasses-SlideShow-part31 Creating Classes part 3 Barb Ericson Georgia Institute of Technology Dec 2009.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Reviewing Reports. Can you match them from memory? Definition (Listen and write) Introduction The facts which have been discovered. Findings Practical.
Agenda 9/8  Expectations/Reading and Interest Inventory (10-15)  Text Features  Beezlebufo Activity (10-15)  Power Point on Text Features (10)  If.
Requirements Gathering
Test Driven Development Introduction Issued date: 8/29/2007 Author: Nguyen Phuc Hai.
Oracle eBusiness Financials R12 Oracle Receivables Functional Overview TCS Oracle Practice.
CS223: Software Engineering Lecture 31: Acceptance Testing.
User Stories- 2 Advanced Software Engineering Dr Nuha El-Khalili.
Beginning Software Craftsmanship Brendan Enrick Steve Smith
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.
Benjamin Unit Testing & Test-Driven Development for Mere Mortals.
Implementation Topics Describe –Characteristics of good implementations –Best practices to achieve them Understand role of comments Learn debugging techniques.
SWE 434 SOFTWARE TESTING AND VALIDATION LAB2 – INTRODUCTION TO JUNIT 1 SWE 434 Lab.
Static Software Metrics Tool
On Campus Internship Work Plan Creation
Parallel Algorithm Design
Unit Testing in a Team Sparkhound Presents by Steve Schaneville
Unit Testing & Test-Driven Development for Mere Mortals
Adaptive Code Umamaheswaran Senior Software Engineer
Unit Testing & Test-Driven Development for Mere Mortals
Johanna Rothman Create Technical Excellence Chapter 9
Get Good at DevOps: Feature Flag Deployments with ASP
Unit Testing & Test-Driven Development for Mere Mortals
Designing For Testability
Chapter 9: Implementation
Product Development & Planning
Presentation transcript:

Managing Technical Debt Pierre G. Boutquin

Welcome!

Thank You, Sponsors!

Choosing or Not Choosing Technical Debt Agenda or Summary Layout A second line of text could go here Agenda; TALMUG; Me Debt Characteristics Discovering and Preventing Technical Debt Discussion Intro Part I Part II Part III End ???

Work Experience About Me

Programming Experience About Me

Author About Me

About today’s talk… Under Promising…

History of a Metaphor Ward Cunningham 1992

Part I: Debt Characteristics

Deliberate vs. Inadvertent Prudent vs. Reckless Debt: Good or Bad? Depends…

Faster Short Term Benefit Extra Cost Why Debt? Trade-Off…

Extra Cost (Interest) As Long as Debt (Principal) NOT Paid Off Debt Drawback Principal/Interest

Perpetual Debt Growing Interest Unmanaged Debt Aka My Credit Card

Deliberate Trade-Off: Maybe Prudent Inadvertent Debt: Likely Reckless Incurring Debt Reckless vs. Prudent

Benefits Outweigh Extra Costs Affordable Repayment Plan Deliberate Debt When Prudent?

Deliberate Decision Positive Cost/Benefit Planned, Affordable Repayment Prudent Total Debt Acceptable Debt 4 Criteria:

Inadvertent Decision Negative or Small Cost/Benefit Repayment Not Planned/Too High Reckless Total Debt Unwise Debt 4 Tell-Tale Signs

Total Level of Deliberateness Size of Cost/Benefit Affordability of Repayment Total Debt Load PART I - Conclusion Debt Criteria:

Part II: Deliberate Technical Debt Choosing or Not Choosing Debt…

Good: Deliver Early/On Time Bad: Detestable Code Ugly: The Spike Deliberate Technical Debt Why???

Maybe: Date Driven Development Yes: Feature Driven Development Deliberate Technical Debt Avoidable?

Shipping Date is Fixed Features Are Negotiable Often Less Desirable Deliberate Technical Debt Date-Driven Project

Features Are Fixed Shipping Date Is Negotiable Often More Desirable Deliberate Technical Debt Feature-Driven Project

Release Planning Tool Combines Well With Prioritization The MVP Concept “Minimal Viable Product”

Prioritization Sometimes…

Agile/Scrum: Backlog Traditional: Prioritization Needs Forethought Prioritization Key: By Business Value

M UST: Part of MVP S HOULD: High-Priority C OULD: Nice to Have W OULD: Maybe Later MoSCoW Prioritization

Part III: Minimizing Inadvertent Debt Discovering and Preventing Debt…

Process Tools Minimizing: How? 2 Angles:

Process: SDLC process: Engineering Practices Test First Development Minimizing: How? Process vs. process

Communications Technical Excellence Minimizing: Type of Tools 2 Objectives:

Standup Meeting Shared SME Design Reviews Code Reviews Minimizing: Communication Tools Tools We Use:

Unit Tests Code Contracts Static Code Analysis Adherence to Coding Standard Good Coding Practices Code Metrics Minimizing: Technical Tools Tools We Use:

Tool: Unit Tests Recommended Book: “The Art of Unit Testing”

A Unit Test is an automated piece of code that invokes the unit of work being tested and then checks some assumptions about a single end result of that unit. A unit test is almost always written using a unit-testing framework. It can be written easily and runs quickly. Tool: Unit Tests Roy Osherove’s Definition:

A Unit Test is trustworthy, readable and maintainable. It is consistent in its results as long as the production code has not changed. Tool: Unit Tests Roy Osherove’s Definition (cont’d):

/// /// This test demonstrates that constructor of /// the class is creating a topic session /// when it is being given valid configuration. /// [TestMethod] public void Constructor_ValidTibcoConfig_ReturnsNonNullTopicSession() { // ARRANGE var tibcoConfig = TestUtils.CreateValidTibcoConfig(); // ACT var venomSender = new VenomSender(tibcoConfig); // ASSERT Assert.IsNotNull(venomSender.TopicSession); } Unit Test Tips: Naming Convention [UnitOfWork]_[Condition]_[ExpectedResult]

/// /// This test demonstrates that constructor of /// the class is creating a topic session /// when it is being given valid configuration. /// [TestMethod] public void Constructor_ValidTibcoConfig_ReturnsNonNullTopicSession() { // ARRANGE var tibcoConfig = TestUtils.CreateValidTibcoConfig(); // ACT var venomSender = new VenomSender(tibcoConfig); // ASSERT Assert.IsNotNull(venomSender.TopicSession); } Unit Test Tips: Design Pattern Design Pattern: AAA

Use Happy Path Factory Helper Then, Create Single Sad Path Test Both Exception Type & Message Unit Test Tips: Sad Paths Maintainability Tip:

/// /// This test demonstrates that constructor of /// the class is throwing an exception /// when it is being passed a null SslCertStoreName. /// [TestMethod] public void Constructor_nullSslCertStoreName_ThrowsException() { // ARRANGE var tibcoConfig = TestUtils.CreateValidTibcoConfig(); tibcoConfig.SslCertStoreName = null; // ACT var venomSender = new VenomSender(tibcoConfig); // ASSERT // etc, } Unit Test Tips: Sad Path Design Pattern:

Method-Level Measure Calculated from Control Flow Graph Smaller Values Better <= 25 Acceptable Code Metrics Cyclomatic Complexity

Synthesis of Three Metrics Cyclomatic Complexity Lines of Code Computational Complexity Icons Color-Coded GREEN (>20) YELLOW (10-20) RED (<10) Not Expressed in Units! Code Metrics Maintainability Index

New to Me No Best Practices To Share Yet… Code Contracts Now Part of.NET!

Partially Matter of Opinion Let Tool Decide StyleCop ReSharper Coding Standard The Final Word…

Managing Technical Debt

Questions?