Проверка модели на синтаксические ошибки называется

  1. Элемент
    на котором можно оставить вагоны
    нескольких назначений называется:
    СОСТАВНОЙ
    БУНКЕРНЫЙ(СПРОСИТЬ КАК ПИШЕТСЯ!)

  2. Проверка
    модели на синтаксические ошибки
    называется: ТРАНСЛЯЦИЕЙ

  3. Время
    занятия элемента в системе ИСТРА можно
    указыв50 единиц емкости, используя:

а)
Закон распределения

в)
Арабские цифры

  1. Если
    операция не может быть выполнена из-за
    занятости элементов, то формируется
    ЗАДЕРЖКА

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

1.
бункерный элемент
занятость устройства (ЛОГ)

2.
логический элемент
вагоны на пути (БУ)

  1. Элемент
    на котором можно оставить вагон
    называется… БУНКЕРНЫМ

  2. Параметр,
    которым характеризуется приоритеты в
    имитационной модели…

г)
Глубиной действия

  1. На
    бункерный элемент 20 занести емкость
    бункерного элемента 3: БУ20+БУ3

  2. Универсальная
    модель, содержащаяся в системе ИСТРА,
    называется абстрактной

  3. Количество
    операций, которые могут выполнены за
    один такт равно: 1
    (ОДНА) КАК ПИСАТЬ?

  4. Занять
    промежуточный элемент 3 на пять минут
    с нулевым временем сдвига: ПР3:0+5

  5. К
    логическим элементам относятся:

г)
базисные

д)
промежуточные

  1. Установите
    соответствие между элементом абстрактной
    модели ИСТРА и отображаемым объектом

1.
Логический(стрелочный
перевод
)
вагоны на пути

2.
Числовой элемент(вагоны
на пути, товары на складе
)
Простой вагона

  1. Параметром
    модели имитационной системы ИСТРА, для
    задания которого не допускается
    использование законов распределения,
    является время

а)
глубины действия

  1. Операция
    начинается в 100 минуту и состоит из
    записей:

БА1:
0+15

ПР(С)2:
5+5

ПР9(С):
0+10

Момент
времени начинается занятие элемента 3
при условии, что операция выполнится
без задержек …

в)125

  1. Тип
    элементов служит для запоминания и
    передачи управляющих решений в
    имитационной системе ИСТРА…

а)
фиксаторы

  1. Соответствие
    метода расчета и его характерного
    свойства

1.
Графоаналитический(наглядность)
-простота описания

2.
Аналитический(простота
описания
)
-наглядность результатов

3.
Теория массового обслуживания(учет
неравномерности
)
-учет неравномерности

  1. В
    секции ТВО может присутствовать запись:

в)
ПРИ ОП2 ЕСЛИ Ф1=5 ТО ОП14

г)
ЕСЛИ Ф2=2 то (ОП2 ЗАТЕМ ОП3)

е)
ПРИ ОП13 ОП2

  1. Тип
    элемента, из-за которого не формируется
    задержка в имитационной системе ИСТРА..

в)
базисный фиктивный

  1. Файл
    модели, прошедшей трансляцию ,имеет
    расширение…

в)IMW

  1. В
    секции элементы может присутствовать
    запись:

в)Ф2=2

е)БУ4=38

ж)БУ(С)4=38

  1. Укажите
    последовательность задания информации
    в секциях при построении модели в
    системе ИСТРА

а)
таблица взаимосвязи операций(3)

б)
элементы(1)

в)
операции(2)

г)
приоритеты(4)

  1. Исходными
    данными для построения имитационной
    модели являются:

а)
технология работы транспортного объекта

г)
схема путевого развития транспортного
объекта

  1. Под
    задержкой в имитационной системе ИСТРА
    технологически понимается простой…

в)
непроизводительный

  1. при
    моделировании расписания прибытия
    можно задавать параметр с использованием
    законов распределения случайной
    величины …

б)
интервал между поступлением операций
на расчет

  1. После
    окончания времени предельной задержки
    задержанная операция…

б)удаляется

  1. Моменты
    прибытия поездов на станцию указываются
    в секции…

а)
расписание

  1. основной
    критерий выбора варианта при расчете
    операции…

