Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой - Специфицирование и тестирование программ1.doc
Скачиваний:
80
Добавлен:
02.05.2014
Размер:
428.03 Кб
Скачать

Таблицы решений

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

ТР состоит из двух частей, верхняя часть таблицы используется для определения условий. Обычно условие является ЕСЛИ - частью оператора ЕСЛИ-ТО и требует ответа "да" или "нет". Нижняя часть ТР используется для определения действий, т.е. ТО - части оператора ЕСЛИ-ТО. Левая часть ТР содержит собственно описание условия 1 и действий, а в правой части перечисляются все возможные комбинации условий и, соответственно, указывается, какие конкретно действия, и в какой последовательности выполняются, если определенная комбинация имеет место.

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

Методика построения ТР:

  1. определить все условия и действия в спецификациях;

  2. вписать действия и условия в таблицу;

  3. в нумерованных столбцах отметить все возможные комбинации условий и осуществляемые при выполнении условий действий;

  4. при необходимости редуцировать таблицу (если имеются столбцы, у которых перечень действий совпадает и, которые отличаются только результатами условий "д" и "н" в одной строке, то такие столбцы можно будет объединить в один);

Таблица решений для подпрограммы «Чтение и проверка на корректность файла F1»

Условия

1

2

3

4

5

6

7

8

9

10

1) Файл существует и может быть открыт для чтения?

Н

Д

Д

Д

Д

Д

Д

Д

Д

Д

2) Считаны все записи?

-

Н

Н

Н

Н

Н

Н

Д

Д

Д

3) Значение поля «регистрационный номер» - целое неотрицательное число?

-

-

Н

Д

Д

Д

Д

-

-

-

4) Поле «Класс средств связи и вычислительной техники» не содержит неразрешенные символы?

-

-

-

Н

Д

Д

Д

-

-

-

5) Поле «Название средства связи и вычислительной техники» не содержит неразрешенные символы?

-

-

-

-

Н

Д

Д

-

-

-

6) Поле «Цена» содержит неотрицательное число?

-

-

-

-

-

Н

Д

-

-

-

7) Фатальная ошибка?

-

-

Д

Д

Д

Д

Н

-

-

-

8) Количество записей больше нуля?

-

-

-

-

-

-

-

Н

Д

Д

9) Значение поля «регистрационный номер» уникально?

-

-

-

-

-

-

-

-

Н

Д

Действия

Вывод сообщениея «Невозможно открыть файл F1»

1

Открыть файл F1 для чтения и установить позицию чтения на 1 байт

1

Начать обработку записей

2

Создание структуры PriceItem

1

1

1

1

1

Чтение полей структуры PriceItem

2

2

2

2

2

Вывод сообщения «Ошибка чтения записи»

3

3

3

3

Добавление структуры PriceItemк спискуPriceItems

3

Продолжить обработку – перейти к следующей записи

4

Закрыть файл F1

1

1

1

Вывод сообщениея «В таблице нет записей»

2

Проверить значения поля «регистрационный номер» на уникальность

2

2

Вывод сообщения «поле регистрационный номер» содержит неуникальные значения

3

Установить флаг «фатальная ошибка»

2

4

4

4

4

3

4

Завершить обработку

3

5

5

5

5

4

5

3

Таблица решений для подпрограммы «Чтение и проверка на корректность файла F2»

Условия

1

2

3

4

5

6

7

8

1) Файл существует и может быть открыт для чтения?

Н

Д

Д

Д

Д

Д

Д

Д

2) Считаны все записи?

-

Н

Н

Н

Н

Н

Д

Д

3) Значение поля «регистрационный номер» - целое неотрицательное число?

-

-

Н

Д

Д

Д

-

-

4) Поле «Название отдела» не содержит неразрешенные символы?

-

-

-

Н

Д

Д

-

-

5) Поле «Материально-ответственное лицо» не содержит неразрешенные символы?

-

-

-

-

Н

Д

-

-

6) Фатальная ошибка?

-

-

Д

Д

Д

Н

-

-

7) Количество записей больше нуля?

-

-

-

-

-

-

Н

Д

Действия

Вывод сообщениея «Невозможно открыть файл F2»

1

Открыть файл F2 для чтения и установить позицию чтения на 1 байт

1

Начать обработку записей

2

Создание структуры PriceItem

1

1

1

1

Чтение полей структуры PriceItem

2

2

2

2

Вывод сообщения «Ошибка чтения записи»

3

3

3

Добавление структуры PriceItemк спискуPriceItems

3

Продолжить обработку – перейти к следующей записи

4

Закрыть файл F2

1

1

Вывод сообщениея «В таблице нет записей»

2

Установить флаг «фатальная ошибка»

2

4

4

4

3

Завершить обработку

3

5

5

5

4

2

Таблица решений для подпрограммы «Создание записей таблицыF3»

Условия

1

2

3

4

Есть ли еще элементы в списке PriceItem?

Н

Д

Д

Д

Есть ли еще элементы в списке Departments?

-

Н

Д

Д

Регистрационные номера в структурах PriceItem и Departmentсовпадают (PriceItem.Id = Department.Id)?

-

-

Н

Д

Действия

Начать обработку списка PriceItems

1

PriceItem –очередной элемент списка

1

Начать обработку списка Departments

2

Department –очередной элемент списка

1

1

Создание структуры ReportItem

2

Заполнение полей структуры ReportItem

3

Добавление структуры ReportItemк спискуReportItems

4

Перейти к следующему элементу списка Departments

2

Завершить обработку списка Departments

3

Вывод сообщения «Ошибка связывания таблиц»

4

Перейти к следующему элементу списка PriceItems

5

Завершить обработку списка PriceItems

2

Установить флаг «фатальная ошибка»

5

Завершить обработку

3

6

Таблица решений для подпрограммы «Формирование выходного файлаF3»

Условия

1

2

3

4

5

Есть ли еще элементы в списке ReportItems?

Н

Д

Д

Д

Д

Текущий элемент первый?

-

Н

Д

Н

Д

Достигнута последняя запись для данного класса (ReportItem.ClassName!=class_name)?

-

Д

Д

Н

Н

Действия

Открыть файл F3 для записи

и установить позицию записи на 1 байт

1

Обнулить подитог по классу (total_by_class = 0.0)

2

4

5

Обнулить итог по таблице (total_by_table= 0.0)

3

Начать обработку списка ReportItems

4

ReportItem –очередной элемент списка

1

1

1

1

Переход к обработке очередного класса (class_name=ReportItem.ClassName)

2

2

Вывод подитога по классу (total_by_class)

2

3

Пересчет итога по таблице

(total_by_table += total_by_class)

3

4

Пересчет подитога по классу

(total_by_class += ReportItem.Price)

2

3

5

6

Вывод полей записиReportItem

3

4

6

7

Перейти к следующему элементу списка PriceItems

4

5

7

8

Завершить обработку списка ReportItems

5

Вывод итога по таблице (total_by_table)

6

Закрыть файл F3

7

Завершить обработку

8