Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSE564 Lecture 06

CSE564 Lecture 06

Software Design
Programming in the Large
(202101)

Javier Gonzalez-Sanchez

September 06, 2020
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. jgs CSE 564 Software Design Lecture 06: Programming in the

    Large Dr. Javier Gonzalez-Sanchez [email protected] javiergs.engineering.asu.edu | javiergs.com PERALTA 230U Office Hours: By appointment
  2. jgs 564 00000110 Homework Read: § Programming in the Large

    vs Programming in the Small F. DeRemer International Conference on Reliable Software April 1975 § Teaching Object-Oriented Thinking Kent Beck (JUnit 👀) International conference on OOPSLA October 1989
  3. jgs 564 00000110 Timeline 1971 Wirth 1972 Parnas 1975 DeRemer

    1989 Beck Programming in the Large OO Thinking Stepwise refinement Information Hiding 1997 UML
  4. jgs 564 00000110 Programming in the large (1975) Programming in

    the Large vs Programming in the Small F. DeRemer International Conference on Reliable Software April 1975 50 most influential and technically excellent publications programming languages ACM
  5. jgs 564 00000110 Programming in the large (1975) § High-cohesion

    and loose-coupling § Programming versus Structuring § (Develop) Many small programs(modules) written by different people. § (Architecture) Structuring a large collection of modules to form a "system" § Care for the trees without lose sight of the forest § Changes become difficult if operates across module boundaries § Programming in the large involves setting up modules that will not need altering in the event of probable changes.
  6. jgs 564 00000110 Programming in the large (1975) § Top-down.

    § Bottom-up. § One level at a time. § Vertical / Horizontal § Linking § Composition § Decomposition § Accessibility (public, private) § Hierarchy
  7. jgs 564 00000110 Teaching Object-Oriented Thinking (1989) Teaching Object-Oriented Thinking

    Kent Beck International conference on OOPSLA 1989 Creator of eXtreme programming and Creator of Unit Testing Framework (JUnit for Java with Erich Gamma) ACM
  8. jgs 564 00000110 Teaching Object-Oriented Thinking (1989) Class name, responsibilities,

    and collaborators • Designs can be characterized at an abstract level as having processes, data flows, and data stores, regardless of implementation language or operating environment. • A Diagram for Object-Oriented Programs Cunningham, W. and Beck, K.: OOPSLA, 1986.
  9. jgs 564 00000110 Object Oriented Relationships Association Directed Association Reflexive

    Association Multiplicity Aggregation Composition Generalization Realization
  10. jgs 564 00000110 Summary • Procedure, Function Method • Module

    • Unit • System • Class • Object • Task • Responsibility • Collaborator • Encapsulation / Accessibility • Hierarchy • Composition / Decomposition • Levels • Linking
  11. jgs 564 00000110 Assignment 02 Submit to Canvas (individually or

    pairs): § Source Code – Java source code o Show your skills for readability (make your code easy to read) o Use Javadoc o If you are not familiar with Java Guidelines, review this: https://google.github.io/styleguide/javaguide.html o Code SHOULD compile and run § A PDF file a paper describing: o 3 screenshots with the input and output for small, medium, and big scenarios, respectively o A conclusion addressing the quality (and limitations) of your solution
  12. 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.