Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y.,...

50
Technical Debt October 2011 Copyright © 2011 by Philippe Kruchten 1 Managing Technical Debt Philippe Kruchten Agile Vancouver, October 27, 2001 Philippe Kruchten, Ph.D., P.Eng., CSDP Professor of So)ware Engineering NSERC Chair in Design Engineering Department of Electrical and Computer Engineering University of BriJsh Columbia Vancouver, BC Canada [email protected] Founder and president Kruchten Engineering Services Ltd Vancouver, BC Canada [email protected] 2 Copyright © 2011 by Philippe Kruchten

Transcript of Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y.,...

Page 1: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   1  

Managing  Technical  Debt  

Philippe  Kruchten  Agile  Vancouver,  October  27,  2001  

Philippe  Kruchten,  Ph.D.,  P.Eng.,  CSDP  

Professor  of  So)ware  Engineering  NSERC  Chair  in  Design  Engineering  Department  of  Electrical  and  Computer  Engineering  

University  of  BriJsh  Columbia  Vancouver,  BC  Canada  [email protected]          

Founder  and  president  Kruchten  Engineering  Services  Ltd  Vancouver,  BC  Canada    [email protected]  

2 Copyright  ©  2011  by  Philippe  Kruchten  

Page 2: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   2  

Outline  

•  What  is  technical  debt?  •  Hard  Choices  game  

•  Value  of  soQware  architecture  •  Recent  advances  on  technical  debt  •  Tackling  technical  debt  •  Summary  

3  Copyright  ©  2011  by  Philippe  Kruchten  

Acknowledgements  

•  Research  partly  funded  by  the    

–  Ipek  Ozkaya,  Rod  Nord,  NaneXe  Brown  

•  UBC  master  student  Erin  Lim…  – …  with  some  industry  partners  

4  Copyright  ©  2011  by  Philippe  Kruchten  

Page 3: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   3  

Technical  Debt  

•  Concept  introduced  by  Ward  Cunningham  •  OQen  menJoned,  rarely  studied  

•  All  experienced  soQware  developers  “feel”  it.  •  Drags  long-­‐lived  projects  and  products  down  

5  Copyright  ©  2011  by  Philippe  Kruchten  

Origin  of  the  metaphor  

•  Ward  Cunningham,  at  OOPSLA  1992  

 “Shipping  first  Jme  code  is  like  going  into  debt.  A  liXle  debt  speeds  development    so  long  as  it  is  paid  back  promptly  with  a    rewrite…  The  danger  occurs  when  the  debt  is  not    repaid.  Every  minute  spent  on  not-­‐quite-­‐right  code  counts  as  interest  on  that  debt.  EnJre  engineering  organizaJons  can  be  brought  to  a  stand-­‐sJll  under  the  debt  load  of  an  unconsolidated  implementaJon,  object-­‐oriented  or  otherwise.”  

Cunningham,  OOPSLA  1992  

6  

Page 4: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   4  

Technical  Debt  (S.  McConnell)  

•  Implemented  features  (visible  and    invisible)  =  assets  =  non-­‐debt  

•  Type  1:  unintenJonal,  non-­‐strategic;    poor  design  decisions,  poor  coding  

•  Type  2:  intenJonal  and  strategic:    opJmize  for  the  present,  not  for  the    future.  –  2.A  short-­‐term:  paid  off  quickly  (refactorings,  etc.)  

•  Large  chunks:  easy  to  track  •  Many  small  bits:  cannot  track  

–  2.B  long-­‐term  McConnell  2007  

7  

Technical  Debt  (M.    Fowler)  

Fowler  2009,  2010  

8  

Page 5: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   5  

First  more  capabiliJes  

First  more  infrastructure  

Then,  more  infrastructure  

Then,  more  capabiliJes  

underesJmated    re-­‐architecJng  costs  

neglected  cost  of  delay  to  market  

need  to  monitor  technical  debt  to  gain  insight  into  life-­‐cycle  efficiency  

Example  

Ozkaya,  SEI,2010   9  

Technical  Debt  (Chris  Sterling)  

•  Technical  Debt:  issues  found  in  the  code  that  will  affect  future  development  but  not  those  dealing  with  feature  completeness.  

Or  

•  Technical  Debt  is  the  decay  of    component  and  intercomponent    behaviour  when  the  applicaJon  funcJonality  meets  a  minimum    standard  of  saJsfacJon  for  the  customer.  

10  

Page 6: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   6  

Technical  Debt  (S.  McConnell)  

•  TD:  A  design  or  construcJon  approach  that  is  expedient  in  the  short  term  but  that  creates  a  technical  context  in  which  the  same  work  will  cost  more  to  do  later  than  it  would  cost  to  do  now  

McConnell  2011  

11  

Time  is  Money  (I.  Gat)  

•  Convert  this  in  monetary  terms:      “Think  of  the  amount  of  money  the    borrowed  Jme  represents  –  the    grand  total  required  to  eliminate    all  issues  found  in  the  code”  

Gat  2010  

12  

Page 7: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   7  

Example:  TD  is  the  sum  of…  

•  Code  smells    167  person  days  •  Missing  tests    298  person  days  •  Design        670    person  days  •  DocumentaJon      67  person  days    

Totals    Work          1,202  person  x  days    Cost          $577,000  

13  

Israel  Gat,  2010  hXp://theagileexecuJve.com/2010/09/20/how-­‐to-­‐break-­‐the-­‐vicious-­‐cycle-­‐of-­‐technical-­‐debt/  

(more)  Relentless  Pressure  

Take  Technical  Debt  

Fail  to  Pay  back  

Technical  debt  

Technical  Debt  Accrues  

Reduced  Development  

Team  Velocity  

14  

Page 8: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   8  

Tech  Debt  (Jim  Highsmith)  

Source:  Highsmith,  2009  15  

Outline  

•  What  is  technical  debt?  •  Hard  Choices  game  

•  Value  of  soQware  architecture  •  Recent  advances  on  technical  debt  •  Tackling  technical  debt  •  Summary  

16  Copyright  ©  2011  by  Philippe  Kruchten  

Page 9: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   9  

Making  Hard  Choices    about  Technical  Debt  

• In  the  quest  to  become  market  leader,  players  race  to  release  a  quality  product  to  the  marketplace.  

The  Hard  Choices  game  is  a  simulaJon  of  the  soQware  development  cycle  meant  to  communicate  the  concepts  of  uncertainty,  risk,  opJons,  and  technical  debt.    

Hard  Choices  Strategy  Game  to  Communicate  Value  of  Architecture  Thinking  game  downloadable  from  hXp://www.sei.cmu.edu/architecture/tools/hardchoices/.  

17  Copyright  ©  KESL  2011  

18  Copyright  ©  KESL  2011  

Page 10: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   10  

Playing  the  Hard  Choices  Board  Game  

• The  goal  of  the  game  is  to  accumulate  the  most  points.  • Players  accumulate  points  by  crossing  END  ahead  of  their  compeJtors  and  collecJng  Tool  Cards.    • The  person  with  the  most  points  wins.  

• Market  Leader  Points.  The  first  player  to  cross  END  gets  7  points,  second  gets  3  points,  and  third  gets  1  point.  The  last  player  remaining  on  the  board  gets  no  points.  

•  Tool  Points.  You  get  1  point  for  each  Tool  Card.    

19  Copyright  ©  KESL  2011  

Rules  of  Play  

•         Start  of  Play  –  Roll  the  die  to  determine  who  goes  first.    

Play  proceeds  clockwise.  •  Player  Movement  

–  During  a  turn,  roll  the  die:    Move  your    piece  the  number  of  spaces    indicated  on  the  die  minus  the  number  of    penalJes  incurred,  determined  by  the  number  of  your  Bridge  Cards.    

–  You  may  move  in  either  direcJon,  or  in  both  direcJons,  within  a  turn.  This  increases  your  opportunity  to  land  on  a  Tool  Square.  

–  Once  a  player  has  reached  the  end,  no  one  can  move  backwards.  •  End  of  Play  

–  To  enter  the  END  cell  you  may  roll  anything  equal  or  greater  than  the  number  of  remaining  squares.  

–  The  game  ends  when  one  player  remains  on  the  board.  

20  Copyright  ©  KESL  2011  

Page 11: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   11  

Special  Squares  

•     Hard  Choices  Squares  –  When  crossing  a  Hard  Choices  Square,  you    

must  decide  whether  to  go  over  the  Shortcut    Bridge  or  to  go  the  long  way  and  try  to  collect    more  Tool  Cards.  

•           Bridges  and  Bridge  Cards  –  Bridges  count  as  one  movement.  

–  When  crossing  a  Shortcut  Bridge,  you  must  collect  a  Bridge  Card.  Each  Bridge  Card  subtracts  one  from  subsequent  rolls  of  the  die.  

–  You  may  get  rid  of  a  Bridge  Card  by  skipping  a  turn  anyJme  during  the  game.  

•  Tool  Squares  and  Tool  Cards  –  When  landing  on  a  Tool  Square,  you  may  elect  to  take  a  Tool  Card.    

–  You  may  only  collect  one  Tool  Card  for  a  given  square.  

–  If  you  have  a  Tool  Card,  you  may  elect  not  to  take  not  to  take  another.  Instead  you  may  play  the  card  (returning  it  to  the  deck)  and  get  a  free  turn.    

21  Copyright  ©  KESL  2011  

Debrief  AQer  the  Game  

• What  just  happened?  –  How  did  you  experience  the  game?  

–  What  strategies  did  you  employ?  

• So  what?  –  How  do  your  experiences  in  the  game  relate  to  the  strategies  you  

employ  during  soQware  development  in  the  face  of  uncertainty?  

–  How  does  this  relate  to  the  choices  you  make—in  invesJng  effort  to  gain  an  advantage  or  paying  a  price  to  take  shortcuts?  

–  What  are  their  implicaJons?  

• Now  what?  –  What  will  you  take  away  from  the  experience?  

–  What  might  you  do  differently  as  a  result?  

22  Copyright  ©  KESL  2011  

Page 12: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   12  

Outline  

•  What  is  technical  debt?  •  Hard  Choices  game  

•  Value  of  soQware  architecture  •  Recent  advances  on  technical  debt  •  Tackling  technical  debt  •  Summary  

23  Copyright  ©  2011  by  Philippe  Kruchten  

Value  of  SoQware  Architecture  

A  liXle  détour  

Page 13: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   13  

