A Tool to Support the CRC Design Method
Steve Roach, Javier C Vásquez · 2004
Software design is an essential yet challenging concept for students in computer science and software engineering. Classes, Responsibilities, and Collaborations (CRC) is a design method focused on creating highly cohesive and modular systems. Classes describe real-world objects that exist in a system. These classes are assigned responsibilities, i.e., data and actions that the class is required to support. A class may fulfill a responsibility by itself, or it may collaborate with some other class to fulfill the responsibility. The interactions among classes must be described in detail and eventually translated into method signatures. Related responsibilities of each class are grouped into clusters called contracts. Contract responsibilities are those that perform a general service for other classes. Responsibilities that do not service outside classes are known as private responsibilities. A higher level of abstraction of this model is invoked through the use of subsystems. Subsystems can contain classes and other subsystems that combined perform a general function or set of related functions. In doing this, the design can hold several levels of abstraction. When using the CRC method as described in text books, a design team writes information on index cards. Each card represents a class. It shows the name, description, superclass, subclasses, responsibilities, collaborations, and subsystems of a class. The advantage is that the design team can easily move the cards around to visualize the design, and modifications to the design can be made quickly by simply replacing cards. Some difficulties with this approach is that design layouts are not easily transferred to team members when the spatial relations are eliminated, modification of complex classes becomes tedious, and since the data is contained only in hand-written form, it is necessary to transfer the content of cards into an electronic medium in order to use software development tools such as Rational Rose or to document the design. The CRC Design Assistant is a software tool created to assist students during the design process. It stores a design in a database and assists designers in the creation and modification of designs using the CRC method. CRC cards are represented graphically and can be easily manipulated using the mouse and keyboard. The tool can generate design documents in MS Word and UML diagrams, which can be uploaded into other tools for processing. The automation allows students to focus on the actual design of a system rather than spend time revising documents. The tool is available for download from the University of Texas at El Paso web site.