josh bloch charlie garrod
play

Josh Bloch Charlie Garrod 17-214 1 Administrivia Homework 3 due - PowerPoint PPT Presentation

Principles of Software Construction: Objects, Design, and Concurrency Part 1: Designing classes A formal design process: Doman modeling Josh Bloch Charlie Garrod 17-214 1 Administrivia Homework 3 due Sunday at 11:59 p.m. Optional


  1. Principles of Software Construction: Objects, Design, and Concurrency Part 1: Designing classes A formal design process: Doman modeling Josh Bloch Charlie Garrod 17-214 1

  2. Administrivia • Homework 3 due Sunday at 11:59 p.m. • Optional reading for today: • UML and Patterns Chapter 17 • Effective Java items 49, 54, and 69 – Required reading next Tuesday: • UML and Patterns Chapters 14, 15, and 16 • Midterm exam "next Thursday" – Extended time exam, released sometime Wednesday, due Thursday night – Review session Tuesday 6:30 – 8:30 p.m. – Practice exam coming this weekend 17-214 2

  3. Key concepts from Tuesday • More design patterns for reuse – Template method pattern – Iterator pattern – Decorator pattern 17-214 3

  4. Today • Design goals and design principles • Interaction diagrams: to visualize dynamic behavior • Understanding a design problem: Object-oriented analysis 17-214 4

  5. Metrics of software quality, i.e., design goals Functional correctness Adherence of implementation to the specifications Robustness Ability to handle anomalous events Flexibility Ability to accommodate changes in specifications Reusability Ability to be reused in another application Efficiency Satisfaction of speed and storage requirements Scalability Ability to serve as the basis of a larger version of the application Security Level of consideration of application security Source: Braude, Bernstein, Software Engineering. Wiley 2011 17-214 5

  6. Design principles: heuristics to achieve design goals • Low coupling • Low representational gap • High cohesion 17-214 6

  7. A design principle for reuse: low coupling • Each component should depend on as few other components as possible • Benefits of low coupling: – Enhances understandability – Reduces cost of change – Eases reuse 17-214 7

  8. Law of Demeter • "Only talk to your immediate friends" foo.bar().baz().quz(42) 17-214 8

  9. Representational gap • Real-world concepts: • Software concepts: ? ? … … … … … 17-214 9

  10. Representational gap • Real-world concepts: • Software concepts: Actor42 Obj1 Obj2 … a objs h op12 k() … 17-214 10

  11. Representational gap • Real-world concepts: • Software concepts: Ranger PineTree Forest … age -trees height surveyForest(…) harvest() … 17-214 11

  12. Benefits of low representational gap • Facilitates understanding of design and implementation • Facilitates traceability from problem to solution • Facilitates evolution 17-214 12

  13. A related design principle: high cohesion • Each component should have a small set of closely-related responsibilities • Benefits: – Facilitates understandability – Facilitates reuse – Eases maintenance Ranger PineTree Forest … age -trees height surveyForest(…) harvest() … 17-214 13

  14. Coupling vs. cohesion • All code in one component? – Low cohesion, low coupling • Every statement / method in a separate component? – High cohesion, high coupling 17-214 14

  15. Today • Design goals and design principles • Interaction diagrams: to visualize dynamic behavior • Understanding a design problem: Object-oriented analysis 17-214 15

  16. Visualizing dynamic behavior: Interaction diagrams • An interaction diagram is a picture that shows, for a single scenario of use, the events that occur across the system’s boundary or between subsystems • Clarifies interactions: – Between the program and its environment – Between major parts of the program • For this course, you should know UML sequence diagrams 17-214 16

  17. Constructing a sequence diagram 17-214 17

  18. An example sequence diagram 17-214 18

  19. (Sequence diagram with notation annotations) 17-214 19

  20. Draw a sequence diagram for a call to LoggingList.add : public class LoggingList<E> implements List<E> { private final List<E> list; public LoggingList<E>(List<E> list) { this.list = list; } public boolean add(E e) { System.out.println("Adding " + e); return list.add(e); } public E remove(int index) { System.out.println("Removing at " + index); return list.remove(index); } … 17-214 20

  21. Today • Design goals and design principles • Interaction diagrams: to visualize dynamic behavior • Understanding a design problem: Object-oriented analysis 17-214 21

  22. A high-level software design process • Project inception • Gather requirements 17-313 • Define actors, and use cases • Model / diagram the problem, define objects • Define system behaviors • Assign object responsibilities 17-214 • Define object interactions • Model / diagram a potential solution • Implement and test the solution • Maintenance, evolution, … … 17-214 22

  23. Our path toward a more formal design process Problem Solution Space Space Domain Model Object Model Real-world concepts System implementation • • Requirements, concepts Classes, objects • • Relationships among concepts References among objects and • • inheritance hierarchies Solving a problem • Computing a result • Building a vocabulary • Finding a solution • 17-214 23

  24. Artifacts of this design process • Model / diagram the problem, define objects – Domain model (a.k.a. conceptual model) • Define system behaviors – System sequence diagram – System behavioral contracts • Assign object responsibilities, define interactions – Object interaction diagrams • Model / diagram a potential solution – Object model 17-214 24

  25. Artifacts of this design process • Model / diagram the problem, define objects – Domain model (a.k.a. conceptual model) Today: • Define system behaviors understanding – System sequence diagram the problem – System behavioral contracts • Assign object responsibilities, define interactions – Object interaction diagrams Defining a • Model / diagram a potential solution solution – Object model 17-214 25

  26. Input to the design process: Requirements and use cases • Typically prose: 17-214 26

  27. Modeling a problem domain • Identify key concepts of the domain description – Identify nouns, verbs, and relationships between concepts – Avoid non-specific vocabulary, e.g. "system" – Distinguish operations and concepts – Brainstorm with a domain expert 17-214 27

  28. Modeling a problem domain • Identify key concepts of the domain description – Identify nouns, verbs, and relationships between concepts – Avoid non-specific vocabulary, e.g. "system" – Distinguish operations and concepts – Brainstorm with a domain expert • Visualize as a UML class diagram, a domain model – Show class and attribute concepts • Real-world concepts only • No operations/methods • Distinguish class concepts from attribute concepts – Show relationships and cardinalities 17-214 28

  29. Building a domain model for a library system A public library typically stores a collection of books, movies, or other library items available to be borrowed by people living in a community. Each library member typically has a library account and a library card with the account’s ID number, which she can use to identify herself to the library. A member’s library account records which items the member has borrowed and the due date for each borrowed item. Each type of item has a default rental period, which determines the item’s due date when the item is borrowed. If a member returns an item after the item’s due date, the member owes a late fee specific for that item, an amount of money recorded in the member’s library account. 17-214 29

  30. Building a domain model for a library system A public library typically stores a collection of books, movies, or other library items available to be borrowed by people living in a community. Each library member typically has a library account and a library card with the account’s ID number, which she can use to identify herself to the library. A member’s library account records which items the member has borrowed and the due date for each borrowed item. Each type of item has a default rental period, which determines the item’s due date when the item is borrowed. If a member returns an item after the item’s due date, the member owes a late fee specific for that item, an amount of money recorded in the member’s library account. 17-214 30

  31. One domain model for the library system 17-214 31

  32. Notes on the library domain model • All concepts are accessible to a non-programmer • The UML is somewhat informal – Relationships are often described with words • Real-world "is-a" relationships are appropriate for a domain model • Real-word abstractions are appropriate for a domain model • Iteration is important – This example is a first draft. Some terms (e.g. Item vs. LibraryItem, Account vs. LibraryAccount) would likely be revised in a real design. • Aggregate types are usually modeled as classes • Primitive types (numbers, strings) are usually modeled as attributes 17-214 32

  33. Build a domain model for Homework 2 17-214 33

  34. Possible domain models for Homework 2 17-214 34

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend