Оценивание качества программного обеспечения САПР на основе метрических характеристик

Тип работы:
Реферат
Предмет:
Общие и комплексные проблемы естественных и точных наук
Узнать стоимость новой

Детальная информация о работе

Выдержка из работы

© Е. Е. Карпович, 2013
УДК 681. 324. 067 Е.Е. Карпович
ОЦЕНИВАНИЕ КАЧЕСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ САПР НА ОСНОВЕ МЕТРИЧЕСКИХ ХАРАКТЕРИСТИК
Определено назначение метрических характеристик качества программного обеспечения. Представлена классификация программных метрик. Рассмотрены существующие подходы к определению метрик программного продукта. Обсуждаются возможности автоматизации определения, анализа и визуализации метрических характеристик программ на языках высокого уровня.
Ключевые слова: сложность программ, программные метрики, языки программирования высокого уровня, язык М001ЛА-2.
Метрология программного обеспечения является относительно новым и весьма актуальным направлением технологии программирования, связанным с измерением различных характеристик программ и процесса их разработки. С помощью метрик можно оценивать стоимость программных проектов, управлять ресурсами проектирования, оценивать эффективность методов и инструментальных средств разработки программного обеспечения, а также качество и надежность разрабатываемых программ.
Метрики включают в себя измерения сложности, трудоемкости программирования, корректности, тестируемости, познаваемости, сопровождаемости, достоверности и точности, оценки ресурсов, стоимости разработки программных продуктов, распределения персонала и.т.д.
Термин «метрика программного обеспечения» означает числовую характеристику некоторого свойства программы. Метрики обеспечивают количественный подход к оцениванию качества программного обеспечения и процесса его разработки.
Одной из важнейших проблем метрологии программных продуктов является формализация характеристик качества и методология их оценки. Для определения адекватности качества функционирования программ, наличия технических возможностей программных средств к взаимодействию, совершенствованию и развитию необходимо использовать стандарты в области оценки характеристик их качества. Основой регламентирования показателей качества программных средств ранее являлся международный стандарт ISO 9126: 1991 (ГОСТ Р ИСО/ МЭК 9126−93) & quot-Информационная технология. Оценка программного продукта. Характеристики качества и руководство по их применению& quot-.
Завершается разработка и формализован последний проект состоящего из четырех частей стандарта ISO 9126−1-4 для замены небольшой редакции 1991 года. Проект состоит из следующих частей под общим заголовком & quot-Информационная технология — характеристики и метрики качества программного обеспечения& quot-: & quot-Часть 1. Характеристики и субхарактеристики качества& quot- Часть
2. Внешние метрики качества& quot- & quot-Часть 3. Внутренние метрики качества& quot- & quot-Часть 4. Метрики качества в использовании& quot- (см. публикации Липаева В. В. [1,2]).
Результаты исследования метрических характеристик качества представлены в SWEBOK (Software Engineering Body of Knowledge), в документ, издаваемый комитетом Software Engineering Coordinating Committee, в который вовлечено сообщество IEEE Computer Society. Назначение SWEBOK состоит в объединении знаний по инженерии программного обеспечения (разработке программного обеспечения) [3].
Рассмотрим способы классификация измеряемых характеристик программного обеспечения. В настоящее время в программной инженерии еще не сформировалась окончательно система метрик. Действуют разные подходы к определению их набора и методов измерения. Однако всП множество метрик программного обеспечения можно разбить на три большие группы:
& gt- метрики программного продукта, которые используются при измерении его характеристик — свойств-
& gt- метрики процесса, которые используются при измерении свойства процесса ЖЦ создания продукта.
& gt- метрики использования.
Метрики программного продукта включают:
• внешние метрики, обозначающие свойства продукта, видимые пользователю-
• внутренние метрики, обозначающие свойства, видимые только команде разработчиков.
• Внешние метрики продукта — это метрики:
• надежности продукта, которые служат для определения числа дефектов-
• функциональности, с помощью которых устанавливаются наличие и правильность реализации функций в продукте-
• сопровождения, с помощью которых измеряются ресурсы продукта (скорость, память, среда) — применимости продукта, которые способствуют определению степени доступности для изучения и использования-
• стоимости, которыми определяется стоимость созданного продукта.
• Внутренние метрики продукта включают:
• метрики размера, необходимые для измерения продукта с помощью его внутренних характеристик-
• метрики сложности, необходимые для определения сложности продукта-
• метрики стиля, которые служат для определения подходов и технологий создания отдельных компонентов продукта и его документов.
Внутренние метрики позволяют определить производительность продукта и являются релевантными по отношению к внешним метрикам.
Внешние и внутренние метрики задаются на этапе формирования требований к программному обеспечению предметом планирования и управления достижением качества конечного программного продукта.
Метрики продукта часто описываются комплексом моделей для установки различных свойств, значений модели качества или прогнозирования. Стандарт ISO/IEC 9126−2 определяет следующие типы мер:
• мера размера программ в разных единицах измерения (число функций, строк в программе, размер дисковой памяти и др.) —
• мера времени (функционирования системы, выполнения компонента и др.) —
• мера усилий (производительность труда, трудоемкость и др.) —
• мера учета (количество ошибок, число отказов, ответов системы и др.).
Примером широко используемых метрик программных продуктов являются
метрики Холстеда — это характеристики программ, выявляемые на основе статической структуры программы на конкретном языке программирования: число вхождений наиболее часто встречающихся операндов и операторов- длина описания программы как сумма числа вхождений всех операндов и операторов и др.
Метрики процесса включают время разработки, число ошибок, найденных на этапе тестирования и др. Практически используются следующие метрики процесса:
• общее время разработки и отдельно время для каждой стадии-
• время модификации моделей-
• время выполнения работ на процессе-
• число найденных ошибок при инспектировании-
• стоимость проверки качества-
• стоимость процесса разработки.
Метрики использования служат для измерения степени удовлетворения потребностей пользователя при решении его задач. Они помогают оценить не свойства самой программы, а результаты ее эксплуатации — эксплуатационное качество. Примером может служить — точность и полнота реализации задач пользователя, а также затраченные ресурсы (трудозатраты, производительность и др.) на эффективное решение задач пользователя. Оценка требований пользователя проводится с помощью внешних метрик.
Рассмотрим подробно метрики программного продукта, базирующиеся на статистическом анализе текстов программ. К ним относятся:
• метрики, основанные на лексическом анализе программ,
• метрики структурной сложности.
Лингвистические исследования количественных характеристик текстов позволили установить ряд эмпирических закономерностей, имеющих важное значение и в текстах программ на языках высокого уровня. Результаты таких исследований впервые были опубликованы в работе М. Холстеда [4]. Любая программа определяет некоторое упорядоченное множество действий над операндами с помощью операторов. Операнд — это некоторая постоянная или переменная величина, обрабатываемая в программе, а оператор представляет собой обозначение конкретного действия, выполняемого по отношению к операнду.
Исходя из идентификации операторов и операндов в тексте программы, можно определить ряд измеряемых свойств, в состав которых Холсте дом включены следующие основные метрические характеристики:
• nul — число отдельных (уникальных) операторов в программе-
• nu2 — число отдельных (уникальных) операндов в программе-
• N1 — общее число всех операторов в программе-
• N2 — общее число всех операндов в программе-
• flj — частота встречаемости j-го оператора в программе, где j = 1,2, «. nul-
• f2i — частота встречаемости i-го операнда в программе, где i = 1,2, … nu2.
Лля выше перечисленных характеристик справедливы следующие соотношения:
nul nu2
N1 = X flj N2 = X f2i j=1 i=1 Учитывая эти основные метрические характеристики для программы, можно определить:
n=nu1+nu2 — словарь программы, N=N1+N2 — длина реализации программы,
N'-= nu1*log2(nu1) + nu2*log2(nu2) — теоретическая длина программы (для стилистически корректных программ отклонение N от N'- не превышает 10%) V=N*log2n — объем программы, L'-=2*nu2/(nu1*N2) — уровень программы,
Ep = N'-* log2n/L'- - оценка трудоемкости разработки программы, Ec = V/L'- - оценка трудоемкости изучения программы.
Словарь программы — это сумма отдельных операторов и отдельных операндов программы, длина реализации равна сумме всех операторов и операндов. Длина реализации программы N может быть близко аппроксимирована как функция N'-(n1,n2), эта аппроксимация является достаточно точной для хорошо написанных программ.
Оценка объема программы V представляет собой объем программы в битах, делая его независимым от набора символов языка, на котором написана программа. Уровень программы является мерой краткости реализации алгоритма. Наивысшим уровнем, на котором может быть представлен алгоритм, представляется в форме вызова процедуры. Уровень такого представления равен 1. Более длинные представления алгоритма, включающие много операторов и повторяющееся использование операндов, имеют более низкий уровень.
По определению уровень L=V/V*, где V* - объем операции, выраженной в виде вызова процедуры. Определение V* - непростая задача, поэтому используют оценку уровня L'- по формуле: L'-=2*nu2/(nu1*N2).
Предполагая, что трудоемкость программирования возрастает при увеличении объема программы и уменьшается при увеличении уровня, Холстед предложил в качестве трудоемкости разработки программы оценку Ep, получаемую по формуле: Ep =V/L = N'-* log2n/L'-.
Для оценки трудоемкости изучения текста программы была предложена оценка Ec, которая вычисляется по формуле: Ec=V/N'-.
Были проведены эксперименты, подтверждающие практичность метрической теории программ для различных языков высокого уровня [5].
Структурная сложность программ определяется:
• количеством взаимодействующих компонентов-
• сложностью взаимодействия-
• числом связей между компонентами.
На уровне программной единицы (процедуры, подпрограммы) структурную сложность можно оценить с помощью метрики Мак-Кейба [6]. Мак-Кейб выполнял численные измерения независимых путей выполнения в программах на основе анализа их исходных текстов и предложил в качестве меры сложности тестирования программ использовать цикломатическое число управляющего графа программы.
Любая программа (или алгоритм) представляется в виде управляющего ориентированного графа G=(V, E) c V вершинами и E дугами, где вершины соответствуют операторам, а дуги определяют передачи управления от одного оператора к другому. Такой граф называется графом потока управления или управляющим графом программы. Цикломатическое число управляющего графа программы определяется по формуле: Cm=m-n+2,
где m — количество дуг графа, n — число вершин графа.
Метрика Мак-Кейба Cp или цикломатическая сложность программы (или подпрограммы) — это число линейно независимых маршрутов, проходящих через программный код, она равно цикломатическому числу управляющего графа программы, увеличенному на 1, Cp=Cm+1. Метрику Мак-Кейба можно определять на основе статического анализа текста программы следующим образом:
Ср=1, если программа линейной структуры, т. е. не включает операторы IF-ELSE, CASE и циклы.
В общем случае, если программа включает условные операторы и циклы, то Ср = CI+CLOOP+ICASE +1-
где CI — число условных операторов- CLOOP — число операторов цикла- ICASE — число ветвей в операторах CASE.
Рассмотрим возможности автоматизации определения, анализа и визуализации метрических характеристик программ. Примеры практического освоения методов метрического оценивания программ и задания для лабораторных работ представлены в практикуме Черникова Б. В. и Поклонова Б. Е. [7]. В данном учебном пособии студентам предлагается вручную просматривать тексты простых программ и оценивать их с использованием метрик. Лля более сложных программ объем ручных расчетов существенно возрастает, что приводит к ошибкам в оценке программного обеспечения. В связи с этим становится актуальной проблема разработки инструментальных программных средств поддержки процесса оценивания качества программного обеспечения. Примером такой программы является разработанная автором программа MERA, предназначенная для оценивания сложности программ на языке MODULA-2 и описанная в [8, 9].
Язык MODULA-2 — это паскаль — подобный язык программирования, разработанный Н. Виртом для создания системного программного обеспечения в 1977 году в Институте информатики г. Цюриха. Язык Модула-2 — структурный, модульный язык программирования, с синтаксисом, основанным на языке
Паскаль. Компиляторы языка Модула-2 были разработаны для персональных ЭВМ, работающих под управлением операционной системы MS DOS, в начале 90-х годов прошлого века.
Программа MERA предназначена для автоматизации вычисления метрических характеристик сложности программ на языке Модула-2. Исходными данными для подсистемы является синтаксически правильный текст программного модуля или модуля реализации, содержащий произвольное количество вложенных процедур. Программа MERA является статическим анализатором исходного текста программ и выполняет следующие функции:
— определение метрических характеристик модуля-
— определение метрических характеристик вложенных процедур-
— вычисление суммарных метрик сложности и трудоемкости разработки модуля.
Результаты записываются текстовый файл, имя которого совпадает с именем модуля, а расширение —. mtr. Пример файла метрик приведен ниже.
Программа MERA выполняет следующие действия:
1. Вводит имя файла, в котором находится измеряемая программа пользователя. Файл имеет расширение & quot-. mod"-
2. Формирует имя файла, в который записывается метрические характеристики. Файл имеет имя & lt-имя программы& gt-. 1^г
3. Текст программы пользователя считывается в оперативную память в массив TEXTPGM и формируется таблица внутренних процедур с помощью процедуры VVODMOD.
4. Затем в цикле производится анализ текста модуля и входящих в него процедур и расчет метрик.
5. Тексты процедур считываются в оперативную память с помощью процедуры VVODPRC.
6. Для модуля подсчитывается число импортируемых процедур с помощью процедуры CHETIMP- для процедуры — число параметров KPAR с помощью процедуры PARPROC.
7. Определение числа констант NCS производится с помощью процедуры CHETCONS.
8. Анализ описаний переменных и построение таблицы переменных производится процедурой CHETVAR.
9. С помощью процедуры CHETOPR производится анализ текста выполняемых операторов программы пользователя, построение таблицы операторов TABOPR и определение следующих элементарных метрик программы:
ETA1 — ЧИСЛО ОТДЕЛЬНЫХ ОПЕРАТОРОВ-
ETA2 — ЧИСЛО ОТДЕЛЬНЫХ ПЕРЕМЕННЫХ-
NO1 — ОБЩЕЕ ЧИСЛО ОПЕРАТОРОВ-
NO2 — ОБЩЕЕ ЧИСЛО ИСПОЛЬЗОВАНИЙ ПЕРЕМЕННЫХ-
ICASE -ОБЩЕЕ ЧИСЛО АЛЬТЕРНАТИВ В ОПЕРАТОРАХ CASE.
10. На основе этих элементарных характеристик производится подсчет метрик Холстеда процедурой HMETRIC и топологических метрик с помощью процедуры FPMERA. Выходные результаты записываются в файл с именем & lt-имя программы& gt-. и^.
Пример файла метрических характеристик. MODULE TEST4-
(* ВСТРОЕННЫЕ ФУНКЦИИ ОБРАБОТКИ СТРОК *) FROM InOut IMPORT ReadString, WriteString, WriteCard, WriteLn, WriteInt- FROM Strings IMPORT Concat, CompareStr, Assign, Copy, Delete,
Insert, Length, Pos- VAR S1, S2: ARRAY[0. 80] OF CHAR- STR: ARRAY[0. 80] OF CHAR-
I: CARDINAL- CHR: CHAR- BEGIN
WriteString ('- ВВЕДИТЕ СТРОКУ '-) — WriteLn- ReadString (STR) — WriteLn- WriteString (STR) — WriteLn- WriteString ('- ПРИСВАИВАНИЕ '-) — WriteLn- WriteString ('-Assing (STR, S1) S1= '-) — Assign (STR, S1) — WriteString (S1) — WriteLn- WriteString ('- КОНКАТЕНАЦИЯ СТРОК '-) — WriteLn- WriteString ('-Concat (STR, S1, S2) S2= '-) — Concat (STR, S1, S2) — WriteString (S2) — WriteLn-
WriteString ('- ПЕРЕСЫЛКА СТРОКИ '-) — WriteLn- WriteString ('-Copy (S1,1,3,S2) S1, S2= '-) —
Copy (S1,1,3,S2) — WriteString (S1) — WriteLn- WriteString (S2) — WriteLn- WriteString ('- ДЛИНА СТРОКИ '-) — WriteLn- WriteString ('-Length (STR) '-) — WriteLn- I: =Length (STR) — WriteString ('-STR= '-) — WriteString (STR) — WriteString ('- Length (STR)= '-) — WriteCard (I, 4) — WriteLn- WriteString ('- УДАЛЕНИЕ СТРОКИ '-) — WriteLn- WriteString ('-Delete (STR, 1,6) STR= '-) — Delete (STR, 1,6) — WriteString (STR) — WriteLn- WriteString ('- ВСТАВКА ПОДСТРОКИ '-) — WriteLn- WriteString ('-Insert (& quot-***"-, STR, 4) STR= '-) — Insert ('-***'-, STR, 4) — WriteString (STR) — WriteLn-
WriteString ('- ОПРЕДЕЛЕНИЕ ПОЗИЦИИ ПОДСТРОКИ '-) — WriteLn- WriteString ('-Pos (& quot-***"-, STR) '-) — I: =Pos ('-***'-, STR) — WriteCard (I, 4) — WriteLn- WriteString ('-Pos (& quot-***"-, S1) '-) — I: =Pos ('-***'-, S1) — WriteCard (I, 4) — WriteLn- I: =Length (S1) — WriteString ('-Length (S1) = '-) — WriteCard (I, 4) — WriteLn- WriteString ('- СРАВНЕНИЕ СТРОК '-) — WriteLn- WriteString ('-CompareStr (S1,STR)= '-) — WriteInt (CompareStr (S1,STR), 4) — END TEST4.
МЕТРИЧЕСКИЕ ХАРАКТЕРИСТИКИ МОДУЛЯ TEST4 В МОДУЛЕ TEST4 НЕТ ОПИСАНИЙ ПРОЦЕДУР ДЛИНА МОДУЛЯ = 1972 ЧИСЛО СТРОК ИСХОДНОГО ТЕКСТА = 52 ЧИСЛО ИМПОРТИРУЕМЫХ МОДУЛЕЙ = 2
ЧИСЛО ИМПОРТИРУЕМЫХ ПРОЦЕДУР И ДРУГИХ ОБЪЕКТОВ = 13 В МОДУЛЕ TEST4 НЕТ ОПИСАНИЙ КОНСТАНТ
ЧИСЛО КОНСТАНТ ЫСБ = 0
ЧИСЛО ОБЪЯВЛЕНИЙ ПЕРЕМЕННЫХ ЕТА2= 5
ЧИСЛО ОПЕРАТОРОВ ЕТА1= 11
ЧИСЛО ПЕРЕМЕННЫХ ЕТА2= 5
ОБЩЕЕ ЧИСЛО ОПЕРАТОРОВ N01= 66
ОБЩЕЕ ЧИСЛО ИСПОЛЬЗОВАНИЙ ПЕРЕМЕННЫХ N02= 32
МЕТРИКИ ХОЛСТЕЛА
СЛОВАРЬ ПРОГРАММЫ — ЕТА = 16
ЛЛИНА ПРОГРАММЫ — N = 98
ОБЪЕМ ПРОГРАММЫ — V = 265. 38 892
ОЦЕНКА ЛЛИНЫ ПРОГРАММЫ — NH = 31. 92 203
УРОВЕНЬ ПРОГРАММЫ — LN = 0. 2 273
УСИЛИЯ НА ИЗУЧЕНИЕ ПРОГРАММЫ — ЕС = 11 677. 11 247
УСИЛИЯ НА РАЗРАБОТКУ ПРОГРАММЫ — ЕР = 21 068. 53 679
ПОТОКОВЫЕ МЕТРИКИ
МЕТРИКА МАК-КЕЙБА СР = 1
ОБОБЩЕННАЯ ПОТОКОВАЯ МЕТРИКА ЕР = 41
* ТАБЛИЦА ПЕРЕМЕННЫХ
* ИМЯ ПЕРЕМЕННОЙ * ЧИСЛО ИСПОЛЬЗОВАНИЙ
и»
* Б1 * 8 *
* Б2 * 4 *
* БТН * 12 *
* I * 8 *
* CHR * 0 *
* ТАБЛИЦА ОПЕРАТОРОВ
* ИМЯ ОПЕРАТОРА 51! * ЧИСЛО ИСПОЛЬЗОВАНИЙ
* WriteString * 29 *
* WriteLn * 22 *
* ReadString * 1 *
* Assign * 1 *
* Concat * 1 *
* Copy * 1 *
!I! # _ * 4 *
* WriteCard * 4 *
* Delete * 1 *
* Insert * 1 *
* WriteInt * 1 *
СУММАРНЫЕ ЗНАЧЕНИЯ МЕТРИК
СУММАРНОЕ ЗНАЧЕНИЕ МЕТРИКИ УСИЛИЙ НА РАЗРАБОТКУ ЕРБиМ = 21 068. 53 679
СУММАРНОЕ ЗНАЧЕНИЕ МЕТРИКИ УСИЛИЙ НА ИЗУЧЕНИЕ
БСБиМ = 11 677. 11 247
СУММАРНОЕ ЗНАЧЕНИЕ МЕТРИКИ МАК-КЕЙБА СРБиМ = 1 СУММАРНОЕ ЗНАЧЕНИЕ ОБОБЩЕННОЙ ПОТОКОВОЙ МЕТРИКИ ЕРБиМ = 41
СУММАРНОЕ ЗНАЧЕНИЕ МЕТРИКИ & quot-ЧИСЛО СТРОК В ПРОГРАММЕ НБТНБиМ = 52
СУММАРНОЕ ЗНАЧЕНИЕ МЕТРИКИ & quot-ЛЛИНА ПРОГРАММЫ& quot- ОГБиМ = 1972
СУММАРНОЕ ЗНАЧЕНИЕ МЕТРИКИ & quot-ЧИСЛО ОПЕРАТОРОВ& quot- ШБУМ = 66
Заключение
Язык MODULA-2 не получил такого широкого применения, как языки программирования Pascal, C++ и C#. Тем не менее, выше описанный алгоритм анализа исходного кода и определения метрических характеристик сложности программ является основой для разработки статических анализаторов программного кода на языках Pascal, C++ и C# современных версий. Такие статические анализаторы могут использоваться в учебном процессе при проведении практических и лабораторных занятий по дисциплинам «Технология программирования» и «Метрология программного обеспечения».
— СПИСОК ЛИТЕРАТУРЫ
1. Липаев В. В. Выбор и оценивание характеристик качества программных средств. Методы и стандарты. М: СИНТЕГ, 2001, -228 с.
2. Липаев В. В. Программная инженерия. Методологические основы. Учебник. — Москва: Теис, 2006.- 608 с.
3. http //swebok. sorlik. ru/10_software_quality. html
4. M. Halstead Elements of software science. 1977. Purdue University/ Имеется русский перевод — Холстед М. Начала науки о программах: пер. с англ. М.: Финансы и статистика, 1981. — 128 с.
5. Gordon R. D. Measuring improvement in program clarity. — IEEE Transations of software engineering, v. SE-5, N 2, 1979, c. 79−90.
6. McCabe T. J. A complexity measure. — IEEE Transations of software engineering, v. SE-2, N 4, 1976, c. 308−320.
7. Черников Б. В., Поклонов Б. Е. Оценка качества программного обеспечения: Практикум: Учебное пособие. М.: ИД ФОРУМ, 2012.- 400 с.
8. Инструментальная система тестирования, отладки и оценки качества программ на языке Модула-2. Отчет о НИР. ДЕП.№ 90. Г20 428. НИОВТ МЭИ, 1990, 2-й, промежуточный — 41 с. Научный руководитель: Рякин О. М.
9. Программная документация по инструментальной системе программирования на языке Модула-2. Отчет о НИР. ДЕП. № 91. Г27 021. НИОВТ МЭИ, 1991, 3-й, заключительный, 61 с. Научный руководитель: Рякин О. М. ЕШ
КОРОТКО ОБ АВТОРЕ —
Карпович Елена Евгеньевна — доцент кафедры САПР, Московский государственный горный университет, informatik08@mail. ru

Показать Свернуть
Заполнить форму текущей работой