Критерии качества програмного обеспечения

Автор работы: Пользователь скрыл имя, 01 Октября 2011 в 22:26, дипломная работа

Описание работы

Требования к качеству программных средств всё время повышаются. Процессы разработки, приобретения и внедрения сложных систем, к которым относятся в частности программные комплексы, должны находится под жестким управленческим контролем. В настоящее время практически во всех организациях обеспечивается контроль важнейших характеристик, связанных с производством и использованием программных продуктов, таких как время, финансовые средства, ресурсы и т.п. Однако в большинстве случаев вне пределов сферы контроля оказывается наиболее важная характеристика программных продуктов, ради которой, собственно и осуществляются затраты времени, финансовых средств и ресурсов - это качество продукта, поскольку «невозможно контролировать то, что нельзя измерить» (“You cannot control what you cannot measure”).

Содержание работы

Введение 3
ГЛАВА 1. Качество программного обеспечения 6
1.1 Понятие качества 6
1.2 Стандарт ГОСТ Р ИСО МЭК 9126 8
1.2.1 Модель характеристик качества 9
1.2.2 Характеристики и атрибуты качества 13
1.3 Метрики 19
1.3.1 Основные направления применения метрик 23
1.3.2 Метрические шкалы 24
1.3.3 Метрики сложности программ 24
1.3.4 Объектно-ориентированные метрики 35
1.3.5 Метрики Холстеда 36
1.3.6 Метрики цикломатической сложности по Мак-Кейбу 45
1.3.7 Метрики Чепина 50
1.3.8 Размерно-ориентированные метрики (показатели оценки объема) 52
1.4 Альтернативные подходы к измерению качества 56
1.5 Оценка результата 62
1.5.1 Линейный подход 62
1.5.2 Оценка с использованием эмпирических данных 63
1.6 Методы контроля качества 67
1.7 Автоматизированные программные продукты по оценке качества ПО. 69
1.7.1 Вычисление метрики SLOC 69
1.7.2 Вычисление метрик сложности 71
1.7.3 Оценки экономических параметров 72
Вывод по главе 1 78
ГЛАВА 2. Изучение темы критерии качества программного обеспечения 80
2.1 Анализ стандарта по профильному курсу информатики 80
2.2 Описание элективного курса «Критерии качества ПО» 83
2.4 Организация и проведение педагогического эксперимента 91
Вывод по главе 2 93
Заключение 94
Приложение 95
Библиографический список 107

Файлы: 1 файл

Диплом.doc

— 1.99 Мб (Скачать файл)

      При оценке сложности программ, как правило, выделяют три основные группы метрик:

  • метрики размера программ
  • метрики сложности потока управления программ
  • и метрики сложности потока данных программ

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

      Метрики второй группы базируются на анализе  управляющего графа программы. Представителем данной группы является метрика Мак-Кейба.

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

      Метрики третьей группы базируются на оценке использования, конфигурации и размещения данных в программе. В первую очередь  это касается глобальных переменных. К данной группе относятся метрики Чепина.

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

Метрики

      Таблица 1

Название  модели Формула, обозначение
1 2
МЕТРИКИ СЛОЖНОСТИ
Метрики Холстеда 
- длина программы; 
- объем программы 
- оценка ее реализации; 
- трудность ее понимания; 
- трудоемкость кодирования; 
- уровень языка выражения; 
- информационное содержание; 
- оптимальная модульность;
 
