Какие проблемы чаще всего возникают? - PullRequest
6 голосов
/ 04 марта 2010

Если бы я написал:

  1. приложение базы данных C # SQL (простая программа, состоящая из GUI поверх некоторых форм с логикой для взаимодействия с базой данных SQL)
  2. для домашнего использования, которое не поддерживает сетевую связь
  3. , которая использует простую, надежную и подходящую базу данных SQL
  4. чей графический интерфейс правильно отделен от логики
  5. с полной и надежной проверкой входных данных
  6. , который был полностью протестирован, так что 100% логических ошибок было устранено

... и затем, если программа была установлена ​​и запущена случайными пользователями на их случайных компьютерах с Windows.

Q1) Какие типы технических ( непроцедурных ) проблем и ситуаций поддержки наиболее вероятны и насколько они вероятны?

Q2) Могу ли я в первую очередь сделать больше / других вещей, чтобы предотвратить эти проблемы, а также свести к минимуму необходимый объем поддержки пользователей?

Я знаю, что некоторые ответы будут применяться к моим конкретным платформам (C #, SQL, Windows и т. Д.), А некоторые нет.

Пожалуйста, будьте настолько конкретны, насколько это возможно.

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

Ответы [ 10 ]

13 голосов
/ 04 марта 2010
  • Никогда не доверяйте неподтвержденному вводу пользователя

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

  • Сообщать пользователям об ошибках дружественным способом; не вините их!

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

7 голосов
/ 04 марта 2010

Меня не перестают удивлять действия реальных пользователей. Будьте готовы ко всему и всему.

6 голосов
/ 04 марта 2010

Q1) Какие типы проблем все еще будут возникать?

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

Q2) Сколько времени и знаний потребуется для решения этих проблем?

Больше, чем вы хотите потратить.

Q3) Какие действия я мог бы предпринять в первую очередь, чтобы минимизировать объем необходимой поддержки пользователей?

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

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


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

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

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

4 голосов
/ 07 марта 2010

Если вы утверждаете, что ваша логика верна и проверена (по вашему вопросу), что оставляет в основном проблемы на основе состояния для решения.

Итак, вещи, о которых вам придется беспокоиться, включают:

  1. Аппаратные сбои

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

  3. Обновления зависимостей, которые нарушают вас.

  4. Общее состояние системы - например, заполнение жесткого диска

  5. База данныхостановлено

  6. Удаление зависимостей

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

2 голосов
/ 14 марта 2010

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

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


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

  1. Неспособность следовать инструкциям: Некоторые люди просто не будут следовать инструкциям, и они будут звонить вам, когда что-то не работает. Например, установка нашего приложения состоит из трех этапов (сервер базы данных, база данных и приложение). Несмотря на очень четкие инструкции, некоторые люди сделают только третий шаг, потому что у них есть некоторая теория, почему они не нуждаются в 1 или 2. Обходной путь: используйте профессиональный установщик (например, InstallShield), чтобы упростить процесс как можно больше. У InstallShield и Wise были инструменты, предлагающие удивительный набор инструментов для решения практически любых непредвиденных ситуаций. Они дорогие, но стоят вложений. Чем проще, тем лучше - ничего не принимайте, и вы минимизируете свои звонки.

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

  3. База данных уже установлена: У некоторых людей уже есть SQL Server (в некоторой форме), поэтому ваша установка не будет работать. Обходной путь: использовать именованный экземпляр с уникальным именем.

  4. Установщик не имеет привилегий: Человек, пытающийся выполнить установку, обычно может выяснить это и обратиться за помощью к группе, которая администрирует компьютер. Так что это не часто. Обходной путь: Нет хорошего обходного пути, чтобы вообще избежать вызовов, но вы можете сократить их, просто объяснив, что у вас нет возможности переопределить ограничения, наложенные на них их администратором, так что им понадобится его или ее помощь.

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

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

  1. Путаница метафор: Наше программное обеспечение использует интерфейс метафор «Папка и страница» и широко оценивается за простоту использования. Но некоторые люди просто запутались во всех наших предложениях, потому что у них была очень простая модель того, что они хотели сделать. Обходной путь: Я встроил мультимедийную демонстрацию в справочную систему, и тема «Начало работы» объяснила метафору пользовательского интерфейса. Звонки по теме упали до нуля.

  2. Запросы на новые функции: вы также будете получать значительное количество звонков от людей, которые хотят новых функций, но, что удивительно, выражают свои желания, сообщая вам, что у вас есть «ошибка» в вашем программном обеспечении, потому что вы не поддерживаете желаемую функцию! Обходной путь: Слушай! Всякий раз, когда я получал запрос от двух разных людей ИЛИ мне действительно нравилась идея, я ее строил. Я был очень агрессивен по этому поводу. В конце концов, люди любили продукт, любили бизнес и рекомендовали нас друзьям. Я часто говорю, что наш бизнес построен на идеях наших клиентов (даже если они иногда капризны и необоснованны).

  3. Требуется больше деталей: Наше программное обеспечение предлагает широкий спектр фитнес-тестов, которые могут выполнять люди. Сначала мы задавали много вопросов о самих тестах, источнике нашей информации о тестах и ​​т. Д. Обходной путь Мы встроили полное описание наших тестов и их источника в справочную систему. , Более широкий урок заключается в том, что ваша справочная система - это не просто использование вашего программного обеспечения. Это очень важный способ непосредственного общения с вашим клиентом по всему спектру процессов, которые вы пытаетесь автоматизировать! не исключит всех вызовов, но они будут намного короче, если вы скажете: "просто откройте справочную систему и нажмите на тему X".

  4. Обнаружена ошибка: Возможно, вы считаете, что у вас нет ошибок, но это не очень вероятно. Пользователи делают странные вещи с программным обеспечением, и они будут звонить, когда получат сообщение об ошибке для выполнения действий, которые им следует разрешить. Обходной путь: Есть метод для записи отчетов об ошибках (я могу порекомендовать FogBugz!) И быть агрессивным в их исправлении. Конечно, вам также понадобятся средства, с помощью которых клиенты могут легко обновить свои системы, иначе ваши исправления не сильно помогут. Большинство коммерческих установочных пакетов имеют инструменты, которые позволяют размещать обновления в Интернете для автоматической загрузки и установки. Однако если вы хотите добиться успеха, вы должны выслушать пользователей и ответить на их боль.

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

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

  2. Системные сбои:"Мой компьютер внезапно заглох из-за электрических искр. В течение нескольких месяцев жесткий диск издавал громкие шумы, и я никогда не делал резервную копию, потому что не чувствовал нравится. Как я могу вернуть свои данные? " Обходной путь: Только один - имейте хорошее чувство юмора и напоминайте им делать резервные копии.

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

  1. Регистрация: Нужно ли регистрироваться кому-либо, использующему ваше приложение? Даже если они могут сделать это онлайн, некоторые все равно позвонят вам. Зачем? В 50% случаев это происходит потому, что они хотят получить бесплатную копию и хотят сказать вам неправду, чтобы получить ее. Другая половина не подключена, имеет неожиданное сообщение, переходит на новый компьютер и т. Д. Обходной путь: Нет, это люди, которые просто решили поговорить с вами, чтобы они могли использовать приложение даже если они должны иметь медные шары, чтобы сделать это.

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

  3. Наконец, есть фанаты . Люди, которые просто любят то, что вы делаете, и которые хотят поговорить с компанией, которая это сделала. Сейчас это встречается реже, чем в 90-х, но с ними интересно общаться. Там нет обходного пути, просто наслаждайтесь, пока можете.

