Министерство экономического развития Российской Федерации
Государственный Университет – Высшая Школа Экономики
Магистратура факультета Бизнес-информатики
Реферат по дисциплине
«Методология программной инженерии»
Тема: Метод определения точек тестирования, основанный на анализе цикломатической сложности Мак-Кейба
Выполнил:
студент группы 171мУРПО
Семишин Кирилл Олегович
Преподаватель:
профессор, к. т. н.
Авдошин Сергей Михайлович
Москва -2008-
Очевидно, что самыми простыми и эффективными в реализации являются системы управления на базе измеримых характеристик объекта. В полной мере это справедливо и по отношению к программным проектам. Однако процесс создания ПО настолько многогранен и одновременно сложен для восприятия, что даже незначительные недостатки системы измерения неизбежно отразятся на качестве управления. Основу любой системы измерения составляют отдельные показатели, именуемые также метриками.
Метрики программных проектов – это количественные показатели, отражающие их отдельные характеристики. Точнее, метрики представляют собой все, что можно измерить, при условии, конечно, что в этом есть смысл.
Все метрики можно разбить на несколько групп. Наиболее распространенными из них являются метрики размера и развившиеся с переходом от структурной к объектно-ориентированной парадигме программирования объектно-ориентированные метрики.
Менее распространенной, но не мене эффективной является группа метрик программных проектов с показателями, характеризующими их сложность. Эти метрики используются главным образом для апостериорного анализа, однако могут применяться и на ранних стадиях работы при осуществлении проектирования.
Основная цель метрик сложности – выявить наиболее критичные участки программного проекта, которые являются потенциальными источниками ошибок и повышенных рисков на всех стадиях его жизненного цикла, для их упрощения или усиленного тестирования (точки тестирования).
Одна из самых распространенных таких метрик – цикломатическая сложность, впервые предложенная Томасом Мак-Кейбом (Thomas McCabe) в 1976 г. Данная метрика предназначена для оценивания сложности потока управления программы (control flow graph) и вычисляется на основе ориентированного графа, где вычислительные операторы или выражения представляются в виде узлов, а передача управления между узлами – в виде дуг.
Формула вычисления цикломатической сложности выглядит следующим образом:
V(G) = e – n + 2p,
где e – число ребер, n – число узлов, p – число компонентов связности графа.
Мак-Кейб использует следующую теорему: в сильно связанном графе G цикломатическое число равно максимальному числу линейно-независимых циклов.
Применяя эту теорему, Мак-Кейб связывает с программой ориентированный граф с одним выходом. Каждой вершине графа соответствует блок кода с последовательным управлением, а каждой дуге соответствует ветвление программы. Каждой вершины можно достигнуть из входной вершины и из каждой вершины может быть достигнута выходная вершина. Этот граф сильно связан, так как для любой пары вершин существует связывающий их путь.
Общий подход состоит в оценке сложности программы с помощью вычисления числа линейно-независимых путей, цикломатической сложности V(G), а также управления размером программ с помощью ограничения V(G) и использования V(G) как основы для методологии тестирования. Мак-Кейб обнаружил, что разумной верхней границей для цикломатической сложности является 10. Если программисты переступают эту границу, им следует или переписать программу, или разбить ее на модули.
Оценка цикломатической сложности Мак-Кейба полезна при подготовке тестовых данных и может дать нужную информацию о логической сложности программы. Однако при такой оценке не принимается во внимание выбор структур данных, алгоритмов, мнемонических имен переменных или комментариев, отсутствует обсуждение таких важных понятий, как удобство переноса, гибкость, эффективность.
Вычисление метрики в ходе реализации проекта (а при детальном проектировании оно возможно еще на этом этапе, не дожидаясь стадии кодирования) позволяет своевременно определить наиболее сложные, сопровождающиеся высокими рисками, структурные единицы и принять меры по устранению рисков за счет внесения корректив.
Для метрики цикломатической сложности существует множество вариаций, в частности:
· «модифицированная» цикломатическая сложность – рассматривает не каждое ветвление оператора множественного выбора (switch, case), а весь оператор как единое целое;
· «строгая» цикломатическая сложность – включает логические операторы;
· «упрощенная» цикломатическая сложность – предусматривает вычисление на основе не графа, а подсчета управляющих операторов;
· «актуальная» сложность – определяется как число независимых путей, которые проходит программа при тестировании;
· метрика сложности глобальных данных – вычисляется как цикломатическая сложность модуля и увеличивается на количество взаимосвязей с глобальными данными.
В целом, метод определения точек тестирования на основе анализа цикломатической сложности является весьма хорошим способом своевременно предостеречь разработчика, указать на сегменты усиленного тестирования или, по возможности, упрощения отдельных составляющих проекта, предупредив вероятные проблемы с запутанным и нестабильным кодом в будущем.
Список литературы:
1. Липаев В.В. / Надежность программных средств. Серия "Информатизация России на пороге XXI века" / Москва / СИНТЕГ / 1998
2. Гасов В.М., Цыганенко А.М. / Надежность, эргономика и качество АСОИУ: Учебное пособие / Москва / МГУП / 2006