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

Автор работы: Пользователь скрыл имя, 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 Мб (Скачать файл)
 

1.3.5 Метрики Холстеда

      Метрика Холстеда относится к метрикам, вычисляемым  на основании анализа числа строк  и синтаксических элементов исходного  кода программы.

      Основу  метрики Холстеда составляют четыре измеряемые характеристики программы:

  • NUOprtr (Number of Unique Operators) — число уникальных операторов программы, включая символы-разделители, имена процедур и знаки операций (словарь операторов);
  • NUOprnd (Number of Unique Operands) — число уникальных операндов программы (словарь операндов);
  • Noprtr (Number of Operators) — общее число операторов в программе;
  • Noprnd (Number of Operands) — общее число операндов в программе.

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

      n1 - количество различных операторов  программы;

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

      N1 - общее количество операторов  программы;

      N2 - общее количество операндов  программы.

      На  их основе Холстед определяет следующие метрики:

  • словарь программы (в условных единицах)

         n = n1+n2, (1)

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

         n* = n1* + n2*

  • длина программы (в условных единицах)

         N = N1+N2 (2)

  • теоретическая длина программы (в условных единицах)

         Ñ = (n1 ´ log2 n1)+(n2´log2 ´ n2), (3)

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

      Несовершенствами  можно считать следующие ситуации:

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

      Подобные  ситуации приводят к изменению N без  изменения n.

      Холстед утверждает, что для стилистически  корректных программ отклонение в оценке теоретической длины Ñ от реальной N не превышает 10%.

      Предлагается использовать Ñ как эталонное значение длины программы со словарем n. Длина корректно составленной программы N, т. е. программы, свободной от избыточности и имеющей словарь n, не должна отклоняться от теоретической длины программы Ñ более чем на 10%. Таким образом, измеряя n1, n2, N1 и N2 и сопоставляя значения N и Ñ для некоторой программы, при более чем 10%-ном отклонении можно говорить о наличии в программе стилистических ошибок, т. е. несовершенств.

      На  практике N и Ñ часто существенно  различаются.

  • объем программы (в битах, определение объема программы предполагает, что обозначение операндов и операторов требует не более одного символа).

         V = N´ log2(n)  (4)

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

         V* = n* ´ log2 n* (5)

             где n2* - общее число  входных и выходных параметров.

  • уровень качества программы (в условных единицах, если n2*=2)

         L = V*/ V (6)

      Исходным  для введения этой характеристики является предположение о том, что при снижении стилистического качества программирования уменьшается содержательная нагрузка на каждый компонент программы и, как следствие, расширяется объем реализации исходного алгоритма. Учитывая это, можно оценить качество программирования на основании степени расширения текста относительно потенциального объема V*. Очевидно, для идеальной программы L=1, а для реальной - всегда L<1.

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

         L* = 2 ´ n2 / (n1 ´ N2)

  • уровень языка - это коэффициент пропорциональности изменения объема программы при переводе с одного языка на другой так, что обеспечивается постоянство произведения уровня программы на потенциальный объем.

         l=L ´ V* (7)

  • интеллектуальное содержание программы (инвариантное по отношению к используемым языкам реализации, в условных единицах)

         I=L* ´ V (8)

      Преобразуя  выражение (8) с учетом (6), получаем

         I = L* ´ V = L´V = V*´V/V = V*.

      Эквивалентность I и V* свидетельствует о том, что  мы имеем дело с характеристикой  информативности программы.

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

    1. осмысление предложения известного алгоритма;
    2. запись предложения алгоритма в терминах используемого языка программирования, т. е. поиск в словаре языка соответствующей инструкции, ее смысловое наполнение и запись.

      Используя эту формализацию в методике Холстеда, можно сказать, что написание программы по заранее известному алгоритму есть N^-кратная выборка операторов и операндов из словаря программы n, причем число сравнений (по аналогии с алгоритмами сортировки) составит log2(n).

      Если  учесть, что каждая выборка-сравнение  содержит, в свою очередь, ряд мысленных  элементарных решений, то можно поставить  в соответствие содержательной нагрузке каждой конструкции программы сложность  и число этих элементарных решений. Количественно это можно характеризовать с помощью характеристики L, поскольку 1/L имеет смысл рассматривать как средний коэффициент сложности, влияющий на скорость выборки для данной программы. Следовательно можно рассчитать оценку необходимых интеллектуальных усилий.

  • оценка интеллектуальных усилий (в условных единицах)

         E = N* ´ log2 (n / L) (9)

      E характеризует число требуемых  элементарных решений при написании программы.

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

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

         E* = N ´ log2 (n / L)

      Характеристика E* введена, исходя из предположения, что интеллектуальные усилия на написание и восприятие программы очень близки по своей природе. Однако если при написании программы стилистические погрешности в тексте практически не должны отражаться на интеллектуальной трудоемкости процесса, то при попытке понять такую программу их присутствие может привести к серьезным осложнениям. Эта посылка достаточно хорошо согласуется с нашими выводами относительно взаимосвязи N и N^, изложенными выше.

      Преобразуя  формулу (9) с учетом выражений (4) и (6), получаем

         E = V ´ V / V*

      Такое представление E', а соответственно и E, так как E=E', наглядно иллюстрирует целесообразность разбиения программ на отдельные модули, поскольку интеллектуальные затраты оказываются пропорциональными квадрату объема программы, который всегда больше суммы квадратов объемов отдельных модулей.

  • время на программирование (в условных единицах)

         T = E/S,  (10)

         или Т@(n1´N2´log2n´(n1´log2n1+n2´log2n2))/(2´n2´S), (11)

             где S - число Страуда (5<S<20).

      Число Страуда Холстед принял равным 18 - число умственных операций в единицу  времени.

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

      Используя выражение для потенциального объема программы, Холстедом получены следующие  метрики:

      Число Страуда S определяется как число  «страудовских моментов» в секунду. «Страудовский момент» - это время, необходимое человеку для выполнения элементарного различения объектов, подобно различению кадров фильма. Страуд обнаружил, что человек способен различать от 5 до 20 объектов в секунду.

      Уровень программы L£1 характеризует эффективность реализации алгоритма относительно затрат памяти. Только для наиболее сжатой формы реализации алгоритма (V=V*) уровень программы имеет значение 1. Всем другим вариантам реализации соответствуют значения L<1.

      Интеллектуальное  содержание характеризует меру «сказанного» в программе, или ее «информативность». Интеллектуальное содержание (уровень) программы сильно коррелирует с потенциальным объемом (L»V*) и тоже не зависит от языка реализации.

      Работа  по программированию (уравнение мысленной  работы) характеризует величину умственной работы, связанной с написанием программного кода. Так как сумма квадратов двух величин всегда меньше квадрата их суммы, уравнение работы дает основание для разбиения программы на составные части - модули. Модульность снижает работу по программированию. Исследования возможностей оперативного мышления человека дают основания считать, что наиболее продуктивна ситуация, при которой для получения одного результата используется не более пяти объектов. В прикладном отношении этот результат называют гипотезой о «шести объектах». Для определения количества модулей M в программе Холстед рекомендует использовать выражение

         M= n2*/6, (12)

где n2* - общее количество входных и выходных переменных в программе.

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