б)занятость
элементов

  1. Момент
    времени выполняет действия с бункерным
    элементом в операции имитационной в
    системе ИСТРА…

а)
начала занятости предыдущего логического
элемента

  1. в
    любой операции обязательно должно
    присутствовать строка вида..

в)
предельная задержка =
t

  1. элемент
    на котором можно оставить вагоны
    называется БУНКЕРНЫЙ

  2. При
    элемента имитационной системы ИСТРА
    параметр «время сдвига» работает
    по-особенному…

-промежуточный
специальный

  1. действие,
    которое невозможно выполнить в Таблице
    взаимосвязи операций имитационной
    модели…

-изменить
состояние элемента

  1. основным
    процессом при расчете имитационной
    модели является…

-выполнение
операции

  1. параметр
    «время сдвига» для неспециального
    логического элемента имитационной
    системе ИСТРА отображает смещение
    начала…

-выполнения
операции на величину данного параметра

  1. элементы
    являющиеся элементами одной группы в
    имитационной системе ИСТРА…

-базисный
и параллельный

  1. в
    секции «Расписание» модели имитационной
    системы ИСТРА имеются записи

ОП1(ПР10)=100

ОП2(ПР11)=105

ОП3(ПР20)=110

ОП4(ПР200)=110

Правильную
последовательность выполнения операций.
Если ГЛУБ20=8, а глубина остальных
параметров равна нулю…

ОП1,
ОП3, ОП2, ОП4

  1. форма
    записи: БУ1-!

-снимается,
при этом на момент снятия элемент №1 не
должен быть пустой

  1. закон
    распределения случайной величины
    применяется в имитационной системе
    ИСТРА:

-пуассона

эрланга

-нормальный

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

-меньше

  1. последовательность,
    в которой рекомендуется записывать
    варианты в операции…


порядке предпочтения вариантов

  1. тип
    бункерных элементов идеально подходит
    для моделирования натурного листа…

-составной

  1. установите
    соответствие между формой записи и ее
    расположением (секцией)

-ПРИ
ОП1 ОП2 (ТВО)
-операции

-ОП1=10
(распис)
-ТВО

-БУ(С)1=10
(эл-ты)
-приоритеты

БУ1+10
(операция)
-расписание

  1. укажите
    последовательность расчета транспортного
    объекта с использованием системы ИСТРА

2)построение
имитационной модели

3)отладка
имитационной модели

5)анализ
результатов экспериментов

1)сбор
исходных данных для построения модели

4)проведение
серии экспериментов

  1. узкое
    место- это элемент, который…

-вызывает
больше всего задержек

  1. оптимумом
    при поиске решения на имитационной
    модели считается уровень…

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

  1. операция
    состоит из записей:

БА11:
0+5

ПР12:2+5

ПР13:0+5

ПР13:0+5

ПР14:2+5

Номер
логического элемента, из-за которого
сформируется задержка…-13

  1. элемент,
    на котором формируется задержки,
    возникшие из-за начального базисного
    элемента…

-следующий
по порядку базисном элементе

  1. в
    абстрактную модель системы ИСТРА входит
    множество:


операторов управления

-операций

-элементов

  1. в
    «ситуационном управлении», реализованном
    в системе ИСТРА, понятие «состояние»
    включает в себя…

-текущее
значение элементов и выполнившиеся
операции


установите соответствие формы записи
и ее расшифровки


БУ1+10(4)
1)вместимость первого бункерного
элемента составляет 10 вагонов

-БУ1=10(1)
2)вместимость
первого составного бункерного элемента
составляет 10 вагонов

-БУ1(1)+10(3)
3)на первый бункерный элемент заносится
10 вагонов назначения 1

  1. установите
    соответствие между категорией операцией
    имитационной системы и секцией модели

-внутренние
операции (ТВО)
-расписание

-демонстрационные
операции -таблица взаимосвязи
операций

-внешние
операции(РАСПИСАНИЕ)

  1. величину
    загрузки, при которой элемент путевого
    развития считается в наиболее узким
    местом станции…

-наибольшие
задержки

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

имитационного
моделирования

-аналитический
вероятностный

  1. итерационная
    последовательность расчетное на
    имитированной модели при поиске
    рационального решения называется
    имитированный…

