Engineering You Lynn Langit - @lynnlangit Martin Thompson - - - PowerPoint PPT Presentation

engineering you
SMART_READER_LITE
LIVE PREVIEW

Engineering You Lynn Langit - @lynnlangit Martin Thompson - - - PowerPoint PPT Presentation

Engineering You Lynn Langit - @lynnlangit Martin Thompson - @mjpt777 A software system can best be designed if the testing is interlaced with the design, instead of being used after the design - Who and When??? A software system can


slide-1
SLIDE 1

Engineering You

Lynn Langit - @lynnlangit Martin Thompson - @mjpt777

slide-2
SLIDE 2

“A software system can best be designed if the testing is interlaced with the design, instead of being used after the design”

  • Who and When???
slide-3
SLIDE 3

“A software system can best be designed if the testing is interlaced with the design, instead of being used after the design”

  • A. J. Perlis (1968)
slide-4
SLIDE 4
slide-5
SLIDE 5
slide-6
SLIDE 6
slide-7
SLIDE 7

How many generations of programmers have we?

slide-8
SLIDE 8

ISO 9001/27001 CMM

slide-9
SLIDE 9

Engineering

slide-10
SLIDE 10

The term Engineering is derived from the Latin ingenium, meaning "cleverness" and ingeniare, meaning "to contrive, devise".

Source: Wikipedia

slide-11
SLIDE 11

Circa 1300 “One who operates an engine”, where engine is a military machine such as a catapult.

Source: Wikipedia

slide-12
SLIDE 12

Later the term “Civil Engineering” was introduced to cover those specialising in non-military projects

Source: Wikipedia

slide-13
SLIDE 13

Engineers must work within constraints. Constraints may include available resources, physical, imaginative or technical limitations, flexibility for future modifications and additions, and other factors, such as requirements for cost, safety, marketability, productivity, and serviceability. By understanding the constraints, engineers derive specifications for the limits within which a viable

  • bject or system may be produced and operated.

Source: Wikipedia

slide-14
SLIDE 14

Engineers must work within constraints. Constraints may include available resources, physical, imaginative or technical limitations, flexibility for future modifications and additions, and other factors, such as requirements for cost, safety, marketability, productivity, and serviceability. By understanding the constraints, engineers derive specifications for the limits within which a viable

  • bject or system may be produced and operated.

Source: Wikipedia

slide-15
SLIDE 15

Engineers must work within constraints. Constraints may include available resources, physical, imaginative or technical limitations, flexibility for future modifications and additions, and other factors, such as requirements for cost, safety, marketability, productivity, and serviceability. By understanding the constraints, engineers derive specifications for the limits within which a viable

  • bject or system may be produced and operated.

Source: Wikipedia

slide-16
SLIDE 16

Engineers must work within constraints. Constraints may include available resources, physical, imaginative or technical limitations, flexibility for future modifications and additions, and other factors, such as requirements for cost, safety, marketability, productivity, and serviceability. By understanding the constraints, engineers derive specifications for the limits within which a viable

  • bject or system may be produced and operated.

Source: Wikipedia

slide-17
SLIDE 17

Engineers must work within constraints. Constraints may include available resources, physical, imaginative or technical limitations, flexibility for future modifications and additions, and other factors, such as requirements for cost, safety, marketability, productivity, and serviceability. By understanding the constraints, engineers derive specifications for the limits within which a viable

  • bject or system may be produced and operated.

Source: Wikipedia

slide-18
SLIDE 18

“Software Engineering”?

slide-19
SLIDE 19

http://dl.acm.org/citation.cfm?doid=363717.363722

slide-20
SLIDE 20
slide-21
SLIDE 21

http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF

slide-22
SLIDE 22

The design process is an iterative one:

  • 1. Flowchart until you think you understand

the problem.

  • 2. Write code until you realize that you don’t.
  • 3. Go back and re-do the flowchart.
  • 4. Write some more code and iterate to

what you feel is the correct solution.

slide-23
SLIDE 23

I just want to make the point that reliability really is a design issue, in the sense that unless you are conscious of the need for reliability throughout the design, you might as well give up.

