long life software

61
Long-Life Softwa re Mike Long

Upload: michael-long

Post on 18-Nov-2014

1.366 views

Category:

Software


0 download

DESCRIPTION

Civil engineers build structures to last. Aerospace engineers build airplanes for the long haul. Automotive engineers build cars to last. How about software engineers? Not all of software needs to be engineered for long-life, but in some systems the predicted market span dictates we plan for the future. 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? This session will cover some of the important technical considerations to make when thinking about the long term.

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/