SlideShare una empresa de Scribd logo
1 de 23
Technical Debt and
     Requirements
                  Neil Ernst
       University of British Columbia
@neilernst • neil@neilernst.net • neilernst.net
Overview
 • Requirements represent product’s business
   value and quality goals.
 • “Technical debt is acquired when engineers
   take shortcuts that fall short of best
   practices.” -- Eric Allman, CACM 55(5)


Short-cuts in requirements phase(s)
   a source of Technical Debt.
2008


 Firefox
2008


 Firefox

2012
Characteristics
Characteristics
• Benefit = Time saved not doing
  requirements work.
Characteristics
• Benefit = Time saved not doing
  requirements work.
• Risk = Possibility that we miss intent,
  leading to “rework”.
Characteristics
• Benefit = Time saved not doing
  requirements work.
• Risk = Possibility that we miss intent,
  leading to “rework”.
• Interest = Misunderstood req in V1
  might lead to further misses in V2, if
  requirements build on top of one another.
Characteristics
• Benefit = Time saved not doing
  requirements work.
• Risk = Possibility that we miss intent,
  leading to “rework”.
• Interest = Misunderstood req in V1
    might lead to further misses in V2, if
    requirements build on top of one another.
•   Repayment = Reprioritize, re-analyse,
    process improvements.
Requirements Debt



              Design Debt



                            Code Debt
Should have compiled ALL
Requirements Debt   Javascript to begin with



              Design Debt



                            Code Debt
Should have compiled ALL
Requirements Debt   Javascript to begin with

                               Rearchitect to
                               support base
              Design Debt
                               compilation


                            Code Debt
Should have compiled ALL
Requirements Debt   Javascript to begin with

                               Rearchitect to
                               support base
              Design Debt
                               compilation


                            Code Debt


                                Implement new
                                code; test; deliver
Should have compiled ALL
Requirements Debt   Javascript to begin with

                               Rearchitect to
                               support base
              Design Debt
                               compilation


                            Code Debt

Interest
                                Implement new
                                code; test; deliver
TD in Requirements
• Technical debt incurred when we do not
  conduct “sufficient” requirements
  analysis:
 •   we gamble that more elicitation or analysis will not
     help,
 •   because that issue may not even be relevant!
 •   If it is relevant, than we go back and fix it.
• Key business decision: what is sufficient?
• Can tools help.
Other Examples

• “TBDs and maintenance” (MTD 10)
• Risk analysis and mitigation (JPL)
• Evolving user stories (SAP)
Optimizing decisions
• At start of iteration question is “what is
  the best trajectory to pick”?
• What is best set of ‘work items’ to
  prioritize?
• RE-KOMBINE automatically calculates
    the optimal strategy for satisfying the
    given set of requirements.
•   Relations between requirements matter.
Surfacing requirements debt



• Mine repositories for requirements data
• Track usage data
Command             Executions
      edit.Delete           5.4 M
       file.Save             4.3 M
      edit.Paste            3.8 M
      edit.Copy             2.4 M
ContentAssist.proposals     1.4 M
Command                  Executions
        edit.Delete                 5.4 M
         file.Save                   4.3 M
         edit.Paste                 3.8 M
         edit.Copy                  2.4 M
  ContentAssist.proposals           1.4 M

       Command                     Executions
   window.previousView                 9
      navigate.Back                     69
  window.showViewMenu                   89
window.previousPerspective              155
  window.previousEditor                 166
                      Data: Eclipse UPP, 200908, eclipse.ui, 3.5.0
Summary
• Debt is incurred when we do not do
  sufficient requirements work.
• Requirements capture value, and should be
  first-class citizens in software development.
• Support dev in understanding how software
  is meeting business and quality goals.
• Tracking historical tendency, we can
  improve our understanding of the problem
  space(s).
Research Directions
1. What is the relationship between
   process debt and requirements debt?
2. Analysis-paralysis vs. wearing
   blinders
3. Transitioning from ‘agile’
   requirements to up-front design.
4. How do we track requirements debt?

                 Neil Ernst: @neilernst • neilernst.net

Más contenido relacionado

La actualidad más candente

Managing technical debt notes
Managing technical debt notesManaging technical debt notes
Managing technical debt notes
Fadi Stephan
 
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev opsKim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
Gene Kim
 
