As we have discussed in class, the CRC card technique is a useful way to approach object-oriented analysis and design. It is probably best to keep the CRC cards informal and on physical index cards. However, automated tools may be quite helpful in the documentation and preservation of CRC card information.
The purpose of this project is to develop a software tool (or set of tools) to support use of CRC cards in analysis, design, and implementation of object-oriented software systems by teams of software professionals as we have discussed in class. In particular, the tool(s) must support the development of software systems using the Java language.
The tool must support the creation, deletion, modification, display, and printing of CRC cards associated with a software system project. To support the work of the development team, the tool may also support useful analyses of and reports on a project's cards.
The "front" side of the card records the information about a component
that is "visible" to clients of the component. As we have discussed
in class, the primary information on the "front" of a card includes
the component name, zero or more responsibilities, and, for each
responsibility, zero or more collaborations (e.g., other components).
The cards must also allow the definition of hierarchies of
components (e.g., Java extends
and
implements
relationships among classes) and the
association of components with subsystems of the project (e.g., Java
package
s). The tool should also include other
information such as component type (e.g., unspecified?
class
? interface
?), important component
characteristics (e.g., none? public
?
abstract
? final
?), a brief comment on the
purpose of the component, and status information on the component
development. The "front" may also include information such
as an interface invariant for the class and preconditions and
postconditions for each responsibility.
The "back" of the card can be used to record information about a component that is "not visible" to clients of the component. It should include private information such as the data fields (i.e., attributes) of the component and implementation invariants. It may also include design and implementation notes.
The development of a set of CRC cards for a software system is incremental and iterative. At any point in time various aspects of the system will be unspecified; these may be specified as the set of CRC cards are refined over time. However, a set of cards may also be modified in arbitrary ways to correct errors and to incorporate an enhanced understanding of the system's functionality and structure.
The tool may also provide other useful features such as support for role playing of scenarios through a set of cards, generation of Unified Modeling Language (UML) drawings of a project's set of cards, and generation of Java code templates for the component (e.g., class or interface) associated with a card. The tool may also support various kinds of analyses of a set of cards (e.g., consistency checking).
In determining the scope of your project and in identifying "hot spots" to support reuse and future enhancements, consider the following questions: Does the tool support "simultaneous access" to the set of cards by multiple members of a team? multiple software projects at once? multiple experimental configurations of the components of a system? backing up to an earlier system configuration? reuse of components from a library or among projects? What about support for languages other than Java (such as C++ or Smalltalk).
This is a group assignment. The groups have been assigned by Professor Cunningham. Each group is to carry out the following tasks.
UP to CSci 581 Assignments page?