- •Вопросы к экзамену по курсу "Технология программирования"
- •История развития языков программирования высокого уровня.
- •Архитектура языков программирования (три поколения).
- •Архитектура объектно-ориентированных языков программирования.
- •Сложность, присущая по (основные причины). Проблемы, возникающие при создании сложных систем.
- •Структура сложных систем (пять признаков). Примеры сложных систем (выделить признаки).
- •Основные понятия: метод, методология, технология. Классификация методов проектирования пс. Общая характеристика методов проектирования.
- •Эволюция программного продукта. Основные определения, понятия, отличительные черты.
- •Понятие «модуль» в программировании. Различные виды модулей при использовании основных методов проектирования пс.
- •Case – технологии (инструменты, системы, средства). Эволюция case – средств, их классификация, характеристики современных case – инструментов. Перспективы развития.
- •Роль case – инструментов в объектно-ориентированной методологии разработки пс. Связь case – технологии с методами быстрой разработки приложений (rad).
- •Классификация средств разработки (case - инструментов).
- •Жизненный цикл по (жц). Структура жц, основные фазы жц.
- •Организация процесса разработки пс (методы, средства, процедуры).
- •Модели процесса разработки пс (каскадная, спиральная)
- •Модели процесса разработки пс (компонентно-ориентированная, инкрементная, rad – модель).
- •Тяжеловесные и облегченные процессы разработки пс.
- •Унифицированный процесс разработки пс.
- •Iconix – процесс.
- •Scrum – процесс.
- •Артефакты
- •Встречи
- •Планирование спринта происходит в начале итерации(не более 4-8 часов), выбирается что будет сделано и обсуждается как это будет сделано.
- •Митинг Происходит каждый день в течение спринта(не более 15 минут), ищутся ответы на вопросы: что сделано? Что надо сделать? Какие есть проблемы?
- •Демонстрация проходит в конце спринта(не более 4-8 часов), показывается инкремент.
- •Прототип системы (достоинства и недостатки макетирования).
- •Масштаб проекта и риски
- •Содержание основных рабочих процессов по созданию по (анализ требований, системный анализ, проектирование).
- •Содержание основных рабочих процессов по созданию по (кодирование, тестирование).
- •Изменения в процессе эволюции программных систем, стоимость каждого вида изменения (в смысле затрат).
- •Организационные процессы (распределение ресурсов, управление проектом, организация коллектива разработчиков).
- •Документирование программного продукта. Различные виды документов, их содержание.
- •Виды документов при использовании объектно-ориентированной методологии разработки пс.
- •Временные затраты на реализацию этапов разработки по. Особенности распределения ресурсов при использовании объектно-ориентированной методологии.
- •Методы и средства структурного анализа.
- •Диаграммы потоков данных с расширениями для реального времени.
- •Пример банковской задачи (провести анализ).
- •Средства структурного проектирования (карты Константайна).
- •Методы проведения анализа объектно-ориентированных систем.
- •Типовая и структурная иерархии в объектно-ориентированной методологии.
- •Унифицированный язык моделирования пс (uml). Словарь, достоинства и возможности
- •Механизмы расширения в uml.
- •Диаграммы классов (точки зрения).
- •Отношения в диаграмме классов.
- •Классы ассоциаций.
- •Диаграммы вариантов использования, реализации вариантов использования.
- •Диаграммы взаимодействий.
- •Диаграммы пакетов и компонентов.
- •Диаграммы состояний.
- •Диаграммы активности (деятельностей).
- •Каркасы и паттерны.
- •Основные понятия и определения теории тестирования. Подходы к тестированию. Стратегии тестирования. Критерии тестирования.
- •Критерии тестирования стратегии "черного ящика".
- •1. Эквивалентное разбиение (самый популярный критерий из-за простоты)
- •2. Анализ граничных условий.
- •3. Метод функциональных диаграмм
- •Классический процесс тестирования по.
- •Тестирование модулей (блоков) программы. Тестирование интеграции.
- •Тестирование правильности (функциональное тестирование). Системное тестирование.
- •Особенности тестирования объектно-ориентированных программ. Тестирование классов.
- •Тестирование взаимодействия классов и функционирования компонентов.
- •Вопросы автоматизации тестирования. Инструменты тестирования.
2. Анализ граничных условий.
Граничные условия – это ситуации, которые возникают непосредственно на границе классов эквивалентности, а также выше или ниже этих границ (как показала практика, большая часть ошибок возникает на границах ввода, а не в центре).
В общем суть такая: (прим. копипастера)
Если условие ввода задает диапазон 0 ≤ х ≤ 1, то по этому критерию необходимо построить следующие тесты. Например, для входных классов эквивалентности:
0; 1 – границы
-0.001 – неправильные – чуть левее нижней границы
+0.001 – правильные – чуть правее верхней границы
0.999 – правильные – чуть левее верхней границы
1.001 – неправильные – правее нижней границы.
(для эквивалентного разбиения – было бы 3 теста (один правильный и 2 неправильных))
3. Метод функциональных диаграмм
Метод функциональных диаграмм или диаграмм причинно-следственных связей помогает систематически выбирать высокорезультативные тесты. Кроме этого, метод функциональных диаграмм дает полезный побочный эффект, так как позволяет обнаруживать неполноту и неоднозначность исходных спецификаций.
Функциональная диаграмма – это формальный язык, на который транслируется спецификация, написанная на естественном языке.
Методика использования функциональных диаграмм:
Спецификация разбивается на “рабочие” участки, так как для больших спецификаций функциональные диаграммы становятся слишком громоздкими. Например, при тестировании компилятора в качестве рабочего участка можно рассматривать каждый отдельный оператор языка программирования.
В спецификации определяются причины и следствия. Причина – это отдельное входное условие или класс эквивалентных входных условий. Следствие – это выходное условие (результат выполнения программы). Например, если при выполнении программы обновляется содержимое некоторого файла, то изменение в нем является результатом выполнения программы, а подтверждающее сообщение – выходным условием.
Критерии тестирования стратегии "белого ящика".
Эта стратегия тестирования исходит из значения, прежде всего внутренней структуры программы. Исследуются, прежде всего, внутренние элементы программы и связи между ними.
Тестирование по стратегии "белого ящика" характеризуется степенью, в какой тесты покрывают логику программы (исходный текст её), все её различные пути.
1. Покрытие операторов.
Тестов должно быть столько, чтобы на них в совокупности выполнялся бы каждый оператор программы по крайней мере один раз.
2. Покрытие решений, условий и решений/условий.
Тесты должны быть выбираться таким образом, чтобы каждое решение (соответственно условие) на этих тестах принимало бы значение “истина” и “ложь” по крайней мере один раз.
решения и все условия должны принимать истина и ложь хотя бы один раз.
3. Покрытие путей
Этот критерий требует столько тестов, чтобы покрыть все пути в программе хотя бы один раз. Это очень сильный критерий, но в практике тестирования его обычно не применяют из-за большого числа различных путей в программе (особенно, если есть циклы).
На практике используют следующие 3 критерия покрытия путей:
3.1) критерий С1 (или минимальное покрытие). По этому критерию требуется столько тестов, чтобы покрыть все ветви программы хотя бы один раз (ветвь – дуга редуцированного УГП).
3.2) критерий С2 (или базовое линейно-независимое покрытие). По этому критерию требуется столько тестов, чтобы покрыть все линейно-независимые пути в программе хотя бы раз.
(Пути называются линейно-независимыми, если любой путь в программе можно получить их комбинацией.)
3.3) критерий С3 (или полное покрытие). Требуется покрыть все пути программы хотя бы раз, не учитывая количество повторений циклов, т.е. пути, которые отличаются только количеством прохождений по циклам, считаются одинаковыми.
