It was formally proved correct !!!!!!!

It nonetheless exploded...

Elixir London Meetup

Thomas Depierre

@DianaO

Diana Olympos

 

Twitter :

Github :

For this talk :

TDD == Formal Proof == Type Systems

How this talk work

  • 20 mins for me

  • 20 mins for YOU

  • Just come in and switch

  • If you do not use your time, i will

  • Anyone can answer or say anything.

We build Complex Systems


Yes even "Hello World"

Complex systems are systems whose behaviour is intrinsically difficult to model due to the dependencies, relationships, or interactions between their parts or between a given system and its environment.

Cross Field Knowledge !!!

The Knight Capital Group Accident

In laymen’s terms, Knight Capital Group realised a $460 million loss in 45-minutes. Remember, Knight only has $365 million in cash and equivalents. In 45-minutes Knight went from being the largest trader in US equities and a major market maker in the NYSE and NASDAQ to bankrupt.

Complex Systems are SocioTechnical

  • Live in an environment
  • Operators
  • Users
  • Writers/Engineers
  • Humans are part of the system
  • A Complex System is not a technical only entity

Reliability

  • Doing what is specified
  • Repeatedly
  • TDD, Type System, Proof, etc
  • From the ground up

Safety

  • Avoiding Loss Events
  • Financial, Assets, Human life
  • Systemic property
  • Not a technical problem !
  • Safe >>>>>>>> Reliable

There is not only anecdotal but some hard data to support the hypothesis that safety problems in software stem from requirements flaws and not coding errors.

Nancy Leveson, Engineering a safer world

https://mitpress.mit.edu/books/engineering-safer-world​

Let's go back to Arianne V

What happened ?

What happened ?

  • An Exception happened (Buffer Overflow)
  • Should always crash on uncaught exception
  • Killed the whole flight computer
  • Was unneeded subroutine
  • Was formally proved correct for Arianne IV flight
  • Was not caught because too expensive at runtime
  • No need to catch it, it was formally proved correct

A Type System => the whole System is less safe.

But the code is more reliable !

And about Elixir ?

  • Supervision is how you build safe systems

  • Bulkheading

  • "Let it crash"

  • Monitoring and debuggability first

  • Actors make you think in systems

  • Interface with the outside world at the limits

And about Elixir ?

  • Supervision is how you build safe systems

  • Bulkheading

  • "Let it crash"

  • Monitoring and debuggability first

  • Actors make you think in systems

  • Interface with the outside world at the limits

What to read for more ?

It was formally proved correct!!

By di4nao

It was formally proved correct!!

A look at why TDD, Formal Proof and Type Systems do not help in building Safe systems.

  • 806