Что такое CRC - карты?
CRC — карты предназначены для упрощения первого этапа проектирования и анализ задач объектно–ориентированного программного обеспечения. Их составление представляет процесс мозгового штурма в целях определения классов и их взаимодействия для концентрирования разработчиков на первостепенных задачах и во избежание излишнего внимания к прочим задачам.
Что представляют CRC - карты?
CRC — карты — это маленькая бумажная карточка, которая в своей структуре имеет следующие поля: верхнее – название класса, левое нижнее – ответственность, правое нижнее – связи класса.
Как применяют CRC - карты?
Применение метода CRC – карт представляет собой игровой процесс, роли классов в которой распределяются между разработчиками. Команда собирается для проработки различных сценариев с помощью карт.
Определение и предназначение CRC – карт
Проектирование объектно–ориентированного программного обеспечения (ООП) – непростая задача. Помочь справится с ней на ранних этапах помогают CRC – карты. В этом тексте мы разберемся, что они представляют собой и как действуют.
CRC – карты (аббр. с англ. «Class – Responsibility – Collaboration» — Класс–Обязанность–Связь) были изобретены Уордом Каннингемом и Кентом Беком в конце 80-х годов прошлого столетия.
CRC карты предназначены для упрощения первого этапа проектирования и анализ задач ООП.
Их составление представляет процесс мозгового штурма, проводимый в целях определения классов и их взаимодействия для концентрирования разработчиков на первостепенных задачах и во избежание излишнего внимания к прочим задачам.
CRC – карты отражают взаимодействие классов между собой через канал сообщений, а также иерархичность классов.
Использование данных карт является очень эффективным методом, соответствующим качественному стилю работы с ОПП. Благодаря этим картам можно произвести анализ взаимодействия объектов, то есть программы. Это важно, так как зачастую происходит уход в сторону исследования данных.
Форма и структура CRC – карт
CRC – карта – это реальная бумажная карточка небольшого размера. Обычно используют формат бумаги 3х5, или разделяют альбомный лист на четыре части. По необходимости, используют цветовое наполнение.
CRC – карта в своей структуре имеет следующие поля: верхнее – название класса, левое нижнее – ответственность, правое нижнее – связи класса.
Подробнее разберемся с содержанием информации в них.
Верхнее поле – название класса (Class). Эти данные берутся из технического задания или иного документа с задачами. На каждый элемент заводится класс. Именно он и выносится в шапку CRC — карты.
Нижнее левое поле – ответственность (Responsibility). Это информация о том, за что отвечает класс. Здесь парой слов описывается функция объекта, или операция, которую он выполняет, объем информации объекта, а также здесь могут быть указаны решения, принимаемые объектом. Зачастую, после анализа ответственностей, они перераспределяются между классами. По итогу обработки они становятся методами класса.
Существует облегчающее негласное правило: существительным тех. задания дают параметр класса, а глаголам – ответственности, но не всегда.
Нижнее правое поле – связи (Collaboration). Это поле отражает функционал класса при его взаимодействии с другими классами. В итоге карточки должны образовать целостную модель взаимодействия.
Использование CRC – карт
Применение метода CRC – карт представляет собой игровой процесс, роли классов в которой распределяются между разработчиками. Команда собирается для проработки различных сценариев с помощью карт. Происходит это посредствам передачи карт друг другу в виде сообщений. Сценарии могут быть подготовлены заранее, однако в процессе игры зачастую выявляются совершенно неожиданные варианты. Очень сложно описать эту технологию методологически, но в процессе она незамысловата и максимально легка.
Одним из самых важных моментов является распределение ответственности (нижнее левое поле — Responsibility). Нужно разумно описать обязанности объекта, что поможет сформировать иерархическую структуру модели. Важность проработки ответственностей заключается в возможности абстрагироваться от мысли о классе, как о хранителе данных. Они создают понимание о функционале класса на каждом уровне иерархии. Помимо указанного ранее, ответственность также может распределяться по операциям, атрибутам п пр.
Обычно опытные разработчики советуют не создавать длинных списков очень низких ответственностей, так как это, в конечном счете, сбивает с основной мысли и может привести к необоснованному разделению классов. Рекомендуют лаконично, в паре слов излагать суть ответственности и переносить их в другие уровни иерархии при необходимости.
При проработке связей необходимо также быть максимально внимательными, так как должны быть учтены все возможные случаи взаимодействия объектов друг с другом. Без этого модель может быть незавершенной.
На основании совокупности карт, сложенных в модель, в конечном итоге строятся CRC–диаграммы. Обычно, по итогу проработки иерархии с помощью CRC – карт выработанная модель передается на UML моделирование, где происходит детализация анализа и задач. Есть случаи, когда стадии составления CRC – диаграммы уже достаточно.
Итак, мы рассмотрели основу проектирования ООП с помощью CRC – карт. В заключении отметим, что популярность метода CRC – обусловлена тем, что они создают живое обсуждение проекта. Остальные методы несут большие временные и трудозатраты: исправление одним разработчиком, согласование с другим, рассмотрение вариантов, повторное исправление и так очень–очень долго и малоэффективно. А живое общение устраняет этот недостаток. Используя CRC — карты, разработчики уже заранее моделируют такое взаимодействие и избегают лишних проволочек.
CRC карты