Software Crisis, 1968—today In Large Companies · Software Crisis, 1968—today • Software...

7
”Life is too short for imperative programming” John Hughes Software Crisis, 1968—today Software project outcomes Cancelled >2x cost overrun Success In Large Companies Success Failure Implemented feature Not implemented Technology adoption life cycle

Transcript of Software Crisis, 1968—today In Large Companies · Software Crisis, 1968—today • Software...

Page 1: Software Crisis, 1968—today In Large Companies · Software Crisis, 1968—today • Software project outcomes Cancelled >2x cost overrun Success In Large Companies Success Failure

”Life is too short for imperative programming”

John Hughes

Software Crisis, 1968—today

• Software project outcomes

Cancelled

>2x costoverrunSuccess

In Large Companies

Success Failure Implemented feature Not implemented

Technology adoption life cycle

Page 2: Software Crisis, 1968—today In Large Companies · Software Crisis, 1968—today • Software project outcomes Cancelled >2x cost overrun Success In Large Companies Success Failure

Technology adoption life cycle Technology adoption life cycle

The Erlang Story

• 1986—Erlang emerges at Ericsson– Functional language– Extra support for concurrency & fault

tolerance• Early 1990s—small products• 1996

– Open Telecoms Platform (higher-order functions for robust telecom systems)

– AXD 301 project starts

The AXD 301

• ATM switch (telephone backbone)

• Born out of a failed project!

• 1,5 MLOC Erlang• Seven nines reliability• 4-10x better

productivity, quality

Erlang Story II

• 1998—Erlang banned for new projects

• 1998—Open source Erlang

• 1998—Bluetail– Jane Walerud VD– Mail robustifier, Web prioritizer

SSL Accelerator

• Alteon WebSystems' SSL Accelerator offers phenomenal performance, management and scalability.– Network Computing

Page 3: Software Crisis, 1968—today In Large Companies · Software Crisis, 1968—today • Software project outcomes Cancelled >2x cost overrun Success In Large Companies Success Failure

Kreditor

Kreditor

Order 100:-

Order details

97:-

invoice

100:-

• Founded May 2006

• Selling… QuickCheck!– Extra feature: simplifies failing tests

Session Border Gateway: A Firewall for IP telephony

Media Proxy

Opens media pin-holes for calls in

progress

2x10G Ethernet

Hardware for packet forwarding

Media Gateway Controller

Monitors signalling

traffic; opens and closes pinholes

2x1G Ethernet

Linux ”blade”processor

Session Border Gateway: A Firewall for IP telephony

Media Proxy

Media Gateway Controller

ITU standard protocol H.248

(Megaco) 150KLOC Erlang

InterWork Description defines a subset

Session Border Gateway: A Firewall for IP telephony

Media Proxy

QuickCheck

Megaco Commands

ContextContext

Page 4: Software Crisis, 1968—today In Large Companies · Software Crisis, 1968—today • Software project outcomes Cancelled >2x cost overrun Success In Large Companies Success Failure

Megaco Commands

Context

ContextContext

Termination

Add

Megaco Commands

Context

ContextContext

TerminationTermination

Add

Megaco Commands

Context

ContextContext

TerminationTermination

StreamStream

Modify

Megaco Commands

Context

ContextContext

TerminationTermination

StreamStream

Subtract

Megaco Commands

Context

ContextContext

Termination

StreamStream

Subtract

Megaco Commands

ContextContext

Page 5: Software Crisis, 1968—today In Large Companies · Software Crisis, 1968—today • Software project outcomes Cancelled >2x cost overrun Success In Large Companies Success Failure

Command Sequences

• Normal sequence:

Add

Modify

Add

Modify

Subtract

Subtract

We wanted to test other sequences that, according to the IWD, shouldwork.

Add/Modify Error

• Modify assumes there are already two terminationsin the context

• Same bug found in virtually every run!

• New ”bug precondition”needed for Modify

Add

Modify

Add/Subtract Error

• There one day, gone the next…

• This bug had just been found and fixed by the development team

Add

Subtract

Add/Add/Modify Error

• If the terminations have different numbers of streams

• Same underlying problem: Modify assumes each stream has two ends…

Add

Modify

Add

Add/Add/Sub/Add… Error• Extracted from

a test case 160 commands long

• Caused by corrupt data-structures after the firstSubtract

Add

Subtract

Add

Add

Add

Subtract

Subtract

• Derivatives trading in New York

10 Microsoft shares

Option to buy �for $100 anytime

In 2007

Option to sell �for $10 in Nov 2006

Page 6: Software Crisis, 1968—today In Large Companies · Software Crisis, 1968—today • Software project outcomes Cancelled >2x cost overrun Success In Large Companies Success Failure

How do they do it?

C++ plugins

Simon Peyton-Jones: Financial Contracts in Haskell

anytime :: Contract -> Contract-- Acquire the underlying contract at-- any time before it expires (but-- you must acquire it)

� ��������������� �������������������������������������������������������������������

golden_handcuff = anytime shares

shares = zero `or` (scaleK -100 (one Dollar) `and`scaleK 10 (one MSShare))

anytime������������

�������������

�� �����

or����������������

New Approach

C++ plugins

Haskell contract models• Functional programming on Wall Street

– Proprietary trading– 60 people– OCaml primary development language

Page 7: Software Crisis, 1968—today In Large Companies · Software Crisis, 1968—today • Software project outcomes Cancelled >2x cost overrun Success In Large Companies Success Failure

The Cat Among the Pigeons

The Cat Among the Pigeons

• Two cores, each hyperthreaded