slide-24
SLIDE 24

The good systems that are presently working were written by small groups. More than twenty programmers working

  • n a project is usually disastrous.
slide-25
SLIDE 25

Another interesting concept we might apply is that used in the Air Force, to fly a number of hours each month, in order to retain one’s ‘wings’.[…] In a situation where code actually has to be produced, nobody should be allowed in the system who doesn’t write some given number of lines of code per month.

slide-26
SLIDE 26
slide-27
SLIDE 27

http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html

On the cruelty of really teaching computing science

  • Edsger W. Dijkstra
slide-28
SLIDE 28

Radical Novelty

slide-29
SLIDE 29

One has to approach the radical novelty with a blank mind, consciously refusing to try to link it with what is already familiar, because the familiar is hopelessly inadequate.

slide-30
SLIDE 30

Earlier scientific examples are the theory

  • f relativity and quantum mechanics;

later technological examples are the atom bomb and the contraceptive pill.

slide-31
SLIDE 31

Divide and Rule Decomposition on an unprecedented scale

slide-32
SLIDE 32

Amplification of Changes Changing a single bit can have the most drastic consequences

slide-33
SLIDE 33

We are all a product of our

  • wn experiences
slide-34
SLIDE 34

Uncomfortable Truth

slide-35
SLIDE 35
slide-36
SLIDE 36
slide-37
SLIDE 37
slide-38
SLIDE 38

What? Where? How?

Learning

slide-39
SLIDE 39

What should you learn?

Algorithms & Data Structures

slide-40
SLIDE 40

What should you learn?

Algorithms & Data Structures Design Fundamentals

slide-41
SLIDE 41

What should you learn?

Algorithms & Data Structures Design Fundamentals Programming Paradigms

slide-42
SLIDE 42

What should you learn?

Algorithms & Data Structures Design Fundamentals Programming Paradigms Decomposition & Abstraction

slide-43
SLIDE 43

What should you learn?

Algorithms & Data Structures Design Fundamentals Programming Paradigms Decomposition & Abstraction Mathematics

slide-44
SLIDE 44

What should you learn?

Algorithms & Data Structures Design Fundamentals Programming Paradigms Decomposition & Abstraction Mathematics Communications*

slide-45
SLIDE 45

Monolith

slide-46
SLIDE 46

From where can we learn?

Personal Practice

slide-47
SLIDE 47

From where can we learn?

Personal Practice People & Teams

slide-48
SLIDE 48

From where can we learn?

Personal Practice People & Teams Research Papers

slide-49
SLIDE 49

From where can we learn?

Personal Practice People & Teams Research Papers Reading Code

slide-50
SLIDE 50

From where can we learn?

Personal Practice People & Teams Research Papers Reading Code Projects – Tackle Unknowns First

slide-51
SLIDE 51

From where can we learn?

Personal Practice People & Teams Research Papers Reading Code Projects – Tackle Unknowns First Online Resources

slide-52
SLIDE 52
slide-53
SLIDE 53

How can we learn?

Automate Repetitive Tasks

slide-54
SLIDE 54

How can we learn?

Automate Repetitive Tasks Focus on Feedback Cycles

slide-55
SLIDE 55

How can we learn?

Automate Repetitive Tasks Focus on Feedback Cycles Experimentation

slide-56
SLIDE 56

How can we learn?

Automate Repetitive Tasks Focus on Feedback Cycles Experimentation Measure

slide-57
SLIDE 57

How can we learn?

Automate Repetitive Tasks Focus on Feedback Cycles Experimentation Measure Apply Scientific Honesty

slide-58
SLIDE 58

How can we learn?

Automate Repetitive Tasks Focus on Feedback Cycles Experimentation Measure Apply Scientific Honesty Revisit & Refine

slide-59
SLIDE 59
slide-60
SLIDE 60

“What can go wrong?”

slide-61
SLIDE 61
slide-62
SLIDE 62

25% Ignored Errors

slide-63
SLIDE 63

In Closing…

slide-64
SLIDE 64
slide-65
SLIDE 65

Thank You!

Lynn Langit - @lynnlangit Martin Thompson - @mjpt777