- •Общая характеристика технологии программных средств.
- •Принципиальная схема разработки программных средств. (Технология, процесс создания).
- •Способы описания алгоритмов.
- •Описание алгоритма с помощью таблиц решения.
- •Технология системного проектирования программных средств. Принципиальная схема разработки.
- •Современные методы и средства разработки прикладных программных средств.
- •Характеристики качества программного обеспечения.
- •Языки программирования.
- •Надёжность программного обеспечения.
- •Показатели надёжности.
- •Факторы, определяющие надёжность по.
- •Стандартизация. Дисциплина и творчество программирования.
- •Виды программ и программных документов.
- •Виды программных документов.
- •Эксплуатационные документы.
- •Классификация документов.
- •Работы, выполняемые на стадии «Эскизный проект».
- •Структурное программирование.
- •Терминология и обозначения.
- •Очевидно, что g и h являются простыми программами, иначе f была бы не простой.
- •Число управляющих линий в блоке h удовлетворяет соотношению:
- •Графическая иерархическая документация (гид).
- •Простейшие пути повышения качества программ.
- •Классификация ошибок.
- •Сквозной структурный контроль.
- •Стиль программирования и качества программ.
- •Case – технологии.
- •Моделирование данных.
- •Что дает применение case-средств?
- •Средства реализации case-технологий.
- •Общая характеристика case-средства
- •Особенности рабочего интерфейса
- •Начало работы с проектом в среде
- •Разработка диаграммы вариантов использования в среде Rational Rose.
- •Разработка диаграммы классов в среде
- •Диаграмма классов
- •Разработка диаграммы состояний в среде Rational Rose.
- •Разработка диаграммы последовательности в среде Rational Rose.
- •Разработка диаграммы кооперации в среде Rational Rose.
- •Разработка диаграммы компонентов в среде Rational Rose.
- •Разработка диаграммы развёртывания в среде Rational Rose.
- •Практические примеры диаграмм.
- •Актеры.
- •Диаграмма классов (основы)
- •Ассоциации
- •Заказ от одного клиента
- •Полезные советы по использованию диаграмм классов
- •Диаграмма взаимодействия
- •Диаграмма кооперации
- •Диаграмма кооперации
- •Диаграмма пакетов
- •Диаграмма состояний
- •Верификация программ.
- •Восходящее тестирование, нисходящее тестирование.
- •Методы тестирования компонентов.
- •Структура коллектива программистов.
- •Общая структура коллектива, работающего над крупным проектом.
- •Трудовые затраты по видам работ (человеко/месяц).
Восходящее тестирование, нисходящее тестирование.
Одним из наиболее объективных методов оценки качества программ является её испытание.
Испытание программы может проводиться, например, с целью определения в какой мере готовая программа отвечает требованиям, сформулированным в техническом задании.
Так же путем испытания могут быть получены точные оценки таких параметров как:
среднее время решения задачи;
максимальный объем необходимый оперативной памяти;
показатели загрузки внешних устройств необходимых для оценки стоимости решения задачи.
Другой, не менее важной целью проведения испытаний является направленный поиск ошибок.
С какой бы целью не проводилось бы испытание программы, одним из важнейших вопросов является подбор входных данных программы. Такие, специально подбираемые, с определенными целями исходные данные называются тестами.
Испытание программы тестами – тестирование – начинается уже в процессе её отладки.
Первый тестовый пример предлагается программе сразу после её трансляции. Далее тестирование и отладка тесно переплетаются между собой. Если очередной тест не проходит, т.е. программа выдает результат не соответствующий тестовым данным, то возникает проблема найти и исправить ошибку, а это уже отладка.
С другой стороны, для локализации ошибки необходимо выбрать такие исходные данные, т.е. тестовые примеры, которые бы способствовали наиболее рельефному проявлению обнаруженной, но ещё не локализованной ошибки.
Тестирование – этап процесса создания программы, заключающийся в подборе тестовых примеров и испытания на них программы, с целью обнаружения в ней ошибки.
Отладка – этап процесса создания программы, заключающийся в локализации и исправлении ошибок, обнаруженных в ходе трансляции и тестирования.
Этап тестирования включает три основных элемента:
генерация тестовых примеров контроль процесса тестирования;
анализ выходных и промежуточных результатов программы;
учет вклада каждого тестового примера в процесс тестирования.
Для первого и второго элементов исходными данными является документация программы, на основе которой генерируются тестовые примеры, обеспечивающие режим выполнения программы, определяет степени соответствия полученного результата указанного в примере.
Третий элемент определяется критерием полноты тестирования, который тесно связан с конкретным способом тестирования.
Тестирование ведется на четырех уровнях:
уровень отдельного программного компонента (модуля);
уровень сопряжений, на котором ищутся ошибки межкомпонентного интерфейса;
уровень внешних функций, на котором ищутся расхождения программных функций и внешних спецификаций программ;
комплексное тестирование, испытание программного комплекса на соответствие исходным целям.
Вполне естественно тестирование увязывается с организацией разработки программ. Поэтому, два способа образуют базис, на котором строятся различные методы тестирования.
Восходящее тестирование предполагает, что программа собирается и тестируется снизу вверх. Модули (компоненты самого нижнего уровня) тестируются автономно. Надёжность тестирования этих модулей определяет успех дальнейшего процесса. Далее совершается переход к модулям, обращающимся к уже оттестированным модулям. На этом этапе возникает необходимость проверки интерфейсов.
Для реализации восходящего тестирования необходимо для каждого модуля написать небольшую управляющую подпрограмму – драйвер. В распоряжение драйвера предоставляются значения входных переменных и структуры данных. Драйвер последовательно вызывает тестирующийся модуль, при каждом вызове предлагая ему новый тестовый пример.
Основные недостатки:
серьезные ошибки в спецификациях, алгоритмах и интерфейсах могут проявляться лишь при тестировании комплексов высшего уровня, т.е. на завершающейся стадии.
Необходимость разработки драйверов и тестов для каждого уровня тестирования, что ведет к большому объему дополнительных программ, которые становятся бесполезными при завершении работы над комплексом.
Нисходящее проектирование. Автономно тестируется только головная программа. По завершении тестирования головного комплекса к нему последовательно присоединяются комплексы и компоненты следующего уровня и т.д., до тех пор, пока не будет собрана и испытана вся программа.
Как же тестировать комплексы, в то время как входящие в них компоненты ещё не проверены и возможно ещё не написаны? Для имитации функций ещё не созданных модулей используются заглушки, которые имитируют работу отсутствующего модуля.
Недостатки нисходящего тестирования совпадают с недостатками нисходящего проектирования. Повышаются требования к сложности и качеству заглушек, которые потом ликвидируются.
Преимущества:
Метод позволяет совместить тестирование модуля, тестирование сопряжений и тестирование входящих функций.
Равномерное распределение работы по тестированию в течение всего периода создания комплекса – это позволяет выявить ошибки в головном модуле на ранней стадии разработки.
На практике редко удается использовать один способ, существует ряд комбинированных способов.