Тема 9. Модели и метрики оценки качества ПО



 

Факторы противоречивости применения формальных оценок. Классификация метрик. Список метрик.

 

[ http://guap.ru/dept04/caf46/textbooks/std_pro/face.htm

Богданов Д.В., Путилов В.А., Фильчаков В.В. Стандартизация процессов обеспечения качества программного обеспечения. - Апатиты, КФ ПетрГУ, 1997. – 161 ]

 

Современная наука о разработке и оценки качества программного обеспечения имеет в своем арсенале внушительный инструментарий метрик и моделей, позволяющих проводить оценку различных как частных так и обобщенных производственных и эксплуатационных характеристик и свойств ПО.

Практика сегодняшнего дня программной индустрии демонстрирует недоверие разработчиков и пользователей ПО к существующим методикам, а также продолжающиеся научные споры о достоверности тех или иных мер. Отметим факторы вызывающие столь противоречивое отношение ученых к вроде бы сугубо формальным показателям:

- игнорирование парадигм системного анализа;

- слабая или отсутствующая корреляция целей проекта с предметной областью и областью применения ПО;

- не учитываются взаимосвязанные уровни сложности: сложность ПО – сложность технологического процесса – жизненный цикл;

- фривольное, научно необоснованное использование метрик в разноплановых задачах приводит к противоречию с реальной измеряемой мерой.

Тем не менее, анализ технологического процессов производства ПО убедительно показывает, насколько дорого обходится несовершенство научного прогноза оценки сложности программ, контроля и управления их разработкой, выбираемого технологического инструментария, что и приводит в конечном итоге к несоответствию требованиям пользователя, стандартам и, как следствие, повышение трудозатрат, а порой и неудача всего проекта.

Эти и ряд других практических реалий являются следствием отсутствия сквозной методической поддержки, для реализации которой требуется:

- научно-обоснованный отбор методик, моделей, методов оценки;

- выбор ограничений их пригодности для различного класса задач;

- учет (выбор или комбинацию) методологических подходов (каскадная, итерационная, спиральная, объектно-ориентированная и пр.) для реализации технологических процессов разработки;

- применение адекватного моделирования для измерения соответствующих показателей;

- применения избыточного многовариантного модельного исследования показателей для повышения достоверности их оценок;

- накопления и интеграции разнородной метрической информации для принятия своевременных производственных решений.

 

Важнейшей целью научных исследований в технологиях разработки ПО является уменьшение ее сложности. Именно это позволяет снизить трудоемкость проектирования, изготовления, испытаний и сопровождения ПО, повысить эксплуатационные характеристики – надежность, производительность.

Целенаправленное снижение сложности ПО представляет собой многошаговую процедуру и требует предварительного исследования существующих показателей сложности, проведения их классификации и соотнесения с типами программ и их местоположением в жизненном цикле.

 

В таблице 1 представлены разнообразные метрики сложности ПО для различных форм их представления, хорошо зарекомендовавшие себя при оценке качества ПО, пригодные для прогнозирования и констатации различных показателей сложности и надежности.

 

Таблица 1 МЕТРИКИ СЛОЖНОСТИ

