[Skip Navigation] [ CSUSB ] / [CNS] / [CSE] / [R J Botting] / [CS375] [Search ]
[About] [Contact] [Grades] [Objectives] [Patterns] [Projects] [Schedule] [Syllabus]
Session: [01] [02] [03] [04] [05] [06] [07] [08] [09] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]
[Text Version] 16answer.html Wed Jan 11 07:25:56 PST 2012


    A List of the all 9 GRASP Patterns

  1. Information Expert
  2. Creator
  3. High Cohesion
  4. Low Coupling
  5. Controler

  6. Polymorphism
  7. Pure Fabrication
  8. Indirection
  9. Protected Variations

    Now can you write a short (1..3 sentences) description of what each of these are about?

    Can you match them up to these statements?

    • Reduce coupling by connecting to an intermediate object.
    • Objects should be created by their friends.
    • When all else fails: try inventing an object: can you get good cohesion and low coupling?
    • Allocate a task to the object knows where the data is.
    • Minimize connections between pieces of code.
    • Handle behavior variations in subclasses and use pointers to general superclasses.
    • Make each piece of code do a set of closely related things.
    • Use a high level object to guide a use case.

    Standard Definitions

  10. Artifact::="Anything that is created in the course of a project".
  11. artifact::=see above.
  12. DCD::diagram="Design Class Diagram", shows the classes that will be implemented in code.
  13. Deliverables::="A packet of artifacts that must be prepared by a deadline for review or distribution".
  14. Glossary::= See http://cse.csusb.edu/dick/cs375/uml.glossary.html.
  15. GoF::="Gang of Four", [ patterns.html#GoF ]
  16. GRASP::patterns="General Responsibility Assignment Software Patterns", a set of guidelines for designing objects and classes. They take a single event that the system must handle and determine a good class to carry it out. See [ patterns.html#GRASP -- General Responsibility Assignment Software Patterns ]
  17. Grades::= See http://cse.csusb.edu/dick/cs375/grading/.

  18. KISS::Folk_law="Keep It Simple, Stupid", in agile processes this means never drawing a diagram or preparing a document that doesn't provide value to the clients and stakeholders. In all processes it means never designing or coding what is not needed, see YAGNI.

  19. OO::shorthand="Object-Oriented".

  20. OOAD::="Object-Oriented Analysis and Design", See chapter 1 in text.
  21. patterns::="Documented families of problems and matching solutions", see Patterns.
  22. Patterns::= See http://cse.csusb.edu/dick/cs375/patterns.html.

  23. Process::="How to develop software".

  24. RJB::=The author of this document, RJB="Richard J Botting, Comp Sci Dept, CSUSB".
  25. RUP::Process="Rational UP", a proprietary version of UP.

  26. SSD::="System Sequence Diagrams", see chapter 10.

  27. TBA::="To Be Announced".

  28. UML::="Unified Modeling Language". [ Unified_Modeling_Language ]

  29. UP::="Unified Process", an iterative, risk-driven, and evolutionary way to develop OO software.

  30. YAGNI::XP="You Ain't Gonna Need It", an XP slogan that stops you planning and coding for things that are not yet needed. As a rule the future is not predictable enough to program a feature until the stakeholders actually need now. In this class it also means "It won't be on the final or in quizzes".

  31. XP::="Extreme Programming", the ultimate iterative, code-centric, user-involved process.