Value  and  Cost  

•  Value:  to  the  business  (the  users,  the  customers,  the  public,  etc.)  

•  Cost:  to  design,  develop,  manufacture,  deploy,  maintain  

•  Simple  system,  stable  architecture,  many  small  features:  –  Roughly,  value  aligns  to  cost  

•  Large,  complex,  novel  systems  ?  – Not  quite  so  

25  Copyright  ©  2011  by  Philippe  Kruchten  

Value  and  cost  

•  Architecture  has  no  (or  liXle)  externally  visible  “customer  value”  

•  IteraJon  planning  (backlog)  is  driven  by  “customer  value”  

•  Ergo:  architectural  acJviJes  are  oQen  not  given  aXenJon  

•  BUFD  &  YAGNI  &  Refactor!  

26  Copyright  ©  2011  by  Philippe  Kruchten  

Page 14: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   14  

Value  and  cost  

•  Cost  of  development  is  not  idenJcal  to  value  •  Trying  to  assess  value  and  cost  in  monetary  terms  is  hard  and  oQen  leads  to  vain  arguments  

•  Use  “points”    for  cost  and  “uJls”  for  value  •  Use  simple  technique(s)  to  evaluaJon  cost  in  points  and  value  in  uJls.  

27  Copyright  ©  2011  by  Philippe  Kruchten  

What’s  in  your  backlog?  

Visible  Feature  

Hidden,  architectural  feature  

Visible  defect  

Technical  Debt  

Visible   Invisible  

PosiJve  Value  

NegaJve  Value  

28  Copyright  ©  2011  by  Philippe  Kruchten  

Source:  What  colours  is  your  backlog,  at  hKp://philippe.kruchten.com/talks  

Page 15: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   15  

Technical  Debt:  invisible  and  negaJve  value  (But  posiJve  cost)  

Visible  Feature  

Hidden,  architectural  feature  

Visible  defect  

Technical  Debt  

Visible   Invisible  

PosiJve  Value  

NegaJve  Value  

Kruchten  2009  

29  Copyright  ©  2011  by  Philippe  Kruchten  

Technical  Debt  (1)  

12  

12  

a  

$15  

$5  

12  

b  

$16  

$3  

12   $18  

$20   $19   $18  

30  Copyright  ©  2011  by  Philippe  Kruchten  

Page 16: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   16  

Technical  Debt  (2)  

12  

12  

a  

$15  

$5  

12  

b  

$16  

$3  

12   $18  

8   8   $5   8   $8   8   $10  

$25   $27   $28  

31  Copyright  ©  2011  by  Philippe  Kruchten  

Technical  Debt  (3)  

12  

12  

a  

+$2  

$5  

12   $18  

8   8   $5  

$30  

32  Copyright  ©  2011  by  Philippe  Kruchten  

Page 17: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   17  

Technical  Debt  

•  Defect  =  Visible  feature  with  negaJve  value  

•  Technical  debt  =  Invisible  feature  with  negaJve  value  

•  Cost  ….      of  fixing    •  Value  ….  of  repaying  technical  debt,  interests  loss  of  producJvity,  etc.  

33  Copyright  ©  2011  by  Philippe  Kruchten  

Interests  

•  In  presence  of  technical  debt,    cost  of  adding  new  features  is  higher;    velocity  is  lower.  

•  When  repaying  (fixing),  addiJonal  cost  for  retrofiyng  already  implemented  features  

•  Technical  debt  not  repaid  =>  lead  to  increased  cost,  forever  

•  Cost  of  fixing  (repaying)  increases  over  Jme  M.  Fowler,  2009  

34  Copyright  ©  2011  by  Philippe  Kruchten  

Page 18: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   18  

Deferring  implementaJon:  Value  decreases  

Time  

R1   R2   R3   R4  

8  

8   7.5   7   6  

35  Copyright  ©  2011  by  Philippe  Kruchten  

But  technical  debt  increases  over  Jme  

Time  

R1   R2   R3   R4  

-­‐8  

-­‐8   -­‐8.5   -­‐9   -­‐10  

36  Copyright  ©  2011  by  Philippe  Kruchten  

Page 19: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   19  

Outline  

•  What  is  technical  debt?  •  Hard  Choices  game  

•  Value  of  soQware  architecture  •  Recent  advances  on  technical  debt  •  Tackling  technical  debt  •  Summary  

37  Copyright  ©  2011  by  Philippe  Kruchten  

Advances  (?)  

Areas  of  further  invesJgaJon  

Page 20: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   20  

Research  on  TD  

•  Characterize  objecJvely  and  quanJtaJvely  the  amount  of  technical  debt  in  a  given  system  

•  Taxonomy  of  technical  debt  =>  BeXer  detecJon  •  Causes  of  technical  debt  =>  Improved  prevenJon  •  Project  management  strategies  to  control  and  to  cope  with  technical  debt  

•  Tools  and  methods  to  deal  with  code  smells,  etc.  •  ApplicaJon  of  Real  OpJons,  Dependency  Structure  Matrix,  or  other  value-­‐based  technique  

39  Copyright  ©  2011  by  Philippe  Kruchten  

ProperJes  of  technical  debt  

•  Type  •  Value,  and  present  value  (economic  value)  

•  Visibility  •  Impact  

