Автор работы: Пользователь скрыл имя, 22 Марта 2012 в 19:47, реферат
Главным критерием программы должно быть ее качество, которое трактуется как отсутствие в ней недостатков, а также сбоев и явных ошибок. Недостатки программы зависят от субъективной оценкой ее качества потенциальным пользователем. При этом даже при ее наличии, выявленные на конечном этапе недостатки говорят о ее низком качестве. При таком подходе преодоление недостатков программы, особенно на заключительном этапе проектирования, может приводить к снижению надежности. Очевидно, что для разработки ответственного и безопасного программного обеспечения (ПО) такой подход не годится, однако проблемы наличия ошибок в спецификациях, субъективного оценивания пользователем качества программы существуют и не могут быть проигнорированы.
1.Определение понятия "ошибка в программе"
2. Классификация ошибок в программе
3. Классификация ошибок с точки зрения тестировщика
4. Классификация ошибок по степени их критичности
5. Классификация ошибок в зависимости от их места в жизненном цикле программного изделия
6. Классификация программных ошибок (багов) с точки зрения субъективного восприятия их программистами
План:
1.Определение понятия "ошибка в программе"
2. Классификация ошибок в программе
3. Классификация ошибок с точки зрения тестировщика
4. Классификация ошибок по степени их критичности
5. Классификация ошибок в зависимости от их места в жизненном цикле программного изделия
6. Классификация программных ошибок (багов) с точки зрения субъективного восприятия их программистами
В качестве введения рассмотрим определения понятия «ошибка». Начнем с наиболее общего трактования этого понятия применительно к некоторым техническим системам.
По определению стандарта ISO 9241-13 [1] ошибка это – несоответствие между целями пользователя и ответом системы.
В самом общем случае под ошибкой понимается какой-то сбой в программе на этапе ее выполнения.
Ошибкой (или так называемым багом) можно назвать недокументированные или нежелательные, "побочные" реакции программы на те или иные действия пользователя равно как и при использовании ее одновременно с другим программами или на другой аппаратной платформе.
Главным критерием программы должно быть ее качество, которое трактуется как отсутствие в ней недостатков, а также сбоев и явных ошибок. Недостатки программы зависят от субъективной оценкой ее качества потенциальным пользователем. При этом даже при ее наличии, выявленные на конечном этапе недостатки говорят о ее низком качестве. При таком подходе преодоление недостатков программы, особенно на заключительном этапе проектирования, может приводить к снижению надежности. Очевидно, что для разработки ответственного и безопасного программного обеспечения (ПО) такой подход не годится, однако проблемы наличия ошибок в спецификациях, субъективного оценивания пользователем качества программы существуют и не могут быть проигнорированы. Должна быть разработана система некоторых ограничений, которая бы учитывала эти факторы при разработке и сертификации такого рода ПО. Для обычных программ все проблемы, связанные с субъективным оцениванием их качества и наличием ошибок, скорее всего неизбежны.
В краткой классификации выделяются следующие ошибки.
Ошибки пользовательского интерфейса.
- Функциональность.
- Взаимодействие программы с пользователем.
- Организация программы.
- Пропущенные команды.
- Производительность.
- Выходные данные.
Обработка ошибок.
Ошибки, связанные с обработкой граничных условий.
Ошибки вычислений.
Начальное и последующие состояния.
Ошибки управления потоком.
Ошибки передачи или интерпретации данных.
Ситуация гонок.
Перегрузки.
Аппаратное обеспечение.
Контроль версий.
Документация.
Ошибки тестирования.
Ошибки пользовательского интерфейса.
Многие из них субъективны, т.к. часто они являются скорее неудобствами, чем «чистыми» логическими ошибками. Однако они могут провоцировать ошибки пользователя программы или же замедлять время его работы до неприемлемой величины. В результате чего мы будем иметь ошибки информационной системы (ИС) в целом. Основным источником таких ошибок является сложный компромисс между функциональностью программы и простотой обучения и работы пользователя с этой программой. Проблему надо начинать решать при проектировании системы на уровне ее декомпозиции на отдельные модули, исходя из того, что вряд ли удастся спроектировать простой и удобный пользовательский интерфейс для модуля, перегруженного различными функциями. Кроме того, необходимо учитывать рекомендации по проектированию пользовательских интерфейсов.
Ошибки функциональности.
«Если с помощью программы трудно, неудобно или невозможно выполнить что-то, чего может обоснованно ожидать от нее пользователь, значит, в ней имеется функциональная ошибка». Очень расплывчатое определение, хотя возможно, что и верное.
Избыточная функциональность. В программе слишком много функций, поэтому она сложна в изучении и эксплуатации. Не хватает концептуального единства. Второстепенные функции осложняют доступ к базовым возможностям. Программа часто теряет производительность. Документация на систему слишком обширна и ею невозможно пользоваться
Ложное впечатление о наборе функций продукта. Связано в первую очередь с ошибками или низким качеством документации. Сюда же можно отнести не документируемые функции программы и закладки. Очень важный пункт с точки зрения безопасного ПО: необходимо обеспечить строгое соответствие описания программы и ее функций.
Неадекватность реализации базовых функций. Функция реализована так, что не годится для эксплуатации. Сюда относятся вопросы недостаточной производительности.
Пропущенная функция. В программе не реализована функция, предусмотренная спецификацией.
Неверно работающая функция. Функция работает не так, как предусмотрено спецификацией.
Функция должна быть реализована пользователем. Пользователь должен сам что-то сделать, чтобы функция заработала. Для некоторых программ такой режим предусматривается и не может, на мой взгляд, считаться ошибкой.
Программа не делает того, что ожидает от нее пользователь. Причина таких ошибок кроется в недостатках спецификации программы. С этими ошибками нужно бороться на этапе проектирования ПО. Для ответственного ПО необходимо потребовать безошибочность спецификаций. Как этого добиться – сложный вопрос. Во всяком случае, для достижения высококачественного кодирования нужно исходить из того, что спецификации программ не содержат ошибок, иначе совершенно не ясно как это обеспечить и проконтролировать.
Взаимодействия программы и пользователя. Их появление возможно как в интерактивном, так и в пакетном режимах.
Пропущенная информация. Сюда относятся типичные ошибки интерфейса: ошибки в подсказках, в перечне возможных команд, отсутствие справочной информации и т.п., отсутствие индикации курсора или признаков активности выполнения программы, открытия документов. Сюда необходимо отнести ошибки, когда пользователю не выдана, предусмотренная спецификацией информация, но почему-то именно этот случай не отражен в работе. Для некоторых видов ПО подобная ошибка может быть весьма критичной (например, если не отражена информация о наступлении важного события, аварии в системе и т.п.).
Неверная или смущающая пользователя информация. Даже незначительные ошибки подрывают доверие пользователя к программе. На основании этих ошибок, а также при недостаточно подробных сообщениях пользователь может сделать неверные выводы, которые могут иметь серьезные последствия для системы в целом. Сюда же относятся такие интерфейсные ошибки, как неудачные пиктограммы, названия кнопок и функций, несколько разных названий для одной и той же функции. Избыточность документации, попытка переложить на пользователя проблемы, которые должны решить программисты.
Справочная система и сообщения об ошибках. Текст в электронном виде должен быть не сложнее, чем на бумаге. Текст должен быть написан простым языком, сообщения программ должны быть в утвердительной форме, краткими и простыми, содержать минимум технических терминов. Документация не должна содержать ошибок и неверных примеров. Контекстно-зависимые справочные системы и подсистемы обработки ошибок должны проверять, что делает программа в момент их вызова. Неправильное определение источника ошибки в сообщении, должны указываться причина ошибки и способ выхода из ситуации.
Ошибки отображения. Данные отражаются формально правильно, но в каком-то неестественном виде, два курсора (забыли стереть курсор в предыдущем фокусе ввода), курсор исчезает или отображается не в том месте, недоочищена часть экрана, не выделены активные элементы экрана, не снято выделение, отображена неверная или неполная строка, сообщение остается на экране слишком долго или исчезает слишком быстро.
Организация экрана. Плохая структурированность информации на экране, неэстетическое оформление экрана, неудачная организация меню, ошибки организации диалоговых окон, труднонаходимые конструкции, неуместное использование мигания, пестрые цветовые сочетания, использование цветов в качестве смыслового интерфейса, невозможность избавиться от избыточной информации на экране – все это «ошибки интерфейса».
Организация команд и способы их ввода. Рассматриваются различные несоответствия. Неуместная оптимизация, непоследовательный синтаксис, неодинаковый стиль ввода команд, нелогичные сокращения команд, непоследовательные правила завершения ввода, несоответствие опций для различных команд.
Потери времени. Имеются в виду потери времени из-за неудачного интерфейса программы.
Меню. Меню должны быть простыми и логичными, поэтому все недостатки меню можно считать ошибками программы или же потенциальным источником ошибок при эксплуатации программного изделия.
Командные строки. В некоторых случаях ввод команд может быть предпочтительнее выбора из меню. Речь идет о чисто интерфейсных вещах: учет регистра в командах может приводить к ошибкам, соблюдение единого порядка параметров в командах, не распознаются полные имена в командах, не допускаются сокращения, сложная команда в одной строке, отсутствие возможности пакетного ввода, отсутствие возможности редактирования команд.
Нестандартное использование клавиатуры. Рассматриваются различные неудобства пользователя, приводящие к его ошибкам, связанные с отсутствием возможности использовать клавиши, их непривычное использование, возможность осуществить ввод недопустимых символов, отсутствие индикаторов состояния клавиатуры, отсутствие реакции на управляющие клавиши.
Пропущенные команды. Ошибки связаны с невозможностью или с существенными трудностями пользователя при изменениях состояния программы. Сюда входят ошибки, связанные с невозможностью выйти из какой-то программы или из какого-то режима, прервать или приостановить выполнение программы.
Обработка ошибок пользователем. Не предусмотрены пользовательские проверки вводимых данных (по-моему, это в первую очередь функциональная ошибка), сложно исправить допущенную ошибку, не предусмотрена возможность записи комментариев (по-моему, это можно считать как функциональной ошибкой, так и ошибкой в интерфейсе в зависимости от того, что представляет собой этот комментарий), отсутствуют средства отображения связей между переменными.
Негибкость программы. В разделе рассматриваются возможные проблемы настройки пользовательского интерфейса программы. Отмечается, что негибкость программы – это не всегда недостаток, т.к. программы с простым фиксированным интерфейсом как правило более просты в изучении и в эксплуатации.
Производительность. Авторы отмечают существование нескольких трактовок этого понятия: 1) скорость программы, 2) производительность работы пользователя, 3) субъективное восприятие пользователем характеристик производительности программы.
Обработка ошибок.
Предотвращение ошибок. Программа должна быть защищена от недопустимого ввода и неправильной эксплуатации. Должна быть предусмотрена проверка вводимых данных. Можно использовать методы аппаратного обнаружения и исправления ошибок.
Выделяются подпункты:
- неверное начальное состояние;
- неадекватная проверка пользовательского ввода;
- неадекватная защита от испорченных данных;
- не выполнена проверка переданных параметров;
- недостаточная защита от ошибок операционной системы;
- не выполняется проверка версии;
- недостаточная защита от неправильного использования.
Выявление ошибок. Программа должна контролировать правильность данных.
Выделяются подпункты:
- переполнение;
- невозможные значения;
- непроверенные данные;
- флаги ошибок;
- аппаратные сбои;
- сравнение данных;
- восстановление после ошибок;
- автоматическое исправление ошибок;
- отсутствие сообщения об ошибке;
- не установлен флаг ошибки;
Ошибки, связанные с граничными условиями.
Выделяют следующие типы таких ошибок:
- неправильная обработка граничного значения;
- неверное граничное условие;
- неправильная обработка данных, не соответствующих граничным условиям.
Выделяются следующие подпункты:
- числовые ограничения;
- ограничения на равенство;
- количественные ограничения;
- пространственные ограничения;
- ограничения объема памяти;
- ограничения, связанные со структурой данных;
-ограничения, связанные с аппаратным обеспечением.
Ошибки вычислений.
Неправильно выполняются арифметические операции (как правило – это ошибки кодирования);
неточные вычисления (могут быть следствием, как ошибок проектирования, так и кодирования). Очень сложная тема, надо выработать свое отношение к ней с точки зрения разработки безопасного ПО.
Выделяются подпункты:
устаревшие константы;
ошибки вычислений;
неверно расставленные скобки;
неправильный порядок операторов;
неверно работает базовая функция;
переполнение и потеря значащих разрядов;
ошибки отсечения и округления;
путаница с представлением данных;
неправильное преобразование данных из одного формата в другой;
неверная формула;
неправильное приближение.
Начальное и последующие состояния (Ошибки инициализации).
Представляется не очень обоснованным их выделение в самостоятельный раздел, хотя они важны.
Выделяются подпункты:
не присвоены начальные значения;