$30 off During Our Annual Pro Sale. View Details »

CSE564 Lecture 06

CSE564 Lecture 06

Software Design
Programming in the Large
(202101)

Javier Gonzalez-Sanchez
PRO

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

    View Slide

  2. jgs
    Appendix
    Java Swing

    View Slide

  3. jgs
    564 00000110
    Example

    View Slide

  4. jgs
    564 00000110
    Main.java

    View Slide

  5. jgs
    564 00000110
    Canva.java

    View Slide

  6. jgs
    Large vs Small Programming

    View Slide

  7. 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

    View Slide

  8. jgs
    564 00000110
    Timeline
    1971 Wirth
    1972 Parnas
    1975 DeRemer
    1989 Beck
    Programming in the Large
    OO Thinking
    Stepwise refinement
    Information Hiding
    1997
    UML

    View Slide

  9. 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

    View Slide

  10. 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.

    View Slide

  11. 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

    View Slide

  12. 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

    View Slide

  13. 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.

    View Slide

  14. jgs
    564 00000110
    The Unified Process And Unified Modeling Language

    View Slide

  15. jgs
    564 00000110
    Object Oriented Relationships
    Association Directed
    Association
    Reflexive
    Association
    Multiplicity
    Aggregation Composition Generalization Realization

    View Slide

  16. jgs
    564 00000110
    Object Oriented World | Example

    View Slide

  17. jgs
    564 00000110
    Warning!

    View Slide

  18. jgs
    564 00000110
    Warning!

    View Slide

  19. jgs
    564 00000110
    Questions

    View Slide

  20. jgs
    564 00000110
    Summary
    • Procedure, Function Method
    • Module
    • Unit
    • System
    • Class
    • Object
    • Task
    • Responsibility
    • Collaborator
    • Encapsulation / Accessibility
    • Hierarchy
    • Composition / Decomposition
    • Levels
    • Linking

    View Slide

  21. 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

    View Slide

  22. 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.

    View Slide