Обзор основных моделей жизненного цикла, страница 6

2.4.  Для всех ли обращений с помощью указателей или переменных-ссылок память, к которой производится обращение, распределена (есть ли "подвешенные" обраще­ния)?

2.5.  Корректны ли атрибуты при всех псевдонимах? Если одна и та же область памяти имеет несколько псевдонимов (имен) с разными атрибутами, то имеют ли значения данных в этой области корректные атрибуты при обращении по одному из этих псев­донимов?

2.6.  Соответствуют ли атрибуты записи и структуры?

2.7.  Отличаются ли типы или атрибуты переменных величин от тех, которые предпола­гались компилятором? Это может произойти в том случае, когда программа считыва­ет записи из памяти и обращается к ним как к структурам, но физическое представ­ление записей отлично от описания структуры.

2.8.  Вычислимы ли адреса битовых строк? Передаются ли битовые строки в качестве аргументов?

2.9.  Если к структуре данных обращаются из нескольких процедур или подпрограмм, то определена ли эта структура одинаково в каждой процедуре?

2.10. Не превышены ли границы строки при индексации в ней?

2.11.Существуют ли какие-нибудь другие ошибки в операциях с индексацией или при обращении к массиву по индексу?

3.   Корректность описания данных

3.1.  Все ли переменные описаны явно?

3.2.  Если начальные значения присваиваются переменным в операторах описания, то правильно ли инициализируются эти значения?

3.3.  Правильно ли для каждой переменной определены длина, тип и класс памяти?

3.4.  Согласуется ли инициализация переменной с ее типом памяти?

3.5.  Есть ли переменные со сходными именами?

4.   Корректность вычислений

4.1. Есть ли вычисления, использующие переменные недопустимых типов?

4.2.  Есть ли вычисления, использующие данные разного типа (смешанные вычисле­ния)? Возможно ли усечение дробной части?

4.3.  Существуют ли вычисления, использующие переменные одного типа, но разной
длины?

4.4.  Не меньше ли длина результата, чем длина вычисляемого значения?

4.5.  Возможно ли переполнение или потеря промежуточного результата во время вы­числения?

4.6.  Возможно ли, чтобы делитель в операторе был равен нулю?

4.7.  Возможет ли выход значения переменной за пределы ее диапазона ?

4.8.  Правильно ли используется целочисленная арифметика, особенно деление.

5.   Корректность сравнения данных

5.1.   Сравниваются ли величины несовместимых типов (например, строка символов с адресом)?

5.2.  Сравниваются ли величины различных типов?

5.3.  Корректны ли отношения сравнения?

5.4.  Корректны ли булевские выражения?

5.5.  Объединяются ли сравнения и булевские выражения?

5.6.  Сравниваются ли дробные величины, представленные в двоичной форме?

5.7.  Понятен ли порядок следования операторов?

6.   Корректность передачи управления

6.1.  Может ли значение индекса в переключателе превысить число переходов?

6.2.  Будет ли завершен каждый цикл?

6.3.  Будет ли завершена программа?

6.4.  Возможно ли, что из-за входных условий цикл никогда не сможет выполняться?

6.5.  Корректны ли возможные погружения в цикл?

6.6.  Есть ли ошибки отклонения числа итераций от нормы?

6.7.  Соответствуют ли друг другу операторы DO и END в группах DO-END?

7.   Корректность интерфейса между модулями

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

7.2.  Если модуль имеет несколько точек входа, передается ли параметр всегда вне зави­симости от точки входа?

7.3.  Не изменяет ли подпрограмма параметр, который должен использоваться только
как входная величина?

7.4.  Все ли глобальные переменные используются правильно?

7.5.  Передаются ли в качестве аргументов константы?

8.   Корректность ввода-вывода

8.1.  Нет ли ошибок в описаниях атрибутов файлов и операторах ввода-вывода?

8.2.  Соответствует ли размер буфера размеру записи?

8.3.  Открыты ли файлы перед их использованием?

8.4.  Обнаруживаются ли признаки конца файла?

8.5.  Обнаруживаются ли ошибки ввода-вывода?

8.6.  Существуют ли текстовые ошибки в выходной информации?


Приложение 3. ИНСТРУМЕНТЫ ТЕСТИРОВАНИЯ

В этом приложении приведен далеко не полный список существующих зару­бежных инструментов тестирования1.

1 К сожалению, авторы не располагают сведениями о подобных отечественных инст­рументах.












Приложение 4. ВОПРОСЫ ДЛЯ ОЦЕНКИ РИСКА ПРОЕКТА

Вопросы для анализа и оценки риска проекта объединены в группы в соот­ветствии с трехуровневой таксономией риска "класс-элемент-атрибут" (таблица 4.1).

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

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

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

Возможные варианты ответа на вопрос таковы: "Да", "Нет", "Частично", "Не знаю ", "Не применим ".

Ответ "Да" свидетельствует об отсутствии риска, суть которого сформули­рована в вопросе.

Ответ "Нет" или "Не знаю" свидетельствует о наличии риска.

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