CRC Cards for Software Design
Use CRC cards to discover, collect and document class information with responsibilities, attributes and class collaborations.|
Agile development methods often use CRC cards. They are popular as a front end to UML. Part of the CRC card attraction is their simplicity. Developers can use them with little formal training and just paper and pencil for tools.
Responsibility Driven Design
In responsibility driven design, CRC cards reduce development time and cost. The concepts are simple. Each card represents a class and its properties. External agents define system interfaces. Each design scenario shows class interactions to satisfy a project requirement.
The value of using CRC cards will increase as the project and team size grows. However, the inefficiencies of paper based cards 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.
Instant Design Changes
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. Drag or copy attributes or responsibilities from card to card to make 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.
Development Process Automation
Use CRC cards to create a solid object design on which to build your software. That stability can save countless hours during the process of coding, testing, integrating, deploying and maintaining your project. With design information in the computer, it can be used to drive other activities in the development process. Design reviews, project schedules and UML based code generation can be driven from CRC card data available to all team members.
Few projects start from scratch. Most projects enhance existing software, port to new environments or reuse 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.