Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методы_программирования.doc
Скачиваний:
22
Добавлен:
12.02.2015
Размер:
181.76 Кб
Скачать
  1. Программирование защиты от ошибок

Рекомендуется проверять:

  1. правильность выполнения I/O

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

При вводе-выводе ошибки:

  1. передачи данных, аппаратные. Аппаратный контроль, проверка чётности, использование ECHO. Тестирование методом эквивалентного разделения или граничных значений.

  2. ошибки преобразования

  3. ошибки перезаписи (лишний или неверный символ)

  4. ошибки данных. Контрольные суммы. Контроль диапазонов.

    1. Проверка допустимости промежуточных результатов

    2. Предотвращение накопления погрешности

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

Рекомендуется использовать методы с известными погрешностями.

Не рекомендуется использовать условие равенства вещественных чисел.

      1. Тестирование

Стадии тестирования:

  1. автономное тестирование отдельных компонентов

  2. комплексное тестирование

  3. системное (оценочное тестирование)

Два подхода:

  1. структурный (метод стеклянного ящика). Тестовый набор формируется из знания структуры программы.

  2. Функциональный (метод чёрного ящика)

      1. Методы контроля

    1. ручной контроль.

Обычно на ранних стадиях разработки.

Статический и динамический контроль.

Статический — анализ структуры программы, связи между модулями и т.д. Ручной контроль выявляет до 30 до 70 % логического программирования.

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

Список возможных ошибок для Pascal:

  1. контроль обращений к данным (все ли переменные инициализированы)

  2. не превышены ли максимальные размеры строк и массивов

  3. не перепутаны ли строки со столбцами при работе с матрицами

  4. нет ли элементов с одинаковыми или похожими именами

  5. если используются файлы, нужно проверять признак конца файла

  6. соответствуют ли типы записываемых и читаемых значений

  7. если используются нетипизированные переменные, соответствуют ли типы при наложении

  8. При наличии открытых массивов проверяется, не выходит ли индекс за границы значений

  9. контроль вычислений (правильно ли записан порядок следования операторов)

  10. корректно ли выполнены вычисления над нечисловыми переменными

  11. корректно ли выполнены вычисления над переменными различных типов

  12. возможно ли переполнение разрядной сетки в программе

  13. соответствует ли вычисление заданной точности

  14. нет ли сравнения переменных разных типов

  15. будут ли корректно завершены циклы

  16. будет ли завершена программа

  17. нет ли циклов, которые не будут выполняться из-за нарушения условий входа

  18. возможно ли продолжение выполнения после очередного шага цикла

  19. при поиске корректно ли обрабатывается ситуация «элемент найден / не найден»

  20. контроль модульных интерфейсов

  21. не изменяет ли подпрограмма значений, которые не должны меняться

  22. не происходит ли нарушение области действия локальных и глобальных переменных с одинаковыми именами.