Рекомендация: Проверки
Контроль - это формальная процедура, в рамках которой рабочий продукт представляется заинтересованным сторонам для комментирования и утверждения. Далее даются рекомендации по подготовке и проведении контроля.
Взаимосвязи
Основное описание

Общие рекомендации

  • Проводите контроль в форме встреч, хотя некоторые участники встречи могут заранее подготовить комментарии самостоятельно.
  • Постоянно следите за качеством выполнения задач для предотвращения обнаружения большого числа дефектов во время контроля. Для этого для каждой задачи в Rational Unified Process (RUP) следует использовать справочную таблицу, приведенную ниже. Используйте ее при неформальном контроле или в ежедневной работе.

Типы контроля

В глоссарии стандартов 1990 года IEEE определяет три вида контроля:

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

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

В RUP контроль играет важную, хотя и второстепенную роль в обеспечении качества разрабатываемого ПО. Ключевые моменты в обеспечении качества в RUP описаны в [ROY98], в разделе Peer Inspections. Тем не менее, в этой книге не выявляется очень важный эффект контроля в профессиональной разработке: менее опытные члены команды получают возможность увидеть работу экспертов, и наоборот: эксперты указывают на ошибки неопытных разработчиков.

Планирование

При планировании контрольных мероприятий определите целевой объект и рамки контроля. Все участники должны иметь ясное представление о своей роли и целях контроля.

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

После определения рамок контроля определите участников мероприятия, повестку дня, информацию, требуемую для мероприятия. При выборе участников уравновешивайте число экспертов по архитектуре и по предметной области. Явно и однозначно назначьте отвественного за оценку, которому будет поручено координирование встречи. Если это необходимо, обратитесь к другим командам или другим отделам организации для привлечения технических специалистов или специалистов по предметной области.

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

Проверяющие должны иметь опыт в области контролируемой части продукта. Для вариантов использования необходимы знания в предметой области. Для ревизии архитектуры необходимо знание методик проектирования ПО. Проверяющие, не имеющие опыта, могут узнать что-то новое для себя, но они могут отвлекать других. Поэтому соблюдайте ограничения на численность группы: не больше чеми и не меньше трех. Меньшее число увеличивает шансы пропуска ошибок, а большее мешает конструктивному обсуждению, играющему важную роль в получении качественных результатов.

Выбирайте проверяющих в соответствии с контролируемым материалом:

  • Выбирайте имеющих знания, необходимые для понимания материалов
  • Выбирайте заинтересованных в качестве (рабочего) продукта

Подготовка

До начала меоприятия необходимо собрать контролирвемые на нем рабочие продукты и вспомогательные материалы и распространить их среди участников. Это должно быть сделано заблаговременно, чтобы у участников было время ознакомиться с материалами и составить список вопросов. Это позволит значительно улучшить результаты контроля. Подготовка играет важную роль в проведении эффективного и результативного контроля.

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

Проведение мероприятия

Рекомендации по проведению успешного мероприятия по контролю:

Каждая из этих рекомендаций далее обсуждается более подробно.

Вникните в процесс контроля Проведение мероприятия

В общем, процесс контроля состоит из следующих повторяющихся фаз:

  • Поднятие вопроса проверяющим
  • Обсуждение и возможное подтверждение
  • Выявление дефекта (определение конкретной проблемы, требующей решения)
  • Продолжение прохода по коду до выявления следующего проблемного места

Для того, чтобы встреча прошла эффективно, каждый ее участник должен понимать, что цель контроля - улучшить качество рассматриваемого рабочего продукта. Рабочие продукты должны рассматриваться с критичной точки зрения. Это может быть трудным, поэтому все участники встречи должны постоянно напоминать себе о том, что они должны концентрироваться на выявлении проблем (а не поиске их решения - он будет выполняться позже, и скорей всего другими людьми).

Очень часто трудно принять критику, даже если она конструктивна. Поэтому следует еще больше концентрироваться на цели контроля: улучшении продукта.

Понимание своих ролей участниками Проведение мероприятия

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

  • ведущий
  • регистратор
  • докладчик
  • проверяющие

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

Роль регистратора часто недооценивается, хотя является существенной. Слежение за обсуждением и запись действий, которые нужно будет предпринять на основе результатов обсуждения - важная задача, для выполнения которой нужен отдельный человек. Если эту задачу будет выполнять один из проверяющих, то он не сможет участвовать в обсуждении на равне с остальными. Более того, если решение не будет зафиксировано, то скорее всего проблема, которую оно решает, появится повторно в будущем. Поэтому регистратор не должен выполнять никаких других функций.

Докладчик - это автор рабочего продукта. Он объясняет все моменты в реализации и предоставляет сведения для понимания рабочего продукта (если работа продукта неочевидна и требует разъяснений, то это требует подготовки со стороны докладчика). Важно, чтобы контрольные мероприятия не превращались в "суд" над автором - следует концентрироваться на рабочем продукте, а не представляющем его докладчике. За этим (в т.ч. и для докладчика) должен следить ведущий встречи. Задачи докладчика - предоставление предмета обсуждения, ответ на вопросы и прояснение неочевидных моментов.

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

Назначение ведущего Проведение мероприятия

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

Встреча не должна растягиваться Проведение мероприятия

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

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

Проблемы должны выявляться, а не решаться Проведение мероприятия

Одной из самых распространенных причин недостижения поставленных целей является тенденция к сведению обсуждения к способам решения выявленных проблем. Устранение проблем часто требует исследования и обдумывания. Формат мероприятия по контролю не подходит для таких обсуждений. После выявления проблемы определите, является ли она результатом дефекта, и назначьте ответственного за ее решение. Мероприятие по контролю должно быть сосредоточено только на выявлении проблем.

Если для какого-либо вопроса требуется дополнительное обсуждение в группе людей, назначьте отдельную встречу. Для этой встречи потребуется подготовка по вопросу и привлечение людей с подходящими навыками. Само мероприятие по контролю следует продолжить выявлением других проблем. Ведущему часто будет приходиться прилагать значительные усилия для предотвращения отклонения хода встречи от повестки дня.

Использование результатов встречи

Встреча не принесет пользы если ее результаты не будут зафиксированы. В заключительной части встречи:

  • Задайте приоритеты для найденных проблем.
  • Создайте в базе данных записи о дефектах для отслеживания решения выявленных проблем.
  • Если вопрос требует дополнительного рассмотрения, назначьте для рассмотрения (но не для решения проблемы) небольшую команду.
  • Если проблема модет быть решена на текущей итерации, назначьте для ее решения одного человека или группу людей.
  • Включите остальные нерешенные проблемы в планы будущих итераций.

Дополнительная информация

См. также [MCO97].