Slide 1

Slide 1 text

jgs CSE 564 Software Design Lecture 02: The Beginning Dr. Javier Gonzalez-Sanchez [email protected] javiergs.engineering.asu.edu | javiergs.com PERALTA 230U Office Hours: By appointment

Slide 2

Slide 2 text

jgs Previously

Slide 3

Slide 3 text

jgs Fall 2021 | 00000010 What Makes a Good Design? OOAD, Grady Booch, 2007

Slide 4

Slide 4 text

jgs The Beginning

Slide 5

Slide 5 text

jgs Fall 2021 | 00000010 Timeline 1971 1985 1972 1969 1959 1995 1997

Slide 6

Slide 6 text

jgs Fall 2021 | 00000010 Stepwise Refinement (1971) Program Development by Stepwise Refinement April 1971 Niklaus Wirth Communications of the ACM Computer Scientist, Turing Award 1984 for developing a sequence of innovative programming languages.

Slide 7

Slide 7 text

jgs Fall 2021 | 00000010 Stepwise Refinement (1971) Note: The author gratefully acknowledges the helpful and stimulating influence of many discussions with • A. Hoare - sorting algorithm quicksort (1959) • E. W. Dijkstra - shortest path algorithm (1956) and compiler construction, operating systems, distributed systems, concurrent programming, programming language, program verification, graph algorithms, etc.

Slide 8

Slide 8 text

jgs Fall 2021 | 00000010 Stepwise Refinement (1971) Key Idea: Decoupling Specifically, This is ONE (of many) approach to achieve Decoupling Definition: Decoupling is separate, disengage, or dissociate (something) from something else. What is the something in this case?

Slide 9

Slide 9 text

jgs Fall 2021 | 00000010 Stepwise Refinement (1971) • Top-Down Design Technique • It is about successive refinement Definition: Refinement = task is broken up into a number of subtasks What is a Task? Goals: • Refinement implies design decisions based upon a set of design criteria. • Among these criteria are efficiency, storage economy, clarity, and regularity of structure (quality). • maintainability and extensibility (portability) can be measured primarily in terms of the degree to which a program is neatly structured.

Slide 10

Slide 10 text

jgs Fall 2021 | 00000010 Stepwise Refinement (1971) Author’s Conclusions: • programming is not about learning a powerful programming language • programming is NOT easy • Students must be taught to be conscious of the involved decisions and to critically examine and to reject solutions, sometimes even if they are correct as far as the result is concerned; they must learn to weigh the various aspects of design alternatives in the light of these criteria.

Slide 11

Slide 11 text

jgs Fall 2021 | 00000010 Stepwise Refinement (1971) Author’s Conclusions: • Programming = Coding + Design • Function-driven development • Function, method, procedure • Thought Processes: Sequence, Selection, Iteration

Slide 12

Slide 12 text

jgs And …

Slide 13

Slide 13 text

jgs Fall 2021 | 00000010 Timeline 2021

Slide 14

Slide 14 text

jgs Fall 2021 | 00000010 Questions § Who many words in an abstract? § Who many lines in a paragraph? § Who many paragraphs in a chapter? § Who many pages in a chapter? § Who many chapters in a book?

Slide 15

Slide 15 text

jgs Fall 2021 | 00000010 Questions § How many LOC in a function or procedure or method? § What about complexity (Cyclomatic Complexity) ? § How many inputs? § How many outputs? § What about exception handling?

Slide 16

Slide 16 text

jgs Case Study Stepwise Refinement Decision-making

Slide 17

Slide 17 text

jgs Fall 2021 | 00000010 Case Study

Slide 18

Slide 18 text

jgs Fall 2021 | 00000010 Case Study

Slide 19

Slide 19 text

jgs Fall 2021 | 00000010 Case Study

Slide 20

Slide 20 text

jgs Fall 2021 | 00000010 Homework § You won’t submit yet § Draft the source code. It will be discussed in our next lecture Problem to solve: 1. A data structure to store flow charts 2. Nodes? 3. Types? 4. Data / Content? 5. How to connect? 6. Who does the checking? When?

Slide 21

Slide 21 text

jgs Fall 2021 | 00000010 Homework Read: § On the Criteria To Be Used in Decomposing Systems into Modules D.L. Parnas Communications of the ACM April 1972

Slide 22

Slide 22 text

jgs Fall 2021 | 00000010 To be continued …

Slide 23

Slide 23 text

jgs CSE 564 Software Design Javier Gonzalez-Sanchez, Ph.D. [email protected] Fall 2021 Copyright. These slides can only be used as study material for the class CSE564 at ASU. They cannot be distributed or used for another purpose.