Skip to content

Commit 9589f07

Browse files
authored
Merge pull request #359 from LLM-Coding/copilot/add-grasp-terminology
feat: Add GRASP semantic anchor
2 parents 4cade91 + 154c00a commit 9589f07

4 files changed

Lines changed: 145 additions & 1 deletion

File tree

docs/anchors/grasp.adoc

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
= GRASP
2+
:categories: design-principles
3+
:roles: software-developer, software-architect, educator, consultant
4+
:related: solid-principles, gof-design-patterns, clean-architecture, domain-driven-design
5+
:proponents: Craig Larman
6+
:tags: grasp, oop, responsibility-assignment, object-oriented-design, patterns
7+
:tier: 3
8+
9+
[%collapsible]
10+
====
11+
Full Name:: General Responsibility Assignment Software Patterns (or Principles)
12+
13+
Also known as:: GRASP Patterns, Responsibility-Driven Design Guidelines
14+
15+
[discrete]
16+
== *Core Concepts*:
17+
18+
Information Expert:: Assign responsibility to the class that has the information needed to fulfill it
19+
20+
Creator:: Assign responsibility for creating an object to the class that aggregates, contains, or closely uses it
21+
22+
Controller:: Assign responsibility for handling system events to a non-UI class representing the overall system or a use case
23+
24+
Low Coupling:: Assign responsibilities to minimize dependencies between classes, increasing reuse and reducing change impact
25+
26+
High Cohesion:: Assign responsibilities so that classes remain focused, understandable, and manageable
27+
28+
Polymorphism:: Use polymorphic operations to handle variations in type-based behavior instead of conditionals
29+
30+
Pure Fabrication:: Assign a set of responsibilities to an artificial class not representing a domain concept, to achieve low coupling and high cohesion
31+
32+
Indirection:: Assign responsibility to an intermediate object to mediate between other components, reducing direct coupling
33+
34+
Protected Variations:: Identify points of predicted variation and assign responsibilities to create a stable interface around them
35+
36+
37+
Key Proponents:: Craig Larman ("Applying UML and Patterns", 3rd ed., 2004)
38+
39+
[discrete]
40+
== *When to Use*:
41+
42+
* Designing object-oriented systems and deciding where to assign responsibilities
43+
* Improving cohesion and reducing coupling in existing codebases
44+
* Guiding refactoring decisions by evaluating current responsibility assignments
45+
* Teaching foundational object-oriented design principles
46+
47+
[discrete]
48+
== *Related Anchors*:
49+
50+
* <<solid-principles,SOLID Principles>> - Complementary OO design principles for maintainable systems
51+
* <<gof-design-patterns,GoF Design Patterns>> - Patterns that often embody GRASP principles
52+
* <<clean-architecture,Clean Architecture>> - Architectural style that leverages GRASP-based thinking
53+
* <<domain-driven-design,Domain-Driven Design>> - Uses responsibility assignment in the domain model
54+
====

docs/anchors/grasp.de.adoc

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
= GRASP
2+
:categories: design-principles
3+
:roles: software-developer, software-architect, educator, consultant
4+
:related: solid-principles, gof-design-patterns, clean-architecture, domain-driven-design
5+
:proponents: Craig Larman
6+
:tags: grasp, oop, responsibility-assignment, object-oriented-design, patterns
7+
:tier: 3
8+
9+
[%collapsible]
10+
====
11+
Vollständiger Name:: General Responsibility Assignment Software Patterns (oder Principles)
12+
13+
Auch bekannt als:: GRASP-Muster, Richtlinien für verantwortungsgetriebenes Design
14+
15+
[discrete]
16+
== *Kernkonzepte*:
17+
18+
Information Expert:: Weise die Verantwortung der Klasse zu, die die benötigten Informationen besitzt
19+
20+
Creator:: Weise die Verantwortung für die Erzeugung eines Objekts der Klasse zu, die es aggregiert, enthält oder eng damit zusammenarbeitet
21+
22+
Controller:: Weise die Verantwortung für die Behandlung von Systemereignissen einer Nicht-UI-Klasse zu, die das Gesamtsystem oder einen Anwendungsfall repräsentiert
23+
24+
Low Coupling (Geringe Kopplung):: Weise Verantwortlichkeiten so zu, dass Abhängigkeiten zwischen Klassen minimiert werden, um Wiederverwendung zu steigern und Änderungsauswirkungen zu reduzieren
25+
26+
High Cohesion (Hohe Kohäsion):: Weise Verantwortlichkeiten so zu, dass Klassen fokussiert, verständlich und überschaubar bleiben
27+
28+
Polymorphismus:: Nutze polymorphe Operationen, um typbasierte Verhaltensvarianten zu behandeln, anstatt Bedingungsanweisungen zu verwenden
29+
30+
Pure Fabrication:: Weise einer künstlichen Klasse, die kein Domänenkonzept repräsentiert, Verantwortlichkeiten zu, um geringe Kopplung und hohe Kohäsion zu erreichen
31+
32+
Indirektion:: Weise einem Zwischenobjekt die Verantwortung zu, zwischen anderen Komponenten zu vermitteln, um direkte Kopplung zu reduzieren
33+
34+
Protected Variations (Geschützte Variationen):: Identifiziere vorhergesagte Variationspunkte und weise Verantwortlichkeiten zu, um eine stabile Schnittstelle darum herum zu schaffen
35+
36+
37+
Schlüsselvertreter:: Craig Larman ("Applying UML and Patterns", 3. Aufl., 2004)
38+
39+
[discrete]
40+
== *Wann zu verwenden*:
41+
42+
* Entwurf objektorientierter Systeme und Entscheidung über die Zuweisung von Verantwortlichkeiten
43+
* Verbesserung von Kohäsion und Reduzierung von Kopplung in bestehenden Codebasen
44+
* Führung von Refactoring-Entscheidungen durch Bewertung aktueller Verantwortlichkeitszuweisungen
45+
* Vermittlung grundlegender objektorientierter Entwurfsprinzipien
46+
47+
[discrete]
48+
== *Verwandte Anker*:
49+
50+
* <<solid-principles,SOLID Principles>> - Ergänzende OO-Entwurfsprinzipien für wartbare Systeme
51+
* <<gof-design-patterns,GoF Design Patterns>> - Muster, die häufig GRASP-Prinzipien verkörpern
52+
* <<clean-architecture,Clean Architecture>> - Architekturstil, der GRASP-basiertes Denken nutzt
53+
* <<domain-driven-design,Domain-Driven Design>> - Nutzt Verantwortlichkeitszuweisung im Domänenmodell
54+
====

skill/semantic-anchor-translator/references/catalog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,11 @@ Source: https://github.com/LLM-Coding/Semantic-Anchors
136136
- **Proponents:** Robert C. Martin
137137
- **Core:** Depend on abstractions, not concrete implementations
138138

139+
### GRASP
140+
- **Also known as:** General Responsibility Assignment Software Patterns, Responsibility-Driven Design Guidelines
141+
- **Proponents:** Craig Larman
142+
- **Core:** 9 patterns for OO responsibility assignment — Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations
143+
139144
### DRY (Don't Repeat Yourself)
140145
- **Core:** Every piece of knowledge has single, unambiguous representation
141146

website/public/data/anchors.json

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1377,6 +1377,37 @@
13771377
"filePath": "docs/anchors/gom.adoc",
13781378
"tier": 2
13791379
},
1380+
{
1381+
"id": "grasp",
1382+
"title": "GRASP",
1383+
"categories": [
1384+
"design-principles"
1385+
],
1386+
"roles": [
1387+
"software-developer",
1388+
"software-architect",
1389+
"educator",
1390+
"consultant"
1391+
],
1392+
"related": [
1393+
"solid-principles",
1394+
"gof-design-patterns",
1395+
"clean-architecture",
1396+
"domain-driven-design"
1397+
],
1398+
"proponents": [
1399+
"Craig Larman"
1400+
],
1401+
"tags": [
1402+
"grasp",
1403+
"oop",
1404+
"responsibility-assignment",
1405+
"object-oriented-design",
1406+
"patterns"
1407+
],
1408+
"filePath": "docs/anchors/grasp.adoc",
1409+
"tier": 3
1410+
},
13801411
{
13811412
"id": "gutes-deutsch-wolf-schneider",
13821413
"title": "Gutes Deutsch nach Wolf Schneider",
@@ -2830,4 +2861,4 @@
28302861
"filePath": "docs/anchors/yagni.adoc",
28312862
"tier": 1
28322863
}
2833-
]
2864+
]

0 commit comments

Comments
 (0)