University of Southern California Center for Systems and Software Engineering Technical Debt Part II CS 577 Software Engineering Supannika Koolmanojwong.

Slides:



Advertisements
Similar presentations
Top 10 User Mistakes with Static Analysis Sate IV March 2012.
Advertisements

Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
The Relationship between Cost & Quality Submitted by: Haya A. El-Agha Submitted to: Eng. Hani Abu Amr.
Computer Engineering 203 R Smith Project Tracking 12/ Project Tracking Why do we want to track a project? What is the projects MOV? – Why is tracking.
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.
Important concepts in software engineering The tools to make it “easy to apply common sense”!
Important concepts in software engineering The tools to make it easy to apply common sense!
IS 214 Needs Assessment and Evaluation of Information Systems Managing Usability © Copyright 2001 Kevin McBride.
March 30, Exploratory Testing Testing Approaches Analytical Information-driven Intuitive Exploratory Design the tests and test concurrently Learn.
SE 555 Software Requirements & Specification Requirements Management.
Test Environments Arun Murugan – u Rohan Ahluwalia – u Shuchi Gauri – u
CPSC 875 John D. McGregor C20 – Technical Debt. Value-based SE SCS – success-critical stakeholder.
SE is not like other projects. l The project is intangible. l There is no standardized solution process. l New projects may have little or no relationship.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Development Processes and Product Planning
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Stoimen Stoimenov QA Engineer QA Engineer SitefinityLeads,SitefinityTeam6 Telerik QA Academy Telerik QA Academy.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Problems with reuse – Increased maintenance costs; lack of tool support; not-invented- here syndrome; creating, maintaining, and using a component library.
From 3 weeks to 30 minutes – a journey through the ups and downs of test automation.
Software Engineering Process I
INFO 637Lecture #81 Software Engineering Process II Integration and System Testing INFO 637 Glenn Booker.
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
BSBIMN501A QUEENSLAND INTERNATIONAL BUSINESS ACADEMY.
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Teaching material for a course in Software Project Management & Software Engineering – part II.
1 Software Development Configuration management. \ 2 Software Configuration  Items that comprise all information produced as part of the software development.
© S. Demeyer, S. Ducasse, O. Nierstrasz Intro.1 1. Introduction Goals Why Reengineering ?  Lehman's Laws  Object-Oriented Legacy Typical Problems  common.
University of Southern California Center for Systems and Software Engineering Technical Debt CS 577 Software Engineering Barry Boehm Supannika Koolmanojwong.
Branching. Version Control - Branching A way to write code without affecting the rest of your team Merge branches to integrate your changes.
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.
CS 577b Software Engineering II -- Introduction
1 Project Management Introduction. 2 Chap 1 What is the impact? 1994: 16% of IT projects completed “On-Time” 2004 : 29% of IT projects “On- Time” 53%
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
University of Southern California Center for Systems and Software Engineering Top Enablers and Inhibitors of Affordable Systems Supannika Koolmanojwong,
Georgia Institute of Technology CS 4320 Fall 2003.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
SE is not like other projects. l The project is intangible. l There is no standardized solution process. l New projects may have little or no relationship.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Product Management Or.. The most important thing most startups forget to do.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Test-Driven Development Eduard Miric ă. The problem.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
Overview of RUP Lunch and Learn. Overview of RUP © 2008 Cardinal Solutions Group 2 Welcome  Introductions  What is your experience with RUP  What is.
Software Engineering Principles Practical Advice and Steps for Managing Your Project.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Phoenix Scrum User Group Simplifying Scrum Online May 21 st 2009.
University of Southern California Center for Systems and Software Engineering Technical Debt CS 577 Software Engineering Supannika Koolmanojwong.
Yeah but.. What do I do? Software Leadership Dan Fleck 2007.
Introduction Requirements and the Software Lifecycle (3)
Cruise Training Introduction of Continuous Integration.
Chapter 8: Maintenance and Software Evolution Ronald J. Leach Copyright Ronald J. Leach, 1997, 2009, 2014,
Organizing and leading the IT function Two set of tensions guide policies for developing, deploying and managing IT systems. 1.Innovation and control a.How.
Benjamin Day Get Good at DevOps: Feature Flag Deployments with ASP.NET, WebAPI, & JavaScript.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Software Development Module Code: CST 240 Chapter 6: Software Maintenance Al Khawarizmi International College, AL AIN, U.A.E Lecturer: Karamath Ateeq.
Managing the Project Lifecycle
Integrate Agile Testing into the Process
Taking an Iteration Down to Code
Johanna Rothman Create Technical Excellence Chapter 9
CS 577b Software Engineering II -- Introduction
Software Quality Engineering
Software Testing and Maintenance Maintenance and Evolution Overview
Dr. Rob Hasker SE 3800 Note 9 Reviews.
Case Study 1 By : Shweta Agarwal Nikhil Walecha Amit Goyal
Extreme Programming.
KEY INITIATIVE Financial Data and Analytics
Extreme Programming (and Pair Programming)
Presentation transcript:

University of Southern California Center for Systems and Software Engineering Technical Debt Part II CS 577 Software Engineering Supannika Koolmanojwong

University of Southern California Center for Systems and Software Engineering Outline Technical Debt – revisit Technical Debt quadrant Checklist to prevent Technical Debt 2

University of Southern California Center for Systems and Software Engineering Technical Debt “is a measure of how untidy or out-of-date the development work area for a product is” Not the deferred requirements 3

University of Southern California Center for Systems and Software Engineering Symptoms of Technical Debt Lack of / poor documentation Untested code Suppressed errors Unshared knowledge between teams or people Confusing code, inconsistencies, “workarounds” Local changes you’ve not committed Code that doesn’t follow coding standards Non-existent or improperly used version control Unstable deployment process Duplicate code blocks Individual code ownership 3 rd party software that needs updated or patched. 4

University of Southern California Center for Systems and Software Engineering Technical Debt “I don’t know what happened, I just changed one line” “We can’t upgrade, It will break” “We can’t upgrade the code, we don’t have time” “We can’t upgrade the code, no one understands it” “Just put in the comment XXX, we will do it later” “Just put in the TODO comment” 5

University of Southern California Center for Systems and Software Engineering Common causes of technical debt Business pressures Lack of process or understanding Lack of building loosely coupled components (hard-coded) Lack of documentation Parallel Development Delayed Refactoring 6

University of Southern California Center for Systems and Software Engineering Technical Debt Error-prone code “.. If I change X, it is going to break Y, I think..” “ Don’t touch that code, last time we did, we spent a week fixing it…” 20% of the code where 80% of bugs are found Hard to understand Dangerous to change because done poorly one in the first place Not rewriting this code is one of the most expensive mistakes that developers make Read more: 7

University of Southern California Center for Systems and Software Engineering Technical Debt Not easily tested “.. I thought we had a test for that..” Don’t have good automated tests Tests keep falling apart when you change the code Testing costs tend to go up over time as you write more code Read more: 8

University of Southern California Center for Systems and Software Engineering Technical Debt Code that mysteriously works nobody is sure how or why Might be written by the geek who left the company if nobody on the team understands it, it’s a time bomb Read more: 9

University of Southern California Center for Systems and Software Engineering Technical Debt Others Forward and backward compatibility –Short term debt Duplicate, copy-and-paste code –How many ? Trackable ? Hard coding Out of date documentation –“We just lost the drive, where are the backups” –If nobody is using it, get rid of it. If people are using it, why isn’t it up to date? Read more: 10

University of Southern California Center for Systems and Software Engineering Analysis DesignImplementation TestIntegration Development Cost % Effort per Phase Technical Debt? Technical Debt? Technical Debt? Technical Debt? Real worldPerfect World 11

University of Southern California Center for Systems and Software Engineering Analysis DesignImplementation TestIntegration Development Cost % Effort per Phase Technical Debt? Technical Debt? Real worldPerfect World 12

University of Southern California Center for Systems and Software Engineering Analysis DesignImplementation TestIntegration COTS Integration % Effort per Phase Technical Debt? Real worldPerfect World 13

University of Southern California Center for Systems and Software Engineering Technical Debt Quadrant 14 Somewhat OK … It lets you hit a deadline It lets you test an experimental feature The code is rarely touched Your code is at the end of the life-cycle Not OK… Sloppy Lazy Careless