-спуск


Операция состоит из записей:

ПРЕДЕЛЬНАЯ
ЗАДЕРЖКА=30

БА1:0+5

ПР2:0+5

ПР3:0+5

ПР4:0+5

Элементы
2,3,4 в процессе расчета вызвали задержку
соответственно 13,11,10 минут. Данная
операция…

  • не
    выполняется, поскольку суммарное время
    задержки превысило величину предельной
    задержки

  1. В секции элементы может присутствовать запись:

  • ЛОГ3

  • (БУ2=10,ЛОГ2)
    путь 2

  • БУ4
    путь 4

  1. Укажите
    наиболее важные преимущества имитационного
    моделирования при расчете транспортных
    систем:

  • возможность
    наиболее полного учета схемы путевого
    развития и технологии работы

  • отображение
    влияния структуры транспортной системы
    на характер работы

  1. В
    операции имеется запись:

:m
БА10:0+7/10РАВН()

Правильная
форма записи занятости промежуточного
элемента 11 при помощи ссылки на 10
элемент…

  • ПР11:0+[
    m]

  1. Оператор
    управления абстрактной модели системы
    ИСТРА реализует управление…

  • ситуационное

  1. В
    модели имитационной системы ИСТРА
    можно записать до 255 вариантов одного
    уровня. При расчете данной операции
    может выполняться вариантов…

  • должны
    быть выполнены все записанные

  1. Приоритеты
    в имитационной системе ИСТРА моделируют…

  • преимущество
    выполнения одних операций перед другими

  1. Поиск
    рационального решения на имитационной
    модели представляет собой…

  • итерационную
    последовательность расчетов

  1. Параметр
    модели, который служит для отображения
    вместимости пути на станции…

  • предельная
    емкость бункерного элемента

  1. Критерии,
    которые должен учитывать метод расчета
    железнодорожных станцией:

  • диспетчерское
    управление

  • неравномерность
    работы

  1. Установите
    соответствие между типом элемента и
    его назначением

1)комплексный
остановка состава без возможности
оставить вагоны(баз)

2)фиксатор
запоминание состояния
элемента(фиксатор)

3)промежуточный
запоминание количества вагонов и
их назначений(бунк)

4)базисный
остановка состава с возможностью
оставить вагоны(комп)

5)бункерный
нельзя остановить состав, служит
только для передвижений(пром)

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

  • во
    всех передвижениях считаются занятыми
    одновременно-фактически или по
    враждебности

  1. Форма
    записи: БУ1+%50

в
операции имитационной системе ИСТРА
означает, что на бункерный элемент №1
заносится…

  • 50 Единиц емкости; если всю емкость занести невозможно, элемент заполняется до предельной вместимости, а остаток запоминается

  1. В
    имитационной системе ИСТРА возможно
    создать модель железнодорожной станции
    любого типа, конфигурации и класса,
    поскольку…

  • элементы
    модели и алгоритмы их работы универсальны
    и не зависят от вида объекта

  1. Бункерные
    элементы, моделирующие количество
    вагонов в парке, на станции, на грузовом
    фронте и т.п. называются:

  • Универсальные
    обобщенные

  1. Установите
    соответствие записью операции и типом
    элемента(В примере вместо реальных
    префиксов указано слово Элемент):

  • Элемент
    9 +1/5РАВН 0
    1) Параллельный

  • Элемент
    5: [5] (1)
    2)
    Базисный

  • Элемент
    1: 5 +1/5РАВН 0 (2)

  1. Логический
    элемент абстрактной модели системы
    ИСТРА может принимать состояние

  • Любое
    от 0 до предела вместимости

  • 0
    или 1

  1. Главный
    критерий при объединении стрелок в
    промежуточный элемент…

  • Если
    не существует хотя бы одной пары
    непересекающихся маршрутов, проходящих
    через обе стрелки, то стрелки объединяются
    в один элемент

  1. Действия
    с бункерным элементом вызовет задержку…

  • БУ1-!

  • БУ1-!!

  1. Установите
    соответствие элементов на схеме

  • 1)
    В(ба)
    Базисный

  • 2)
    С(пр)
    Промежуточный

  • 3)
    А (бу)
    Фиксатор

  1. В
    одной из операций модели имитационной
    системы ИСТРА имеются записи…