SecureWorld Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
SecureWorld   Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6aSecureWorld   Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
SecureWorld Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
Gene Kim
 

La actualidad más candente (20)

The Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" NortonThe Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" Norton
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt Trap
 
Managing technical debt notes
Managing technical debt notesManaging technical debt notes
Managing technical debt notes
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debt
 
Technical Debt - osbridge
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridge
 
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
 
Agile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt TrapAgile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt Trap
 
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit AnalysisTowards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
 
Technical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailedTechnical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailed
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and Impacts
 
Acquiforce H4D Stanford 2018 final presentation
Acquiforce H4D Stanford 2018 final presentationAcquiforce H4D Stanford 2018 final presentation
Acquiforce H4D Stanford 2018 final presentation
 
Flexible FIngerprints H4D 2021 Lessons Learned
Flexible FIngerprints H4D 2021 Lessons LearnedFlexible FIngerprints H4D 2021 Lessons Learned
Flexible FIngerprints H4D 2021 Lessons Learned
 
The SQALE method: Meaningful insights into your Technical Debt
The SQALE method: Meaningful insights into your Technical DebtThe SQALE method: Meaningful insights into your Technical Debt
The SQALE method: Meaningful insights into your Technical Debt
 
PuppetConf2012GeneKim
PuppetConf2012GeneKimPuppetConf2012GeneKim
PuppetConf2012GeneKim
 
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev opsKim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
 
When IT Fails The Business Fails...
When IT Fails The Business Fails...When IT Fails The Business Fails...
When IT Fails The Business Fails...
 
SecureWorld Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
SecureWorld   Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6aSecureWorld   Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
SecureWorld Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
 
Gutenberg H4D Stanford 2019
Gutenberg H4D Stanford 2019Gutenberg H4D Stanford 2019
Gutenberg H4D Stanford 2019
 
Managing Software Debt in Practice 2011
Managing Software Debt in Practice 2011Managing Software Debt in Practice 2011
Managing Software Debt in Practice 2011
 
When IT Fails: A Business Novel - ITSM Academy Webinar
When IT Fails: A Business Novel - ITSM Academy WebinarWhen IT Fails: A Business Novel - ITSM Academy Webinar
When IT Fails: A Business Novel - ITSM Academy Webinar
 

Similar a Technical Debt and Requirements

How to Migrate Applications Off a Mainframe
How to Migrate Applications Off a MainframeHow to Migrate Applications Off a Mainframe
How to Migrate Applications Off a Mainframe
VMware Tanzu
 
Software requirements engineering lecture 01
Software requirements engineering   lecture 01Software requirements engineering   lecture 01
Software requirements engineering lecture 01
Abdul Basit
 
Ehab wafik CV(1)
Ehab wafik CV(1)Ehab wafik CV(1)
Ehab wafik CV(1)
Ehab Wafik
 
Nearshoring With Tiempo 2011
Nearshoring With Tiempo 2011Nearshoring With Tiempo 2011
Nearshoring With Tiempo 2011
rgfordham
 

Similar a Technical Debt and Requirements (20)

Integrating agile in a waterfall world pmi 2012, full slides
Integrating agile in a waterfall world pmi 2012, full slidesIntegrating agile in a waterfall world pmi 2012, full slides
Integrating agile in a waterfall world pmi 2012, full slides
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
Critical Capabilities to Shifting Left the Right Way
Critical Capabilities to Shifting Left the Right WayCritical Capabilities to Shifting Left the Right Way
Critical Capabilities to Shifting Left the Right Way
 
JIRA Studio: Development in the Cloud - Atlassian Summit 2010
JIRA Studio: Development in the Cloud - Atlassian Summit 2010JIRA Studio: Development in the Cloud - Atlassian Summit 2010
JIRA Studio: Development in the Cloud - Atlassian Summit 2010
 
How to Migrate Applications Off a Mainframe
How to Migrate Applications Off a MainframeHow to Migrate Applications Off a Mainframe
How to Migrate Applications Off a Mainframe
 
Shipra_Harlalka
Shipra_Harlalka Shipra_Harlalka
Shipra_Harlalka
 
Software requirements engineering lecture 01
Software requirements engineering   lecture 01Software requirements engineering   lecture 01
Software requirements engineering lecture 01
 
How to Better Manage Technical Debt While Innovating on DevOps
How to Better Manage Technical Debt While Innovating on DevOpsHow to Better Manage Technical Debt While Innovating on DevOps
How to Better Manage Technical Debt While Innovating on DevOps
 
Agile Engineering Traceability
Agile Engineering TraceabilityAgile Engineering Traceability
Agile Engineering Traceability
 
Niraj Choudhary_Resume
Niraj Choudhary_ResumeNiraj Choudhary_Resume
Niraj Choudhary_Resume
 
1 Billion Events per Day, Israel 3rd Java Technology Day, June 22, 2009
1 Billion Events per Day, Israel 3rd Java Technology Day, June 22, 20091 Billion Events per Day, Israel 3rd Java Technology Day, June 22, 2009
1 Billion Events per Day, Israel 3rd Java Technology Day, June 22, 2009
 
Technical debt
Technical debtTechnical debt
Technical debt
 
Improving the Quality of Existing Software
Improving the Quality of Existing SoftwareImproving the Quality of Existing Software
Improving the Quality of Existing Software
 
Amit_Resume
Amit_ResumeAmit_Resume
Amit_Resume
 
How to Introduce Continuous Delivery
How to Introduce Continuous DeliveryHow to Introduce Continuous Delivery
How to Introduce Continuous Delivery
 
Ehab wafik CV(1)
Ehab wafik CV(1)Ehab wafik CV(1)
Ehab wafik CV(1)
 
CV - Abhijit
CV - AbhijitCV - Abhijit
CV - Abhijit
 
10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming
 
Nearshoring With Tiempo 2011
Nearshoring With Tiempo 2011Nearshoring With Tiempo 2011
Nearshoring With Tiempo 2011
 
Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategies
 

Más de Neil Ernst

Finding Incremental Solutions for Evolving Requirements
Finding Incremental Solutions for Evolving Requirements Finding Incremental Solutions for Evolving Requirements
Finding Incremental Solutions for Evolving Requirements
Neil Ernst
 
Introduction for CCASR
Introduction for CCASRIntroduction for CCASR
Introduction for CCASR
Neil Ernst
 

Más de Neil Ernst (11)

Critical Research Review at EmpiRE 2015
Critical Research Review at EmpiRE 2015Critical Research Review at EmpiRE 2015
Critical Research Review at EmpiRE 2015
 
Using AI to Model Quality Attribute Tradeoffs
Using AI to Model Quality Attribute TradeoffsUsing AI to Model Quality Attribute Tradeoffs
Using AI to Model Quality Attribute Tradeoffs
 
Supporting Agile Requirements Evolution via Paraconsistent Reasoning
Supporting Agile Requirements Evolution via Paraconsistent ReasoningSupporting Agile Requirements Evolution via Paraconsistent Reasoning
Supporting Agile Requirements Evolution via Paraconsistent Reasoning
 
Requirements Evolution Drives Software Evolution
Requirements Evolution Drives Software EvolutionRequirements Evolution Drives Software Evolution
Requirements Evolution Drives Software Evolution
 
Finding Incremental Solutions for Evolving Requirements
Finding Incremental Solutions for Evolving Requirements Finding Incremental Solutions for Evolving Requirements
Finding Incremental Solutions for Evolving Requirements
 
Adoption-Centric Knowledge Engineering
Adoption-Centric Knowledge EngineeringAdoption-Centric Knowledge Engineering
Adoption-Centric Knowledge Engineering
 
Introduction for CCASR
Introduction for CCASRIntroduction for CCASR
Introduction for CCASR
 
Visualizing non-functional requirements
Visualizing non-functional requirementsVisualizing non-functional requirements
Visualizing non-functional requirements
 
Reasoning with optional and preferred requirements
Reasoning with optional and preferred requirementsReasoning with optional and preferred requirements
Reasoning with optional and preferred requirements
 
Using requirements to retrace software evolution history
Using requirements to retrace software evolution historyUsing requirements to retrace software evolution history
Using requirements to retrace software evolution history
 
