Технология программирования. 2
Содержание:
1. Задание к работе
Разработать
программу совместной обработки
файлов типа F1 и F2 для формирования
выходного документа типа F3.
ИСХОДНЫЕ ДАННЫЕ И ОСОБЕННОСТИ АЛГОРИТМА
Текстовые
файлы на МД, структура записей
которых приведена ниже:
Таблица 1 - Структура файла F1
| № предмета | Наименование предмета |
Таблица 2 - Структура файла F2
| № группы | Фамилия, имя, отчество | № предмета | Оценка |
Результат
обработки в виде выходного документа,
представленного в таблице F3:
Таблица 3 - Структура файла F3
| № группы | Наименование предмета | ФИО студента | Оценка |
Выходной
документ представляет собой ведомость
успеваемости студентов в академических
группах по предметам. Рекомендуется
сгруппировать подряд все записи, относящиеся
к одной академической группе, а в каждой
группе – по конкретному предмету. Для
демонстрации работы программы необходимо
иметь не менее 2-ух групп и не менее 2-ух
предметов в каждой группе. Рекомендуется
имена файлов типа F1 и F2 запрашивать с
клавиатуры дисплея.
2. Ограничения на входные и выходные данные
2.1 Ограничения, накладываемые на входные данные, считываемые из первого файла:
а) Номер предмета должен быть числом, большим нуля.
б) Наименование предмета должно состоять из допустимых символов (а-я, А-Я,_,-).
в) Номера предметов не должны повторяться.
г) Наименования предметов не должны повторяться.
д) В каждой записи должно быть два поля.
2.2 Ограничения, накладываемые на входные данные, считываемые из второго файла:
а) Номер группы должен быть числом, большим нуля.
б) ФИО студента должно состоять из допустимых символов (а-я, А-Я,_).
в) Номер предмета должен быть числом, большим нуля.
г) Оценка должна быть допустимым символом (2,3,4,5).
д) Для одной группы ФИО студента и номер предмета не должны повторяться.
е) Одинаковым ФИО студентов должны соответствовать одинаковые № групп.
ж) В каждой записи должно быть четыре поля.
2.3 Другие ограничения:
а) Производится проверка правильности открытия файлов F1 и F2, если файлы не существуют, то по выбору пользователя производится либо повторный ввод, либо выход из программы.
б) Номеру предмета
из файла F2 должно соответствовать наименование
предмета из файла F1.
3. Структура целей разрабатываемой программы
Составлению внешних спецификаций разрабатываемого ПО предшествует анализ целей будущего продукта, который в методиках разработки ПО называется структурным анализом и методической базой которого является нисходящая стратегия.
Структурным анализом принято называть такое исследование системы, которое начинается с ее общего обзора и затем детализируется, приобретая иерархическую структуру со все большим числом уровней. Для таких методов характерно разбиение на уровни абстракции с ограничением числа элементов на каждом из уровней (обычно от 3 до 6-7). В технологии программирования эта идея была сформулирована как один из принципов структурного программирования: разработку программ рекомендуется вести сверху вниз или, иначе, по нисходящей стратегии.
Суть нисходящей стратегии в том, что цели разрабатываемого ПП структурируются по схеме: цели - подцели 1-го уровня - ... - подцели i-го уровня - ... - подцели n-уровня - функции до такой степени детализации, когда реализация подцелей последнего уровня (функций) становится очевидной.
4. Таблицы решений
Методика построения ТР заключается в следующем:
а) определить все условия и действия в спецификации;
б) вписать действия и условия в таблицу;
в) в нумерованных столбцах отметить все возможные комбинации условий и выполняемых при выполнении условий действий;
г) при необходимости редуцировать таблицу (если есть 2 столбца, у которых перечень действий совпадает и которые отличаются только результатами условий ‘Д’ и ‘Н’ в одной строке, то такие столбцы могут быть слиты в один).
4.1 ТР для функции “Проверка на корректность файла F1”
| Условия | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Удалось открыть файл? | Н | Н | Д | Д | Д | Д | Д | Д | Д | Д |
| Нажата клавиша Esc? | Н | Д | - | - | - | - | - | - | - | - |
| Достигнут конец файла? | - | - | Н | Н | Н | Н | Д | Д | Д | Д |
| В записи два поля? | - | - | Н | Д | Д | Д | - | - | - | - |
| Номер предмета - число большее нуля? | - | - | - | Н | - | Д | - | - | - | - |
| Наименование предмета состоит из допустимых символов? | - | - | - | - | Н | - | - | - | - | - |
| Проверены все записи? | - | - | - | - | - | - | Н | Н | Д | Д |
| Номера предметов равны | - | - | - | - | - | - | Д | - | - | - |
| Наименования предметов равны? | - | - | - | - | - | - | - | Д | - | - |
| Флаг присутствия ошибок равен true? | - | - | - | - | - | - | - | - | Н | Д |
| Действия | ||||||||||
| Вывод сообщения: “ Файл с именем <имя файла> не найден. Для повторного ввода нажмите любую клавишу. Для выхода нажмите Esc” | 1 | 1 | ||||||||
| Вывод сообщения “В записи <запись> не хватает либо присутствуют лишние поля. Запись не будет учитываться при формировании выходного файла” | 1 | |||||||||
| Вывод сообщения “Номер предмета <номер> не является числом большим нуля. Запись не будет учитываться при формировании выходного файла” | 1 | |||||||||
| Вывод сообщения “Наименование предмета <наименование> содержит недопустимые символы” | 1 | |||||||||
| Вывод сообщения “В записях присутствуют одинаковые номера предметов <номер>” | 1 | |||||||||
| Вывод сообщения “В записях присутствуют одинаковые наименования предметов <наименование>” | 1 | |||||||||
| Установить флаг присутствия ошибок true | 2 | 2 | 2 | 2 | 2 | |||||
| Добавить данные в список | 1 | |||||||||
| Продолжить обработку | 2 | 3 | 3 | 3 | 2 | 3 | 3 | |||
| Вывод сообщения “В связи с наличием ошибок возможна не корректность выходного файла” | 1 | |||||||||
| Завершить обработку | 1 | 2 | ||||||||
| Завершить программу | 2 |
4.2 ТР для функции “Проверка на корректность файла F2”
| Условия | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| Удалось открыть файл? | Н | Н | Д | Д | Д | Д | Д | Д | Д | Д | Д | Д |
| Нажата клавиша Esc? | Н | Д | - | - | - | - | - | - | - | - | - | - |
| Достигнут конец файла? | - | - | Н | Н | Н | Н | Н | Н | Д | Д | Д | Д |
| В записи четыре поля? | - | - | Н | Д | Д | Д | Д | Д | - | - | - | - |
| Номер группы - число большее нуля? | - | - | - | Н | - | - | - | Д | - | - | - | - |
| ФИО студента состоит из допустимых символов? | - | - | - | - | Н | - | - | - | - | - | - | - |
| Номер предмета – число большее нуля? | - | - | - | - | - | Н | - | Д | - | - | - | - |
| Оценка – допустимый символ? | - | - | - | - | - | - | Н | - | - | - | - | - |
| Проверены все комбинации записей? | - | - | - | - | - | - | - | - | Н | Н | Д | Д |
| Номера групп равны? | - | - | - | - | - | - | - | - | Н | Д | - | - |
| ФИО студентов равны? | - | - | - | - | - | - | - | - | Д | Д | - | - |
| Номера предметов равны? | - | - | - | - | - | - | - | - | - | Д | - | - |
| Флаг присутствия ошибок равен true? | - | - | - | - | - | - | - | - | - | - | Н | Д |
| Действия | ||||||||||||
| Вывод сообщения: “ Файл с именем <имя файла> не найден. Для повторного ввода нажмите любую клавишу. Для выхода нажмите Esc” | 1 | 1 | ||||||||||
| Вывод сообщения “В записи <запись> не хватает либо присутствуют лишние поля. Запись не будет учитываться при формировании выходного файла” | 1 | |||||||||||
| Вывод сообщения “Номер группы <номер> не является числом большим нуля. Запись не будет учитываться при формировании выходного файла” | 1 | |||||||||||
| Вывод сообщения “ФИО студента <ФИО> содержит недопустимые символы” | 1 | |||||||||||
| Вывод сообщения “Номер предмета <номер> не является числом большим нуля. Запись не будет учитываться при формировании выходного файла” | 1 | |||||||||||
| Вывод сообщения “Оценка <оценка> является недопустимым символом” | 1 | |||||||||||
| Вывод сообщения “Одинаковым ФИО студентов <ФИО> соответствуют разные номера групп” | 1 | |||||||||||
| Вывод сообщения “Для группы <номер> повторяются ФИО студента <ФИО> и номер предмета <номер>” | 1 | |||||||||||
| Установить флаг присутствия ошибок true | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |||||
| Добавить данные в список | 1 | |||||||||||
| Продолжить обработку | 2 | 3 | 3 | 3 | 3 | 3 | 2 | 3 | 3 | |||
| Вывод сообщения “В связи с наличием ошибок возможна не корректность выходного файла” | 1 | |||||||||||
| Завершить обработку | 1 | 2 | ||||||||||
| Завершить программу | 2 |
4.3 ТР для функции “Формирование выходного файла”
| Условия | 1 | 2 | 3 | 3 | 4 |
| Достигнут конец списка 2? | Н | Н | Н | Н | Д |
| Закончена обработка данной группы? | Н | Н | Н | Д | - |
| Закончена обработка данного предмета? | Н | Н | Д | - | - |
| В списке 1 найдено наименование предмета соответствующее данному номеру? | Н | Д | Д | Д | - |
| Действия | |||||
| Вывести в выходной файл ФИО студента и оценку | 1 | ||||
| Вывести сообщение "Не найдено наименование предмета соответствующее номеру <номер>" | 1 | ||||
| Вывести в выходной файл номер группы | 1 | ||||
| Вывести в выходной файл наименование предмета | 1 | ||||
| Продолжить обработку | 2 | 2 | 2 | 2 | |
| Завершить обработку | 1 |
5. Схема работы системы
5.1 Схема основной функции
5.2 Схема функции “Проверка на корректность файла F1”
5.3 Схема функции “Проверка на корректность файла F2”
5.4 Схема функции “Формирование выходного файла”
6. Тестирование программы
Тестирование программного обеспечения охватывает целый ряд видов деятельности, аналогичных последовательности процессов разработки программного обеспечения. В него входят:
а) постановка задачи для теста,
б) проектирование теста,
в) написание тестов,
г) тестирование тестов,
д) выполнение тестов,
е) изучение результатов тестирования.
Решающую роль играет проектирование тестов. Возможен целый ряд подходов к стратегии проектирования тестов. Чтобы ориентироваться в них, рассмотрим два крайних подхода. Первый состоит в том, что тесты проектируются на основе внешних спецификаций программ и модулей либо спецификаций сопряжения программы или модуля. Программа при этом рассматривается как черный ящик (стратегия ‘черного ящика’). Существо такого подхода - проверить, соответствует ли программа внешним спецификациям. При этом логика модуля совершенно не принимается во внимание.
Второй
подход основан на анализе логики
программы (стратегия ‘белого ящика’).
Суть подхода - в проверке каждого пути,
каждой ветви алгоритма. При этом внешняя
спецификация во внимание не принимается.
Метод тестирования таблиц решений
Тестирование
ТР заключается в том, что проектируется
такое количество тестов, которое
позволяет покрыть все
Метод позволяет эффективно проверить соответствие разработанной программы ее внешним спецификациям, но не всегда позволяет выявить случаи, когда программа делает то, что спецификацией не предусмотрено. Кроме того, спецификация может содержать ошибки, которые при таком тестировании выявлены не будут, особенно если результаты тестирования являются правдоподобными. Предварительное построение сначала функциональных диаграмм, а затем ТР позволяет осуществлять логический контроль спецификации сначала на уровне функциональных диаграмм, а затем уже на уровне ТР, что значительно снижает вероятность ошибок в спецификации.
6.1 Тестирование функции “Проверка на корректность файла F1”
Тест 1
Цель теста: проверить функционирование программы при наличии записи с количеством полей не равным двум.
Содержание
теста: файл 11.txt
| № предмета | Наименование предмета |
| 12 | Физика |
| Программирование | |
| 30 | Электроника |
| 19 | История |
Ожидаемый результат: сообщение "В записи Программирование не хватает либо присутствуют лишние поля. Запись не будет учитываться при формировании выходного файла".
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 2
Цель теста: проверить функционирование программы при номере предмета не являющимся числом большим нуля.
Содержание
теста: файл 12.txt
| № предмета | Наименование предмета |
| 12 | Физика |
| 72 | Программирование |
| g0 | Электроника |
| 19 | История |
Ожидаемый результат: сообщение "Номер предмета g0 не является числом большим нуля. Запись не будет учитываться при формировании выходного файла".
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 3
Цель теста: проверить функционирование программы при присутствии недопустимых символов в поле “Наименование предмета”.
Содержание
теста: файл 13.txt
| № предмета | Наименование предмета |
| 12 | Физика |
| 72 | П???раммирование |
| 30 | Электроника |
| 19 | История |
Ожидаемый результат: сообщение "Наименование предмета П???раммирование содержит недопустимые символы".
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 4
Цель теста: проверить функционирование программы при присутствии повторяющихся номерах предметов.
Содержание
теста: файл 14.txt
| № предмета | Наименование предмета |
| 30 | Физика |
| 72 | Программирование |
| 30 | Электроника |
| 19 | История |
Ожидаемый результат: сообщение "В записях присутствуют одинаковые номера предметов: 30".
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 5
Цель теста: проверить функционирование программы при присутствии повторяющихся наименованиях предметов.
Содержание
теста: файл 15.txt
| № предмета | Наименование предмета |
| 12 | Физика |
| 72 | Программирование |
| 30 | История |
| 19 | История |
Ожидаемый результат: сообщение "В записях присутствуют одинаковые наименования предметов: История".
Фактический результат: совпадает с ожидаемым.
Результат
тестирования: неуспешный.
6.2 Тестирование функции “Проверка на корректность файла F2”
Тест 1
Цель теста: проверить функционирование программы при наличии записи с количеством полей не равным четырем.
Содержание
теста: 21.txt
| № группы | Фамилия, имя, отчество | № предмета | Оценка |
| 224 | Гаскаров Рамиль Вильевич | 12 | 4 |
| 224 | Иванова Алла Сергеевна | 12 | 3 |
| 224 | Лысков Дмитрий Иванович | 12 | 4 |
| 224 | Гаскаров Рамиль Вильевич | 5 | |
| 224 | Иванова Алла Сергеевна | 30 | 4 |
| 224 | Лысков Дмитрий Иванович | 30 | 4 |
| 230 | Вахитов Айнур Бакеевич | 72 | 5 |
| 230 | Ильясова Альбина Вильевна | 72 | 4 |
| 230 | Вахитов Айнур Бакеевич | 12 | 5 |
| 230 | Ильясова Альбина Вильевна | 12 | 3 |
Ожидаемый результат: сообщение "В записи 224 Гаскаров Рамиль Вильевич 5 не хватает либо присутствуют лишние поля. Запись не будет учитываться при формировании выходного файла".
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 2
Цель теста: проверить функционирование программы при номере группы не являющимся числом большим нуля.
Содержание
теста: файл 22.txt
| № группы | Фамилия, имя, отчество | № предмета | Оценка |
| 224 | Гаскаров Рамиль Вильевич | 12 | 4 |
| 224 | Иванова Алла Сергеевна | 12 | 3 |
| 224 | Лысков Дмитрий Иванович | 12 | 4 |
| 224 | Гаскаров Рамиль Вильевич | 30 | 5 |
| 224 | Иванова Алла Сергеевна | 30 | 4 |
| 224 | Лысков Дмитрий Иванович | 30 | 4 |
| 2?0 | Вахитов Айнур Бакеевич | 72 | 5 |
| 230 | Ильясова Альбина Вильевна | 72 | 4 |
| 230 | Вахитов Айнур Бакеевич | 12 | 5 |
| 230 | Ильясова Альбина Вильевна | 12 | 3 |
Ожидаемый результат: сообщение "Номер группы 2?0 не является числом большим нуля. Запись не будет учитываться при формировании выходного файла".