Какие виды проблем, скорее всего, произойдут?

Если я записал:

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

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

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

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

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

Будьте так конкретны, как возможно.

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

6
задан tshepang 15 May 2014 в 11:48
поделиться

10 ответов

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

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

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

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

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

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

  5. Остановка базы данных

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

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

4
ответ дан 8 December 2019 в 02:26
поделиться

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

7
ответ дан 8 December 2019 в 02:26
поделиться
  • Никогда не доверяйте непроверенному вводу пользователя

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

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

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

13
ответ дан 8 December 2019 в 02:26
поделиться

Q1) Какие типы

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

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

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

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

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

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


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

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

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

6
ответ дан 8 December 2019 в 02:26
поделиться

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

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

1
ответ дан 8 December 2019 в 02:26
поделиться

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

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

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

1
ответ дан 8 December 2019 в 02:26
поделиться

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

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

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

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

  1. Тестирование. В частности, автоматизированное тестирование, как модульное, так и функциональное. 75% кода, написанного для этого приложения, должно быть тестовым.
  2. Логирование. В дополнение к механизму регистрации ошибок, вам потребуется создать механизм, который позволит пользователю отправлять эти журналы вам для устранения неполадок.
  3. Надежная процедура установки. Вам необходимо сделать установку настолько надежной, насколько это возможно. Если пользователи не смогут установить ваше приложение, они не смогут им пользоваться. Поэтому, наряду с тестированием приложения, вам понадобится обширное автоматизированное тестирование процедуры установки. В идеале, ваше приложение должно быть настолько инкапсулировано, чтобы его можно было развернуть с помощью xcopy.
2
ответ дан 8 December 2019 в 02:26
поделиться

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

0
ответ дан 8 December 2019 в 02:26
поделиться

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

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

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

1
ответ дан 8 December 2019 в 02:26
поделиться

Я начал писать код в дополнительной спальне в 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
ответ дан 8 December 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: