Определение программной ошибки. Blizzard Entertainment настаивает на том, что моя «ошибка» вовсе не является ошибкой. Они правы? [закрыто]

18

Согласно Wikipepdia,

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

Недавно я обнаружил «ошибку» в StarCraft 2, которая дает неожиданный результат: http://eu.battle.net/sc2/en/forum/topic/2868627470

Проблема в том, что, если я продолжаю сворачивать StarCraft 2 в течение длительного времени, игра не отключается и не генерирует какую-либо форму тайм-аута. Однако после первого боя он отключается, а иногда и теряет игровые данные (статистика матчей).

К сожалению, по словам Blizzard:

Игра не предназначена для минимизации в течение такого длительного периода времени. (Blizzard) не может считать такое поведение ошибочным, поскольку StarCraft II не предполагается минимизировать в течение нескольких часов.

Итак, моя «ошибка» действительно ошибка?

TeleShoTTgun
источник
31
Конечно, это ошибка, но они не собираются ее исправлять, поскольку не считают эту ситуацию поддерживаемой (т. Е. Поскольку она не была разработана для такой работы, если вы попытаетесь использовать ее таким образом, вы по своему усмотрению). И, конечно, есть простой обходной путь - не делайте этого.
Одед
17
Для справки, представитель Blizzard очень плохо справился с ситуацией. Они должны были сказать: «Спасибо, что сообщили об этой ошибке. Мы введем ее в нашу систему и исправим, как только наши разработчики сочтут ее приоритетной». Предполагается, что это никогда не станет приоритетом. Очень плохо обрабатывается на мой взгляд.
RIWalk
29
@ Stargazer712 Blizzard справилась с этим совершенно правильно. Им не следует ожидать, что они исправят ошибку, которую не собираются исправлять.
MattBelanger
3
Чтобы быть справедливым по отношению к TeleShoTTgun, я думаю, что Blizzard должен был, по крайней мере, определить то, что считается «длительным периодом времени». Я мог бы свернуть игру, чтобы пойти в ванную на пару минут. Я не думаю, что это очень долго, но Blizzard? В этом контексте я считаю, что> 30 минут - это «длительный период времени», но я не знаю, согласится ли Blizzard.
FrustratedWithFormsDesigner
3
Старый акт Водевиля - «Доктор, Доктор, мне больно, когда я делаю это» - «Не надо!»
Циклоп

Ответы:

58

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

Обновление программного обеспечения стоит дорого. Blizzard говорит вам, что ваша проблема - крайний случай. Другими словами, обнаруженная вами проблема крайнего случая не обязательно является тем, что они проверяли или иным образом заботятся о том, чтобы объяснить. Решение проблемы поможет вам, но, по всей вероятности, не поможет многим другим. Тем не менее, стоимость исправления ошибки может быть высокой. Вместо этого они могут инвестировать свои ресурсы в новые функции или даже закончить Diablo III.

P.Brian.Mackey
источник
3
Я думаю, что вы захватили фактическое, используемое на практике определение. Я собирался ответить, что ошибка - это любое поведение, которое отличается от спецификаций, как у других авторов. Но реальность такова, что если бы ошибочное поведение входило в определение спецификации, но оказало значительное влияние на бизнес, компания исправила бы это. И, как вы сказали, даже если спецификация говорит, что она должна работать, а если нет, то при низкой окупаемости инвестиций соответствующая компания не исправит это. Отличный ответ.
Мэтт Райан
2
@MattRyan: И в реальном мире (который я видел), если спецификации приводят к ошибочному поведению, которое бизнес-пользователи называют «ошибкой», команда разработчиков обычно формально переклассифицирует решение как «запрос на изменение», не как "исправление ошибки". ;)
FrustratedWithFormsDesigner
3
Другими словами, «ошибка» или «дефект» представляют собой требование, которое не реализовано правильно. В этом случае оставление игры в свернутом виде не является обязательным требованием.
Рэй
22

Этот вид напоминает мне кота в микроволновке , особенно случай миссис Смит в 1983 году.

Дело в том, что вы ожидаете, что продукт будет работать таким образом. Главным образом потому, что несколько подобных продуктов работают так, например, если вы минимизируете их на несколько часов, а затем открываете, они работают (хотя обратное не так уж редко, как вы думаете).

Миссис Смит по своему опыту знала, что высушивание кошек в духовке не причинит им вреда (конечно, при условии осторожности). Точнее из опыта, который она имела со всеми духовками, которые она пробовала. Затем она предположила, что это будет то же самое для микроволновой печи, которую ей дали. Это предположение было неверным. Микроволновые печи не предназначены для сушки кошек. Как и обычные печи. Просто случается, что они не убивают кошку в процессе, как побочный эффект физических процессов, которые они используют для производства тепла.

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

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

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

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

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

back2dos
источник
Хороший ответ, ужасающая метафора. Я так счастлив, что кто-то не был настолько глуп, чтобы сделать это!
Дрю
11

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

Игра не предназначена для минимизации в течение такого длительного периода времени.

Что означает, что у них где-то есть определение того, что считается «длительным периодом времени». Если вы минимизируете программу более чем на «длительный период времени», она выходит за рамки их спецификаций и выходит за рамки того, что они тестировали (предполагая, что они формально заявили об этом), и они не гарантируют, что произойдет. Конечно, было бы неплохо, если бы где-нибудь в руководстве говорилось: «Мы тестировали эту программу только для минимизации в течение периодов времени, не превышающих 10 минут. Минимизируйте дольше, чем это, на свой страх и риск!».

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

