
- •Вопрос 2 3
- •Вопрос 2 Структурное программирование. Проектирование сверху вниз. Модульное программирование. Структурное кодирование
- •Вопрос 4 Функции. Компактность. Правило одной операции. Опасность смешения уровней абстракции
- •Вопрос 5 Функции. Правило понижения. Паттерн «Абстрактная фабрика» и использование оператора switch
- •Вопрос 6 Аргументы функций. Приемлемое количество и качество аргументов. Побочные эффекты в функциях. Примеры
- •Вопрос 9 Форматирование исходного кода. Цель форматирования. Вертикальное разделение концепций, вертикальное сжатие. Вертикальное расстояние
- •Вопрос 10 Форматирование исходного кода. Цель форматирования. Горизонтальное форматирование. Горизонтальное разделение и сжатие. Отступы
- •Вопрос 11 Объекты и структуры данных. Отличия процедурного и объектно-ориентированного кода. Случаи применения
- •Вопрос 12 Закон Деметры. Опасность построения гибридов объектов и структур данных. Объекты передачи данных и активные записи
- •Вопрос 16 Класс. Размеры класса. Принцип единой ответственности (srp)
- •Вопрос 17 Понятие связности класса. Влияние связности на размер классов
- •Вопрос 18 Структурирование класса с учетом его изменений. Принципы проектирования классов в ооп
- •Вопрос 19 Понятие эффективности программы. Выбор между эффективностью и удобочитаемостью. Оптимизирующие компиляторы
- •Вопрос 24 Понятие отладки. Отличие между отладкой и тестированием. Средства отладки. Защитное программирование
- •Вопрос 28 Понятие правильности программ. Доказательство правильности программ
Вопрос 24 Понятие отладки. Отличие между отладкой и тестированием. Средства отладки. Защитное программирование
ОТЛАДКА ПРОГРАММ
Мало в какой области деятельности имеется столько возможностей для ошибок, как в программировании. Искусство локализации таких ошибок, когда факт их существования установлен, носит название отладки. Таким образом, отладка программы предполагает обязательное наличие той или иной ошибки, в противном случае, мы имеем дело с тестированием.
РАЗЛИЧИЕ МЕЖДУ ОТЛАДКОЙ И ТЕСТИРОВАНИЕМ
Многие программисты путают отладку программ с тестированием, предназначенным для проверки их работоспособности. Отладка имеет место тогда, когда программа со всей очевидностью работает неправильно. Поэтому отладка начинается всегда в предвидении отказа программы. Если же оказывается, что программа работает верно, то она тестируется. Часто случается так, что после прогона тестов программа вновь должна быть подвергнута отладке. Таким образом, тестирование устанавливает факт наличия ошибки, а отладка выявляет ее причину, и эти два этапа разработки программы перекрываются.
ЗАЩИТНОЕ ПРОГРАММИРОВАНИЕ
Термин защитное программирование характеризует такой стиль написания программ, при котором появляющиеся ошибки легко обнаруживаются и идентифицируются программистом. Необходимость защитного программирования диктуется тем, что имеющиеся в подавляющем большинстве программ ошибки далеко не всегда сказываются явным образом на их работе и могут в течение многих месяцев оставаться
необнаруженными.
Встраивание отладочных средств в программу есть не что иное, как защитное программирование.
Существует несколько принципов защитного программирования:
1. Общее недоверие. В соответствии с этим принципом для каждого модуля должно предполагаться, что входные данные могут оказаться неверными и подлежат проверке.
2. Немедленное обнаружение. Этот принцип гласит, что лучше всего выявлять ошибку возможно раньше, поскольку при этом упрощается задача установления ее первопричины.
3. Изолирование ошибок. Согласно этому принципу, ошибки в одной из частей программы изолируются посредством, так называемых брандмауэров, чтобы не допустить их губительного влияния на другие части.
СРЕДСТВА ОТЛАДКИ
Разнообразие отладочных средств является залогом успеха при отладке программ. Однако программисту редко удается обойтись, стандартными средствами отладки и избежать создания своих
собственных средств.
Наиболее эффективными представляются такие средства отладки, которые вводятся в программу при ее написании. В этом случае места расположения ошибок могут определяться программистом с большей точностью.
Существует несколько типов отладочных средств, применяемых при программировании:
1. Распечатывание содержимого памяти.
2. Отслеживание хода выполнения алгоритма.
3. Отслеживание обращений к переменным.
4. Отслеживание обращений к подпрограммам.
5. Проверка индексов.
6. Воспроизведение значений переменных.
Вывод содержимого памяти на печать предполагает регистрацию текущего состояния программы в некоторый момент ее выполнения.
Отслеживание хода выполнения алгоритма представляет собой регистрацию логического пути выполнения программы. Она может быть использована для проверки правильности выполнения последовательности операций, заданной программистом, и текущих значений переменных.
Средства отслеживания обращений к переменным разрабатываются с таким расчетом, чтобы печатались не все переменные подряд, а только указанные в конкретном списке.
Проверка индексов предназначена для контроля за правильностью индексации именованных массивов посредством сопоставления их индексов с объявленными границами массива. Если границы оказываются нарушенными, печатается сообщение об ошибке. Обычно имеется возможность контроля, как всех массивов, так и заданного их множества.
Воспроизведение значений переменных осуществляется посредством отладочной команды DfSPLAY.