Подтвердить что ты не робот

Приоритеты и политики отслеживания ошибок

Запущенный вопросом о The Old New Thing, я хотел бы спросить:

Как настроить приоритеты отслеживания ошибок? В более общем плане, каковы ваши правила для работы над ними? Насколько вы строго придерживаетесь "исправить ошибки"? Все они?

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

4b9b3361

Ответ 1

Мы используем что-то вроде этого (на практике значения немного пушистые):

Ошибки:

1. Blocker. Зарезервировано для катастрофических сбоев - исключения, сбои, поврежденные данные и т.д., Которые (а) не позволяют кому-то выполнить свою задачу и (б) не имеют обходного пути. Это должно быть крайне редко. Они должны быть исправлены немедленно (в тот же день) и развернуты как исправления.

2. Критические. Они могут относиться к необработанным исключениям или к другим "серьезным" ошибкам, которые происходят только в определенных конкретных условиях (т.е. Существует практическое обходное решение). Нет жесткого предела для времени разрешения, но он должен быть исправлен в течение недели (исправление) и должен быть исправлен следующей версией. Они имеют ключевое различие между (1) и (2) - это не серьезность или влияние, а наличие обходного пути.

3. Major - обычно зарезервировано для перфомансов. Все, что серьезно снижает производительность, но фактически не мешает работе. Исправьте следующую версию.

4. Незначительный. Это "неприятные" ошибки. Значение по умолчанию не применяется, поле "только для чтения", отображаемое как редактируемое (или наоборот), условие гонки в пользовательском интерфейсе, вводящее в заблуждение сообщение об ошибке и т.д. Исправление для этой версии, если нет проблем с более высоким приоритетом, иначе следующий выпуск.

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

Запросы изменений (функции)

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

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

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

5. Low-Impact. Изменения в макете, изменения в формулировках, изменения, которые могут противоречить базовым требованиям, функции pie-in-the-sky, которые могут потребоваться в течение нескольких месяцев, и т.д. Они автоматически назначаются в будущую версию, если только мы "не работает над чем-то более важным (что... никогда). Часто, когда следующий релиз выходит, они будут отложены до еще большего выпуска, поскольку более важные запросы накапливаются.

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

Ответ 2

Я верю Моя жизнь как экономист кодов от Эрика Санка. Суть его заключается в том, чтобы определить приоритеты ошибок в соответствии с серьезностью, частотой, стоимостью и риском. Не исправляйте каждую ошибку, а имеете список менее суровых и исправьте их, когда идете вперед.

Ответ 3

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

Ответ 4

Моя команда не классифицирует задачи только по приоритету, мы используем три критических критерия: приоритет, серьезность и видимость.

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

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

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

Для каждой входящей ошибки, запроса улучшения или запланированной функции/новой разработки мы назначаем значение приоритета, серьезности и видимости (сокращенное значение P/S/V) от 1 до 5 (при этом 5 являются самыми высокими). Как правило, мы уделяем приоритетное внимание нашим усилиям, сортируя список "дел" по сумме трех значений (слабо, это система с нечеткой логикой). Отчет об ошибке с P/S/V 2/5/4 будет работать до новой задачи разработки со значениями 5/1/3, но только после запроса расширения с значениями 5/2/5.

Это (конечно) неточная наука, и в системе всегда есть исключения. Иногда обработка запроса более высокого ранга предпочтительнее, если он также будет работать с ошибкой более высокого ранга. Для всех задач с ранжированием X ошибки с рангом X обычно решаются перед улучшениями ранга X. Мы обычно также считаем, что все ранжировки имеют погрешность +/- 1.

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

Ответ 5

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

  • Приоритет 1 - все рабочие стопы, за исключением этого элемента, освобождаем исправление, как только оно проверяется.
  • Приоритет 2 - Следующая версия не будет выходить без разрешения этого элемента.
  • Приоритет 3 - действительно желаемый в этом выпуске, но если у нас не хватит времени, мы его нажмем.
  • Приоритет 4 - Мы действительно не ожидаем этого в этой версии, но если у вас заканчиваются задачи, работайте над этим.
  • Приоритет 5 - Не работайте над этим.

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

Ответ 6

Официально у нашей компании были строгие правила "исправить ошибки, а затем написать новые функции". Тем не менее, немногие люди, которые на самом деле, казалось, поддерживали его, также были теми, кто был самым важным с точки зрения нового развития. Это заняло некоторое время, но мы поняли, что исправление ошибки, которая сделает одного клиента счастливым, менее важно, чем добавление новой функции, которая сделает 100 клиентов счастливыми.

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

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

Ответ 7

На нашем месте:

Мы используем "исправление для" и приоритеты (в указанном порядке), чтобы дать багам и запросам функций рекомендуемый порядок решения.

Наши приоритеты:

  • Назначить приоритет - это самый высокий и по умолчанию.
  • Срочно! Срочно! - что предназначалось для случаев "бросить все остальное", - было немного глупое имя, чтобы люди не злоупотребляли им. Что на данный момент хорошо работает.
  • Showstopper - это блокирует, чтобы кто-то эффективно выполнял свою работу, предотвращал демонстрацию какой-либо функции или что-то подобное.
  • Необходимо - необходимо для следующего выпуска, которому он назначен. Функция, которую мы пообещали или являемся частью клиента. Этап проекта.
  • Ожидаемое - что-то, что должно быть в следующей версии, но может быть отброшено.
  • Исправьте, если время - слегка язык в челюсти, потому что "мы делаем это, когда у нас много времени", это локальный эквивалент "не задерживайте дыхание".

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

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

Мы используем FogBugz, btw.

Ответ 8

Попытка "Исправить ошибки в первую очередь", мы обнаружили, что наши клиенты сильно подталкивают нас к быстрым исправлениям (которые дестабилизируют систему), и мы не могли отступить, поэтому мы решили решить проблему "дымовой" системы. Любое быстрое исправление (т.е. Неправильно проверенное или проверенное) просто выталкивается, чтобы удовлетворить клиента) считается ошибкой "дыма". Если количество открытых дымовых ошибок увеличилось до 5, мы будем сжимать и запускать редуктор. Кроме того, мы сделали публичное выражение о том, что мы не будем делать быстрые исправления, как только это произойдет, и привлекли наших клиентов со всем процессом.

Не совсем ответив на ваш вопрос, но подход оказался нам полезен.

Ответ 9

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

Ответ 10

Ошибки, которые могут быть исправлены менее чем за 2 часа, а затем те, которые требуют больше времени.