FrustratedWithFormsDesigner
источник
3
Для критически важной системы у нас есть требование, согласно которому «эта система должна оставаться работоспособной в течение n часов», и мы тестируем и документируем внешне, что система работает в течение n часов. Мы также могли бы внутренне задокументировать, что мы провели тест в течение m> n часов, и система все еще функционировала. Для игры, которая не является критически важной, вам не нужно, чтобы она была официально зафиксирована извне, поскольку большинство людей, вероятно, никогда не столкнется с этой проблемой.
Томас Оуэнс
8

Не ошибка Ошибка - это поведение, которое не соответствует спецификации. Если спецификация говорит, что вариант использования не поддерживается поведением, то любое поведение - воспринимаемое как допустимое или нет - в этом случае использования является «разработанным».

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

Стивен Эверс
источник
Это массивная уловка. Я презираю это каждый раз, когда слышу это. Потому что он появляется только тогда, когда «спецификация» не завершена.
Шон Макмиллан
2
@SeanMcMillan: Без таких вещей крип функции убил бы нас всех. В любом случае, это не уклонение, потому что это сценарий, который специально указан как не поддерживаемый.
Стивен Эверс
1
@SnOrfus: было указано. По факту. Вы действительно верите в то, что существует спецификация, в которой прямо указано, что «Минимизация приложения дольше, чем x минут не поддерживается»? Понятно, что это ошибка.
ThomasX
Проблема в том, что не существует спецификации, которая была бы достаточно полной для описания реального программного обеспечения. Цель «соответствовать спецификации» не производит хорошее программное обеспечение, это просто предлог, что «я не виноват», когда что-то в программном обеспечении плохо. Может быть, это не стоит исправлять, но «спецификация» не является причиной, почему.
Шон Макмиллан
@ThomasX Учитывая, что проект, над которым я работаю, имеет спецификацию на 200-400 страниц и действительно имеет границы, определенные для времени выполнения. Да.
Стивен Эверс
5

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

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

jfrankcarr
источник
5

Я собираюсь не согласиться с большинством людей здесь.

Как бывший игрок Starcraft (оригинальный), я могу засвидетельствовать, что это (или было, по крайней мере) очень распространенное поведение. Пользователи выходят из игры 24/7, чтобы удерживать свои позиции в чатах, и присоединяются к играм, когда они снова возвращаются. Я уверен, что обновленный Battle.net имеет некоторые улучшения, которые могут уменьшить потребность в этом, но это все еще случается много.

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

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

Во всяком случае, я думал, что я бы поставил немного другой ответ, чем то, что было опубликовано до сих пор.

Адриан Шнайдер
источник
1
Я бы на самом деле свел экран к минимуму, если бы я играл в Starcraft. Я думаю, что вопрос о том, является ли это ошибкой, не имеет значения, но, похоже, что-то, с чем он должен справиться, и это действительно будет меня беспокоить, если это не так.
PSR
Согласен - это должно быть классифицировано как ошибка, и все это будет с очень низким приоритетом. В то время как они могут сказать, что «сохранение игры в минимизации на длительные периоды времени не поддерживается», что именно представляет собой длительный период времени? Откуда они знают, что одна и та же проблема не произойдет, если ее свести к минимуму на 10 минут? По крайней мере, должно быть разработано и реализовано игровое время ожидания, которое разъединяет пользователя, если оно оставлено свернутым более чем на x минут, если они не намерены поддерживать такие действия.
Гэвин Коутс
4

Ошибка может быть разумно определена как «любое отклонение от предполагаемого поведения программного обеспечения».

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

Однако то, что я бы сказал, по крайней мере, неоптимальным является способ обработки этого состояния.

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

Так что не совсем ошибка, а плохая обработка крайнего случая.

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

Джон Хопкинс
источник
1

Определение ошибки не имеет ничего общего с поведением программного обеспечения. Ошибка определяется на основе того, соответствует ли поведение программного обеспечения его намерениям. И кто скажет, что было задумано? (Поскольку я имею дело с программистами здесь, я поясню первое предложение - нет никакого возможного поведения программного обеспечения, которое само по себе представляет ошибку).

Имейте в виду, что обычно разработчики программного обеспечения должны исправлять ошибки. Таким образом, определение ошибки основано на том, что они хотят исправить. Например, «правильная работа более 50% времени - это функция, которую мы планируем выпустить в будущих версиях». Все можно определить как не являющуюся ошибкой, притворяясь, что программное обеспечение никогда не предназначалось для решения этой конкретной проблемы. Таким образом, на практике ошибка представляет собой чисто политическое соображение.

(Кроме того, это сокращает оба пути. Для клиента, который не должен платить за исправления ошибок, но должен платить за новые разработки), он не имеет функции, о которой я только что подумал, но которую я сейчас решено на 100% подразумевается тем, что я упомянул "явно ошибка.)

PSR
источник
Разве это не OpenBSD, который объявляет что-либо, не документированное должным образом, как ошибку, независимо от того, что это?
Canageek
1

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

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

GrandmasterB
источник