CRC Cards for Software Design

CRC Cards CRC cards are used to discover, collect and document class information like responsibilities, attributes and collaborations between classes. They are popular among developers using agile development methods or as a front end to UML. Part of the attraction of CRC cards is their simplicity. Developers can use them with little formal training and just paper and pencil for tools.

CRC cards are used in responsibility driven design to reduce development cost and time to market. The core concepts are simple. Each card represents a class and its properties. Each design scenario defines class interactions needed to satisfy project requirements.

The value of CRC cards will increase as the project and team size grows. However, the inefficiencies of paper based cards will also increase on larger projects. At some point, there are big advantages to be gained by automation. With just a couple dozen cards, its easy to locate the right card and add new attributes, responsibilities and collaborations. Increase the number of cards to a few hundred or a few thousand and the search and organizational capabilities of an automated tool can save you alot of time.

Cards are constantly changing as developers add, delete, move and rename information. Those changes ripple throughout a model and become unmanageable in a paper based system with just a few hundred item names (card, attribute, responsibility or collaboration name). With an automated system, make a change anywhere in the model and every reference throughout the model is instantly updated. Imagine the quality and consistency improvements in names that later get used during the coding effort. Attributes and responsibilities can be dragged or copied from card to card making design changes and refinements very fast and fluid.

CRC cards on paper presume that all team members are physically located in the same spot. With developers working from home, remote locations, different time zones and even scattered across multiple countries, a computer based medium and the communication advantage of the internet are essential.

Part of the reason for using CRC cards is to discover a stable object design that provides a solid foundation on which you can build your software. That stability can save countless hours during the process of coding, testing, integrating, deploying and maintaining your project. Once you have that design information in the computer it can be used to drive other activities in the development process like design reviews, project scheduling, code generation from a UML based modeling tool and design documentation for the project that is available to all team members.

Few projects start from scratch. Most projects are enhancements of existing software, ports to new environments or reuse of existing software assets. Automated tools make it easy to create CRC cards from existing source code. This quickly presents the existing design to aid your understanding, educate new developers and allow forward engineering of the project.

QuickCRC Macintosh Box QuickCRC Windows Box QuickCRC Linux Box

QuickCRC from Excel Software automates CRC cards, design scenarios and active simulation of your evolving design. The MacTranslator and WinTranslator reengineering tools make it possible to automatically create CRC cards from existing source code written in C++, Objective-C, Java, Delphi or Ada.

Goto Excel Software Home Page