- •Курсовая работа
- •Содержание
- •Задание на курсовую работу
- •Структура целей разрабатываемой программы
- •Ограничения, учитываемые в программе обработки
- •Внешние спецификации функций разрабатываемой программы.
- •Таблицы решений
- •Тестирование программы
- •Тестирование подпрограммы «Чтение и проверка на корректность файла f1»
- •Тестирование подпрограммы «Чтение и проверка на корректность файла f2»
- •Тестирование подпрограммы «Создание записей таблицыF3»
Таблицы решений
Проектирование спецификаций процессов с помощью таблиц решений заключается в задании матрицы, отображающей множество входных условий и множество решений.
ТР состоит из двух частей, верхняя часть таблицы используется для определения условий. Обычно условие является ЕСЛИ - частью оператора ЕСЛИ-ТО и требует ответа "да" или "нет". Нижняя часть ТР используется для определения действий, т.е. ТО - части оператора ЕСЛИ-ТО. Левая часть ТР содержит собственно описание условия 1 и действий, а в правой части перечисляются все возможные комбинации условий и, соответственно, указывается, какие конкретно действия, и в какой последовательности выполняются, если определенная комбинация имеет место.
Таблица решений - это такая внешняя спецификация программного обеспечения, в которой отражаются комбинации условий, выполняемых для входных данных, и соответствующие этим комбинациям действия по преобразованию информации.
Методика построения ТР:
определить все условия и действия в спецификациях;
вписать действия и условия в таблицу;
в нумерованных столбцах отметить все возможные комбинации условий и осуществляемые при выполнении условий действий;
при необходимости редуцировать таблицу (если имеются столбцы, у которых перечень действий совпадает и, которые отличаются только результатами условий "д" и "н" в одной строке, то такие столбцы можно будет объединить в один);
Таблица решений для подпрограммы «Чтение и проверка на корректность файла 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 |
|
|
|
|