Главная » Просмотр файлов » Калайда В.Т., Романенко В.В. Технология разработки программного обеспечения (2007)

Калайда В.Т., Романенко В.В. Технология разработки программного обеспечения (2007) (1095890), страница 17

Файл №1095890 Калайда В.Т., Романенко В.В. Технология разработки программного обеспечения (2007) (Калайда В.Т., Романенко В.В. Технология разработки программного обеспечения (2007)) 17 страницаКалайда В.Т., Романенко В.В. Технология разработки программного обеспечения (2007) (1095890) страница 172018-12-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 17)

Возможно ли, чтобы делитель в операторе деления былравен нулю?7. Если величины представлены в машине в двоичнойформе, получаются ли какие-нибудь результаты неточными?Так, 100,1 редко равно 1.0 в двоичной машине.8. Может ли значение переменной выходить за пределыустановленного для нее диапазона? Например, для операторов,присваивающих значение переменной PROB (имеющей смыслвероятности какого-либо события), может быть произведенапроверка, будет ли полученное значение всегда положительными не превышающим 1,0.9. Верны ли предположения о порядке оценки и следования операторов для выражений, содержащих более чем одиноператор?10. Встречается ли неверное использование целой арифметики, особенно деления? Например, если I — целая величина,то выражение 2*I/2 = I зависит от того, является значение I четным или нечетным, и от того, какое действие — умножение илиделение — выполняется первым.1096.3.3.4 Ошибки при сравнениях1.

Сравниваются ли в программе величины, имеющие несовместимые типы данных (например, строка символов с адресом)?2. Сравниваются ли величины различных типов или величины различной длины? Если да, то проверьте, правильно лиинтерпретируются (поняты) правила преобразования.3. Корректны ли операторы сравнения? Программисты часто путают такие отношения, как наибольший, наименьший,больше чем, не меньше чем, меньше или равно.4. Каждое ли булевское выражение сформулировано так,как это предполагалось? Программисты часто делают ошибкипри написании логических выражений, содержащих операции«И», «ИЛИ», «НЕ».5. Являются ли операнды булевских выражений булевскими? Существуют ли ошибочные объединения сравнений и булевских выражений? Они представляют другой часто встречающийся класс ошибок.

Примеры нескольких типичных ошибокприведены ниже. Если величина L определена как лежащая винтервале между 2 и 10, то выражение 2<L<10 является неверным. Вместо него должно быть написано выражение(2 < L)&(L < 10). Если же величина L определена как большая,чем Х или Y, то выражение L>X|Y является неверным; онодолжно быть записано в виде (L>Х) | (L>Y).

При сравнениитрех чисел на равенство выражение IF (A=B=C) означает совсем другое. Например, в языке Си произойдет присвоениепеременным A и B значения переменной C. А условие будет истинным, если это значение ненулевое. В случае необходимостипроверить математическое отношение X=Y=Z правильным будет выражение (X=Y)&(Y=Z).

Также в языке Си следует различать булевские и битовые операторы. Например, если A = 1 иB = 2, то условие IF(A && B) будет истинно, а IF(A & B) —ложно.6. Сравниваются ли в программе мантиссы или числа сплавающей запятой, которые представлены в машине в двоичной форме? Это является иногда источником ошибок из-за усечения младших разрядов. Или из-за неточного равенства чиселв двоичной и десятичной формах представления.1107. Верны ли предположения о порядке оценки и следовании операторов для выражений, содержащих более одного булевского оператора? Иными словами, если задано выражение(А==2)&(В==2)|(С==3), понятно ли, какая из операций выполняется первой: И или ИЛИ?8.

Влияет ли на результат выполнения программы способ,которым конкретный компилятор выполняет булевские выражения? Например, операторIF (ХО)&((Y/X)>Z)является приемлемым для некоторых компиляторов PL/1(т.е. компиляторов, которые заканчивают проверку, как толькоодно из выражений оператора «И» окажется ложным), но приведет к делению на 0 при использовании других компиляторов.6.3.3.5 Ошибки в передачах управления1. Если в программе содержится переключатель (например, вычисляемый оператор GO TO в Фортране или его аналогON… GOTO в Бейсике), то может ли значение индекса когдалибо превысить число возможных переходов? Например, всегдали L будет принимать значение 1, 2 или 3 в операторе ФортранаGO TO (200, 300, 400), L или операторе Бейсика ON L GOTO200, 300, 400?2. Будет ли каждый цикл, в конце концов, завершен? Придумайте неформальное доказательство или аргументы, подтверждающие их завершение.3.

Будут ли программа, модуль или подпрограмма, в конечном счете, завершены?4. Возможно ли, что из-за входных условий цикл никогдане сможет выполняться? Если это так, то является ли этооплошностью? Например, что произойдет для циклов, начинающихся операторами:DO WHILE (NOTFOUND)DO I=X ТО Zесли первоначальное значение NOTFOUND — ложь или если Хбольше Z?1115. Для циклов, управляемых как числом итераций, так ибулевским условием (например, цикл для организации поиска),какова последовательность «погружения в тело цикла»? Например, что произойдет с циклом, имеющим заголовокDO I=1 ТО TABLESIZE WHILE (NOTFOUND)если NOTFOUND никогда не принимает значение «ложь»?6. Существуют ли какие-нибудь ошибки «отклонения отнормы» (например, слишком большое или слишком малое число итераций)?7.