Название метрики Формула, обозначение
Метрики Холстеда - длина программы; - объем программы - оценка ее реализации; - трудность ее понимания; - трудоемкость кодирования; - уровень языка выражения; - информационное содержание; - оптимальная модульность;   N = n1 log2 n1 + n2 log2 n2 V = N log2 n L*= (2 n2 )/ (n1 N2) Ec = V/ L* D = (n1N2) (2n2) = 1/ L* l* = V/ D2 = V/ L* 2 I = V / D M = n2*/6
Метрики Джилба - количество операторов цикла; - количество операторов условия; - число модулей или подсистем; - отношение числа связей между модулями к числу модулей; - отношение числа ненормальных выходов из множества операторов к общему числу операторов;   L1oop L IF L mod f = N4SV / L mod f * = N*SV / L
Метрики Мак-Кейба - цикломатическое число; - цикломатическая сложность;   l(G) = m - n + p n (G) = l (G) +1 = m – n + 2
Метрика Чепена - мера трудности понимания программ на основе входных и выходных данных;   H = 0.5T+P+2M+3C
Метрика Шнадевида - число путей в управляющем графе   S = S Pi Ci
Метрика Майерса - интервальная мера;   [n 1 ¸ n 2]
Метрика Хансена - пара (цикломатическое число, число операторов)   {n, N}
Метрика Чена - топологическая мера Чена;   M(G) = (n (G), N, Q0)
Метрика Вудворда - узловая мера (число узлов передач управления);   Y x
Метрика Кулика - нормальное число (число простейших циклов в нормальной схеме программы);   Norm (P)
Метрика Хура - цикломатическое число сети Петри, отражающей управляющую структуру программы;   l(G*р)
Метрики Витворфа, Зулевского -мера сложности потока управления -мера сложности потока данных;   g (Р) W (Р)
Метрика Петерсона - число многовходовых циклов;   Nm 1oop
Метрики Харрисона, Мэйджела - функциональное число (сумма приведенных сложностей всех вершин управляющего графа); - функциональное отношение (отношение числа вершин графа к функциональному числу); - регулярные выражения (число операндов, операторов и скобок в регулярном выражении управляющего графа программы);   f1 = S c 1 f* = N c 1/ f1 p(G) = N+L+Sk
Метрика Пивоварского - модифицированная цикломатическая мера сложности;   N(G) = n*(G) + S Pi
Метрика Пратта - тестирующая мера;   Test (Pr)
Метрика Кантоне - характеристические числа полиномов, описывающих управляющий граф программы;   PCN*
Метрика Мак-Клура - мера сложности, основанная на числе возможных путей выполнения программы, числе управляющих конструкций и переменных;   C(V) = D(V) ´ J(V) / N
Метрика Кафура - мера на основе концепции информационных потоков;   I(G)
Метрика Схуттса, Моханти - энтропийные меры;   e (G)
Метрика Коллофело - мера логической стабильности программ;   h (G)
Метрика Зольновского, Симмонса, Тейера Взвешенная сумма различных индикаторов: - (структура, взаимодействие, объем, данные); - (сложность интерфейса, вычислительная сложность, сложность ввода/вывода, читабельность);     å (a, b, g, n) å (c, C, u, p)
Метрика Берлингера - информационная мера;   I(R) = m (F* (R) ´ F-(R))2
Метрика Шумана - сложность с позиции статистической теории языка;   X (Y)
Метрика Янгера - логическая сложность с учетом истории вычислений; Сложность проектирования Насыщенность комментариями Число внешних обращений Число операторов   L (w) Cc = å log2 (i + 1) [å n Cxy (n)] X = K/C Ci L1

 

Показателей сложности (в той или иной степени) велико и разнообразно. Как правило, с понятием сложность программ, связывают технологический аспект управления качеством ПО и контроль технической сложности в период эксплуатации. Проведем ряд классификаций.

Производственная классификация. Показатели сложности делятся на две группы: сложность проектирования и сложность функционирования.

1. Сложность проектирования, которая определяется размерами программы, количеством обрабатываемых переменных, трудоемкостью и длительностью разработки и др. факторами, анализируется на основе трех базовых компонентов: сложность структуры программы, сложность преобразований (алгоритмов), сложность данных.

2. Эксплуатационные качества, характеризующие группу показателей относящиеся к техническим характеристикам: временная, программная и информационная сложности.

 

Классификация по формальным признакам моделирования. Выделим основные формальные составляющие основу типизации метрик сложности, которые базируются на одинаковой формальной основе:

- словарная метрика, основанная на метрических соотношениях Холстеда, цикломатических мерах Мак-Кейба и измерениях Тейера.

- метрики связности ориентированы на связи, отражающих сложность отношений между компонентами системы - это метрики Уина и Винчестера.

- архитектурные метрики, связанные с понятием «структурного», «модульного» построения программ и их оформлением.

- метрики, основанные на идеях энтропии.

 

Существует еще ряд подходов к классификации мер сложности, однако они, фиксируя частные стороны исследуемых программ, не позволяют (пусть с большим допущением) отразить общее, то, чьи замеры могут лечь в основу производственных решений.

 

Первой топологической мерой сложности является цикломатическая мера Мак-Кейба. В ее основе лежит идея оценки сложности ПО по числу базисных путей в ее управляющем графе, т.е. таких путей, компонуя которые можно получить всевозможные пути из входа графа в выходы. Цикломатическое число l (G) орграфа G с n-вершинами, m-дугами и p-компонентами связности есть величина l (G) = m - n + p.