Удачи в построении вашего бизнеса!

2 голосов
/ 13 марта 2010

Во-первых, если вы создаете приложение для Windows, вам необходимо учитывать тот факт, что установка Windows будет отличаться. В некоторых могут быть запущены дополнительные приложения безопасности. Некоторые могут иметь UAC; некоторые выключены. Различные ОС, разные ОС исправления установлены. Некоторые пользователи могут быть только в группах пользователей; другие в группе администраторов. Просто заставить пользователей правильно установить необходимую платформу .NET может быть проблемой, если их система частично фекавирована. Кроме того, у вас будут машины с разными физическими возможностями. Короче говоря, вы должны быть осторожны с предположениями о том, что находится на компьютере пользователя.

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

Другое решение, которое вы должны рассмотреть, это использование вами механизма базы данных. В то время как SQLExpress хорош, он создает проблему обслуживания установки для типа приложения, которое вы предлагаете. Что делать, если у них установлена ​​старая версия? Что если у них установлена ​​новая версия? Что если используемая версия требует патча? Что, если их программное обеспечение безопасности останавливает работу службы? Вы не упомянули, сколько данных будет задействовано в приложении, но вы могли бы рассмотреть более переносимый формат базы данных, такой как SQLite или даже Jet (Access) (хотя у Jet есть и другие проблемы, с которыми приходится бороться), просто чтобы избежать необходимости устанавливать еще другой сервис на компьютере пользователя.

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

  1. Тестирование. В частности, автоматизированное тестирование как единичного, так и функционального. 75% кода, написанного для этого приложения, должно быть тестовым кодом.
  2. Logging. В дополнение к механизму регистрации ошибок вам потребуется создать механизм, позволяющий пользователю отправлять эти журналы вам для устранения неполадок.
  3. Твердая рутина установки. Вы должны сделать установку как можно более пуленепробиваемой. Если пользователи не могут установить ваше приложение, они не могут его использовать. Таким образом, наряду с тестированием в вашем приложении, вам понадобится обширное автоматическое тестирование процедуры установки. В идеале ваше приложение должно быть настолько инкапсулировано, что его можно будет развернуть с помощью xcopy.
1 голос
/ 14 марта 2010

В моем 20-летнем опыте наиболее распространенная проблема в вашем сценарии не связана с созданием неправильного программного обеспечения, а с созданием неправильного программного обеспечения.

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

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

1 голос
/ 13 марта 2010

Принудительная установка пользователем Microsoft SQL Server Express - это огромная зависимость.Я бы порекомендовал использовать что-то более легкое, например, SQLite.

Кроме того, если вы не прислушиваетесь к моему совету и не используете SQL Server, настройте его так, чтобы он принимал соединения только с 127.0.0.1

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

1 голос
/ 04 марта 2010

Когда-то у нас был клиент, который не хотел использовать программное обеспечение из-за страха, что программное обеспечение заменит его.

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

0 голосов
/ 13 марта 2010

Самая большая проблема, с которой вы столкнетесь, - это пользователь DUMB / AIRHEAD / LAZY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...