Методы оценки качества ПО по внутренним характеристикам
Для оценки качества ПО методами первой группы применяются так называемые метрики сложности программ, при этом многие аспекты качества, прежде всего касающиеся функционального соответствия программного продукта запросам клиента, не учитываются. Однако вместе с тем хорошая оценка внутренних характеристик программ, составляющих программный продукт, дает определенную уверенность, что другие важные характеристики качества программного обеспечения тоже будут выглядеть неплохо. Метрики сложности программ принято разделять на три основные группы [51]: метрики размера программ; метрики сложности потока управления программ; метрики сложности потока данных программ. Существуют и другие варианты разделения метрик на группы [139]. Однако разница между ними, как правило, заключается в выделении некоторых метрик в отдельные подгруппы, так что назвать их существенно отличающимися от представленной выше группировки метрик нельзя.
Оценки первой группы наиболее просты и, очевидно, поэтому получили широкое распространение. Традиционной характеристикой размера программ является количество строк исходного текста. При этом само понятие «строки исходного текста» может трактоваться по-разному в зависимости от того, какие операторы учитываются, учитывается ли количество операторов в одной строке и т.д. Обычно под «строкой» понимается любой оператор программы, а не отдельно взятая строка текста, поскольку именно оператор, а не отдельно взятая строка является тем интеллектуальным «квантом» программы, опираясь на который можно строить метрики сложности ее создания, при этом закомментированные или пустые строки не учитываются [51,114,131].
Другой подход к оценке сложности ПО был предложен Альбрехтом А. [49,111,113,134]. Основная идея метрики Альбрехта - максимальный отказ от деталей реализации ПО и перенос оценки в область функциональности, наблюдаемой пользователем или иначе говоря - в область пользовательских требований к функциональности. Для этого ПО оценивалось по четырем информационным характеристикам: по количеству внешних вводов (подсчитываются вводы пользователя, по которым поступают различные прикладные данные); по количеству внешних выводов (подсчитываются все выводы, по которым к пользователю поступают результаты, вычисленные программным приложением); по количеству запросов (под запросом понимается диалоговый ввод, который приводит к немедленному программному ответу в форме диалогового вывода); по количеству основных файлов (подсчитываются все логические файлы ПО).
Итоговое значение оценки вычислялось на основании суммы индивидуальных оценок ПО по каждой информационной характеристике, перемноженных на значения их весовых коэффициентов. Для каждой информационной характеристики задавались следующие значения весовых коэффициентов: количество внешних вводов - 4, количество внешних выводов - 5, количество запросов - 4, количество основных файлов - 10. В зависимости от сложности ПО допускалось изменение значений весовых коэффициентов в пределах 35% от их исходных значений [111].
К группе оценок размера программ также относится и метрика Холстеда [51,105,126]. Основу метрики Холстеда составляют четыре измеряемых характеристики программы: п\ - число уникальных операторов программы, включая символы-разделители, имена процедур и знаки операций (словарь операторов); п2 - число уникальных операндов программы (словарь операндов); JVy - общее число операторов в программе; Л - общее число операндов в программе.
Опираясь на эти характеристики, получаемые непосредственно при анализе исходных текстов программ, Холстед М. вводит следующие характеристики программы: словарь программы: п = пї+п2 (1.1) - общее количество уникальных операторов и операндов, составляющих программу; длину программы: N = Nj+N2 (1.2) - общее количество операторов и операндов в программе; объем программы: V = N Log2(ri). (1.3) Рассматривая эту оценку, некоторые авторы утверждают, что объем программы характеризует «число двоичных разрядов, т. е. бит, необходимых для записи программы» [67,121,122]. При этом речь идет о физической длине программы в битах. С другой стороны, исходя из анализа работ Холстеда М., связанных с определением метрических характеристик понятности и уровня программ, некоторые авторы делают вывод, что под битом подразумевается логическая единица информации - символ, оператор, операнд [51].
К недостаткам метрики Холстеда можно отнести тот факт, что предложенные им оценки не учитывают всех характеристик сложности программы. Так, например, программы со сложной графовой структурой и линейная, имеющие равный объем, по метрике Холстеда будут обладать одинаковой сложностью, что, в общем-то, неверно. В [5] дано развитие метрической теории программ Холстеда. Для расчета длины программы предложено использовать модифицированную формулу Холстеда N = 0,9\-n-\og(n), (1.4) полученную авторами на основании статистической проверки зависимости между п и N. Эту работу следует рассматривать в контексте усовершенствования одного из показателей качества программы. Метрики сложности потока управления программ. Метрики сложности потока управления программ - наиболее представительная группа оценок сложности программ. Как правило, с помощью этих оценок оперируют либо плотностью управляющих переходов внутри программ, либо взаимосвязями этих переходов. И в том, и в другом случае традиционным является представление программ в виде управляющего ориентированного графа G=(V,E), где V - вершины, соответствующие операторам, аЕ- дуги, соответствующие переходам [51].
Метрика Маккейба. Впервые графическое представление программ было предложено Маккейбом Т. [137]. Основой метрики сложности он предлагает считать цикломатическую сложность графа программы или цикломатическое число Маккейба, характеризующее трудоемкость тестирования программы. Для вычисления цикломатического числа Маккейба Z(G) применяется формула Z(G) = e-v + 2p, (1.5) где е - число дуг ориентированного графа G; v - число вершин; р - число компонентов связности графа.
Число компонентов связности графа можно рассматривать как количество дуг, которые необходимо добавить для преобразования графа в сильносвязный, т.е. такой граф, любые две вершины которого взаимно достижимы. По сути Z(G) определяет число линейно независимых контуров в сильносвязном графе. Иначе говоря, цикломатическое число Маккейба показывает требуемое количество проходов для покрытия всех контуров сильносвязного графа или количество тестовых прогонов программы, необходимых для исчерпывающего тестирования по критерию «работает каждая ветвь».
Do'stlaringiz bilan baham: |