cs101- introduction to computing- lecture 24

46
1 CS101 Introduction to Computing Lecture 24 Design Heuristics

Upload: bilal-ahmed

Post on 08-Jul-2015

45 views

Category:

Education


1 download

DESCRIPTION

CS101- Introduction to Computing- Lecture 24 Virtual University Course CS101- Introduction to Computing Lecture No 24 Design Heuristics

TRANSCRIPT

Page 1: CS101- Introduction to Computing- Lecture 24

1

CS101 Introduction to Computing

Lecture 24Design Heuristics

Page 2: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

3

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

Aristotle

Page 4: CS101- Introduction to Computing- Lecture 24

4

efficiency ∝ 1universality

Page 5: CS101- Introduction to Computing- Lecture 24

5

focus!

Page 6: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

7

Heuristic?

Page 8: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

9

?Heuristic

Wisdom

Page 10: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

11

system?

Page 12: CS101- Introduction to Computing- Lecture 24

12

System

A collection of elements which

working togetherproduces a result not achieved by the things alone

Page 13: CS101- Introduction to Computing- Lecture 24

13

System Architecture?

Page 14: CS101- Introduction to Computing- Lecture 24

14

System Architecture

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

of a product or a process

Page 15: CS101- Introduction to Computing- Lecture 24

15

Design == Architecture?

Page 16: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

17

My favorite system architecting(and other relevant) heuristics

--- in no particular order ---

Page 18: CS101- Introduction to Computing- Lecture 24

18

Page 19: CS101- Introduction to Computing- Lecture 24

19

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

do the hard part 1st1st

Page 20: CS101- Introduction to Computing- Lecture 24

20

# 3All the serious

mistakes are made on the very first day

Page 21: CS101- Introduction to Computing- Lecture 24

21

# 4

Simplify, simplify, simplify!

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

Page 22: CS101- Introduction to Computing- Lecture 24

22

CautionCaution!!Everything should be as

simple as possiblebut not simpler

Al Einstein

Page 23: CS101- Introduction to Computing- Lecture 24

23

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

you don’t understand it or it does not work

Page 24: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

25

# 7Success is defined by

the user, not the builder

Page 26: CS101- Introduction to Computing- Lecture 24

26

Customer is always

right?

Page 27: CS101- Introduction to Computing- Lecture 24

27

It depends!# 8

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

Page 28: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

29

# 10

A good solution to a problem

somehow looks nice & elegant

Page 30: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

31

2

6

5

4

31

Page 32: CS101- Introduction to Computing- Lecture 24

32

2

6

5

4

31

Page 33: CS101- Introduction to Computing- Lecture 24

33

2

6

5

4

31

Page 34: CS101- Introduction to Computing- Lecture 24

34

12

3

5

6

7

84

9

Page 35: CS101- Introduction to Computing- Lecture 24

35

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

7±2 chunks emerges

Page 36: CS101- Introduction to Computing- Lecture 24

36

Life is the art of drawing sufficient conclusions

from insufficient premises

Samuel Butler

Page 37: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

39

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

Page 40: CS101- Introduction to Computing- Lecture 24

40

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

Page 41: CS101- Introduction to Computing- Lecture 24

41

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

Page 42: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

44

There are many more!

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

Page 45: CS101- Introduction to Computing- Lecture 24

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: CS101- Introduction to Computing- Lecture 24

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