PDF-файл из архива «Метрические особенности ООП систем», который расположен в категории » «. Всё это находится в предмете «проектирование программного обеспечения автоматизированных систем» из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе «остальное», в предмете «проектирование по автоматизированных систем» в общих файлах.
Просмотр PDF-файла онлайн
Текст 4 страницы из PDF
Этоувеличивает сложность, в связи с чем возрастает вероятность ошибок при проектировании.Высокие значения LCOM означают, что класс, вероятно, надо спроектировать лучше(разбиением на два или более отдельных класса). Любое вычисление LCOM помогает определитьнедостатки в проектировании классов, так как эта метрика характеризует качество упаковкиданных и методов в оболочку класса.Вывод: связность в классе желательно сохранять высокой, то есть следует добиваться низкогозначения LCOM.Набор метрик Чидамбера-Кемерера — одна из пионерских работ по комплексной оценкекачества ОО-проектирования.
Графы, вершины, ребра, инцидентность, смежность
Известны многочисленные предложения по усовершенствованию,развитию данного набора. Рассмотрим некоторые из них.Недостатком метрики WMC является зависимость от реализации. Приведем пример.9Рассмотрим класс, предлагающий операцию интегрирования.
Возможны две реализации:1) несколько простых операций:Set_interval (min. max)Setjnethod (method)Set_precision (precision)Set_function_to_integrate (function)Integrate;2) одна сложная операция:Integrate (function, min, max. method, precision)Для обеспечения независимости от этих реализаций можно определить метрику WMC2:nWMC 2 = ∑ (Количество параметров i − го метода ) .i =1Для нашего примера WMC2 = 5 и для первой, и для второй реализации. Заметим, для первойреализации WMC = 5, а для второй реализации WMC = 1.Дополнительно можно определить метрику Среднее число аргументов метода ANAM (AverageNumber of Arguments per Method):ANAM = WMC2/WMC.Полезность метрики ANAM объяснить еще легче.
Она ориентирована на принятые в ООпроектировании решения — применять простые операции с малым количеством аргументов, анесложные операции — с многочисленными аргументами.Еще одно предложение — ввести метрику, симметричную метрике LCOM. В то время какформула метрики LCOM имеет вид:LCOM = max (0, НЕ СВЯЗАНЫ — СВЯЗАНЫ),симметричная ей метрика Нормализованная NLСОМ вычисляется по формуле:NLCOM = СВЯЗАНЫ/(НЕ СВЯЗАНЫ + СВЯЗАНЫ).Диапазон значений этой метрики: 0 ≤ NLCOM ≤ 1, причем чем ближе NLCOM к 1, тем вышесвязанность класса.В наборе Чидамбера-Кемерера отсутствует метрика для прямого измерения информационнойзакрытости класса.
В силу этого была предложена метрика Поведенческая закрытостьинформации BIH (Behaviourial Information Hiding):BIH — (WEOC/WIEOC),где WEOC — взвешенные внешние операции на класс (фактически это WMC);WIEOC — взвешенные внутренние и внешние операции на класс.WIEОС вычисляется так же, как и WMC, но учитывает полный набор операций, реализуемыхклассом. Если BIH = 1, класс показывает другим классам все свои возможности.
ЧТО ТАКОЕ МЕТРИКА — РАССКАЗЫВАЕТ АЛЕКСЕЙ САВВАТЕЕВ
Чем меньше ВIM,тем меньше видимо поведение класса. BIH может рассматриваться и как мера сложности.Сложные классы, вероятно, будут иметь малые значения BIH, а простые классы — значения,близкие к 1. Если класс с высокой WMC имеет значение BIH, близкое к 1, следует выяснить,почему он настолько видим извне.Использование метрик Чидамбера-КемерераПоскольку основу логического представления ПО образует структура классов, для оценки еекачества удобно использовать метрики Чидамбера-Кемерера.
Для вычисления метрики LCOMнадо определить количество пар методов класса. Оно рассчитывается по формулеC m2 = m!/(2(m − 2)!) ,где т — количество методов класса.Поскольку в классе три метода, возможны три пары: op_al( )ор_а3() и ор_а2() количество свойств (вместе с приватными и наследуемыми экземплярными свойствами),которые инкапсулируются классом.Метрика WMC Чидамбера и Кемерера также является взвешенной метрикой размера класса.Большие значения CS указывают, что класс имеет слишком много обязанностей.
Ониуменьшают возможность повторного использования класса, усложняют его реализацию итестирование.При определении размера класса унаследованным (публичным) операциям и свойствампридают больший удельный вес. Причина — приватные операции и свойства обеспечиваютспециализацию и более локализованы в проекте.Могут вычисляться средние количества свойств и операций класса.
Чем меньше среднеезначение размера, тем больше вероятность повторного использования класса.Рекомендуемое значение CS ≤ 20 методов.Метрика 2: Количество операций, переопределяемых подклассом, NOO(Number of Operations Overridden by a Subclass)Переопределением называют случай, когда подкласс замещает операцию, унаследованную отсуперкласса, своей собственной версией.Большие значения NOO обычно указывают на проблемы проектирования. Ясно, что подклассдолжен расширять операции суперкласса.
Расширение проявляется в виде новых имен операций.Если же NOО велико, то разработчик нарушает абстракцию суперкласса. Это ослабляет иерархиюклассов, усложняет тестирование и модификацию программного обеспечения.Рекомендуемое значение NOO ≤ 3 методов.Метрика 3: Количество операций, добавленных подклассом, NOA(Number of Operations Added by a Subclass)Подклассы специализируются добавлением приватных операций и свойств.
С ростом NOAподкласс удаляется от абстракции суперкласса. Обычно при увеличении высоты иерархии классов(увеличении DIT) должно уменьшаться значение NOA на нижних уровнях иерархии.Для рекомендуемых значений CS = 20 и DIT = 6 рекомендуемое значение NOA ≤ 4 методов(для класса-листа).Метрика 4: Индекс специализации SI (Specialization Index)Обеспечивает грубую оценку степени специализации каждого подкласса.
Специализациядостигается добавлением, удалением или переопределением операций:SI = (NOO x уровень) /Mобщ,11где уровень — номер уровня в иерархии, на котором находится подкласс, Мобщ — общееколичество методов класса.Чем выше значение SI, тем больше вероятность того, что в иерархии классов есть классы,нарушающие абстракцию суперкласса.Рекомендуемое значение SI ≤ 0,15.Операционно-ориентированные метрикиЭта группа метрик ориентирована на оценку операций в классах. Обычно методы имеюттенденцию быть небольшими как по размеру, так и по логической сложности.
Тем не менеереальные характеристики операций могут быть полезны для глубокого понимания системы.Метрика 5: Средний размер операции OSAVG (Average Operation Size)В качестве индикатора размера может использоваться количество строк программы, однакоLOC-оценки приводят к известным проблемам. Альтернативный вариант — «количествосообщений, посланных операцией».Рост значения метрики означает, что обязанности размещены в классе не очень удачно.Рекомендуемое значение OSAVG ≤ 9.Метрика 6: Сложность операции ОС (Operation ComplexityСложность операции может вычисляться с помощью стандартных метрик сложности, то есть спомощью LOC- или FP-оценок, метрики цикломатической сложности, метрики Холстеда.М.
Лоренц и Д. Кидд предлагают вычислять ОС суммированием оценок с весовымикоэффициентами, приведенными в табл. 14.5.Таблица 14.5. Весовые коэффициенты для метрики ОСПараметрВесВызовы функций API5,0Присваивания0,5Арифметические2операции,0Сообщенияс3параметрами,0Вложенные выражения0,5Параметры0,3Простые вызовы7,0Временные переменные0,5Сообщениябез1параметров,0Поскольку операция должна быть ограничена конкретной обязанностью, желательноуменьшать ОС.Рекомендуемое значение ОС ≤ 65 (для предложенного суммирования).Метрика 7: Среднее количество параметров на операцию NPAVG(Average Number of Parameters per operation)Чем больше параметров у операции, тем сложнее сотрудничество между объектами. Поэтомузначение NPAVG должно быть как можно меньшим.12Рекомендуемое значение NPAVG = 0,7.Метрики для ОО-проектовОсновными задачами менеджера проекта являются планирование, координация, отслеживаниеработ и управление программным проектом.Одним из ключевых вопросов планирования является оценка размера программного продукта.Прогноз размера продукта обеспечивают следующие ОО-метрики.Метрика 8: Количество описаний сценариев NSS (Number of Scenario Scripts)Это количество прямо пропорционально количеству классов, требуемых для реализациитребований, количеству состояний для каждого класса, а также количеству методов, свойств исотрудничеств.
Источник: studizba.com
12.2 Использование метрик Чидамбера-Кемерера
Пример расчета метрик для структуры, показанной на рисунке 11.1, представлен в таблице 11.1.
Рисунок 12.1 — Структура классов для расчета метрик Чидамбера-Кемерера
Пример расчета метрик Чидамбера-Кемерера
Прокомментируем результаты расчета. Класс Class А имеет три метода (op_al(); ор_а2(), ор_аЗ()), трех детей (Class В, Class С, Class D) и явлется корневым классом. Поэтому метрики WMC, NOC и DIT имеют, соответственно, значения 3, 3 и 0. Метрика СВО для класса Class А равна 1, так как он использует один метод из другого класса (метод ор_е() из класса Class E, он вызывается из метода ор_аЗ()). Метрика RFC для класса Class А равна 4, так как в ответ на прибытие в этот класс сообщений возможно выполнение четырех методов (три объявлены в этом классе, а четвертый метод ор_е() вызывается из ор_аЗ()).
Поскольку в классе три метода, возможны три пары: op_al() и ор_а2(), op_al(); ор_а3(), ор_а2() и ор_аЗ().Общее свойство имеет только третья пара Количество несвязанных пар равно 2, количество связанных равно 1, LCOM=2-1=1.
Для класса Class D метрика СВО равна 2, так как здесь используются свойство pal и метод op_f( ) из других классов. Метрика LCOM в этом классе равна 0, поскольку методы op_dl( ) и op_d2( ) связаны по свойству pdl, а отрицательное значение запрещено.
12.3 Порядок выполнения работы
- Изучить назначение метрик и пример их расчета.
- Выбрать текст программы с использованием ООП. Текст должен содержать не менее 3-х классов, связанных между собой через методы или свойства.
- Построить диаграмму связей и рассчитать метрики.
- Результаты расчета представить в виде таблицы. Провести анализ результатов исследуемой программы.
12.4 Содержание отчета о выполнении работы
- Краткие теоретические сведения;
- Структура классов:
- Результаты расчета;
- Выводы о качестве программы;
12.5 Список контрольных вопросов
1. Охарактеризуйте класс программ, для которых предложенные метрики являются наиболее эффективными.
2. Приведите недостатки предложенных метрик.
3. Какие свойства ОО-программ не учитывают метрики?
4. Что означают высокие значения метрики LCOM?
Бутаков Е.А. Методы создания качественного программного обеспечения ЭВМ/ Е.А. Бутаков.– М.: Мир, 1984. – 232 с.
Введение в тестирование программного обеспечения / Пер. с англ. Л.Тамре — М.: Издательский дом «Вильямс», 2003.-368 с.
Дастин Э., Рэшка Д., Пол Д. Автоматизированное тестирование программного обеспечения / Дастин Э.- М.:Издательство «ЛОРИ», 2003.- 567с.
Жоголев Е.А. Технология программирования/ Жоголев Е.А.- М. «Научный мир», 2004. – 296с.
Калбертсон Р., Браун К., Кобб Г. Быстрое тестирование/С.П. Издательский дом «Вильямс», 2002.-384с.
Канер С. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений: Пер. с англ./Сэм Канер, Джек Фолк, Енг Кек Нгуен. — К.: Издательство «ДиаСофт», 2001. — 544 с.
Кулаков А.Ф. Управление качеством программных средств ЭВМ/ А.Ф. Кулаков. – Киев: Техника, 1989. – 216 с.
Иванова Г.С.Технология программирования: Учебник для вузов. — М.: Изд-во МГТУ им. Н.Э. Баумана, 2002. — 320 с.
Липаев В.В. Тестирование программ/ В.В. Липаев.– М.: Радио и связь, 1986.–296 с.
Лисков Б. Использование абстракций и спецификаций при разработке программ/ Б. Лисков, Дж. Фатэг. – М.: Мир, 1989. – 424 с.
Майерс Г. Надежность программного обеспечения/ Г. Майерс. – М.: Мир, 1980. – 360 с.
Майерс Г. Искусство тестирования программ. – М.:Финансы и статистика, 1982. – 176 с.
Макгрегор Джон, Сайкc Девид. Тестирование объектно-ориентированного программного обеспечения. Практическое пособие: Пер. с англ./Джон Макгрегор, Девид Сайкc. -К.: ООО «ТИД «ДС», 2002. — 432 с.
Макконнелл С. Совершенный код. Мастер-класс / Пер. с англ. — М. : Издательско- торговый дом «Русская Редакция» ; СПб.: Питер, 2005. — 896 стр.: ил.
Объектно-ориентированное проектирование с примерами применения. / Буч Г. – М.: Конкорд, 1992.-519 с.
Орлов С. Технологии разработки программного обеспечения: Учебник/ С. Орлов. — СПб.: Питер, 2002. — 464 с.:
Тампе Л. Тестирование программного обеспечения/ Тампе Л. –М.: Издательский дом «Вильямс», 203. – 368с.
Технология разработки программного обеспечения: Учебник / Орлов С. — СПб.: Питер, 2002.-464 с.
Холстед М. Начала науки о программах/ М. Холстед.: Финансы и статистика, 1981. – 128 с.
Шнейдерман Б. Технология программирования/Б. Шнейдерман.– М.: Радио и связь,1984. – 304 с.
ДСТУ 2844-94. Программные средства ЭВМ. Обеспечение качества. Термины. – Киев: 1994.
ДСТУ 2850-94. Программные средства ЭВМ. Показатели и методы оценки качества. – Киев: 1994. – 20 с.
ДСТУ 2853-94. Программные средства ЭВМ. Подготовка и проведение испытаний. – Киев: 1994. – 18 с.
Обработка одномерного массива.
Определить количество положительных , количество отрицательных и количество нулевых чисел массива.
var h:array [1..nn] of integer;
var i,pol,nul,otr: integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do
else if h[i]>0 then pol:=pol+1
writeln(‘количество отрицательных чисел=’,otr);
writeln(‘количество положительных чисел=’,pol);
Обработка одномерного массива.
Преобразовать массив, поменяв местами минимальное и первое числа массива.
var h:array [1..nn] of integer;
var i,m,k,t: integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn do
for i:=1 to nn do write(h[i],’ ‘);
Обработка одномерного массива.
Найти максимальный положительный элемент массива и его порядковый номер.
var h:array [1..nn] of integer;
var i,m,k: integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn do
Обработка одномерного массива.
Преобразовать массив, расположив сначала все отрицательные, затем все положительные числа (порядок следования чисел внутри группы не изменять)..
var h,r:array [1..nn] of integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn do
for i:=1 to nn do
if h[i]>=0 then begin
for i:=1 to nn do write(r[i],’ ‘);
Обработка одномерного массива.
Преобразовать массив, поменяв местами минимальное и максимальное числа массива..
var h:array [1..nn] of integer;
var i,m,k,t,w,u: integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn do
for i:=1 to nn do
if h[i]>w then begin
for i:=1 to nn do write(h[i],’ ‘);
Обработка одномерного массива.
Вывести на экран числа, встречающиеся в массиве только один раз.
var h:array [1..nn] of integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn do
for k:=1 to nn do
if (h[i]=h[k]) and (i<>k) then goto m1;
writeln(‘Один раз встречено:’,h[i]);
Обработка одномерного массива.
Преобразовать массив, расположив в нем числа в обратной последовательности.
var h:array [1..nn] of integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn div 2 do
for i:=1 to nn do write(h[i],’ ‘);
Обработка одномерного массива.
Преобразовать массив, умножив все положительные числа на максимальное число этого массива.
var h:array [1..nn] of integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn do
if h[i]>m then m:=h[i];
for i:=1 to nn do
if h[i]>0 then h[i]:=h[i]*m;
for i:=1 to nn do write(h[i],’ ‘);
Обработка одномерного массива.
Преобразовать массив, заменив все отрицательные числа на -1, а положительные на +1, нули оставить нулями.
var h:array [1..nn] of integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn do
if h[i]>0 then h[i]:=1
for i:=1 to nn do write(h[i],’ ‘);
Обработка одномерного массива.
Найти среднее арифметическое всех положительных чисел массива. Вывести на экран все числа массива, которые больше, чем это среднее арифметическое.
var h:array [1..nn] of integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn do
if h[i]>0 then begin
for i:=1 to nn do
if h[i]>s then write(h[i],’ ‘);
else writeln(‘Положительных чисел нет’);
Обработка одномерного массива.
Преобразовать массив, изменив знак у всех отрицательных чисел. Подсчитать число таких замен.
var h:array [1..nn] of integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn do
for i:=1 to nn do write(h[i],’ ‘);
Обработка одномерного массива.
Вывести на экран все числа массива кратные 7 или 5.
var h:array [1..nn] of integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=1 to nn do
if ((h[i] mod 7)=0) or ((h[i] mod 5)=0) then write(h[i],’ ‘);
Обработка одномерного массива.
Преобразовать массив, заменив знаки всех элементов, расположенных между первым и последним нулем.
var h:array [1..nn] of integer;
var i,k2: integer;
writeln(‘Введите ’,nn,’ целых чисел’);
for i:=1 to nn do readln(h[i]);
for i:=1 to nn do write(h[i],’ ‘);
for i:=nn downto 1 do
for i:=1 to k2 do
if k1 then h[i]:=-h[i];
if h[i]=0 then k1:=true;
for i:=1 to nn do write(h[i],’ ‘);
Источник: studfile.net
Использование объектно-ориентированных метрик для анализа программного обеспечения Текст научной статьи по специальности «Компьютерные и информационные науки»
МЕТРИКИ / METRICS / ИНФОРМАЦИОННАЯ СИСТЕМА / INFORMATION SYSTEM / ПРОЕКТ / PROJECT / КЛАСС / CLASS / МЕТОД / METHOD / ИНКАПСУЛЯЦИЯ / ENCAPSULATION / НАСЛЕДОВАНИЕ / INHERITANCE / ЭКЗЕМПЛЯРНАЯ ПЕРЕМЕННАЯ.НАБОР МЕТРИК ЧИДАМБЕРА И КЕМЕРЕРА / INSTANCE VARIABLES. SET OF METRICS CHIDAMBER AND KEMERER
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Самойликова Ольга Алексеевна, Рудакова Галина Михайловна
В работе рассматривается использование объектно-ориентированных метрик для анализа и количественной оценки программного обеспечения. Количественная оценка сложности информационной системы производится при помощи метрик , которые принято подразделять на семь классов . Наиболее подробно описывается класс объектно-ориентированных метрик . Особое внимание уделяется набору метрик Чидамбера и Кемерера
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Самойликова Ольга Алексеевна, Рудакова Галина Михайловна
Границы применимости метода Object Points для определения трудоёмкости программного проекта
Оценка качества объектно-ориентированных программных продуктов
Анализ объектно-ориентированных метрик для проектирования архитектуры программного обеспечения
Причины и движущие силы поэтапной смены подходов внутри объектно-ориентированной парадигмы программирования
Применение принципов объектно-ориентированного программирования к описанию и классификации биологических объектов на примере грибов рода Trichoderma
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Using object-oriented metrics for software analysis
In this paper discusses the use of object-oriented metricsfor аnalysis and quantification software.Quantitative evaluation complexity of the information system is made using metrics . Metrics are usually subdivided into seven classes. The most detailed description of the class of object-oriented metrics . Particular attention is paid to the set of metrics Chidamber and Kemerer
Текст научной работы на тему «Использование объектно-ориентированных метрик для анализа программного обеспечения»
4. Мартин Р. С. Принципы, паттерны и методики гибкой разработки на языке C#. / Р.С. Мартин. — СПб.: Символ, 2012. — 768 с.
5. Эванс Э. Предметно-ориентированное проектирование. Структуризация сложных программных систем/ Э. Эванс. — М.: ООО «И.Д. Вильямс», 2011.- 448 с.
6. Kozhevnikov D.O., Rudakova G.M. History of structured programming and origin of objective-oriented paradigm. //2nd International Academic Conference on Applied and Fundamental Studies, March 8-10, 2013., St. Louis, USA. Publishing House «Science Innovation Center», 2013. P. 180-186.
The reasons and driving forces of stage-by-stage change of approaches in an object-oriented paradigm of programming
Galina Mikhailovna Rudakova, PhD, professor
Siberian State Technological University, Chair of Information Technologies. Dmitry Olegivich Kozhevnikov, postgraduate
Siberian State Technological University, Chair of Information Technologies. http://www.kit-sibstu.ru/
In work the characteristic of the major cognitive events of history of a paradigm, the prerequisite, authorship and importance of its main scientific concepts are presented. The following periodization of evolution of the object-oriented paradigm (OOP) in the theory of software development is offered: academic OOP; early OOP; mature OOP; modern OOP. The progress is caused by aspiration to engage human potential in development of evolving program complexes.
Key words: object-oriented paradigm, software, concepts of design patterns, refactoring.
ИСПОЛЬЗОВАНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ МЕТРИК ДЛЯ АНАЛИЗА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
В работе рассматривается использование объектно-ориентированных метрик для анализа и количественной оценки программного обеспечения. Количественная оценка сложности информационной системы производится при помощи метрик, которые принято подразделять на семь классов. Наиболее подробно описывается класс объектно-ориентированных метрик. Особое внимание уделяется набору метрик Чидамбера и Кемерера.
Ключевые слова: метрики, информационная система, проект, класс, метод, инкапсуляция, наследование, экземплярная переменная.набор метрик Чидамбера и Кемерера.
На сегодняшний день ситуация в мире информационных технологий складывается таким образом, что большинство крупных проектов разрабатываются на объектно-ориентированных языках программирования. Обеспечение качества проекта является главной задачей, как руководителей проекта, так и самих разработчиков. Для эффективной оценки программного обеспечения используются метрики.
Определение метрики в контексте информационных технологий, согласно стандарту ISO 14598 звучит как количественный масштаб и метод, который может использоваться для измерения. Другое определение метрики — мера, позволяющая получить численное значение некоторого свойства программного обеспечения [1]. Объектно-ориентированные метрики вводятся с целью: улучшить понимание качества продукта, оценить эффективность процесса конструирования, улучшить качество работы на этапе проектирования.
Для любой информационной системы определяемые наборы метрик должны ориентироваться на особенности и уникальные характеристики. Большинство метрик, были получены опытным пут м в ходе работы над проектами информационных систем.
Важно учитывать, не только особенности проекта при г мш Рудакова выборе метрик, но и его специфику.
Количест венные метрики
потока управления программы
Количество строк кода (SLOC)
Количество пустых строк
Среднее число строк для фун
Среднее число строк для модулей
Метрика Пивоварск ого
потока управления данными
Количество пустых строк
Метрики надежно сти
Метрики Чщэмбера и
Метрики Лоренна и Кидза
Гибридны е метрики
хпри просмотре кода
х при тестеров ai
Рис. 1. Классификация метрик
С точки зрения метрик выделяют пять характеристик объектно-ориентированных систем: локализацию, инкапсуляцию, информационную закрытость, наследование и способы абстрагирования объектов. Каждая из этих характеристик оказывает непосредственное влияние на метрики. Общая классификация метрик, которая наиболее часто встречается в научной литературе, представлена на рис. 1. Из рисунка видно, что классификация метрик состоит из семи основных классов. В каждом классе указаны наиболее часто используемые
виды метрик. Самыми простыми в использовании считаются количественные метрики. В данный класс входят такие метрики как: количество пустых строк; количество комментариев; процент комментариев (отношение числа строк, содержащих комментарии к общему количеству строк, выраженное в процентах); среднее число строк для функций (классов, файлов); среднее число строк, содержащих исходный код для функций (классов, файлов); среднее число строк для модулей.
На схеме, представленной на рис.1 видно, что каждый класс обладает набором метрик. Метрик, входящих в определенный класс, существует большое количество, поэтому в схеме отображены наиболее часто встречающиеся наборы метрик, однако далеко не все.
Для анализа и качественной оценки проектов, созданных при помощи языков объектно-ориентированного программирования, используется класс объектно-ориентированных метрик. В дан-
ном классе наиболее часто используемыми являются набор метрик Мартина, набор метрик Чидамбера и Кемерера.В статье более подробно будет рассмотрен набор мтерик Чидамбера и Кеме-рера [2].
В 1994 году С. Чидамбер и К. Кемерер предложили шесть проектных метрик, ориентированных на классы [3]. Класс -представляет собой основной, фундоментальный элемент объектно-ориентированной инфор-
Рис.2. Шесть метрик С. Чидамбера и К. Кемерера
мационной системы. Метрики для отдельного класса, иерархии классов и взаимодействия классов являются наиболее ценными для руководителя проекта, который оценивает качество работы. На рис. 2 представлена классификация метрик С. Чидамбера и К. Ке-мерера.
Первым видом метрик является метрика — взвешенные меры на класс ^МС). Использование данной меры осуществляется при помощи формулы:
WMC = £?=1 СI, где С — класс; п — методы со со сложностью с1, с2. сп
Сложность методов может оцениваться любой метрикой сложности. Основным условием является то, что данная метрика должна быть нормализована так, чтобы номинальная сложность для метода принимала значение 1. Количество методов и их сложность являются индикатором затрат на реализацию и тестирование классов.
С ростом количества методов в классе его применение становится все более специфическим, темсамым ограничивается возможность многократного использования. По этим причинам метрика WMC должна иметь разумно низкое значение.
Также применяют упрощённую версию метрики. При этом полагают С/= 1, и тогда WMC приравнивается к количеству методов в классе.
Для подсчёта количества методов в классе используют два противоположных варианта учёта.
1. Подсчитываются только методы текущего класса. Унаследованные методы игнорируются. Обоснование — унаследованные методы уже подсчитаны в тех классах, где они определялись.
2. Подсчитываются методы, определённые в текущем классе, и все унаследованные методы.
На практике применяются оба варианта. Основным условием применения является постоянное использование одного варранта учёта методов. Только в этом случае обеспечивается корректный сбор метрических данных [3].
Метрика WMC даёт относительную меру сложности класса. Можно предположить, что класс который имеет максимальное количество методов среди классов одного с ним уровня, является наиболее сложным.
Рис. 3. Дерево наследования классов
Второй вид метрик — высота дерева наследования (DIT). Она определяется как максимальная длина пути от листа до корня дерева наследования классов. Пример дерева наследования классов схематически представлен на рис. 3.
Для примера дерева классов, представленного на рисунке 3, метрика DIT равна 4. Для отдельного класса DIT, это длина максимального пути от данного класса до корневого класса в иерархии классов. G
По мере роста DIT вероятно, что классы нижнего уровня будут наследовать много методов. Это приводит к трудностям в предсказании поведения класса. Высокая иерархия классов (большое значение DIT) приводит к большей сложности проекта, так как означает привлечение большего количества методов и классов.
Вместе с тем, большое значение DIT подразумевает, что многие методы могут использоваться многократно.
Третий вид метрик — количество детей NOC. Подклассы, которые непосредственно подчинены классу, называются его детьми. Значение NOC равно количеству детей, то есть количеству непосредственных наследников класса в иерархии классов. На рисунке 3 класс Сц имеет двух детей — подклассы Сш и Сц2. В свою очередь подкласс Сц2 имеет одного наследника — Сшь Количество детей характеризует потенциальное влияние класса на проект.
По мере роста NOC возрастает количество тестов, необходимых для проверки каждого ребёнка.
Четвертый вид метрик — сцепление между классами объектов (СВО). Данная мера определяет количество классов, с которыми взаимодействует рассматриваемый класс. Данная метрика характеризует статическую составляющую внешних связей классов. С увеличением значения СВО многократность использования класса, уменьшается.
Чем больше независимость класса, тем легче его повторно использовать в другом приложении. Высокое значение СВО усложняет модификацию и тестирование, которое следует за выполнением модификации.
Пятый вид метрик — отклик для класса (RFC). RFC — это количество методов класса плюс количество методов других классов, вызываемых из данного класса.
Метрика RFC является мерой потенциального взаимодействия данного класса с другими классами, позволяет судить о динамике поведения соответствующего объекта в системе. Данная метрика характеризует динамическую составляющую внешних связей классов. Если в С ростом RFC увеличивается сложность класса. Наихудшая величина отклика может использоваться при определении времени тестирования [3].
Шестой вид метрик — недостаток связности в методах (ЬСОМ).Каждый метод внутри класса обращается к одному или нескольким свойствам. Метрика LCOM показывает, насколько методы не связаны друг с другом через свойства. Если все методы обращаются к одинаковым свойствам, то LCOM = 0.
Для наглядного представления использования метрик введём обозначения: ^ — количество пар методов без общих экземплярных переменных; в — количество пар методов с общими экземплярными переменными; I, — набор экземплярных переменных, используемых методом Mj.
Тогда формула для вычисления недостатка связности в методах примет вид
[о в противном случае
Связность методов внутри класса должна быть высокой. Если LCOM имеет высокое значение, то методы слабо связаны друг с другом через свойства. Это увеличивает сложность, что увеличивает вероятность ошибок при проектировании [3].
Высокие значения LCOM означают, что класс, вероятно, надо спроектировать лучше (разбиением на два или более отдельных класса). Любое вычисление LCOM помогает определить недостатки в проектировании классов, так как эта метрика характеризует качество упаковки данных и методов в оболочку класса. Связность в классе желательно сохранять высокой, то есть следует добиваться низкого значения LCOM.
Набор метрик Чидамбера-Кемерера является основой оценки проекта реализованного на языке объектно-ориентированного программирования. На данный момент времени существуют большое количество модификаций, которые предлагают оптимальные решения оценки проекта. В частности дополнением к набору метрик Чидамбера-Кемерера считается метрика — поведенческая закрытость информации BIH (Beha-viourial Information Hiding)
Формула применения метрики:
где WEOC — взвешенные внешние операции на класс (фактически это WMC);
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
WIEOC — взвешенные внутренние и внешние операции на класс.
Если BIH = 1, класс показывает другим классам все свои возможности. Если BIH « 0,2 поведение класса скрывается от других классов. BIH может рассматриваться и как мера сложности. Сложные классы, имеют малые значения BIH. Простые классы имеют значения, близкие к 1.
Использование наборов метрик Чидамбера-Кемерера позволяет не только определять сложность проекта, но модифицировав определенные характеристики, учесть особенности разрабатываемого проекта, провести эффективный анализ информационной системы, выявить уязвимые места. В настоящее время при оценке проектов, реализованных на языках объектно-ориентированного программирования не достаточно использование одного набора метрик Чидамбера-Кемерера.
Наряду с рассмотренными метриками используются метрики Лоренца и Кидда (размер класса CS (Class Size), количество операций, добавленных подклассом NOA (Number of Opérations Added by a Subclass), индекс специализации SI (Specialization Index), средний размер операции OSAVG (Average Operation Size), Сложность операции ОС (Operation Complexity), среднее количество параметров на операцию NPAVG (Average Number of Parameters per operation), количествоописанийсценариев NSS (Number of Scenario Scripts), количествоподсистем NSUB (Number of SUB system)) [4].
Набор метрик MOO^MetricsforObjectOrientedDesign), предложенный Ф. Абреу (фактор закрытости метода (МНР), фактор закрытости свойства (AHF), фактор наследования метода (MIF),фактор наследования свойства (AIF), фактор полиморфизма (POF),фактор сцепления (СОР)) и многие другие. Большое количество метрик, разработанных для оценки информационных систем на языках объектно-ориентированного программирования, позволяет сформировать необходимый набор мер для оценки проекта.
2. Орлов С.А. Технологии разработки программного обеспечения. Разработка сложных программных систем: учебник. — СПб.: Питер, 2002. — 464 с.
3. Черноножкин С.К. Методы и инструменты метрической поддержки разработки качественных программ: автореферат, — Новосибирск, 1998.
4. Богданов Д.В. Стандартизация жизненного цикла программных средств. — СПб., 2000. — 210 с.
Using object-oriented metrics for software analysis
OlgaAlexeevnaSamoylikova, masterdegree SiberianStateTechnologicalUniversity
Galina Mihaylovna Rudakova, PhD, professor Siberian State Technological University, Chair of Information Technologies.
In this paper discusses the use of object-oriented metricsfor аnalysis and quantification soft-ware.Quantitative evaluation complexity of the information system is made using metrics. Metrics are usually subdivided into seven classes. The most detailed description of the class of object-oriented metrics. Particular attention is paid to the set of metrics Chidamber and Kemerer.
Keywords: metrics, information system, project, class, method, encapsulation, inheritance, instance variables. set of metrics Chidamber and Kemerer.
Источник: cyberleninka.ru