Long Life Software
-
Upload
michael-long -
Category
Software
-
view
1.368 -
download
0
description
Transcript of Long Life Software
![Page 1: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/1.jpg)
Long-L
ife
Sof
twar
e
Mike Long
![Page 2: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/2.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/3.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/4.jpg)
Disclaimer: I have no idea what I’m talking about. Test these ideas for yourself.
![Page 5: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/5.jpg)
Goldilocks Engineering
![Page 6: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/6.jpg)
![Page 7: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/7.jpg)
![Page 8: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/8.jpg)
The Tay Bridge
![Page 9: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/9.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/10.jpg)
The Forth Bridge
![Page 11: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/11.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/12.jpg)
Boeing 747
![Page 13: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/13.jpg)
Boeing 747: Goldilocks-engineered
![Page 14: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/14.jpg)
Boeing 747: Goldilocks-engineered
• Adaptable to new uses• Resilient in design• Decoupled from suppliers
![Page 15: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/15.jpg)
Learning from the past
How do we make software that lasts? How do we avoid over-engineering?
![Page 16: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/16.jpg)
Towards a theory of natural selection
![Page 17: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/17.jpg)
![Page 18: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/18.jpg)
Copying is the only long term survival tactic
![Page 19: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/19.jpg)
Genes can reproduce at
the expense of the organism
![Page 20: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/20.jpg)
Adaptations contribute to the fitness and survival of individuals
![Page 21: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/21.jpg)
Variation under domestication and under nature
![Page 22: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/22.jpg)
Size matters, but how?
![Page 23: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/23.jpg)
A theory
![Page 24: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/24.jpg)
Goldilocks Engineeringin software
![Page 25: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/25.jpg)
![Page 26: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/26.jpg)
// 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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/27.jpg)
• Adaptable to new uses• Resilient in design• Decoupled from suppliers
![Page 28: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/28.jpg)
Threesurvivaltactics
![Page 29: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/29.jpg)
SOURCE
![Page 30: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/30.jpg)
Compiling
Keep the software alive
![Page 31: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/31.jpg)
Choose 3rd Parties well
![Page 32: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/32.jpg)
SOURCE
![Page 33: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/33.jpg)
![Page 34: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/34.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/35.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/36.jpg)
Design for change
• Valuable stuff:– Algorithms (computations/business rules)– Data structures – Protocols
• Temporary stuff:– Interfaces– Runtimes
![Page 37: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/37.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/38.jpg)
Some things wont change
![Page 39: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/39.jpg)
Use uncertainty as a driver
![Page 40: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/40.jpg)
Push the technology out
Hexagaonal Architecture Clean Architecture
![Page 41: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/41.jpg)
Depend in the right direction
UI
Program
![Page 42: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/42.jpg)
Depend in the right direction
UI
Program
![Page 43: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/43.jpg)
Depend in the right direction
Program
UI
DB
Network
![Page 44: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/44.jpg)
![Page 45: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/45.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/46.jpg)
Compiling
Keep the software alive
![Page 47: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/47.jpg)
Binary Secrets
![Page 48: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/48.jpg)
Reproducibility =
+ +
![Page 49: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/49.jpg)
Beware black boxes
![Page 50: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/50.jpg)
![Page 51: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/51.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/52.jpg)
Choose 3rd Parties well
![Page 53: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/53.jpg)
I, pencil
![Page 54: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/54.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/55.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/56.jpg)
Be wary of new technology
• Best practices are not yet established• Training will be pioneering• Stickiness not guaranteed
![Page 57: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/57.jpg)
![Page 58: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/58.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/59.jpg)
Long life software
![Page 60: Long Life Software](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/60.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070301/546b26cbaf795902048b54cc/html5/thumbnails/61.jpg)
Let’s talk!
@meekrosoft
http://www.flickr.com/photos/ngk/4331399573/