1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

46
1 CS101 Introduction to Computing Lecture 24 Design Heuristics

Transcript of 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

Page 1: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

1

CS101 Introduction to Computing

Lecture 24Design Heuristics

Page 2: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

2

During the last lecture …

• We became familiar with the various phases of the process that developers follow to develop SW systems of reasonable complexity

• We looked at a couple of problems related to the Waterfall SW development model

Page 3: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

3

In order to understand anything, you must not try to understand everything

Aristotle

Page 4: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

4

efficiency 1universality

Page 5: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

5

focus!

Page 6: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

6

Today’s LectureHeuristics for System Architecting

• We will try to understand the role of heuristics in architectural (or high-level) design

• We will become familiar with a few popular design heuristics

Page 7: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

7

Heuristic?

Page 8: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

8

Heuristic

Rule of thumb learned through trial & error

Common sense lesson drawn from experience

Qualitative principle, guideline, general judgement

Natural language description of experience

Page 9: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

9

?Heuristic

Wisdom

Page 10: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

10

CautionCaution!! CautionCaution!! Heuristics don’t always lead to the best results

At times they even lead to the wrong ones, but mostly to results that are good-enough

Page 11: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

11

system?

Page 12: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

12

System

A collection of elements which

working togetherproduces a result not achieved by the things alone

Page 13: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

13

System Architecture?

Page 14: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

14

System Architecture

The structure(in terms of components, connections, constraints)

of a product or a process

Page 15: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

15

Design == Architecture?

Page 16: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

16

Heuristics for system architecting

Rules and lessons learnt by system architects

after long experiences

which when followed result in sound, stable, practical systems

Page 17: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

17

My favorite system architecting(and other relevant) heuristics

--- in no particular order ---

Page 18: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

18

Page 19: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

19

Given many parts of a system to be designed/built,

do the hard part 1st1st

Page 20: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

20

# 3All the serious

mistakes are made on the very first day

Page 21: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

21

# 4

Simplify, simplify, simplify!

Probably the most useful heuristics for increasing reliability while decreasing cost & time-to-build

Page 22: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

22

CautionCaution!!Everything should be as

simple as possiblebut not simpler

Al Einstein

Page 23: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

23

# 5If you can’t explain it in 5 minutes, either

you don’t understand it or it does not work

Page 24: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

24

# 6A system will develop &

evolve much more rapidly if there are stable intermediate

forms than if there are not

Build iteratively; add features gradually

Page 25: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

25

# 7Success is defined by

the user, not the builder

Page 26: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

26

Customer is always

right?

Page 27: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

27

It depends!# 8

It’s more important to know what the customerneeds instead of what he says he wants

Page 28: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

28

# 9If you think that your

design is perfect, it is only because you have not shown to anyone else

--- Get your designs reviewed ---

Page 29: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

29

# 10

A good solution to a problem

somehow looks nice & elegant

Page 30: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

30

#11 In partitioning, choose the chunks so that they are as independent as possible

Chunks should have low external complexity & high internal complexity

Organize personal tasks to minimize the time individuals face interfacing

Page 31: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

31

2

6

5

4

31

Page 32: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

32

2

6

5

4

31

Page 33: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

33

2

6

5

4

31

Page 34: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

34

12

3

5

6

7

84

9

Page 35: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

35

#12Partition/repartition the problem until a model consisting of

7±2 chunks emerges

Page 36: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

36

Life is the art of drawing sufficient conclusions

from insufficient premises

Samuel Butler

Page 37: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

37

#13 When choices must be made with unavoidably inadequate info:

Choose the best available & then watch to see:

whether further solutions appear faster than future problems

If so, the choice was at least adequate

If not, go back & choose again

Page 38: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

38

#14 The Triage

1. Let the dying die

2. Ignore who’ll recover on their own

3. Treat only those who’ll die without your help

Page 39: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

39

# 15Don’t just remove the defect; ...

Page 40: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

40

# 15Don’t just remove the defect; correct the process that caused it

Page 41: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

41

#16 The number of defects remaining in a system aftera given level of tests is proportional to ...

Page 42: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

42

#16 The number of defects remaining in a system aftera given level of tests is proportional to the number found during the test

Page 43: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

43

#17 Programmers deliver the same number of

LOC/day regardless of the language they are writing in

Use the highest-level language

Page 44: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

44

There are many more!

Please post any that are familiar to you on the message board

Page 45: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

45

In Today’s Lecture

• We became familiar with the the role of heuristics in design

• We also discussed a few well-known design heuristics for architectural design

Page 46: 1 CS101 Introduction to Computing Lecture 24 Design Heuristics.

46

Next Lecture:Web Design for Usability

• To become able to appreciate the role of usability in Web design

• To become able to identify some of the factors affecting the usability of a Web page