Software Is Details @KevlinHenney Any program is a model of a - - PowerPoint PPT Presentation

software
SMART_READER_LITE
LIVE PREVIEW

Software Is Details @KevlinHenney Any program is a model of a - - PowerPoint PPT Presentation

Software Is Details @KevlinHenney Any program is a model of a model within a theory of a model of an abstraction of some portion of the world or of some universe of discourse. Meir M Lehman "Programs, Life Cycles, and Laws of Software


slide-1
SLIDE 1

Software

Is Details

@KevlinHenney

slide-2
SLIDE 2
slide-3
SLIDE 3
slide-4
SLIDE 4

Any program is a model of a model within a theory of a model

  • f an abstraction of some portion
  • f the world or of some universe
  • f discourse.

Meir M Lehman

"Programs, Life Cycles, and Laws of Software Evolution"
slide-5
SLIDE 5

The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.

Edsger W Dijkstra

slide-6
SLIDE 6

It's just semantics.

slide-7
SLIDE 7

It's just meaning.

slide-8
SLIDE 8

It's just details.

slide-9
SLIDE 9
slide-10
SLIDE 10

Details count.

Peter Weinberger

slide-11
SLIDE 11

Geeks are people who love something so much that all the details matter.

Marissa Mayer

slide-12
SLIDE 12

We're talking about a very specific mindset that is crucial when it comes to the act of creating.

Will Gompertz Think Like an Artist

slide-13
SLIDE 13

It is an attitude that can be encapsulated in a simple but demanding rule: always think both big picture and fine detail.

Will Gompertz Think Like an Artist

slide-14
SLIDE 14

software

slide-15
SLIDE 15

software architecture

slide-16
SLIDE 16

code

slide-17
SLIDE 17

implementation

slide-18
SLIDE 18

implementation details

slide-19
SLIDE 19

design details

slide-20
SLIDE 20

design decisions

slide-21
SLIDE 21
slide-22
SLIDE 22

Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.

Grady Booch

slide-23
SLIDE 23

Architecture is a hypothesis, that needs to be proven by implementation and measurement.

Tom Gilb

slide-24
SLIDE 24

We propose [...] that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others.

David L Parnas

On the Criteria to Be Used in Decomposing Systems into Modules
slide-25
SLIDE 25

Programming is a design activity.

Jack W Reeves

What Is Software Design?
slide-26
SLIDE 26

Coding actually makes sense more often than believed. Often the process of rendering the design in code will reveal

  • versights and the need for additional

design effort. The earlier this occurs, the better the design will be.

Jack W Reeves

What Is Software Design?
slide-27
SLIDE 27
slide-28
SLIDE 28

If a plot works out exactly as you first planned, you're not working loosely enough to give room to your imagination and instincts.

slide-29
SLIDE 29

/ WordFriday

slide-30
SLIDE 30

pantser, noun

  • Writer who writes by the seat of their pants.
  • In contrast to a plotter, a pantser doesn't

work to (or have) an outline.

slide-31
SLIDE 31
slide-32
SLIDE 32
slide-33
SLIDE 33

16-bit

slide-34
SLIDE 34

32-bit

slide-35
SLIDE 35

64-bit

slide-36
SLIDE 36

<windows.h>

slide-37
SLIDE 37

LLP64

slide-38
SLIDE 38

LP64

slide-39
SLIDE 39
slide-40
SLIDE 40

Hamlet: To be, or not to be, that is the question.

slide-41
SLIDE 41

Ophelia: 'Tis in my memory locked, and you yourself shall keep the key of it.

slide-42
SLIDE 42

Hamlet: Yea, from the table

  • f my memory I'll wipe

away all trivial fond records.

slide-43
SLIDE 43
slide-44
SLIDE 44

Mutable Immutable Unshared Shared

Unshared mutable data needs no synchronisation Unshared immutable data needs no synchronisation Shared mutable data needs synchronisation Shared immutable data needs no synchronisation

slide-45
SLIDE 45

Mutable Immutable Unshared Shared

Unshared mutable data needs no synchronisation Unshared immutable data needs no synchronisation Shared mutable data needs synchronisation Shared immutable data needs no synchronisation

The Synchronisation Quadrant

slide-46
SLIDE 46
slide-47
SLIDE 47

All computers wait at the same speed

slide-48
SLIDE 48

Savings in time feel like simplicity

slide-49
SLIDE 49

... premature optimization is the root of all evil (or at least most of it) in programming.

Donald Knuth

slide-50
SLIDE 50

... premature optimization is the root of all evil (or at least most of it) in programming.

Donald Knuth

slide-51
SLIDE 51

... premature optimization is the root of all evil (or at least most of it) in programming.

Donald Knuth

slide-52
SLIDE 52

Command-line tools can be 235x faster than your Hadoop cluster

Adam Drake http://aadrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html
slide-53
SLIDE 53

sort

slide-54
SLIDE 54
slide-55
SLIDE 55

O(n log n)

slide-56
SLIDE 56

O(n2)

slide-57
SLIDE 57
slide-58
SLIDE 58
slide-59
SLIDE 59

O(n!)

slide-60
SLIDE 60
slide-61
SLIDE 61

OMG!

slide-62
SLIDE 62
slide-63
SLIDE 63

O(n)

slide-64
SLIDE 64

Simple Testing Can Prevent Most Critical Failures

An Analysis of Production Failures in Distributed Data-Intensive Systems

https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
slide-65
SLIDE 65
slide-66
SLIDE 66

Schiaparelli’s Inertial Measurement Unit (IMU) went about its business of calculating the lander’s rotation

  • rate. For some reason, the IMU calculated a saturation-

maximum period that persisted for one second longer than what would normally be expected at this stage. When the IMU sent this bogus information to the craft’s navigation system, it calculated a negative altitude.

http://gizmodo.com/a-crazy-miscalculation-doomed-the-sciaparelli-lander-1789319670
slide-67
SLIDE 67

That fateful miscalculation set off a cascade of despair, triggering the premature release of the parachute and the backshell, a brief firing of the braking thrusters, and activation of the on-ground systems as if Schiaparelli had already reached the surface. This all happened while the vehicle was still two miles (3.7 km) above ground.

http://gizmodo.com/a-crazy-miscalculation-doomed-the-sciaparelli-lander-1789319670
slide-68
SLIDE 68

A majority of the production failures (77%) can be reproduced by a unit test.

https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
slide-69
SLIDE 69 http://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/
slide-70
SLIDE 70 http://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/
slide-71
SLIDE 71 http://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/
slide-72
SLIDE 72 http://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/
slide-73
SLIDE 73

Normally screws are so cheap and small and simple you think of them as unimportant. But now, as your Quality awareness becomes stronger, you realize that this one, individual, particular screw is neither cheap nor small nor unimportant.

Robert M Pirsig

Zen and the Art of Motorcycle Maintenance
slide-74
SLIDE 74

Right now this screw is worth exactly the selling price of the whole motorcycle, because the motorcycle is actually valueless until you get the screw out. With this reevaluation of the screw comes a willingness to expand your knowledge of it.

Robert M Pirsig

Zen and the Art of Motorcycle Maintenance
slide-75
SLIDE 75

Software

Is Details