On the perception of software quality requirements during the project lifecycle
On the perception of software quality requirements during the project lifecycleOn the perception of software quality requirements during the project lifecycle
On the perception of software quality requirements during the project lifecycle
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Technical Debt and Requirements

  • 1. Technical Debt and Requirements Neil Ernst University of British Columbia @neilernst • neil@neilernst.net • neilernst.net
  • 2. Overview • Requirements represent product’s business value and quality goals. • “Technical debt is acquired when engineers take shortcuts that fall short of best practices.” -- Eric Allman, CACM 55(5) Short-cuts in requirements phase(s) a source of Technical Debt.
  • 6. Characteristics • Benefit = Time saved not doing requirements work.
  • 7. Characteristics • Benefit = Time saved not doing requirements work. • Risk = Possibility that we miss intent, leading to “rework”.
  • 8. Characteristics • Benefit = Time saved not doing requirements work. • Risk = Possibility that we miss intent, leading to “rework”. • Interest = Misunderstood req in V1 might lead to further misses in V2, if requirements build on top of one another.
  • 9. Characteristics • Benefit = Time saved not doing requirements work. • Risk = Possibility that we miss intent, leading to “rework”. • Interest = Misunderstood req in V1 might lead to further misses in V2, if requirements build on top of one another. • Repayment = Reprioritize, re-analyse, process improvements.
  • 10. Requirements Debt Design Debt Code Debt
  • 11. Should have compiled ALL Requirements Debt Javascript to begin with Design Debt Code Debt
  • 12. Should have compiled ALL Requirements Debt Javascript to begin with Rearchitect to support base Design Debt compilation Code Debt
  • 13. Should have compiled ALL Requirements Debt Javascript to begin with Rearchitect to support base Design Debt compilation Code Debt Implement new code; test; deliver
  • 14. Should have compiled ALL Requirements Debt Javascript to begin with Rearchitect to support base Design Debt compilation Code Debt Interest Implement new code; test; deliver
  • 15. TD in Requirements • Technical debt incurred when we do not conduct “sufficient” requirements analysis: • we gamble that more elicitation or analysis will not help, • because that issue may not even be relevant! • If it is relevant, than we go back and fix it. • Key business decision: what is sufficient? • Can tools help.
  • 16. Other Examples • “TBDs and maintenance” (MTD 10) • Risk analysis and mitigation (JPL) • Evolving user stories (SAP)
  • 17. Optimizing decisions • At start of iteration question is “what is the best trajectory to pick”? • What is best set of ‘work items’ to prioritize? • RE-KOMBINE automatically calculates the optimal strategy for satisfying the given set of requirements. • Relations between requirements matter.
  • 18. Surfacing requirements debt • Mine repositories for requirements data • Track usage data
  • 19.
  • 20. Command Executions edit.Delete 5.4 M file.Save 4.3 M edit.Paste 3.8 M edit.Copy 2.4 M ContentAssist.proposals 1.4 M
  • 21. Command Executions edit.Delete 5.4 M file.Save 4.3 M edit.Paste 3.8 M edit.Copy 2.4 M ContentAssist.proposals 1.4 M Command Executions window.previousView 9 navigate.Back 69 window.showViewMenu 89 window.previousPerspective 155 window.previousEditor 166 Data: Eclipse UPP, 200908, eclipse.ui, 3.5.0
  • 22. Summary • Debt is incurred when we do not do sufficient requirements work. • Requirements capture value, and should be first-class citizens in software development. • Support dev in understanding how software is meeting business and quality goals. • Tracking historical tendency, we can improve our understanding of the problem space(s).
  • 23. Research Directions 1. What is the relationship between process debt and requirements debt? 2. Analysis-paralysis vs. wearing blinders 3. Transitioning from ‘agile’ requirements to up-front design. 4. How do we track requirements debt? Neil Ernst: @neilernst • neilernst.net

Notas del editor

  1. 3 points\noutline\n\n
  2. And let’s be clear, planning happens in even the smallest project - but perhaps different artifacts or process.\nIn this talk I am going to introduce what I think is the analogue of a ‘code smell’ in requirements. I’ll begin with a working example, and then introduce how and where the TD metaphor fits with requirements. I’ll talk briefly about some work I have done on reducing TD in req., and some of the work we are currently looking at in terms of software planning and development. I’ll end with a few discussion questions for the group. \n\nI am going to briefly discuss what TD in Req is; then introduce an example that shows how this plays out in Firefox. I will then talk about how we might use tools to help us manage this type of debt. And I’ll finish with some future work and research questions. \n\n
  3. \n
  4. \n
  5. \n
  6. Context: Javascript in the browser. \nAug 2008 - TraceMonkey from Tamarin project of Adobe. Legacy code base. but good on performance. \nDesign choice: use tracing rather than total compilation. Only compile difficult pieces (http://hacks.mozilla.org/2010/03/improving-javascript-performance-with-jagermonkey/)\nProblem: truns out for a lot of pages that you have to switch back and forth a lot. So go back and add in a baseline JIT + tracing ability (JM).\ngoal of being clean and flexible and fast\n 578133 - (JaegerSpeed) [meta] JM: Make us fast!\n “as people finish these bugs, please post SunSpider comparisons, so we can check the expected win against the actual win, and make sure that we're on track to get where we need to be\n“This is a tracking bug for things that improve our perf, but only a tiny bit. Things linked directly from here should be considered low priority, unless someone discovers an easy way of doing them, or we find out they are more important than first believed.”- see AreWeFastYet.com\nNew problems: lots of code debt from multiple developers, Adobe contribution, etc. Hard to manoeuvre (this shows that the requirements and design debt are influencing the code debt and vice versa).\nThe narrative: FF working on new JIT compiler. One of the main goals is speed. But what features will help with speed requirement? Not sure yet. E.g. bug 582152: Sync earlier to avoid load stalls on doubles was originally in the tiny-perf bug 578225 but then linked into the main speed bug 578133 as it was realized how much it helped. \nTech debt in RE would suggest that focusing on small improvements over large ones would be a debt.\nSmall wins:\n23 bugs of which 5 are not fixed (22%)\nBig wins: \n67 bugs tracked of which 10 are not fixed (15%)\nThis seems like a sensible approach - most effort is focused on big wins. And no way to tell ahead of time? \nCould argue FF couldn’t knpw tracing wasn’t good in 2008. But 2 other teams did.\n
  7. Context: Javascript in the browser. \nAug 2008 - TraceMonkey from Tamarin project of Adobe. Legacy code base. but good on performance. \nDesign choice: use tracing rather than total compilation. Only compile difficult pieces (http://hacks.mozilla.org/2010/03/improving-javascript-performance-with-jagermonkey/)\nProblem: truns out for a lot of pages that you have to switch back and forth a lot. So go back and add in a baseline JIT + tracing ability (JM).\ngoal of being clean and flexible and fast\n 578133 - (JaegerSpeed) [meta] JM: Make us fast!\n “as people finish these bugs, please post SunSpider comparisons, so we can check the expected win against the actual win, and make sure that we're on track to get where we need to be\n“This is a tracking bug for things that improve our perf, but only a tiny bit. Things linked directly from here should be considered low priority, unless someone discovers an easy way of doing them, or we find out they are more important than first believed.”- see AreWeFastYet.com\nNew problems: lots of code debt from multiple developers, Adobe contribution, etc. Hard to manoeuvre (this shows that the requirements and design debt are influencing the code debt and vice versa).\nThe narrative: FF working on new JIT compiler. One of the main goals is speed. But what features will help with speed requirement? Not sure yet. E.g. bug 582152: Sync earlier to avoid load stalls on doubles was originally in the tiny-perf bug 578225 but then linked into the main speed bug 578133 as it was realized how much it helped. \nTech debt in RE would suggest that focusing on small improvements over large ones would be a debt.\nSmall wins:\n23 bugs of which 5 are not fixed (22%)\nBig wins: \n67 bugs tracked of which 10 are not fixed (15%)\nThis seems like a sensible approach - most effort is focused on big wins. And no way to tell ahead of time? \nCould argue FF couldn’t knpw tracing wasn’t good in 2008. But 2 other teams did.\n
  8. Context: Javascript in the browser. \nAug 2008 - TraceMonkey from Tamarin project of Adobe. Legacy code base. but good on performance. \nDesign choice: use tracing rather than total compilation. Only compile difficult pieces (http://hacks.mozilla.org/2010/03/improving-javascript-performance-with-jagermonkey/)\nProblem: truns out for a lot of pages that you have to switch back and forth a lot. So go back and add in a baseline JIT + tracing ability (JM).\ngoal of being clean and flexible and fast\n 578133 - (JaegerSpeed) [meta] JM: Make us fast!\n “as people finish these bugs, please post SunSpider comparisons, so we can check the expected win against the actual win, and make sure that we're on track to get where we need to be\n“This is a tracking bug for things that improve our perf, but only a tiny bit. Things linked directly from here should be considered low priority, unless someone discovers an easy way of doing them, or we find out they are more important than first believed.”- see AreWeFastYet.com\nNew problems: lots of code debt from multiple developers, Adobe contribution, etc. Hard to manoeuvre (this shows that the requirements and design debt are influencing the code debt and vice versa).\nThe narrative: FF working on new JIT compiler. One of the main goals is speed. But what features will help with speed requirement? Not sure yet. E.g. bug 582152: Sync earlier to avoid load stalls on doubles was originally in the tiny-perf bug 578225 but then linked into the main speed bug 578133 as it was realized how much it helped. \nTech debt in RE would suggest that focusing on small improvements over large ones would be a debt.\nSmall wins:\n23 bugs of which 5 are not fixed (22%)\nBig wins: \n67 bugs tracked of which 10 are not fixed (15%)\nThis seems like a sensible approach - most effort is focused on big wins. And no way to tell ahead of time? \nCould argue FF couldn’t knpw tracing wasn’t good in 2008. But 2 other teams did.\n
  9. Debt has these properties\nThe TD is not in the fact that we built the wrong thing. That is the cost. The debt is incurred when we take a short-cut. Interest is the fact that we now have to maintain these features, that we might have wasted time (which has value), and that we may have confused the stakeholders. “Compound” your mistake.\n\n
  10. Debt has these properties\nThe TD is not in the fact that we built the wrong thing. That is the cost. The debt is incurred when we take a short-cut. Interest is the fact that we now have to maintain these features, that we might have wasted time (which has value), and that we may have confused the stakeholders. “Compound” your mistake.\n\n
  11. Debt has these properties\nThe TD is not in the fact that we built the wrong thing. That is the cost. The debt is incurred when we take a short-cut. Interest is the fact that we now have to maintain these features, that we might have wasted time (which has value), and that we may have confused the stakeholders. “Compound” your mistake.\n\n
  12. Debt has these properties\nThe TD is not in the fact that we built the wrong thing. That is the cost. The debt is incurred when we take a short-cut. Interest is the fact that we now have to maintain these features, that we might have wasted time (which has value), and that we may have confused the stakeholders. “Compound” your mistake.\n\n
  13. The size of the box indicates the amount of debt undertaken in terms of person-hours.\n
  14. The size of the box indicates the amount of debt undertaken in terms of person-hours.\n
  15. The size of the box indicates the amount of debt undertaken in terms of person-hours.\n
  16. The size of the box indicates the amount of debt undertaken in terms of person-hours.\n
  17. The size of the box indicates the amount of debt undertaken in terms of person-hours.\n
  18. The size of the box indicates the amount of debt undertaken in terms of person-hours.\n
  19. The size of the box indicates the amount of debt undertaken in terms of person-hours.\n
  20. The size of the box indicates the amount of debt undertaken in terms of person-hours.\n
  21. You’ve all seen this curve before. Some of you pioneered it!\n\nWhat it says to me in the context of technical debt is that the tech debt is bending the slope of this curve. And, as we all know, if we can bend that curve downward earlier, we are much better off. \n\nAnd looking for a way to quantify these changes.\n
  22. You’ve all seen this curve before. Some of you pioneered it!\n\nWhat it says to me in the context of technical debt is that the tech debt is bending the slope of this curve. And, as we all know, if we can bend that curve downward earlier, we are much better off. \n\nAnd looking for a way to quantify these changes.\n
  23. I am focused primarily on the Intent box. Mischaracterizing intent.\n\nIntent - often the ‘requirements’. Product - what was achieved. Work - how things get done, not necessarily delivered. Emails, bug tickets, standups, etc. I’m propagating Phillippe’s attempt to de-formalize methodology titles. Although he is responsible for Rational Unified Process.\nSo is technical debt solely about one of these boxes? I.e., product quality over time? What about intent quality over time? Or is it rather about all of them? About shortcuts where we do a tradeoff for short-term gain for long-term pain. Hiring the good CV instead of demoing an employee, \n\n\nWe can even relate this to Highsmith’s extrinsic/intrinsic quality triangle (Value, Quality, Constraint): Value is Intent, Quality is Product, and People/Work is constraint. \n\nreal problem with Standish - cost/duration are only 2 legs of the triangle - want value as well\n
  24. (c) P. Kruchten\n
  25. The implementation is “fully known” however.\n\nso technical debt in requirements is when we take a short-cut on our route. Could be seen as process debt. Tech debt is also inverse - over-analysing the wrong thing and taking too long to get to market - the rumpus intersects our path. \n\nSEI - minimize rework - ie changed requirements. Release planning. Bridge gap with business/IT. Ozkaya’s phrase: delivery of working software that meets its business and quality goals. Tradeoff with overengineering can be resolved with business goal analysis \n\nMonitoring - how happy are customers? How used are the features, e.g. using clickmaps, web logs, API access.\n
  26. \n\nThis is a re-emphasis slide. I should make it clear what specifically TD removal might look like.\nBest practices. What could FF have done in 2008? Risk analysis a la Boehm; better req tracking; involve \noutside academics? \n\n80% of features not needed.\n\n
  27. - inf. sclerosis: “temporary workarounds for software deficiencies increasingly solidify into unchangeable constraints on evolution”. E.g. “it’s nice to see that you could change those equipment codes to make them more intelligible for us, but the Codes Committee just met and established the current codes as the company standard.” p24 We took the requirements as one thing, but then couldn’t refactor it after the sprint ended.\n- MTD 10 - the quote from the paper\n- From CAST: Are all the business rules that drive the software abstracted to effective-dated metadata? Can their metadata be configured non-destructively? Are there any business rules expressed as application code?\n- risk analysis - if there is little risk to a mistaken requirement, don’t spend too much time on it. NASA at forefront of best practices.\n “information sclerosis” (Boehm 86)\n Business rule metadata (CAST)\n\n
  28. Gas pedal. and my version of SRI. \nIt imposes some structure on your reasoning over the problem and then finds the best soln.\nCould argue it is too much overhead, but reality is that might be needed. \nAnother benefit - satisfaction of multiple requriements with one implementation. When requirements changes, in other words, the system might already be capable. \n
  29. You’ve all seen this curve before. Some of you pioneered it!\n\nWhat it says to me in the context of technical debt is that the tech debt is bending the slope of this curve. And, as we all know, if we can bend that curve downward earlier, we are much better off. \n\nAnd looking for a way to quantify these changes.\n
  30. This slide talks about my current work.\n\nOne of the things we’re looking at is how requirements are treated in practice. We look at a few projects with open repositories, like CONNECT, and try to see how they are doing requirements. That will let us experiment with some measures of requirements debt.\ne.g., feature requests or user stories\ne.g., this graph of what commands Eclipse people use.\n\nUsage data is a symptom of requirements debt. You priortizied a user story no one cared about, and wasted time. There is debt in poor requriements gathering (what else was missed?) and in features peple now have to maintain and worry about (sclerotic).\n
  31. \n
  32. \n
  33. \n
  34. Payback process\nInterest amount\nGold-plating vs under-estimating\n
  35. 1. Process debt is shortcuts in the process, e.g. no onsite customer. Requirements debt is related but more about shortcuts in analysis or modeling (if we think of elicitation as part of process). At any rate these debts compound each other. \n2. Do we have to actually commit code and release it to recognize debt in requirements? I don’t think so for req, just that you commit to that story. I.e. post exploration is only time you can see it. For code absolutely.\n4. Like buying a house - how do we do option valuations when we don’t have a good sense for the metric to track the underlying asset?\nMozilla case - as system grows, not only do we need to deal with the artifact debt, but also process debt - that we aren’t doing enough requirements gathering, or we aren’t looking in the right places, not understanding the stakeholders. Transitioning out of your niche. \n\nTrack it by measuring failed acceptance tests, or perhaps unsuccessful launches. Measure feature usage.\n