time

CRC-карточки

Одним из методов мозгового штурма при анализе и проектировании задач с использованием ООП есть CRC карточки (Class-Responsibility-Collaboration – Класс-Взаимодействия-Сотрудничества) – удобный способ для определения классов и их взаимодействия. Этот метод предложен Уордом Каннингемом и Кентом Беком. Использование карточек минимизирует уровень сложность на первых этапах проектирования. Главным предназначением CRC карточек является концентрирование разработчики на главных абстракциях задачи и предотвращение от зарывания в подробности и детали второго плана.

Вверху карточки пишется название класса, в левой половине – за что он отвечает, в правой – с кем сотрудничает. Проходя по техническому заданию или любому другому документу описывающему задачу, на каждую нужную сущность заводиться класс, имя которого записывается в шапке карточки.

Слева карточки записывается ответственность класса – что класс должен делать? Выделенные ответственности будут в будущем методами класса. После анализа ответственности класса, возможно, часть ответственностей с одного большого класса передадутся другому классу, или выделятся новые, более детальные классы.

Часто существительные технического задания выделяют в классы, а глаголы в ответственности класса.

Справа карточки отмечается связи класса – что другие классы делают при взаимодействии с ними? Связи определяет область сотрудничества этого класса. Карточки можно раскладывать так, чтобы представить формы сотрудничества объектов.

С точки зрения динамики моделируемой задачи, расположение карточек показывает поток сообщений между объектами, с точки зрения статики они представляют иерархии классов.

Для этого метода анализа есть специальные бумажные карточки, размера 3х5, иногда даже разноцветные – для большей наглядности. Но в нашем бытовом производстве может, например, сгодиться чистый лист A4, аккуратно разделенные на 4 части.

Пример карточки для MVC паттерна:

crc_cards.png

После предварительного анализа с использованием CRC карточек можно приступать к UML моделированию для более детального анализа задачи или представления модели для всех участников разработки или … каждый сам подставит для чего ему нужен UML :) а кому-то возможно хватит и CRC карточек.

blog comments powered by Disqus