Software Design and Technical Debts

56
Software Design and “Technical Debts

Transcript of Software Design and Technical Debts

Page 1: Software Design and Technical Debts

Software Designand “Technical Debts”

Page 2: Software Design and Technical Debts

“TECHNICAL DEBT”

Page 3: Software Design and Technical Debts
Page 4: Software Design and Technical Debts

“With borrowed money you can do something sooner than you might otherwise, but then until you pay back that money you'll be paying interest.” -- Ward Cunningham

“Like a financial debt, the technical debt incurs interest payments, which come in the form of the extra effort that we have to do in future development because of the quick and dirty design choice.” -- Martin Fowler

Page 5: Software Design and Technical Debts

“A Mess is not a Technical Debt!” -- Robert C. Martin

Page 6: Software Design and Technical Debts

SOFTWARE QUALITYWHAT IS WRONG WITH

Page 7: Software Design and Technical Debts

The distance ...

Page 8: Software Design and Technical Debts

Structural Problem/Defect

Page 9: Software Design and Technical Debts

Schedule pressure

Trade-off

By design

Lack of knowledge Laziness; Unprofessionalism

Techinical Debt Design Flaw Mess

Software Structural Problems

Page 10: Software Design and Technical Debts
Page 11: Software Design and Technical Debts

Development speed

Predictability

Customer satisfaction

Page 12: Software Design and Technical Debts
Page 13: Software Design and Technical Debts

Cost of Change

Page 14: Software Design and Technical Debts

VIOLATIONS MONETIZE

Page 15: Software Design and Technical Debts

Tracking

Page 16: Software Design and Technical Debts

Monetize

Page 17: Software Design and Technical Debts

Schedule pressure

Trade-off

By design

Lack of knowledge Laziness Unprofessionalism

Techinical Debt Design Flaw Mess

Software Structural Problems

Page 18: Software Design and Technical Debts

HOWAND

WHEN

Repayment Plan

Page 19: Software Design and Technical Debts

Budgeting

Page 20: Software Design and Technical Debts

Schedule pressure

Trade-off

By design

Lack of knowledge LazinessUnprofessionalism

Techinical Debt Design Flaw Mess

Software Structural Problems

Page 21: Software Design and Technical Debts
Page 22: Software Design and Technical Debts
Page 23: Software Design and Technical Debts
Page 24: Software Design and Technical Debts
Page 25: Software Design and Technical Debts

Schedule pressure

Trade-off

By design

Lack of knowledge Laziness Unprofessionalism

Techinical Debt Design Flaw Mess

Software Structural Problems

Page 26: Software Design and Technical Debts
Page 27: Software Design and Technical Debts

If I had an hour to solve a problem, I’d spend 55 minutes thinking about the problem and 5 minutes thinking about solutions.

Problem (Context)

Page 28: Software Design and Technical Debts
Page 29: Software Design and Technical Debts

Requirements

Page 30: Software Design and Technical Debts

Information (Nature)

Page 31: Software Design and Technical Debts

Dependencies

Page 32: Software Design and Technical Debts

Personas

Page 33: Software Design and Technical Debts

Inputs/Outputs

Page 34: Software Design and Technical Debts

Solution

Page 35: Software Design and Technical Debts
Page 36: Software Design and Technical Debts

SOC

Page 37: Software Design and Technical Debts
Page 38: Software Design and Technical Debts

SOLID

Page 39: Software Design and Technical Debts

Package Principles

Page 40: Software Design and Technical Debts

Algorithm

Page 41: Software Design and Technical Debts
Page 42: Software Design and Technical Debts

Compositions

Page 43: Software Design and Technical Debts

Design Patterns

Page 44: Software Design and Technical Debts
Page 45: Software Design and Technical Debts

1. Runs all the tests;

2 . Has no duplicated logic. Be wary of hidden duplication like parallel class hierarchies;

3. States every intention important to the programmer;

4. Has the fewest possible classes and methods.

Simplicity Rules

Page 46: Software Design and Technical Debts

1. Passes the tests;

2. Reveals intention;

3. No duplication;

4. Fewest elements.

Simplicity Rules

Page 47: Software Design and Technical Debts
Page 48: Software Design and Technical Debts

WAYOF

CHANGE

Page 49: Software Design and Technical Debts

Rigidity, Fragility, Immobility, Viscosity, Opacity,Nedless Complexity, Needless Repetition

Page 50: Software Design and Technical Debts

Design Session

Page 51: Software Design and Technical Debts

Just Enough

Page 52: Software Design and Technical Debts

Who asked knows what was askedI know what was askedThe constraints are knownDefinition of done

Page 53: Software Design and Technical Debts

Conceptual integrityConstraintsTechnology choicesSoCSimplicity Rules

Page 54: Software Design and Technical Debts

Expertise

Page 55: Software Design and Technical Debts

THANKS!

Page 56: Software Design and Technical Debts

Rafael Souza

rafaelsouza.eng.br

rafael_psouza

rafaelpsouza