University of Southern California Center for Systems and Software Engineering Technical Debt Quadrant 15 We know we are taking shortcuts, but we do it anyway Sometimes we don’t know any better, or the debt is not our fault -Inexperienced team members -Requirements volatility -Post-release retrospectives -Security patches or updates from 3 rd parties

University of Southern California Center for Systems and Software Engineering Technical Debt Quadrant 16

University of Southern California Center for Systems and Software Engineering To tackle the technical debt Discover –Use good practices –Checklist, peer review, V&V Estimate Break Down Task & Track 17

University of Southern California Center for Systems and Software Engineering Managing Technical Debt Use good technical practices –TDD, Test automation, continuous integration –Refactoring, risk analysis, V&V Use a strong definition of done Properly understand technical debt economics –Cost of taking on the debt Cost of additional work Interest payment Cost of delaying the development of future products –Benefit that we may receive 18

University of Southern California Center for Systems and Software Engineering Checklist - Code related Well comment? Follow code style standard ? Carefully look at overly complex code –A couple layers of indenting Follow MVC pattern? LOC / class or method –The longer the worse Duplicate code anywhere ? 19

University of Southern California Center for Systems and Software Engineering Checklist - Platform / architecture / build Rely on third party? –When was the last time we upgraded these components? Rely on outdated libraries? –May no loner work Standard IDE configuration? –What about other developer? How long does it take to build ? –Long build – developers lose focus Configuration? –Build in one machine ? Need separate machines? 20

University of Southern California Center for Systems and Software Engineering Checklist - Test Can QA team build / run automated tests? Any automated testing tools ? What % of code is covered by automated test? How do you do continuous integration? 21

University of Southern California Center for Systems and Software Engineering Estimate Cost of taking on the debt –Cost of additional work –Interest payment –Cost of delaying the development of future products Benefit that we may receive 22

University of Southern California Center for Systems and Software Engineering Breakdown Loan = cost to fix Interest rate = adverse impact on development Every task breaks down into 2 categories –Debts where we continue paying interest –Debts where we pay the principle VB-concept –Paying it off by focusing on the highest interest rate 23

University of Southern California Center for Systems and Software Engineering Task and Track How can we make it visible? –Bug tracker, task board 24

University of Southern California Center for Systems and Software Engineering What Practitioners say about TD Short-term benefits versus Long-term Pain –Mostly intentional decisions to tradeoff –Short-term thinking reaction to the pressure –What shortcuts can you make to get the product out faster  resulting in increased complexity, poor performance, low maintainability, fragile code, reliability and stability 25 A Balancing Act: What Software Practitioners Have to Say about Technical Debt, Erin Lim, Nitin Taksande, Carolyn Seaman, IEEE Software, Vol. 29, No. 6, 22-27, 2012

University of Southern California Center for Systems and Software Engineering What Practitioners say about TD Software Quality versus Business Reality –System’s unpredictability –Cut back some activities - review –On several occasions, technical debt is good Deliver on time for the trade show Catch the shopping window Prototype to secure investor funding 26

University of Southern California Center for Systems and Software Engineering What Practitioners say about TD Customers’ expectations vs Their needs and wants –Customers don’t know what they want, not clarifying their intention –On the other hand, release product faster to get customer feedback –Uncertainty over market’s direction Becomes technical debt when receive new info –Commitment to the customer took precedence 27

University of Southern California Center for Systems and Software Engineering What Practitioners say about TD Measuring Debt and communicating its consequences –Not easy, impact is not uniform –Usually matter / visible to developers more than customers –Need to show tangible number to convince managers –Once they understood TD clearly, they were cooperative 28

University of Southern California Center for Systems and Software Engineering What Practitioners say about TD A coherent code base versus just getting stuff done –Developers see TD as bugs, defects, issues –Managers see TD as risks –People with “getting stuff done” attitude tends to incur more technical debt 29

University of Southern California Center for Systems and Software Engineering Lesson learned Strategies to deal with TD Do nothing – if it ain’t broke, don’t fix it –The debt might not ever become visible to the customer Use risk management –Allocate 10% of each release cycle to address TD Customer expectation management –Have open dialogue Conduct audit with the whole team and track them 30