Карточки CRC: Инструмент для проектирования объектно-ориентированного ПО
Class-responsibility-collaboration card
CRC-карты: эффективный инструмент для мозгового штурма при объектно-ориентированном проектировании ПО. Переход от use case к диаграммам классов, высокая связность.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Карты совместной ответственности классов (CRC) — это инструмент для мозгового штурма, используемый при проектировании объектно-ориентированного программного обеспечения. Они были впервые предложены Уордом Каннингхэмом и Кентом Беком как учебное пособие, но также популярны среди опытных разработчиков и рекомендуются сторонниками экстремального программирования. Автор Мартин Фаулер отметил, что карты CRC могут быть эффективным способом быстрой разработки множества альтернативных взаимодействий, поскольку они позволяют избежать большого количества чертежей и исправлений. После сессий с использованием карт CRC часто создаются последовательности диаграмм для фиксации выявленных взаимодействий. Карты CRC широко используются на этапе проектирования при разработке систем и программного обеспечения для преобразования описаний вариантов использования в диаграммы классов, обеспечивая более плавный переход, широкий обзор и позволяя разработчикам реализовывать решения с низкой связанностью и высокой сплоченностью. Карты CRC обычно изготавливаются из карточек-заметок. Участники сессии мозгового штурма создают одну карту CRC для каждого релевантного класса/объекта в их проекте. Карта разделена на три секции:
Class responsibility collaboration (CRC) cards are a brainstorming tool used in the design of object oriented software. They were originally proposed by Ward Cunningham and Kent Beck as a teaching tool but are also popular among expert designers and recommended by extreme programming practitioners. Author Martin Fowler has written that CRC cards may be a sensible means by which multiple alternative interactions may be quickly devised, as they avoid a great deal of drawing and erasing. CRC card sessions may be followed by the creation of sequence diagrams to capture interactions that are identified. CRC cards are frequently employed during the design phase of system and software development to transition use case descriptions into class diagrams, allowing a smoother transition with a greater overview and permitting developers to implement solutions with low binding and high cohesion. CRC cards are usually created from index cards. Members of a brainstorming session will write one CRC card for each relevant class/object of their design. The card is partitioned into three areas:
В верхней части — название класса.
Слева — обязанности класса.
Справа — взаимодействующие классы (другие классы), с которыми класс взаимодействует для выполнения своих обязанностей.
On top of the card, the class name
On the left, the responsibilities of the class
On the right, collaborators (other classes) with which the class interacts to fulfill its responsibilities
Использование небольших карт упрощает проектирование, сужает обязанности классов и помогает разработчикам сосредоточиться на ключевых аспектах классов, не углубляясь в детали реализации. Благодаря своей портативности, карты легко раскладывать на столе и переставлять во время обсуждения проекта.
Using small cards minimizes the complexity of the design, reduces class responsibilities and keeps designers focused on the essentials of the classes without exploring implementation details. Because the cards are portable, they can easily be laid out on a table and rearranged while discussing a design.
Создание карт CRC
Создание CRC-карт обычно начинается с написания сценария, определяющего основных действующих лиц и действия. Из сценария существительные должны стать классами, глаголы – обязанностями, а взаимодействующие объекты – другими картами, с которыми данная карта будет взаимодействовать.
Creation of CRC cards normally begins with writing a scenario that identifies the major actors and actions. From the scenario, nouns should become classes, verbs become responsibilities and collaborators are the other cards with which the card will interact.