м
БА1: 0+5/10НОРМ (С2, М5)

ПР2:0+[м]

н
ПР3: 10+15/20РАВН()

ПА4:
[н]

Ошибка
заключается в том, что параллельный
элемент не может ссылаться на…

  • Промежуточный

  1. В
    абстрактную модель системы ИСТРА входит
    множество…

  • Элементов

  • Операторов
    управления (ХЗ!)

  • Операций

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

Синтаксические ошибки IDEF0 с точки зрения BPwin разделяются на три типа.

Во-первых, это ошибки, которые BPwin выявить не в состоянии. Например, синтаксис IDEF0 требует, чтобы имя действия было выражено отглагольным существительным или глагольной формой, выражающей действие («Просмотр графических файлов», «Выбор каталога», «Изменение масштаба», «Печать» и т.д.), а имя стрелки должно быть выражено существи­тельным («Имя файла», «Изображение», «Данные от пользователя» и т.д.). BPwin не позволяет анализировать синтаксис естественного языка (английского и русского) и смысл имен объектов и поэтому игно­рирует ошибки этого типа. Выявление таких ошибок — ручная работа, которая ложится на плечи аналитиков и должна контролироваться руко­водителем проекта.

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

Третий тип ошибок BPwin позволяет допустить, но детектирует их. Полный их список можно получить в отчете Model Consistency Report.

Диалог задания параметров отчета представлен на рис. 17.28.

Рис. 17.28. Диалог задания параметров отчета по синтаксическим ошибкам модели (Model Consistency Report)

Опции влияют на то, будет ли BPwin проверять у каждого функционального блока наличие управляющих стрелок (Report Activities Without Control Arrows) и стрелок выхода (Report Activities Without Output Arrows).

Отчет генерируется автоматически при нажатии кнопок предварительного просмотра Preview, печати Print или сохранения в текстовом файле Report.

Список ошибок может содержать, например, неименованные действия и стрелки (unnamed activity, unnamed arrow), несвязанные стрелки (unconnected border arrow), неразрешенные стрелки (unresolved (square tunneled) arrow connections), действия, не имеющие, по крайней мере, одной стрелки выхода и одной стрелки управления (Activity «Просмотр графических файлов» has no Control, Activity «Просмотр графических файлов» has no Output), и т.д.

Пример отчета Model Consistency Report приведен на рис. 17.29.

Рис. 17.29. Отчет по синтаксическим ошибкам

Классификация ошибок

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

В целом сложность отладки обусловлена следующими причинами:

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

В соответствии с этапом обработки, на котором проявляются ошибки, различают:

  • синтаксические ошибки — ошибки, фиксируемые компилятором (транслятором, интерпретатором) при выполнении синтаксического и частично семантического анализа программы; 
  • логические ошибки — …; 
  • ошибки компоновки — ошибки, обнаруженные компоновщиком (редактором связей) при объединении модулей программы;
  • ошибки выполнения — ошибки, обнаруженные операционной системой, аппаратными средствами или пользователем при выполнении программы.

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

Следует иметь в виду, что чем лучше формализованы правила синтаксиса языка, тем больше ошибок из общего количества может обнаружить компилятор и, соответственно, меньше ошибок будет обнаруживаться на следующих этапах. В связи с этим говорят о языках программирования с защищенным синтаксисом и с незащищенным синтаксисом. К первым, безусловно, можно отнести Pascal, имеющий очень простой и четко определенный синтаксис, хорошо проверяемый при компиляции программы, ко вторым — Си со всеми его модификациями. Чего стоит хотя бы возможность выполнения присваивания в условном операторе в Си, например:

if (c = n) x = 0; /* в данном случае не проверятся равенство с и n, а выполняется присваивание с значения n, после чего результат операции сравнивается с нулем, если программист хотел выполнить не присваивание, а сравнение, то эта ошибка будет обнаружена только на этапе выполнения при получении результатов, отличающихся от ожидаемых.

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

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

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

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

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

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

Методы отладки программного обеспечения

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

  • ручного тестирования;
  • индукции;
  • дедукции;
  • обратного прослеживания.

Метод ручного тестирования

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

Метод индукции

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

Самый ответственный этап — выявление симптомов ошибки. Организуя данные об ошибке, целесообразно записать все, что известно о её проявлениях, причем фиксируют, как ситуации, в которых фрагмент с ошибкой выполняется нормально, так и ситуации, в которых ошибка проявляется. Если в результате изучения данных никаких гипотез не появляется, то необходима дополнительная информация об ошибке. Дополнительную информацию можно получить, например, в результате выполнения схожих тестов. В процессе доказательства пытаются выяснить, все ли проявления ошибки объясняет данная гипотеза, если не все, то либо гипотеза не верна, либо ошибок несколько.

Метод дедукции

По методу дедукции вначале формируют множество причин, которые могли бы вызвать данное проявление ошибки. Затем анализируя причины, исключают те, которые противоречат имеющимся данным. Если все причины исключены, то следует выполнить дополнительное тестирование исследуемого фрагмента. В противном случае наиболее вероятную гипотезу пытаются доказать. Если гипотеза объясняет полученные признаки ошибки, то ошибка найдена, иначе — проверяют следующую причину.

Метод обратного прослеживания

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

Методы и средства получения дополнительной информации

Для получения дополнительной информации об ошибке можно выполнить добавочные тесты или использовать специальные методы и средства:

  • отладочный вывод;
  • интегрированные средства отладки;
  • независимые отладчики.

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

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

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

Интегрированные средства отладки. Большинство современных сред программирования (Delphi, Builder C++, Visual Studio и т. д.) включают средства отладки, которые обеспечивают максимально эффективную отладку. Они позволяют:

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

Отладка с использованием независимых отладчиков. 

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

Общая методика отладки программного обеспечения

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

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

2 этап — локализация ошибки — определение конкретного фрагмента, при выполнении которого произошло отклонение от предполагаемого вычислительного процесса. Локализация может выполняться:

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

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

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

4 этап — исправление ошибки — внесение соответствующих изменений во все операторы, совместное выполнение которых привело к ошибке.

5 этап — повторное тестирование — повторение всех тестов с начала, так как при исправлении обнаруженных ошибок часто вносят в программу новые.

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

  • программу наращивать «сверху-вниз», от интерфейса к обрабатывающим подпрограммам, тестируя ее по ходу добавления подпрограмм;
  • выводить пользователю вводимые им данные для контроля и проверять их на допустимость сразу после ввода;
  • предусматривать вывод основных данных во всех узловых точках алгоритма (ветвлениях, вызовах подпрограмм).

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

Источник:

Аннотация: Лекция посвящена описанию вопросов, касающихся отладки приложений и работы с ошибками.

8.1. Ошибки при создании программы

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

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

Приведем несколько примеров синтаксических ошибок.

  • Неправильное ключевое слово. Такая ошибка сразу будет отмечена редактором. Например, если в конструкции цикла For-Next сделать ошибку в ключевом слове For — вы увидите сообщение об ошибке как только попытаетесь перейти к написанию следующей, после начала цикла, строки.
  • Ошибка при объявлении переменной. Если вы забудете указать ключевое слово Dim при объявлении переменной — редактор выдаст сообщение об ошибке. Однако, сделает он это лишь при попытке запуска программы.

А вот — логические ошибки.

  • Неправильное использование операторов. Например, вместо знака обычного деления вы случайно использовали знак целочисленного деления.
  • Расчет какого-либо показателя по неправильной формуле. Например, если неточно расставить скобки в каком-либо выражении — это приведет к ошибке, хотя внешне все может выглядеть правильным.
  • Неправильное использование функций — как встроенных, так и пользовательских. Например, используя функцию Str для получения строкового представления числа, вы не учли, что для положительных чисел эта функция добавляет в начало строки пробел. Далее вы попытались узнать первую цифру числа, вырезав первый символ полученной строки. Естественно, никакой цифры в этом случае не получится — лишь знак пробела для положительных или «минус» для отрицательных чисел.
  • Неправильное использование переменных. Например, вы используете два вложенных цикла для обработки двумерного массива. Одна из цикловых переменных имеет имя i, вторая — j. Они довольно сильно похожи внешне, их можно случайно перепутать при указании индексов массива. К тому же, обрабатывая массив в цикле довольно легко перепутать место каждой из переменных при указании индекса массива. Использование понятных имен переменных (например — my_Age или num_Vozrast для хранения возраста и т.д.) позволяет эффективно бороться с такими ошибками.
  • Случайное использование «новых» переменных. Например, вы предложили пользователю ввести некое значение и записали его в переменную num_Inp, а использовав эту переменную в выражении, напечатали не num_Inp, а num_Ihp. Внешне они похожи, но, присмотревшись, вы можете обнаружить, что имена разные. Еще сложней искать ошибки в латинских именах переменных, в которые «вкрались» русские буквы. Разницу между my_Name и my_Namе вы не увидите, но это — разные переменные — в конце второй вместо латинской e использована русская е. Эффективно бороться с такими ошибками можно, если задать в редакторе опцию обязательного объявления переменных ( Option Explicit ). При появлении необъявленной переменной редактор даст знать об этом.
  • Неправильное использование оператора сравнения. Например, это может быть оператор, который сравнивает некие величины не так, как вы предполагали — вместо знака < вы случайно использовали > или, редактируя сравнение (скажем, скопировав похожий оператор сравнения из другого места программы для ускорения работы), поменяли местами сравниваемые переменные или выражения, не поменяв знака и т.д.

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

8.2. Ошибки при выполнении программы

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

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

Давайте, для начала, рассмотрим способы поиска ошибок в процессе создания программ

8.3. Тестирование программ и поиск ошибок

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

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

Если обычные проверки закончились успешно — можно считать, что ваша программа корректно работает, не имеет синтаксических и логических ошибок.

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

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

  • Если программа запрашивает число — введите какое-нибудь слово, очень большое число, ноль, отрицательное число, оставьте поле ввода пустым, введите дробное число. Если вы не предусмотрели никаких специальных мер по обработке ошибок, при выполнении подобных операций вы почти гарантированно встретитесь с проблемами.
  • Попытайтесь запустить программу, открыв несколько окон с документами.
  • Попытайтесь прервать работу программы, а потом снова возобновить ее. Если в вашей программе есть участки, в течение выполнения которых нельзя допускать прерывания работы программы пользователем — вам следует подумать о том, чтобы запретить прерывание работы программы на этих участках.
  • Попытайтесь использовать вашу программу в более старой версии Microsoft Office, в нерусифицированной версии. Обратите внимание, например, на различия расширений имен файлов в Office 2007 и более старых версиях, на различия в объектных моделях. В общем случае программы из более старых версий Office будут работать в Office 2007, однако если они используют какие-то специфические особенности Office — такие программы нуждаются в проверке и обновлении. В то же время, макросы для Office 2007, использующие новые объектные модели, могут не работать или работать неправильно в старых версиях.
  • Попытайтесь поработать с вашей программой на чужом ПК. Вполне возможно, что при таком эксперименте вы столкнетесь с ошибкой. Например, вы программно работаете с файлами на вашем рабочем ПК — если эти файлы отсутствуют на ПК другого пользователя или находятся в других директориях, или тех директорий, которые нужны вашей программе, нет на ПК другого пользователя — вы столкнетесь с ошибкой.
  • Во время работы программы сделайте что-нибудь необычное. Как правило, от пользователей можно ожидать любых странных на первый взгляд действий. Если вы тестируете программу для MS Word, которая правит текст или занимается автоматическим созданием текста, попробуйте во время ее работы переключаться между документами, читать документ, вносить в него правки, выделять произвольные участки текста. То же самое касается MS Excel — во время работы программы попробуйте переключаться между открытыми книгами, между листами, выделять ячейки, попробуйте запустить программу, делая различные листы активными, открыв несколько книг. Результаты такого тестирования могут быть совершенно непредсказуемыми. Проанализировав их, вы можете прити к выводу, что, например, на время выполнения программы нужно скрывать или блокировать документ, пользоваться альтернативными методами работы с документом. Яркий пример — объект Selection в MS Word, который чувствителен к смене выделения в процессе работы, и объект Range, который может работать совсем без создания выделения в тексте.
  • Если ваша программа использует файлы, находящиеся в локальной сети, отключите сеть во время работы программы. Проверьте ее реакцию. То же самое можно сделать, если ваша программа работает с принтером — проверьте ее реакцию на выключенный принтер, на принтер, в котором нет бумаги.
  • Наконец, представьте, что вы — пользователь программы и просто поработайте с ней. А еще лучше — попросите потенциального пользователя немного «пообщаться» с вашей программой. Этот способ позволяет протестировать программу в условиях, максимально приближенных к реальным.

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

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

8.4. Отладка программ в редакторе VBA

Основной метод отладки — это пошаговое исполнение программы с использованием точек останова (breakpoint).

Чтобы создать в программе точку останова, достаточно щелкнуть мышью в редакторе на серой панели напротив команды, на которой нужно остановить выполнение программы. Там появится большая красная точка (рис. 8.1.) — здесь программа будет остановлена в процессе выполнения. Строка будет подсвечена красным цветом.

Точка останова в программе

Рис.
8.1.
Точка останова в программе

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

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

Установить точку останова в строку можно, выделив строку и выбрав команду Debug o Toggle Breakpoint (Отладка o Установить точку останова). Для удаления всех точек останова из программы можно воспользоваться командой Debug o Clear All Breakpoints (Отладка o Очистить точки останова).

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

Так же режим отладки можно включить, нажав во время работы программы комбинацию клавиш Ctr + Pause Break и нажав в появившемся окне кнопку Debug. Текущая строка будет выделена желтым цветом, напротив нее будет установлена желтая стрелочка. Однако такой способ обычно не позволяет точно «попасть» в то место программы, где находится предполагаемая ошибка (рис. 8.2.).

Программа, остановленная во время выполнения

Рис.
8.2.
Программа, остановленная во время выполнения

Чтобы запущенная программа останавливалась на каждой строке, можно запустить ее в режиме Step Into командой Debug o Step Into (Отладка o Пошаговое исполнение). Того же эффекта можно достичь, нажав клавишу F8 на клавиатуре.

Когда программа остановлена, вы можете выполнить следующие действия

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

    Значение переменной во всплывающем окне

    Рис.
    8.3.
    Значение переменной во всплывающем окне

  • Продолжить выполнение программы в режиме Step Into — выбрав соответствующую команду меню или нажав клавишу F8.
  • Отредактировать программу.
  • Продолжить исполнение программы в обычном режиме командой Run o Sub/User Form (Запустить o Процедуру/Форму), нажатием клавиши F5 или соответствующей кнопкой на панели инструментов
  • Остановить выполнение программы командой Run o Reset (Запустить o Перезагрузка) или кнопкой на панели инструментов
  • Воспользоваться другими средствами отладки — окнами Immediate, Locals, Watch.

Помимо режима Step Into существуют следующие режимы отладки, доступные в меню Debug.

  • Step Over (Перейти на следующую строку). Эта команда полезна при отладке программы, содержащей вызовы уже отлаженных процедур. В режиме Step Over отладчик не входит в процедуру, выполняя ее без отладки, после чего переходит на следующую строку. Например, вы выполняете программу в режиме Step Into и при очередной остановке видите, что подсвеченная строка содержит вызов процедуры, которую отлаживать не нужно. Вы выбираете команду Step Over, процедура выполняется без остановок на каждой ее строке, после чего следующая остановка происходит на строке вашей программы, которая идет за вызовом процедуры.
  • Step Out (Выполнить процедуру) — эта команда позволяет выполнить текущую процедуру (например, вызванную из кода основной программы при обычной отладке ) без остановки в каждой строке. Следующая остановка будет сделана на строке, которая следует за вызовом процедуры в основном тексте программы.
  • Run To Cursor (Выполнить до курсора) — выполняет программу до позиции, на которой установлен курсор. Аналогично установке одиночной точки останова.

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

Понравилась статья? Поделить с друзьями:
  • Проверка на количество ошибок
  • Проверка на грамматические ошибки тест
  • Проверка на грамм ошибки
  • Проверка модов симс 4 на ошибки
  • Проверка ноутбука на ошибки виндовс 7