30 CRC Sessions

CONTENT

  • What is a CRC Session?
  • How does a CRC Session Work?
  • Why conduct a CRC Session?

SLIDE DECKS

Some of the material presented in this chapter will be discussed in class. It is your responsibility to ensure you cover all the concepts presented both in class and in this textbook.

What is a CRC Session?

A CRC session refers to a collaborative design and modelling technique used in software engineering and object-oriented programming. CRC stands for “Class, Responsibility, and Collaboration.” CRC sessions are a method for brainstorming and defining the classes, their responsibilities, and how they collaborate within a software system or application. This technique helps in designing the object-oriented structure of a system by focusing on the key components and their interactions.

How does a CRC Session Work?

Here’s a breakdown of what happens during a CRC session:

1. **Class:** Participants in the session identify the classes or objects that are necessary to implement the software system. Each class represents a concept, entity, or component within the system.

2. **Responsibility:** For each identified class, the participants determine its responsibilities or the tasks it needs to perform within the system. Responsibilities define what each class is responsible for in terms of data and behaviour.

3. **Collaboration:** In this step, participants identify how classes collaborate with each other to achieve the system’s goals. They specify which classes send messages or interact with other classes and describe the nature of these interactions.

CRC sessions are typically conducted as group activities involving developers and designers. Participants use index cards or similar materials to jot down class names, responsibilities, and collaboration details. These cards are then arranged on a table or a board to visualize the structure and interactions of the system.

Why conduct a CRC Session?

The benefits of CRC sessions include:

  • Clear Object-Oriented Design: CRC sessions help teams create a clear and well-structured design for an object-oriented system by focusing on the essential classes and their roles.
  • Effective Communication: These sessions facilitate communication among team members and stakeholders, ensuring everyone has a shared understanding of the system’s design.
  • Iterative Design: CRC sessions can be conducted iteratively, allowing for ongoing refinement and adjustments to the system’s structure as the project progresses.
  • Documentation: The cards created during CRC sessions can serve as documentation that captures the design decisions and can be referenced throughout the development process.

CRC sessions are a valuable technique, particularly in the early stages of software development, to establish a solid foundation for object-oriented system design and to ensure that the system’s classes and their responsibilities align with the project’s goals and requirements.

License

Community-Engaged Systems Analysis & Software Design Copyright © 2024 by Daniel Gillis and Nicolas Durish. All Rights Reserved.

Share This Book