
- •1. Жизненный цикл программной системы.
- •2. Классический подход к созданию программных систем.
- •3. Понятия связности модулей и сцепления модулей.
- •4. Структурное программирование.
- •Структурное тестирование программного обеспечения
- •1. Связь процессов тестирования и процессов проектирования.
- •2. Уровни тестирования и виды тестирования.
- •3. Стратегия тестирования.
- •4. Тестирование программного модуля.
- •5. Восходящее и нисходящее тестирование.
- •6. Методы тестирования: модифицированный нисходящий, монолитный, сандвич, модифицированный сандвич.
- •7. Системное тестирование: метод функциональных диаграмм.
- •Объектно-ориентированный подход к разработке по
- •1. Абстрагирование и инкапсуляция
- •2. Модульность программных систем
- •3. Виды иерархий в программных системах.
- •4. Понятие объекта. Состояние, поведение и индивидуальность объекта.
- •5. Отношение между объектами: использование, включение.
- •6. Отношение простого наследования классов.
- •7. Добавление, замещение и уточнение методов класса при наследовании.
- •8. Отношение ассоциации между классами, включая агрегацию.
- •9. Отношение зависимости между классами, отношение реализации.
- •Шаблоны проектирования
- •1. Шаблон «Одиночка» Singleton
- •2. Шаблон «Фабричный метод» Factory Method
- •3. Шаблон «Декоратор» Decorator
- •4. Шаблон «Стратегии» Strategy
- •5. Шаблон «Компоновщик» Composite.
- •6. Шаблон «Наблюдатель» Observer
- •7. Архитектурные шаблоны (парадигмы).
- •Унифицированный процесс разработки по (rup)
- •1. Основные черты. Фазы и основные потоки работ.
- •2. Документ «Видения». Модель и словарь предметной области.
- •3. Функциональные и нефункциональные требования к системе. Варианты использования системы.
- •4. Прецеденты и отношения между прецедентами.
- •5. Модель анализа и классы анализа.
- •6. Архитектурное представление.
4. Структурное программирование.
При создании средних по размеру приложений используется структурное программирование – один из методов проектирования, идея которого заключается в том, что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм решения был ясно виден из исходного текста.
Цели структурного программирования:
Разрабатывать программы минимальной сложности
Заставить проектировщика мыслить ясно
Обеспечить восприятие программы со стороны
Требования:
Отсутствие микроэффективности в ущерб ясности программы
Правильное оформление (сдвиги, комментарии)
Разбиение на модули (не более одной страницы текста на подпрограмму)
Каждый модуль имеет ровно один вход и один выход
Типы управляющих структур: последовательное соединение (следование), условное предложение (ветвление), повторение (циклы: обычный, с пост- и пред- условием)
Избегать GO TO
Структурное тестирование программного обеспечения
1. Связь процессов тестирования и процессов проектирования.
Тестирование – процесс выполнения программы с целью обнаружения ошибок.
Доказательство правильности – попытка найти ошибки в программе без относительных входных данных.
Контроль (верификация) – поиск ошибок в ПО, при выполнении его в тестовой (моделируемой) среде.
Испытание – поиск ошибок в ПО, при выполнении его в заданной реальной среде.
Отладка – установление точной причины обнаруженной ошибки и ее устранение.
Виды тестирования:
Тестирование модуля (автономное, тестирование минимальной единицы программы) - тестирование программного модуля в изолированной от других модулей среде.
Интегрированное тестирование (спецификаций и интерфейсов) – тестирование связей между частями системы (модулями, компонентами).
Системное (комплексное) – контроль или испытание системы на соответствие исходным целям.
Тестирование приемлемости – проверка соответствия программы требованиям пользователя.
Последовательность подготовки тестов совпадает с последовательностью проектирования. Выполнение же тестирования происходит обратно выполнению проектирования.
Тестирование включает в себя следующие виды деятельности:
1. постановка задачи на тестирование (определение целей). Определяется, кто будет выявлять ошибки, какие виды тестирования и кто будет выполнять.
2. проектирование тестов (составление перечня тестируемых процедур);
3. описание (кодирование) тестов (ручное или автоматическое написание тестов);
4. тестирование тестов (тестируемая программа является тестом для тестов);
5. выполнение тестов;
6. изучение результатов тестирования.
2. Уровни тестирования и виды тестирования.
Уровни тестирования:
Тестирование модуля. Выявление ошибок в минимальных элементах программной системы. Выполняется по мере разработки модулей
Интегрированное тестирование. Тестируется взаимодействие между компонентами, в том числе и сторонними
Системное тестирование. Тестирование разработанной системы в целом. Цель проверить, что все системные элементы объединены и выполняют заданные функции. Может выполняться в моделируемой или реальной среде
Приемо-сдаточное тестирование. Проверка готовности для использования конечными пользователями. Цель – подтвердить, что функции, описанные в спецификациях соответствуют ожиданиям пользователей. Альфа-тестирование – заказчиком в организации разработчика. Бета-тестирование – выполняется конечными пользователями.
Виды тестирования:
Тестирование функциональности (functionality testing)
Функциональные тесты (function test). Выявляют ошибки в реализации требуемых функций. Эти тесты выполняются для модулей, интеграции компонентов, приложений и систем в целом
Тесты безопасности (security test). Проверка того, что данные и функции системы доступны только тем актантам, которым они предназначены. Выполняются на всех уровнях тестирования
Тесты предельных значений (volume test). Тестируется возможность обработки максимальных объемов данных
Тестирование практичности/удобства (usability testing). Включает тестирование удобства пользовательского интерфейса, всех видов эксплуатационной документации (включая оперативную документацию)
Тестирование надежности (reliability testing)
Тесты интеграции (integrity). Дают оценку устойчивости к ошибкам отдельных модулей и их сборок
Тесты структуры (structure). Например, в веб-приложении проверяется корректность всех ссылок, определяется правильность предоставления информации
Стрессовые (stress) тесты. Проверяется работоспособность приложения в «ненормальных» условиях (превышение загрузки, недостаток памяти, недоступные устройства, недоступные внешние компоненты)
Тестирование производительности (performance testing)
Сравнительные (benchmark) тесты. Сравнение производительности разрабатываемой системы со сторонними системами
Тесты конфликтов (contention). Тестирование одновременного доступа актантов к одним и тем же ресурсам (БД, память, и т.д.)
Нагрузочные (load) тесты. Тестирование границ приемлемого выполнения функций под изменяющейся нагрузкой. Эмулируются средние и пиковые нагрузки. Анализируется время ответа и время реакции системы на запросы (реакция системы – некоторые ответные действия системы, не обязательно ответ на запрос).
Тестирование сопровождаемости (supportability testing)
Тесты конфигурирования (configuration). Проверяется правильность функционирования при различных конфигурациях программного обеспечения и аппаратуры.
Тесты инсталляции (installation). Тесты возможности инсталляции системы при различных конфигурациях программного обеспечения и аппаратуры.