Class-Responsibility-Collaboration card

Class-Responsibility-Collaboration card

Class Responsibility Collaborator (CRC cards) are a brainstorming tool used in the design of object-oriented software. They were proposed by Ward Cunningham and Kent Beck. [Citation
last1 = Beck | first1 = Kent
author1-link = Kent Beck
last2 = Cunningham | first2 = Ward
author2-link = Ward Cunningham
title = A laboratory for teaching object oriented thinking
journal = ACM SIGPLAN Notices
volume = 24
issue = 10
pages = 1-6
publisher = ACM
location = New York, NY, USA
date = October 1989
year = 1989
isbn = 0-89791-333-7
] They are typically used when first determining which classes are needed and how they will interact.

CRC cards are usually created from index cards on which are written:

# The class name
# Its Super and Sub classes (if applicable)
# The responsibilities of the class.
# The names of other classes with which the class will collaborate to fulfill its responsibilities.
# Author

Using a small card keeps the complexity of the design at a minimum. It focuses the designer on the essentials of the class and prevents him from getting into its details and inner workings at a time when such detail is probably counter-productive. It also forces the designer to refrain from giving the class too many responsibilities. Because the cards are portable, they can easily be laid out on a table and re-arranged while discussing a design with other people.

A common method to determine what cards should be created is to read a specification for the program being designed and consider if each noun should be a class and if each verb should be a responsibility of the noun or class to which it belongs. Naturally, the existence of a noun or verb does not require a class or responsibility in the program, but it is considered a good starting point.

References

See also

* Meta-modeling
* Unified Modeling Language

External links

* [http://c2.com/doc/oopsla89/paper.html A Laboratory For Teaching Object-Oriented Thinking] paper by Kent Beck and Ward Cunningham.
* [http://www.extremeprogramming.org/rules/crccards.html A concise introduction at extremeprogramming.org]
* [http://alistair.cockburn.us/index.php/Using_CRC_cards Using CRC Cards]
* [http://www.excelsoftware.com/crccards.html CRC cards for Software Design, a Commercial Product ]
* [http://www.merobase.com Draw CRC cards online and search for source code matching them ]
* [http://c2.com/doc/crc/draw.html A CRC Description of HotDraw]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Class-responsibility-collaboration card — Class Responsibility Collaboration (CRC) cards are a brainstorming tool used in the design of object oriented software. They were proposed by Ward Cunningham and Kent Beck. [1] They are typically used when first determining which classes are… …   Wikipedia

  • Responsibility for the Holocaust — Historians differ as to where the responsibility for the Holocaust lies. Intentionalist historians such as Lucy Dawidowicz argue that Hitler planned the extermination of the Jewish people from as early as 1918, and that he personally oversaw its… …   Wikipedia

  • Meta-Process Modeling — is a type of metamodeling used in software engineering and systems engineering for the analysis and construction of models applicable and useful some predefined problems. Meta process support the effort of creating flexible process models. The… …   Wikipedia

  • Glossary of Unified Modeling Language terms — This glossary of Unified Modeling Language terms covers all versions of UML. Individual entries will point out any distinctions that exist between versions.A* Abstract An indicator applied to a classifier (e.g., actor, class, use case) or to some …   Wikipedia

  • Meta-process modeling — Abstraction level for processes.[1] Meta process modeling is a type of metamodeling used in software engineering and systems engineering for the analysis and construction of models applicable and useful to some predefined problems. Meta process… …   Wikipedia

  • Object-oriented analysis and design — (OOAD) is a software engineering approach that models a system as a group of interacting objects. Each object represents some entity of interest in the system being modeled, and is characterised by its class, its state (data elements), and its… …   Wikipedia

  • Object-oriented design — OOD redirects here. OOD may also refer to Officer of the Deck, Officer of the day, or the Ood. Object oriented design is the process of planning a system of interacting objects for the purpose of solving a software problem. It is one approach to… …   Wikipedia

  • Object modeling language — is a modeling language based on a standardized set of symbols and ways of arranging them to model (part of) an object oriented software design or system design. Some organizations use them extensively in combination with a software development… …   Wikipedia

  • CRC — may refer to: Contents 1 Organizations 2 Companies 3 Computing 4 Places 5 Other …   Wikipedia

  • Ambiguous viewpoint — Object Oriented Analysis and Design models are often presented without clarifying the viewpoint represented by the model. By default, these models denote an implementation viewpoint that visualises the structure of a computer program. Mixed… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”