Download - Long Life Software

Transcript
Page 1: Long Life Software

Long-L

ife

Sof

twar

e

Mike Long

Page 2: Long Life Software

Why are we here?

• For some systems the predicted market lifetime dictates we plan for the long term. How can we do this, given the uncertainties in the technology industry?

• What can we learn from the past? • How can we take informed bets on

technologies and plan for change?

Page 3: Long Life Software

Built to last: why long life software matters*

• Code has the potential to last forever• Investments in intellectual property can provide

returns year-on-year• Rewriting IP due to technical failures is a crime

*This only applies to software that has a proven market and a long expected shelf life. In a similar manner, gold-plating software of unproven value is equally criminal

Page 4: Long Life Software

Disclaimer: I have no idea what I’m talking about. Test these ideas for yourself.

Page 5: Long Life Software

Goldilocks Engineering

Page 6: Long Life Software
Page 7: Long Life Software
Page 8: Long Life Software

The Tay Bridge

Page 9: Long Life Software

The Tay Bridge: under-engineered

“a single-track lattice design, notable for lightness and low cost. Its sudden collapse in a high wind … was one of the great engineering

disasters of history”

Page 10: Long Life Software

The Forth Bridge

Page 11: Long Life Software

The Forth Bridge: over-engineered

…legislation insisted that the Forth bridge should "enjoy a reputation of not only the biggest and strongest, but also the stiffest bridge in the world"

Page 12: Long Life Software

Boeing 747

Page 13: Long Life Software

Boeing 747: Goldilocks-engineered

Page 14: Long Life Software

Boeing 747: Goldilocks-engineered

• Adaptable to new uses• Resilient in design• Decoupled from suppliers

Page 15: Long Life Software

Learning from the past

How do we make software that lasts? How do we avoid over-engineering?

Page 16: Long Life Software

Towards a theory of natural selection

Page 17: Long Life Software
Page 18: Long Life Software

Copying is the only long term survival tactic

Page 19: Long Life Software

Genes can reproduce at

the expense of the organism

Page 20: Long Life Software

Adaptations contribute to the fitness and survival of individuals

Page 21: Long Life Software

Variation under domestication and under nature

Page 22: Long Life Software

Size matters, but how?

Page 23: Long Life Software

A theory

Page 24: Long Life Software

Goldilocks Engineeringin software

Page 25: Long Life Software
Page 26: Long Life Software

// The specific idiot in this case // is Office95, which likes to free // a random pointer when you start // Word95 from a desktop shortcut.

// we are such morons. Wiz97 underwent // a redesign between IE4 and IE5

// HACK ALERT, believe it or not // there is no way to get the // height of the current// HACK ON TOP OF HACK ALERT,

Year Operating System SLOC

1993 Windows NT 3.1 5 million

1994 Windows NT 3.5 8 million

1996 Windows NT 4.0 12 million

2000 Windows 2000 29 million

2001 Windows XP 45 million

2003 Windows Server 2003 50 million

Page 27: Long Life Software

• Adaptable to new uses• Resilient in design• Decoupled from suppliers

Page 28: Long Life Software

Threesurvivaltactics

Page 29: Long Life Software

SOURCE

Page 30: Long Life Software

Compiling

Keep the software alive

Page 31: Long Life Software

Choose 3rd Parties well

Page 32: Long Life Software

SOURCE

Page 33: Long Life Software
Page 34: Long Life Software

Languages

Fortran 1957

Lisp1958

Pascal 1968

C 1972

(C with Classes ) C++ 1979

Java 1990

Basic 1964

C# 2000

Prolog 1972

Python 1991

Managed C++ 2000C++/CLI 2005

Page 35: Long Life Software

Source code lives forever

• Not scary:– Code you wrote– Licensed source code

• Scary:– Pre-compiled binaries– Frameworks and tools– Operating systems– Libraries

Page 36: Long Life Software

Design for change

• Valuable stuff:– Algorithms (computations/business rules)– Data structures – Protocols

• Temporary stuff:– Interfaces– Runtimes

Page 37: Long Life Software

The good stuff lasts as long as the crap

• Code can last because:– it’s so useful– no-one understands it enough to change it

• So make it good!– cheaper in the long run– more likely to improve

Page 38: Long Life Software

Some things wont change

Page 39: Long Life Software

Use uncertainty as a driver

Page 40: Long Life Software

Push the technology out

Hexagaonal Architecture Clean Architecture

Page 41: Long Life Software

Depend in the right direction

UI

Program

Page 42: Long Life Software

Depend in the right direction

UI

Program

Page 43: Long Life Software

Depend in the right direction

Program

UI

DB

Network

Page 44: Long Life Software
Page 45: Long Life Software

Remember Gall’s Law

“A complex system that works is invariably found to have evolved from a simple system that

worked.”

• Underspecify• Avoid the second systems effect

Page 46: Long Life Software

Compiling

Keep the software alive

Page 47: Long Life Software

Binary Secrets

Page 48: Long Life Software

Reproducibility =

+ +

Page 49: Long Life Software

Beware black boxes

Page 50: Long Life Software
Page 51: Long Life Software

Keeping the knowledge alive

• Good: documentation– Best in plain text and in your version control

• Better: in the heads of people– Linux is an example

• Best: Good tests (the ones that assert requirements rather than implementation details)– Exemplar executable documentation always in

sync with your code and never forgotten

Page 52: Long Life Software

Choose 3rd Parties well

Page 53: Long Life Software

I, pencil

Page 54: Long Life Software

Reliabilities are Liabilities

• The first rule of software club:– “On a long enough timeline, the survival rate for

every third party drops to zero”• Plan to out live your dependencies– Platforms– Runtimes– Compilers– Libraries

• Avoid single vendor technologies

Page 55: Long Life Software

Historical dead ends

• Things that are typically unstable over time:– Display technologies– Persistence (Database access and structure)– Tools– Model Driven Development– New programming languages– Middleware stacks (CORBA, COM, …)

Page 56: Long Life Software

Be wary of new technology

• Best practices are not yet established• Training will be pioneering• Stickiness not guaranteed

Page 57: Long Life Software
Page 58: Long Life Software

A story

• Compiler vendor acquired and product discontinued

• Closed source RTOS• Poor debugging tools• >6 months investigation• >1yr to production fix

…probably the best bug fix in the world

Page 59: Long Life Software

Long life software

Page 60: Long Life Software

Where does that leave us?

• Design for cheap copies, not reuse• Source will survive longer than binaries• Be smart about your dependencies

Page 61: Long Life Software

Let’s talk!

@meekrosoft

http://www.flickr.com/photos/ngk/4331399573/


Top Related