N = n1 log1 n1 + n2 log2 n
V = N log2
L*= (2 n2 )/ (n1 N2
Ec = V/ L
D = (n1N2) (2n2) = 1/ L
λ * = V/ D2 = V/ L* 2 
I = V / D 
M = n2*/6
Метрики Джилба 
- количество операторов цикла;
 
L1oop
Продолжение таблицы 1
1 2
- количество  операторов условия; 
- число модулей или подсистем;

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

L IF 
L mod

f = N4SV / L mod 

f * = N*SV / L

Метрики Мак-Кейба- цикломатическое число; 
- цикломатическая сложность;
 
λ (G) = m - n + p 
ν (G) = λ (G) +1 = m - n + 2
Метрика Чепена 
- мера трудности понимания программ на основе входных и выходных данных;
 
H = 0.5T+P+2M+3C
Метрика Шнадевида 
- число путей в управляющем графе
 
S = Σ Pi Ci
Метрика Майерса 
- интервальная мера;
 
[ν  1 ¸ ν 2]
Метрика Хансена 
- пара (цикломатическое число, число операторов)
 
{ ν , N}
Метрика Чена 
- топологическая мера Чена;
 
M(G) = (ν (G), N, Q0)
Метрика Вудворда 
- узловая мера (число узлов передач управления);
 
Y x
Метрика Кулика

- нормальное  число (число

 
Norm (P)
Продолжение таблицы 1
1 2
простейших  циклов в нормальной схеме программы);  
Метрика Хура 
- цикломатическое число сети Петри, отражающей управляющую структуру программы;
 
l (G*р)
Метрики Витворфа, Зулевского 
-мера сложности потока управления  
-мера сложности потока данных;
 
g (Р) 
W (Р)
Метрика Петерсона 
- число многовходовых циклов;
 
Nm 1 0 0 p
Метрики Харрисона, Мэйджела 
- функциональное число (сумма приведенных сложностей всех вершин управляющего графа);  
- функциональное отношение (отношение числа вершин графа к функциональному числу);  
- регулярные выражения (число операндов, операторов и скобок в регулярном выражении управляющего графа программы);
 
f1 = S c 1 
 

f* = N c1 / f1  
 

p(G) = N + L + Sk

Метрика Пивоварского 
- модифицированная цикломатическая мера сложности;
 
N(G) = n*(G) + S Pi
Метрика Пратта 
- тестирующая мера;
 
Test (Pr)
     
Продолжение таблицы 1
1 2
Метрика Кантоне 
- характеристические числа полиномов, описывающих
 
PCN*
управляющий граф программы;  
Метрика Мак-Клура 
- мера сложности, основанная на числе возможных путей выполнения программы, числе управляющих конструкций и переменных;
 
C(V) = D(V) ´ J(V) / N
Метрика Кафура 
- мера на основе концепции информационных потоков;
 
I(G)
Метрика Схуттса, Моханти 
- энтропийные меры;
 
e (G)
Метрика Коллофело 
- мера логической стабильности программ;
 
h (G)
Метрика Зольновского, Симмонса, Тейера  
Взвешенная сумма различных индикаторов: 
- (структура, взаимодействие, объем, данные); 
- (сложность интерфейса, вычислительная сложность, сложность ввода/вывода, читабельность);
 
 
 
 
å (a , b , g , n ) 

å (c , C , u , p )

Продолжение таблицы 1
1 2
Метрика Берлингера 
- информационная мера;
I(R) = m (F* (R) ´ F-(R))2
Метрика Шумана

- сложность с  позиции статистической теории языка;

 
X (Y)
Метрика Янгера 
- логическая сложность с учетом истории вычислений; 
Сложность проектирования 
Насыщенность комментариями 
Число внешних обращений  
Число операторов
 
L ( w ) 

Cc = å log2 (i + 1) [å n Cxy (n)] 
X = K/C 
Ci 
L1

ПРОГНОЗ МОДЕЛИ
Модели  Холстеда 
- прогноз системных ресурсов; 
- прогноз числа ошибок. 
Модель фирмы IBM 
Модель общей сложности 
Модели связности  
Сплайн-модель
 
P=3/8 (Ra - 1) ´ 2Ra 
B = Nlog2 n / 3000 
B = 23M1 + M1 0  
B = 21.1 + 0.1 V + COMP (S) 
Pij = 0.15 (Si + Sj) + 0.7 Cij  
Pij = ½
å l i (D Zij2 + D Nij2 ) ln (D Zij2 + D Nij2 ) + a + b Zi + g N1
ОЦЕНОЧНЫЕ МОДЕЛИ
Джелински - Моранды R(t) = e - (Т - 1 + 1) Ft
Вейса-Байеса R1(t) = ò òe-l - (i-1) F)t Y(l, F/t1, ..., ti-1) dl
Шика-Волвертона R1(t) = e - F( N - 1 + 1) ti2 / 2
Литтлвуда R1 (t) = (b+t/b+t +t)- F(N - i + 1) a
Нельсона Rj (t) = exp { åln (1 - Pj)}
Халецкого Rj (t) = Pµ- a(1- g nj ) / nj
Окончание таблицы 1
1 2
Модель  отлаженности Rj (t) =Pµ- r fj (t, l ,p)
Мозаичная модель Rj (t) = 1 - b( a - wj - 1)
 

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

      Общим, инвариантно присущим любому ПО (и  связанной с его корректностью), является его структура. Важно связать  это обстоятельство с определенным значением структурной сложности в совокупности мер сложности ПО. И более того, при анализе структурной сложности целесообразно ограничиться только ее топологическими мерами, т.е. мерами, в основе которых лежат топологические характеристики граф-модели программы. Эти меры удовлетворяют подавляющему большинству требований, предъявляемых к показателям: общность применимости, адекватность рассматриваемому свойству, существенность оценки, состоятельность, количественное выражение, воспроизводимость измерений, малая трудоемкость вычислений, возможность автоматизации оценивания.

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

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

      Дж. Майерс предложил в качестве меры сложности интервал [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 - той предикатной вершины.

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

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

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

  1. Мера сложности простого оператора равна 1;
  2. М ({F1; F2; ;Fn}) = еin M(Fi);
  3. М (if P then F1 else F2) = 2 MAX (M (F1), M (F2));
  4. М (while P do F) = 2 M(F).

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

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

      Топологическая  мера Чена выражает сложность программы  числа пересечений границ между  областями, образуемыми блок - схемой программы. Этот подход применим только к структурированным программам, допускающим лишь последовательное соединение управляющих конструкций. Для неструктурированных программ мера Чена существенно зависит от условных и безусловных переходов. В этом случае можно указать верхнюю и нижнюю границы меры. Верхняя - есть m+1, где m - число логических операторов при их гнездовой вложенности. Нижняя - равна 2. Когда управляющий граф программы имеет только одну компоненту связности, мера Чена совпадает с цикломатической мерой Мак-Кейба.

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

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

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

1.3.4 Объектно-ориентированные метрики

      В современных условиях большинство  программных проектов создается  на основе ОО подхода, в связи с  чем существует значительное количество метрик, позволяющих получить оценку сложности объектно-ориентированных проектов. [10] 

      Объектно-ориентированные  метрики

      Таблица 2

Метрика Описание
1 2
Взвешенная  насыщенность класса 1 (Weighted Methods Per Class (WMC)) Отражает относительную  меру сложности класса на основе цикломатической сложности каждого его метода. Класс с более сложными методами и большим количеством методов считается более сложным. При вычислении метрики родительские классы не учитываются.
Взвешенная  насыщенность Мера сложности  класса, основанная на том, что класс с большим числом методов, является более сложным, и что
Окончание таблицы 2
1 2
класса 2 (Weighted Methods Per Class (WMC2)) метод с большим  количеством параметров также является более сложным. При вычислении метрики родительские классы не учитываются.
Глубина дерева наследования (Depth of inheritance tree) Длина самого длинного пути наследования, заканчивающегося на данном модуле. Чем глубже дерево наследования модуля, тем может оказаться сложнее предсказать его поведение. С другой стороны, увеличение глубины даёт больший потенциал повторного использования данным модулем поведения, определённого для классов-предков.
Количество детей (Number of children) Число модулей, непосредственно наследующих данный модуль. Большие значения этой метрики указывают на широкие возможности повторного использования; при этом слишком большое значение может свидетельствовать о плохо выбранной абстракции.
Связность объектов (Coupling between objects) Количество  модулей, связанных с данным модулем в роли клиента или поставщика. Чрезмерная связность говорит о слабости модульной инкапсуляции и может препятствовать повторному использованию кода.
Отклик на класс (Response For Class) Количество  методов, которые могут вызываться экземплярами класса; вычисляется как сумма количества локальных методов, так и количества удаленных методов

Информация о работе Критерии качества програмного обеспечения