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)

B546a9b97d993392e4b22b74b99b91fe?s=128

Javier Gonzalez

September 06, 2020
Tweet

Transcript

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

    Large Dr. Javier Gonzalez-Sanchez javiergs@asu.edu javiergs.engineering.asu.edu | javiergs.com PERALTA 230U Office Hours: By appointment
  2. jgs Previously Coding

  3. jgs 564 00000110 We have this

  4. jgs 564 00000110 String readFile (String)

  5. jgs 564 00000110 void translate (String [ ][ ] )

  6. jgs 00000010 [ - < < ( - ) >

    > ] [ ( < - > ) ] main () { home if(){ if(){ while() { whatever } } } } home () { while() { if() { something } } } We have this
  7. jgs Next Steps

  8. jgs 00000010 [ integer <* <* (* float ) >

    > ] [ (* <* text > ) ] integer home, wxy; float whatever, a, b; text something; main () { home if( 1 == 1){ if( wxy == 123){ while(a1 < x7) { whatever } } } } home () { while(a > b) { if(123 != 456) { something } } } Next
  9. jgs 564 00000110 Next

  10. jgs 564 00000110 Next

  11. jgs Large vs Small Programming

  12. jgs 564 00000110 Timeline 1971 Wirth 1972 Parnas 1975 DeRemer

    1989 Beck Programming in the Large OO Thinking Stepwise refinement Information Hiding 1997 UML
  13. 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
  14. 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.
  15. 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
  16. 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
  17. 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.
  18. jgs 564 00000110 The Unified Process And Unified Modeling Language

  19. jgs 564 00000110 Concepts • Procedure, Function Method • Module

    • Unit ? • System • Class • Object • Task • Responsibility • Collaborator • Encapsulation / Accessibility • Hierarchy • Composition / Decomposition • Levels • Linking
  20. jgs CSE 564 Computer Systems Fundamentals Javier Gonzalez-Sanchez javiergs@asu.edu Fall

    2020 Disclaimer. These slides can only be used as study material for the class CSE564 at ASU. They cannot be distributed or used for another purpose.