This article includes a list of general references, but it lacks sufficient corresponding inline citations. (May 2015) |
General Responsibility Assignment Software Patterns (or Principles), abbreviated GRASP, is a set of "nine fundamental principles in object design and responsibility assignment"[1]: 6 first published by Craig Larman in his 1997[citation needed] book Applying UML and Patterns.
The different patterns and principles used in GRASP are controller, creator, indirection, information expert, low coupling, high cohesion, polymorphism, protected variations, and pure fabrication.[2] All these patterns solve some software problems common to many software development projects. These techniques have not been invented to create new ways of working, but to better document and standardize old, tried-and-tested programming principles in object-oriented design.
Larman states that "the critical design tool for software development is a mind well educated in design principles. It is not UML or any other technology."[3]: 272 Thus, the GRASP principles are really a mental toolset, a learning aid to help in the design of object-oriented software.