– Localized,  scaXered  •  Environment  

40  Copyright  ©  2011  by  Philippe  Kruchten  

Page 21: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   21  

Types  of  technical  debt  

•  Code  level    – McConnell  type  1)  –  Small  violaJon  of  naming  and  coding  standards  –  “Code  smells”  e.g.,  Code  duplicaJon  –  Comments  

•  Architectural  /  design  debt  –  Choice  of  component,  framework,  etc.  – McConnell  type  2  (big  chunks)  

•  TesJng  debt  –  Unit  level  and  system  level  (acceptance  tests)  

•  DocumentaJon  debt,  …  •  Training  debt,  SCM  debt,  Requirement  debt…  (??)  

41  Copyright  ©  2011  by  Philippe  Kruchten  

Context  

Size  CriJcality  

Business  model  

Stable  architecture  Team  

distribuJon  

Governance  

Rate  of  change  

Age  of  the  

system  Domain,  Industry  

Corporate  &  NaYonal  Culture  

OrganizaYonal  Maturity  

Degree  of    InnovaYon  

42  Copyright  ©  2011  by  Philippe  Kruchten  

Page 22: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   22  

•  Code  level  debt  (McConnell  type  1)  

•  Structural  debt  (McConnell  type  2)  

43  Copyright  ©  2011  by  Philippe  Kruchten  

Code  level  

•  A.K.A.,  Code  smells  

•  Much  research,  though  fragmented  •  Many  tools  to  do  staJc  code  analysis  

•  Example:  Code  replicaJon  (clones)  

•  Approach:  detect  +  refactoring  

44  Copyright  ©  2011  by  Philippe  Kruchten  

Page 23: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   23  

Tech  Debt  =  Maintainability?  

•  Example:  – SIG  (SoQware  Improvement  Group),  Amsterdam  

45  Copyright  ©  2011  by  Philippe  Kruchten  

Debt  at  the  Architectural  Level  

•  Harder  to  detect  with  tools  •  Less  researched  

•  A  few  paths  to  explore:  – Real  opJons  – Dependency  structure  matrices  

46  Copyright  ©  2011  by  Philippe  Kruchten  

Page 24: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   24  

Real  OpJons  Theory  

•  OQen  menJoned,  but  rarely  put  in  applicaJon  in  soQware  

47  Copyright  ©  2011  by  Philippe  Kruchten  

TD  and  Real  OpJons  

P1:   S0  

Market  loves  it  +  $4M  

Market  hates  it  +  $1M  

S1  

NPV  (P1)  =  -­‐2M  +  0.5x4M  +  0.5x1M  =  0.5M  

-­‐2M  

p=0.5  

p=0.5  

Source:  K.  Sullivan,  2010  at    TD  Workshop  SEI  6/2-­‐3  

48  Copyright  ©  2011  by  Philippe  Kruchten  

Page 25: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   25  

TD  and  Real  OpJons  (2)  

P2:   S0  

Market  loves  it  

Market  hates  it  +  $1M  

Sd  

NPV  (P2)  =  -­‐1M  +  0.5x3M  +  0.5x1M  =  1M  

-­‐1M  

Source:  K.  Sullivan,  2010  

p=0.5  

p=0.5  

-­‐1M  S1   +4M  

Taking  Technical  Debt  has  increased  system  value.  

49  Copyright  ©  2011  by  Philippe  Kruchten  

TD  and  Real  OpJons  (3)  

P2:   S0  

Market  loves  it  

Market  hates  it  +  $1M  

Sd  

NPV  (P3)  =  -­‐1M  +  0.67  x  2.5M  +  0.33  x  1M  =  1M  

-­‐1M  

p=0.33  

p=0.67

 

-­‐1.5M  S1   +4M  

More  realisJcally:  Debt  +  interest  High  chances  of  success  

Take  Debt  

Repay  debt  

50  Copyright  ©  2011  by  Philippe  Kruchten  

Page 26: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   26  

TD  and  Real  OpJons  (3)  

P2:   S0  

Market  loves  it  

Market  hates  it  +  $1M  

Sd  

NPV  (P3)  =  -­‐1M  +  0.67  x  2.5M  +  0.33  x  1M  =  1M  

-­‐1M  

p=0.33  

p=0.67

 

-­‐1.5M  S1   +4M  

More  realisJcally:  Debt  +  interest  High  chances  of  success  

Higher  chance  of  success  

Repay  debt  +  50%  interest  

51  Copyright  ©  2011  by  Philippe  Kruchten  

TD  and  Real  OpJons  (4)  

S0  

Favourable  

Unfavourable  

Sd  

p=?  

p=?  

S1   S2  

S2d  

…..  

…..  

Not  debt  really,  but  opYons  with  different  values…    Do  we  want  to  invest  in  architecture,  in  test,  etc…  

Refactor  

Add  feature  

Add  feature  

?  

Source:  K.  Sullivan,  2010  

52  Copyright  ©  2011  by  Philippe  Kruchten  

Page 27: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   27  

OpJons  Theory  

•  OQen  menJoned,  but  rarely  put  in  applicaJon  in  soQware  

•  Not  even  scratched  the  surface  •  Pay-­‐off  not  obvious,  though…  

– Too  much  guesswork  involved  to  trust  results,    – Lot  of  work  involved  

