9. Потоковый граф и цикломатическая сложность программы. Примеры.
Для представления программы используется потоковый граф. Перечислим его особенности.
Граф строится отображением управляющей структуры программы. В ходе отображения закрывающие скобки условных операторов и операторов циклов (end if; end loop) рассматриваются как отдельные (фиктивные) операторы.
Узлы (вершины) потокового графа соответствуют линейным участкам программы, включают один или несколько операторов программы.
Дуги потокового графа отображают поток управления в программе (передачи управления между операторами). Дуга — это ориентированное ребро.
Различают операторные и предикатные узлы. Из операторного узла выходит одна дуга, а из предикатного — две дуги.
5. Предикатные узлы соответствуют простым условиям в программе. Составное условие программы отображается в несколько предикатных узлов. Составным называют условие, в котором используется одна или несколько булевых операций (OR, AND).
Например, фрагмент программы
if a OR b
then x
else у
end if;
вместо прямого отображения в потоковый граф вида, показанного на рис. 5.3, отображается в преобразованный потоковый граф (рис. 5.4).
Рис. 5.3. Прямое отображение в потоковый граф
Нет
Да
Нет
Рис. 5.4. Преобразованный потоковый граф
Замкнутые области, образованные дугами и узлами, называют регионами.
Окружающая граф среда рассматривается как дополнительный регион. Например, показанный здесь граф имеет три региона — Rl, R2, R3.
Цикломатическая сложность
Цикломатическая сложность — метрика ПО, которая обеспечивает количественную оценку логической сложности программы. В способе тестирования базового пути цикломатическая сложность определяет:
количество независимых путей в базовом множестве программы;
верхнюю оценку количества тестов, которое гарантирует однократное выполнение всех операторов.
Независимым называется любой путь, который вводит новый оператор обработки или новое условие. В терминах потокового графа независимый путь должен содержать дугу, не входящую в ранее определенные пути.
Путь начинается в начальном узле, а заканчивается в конечном узле графа. Независимые пути формируются в порядке от самого короткого к самому длинному. Каждый новый путь включает новую дугу.
Все независимые пути графа образуют базовое множество.
Свойства базового множества:
1) тесты, обеспечивающие его проверку, гарантируют:
- однократное выполнение каждого оператора;
- выполнение каждого условия по True-ветви и по False-ветви;
2) мощность базового множества равна цикломатической сложности потокового графа.
Мощность базового множества дает априорную оценку количества независимых путей, которое имеет смысл искать в графе.
Цикломатическая сложность вычисляется одним из трех способов:
цикломатическая сложность равна количеству регионов потокового графа;
цикломатическая сложность определяется по формуле: V(G)=E-N+2, где Е — количество дуг, N — количество узлов потокового графа;
цикломатическая сложность формируется по выражению V(G) = р + 1, где р — количество предикатных узлов в потоковом графе G.
Вычислим цикломатическую сложность графа из примера каждым из трех способов:
потоковый граф имеет 3 региона;
V(G) = 7 дуг - 6 узлов + 2 = 3;
V(G) = 2 предикатных узла +1= 3.
- 1. Определение понятий «программа», «программное средство», «программный продукт». Виды и краткое содержание программных документов (по еспд).
- 2. Связь программных документов с этапами жизненного цикла по.
- 3. Жизненный цикл программных средств. Базовые этапы моделей жц: назначение и характеристика.
- 4. Стратегии конструирования программных средств с точки зрения моделей жц. Характеристика стратегий, достоинства и недостатки.
- 6. Назначение, архитектура, классификация case-средств.
- 7. Определение и содержание процесса тестирования. Информационные потоки процесса тестирования.
- 8. Основные стратегии тестирования, их характеристики, достоинства и недостатки. Основные типы ошибок, выявляемых каждой из стратегий.
- 9. Потоковый граф и цикломатическая сложность программы. Примеры.
- 10. Способ тестирования базового пути.
- 11. Способ тестирования условий.
- 12. Способ тестирования потоков данных.
- 13. Функциональное тестирование. Способ разбиения по эквивалентности и анализа граничных значений.
- 14. Способ диаграмм причин-следствий.
- 15. Основные характеристики качества и надежности программных средств.
- 16. Понятия функциональной пригодности, корректности и надежности программных средств.
- 17. Функция надежности и функция отказа: определение, основные свойства.
- 18. Дискретные модели надежности по. Модель Муса.
- 19. Дискретные модели надежности по. Модель Шумана.
- 20. Статические модели надежности по (простая интуитивная модель, модель Нельсона, модель Миллса).
- 21. Эмпирические модели надежности по. Определение оптимальной продолжительности тестирования.
- 22. Понятие пользовательского интерфейса. Основные принципы разработки пользовательского интерфейса.
- 23. Оконные интерфейсы. Типы окон. Основные операции с окнами.
- 24. Типы диалога пользовательского интерфейса.
- 25. Типы элементов управления оконных интерфейсов.
- 26. Назначение элемента управления «меню». Стандартные разновидности меню.
- 27. Назначение элемента управления «кнопка». Стандартные разновидности кнопок.
- 28. Назначение элемента управления «список». Стандартные разновидности списков.
- 29. Назначение элемента управления «текстовая область». Стандартные разновидности текстовых областей.
- 30. Правовые методы защиты программных продуктов и баз данных.
- 31. Понятие компонента. Функциональные группы компонентов.
- 32. Открытый интерфейс доступа к базам данных (odbc).
- 33. Архитектуры сервера баз данных совместной обработки клиентских запросов.
- 34. Доступ к базам данных в двухзвенных моделях «клиент-сервер».
- 35. Основные требования к распределенной обработке данных.
- 36. Функции «типового» приложения обработки данных.
- 37. Базовые архитектуры распределенной обработки данных.
- Архитектура сервера баз данных
- Архитектура «один к одному»
- Многопотоковая односерверная архитектура
- 38. Источник данных. Архитектура приложения, работающего с внешними источниками данных.
- 39. Последовательность действий для обеспечения работы с объектом источника данных.
- 40. Форматы представления слабоструктурированных данных. Основные понятия стандарта iso 2709.
- 41. Форматы представления слабоструктурированных данных. Основные понятия коммуникативного формата мекоф.
- 42. Языки определения слабоструктурированных данных. Основные понятия xml.
- 43. Инфраструктура описания ресурсов (rdf).
- 44. Структура процессов в абстрактной аипс.
- 45. Фактографические и документальные бд.
- 46. Классификации. Типология классификаций на основе отношений, возможных между классами и атрибутами.
- 47. Библиотечно-библиографические классификации.
- 48. Патентные классификации.
- 49. Классификации наук.
- 50. Онтология как средство формализованного представления информации.
- 51. Методы выделения информативных терминов.
- 52. Методы классификации и кластеризации текстовой информации.