Автор работы: Пользователь скрыл имя, 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
Из уравнения работы получено следующее уравнение ошибок в программе
B=L´E/E0, (13)
где В - количество ошибок в программе,
Е0 - среднее число элементарных отличий между возможными ошибками программирования.
Используя
преобразованное уравнение
Е= (V*)3/l2, (14)
значение уровня английского языка (l=2,16) в качестве аналога языка программирования и гипотезу о «шести объектах» идеальной по затратам памяти программы (n1=n1*=2, n2=n2*=6), Холстед вывел следующее уравнение для прогноза количества ошибок в программе:
В=Е 2/3 /3000, (15)
или
В=V/3000, (16)
где V - объем программы.
Кроме своего прямого назначения в практическом отношении метрики длины программы (3) и длины реализации (2) можно использовать для выявления несовершенств программирования. Если расчеты длины программы и длины реализации отличаются более чем на десять процентов, то это свидетельствует о возможном наличии в программе следующих шести классов несовершенств:
(17)
или более грубо, с помощью неравенства
2´P£ N £ 4´P. (18)
Уравнение работы (9) можно использовать для оценки экономической эффективности использования того или иного языка программирования. Относительное сокращение работы по программированию в зависимости от уровня языка используют как показатель эффективности внедрения языка программирования в производственную практику.
Уровень программы 0<L£1 можно использовать для оценки сложности вариантов реализации заданного алгоритма D (чем меньше затрат памяти, тем сложнее вариант программы):
(19)
Отметим, что уровень программы играет двойственную роль в оценке трудности или легкости ее понимания . Специалист, который хорошо знает язык программирования, поймет программу тем быстрее, чем меньше ее объем, то есть выше уровень. Но для человека, менее разбирающегося в программировании, требуется больший объем и меньший уровень. Установлено, что для любого алгоритма, описанного разными языками, с увеличением объема программы V уровень программы L уменьшается в той же пропорции. Поэтому произведение уровня программы на объем является постоянной величиной, равной потенциальному объему реализации данного алгоритма.
L ´ V = V* = const. (20)
Вместе с тем, если язык не меняется, а меняется только алгоритм, то для любого языка произведение потенциального объема на уровень программы остается постоянной величиной, равной уровню языка [14]
L ´ V = l = const. (21)
1.3.6 Метрики цикломатической сложности по Мак-Кейбу
Показатель
цикломатической сложности
Показатель
цикломатической сложности
Для вычисления цикломатического числа Мак-Кейба l(G) применяется формула:
l(G) = m - n + 2p,
где m - число дуг ориентированного графа G;
n - число вершин;
p - число компонентов связности графа.
Мак-Кейб использует следующую теорему: в сильно связанном графе G цикломатическое число равно максимальному числу линейно-независимых циклов.
Применяя эту теорему, число компонентов связности графа можно рассматривать как количество дуг, которые необходимо добавить для преобразования графа в сильно связный. Сильно связным называется граф, любые две вершины которого взаимно достижимы. Для графов корректных программ, т. е. графов, не имеющих недостижимых от точки входа участков и "висячих" точек входа и выхода, сильно связный граф, как правило, получается путем замыкания дугой вершины, обозначающей конец программы, на вершину, обозначающую точку входа в эту программу.
Упрощенная формула вычисления цикломатической сложности представляется следующим образом:
l(G) = m - n + 2
Как правило, при вычислении цикломатической сложности логические операторы не учитываются.
В процессе автоматизированного вычисления показателя цикломатической сложности, как правило, применяется упрощенный подход, в соответствии с которым построение графа не осуществляется, а вычисление показателя производится на основании подсчета числа операторов управляющей логики (if, switch и т.д.) и возможного количества путей исполнения программы.
Общий
подход состоит в оценке сложности
программы с помощью вычисления
числа линейно-независимых
В физическом смысле цикломатическое число для каждой дуги m=(v, u)| mÎM графа управления первая вершина (v) является исходной, а вторая (u) – конечной. Путь от одной вершины к другой вершине графа, если он состоит более чем из одной дуги, описывают последовательностью вершин соответствующих дуг (v, а,…, u) так, что исходная вершина будет первой в перечислении, а конечная – последней. Контур – это плоскость, ограниченная циклическим путем, в котором начальная и конечная вершина графа совпадают. Каждому контуру соответствует ограничивающий его путь, ведущий из начальной вершины графа в конечную.
Цикломатическое число определяет количество независимых контуров в полносвязном графе и, как следствие, количество различных путей, ведущих из начальной вершины в конечную.
В практическом аспекте цикломатическое число является мерой сложности программы и определяет количество тестов, достаточных для тестирования по критерию покрытия всех ветвей программы.
При оценке сложности программы с использованием цикломатического числа Мак-кейба действует следующее правило: если цикломатическое число больше десяти, программа обладает излишней сложностью и ее следует разбить на составные части (независимые модули или подпрограммы) с меньшим значением цикломатического числа.
Показатель
цикломатической сложности
Оценка
цикломатической сложности Мак-
Вычисление
метрики в ходе реализации проекта
(а при детальном
Рассмотрим пример. Пусть имеется программа, которая считывает из входного потока символы до тех пор, пока не будет обнаружен символ «#». Текст программы на языке Паскаль представлен на рис 6. Соответствующий граф управления программы показан на рис 7.
Рис 6. Программа ввода данных
Для представления программы в виде графа требуются определенные соглашения о том, что считать узлом графа, так как синтаксис операторов в языках программирования довольно разнообразен. При этом обычно учитывают только исполнимые операторы, исключая операторы описания данных. Желательно подобрать такие синтаксические формы операторов, которые в наибольшей степени подходят для отображения узлом графа. Линейные участки программы можно заменить одним узлом графа. В этом отношении использование схем алгоритмов или описание программ на псевдокоде может оказаться даже более предпочтительной формой описания программы, чем текст на языке программирования. В любом случае желательно преобразовать операторы цикла в эквивалентную последовательность операторов ветвления, добавив, при необходимости, операторы суммирования (счетчики) числа повторений цикла с «верхним» или «нижним» окончанием.
Рис 7. Граф управления
программы ввода данных
Рис 8. Преобразование
графа управления программы ввода данных
в полносвязный граф
Определим цикломатическое число Маккейба для графа управления программы, изображенного на рис 7. Количество ребер графа равно пяти, количество вершин тоже равно пяти, поэтому цикломатическое число равно:
l(G)=5-5+2=2
Программа организации ввода данных, имеющая граф управления с цикломатическим числом, равным 2, не обладает излишней сложностью и для ее тестирования достаточно подобрать два теста, покрывающие ветви (а, b, с) и (а, u) (рис 4). Заметим, что вершины v и а графа управления программы можно объединить, что не приведет к изменению цикломатического числа. Цикломатическое число зависит только от количества управляющих операторов, содержащих условные выражения (предикаты). При этом сложность предиката не учитывается. Если в операторе цикла while программы организации ввода данных (рис 4) усложнить условное выражение (предикат), изменив заголовок
while(s<>'#') на while(s<>'#' or s<>'*') граф управления и цикломатическое число останутся прежними.
Если программа содержит только операторы ветвления (без операторов выбора и переключения), цикломатическое число можно определить, используя выражение
Информация о работе Критерии качества програмного обеспечения