53  Copyright  ©  2011  by  Philippe  Kruchten  

Debt  at  the  Architectural  level  

•  Design  Structure  Matrix  (DSM)  – a.k.a,  Dependency  Structure  Matrix  

•  Domain  Mapping  Matrix  (DMM)  

•  Tools  to  create  and  manipulate  DSMs  and  DMMs  

54  Copyright  ©  2011  by  Philippe  Kruchten  

Page 28: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   28  

Dependency  Structure  Matrix  

A   B   C  

A  Strength  of  B’s  dependency  on  A  

B  Strength  of  A’s  dependency  on  B  

Strength  of  C’s  dependency  on  B  

C  55  Copyright  ©  2011  by  Philippe  Kruchten  

Dependencies  for  MS-­‐Lite  

56  Copyright  ©  2011  by  Philippe  Kruchten  

Page 29: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   29  

Dependency  Structure  Matrix  

57  Copyright  ©  2011  by  Philippe  Kruchten  

Dependencies  in  Release  Planning  

Dependencies between stories & supporting architectural elements

Understanding the dependencies between stories and architectural elements enables staged implementation of technical infrastructure in support of achieving stakeholder value.

Dependencies between architectural elements

Low-dependency architectures are a critical enabler for scaling-up agile development.1

Dependencies between stories

High-value stories may require the implementation of lower-value stories as precursors.2

1  Mary  and  Tom  Poppendieck  –  “Leading  Lean  SoQware  Development”  

2  Mark  Denne,    Jane  Cleland-­‐Huand  –  “SoQware  by  Numbers”  

58  Copyright  ©  2011  by  Philippe  Kruchten  

Page 30: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   30  

PropagaJon  cost  

•  Metric  introduced  by  – Alan  MacCormack,  Carliss  Baldwin  (2006)  

•  =  Density  of  the  transiJve  closure  of  DSM  – “visibility”  matrix  

59  Copyright  ©  2011  by  Philippe  Kruchten  

Other  variaJons  

•  Level  of  dependency  –   use  not  just  0/1  in  but  any  value  in  a  range    

•  Size  of  components  – Add  some  weighJng  factor  related  to  the  size  of  the  component  A  and  B,  where  A  depends  on  B  

•  Nothing  very  useful  so  far;  need  more  experimentaJon  and  validaJon  on  large  real  systems  

60  Copyright  ©  2011  by  Philippe  Kruchten  

Page 31: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   31  

•  Maximizing  value  to  the    end  user    

Source:  Brown,  Nord,  Ozkaya,  2011  

61  Copyright  ©  2011  by  Philippe  Kruchten  

•  Minimizing    implementaYon  cost    

62  Copyright  ©  2011  by  Philippe  Kruchten  

Page 32: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   32  

Path  Comparison  Iteration 1 Iteration 2 Iteration 3 Iteration 4 Iteration 5

Path #1 Value 75 132 175 216 243

% 30.86% 54.32% 72.02% 88.89% 100%

Cost 38.64 58.25 67.8 69.68 84.2

% 52.22% 78.72% 91.62% 94.16% 113.78%

Contribution 30.86 – 52.22 =

-21.35

54.32 – 78.72 =

-24.40

72.02 – 91.62 =

-19.60

88.89 – 94.16

=

-5.27

100 – 113.78 =

-13.78

Path #2 Value 0 0 47 126 243 % 0% 0% 19.34% 51.85% 100%

Cost 21 33 43 58 74 % 28.38% 44.60% 58.11% 78.38% 100%

Contribution 0 – 28.38 =

-28.38

0 – 44.60 =

-44.60

19.34 – 58.11 =

-38.77

51.85 – 78.38

= -26.53

100 – 100 =

0

Value  realized  at  different  Jmes  

Added  cost  as  a  result  of  implemenJng  architecture  in  retrospect,  i.e.  technical  debt   63  Copyright  ©  2011  by  Philippe  Kruchten  

DSM  

•  Value  of  DSM  not  fully  explored  yet  – Concept  of  propagaJon  cost  – Concept  of  density  – Need  to  integrate  values  and  costs  

•  Tools  to  produce  or  manipulate  DSM  – SonarJ  – Layx  

•  “What  if”  scenarios  

64  Copyright  ©  2011  by  Philippe  Kruchten  

Page 33: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   33  

It’s  only  a  Metaphor!  

•  Metaphors  give  meaning  to  form,  help  ground  our  conceptual  systems.  

•  CogniJve  transfer:  source  domain  to  target  domain  –   the  <target>  is  the  <source>  

•  Do  not  push  any  metaphor  too  far….  

Lakoff  and  Johnson  (1980)  Metaphors  we  live  by    

65  Copyright  ©  2011  by  Philippe  Kruchten  

Where  the  metaphor  breaks  

•  Technical  debt  does  not  always  have  to  be  repaid  

•  What  does  it  mean  to  be  “debt  free”?  – TD  has  a  large  part  of  subjecJvity  

•  NegaJve  connotaJon  •  May  increase  the  value  of  a  project  for  a  Jme  

•  Tech  Debt  as  Investment?  

66  Copyright  ©  2011  by  Philippe  Kruchten  

Page 34: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   34  

Where  the  metaphor  breaks  