Если язык программирования содержит понятие группы операторов (например, DO-группы в PL/1, ограниченныеоператорами DO-END), то имеется ли явный оператор END длякаждой группы и соответствуют ли операторы END своимгруппам?8. Существуют ли решения, подразумеваемые по умолчанию? Например, пусть ожидается, что входной параметр X принимает значения 1, 2 или 3. Логично ли тогда предположить,что он должен быть равен 3, если он не равен 1 или 2? Например, рассмотрим программу на языке Си:switch(X){case 1: printf(“1!!!”); break;case 2: printf(“2!!!”); break;default: printf(“3!!!”);}Коль скоро это так, то является ли предположение правильным?6.3.3.6 Ошибки интерфейса1. Равно ли число параметров, получаемых рассматриваемым модулем, числу аргументов, передаваемых каждым из вызывающих модулей? Правилен ли порядок их следования?2.

Совпадают ли атрибуты (например, тип и размер) каждого параметра с атрибутами соответствующего ему аргумента?1123. Совпадают ли единицы измерения каждого параметра сединицами измерения соответствующих аргументов? Например,нет ли случаев, когда значение параметров выражено в градусах, а аргумента — в радианах?4. Равно ли число аргументов, передаваемых из рассматриваемого модуля другому модулю, числу параметров, ожидаемых в вызываемом модуле?5. Соответствуют ли атрибуты каждого аргумента, передаваемого другому модулю, атрибутам соответствующего параметра в рассматриваемом модуле?6.

Совпадают ли единицы измерения каждого аргумента,передаваемого другому модулю, с единицами измерения соответствующего параметра в рассматриваемом модуле?7. Если вызываются встроенные функции, правильно лизаданы число, атрибуты и порядок следования аргументов?8. Если модуль имеет несколько точек входа, передаетсяли параметр всегда вне зависимости от точки входа? Такаяошибка присутствует во втором операторе присваивания следующей программы на PL/1:A: PROCEDURE (W,X);W=X+1;RETURN;В: ENTRY (Y,Z);Y=X+Z;END;9. Не изменяет ли подпрограмма параметр, который должен использоваться только как входная величина?10. Если имеются глобальные переменные (например,переменные в PL/1 с атрибутом EXTERNAL или в Си с атрибутом EXTERN, переменные, указанные в операторах COMMONФортрана), имеют ли они одинаковые определения и атрибутыво всех модулях, которые к ним обращаются?11.

Передаются ли в качестве аргументов константы? Внекоторых реализациях Фортрана такие операторы, какCALL SUBX (J,3)113являются опасными, поскольку, если подпрограмма SUBX присвоит значение второму параметру, значение константы 3 будетизменено.6.3.3.7 Ошибки ввода-вывода1. Являются ли правильными атрибуты файлов, описанных явно?2. Являются ли правильными атрибуты оператора OPEN?3.

Согласуется ли спецификация формата с информациейв операторах ввода-вывода? Например, согласуется ли каждыйоператор FORMAT (с точки зрения числа элементарных данныхи их атрибутов) с соответствующими операторами READ иWRITE в программе, написанной на Фортране? То же самоеприменимо к проверке соответствия между списком данных исписком форматов в операторах ввода-вывода PL/1 и Си.114Обращение к данным1. Используются ли переменные снеустановленными значениями?2. Лежат ли индексы вне заданныхграниц?3. Есть ли нецелые индексы?4. Есть ли «подвешенные» обращения?5. Корректны ли атрибуты при всехпсевдонимах?6.

Соответствуют ли атрибуты записи иструктуры?7. Вычислимы ли адреса битовыхполей? Передаются ли битовые поля вкачестве аргументов?8. Корректны ли атрибутыбазированной памяти?9. Соответствуют ли друг другуопределения структуры, данные ей вразличных процедурах?10. Превышены ли границы строки?11. Существуют ли какие-нибудьдругие ошибки в операциях синдексацией или при обращении кмассивам по индексу?Описание данных1. Все ли переменные описаны?2. Понятно ли отсутствие атрибутов?3.

Правильно ли инициализированымассивы и строки?4. Правильно ли определены размер,тип и класс памяти?5. Согласуется ли инициализация склассом памяти?6. Нельзя ли обойтись без переменныхсо сходными именами?Вычисления1. Производятся ли вычисления нанеарифметических переменных?2. Производятся ли вычисления сиспользованием данных разного вида?3. Существуют ли вычисленияпеременных разной длины?4. Не меньше ли длина результата, чемдлина вычисляемого значения?5.

Возможно ли переполнение илипотеря промежуточного результата привычислении?6. Есть ли деление на нуль?7. Существуют ли неточности приработе с двоичными числами?8. Не выходит ли значение переменнойза пределы установленного диапазона?9. Понятен ли порядок следованияоператоров?10. Правильно ли осуществляетсяделение целых чисел?Сравнение1. Сравниваются ли величинынесовместимых типов?2. Сравниваются ли величиныразличных типов?3. Корректны ли отношения сравнения?4. Корректны ли булевские выражения?5.

Объединяются ли сравнения ибулевские выражения?6. Сравниваются ли дробные величины,представленные в двоичной форме?7. Понятен ли порядок следованияоператоров?8. Понятна ли процедура разборакомпилятором булевских выражений?Рис. 6.3 — Сводный список вопросов для выявления ошибокпри инспекции (часть 1)115Передача управления1. Может ли значение индекса впереключателе превысить числопереходов?2. Будет ли завершен каждый цикл?3. Будет ли завершена программа?4. Существует ли какой-нибудь цикл,который не выполняется из-за входныхусловий?5. Корректны ли возможныепогружения в цикл?6. Есть ли ошибки отклонения числаитераций от нормы?7.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6451
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее