ОСНОВЫ ТЕХНОЛОГИИ РАЗРАБОТКИ ПРОГРАММ
Разработка программ - промышленное производство необходима технология разработки программ. Д. Кнут «Искусство программирования для ЭВМ»
Надежность (отсутствие некомментируемых отказов) Наличие «дружественного интерфейса» Простота анализа и изменения программы Документированность Соответствие постановке задачи Эффективность Требования к программам как к промышленному изделию - критерии качества программ !
Надежность Наличие «дружественного интерфейса» Простота анализа и изменения программы Документированность Соответствие постановке задачи КРИТЕРИИ КАЧЕСТВА ПРОГРАММ Удобство использования и сопровождения
КРИТЕРИИ КАЧЕСТВА ПРОГРАММ Структурная форма записи Простота анализа и изменения программы Модульность Наглядность написания Использование базовых алгоритмических структур Использование подпрограмм if (F(B)*F(x)
КРИТЕРИИ КАЧЕСТВА ПРОГРАММ Ресурсы: объемы памяти различных уровней, время работы устройств Эффективность программы Минимальное время вычислений при ограниченных ресурсах Минимальный объем памяти при ограниченном времени вычислений
Технологические принципы разработки программ Процесс проектирования - последовательность этапов разработки. Структурное программирование. Основная идея: сначала обдумай задачу, алгоритм, тесты, а потом занимайся кодированием программы на алгоритмическом языке!
Этапы разработки программы Анализ задачи25% Разработка алгоритмов25% Кодирование алгоритма10% Отладка и тестирование программы 20% Оформление документов10% Примерная трудоемкость
Этапы разработки программы Этап 1 Анализ задачи Разработка внешней спецификации задачи Подготовка функциональных тестов
Внешняя спецификация задачи 1. Название и условие задачи 2. Входные данные: состав (имя, смысл, тип, структура); диапазон; точность; точность; объем; форма записи - форма ввода (входная форма) 3. Выходные данные: состав (имя, смысл, тип, структура); диапазон; точность; точность; объем; форма вывода (выходная форма) 4. Метод решения (название или описание) или (и) 4а. Связь входных и выходных данных (возможно, формулы) 5. Аномалии: аномальные ситуации и реакции на них 6. Функциональные тесты
Правила записи спецификаций Текст выходной формы заключается в фигуру (образ экрана, листа бумаги принтера и др.) Текст входной формы и реакции на аномалию заключается в фигуру
Правила записи спецификаций - правила структурирования текстов Последовательные составляющие или Альтернативные составляющие или Повторяемые составляющие... или... возможно любое количество составляющих данного вида
Правила записи спецификаций - правила структурирования текстов Возможная (необязательная) составляющая [текст] Ограниченное повторение текст... b c не менее b раз и не более с раз ровно a раз Возможное повторение [текст...] возможно включение или отсутствие любого количества составляющих данного типа текст... a
Правила записи спецификаций С значения переменной С Ссимвол С При составлении текстов входной и выходной форм следует учитывать размеры носителя информации (экрана, листа бумаги принтера и т. д.) и набор допустимых символов используются также для обозначения раскрываемой далее абстракции
Правила записи спецификаций Пример. Задача вычисления суммы на счете клиента в банке на конец каждого месяца. Форма вывода n
Аномалии недопустимые значения исходных данных выявляемые при вычислениях Обнаруживаемые операционной системой или средой программирования выявляемые проектируемой программой Аномалии деление на ноль переполнение исчезновение порядка недопустимые значения параметров подпрограмм не соответствующие содержанию задачи не удовлетворяющие формальным правилам ввода
Обработка аномалий Есть аномалия? реакция на аномалию +
Тестирование - первые сведения Тест - совокупность специально подобранных исходных данных и соответствующих выходных данных, используемых для проверки правильности работы программы. Тестирование - испытание программы на множестве тестов. Подготовка тестирования: подготовка тестов; подготовка программы к тестированию (вставка дополнительных операторов вывода, …)
ТЕСТЫ Функциональные (создаются на этапе анализа задачи) Структурные (создаются на этапе разработки алгоритма )
Функциональные тесты программа входные данные выходные данные При построении функциональных тестов: Программа рассматривается как «черный ящик», ее внутренняя структура не учитываются. Используются методы решения задачи, отличные от положенных в основу алгоритма. Цель функционального тестирования - найти расхождение между программой и ее внешней спецификацией.
Функциональное тестирование Общие правила: 1. Просматриваются разделы внешней спецификации «Исходные данные», «Аномалии»; определяется область допустимых значений исходных данных; тесты строятся для допустимых, недопустимых и граничных значений исходных данных. 2. По разделу «выходные данные» строятся их функциональные границы; тесты строятся с учетом этих границ.
Структурное тестирование Структурное тестирование: Учитывает логику (структуру) программы Предусматривает контроль правильности вычислений с помощью ручного просчета (или просчета с помощью других программ) Предполагает пошаговое выполнение программы (трассировку) с контролем промежуточных результатов Каждый структурный тест проверяет правильность выполнения вычислений по одному из возможных путей реализации алгоритма - количество структурных тестов определяется количеством таких путей.
Способы тестирования сложных программ Нисходящее тестирование Восходящее тестирование Программа заглушка 1 заглушка 2... Заглушка - подпрограмма, моделирующая работу еще не разработанного модуля. Драйвер подпрограмма 1 подпрограмма 2... Драйвер - специальная несложная программа для проверки работы подпрограмм
ОТЛАДКА ПРОГРАММ Отладка - процесс поиска, локализации и устранения ошибок в программе с целью получения правильной программы. Этапы отладки: 1. Устранение синтаксических ошибок 2. Устранение ошибок при редактировании связей и загрузке 3. Ликвидация ошибок при выполнении программы, обнаруживаемых инструментальной средой программирования или операционной системой 4. Тестирование программы - Сколько тестов? 5. Верификация - доказательство корректности программы посредством логического анализа - необязательный этап
Документация на разработанную программу 1. Внешняя спецификация задачи 2. Алгоритм и описание структур данных 3. Текст программы на языке программирования - структурный, с комментариями 4. Тесты и результаты их работы 5. Доказательство корректности (необязательно) 6. Технические характеристики программы 7. Руководство пользователю 8. Сведения о разработчике