•  IniJal  investment  at  T0  in  an  environment  E0.  Now  in  T2,  E  has  changed  to  E2,  a  mismatch,  has  occurred,  which  creates  a  debt.    – The  debt  is  created  by  the  change  of  environment.  The  right  decision  in  the  right  environment  at  some  Jme  may  lead  to  technical  debt.  

•  Prudent,  inadvertent  

67  Copyright  ©  2011  by  Philippe  Kruchten  

Outline  

•  What  is  technical  debt?  •  Hard  Choices  game  

•  Value  of  soQware  architecture  •  Recent  advances  on  technical  debt  •  Tackling  technical  debt  •  Summary  

68  Copyright  ©  2011  by  Philippe  Kruchten  

Page 35: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   35  

“Tackling”  technical  debt  

Tackling  Technical  Debt  

Aytude,  approaches  found:  1.  Ignorance  is  bliss  2.  The  elephant  in  the  room  

3.  Big  scary  $$$$  numbers  

4.  Five  star  ranking  5.  Constant  reducJon  6.  We’re  agile,  so  we  are  immune!  

70  Copyright  ©  2011  by  Philippe  Kruchten  

Page 36: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   36  

Ignorance  is  bliss  

You’re  just  slower,  and  slower,  but  you  do  not  know  it,  or  do  not  know  why  

0  

2  

4  

6  

8  

10  

12  

1   2   3   4   5   6   7  

FuncYon

al  re

quirem

ent  d

elivered

 

IteraYons  

Velocity   accumulated  technical  debt  impacts  ability  to  deliver  

71  Copyright  ©  2011  by  Philippe  Kruchten  

The  elephant  in  the  room  

•  Many  in  the  org.  know  about  technical  tech.  

•  Indifference:  it’s  someone  else’s  problem  

•  OrganizaJon  broken  down  in  small  silos  

•  No  real  whole  product  mentality  

•  Short-­‐term  focus  

72  Copyright  ©  2011  by  Philippe  Kruchten  

Page 37: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   37  

Big  scary  $$$$  numbers  

•  Code  smells    167  person  days  •  Missing  test    298  person  days  •  Design        670    person  days  •  DocumentaJon      67  person  days    

Totals    Work          1,202  person  x  days    Cost          $577,000  

73  Copyright  ©  2011  by  Philippe  Kruchten  

StaJc  analysis  +  ConsulJng  

•  CuXer  ConsorJum:  Gat,  Highsmith,  et  al.  – Use  of  Sonar,  etc.  – Focused  on  code  analysis  – TD  =  total  value  of  fixing  the  code  base  

•  CAST  soQware  (see  Bill  CurJs’s  Talk)  •  ThoughtWorks    

Debt  analysis  engagements  Debt  reducJon  engagements  

74  Copyright  ©  2011  by  Philippe  Kruchten  

Page 38: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   38  

Issues  

•  Fits  the  metaphor,  indeed.    •  Looks  very  objecJve…  but…  •  SubjecJve  in:  

– What  is  counted  – What  tool  to  use  –  Cost  to  fix  

Not  all  fixes  have  the  same  resulJng  value.  Sunk  cost  are  irrelevant,  look  into  the  future  only.  What  does  it  mean  to  be  “Debt  free”??  

75  Copyright  ©  2011  by  Philippe  Kruchten  

Five  star  ranking  

•  Define  some  maintainability  index  

•  Benchmark  relaJve  to  other  soQware  in  the  same  category  

•  Re-­‐assess  regularly  (e.g.,  weekly)  •  Look  at  trends,  correlate  changes  with  recent  changes  in  code  base  

•  SIG  (SoQware  Improvement  Group),  Amsterdam  

•  Powerful  tool  behind  76  Copyright  ©  2011  by  Philippe  Kruchten  

Page 39: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   39  

Constant  debt  reducJon  

•  Make  technical  debt  a  visible  item  on  the  backlog  

•  Make  it  visible  outside  of  the  soQware  dev.  organizaJon  

•  Incorporate  debt  reducJon  as  a  regular  acJvity  

•  Use  buffer  in  longer  term  planning  for  yet  unidenJfied  technical  debt  

•  Lie  (?)  77  Copyright  ©  2011  by  Philippe  Kruchten  

Buffer  for  debt  repayment  

Simple  work  EsJmate    uncertainJes  

Defect    correcJon  

Debt  Repayment  

78  Copyright  ©  2011  by  Philippe  Kruchten  

Page 40: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   40  

A  later  release  

79  Copyright  ©  2011  by  Philippe  Kruchten  

We  are  agile,  so  we’re  immune!  

In  some  cases  we  are  agile  and  therefore  we  run  faster  into  technical  debt  

80  Copyright  ©  2011  by  Philippe  Kruchten  

Page 41: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   41  

Agile  moXos  

•  “Defer  decision  to  the  last  responsible  moment”  •  “YAGNI”  =  You  Ain’t  Gonna  Need  It  

–  But  when  you  do,  it  is  technical  debt  –  Technical  debt  oQen  is  the  accumulaJon  of  too  many  YAGNI  decisions  

•  “We’ll  refactor  this  later”  •  “Deliver  value,  early”  •  Again  the  tension  between  the  yellow  stuff  and  the  green  stuff  

•  You’re  sGll  agile  because  you  aren’t  slowed  down  by  TD  yet.   81  Copyright  ©  2011  by  Philippe  Kruchten  

Story  of  a  failure  •  Large  re-­‐engineering  of    a  complex  distributed    world-­‐wide  system;    2  millions  LOC  in  C,    C++,  Cobol  and  VB  

•  MulJple  sites,  dozens  of  data  repositories,  hundreds  of  users,  24  hours  operaJon,  mission-­‐criJcal  ($billions)  

•  xP+Scrum,  1-­‐week  iteraJons,  30  then  up  to  50  developers  

•  Rapid  progress,  early  success,  features  are  demo-­‐able  •  Direct  access  to  “customer”,  etc.  •  A  poster  project  for  scalable  agile  development  

82  Copyright  ©  2011  by  Philippe  Kruchten  

Page 42: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   42  

Hiyng  the  wall  •  AQer  4  ½    months,  difficulJes    

to  keep  with  the  1-­‐week    iteraJons  

•  Refactoring  takes  longer    than  one  iteraJon  

•  Scrap  and  rework  raJo    increases  dramaJcally  

•  No  externally  visible  progress  anymore  •  IteraJons  stretched  to  3  weeks  •  Staff  turn-­‐over  increases    •  Project  comes  to  a  halt  •  Lots  of  code,  no  clear  architecture,  no  obvious  way  forward  

83  Copyright  ©  2011  by  Philippe  Kruchten  

Israel  Gat,  2010  hXp://theagileexecuJve.com/2010/09/20/how-­‐to-­‐break-­‐the-­‐vicious-­‐cycle-­‐of-­‐technical-­‐debt/  

(more)  Relentless  Pressure  

Take  Technical  Debt  

Fail  to  Pay  back  

Technical  debt  

Technical  Debt  Accrues  

Reduced  Development  

Team  Velocity  

Gat’s  Tech  Debt    vicious  cycle  

Page 43: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   43  

Value,  Quality,  Constraints  

•  Value  =  extrinsic  quality  – Metric:  Net  present  value  

•  Quality  =  intrinsic  quality  – Metric:  Technical  debt  

•  Constraints  =  cost,  schedule,  scope  – Metric:  Cost  

Value  

Quality   Cost  

 Highsmith  2010  

EvoluJon  over  Jme  

                 Gat  &  Heintz,  CuKer,  2010  

Page 44: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   44  

MulJple  Component  Defects  

•  MCD  =  A  defect  whose  fix  requires  changes  to  mulJple  components  (large  systems)  

•  MCD:  6-­‐10%  of  all  defects  

•  20  Jmes  more  modificaJons;  50%  more  effort  

•  Fixes  2-­‐3  Jmes  more  likely  to  span  mulJple  iteraJons  or  releases  

•  20%  of  components  hit  by  80%  of  MCD  

Copyright  ©  2011  by  Philippe  Kruchten   87  

Li  et  al,  2011  

CogniJve  biases  and  TD  

•  EscalaJon  of  commitment  

•  Sunk  cost  fallacy  – A.k.a.  throwing  good  money  aQer  bad  

•  Anchoring  

•  Confirmatory  bias  

88  Copyright  ©  2011  by  Philippe  Kruchten  

Page 45: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   45  

Tools  for  Technical  Debt  Analysis  

•  Increasing  focus  on  Tools  for  the  Purpose  of  Technical  Debt  Analysis  

•  Vendors  include  •  Layx  •  SonarSource  •  Hello2morrow  •  CAST  •  SoQware  Improvement  Group  (SIG)  •  JetBrains  •  Xdepend  •  Klocwork  

89  Copyright  ©  2011  by  Philippe  Kruchten  

TD:  a  few  suggesJons  

•  Inform  

•  IdenJfy  debt;  name  it  

•  Classify  debt:  code  quality,  or  structural  •  Assign  value  and  cost  (immediate  and  future)  

•  Make  it  visible  (put  in  backlog)  

•  PrioriJze  with  other  backlog  elements  

90  Copyright  ©  2011  by  Philippe  Kruchten  

Page 46: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   46  

Game  to  Introduce  Tech  Debt  www.sei.cmu.edu/architecture/tools/hardchoices/  

91  Copyright  ©  2011  by  Philippe  Kruchten  

Remember  

•  Technical  debt  is  not  a  defect  •  Technical  debt  is  not  necessarily  a  bad  thing  

Visible  Feature  

Hidden,  architectural  feature  

Visible  defect  

Technical  Debt  

Visible   Invisible  

PosiJve  Value  

NegaJve  Value  

92  Copyright  ©  2011  by  Philippe  Kruchten  

Page 47: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   47  

Also…  

•  A  suitable  system  architecture  is  not  likely  to  spontaneously  emerge  out  of  weekly  refactorings  

•  How  much  architecture  do  you  need  or  have?  

•  Some  novel  projects  need  an  – Architecture  owner  

     together  with  – Product  owner,  and  ScrumMaster  

93  Copyright  ©  2011  by  Philippe  Kruchten  

Outline  

•  What  is  technical  debt?  •  Hard  Choices  game  

•  Value  of  soQware  architecture  •  Recent  advances  on  technical  debt  •  Tackling  technical  debt  •  Summary  

94  Copyright  ©  2011  by  Philippe  Kruchten  

Page 48: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   48  

Conclusion  

•  Technical  debt  is  more  a  rhetorical  category  than  a  technical  or  ontological  category.    

•  The  concept    resonates  well  with  the  development  community,  and  someJmes  also  with  management.  

•  It  bridges  the  gap  between  business  decision  makers  and  technical  implementers.  

•  It’s  only  a  metaphor;  do  not  push  it  too  far.  

95  Copyright  ©  2011  by  Philippe  Kruchten  

Upcoming  events  

•  Special  issue  of  IEEE  SoQware  on  Technical  debt  November  2012  – Deadline  for  paper  submission:  April  2011  – hXp://www.computer.org/portal/web/compuJngnow/swcfp6  

•  Possibly  a  3rd  workshop  on  Technical  Debt  at  ICSE  2012,  June  2012  in  Zürich  – hXp://www.ifi.uzh.ch/icse2012/  

96  Copyright  ©  2011  by  Philippe  Kruchten  

Page 49: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   49  

References    Brown,  N.,  Cai,  Y.,  Guo,  Y.,  Kazman,  R.,  Kim,  M.,  Kruchten,  P.,  et  al.  (2010).  Managing  Technical  Debt  

in  So)ware-­‐Intensive  Systems.  Paper  presented  at  the  Future  of  soQware  engineering  research  (FoSER)  workshop,  part  of  FoundaJons  of  SoQware  Engineering  (FSE  2010)  conference.    

  Cunningham,  W.  (1992).  The  WyCash  PorQolio  Management  System.  Paper  presented  at  the  OOPSLA'92  conference,  ACM.  Retrieved  from  hXp://c2.com/doc/oopsla92.html  

  Denne,  M.,  &  Cleland-­‐Huang,  J.  (2004).  So)ware  by  Numbers:  Low-­‐Risk,  High-­‐Return  Development,  PrenJce  Hall.  

  Denne,  M.,  &  Cleland-­‐Huang,  J.  (2004).  The  Incremental  Funding  Method:  Data-­‐Driven  SoQware  Development,  IEEE  So)ware,  21(3),  39-­‐47.  

  Fowler,  M.  (2009),  Technical  debt  quadrant,  Blog  post  at:  hXp://www.marJnfowler.com/bliki/TechnicalDebtQuadrant.html    

  Kruchten,  Ph.  (2010)  Contextualizing  Agile  SoQware  Development,”  Paper  presented  at  the  EuroSPI  2010  conference  in  Grenoble,  Sept.1-­‐3,  2010    hXps://files.me.com/philippe.kruchten/1q00nw  

  Li,  Z.,  Madhavji,  N.,  Murtaza,  S.,  GiXens,  M.,  Miranskyy,  A.,  Godwin,  D.,  &  Cialini,  E.  (2011).  CharacterisJcs  of  mulJple-­‐component  defects  and  architectural  hotspots:  a  large  system  case  study.  Empirical  So)ware  Engineering,  16(5),  667-­‐702.  doi:  10.1007/s10664-­‐011-­‐9155-­‐y  

  MacCormack,  A.,  Rusnak,  J.,  &  Baldwin,  C.  Y.  (2006).  Exploring  the  structure  of  complex  soQware  designs:  An  empirical  study  of  open  source  and  proprietary  code.  Management  Science,  52(7),  1015-­‐1030.    

  McConnell,  S.  (2007)  Notes  on  Technical  Debt,  Blog  post  at:  hXp://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-­‐debt-­‐2.aspx  

  Special  issue  of  CuXer  IT  Journal  on  Technical  Debt,  edited  by  I.  Gat  (October  2010)  CuXer  IT  Journal,  23  (10).  

  Sterling,  C.  (2010)  Managing  So)ware  Debt,  Addison-­‐Wesley.  

97  Copyright  ©  2011  by  Philippe  Kruchten  

Other  sources  (Talks/slides)  •  Gat,  I.,  Heintz,  J.  (Aug.  19,  2010)  Webinar:  Reining  in  Technical  Debt,  CuXer  

ConsorJum.  

•  McConnell,  S.  (October  2011)  Managing  technical  debt.  Webinar    

•  Kniberg,  H.  (2008)  Technical  debt-­‐How  not  to  ignore  it,  at  Agile  2008  conference.  

•  Kruchten,  P.  (2009)  What  colour  is  your  backlog?  Agile  Vancouver  Conference.  hXp://pkruchten.wordpress.com/talks  

•  Sterling,  C.  (2009)  hXp://www.slideshare.net/csterwa/managing-­‐soQware-­‐debt-­‐pnsqc-­‐2009  

•  Short,  G.  (2009)  hXp://www.slideshare.net/garyshort/technical-­‐debt-­‐2985889  

•  West,  D.  (January  2011),  Balancing  agility  and  technical  debt,  Forrester  &  Cast  SoQware  

98  Copyright  ©  2011  by  Philippe  Kruchten  

Page 50: Kruchten 111027 TechDebt - WordPress.com · References) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).) Brown,N., Cai,Y., Guo,Y., Kazman,)R.,)Kim,)M.,)Kruchten,)P.,)etal.)(2010).)

Technical  Debt   October  2011  

Copyright  ©  2011  by  Philippe  Kruchten   50  

99  Copyright  ©  KESL  2011