CRCカード
CRCカードとは、オブジェクト指向ソフトウェア設計で使われるブレインストーミングツールである。CRC とは「クラス-責務-コラボレータ」を表す英語の頭文字である。ウォード・カニンガムの考案である。通常、設計の最初期にどのようなクラスが必要で、それらがどのように相互に連携するかを決定するのに使う。
CRCカードにはインデックスカードが使われる(米国では76mm×127mmサイズが一般的)。それに以下のような項目を記述していく:
クラス名
パッケージ名(もしあれば)
そのクラスの責務(すべきこと)
そのクラスが自身の責務を果たすために連携しなければならない他のクラスの名前を列挙する。
一枚のカードに一個のクラスに関する以上の事項が書かれる。このとき小さなカードを使うことで設計の複雑さを最小にする(あまり詳細を書き込まない)。これは設計者らが各クラスの詳細に入り込むのを防いでクラス群の本質に集中するようにさせ、生産性を上げるためである。また、一個のクラスにあまりに多くの責務(機能)を盛り込むのを防ぐ。カードは持ち運び可能なので、テーブルの上に広げて複数人で話し合うのにも適している。
作成すべきカード(クラス)を決定する一般的な手法は、プログラムの仕様書を読み、そこに登場する名詞がクラスになるか、また、動詞が責務になるかサブクラスになるかを検討するというものである。もちろん、全ての名詞や動詞がクラスやその責務になるわけではないが、出発点としては適切である。