Class-responsibility-collaboration card: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>Citation bot
Alter: pages. Formatted dashes. | Use this bot. Report bugs. | Suggested by Headbomb | #UCB_toolbar
 
imported>Onel5969
m Disambiguating links to Object-orientation (link changed to Object-oriented programming) using DisamAssist.
 
Line 1: Line 1:
'''Class-responsibility-collaboration''' ('''CRC''') '''cards''' are a [[brainstorming]] tool used in the design of [[object-oriented]] software. They were originally proposed by [[Ward Cunningham]] and [[Kent Beck]] as a teaching tool<ref name="beck">{{cite journal |last1=Beck |first1=Kent |last2=Cunningham |first2=Ward |title=A Laboratory for Teaching Object Oriented Thinking |journal=SIGPLAN Notices |date=1986 |volume=24 |issue=10 |pages=1–6 |doi=10.1145/74878.74879}}</ref> but are also popular among expert designers<ref name="fowler">Martin Fowler, ''UML Distilled'', chapter 4</ref> and recommended by [[extreme programming]] practitioners.<ref name="xp">[http://www.extremeprogramming.org/rules/crccards.html A concise introduction at extremeprogramming.org]</ref> Author [[Martin Fowler (software engineer)|Martin Fowler]] has written that CRC cards may be a sensible means by which multiple alternative interactions may be quickly devised, as they avoid a great deal of drawing and erasing. CRC card sessions may be followed by the creation of [[sequence diagram|sequence diagrams]] to capture interactions that are identified.
'''Class-responsibility-collaboration''' ('''CRC''') '''cards''' are a [[brainstorming]] tool used in the design of [[Object-oriented programming|object-oriented]] software. They were originally proposed by [[Ward Cunningham]] and [[Kent Beck]] as a teaching tool<ref name="beck">{{cite journal |last1=Beck |first1=Kent |last2=Cunningham |first2=Ward |title=A Laboratory for Teaching Object Oriented Thinking |journal=SIGPLAN Notices |date=1986 |volume=24 |issue=10 |pages=1–6 |doi=10.1145/74878.74879}}</ref> but are also popular among expert designers<ref name="fowler">Martin Fowler, ''UML Distilled'', chapter 4</ref> and recommended by [[extreme programming]] practitioners.<ref name="xp">[http://www.extremeprogramming.org/rules/crccards.html A concise introduction at extremeprogramming.org]</ref> Author [[Martin Fowler (software engineer)|Martin Fowler]] has written that CRC cards may be a sensible means by which multiple alternative interactions may be quickly devised, as they avoid a great deal of drawing and erasing. CRC card sessions may be followed by the creation of [[sequence diagram|sequence diagrams]] to capture interactions that are identified.


CRC cards are frequently employed during the design phase of system and software development to transition use-case descriptions into class diagrams, allowing a smoother transition with a greater overview and permitting developers to implement solutions with low binding and high cohesion.
CRC cards are frequently employed during the design phase of system and software development to transition use-case descriptions into class diagrams, allowing a smoother transition with a greater overview and permitting developers to implement solutions with low binding and high cohesion.

Latest revision as of 09:47, 29 July 2025

Class-responsibility-collaboration (CRC) cards are a brainstorming tool used in the design of object-oriented software. They were originally proposed by Ward Cunningham and Kent Beck as a teaching tool[1] but are also popular among expert designers[2] and recommended by extreme programming practitioners.[3] Author Martin Fowler has written that CRC cards may be a sensible means by which multiple alternative interactions may be quickly devised, as they avoid a great deal of drawing and erasing. CRC card sessions may be followed by the creation of sequence diagrams to capture interactions that are identified.

CRC cards are frequently employed during the design phase of system and software development to transition use-case descriptions into class diagrams, allowing a smoother transition with a greater overview and permitting developers to implement solutions with low binding and high cohesion.

CRC cards are usually created from index cards. Members of a brainstorming session will write one CRC card for each relevant class/object of their design. The card is partitioned into three areas:[1][2]

  1. On top of the card, the class name
  2. On the left, the responsibilities of the class
  3. On the right, collaborators (other classes) with which the class interacts to fulfill its responsibilities

Using small cards minimizes the complexity of the design, reduces class responsibilities and keeps designers focused on the essentials of the classes without exploring implementation details. Because the cards are portable, they can easily be laid out on a table and rearranged while discussing a design.

Creating CRC cards

Creation of CRC cards normally begins with writing a scenario that identifies the major actors and actions. From the scenario, nouns should become classes, verbs become responsibilities and collaborators are the other cards with which the card will interact.

See also

References

<templatestyles src="Reflist/styles.css" />

  1. a b Script error: No such module "Citation/CS1".
  2. a b Martin Fowler, UML Distilled, chapter 4
  3. A concise introduction at extremeprogramming.org

Script error: No such module "Check for unknown parameters".

External links