Class-responsibility-collaboration card: Difference between revisions
No edit summary |
|||
Line 19: | Line 19: | ||
*[http://alistair.cockburn.us/crystal/articles/ucrcc/usingcrccards.html Using CRC Cards] |
*[http://alistair.cockburn.us/crystal/articles/ucrcc/usingcrccards.html Using CRC Cards] |
||
*[http://www.excelsoftware.com/crccards.html CRC cards for Software Design, a Commercial Product ] |
*[http://www.excelsoftware.com/crccards.html CRC cards for Software Design, a Commercial Product ] |
||
*[http://www.merobase.com Draw CRC cards online and search source for code matching them ] |
|||
== See also == |
== See also == |
Revision as of 20:43, 18 May 2007
Class-Responsibility-Collaboration cards (CRC cards) are a brainstorming tool used in the design of object-oriented software. They were proposed by Ward Cunningham. 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 that the class will collaborate with 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 that it belongs to. 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.
External links
- A Laboratory For Teaching Object-Oriented Thinking paper by Kent Beck and Ward Cunningham.
- CRC card Tutorial by Nils Brummond
- A concise introduction at extremeprogramming.org
- Using CRC Cards
- CRC cards for Software Design, a Commercial Product
- Draw CRC cards online and search source for code matching them
See also
- Code generation
- Data mapping
- Data transformation
- Domain Specific Language (DSL)
- Domain-specific modelling (DSM)
- Eclipse GMT Project
- Generative programming (GP)
- Glossary of Unified Modeling Language terms
- Intentional Programming (IP)
- KM3
- Language oriented programming (LOP)
- List of UML tools
- MOF
- Meta-model
- Meta-modeling
- Meta-modeling technique
- Metadata
- Model-based testing (MBT)
- Model-driven architecture (MDA)
- Model Driven Engineering (MDE)
- Model Transformation Language (MTL)
- Modeling language
- Modeling perspectives
- Object-oriented analysis and design (OOAD)
- Object Constraint Language (OCL)
- MOF Queries/Views/Transformations (QVT)
- Semantic translation
- Software factory
- Transformation language (TL)
- Vocabulary-based transformation
- XMI
- XML transformation language (XTL)
- Semantic spectrum
- UML tool
- Unified Modeling Language
- Unified Language