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