Имеет место теорема о том, что число базисных путей в орграфе равно его цикломатическому числу, увеличенному на единицу. При этом, цикломатической сложностью ПО Р с управляющим графом G называется величина n (G) = l (G) +1 = m - n + 2. Практически цикломатическая сложность ПО равна числу предикатов плюс единица, что позволяет вычислять ее без построения управляющего графа простым подсчетом предикатов. Данная мера отражает психологическую сложность ПО.

К достоинствам меры относят простоту ее вычисления и повторяемость результата, а также наглядность и содержательность интерпретации. В качестве недостатков можно отметить: нечувствительность к размеру ПО, нечувствительность к изменению структуры ПО, отсутствие корреляции со структурированностью ПО, отсутствие различия между конструкциями Развилка и Цикл, отсутствие чувствительности к вложенности циклов. Недостатки цикломатической меры привело к появлению ее модификаций, а также принципиально иных мер сложности.

Дж. Майерс предложил в качестве меры сложности интервал [n 1¸ n 2], где n 1- цикломатическая мера, а n 2 - число отдельных условий плюс единица. При этом, оператор DO считается за одно условие, а CASE c n - исходами за n - 1- условий. Введенная мера получила название интервальной мерой.

У. Хансену принадлежит идея брать в качестве меры сложности ПО пару {цикломатической число, число операторов}. Известна топологическая мера Z(G), чувствительная к структурированности ПО. При этом, она Z(G) = V(G) (равна цикломатической сложности) для структурированных программ и Z(G) > V(G) для неструктурированных. К вариантам цикломатической меры сложности относят также меру М(G) = (V(G),C,Q), где С - количество условий, необходимых для покрытия управляющего графа минимальным числом маршрутов, а Q - степень связности структуры графа программы и ее протяженность.

К мерам сложности, учитывающим вложенность управляющих конструкций, относят тестирующую меру М и меру Харрисона-Мейджела, учитывающих уровень вложенности и протяженности ПО, меру Пивоварского - цикломатическую сложность и глубину вложенности, и меру Мак-Клура - сложность схемы разбиения ПО на модули с учетом вложенности модулей и их внутренней сложности.

Функциональная мера сложности Харрисона-Мейджела предусматривает приписывание каждой вершине графа своей собственной сложности (первичной) и разбиение графа на сферы влияния предикатных вершин. Сложность сферы называют приведенной и слагают ее из первичных сложностей вершин, входящих в сферу ее влияния, плюс первичную сложность самой предикатной вершины. Первичные сложности вычисляются всеми возможными способами. Отсюда функциональная мера сложности ПО есть сумма приведенных сложностей всех вершин управляющего графа.

Мера Пивоварского ставит целью учесть в оценке сложности ПО различия не только между последовательными и вложенными управляющими конструкциями, но и между структурированными и неструктурированными программами. Она выражается отношением N(G) = n *(G) + S Pi , где n *(G) - модифицированная цикломатическая сложность, вычисленная так же, как и V(G), но с одним отличием: оператор CASE с n- выходами рассматривается как один логический оператор, а не как n - 1 операторов. Рi - глубина вложенности i - той предикатной вершины.

Для подсчета глубины вложенности предикатных вершин используется число сфер влияния. Под глубиной вложенности понимается число всех сфер влияния предикатов, которые либо полностью содержаться в сфере рассматриваемой вершины, либо пересекаются с ней. Глубина вложенности увеличивается за счет вложенности не самих предикатов, а сфер влияния. Сравнительный анализ цикломатических и функциональных мер с обсуждаемой для десятка различных управляющих графов программы показывает, что при нечувствительности прочих мер этого класса, мера Пивоварского возрастает при переходе от последовательных программ к вложенным и далее к неструктурированным.

Мера Мак-Клура предназначена для управления сложностью структурированных программ в процессе проектирования. Она применяется к иерархическим схемам разбиения программ на модули, что позволяет выбрать схему разбиения с меньшей сложностью задолго до написания программы. Метрикой выступает зависимость сложности программы от числа возможных путей исполнения, числа управляющих конструкций и числа переменных (от которых зависит выбор пути). Методика расчета сложности по Мак-Клуру четко ориентирована на хорошо структурированные программы.

Тестирующей мерой М называется мера сложности, удовлетворяющая следующим условиям:


Дата добавления: 2016-01-05; просмотров: 37; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!