Устранение проблем и неисправностей
Устранение проблем и неисправностей
Разработка ПО — это динамичный процесс с интенсивным обменом информацией между его участниками. При работе команды над проектом очень важно определить формальные методы поиска и устранения проблем, неисправностей и «жучков», которые постоянно появляются. Применение специальных продуктов для устранения проблем и неисправностей — один из лучших выходов. В оставшейся части главы объясняется, как эффективно использовать такие продукты.
О чём пойдёт речь
ПО для устранения проблем и неисправностей позволяет справляться с бесконечными ошибками и проблемами, всплывающими на поверхность в процессе разработки. Эти программы позволяют членам команды протоколировать, обновлять, назначать, устанавливать приоритет, сортировать и пересматривать информацию, полученную в цикле разработки проекта. Они являются важной частью любого проекта независимо от его размера. Никто не в состоянии запомнить все ошибки и проблемы, которые следует разрешить. И если они не протоколируются, не пересматриваются и для них не устанавливается приоритет, качественного продукта не создать.
Что туда входит
В NuMega использовали систему устранения проблем и неисправностей для хранения любых постоянных или временных данных о проекте, которые только можно было представить. Туда входили все программные ошибки (в том числе функциональные, затрагивающие производительность, процесс установки и параметры, а также все ошибки при сборке) и решения или предложения по улучшению проекта, его настоящих и будущих версий. Здесь действует простой, но очень важный принцип: все данные должны храниться в одном месте. Не следует держать их в хранилище, не обеспечивающем совместное использование, резервное копирование и простой доступ. (Поэтому сообщения электронной почты не подходят!)
Примечание
Я бы не советовал писать собственные программы по устранению проблем и неисправностей, так как хватает различных коммерческих программных продуктов по разумным ценам. Например, Compuware/NuMega TrackRecord, PVCS Tracker, Rational ClearQuest и др. Хотя вам потребуется самим определить, какая из них отвечает вашим потребностям, я настоятельно рекомендую принять решение в пользу покупки. Ведь вы не обязаны тратить время на создание собственных инструментов, ваше дело — поставлять ПО.
Рассмотрим пример. Разработчик замечает, что производительность в одной из частей приложения здорово снизилась, и сообщает об этом по электронной почте в конференцию разработчиков. А дальше? Кто заметит сообщение, а кто и нет. Даже если кто-то находит неполадку, её нужно запротоколировать и устранить, иначе о проблеме просто забудут. Послать сообщение по электронной почте — не плохо, но не зафиксировать наличие неисправности — беда. То же касается предложений по выпуску. Есть вероятность, что на предложение никто не откликнется, и если сообщение электронной почты было послано без протоколирования, то не будет и никакой истории работы над предложением.
Как это работает
Приведённый пример показывает, насколько важно автоматизировать элементарный обмен информацией между членами команды. Запомните: инструмент должен работать на вас, и никак иначе. Вам нужно управлять информацией просто и без лишних формальностей. В то же время вы должны следить за соблюдением дисциплины и не допускать небрежности. Для этих целей используется система устранения проблем и неисправностей. Сконфигурируйте её так, чтобы собирать следующие основные данные о проекте:
• текущее состояние проблемы: открытая или закрытая;
• дата возникновения, изменения и решения;
• текстовое описание проблемы;
• номер выпуска/сборки программы, в которой обнаружена проблема;
• имя человека, описавшего проблему:
• имя человека, работающего над проблемой в настоящее время;
• состояние проблемы: расследуется, требуется больше информации, ожидается внешнее событие, решена и т.д.;
• приоритет проблемы: низкий, средний, высокий;
• выпуск, в котором присутствует проблема;
• статут процедуры контроля качества;
• количество попыток неуспешного решения проблемы;
• список изменений к отчёту о проблеме или неисправности.
Посмотрим, как мы использовали ПО для устранения проблем и неисправностей в NuMega.
Из собственного опыта
Когда я начинал работать в NuMega, «жучки» и другие различные неисправности фиксировались на доске (если вообще фиксировались). Они оставались там до тех пор, пока не были исправлены, а затем их просто стирали. Когда доска заполнялась полностью, новые записи втискивали в уголок или, чтобы освободить место, стирали другие ошибки. Эта система работала для одного-двух человек, но истории работы над ошибками не было.
С ростом организации становилось очевидно, что нам требуется автоматизированное решение. Если бы мы в то время не перешли к нему, то не смогли бы успешно вырастить свою команду. Хотя поиск инструмента, способного решить наши проблемы, и не был сложен, способ его использования часто становился предметом спора. В конце концов мы выяснили, что для группы нашего размера куда важнее выполнять на «отлично» всего несколько функций, чем пытаться делать всё, что мы можем только представить.
Для всех ошибок — одно хранилище
У нас было простое правило: обо всех ошибках сообщать системе устранения неполадок. Если их там нет, значит, их не существует. Это здорово упростило управление мероприятиями по исправлению ошибок. Сплетни, кулуарные разговоры и сообщения электронной почты не годятся в качестве методов протоколирования ошибок. Скажем, если информация о неисправности приходит от службы технической поддержки, управления продуктом, отдела продаж — словом, от кого угодно, то эта информация не признавалась официально до момента её ввода в систему. С ростом компании большая часть работы по протоколированию ошибок ложилась на плечи службы технической поддержки, но идея оставалась той же.
Как далеко это заходит? Значит ли это, что если у одного разработчика возникла проблема с API, который реализовал другой разработчик, то её сразу же нужно запротоколировать? Вовсе нет. Разработчики могут решить проблему друг с другом самостоятельно, и тогда её не нужно протоколировать. Однако если решение проблемы займёт некоторое время и требует наблюдения (что особенно важно), то необходимо занести её в систему и описать, чтобы не забыть о её существовании. Эти правила распространяются на всех членов команды и на все отделы.
Другое преимущество от протоколирования неполадок — возможность отчитываться о них. Как здорово пойти на текущее совещание с полным списком всех крупных неполадок и людей, над ними работающих! Это эффективный способ фокусировать внимание в процессе разработки на важных вопросах. Заявивший об ошибке будет польщён тем, что её признали и она обсуждается. А тот, кто назначен для её разрешения, поймёт, что теперь не отвертеться.
Управление изменениями
Как было сказано в начале этого раздела, процесс управления изменениями может осуществляться при помощи системы устранения проблем и неисправностей. Так как все серьёзные проблемы запротоколированы, вы можете составить список необходимых исправлений. После того, как по конкретной неисправности принято решение, просто внесите информацию об исправлении в историю. Возможность пересматривать прошлые решения и причины их принятия — большой плюс. Это позволит избежать отговорок типа «я не помню» или «кажется, меня не было на том совещании». Все просто, понятно и под контролем.
Приоритеты на основе времени
Хотя классификация «низкий, средний и высокий» часто полезна при назначении проблемам приоритетов, всё же в одной категории оказываются десятки и даже сотни неполадок. Чего не хватает в таких приоритетах, так это элемента времени. Очень часто есть ошибки с высоким приоритетом, которые нужно срочно исправить к бета-версии, а есть такие (с таким же приоритетом), что могут подождать до последнего выпуска, поскольку они очень сложны или требуют дополнительного исследования.
Рассмотрите включение поля «Исправить к дате» для установления приоритетов на основе критерия времени. Значения, помещаемые в это поле, могут браться на основе внутреннего графика выпуска проекта, например, здесь может быть указан определённый этап, бета-версия или кандидат на выпуск. Чтобы определиться с приоритетом, задайте себе вопросы: «эту проблему нужно решить к этапу 2 или бета-версии 1?», «Что, если мы выпустим продукт сейчас, а ошибку исправим в следующем выпуске?»
С течением цикла разработки следует назначать для каждой ошибки конкретный срок исправления. Поступая так, вы без труда получите текущий список неисправностей для любого выпуска, в том числе для следующего.
Проверяйте и исправляйте ошибки
Одна из главных задач, выполняемых при контроле качества, — проверка того, что ошибки на самом деле исправлены. На этом этапе мы убеждаемся в том, что разработчик действительно осознал проблему и провёл достаточное количество испытаний. Когда ошибка исправлена и соответствующие изменения внесены в исходный код, разработчик устанавливает значение поля «Контролю качества: подтвердить» на «Истина», а статус — на «Ожидается процедура контроля качества». После того, как система контроля качества проверила исправление ошибки, тестировщик устанавливает её статус «Закрыто». Проблема может быть закрыта только системой контроля качества после соответствующей проверки.
Используйте замечания по выпуску
Когда мы сталкивались с неполадкой, которую следует описать в замечаниях по выпуску или файле Read Me, мы изменяли её статус на «Release Notes», но оставляли её открытой. В примечаниях по выпуску описываются известные проблемы, способы их обойти и информация, появившаяся в последний момент и не попавшая в официальную документацию. Когда наступал момент выпуска бета-версии или окончательной версии, было очень просто составить список проблем, о которых следует указать в замечаниях по выпуску. И только после того, как проблему разрешили, мы окончательно её закрывали.
Используйте стандартные запросы
Чтобы осуществлять полноценный поиск по базе данных проекта, важно иметь набор стандартных запросов. Эти запросы должны использоваться совместно и быть доступны всем членам команды; важно, что у каждого будет одинаковая картина данных. Хотя частные запросы хороши для редких и особых требований, их не следует использовать для распределения заданий членам команды. Риск неправильного составления запроса или указания неиспользуемого более поля достаточно велик. В таблице представлены наиболее важные запросы.
Все открытые ошибки
Позволяет менеджеру проекта и руководству оценить проект в целом
Все открытые ошибки для конкретного этапа
Позволяет команде увидеть, какие ошибки остаются открытыми в проекте для заданного этапа.
Все открытые ошибки для конкретного человека
Позволяет каждому человеку просмотреть свой текущий список ошибок
Все открытые ошибки для конкретного этапа и человека
Позволяет каждому человеку просмотреть свой список ошибок для заданного этапа.
Все открытые ошибки тестировщиков с полем «Контролю качества: проверить» = «Истина»
Позволяет команде просмотреть свой план тестирования
Все открытые ошибки с полем «Предложения» = «Истина»
Позволяет менеджеру проекта и руководству пересмотреть текущие предложения по изменениям
Другие способы применения
Далее приведены другие важные способы использования информации, попадающей в базу данных проблем и неисправностей. Эта информация поможет менеджеру проекта и руководству оценить мероприятия по проекту на макроуровне, а также другие проблемы, съедающие значительную часть времени. В цикле разработки команда обрабатывает сотни, а может, и тысячи ошибок и проблем, и поэтому понимание того, что же всё-таки происходит с течением времени, может быть очень ценно.
Интенсивность возникновения и устранения ошибок
Интенсивность возникновения — это мера того, сколько новых ошибок или неисправностей было обнаружено за определённый период времени. Интенсивность возникновения взлетает вверх в начале проекта, но с течением времени снижается. Интенсивность устранения — это мера того, сколько ошибок или неисправностей закрыто за определённый период времени. Она снижается по мере устранения ошибок. Ниже показана интенсивность возникновения и устранения ошибок — для проекта эти данные могут быть весьма полезны (рис. 5-1 и 5-2).
Рис. 5-1. Интенсивность возникновения и устранения ошибок в начале проекта.
Рис. 5-2. Интенсивность возникновения и устранения ошибок в моменты, когда проект близится к завершению определённого этапа.
Как соотносятся интенсивность возникновения и устранения ошибок? В начале проекта вы столкнётесь с массой новых проблем, которые обнаруживаются (открываются) быстрее, чем устраняются (закрываются). По ходу работы интенсивность возникновения по отношению к интенсивности устранения перестанет расти и снизится, так как существующие проблемы будут закрываться быстрее, чем новые будут обнаруживаться. Особого внимания требуют резкие скачки, которые могут проявляться в определённый период. Рассмотрите проблему, зафиксированную в этот период, чтобы определить, не она ли породила ещё большее количество новых ошибок.
Обычно, когда близится завершение внутреннего этапа, выпуск бета-версии и кандидата на выпуск, интенсивность устранения выше интенсивности возникновения. Если это не так, то новых проблем появляется больше, чем решается, а это не то, что вы бы хотели видеть, приближаясь к периоду стабилизации или выпуску.
Интенсивность устранения поможет вам определить эффективность обнаружения причин возникновения неполадки, а также примерный срок устранения ошибок, которые могут появиться в будущем. Скажем, если интенсивность устранения в течение двух последних недель составляла 10 ошибок в день, это может быть большим успехом. Если у вас 100 открытых ошибок, то вполне закономерно ожидать, что все они будут устранены приблизительно в течение следующих 10 дней. Эта цифра конечно же не точна (для исправления какой-нибудь неполадки может потребоваться и неделя), но она позволяет понять, чего вам следует ожидать при наличии большого количества оставшихся ошибок.
Количество изменений
Количество изменений также может о многом поведать. Количество изменений показывает число обновлений информации о неполадке. Причина обновления не имеет значения. Большое число изменений — верный знак того, что не всё идёт так гладко. Так, оставшаяся неполадка может исследоваться многими людьми, и ни один из них не установит причину её возникновения. Возможно, её передавали из отдела технической поддержки к разработчикам, от тестировщиков — к разработчикам или между двумя разработчиками туда и обратно. Наблюдение за количеством изменений информации об ошибках поможет определить те, что требуют внимания со стороны ведущих специалистов и менеджера проекта.
Счётчик неудачных исправлений
Ещё один хороший способ оценки нестабильности проекта — счётчик неудачных исправлений для всех ошибок, которые считались исправленными, но на самом деле исправлены не были. При устранении неполадки от команды тестировщиков требуется подтверждение того, что ошибка действительно исправлена. Если проблема всё ещё существует или исправление не принято, ей возвращается статус открытой, а значение поля «Исправлено неудачно» устанавливается в 1. Если тестировщики снова не могут подтвердить устранения неполадки, значение счётчика увеличивается до 2 или 3. Это сигнализирует о серьёзности проблемы и говорит о необходимости вмешательства ведущих специалистов или менеджера проекта.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Устранение многоликости
Устранение многоликости Моя цель заключалась в том, чтобы привлечь внимание Джоан к ее многоликости – дикому разбросу частот на ее шкале настройки. С одной стороны, есть чувствительная, заботливая Профессиональная Джоан, которая ведет себя компетентно и дружественно. С
Полное решение проблем через понимание и устранение
Полное решение проблем через понимание и устранение Глядя на список отказов в процессе потребления, становится очевидным, что лучше всего предотвращать их возникновение.Лучший процесс поиска – такой, который всегда дает результат, а не вынуждает обращаться в службу
Глава 11. Отладка. Устранение помех
Глава 11. Отладка. Устранение помех Вопрос о том, что такое предатель, я оставляю на усмотрение читающих. Для кого-то — это враг народа или друг, доносящий на тебя в налоговую инспекцию. А для кого-то и просто человек, неспособный соблюдать договоренности или исполнять
<...> Статья 311. Устранение двойного налогообложения
<...> Статья 311. Устранение двойного налогообложения 1. Доходы, полученные российской организацией от источников за пределами Российской Федерации, учитываются при определении ее налоговой базы. Указанные доходы учитываются в полном объеме с учетом расходов,
Диагностика неисправностей колес
Диагностика неисправностей колес Клиенты могут советоваться с вашими сотрудниками по вопросам технического состояния их автомобилей. Ниже приведен справочник по диагностике неисправностей колес и их установки.Справочник Требуется большое усилие на рулеНизкое
Устранение мелких дефектов кожи
Устранение мелких дефектов кожи Программа «Антиакне»Сюда входят очищающий гель, освежающий тоник, очищающая фитомаска, сыворотка «Целебный эффект», матирующий крем, крем-контроль, эфирное масло чайного дерева, эфирное масло кедрового дерева.Программа направлена на
УСТРАНЕНИЕ АНОМАЛИЙ
УСТРАНЕНИЕ АНОМАЛИЙ В рамках любой структуры, как бы тщательно она ни отслеживалась и ни поддерживалась, может обнаруживаться непоследовательность, и на это нужно обращать внимание во время пересмотра оплаты. Устранение непоследовательности потребует большего
Наведение порядка, устранение муда, стандартизация
Наведение порядка, устранение муда, стандартизация В компании все должны работать сообща, чтобы следовать трем основным правилам внедрения кайдзен в гемба:1. Поддержание порядка.2. Устранение муда.3. Стандартизация.Поддержание порядка – обязательный элемент хорошего
Устранение муда
Устранение муда Муда по-японски означает потери. Однако это понятие относится к любым действиям, которые не добавляют ценность. В гемба бывают только два типа действий: добавляющие ценность или не добавляющие ценность. Рабочий, который смотрит на станок, обрабатывающий
Устранение муда в правительственных структурах
Устранение муда в правительственных структурах Африканский союз (АС) – это международная организация, объединяющая 54 государства Африки. Цель этой межправительственной структуры – способствовать добросовестному государственному управлению и укреплять мир и
Раздел 7 Устранение разрыва с помощью бизнес-стратегии
Раздел 7 Устранение разрыва с помощью бизнес-стратегии Краткие пояснения Краткие пояснения Основные инструменты 45. Три родовых стратегии (Портер) 46. Кривая опыта (Бостонская консалтинговая группа) 47. Стратегическое репозиционирование и формирование вариантов
УСТРАНЕНИЕ ПРИЧИНЫ ПРОБЛЕМЫ
УСТРАНЕНИЕ ПРИЧИНЫ ПРОБЛЕМЫ Вас могло удивить, почему я говорю, что, когда вы используете эту технику, как я ее изложил вам, это положит конец вашим проблемам и избавит вас от головных болей.Может создаться впечатление, словно мы лечим лишь симптомы, а не причину проблемы.В
6. Устранение повреждений, нанесенных бренду
6. Устранение повреждений, нанесенных бренду Моя слава росла с каждой моей неудачей. Джордж Бернард Шоу В первой главе я рассказывал историю о некоем члене совета директоров в одной строительной компании, который в ходе крупной промышленной конференции снискал уважение
Устранение иллюзии разъединенности
Устранение иллюзии разъединенности Факт – вы часть интеллектуального континуума, который наполняет Вселенную. Факт – если вы чувствуете себя «вне этого», отделенным, вы знаете, в чем причина. Вы связываетесь с этим континуумом, когда применяете воображение на
Устранение гнета нехватки времени
Устранение гнета нехватки времени А должно быть выполнено раньше В, а В раньше С. Для выполнения С есть предельный срок – 90 минут, начиная с текущего момента. Времени требуется больше, чем имеется в наличии. Напряженная ситуация.Мне предстоит сложная задача убедить вас в