クラス・責任・コラボレーション(CRC)カードは、オブジェクト指向ソフトウェアの設計において用いられるブレインストーミングツールです。元々はWard CunninghamとKent Beckによって教育ツールとして提案されました[ 1 ]が、熟練した設計者の間でも人気があり[ 2 ] 、エクストリームプログラミングの実践者からも推奨されています[ 3 ]。著者のMartin Fowlerは、CRCカードは多くの描画と消去を回避できるため、複数の代替インタラクションを迅速に考案するための賢明な手段であると述べています。CRCカードセッションの後には、特定されたインタラクションを捉えるための シーケンス図を作成することができます。
CRC カードは、システムおよびソフトウェア開発の設計フェーズでユースケースの説明をクラス ダイアグラムに移行するために頻繁に使用され、よりスムーズな移行とより広い概要の把握が可能になり、開発者は結合度が低く凝集度が高いソリューションを実装できるようになります。
CRCカードは通常、インデックスカードから作成されます。ブレインストーミングセッションのメンバーは、設計に関連するクラス/オブジェクトごとに1枚のCRCカードを作成します。カードは3つの領域に分割されています。[ 1 ] [ 2 ]
小さなカードを使用することで、設計の複雑さが最小限に抑えられ、クラスの責任が軽減され、設計者は実装の詳細を吟味することなく、クラスの本質的な部分に集中できます。カードは持ち運び可能なので、テーブルの上に簡単に広げることができ、設計を議論しながら並べ替えることもできます。
CRCカードの作成は通常、主要なアクターとアクションを特定するシナリオの作成から始まります。シナリオでは、名詞はクラス、動詞は責任、協力者はカードが相互作用する他のカードとなります。