Метрические особенности ООП систем (548338), страница 4
Текст из файла (страница 4)
Этоувеличивает сложность, в связи с чем возрастает вероятность ошибок при проектировании.Высокие значения 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( )&ор_а2(), op_al( )&ор_а3() и ор_а2()&ор_а3(). Первая и вторая пары не имеют общих свойств, третья пара имеет общее свойство (pal).Таким образом, количество несвязанных пар равно 2, количество связанных пар равно 1, и LCOM= 2-1 = 1.Отметим также, что для класса Class D метрика СВО равна 2, так как здесь используютсясвойство pal и метод op_f() из других классов. Метрика LCOM в этом классе равна 0, посколькуметоды op_dl() и op_d2() связаны по свойству pdl, а отрицательное значение запрещено.10Метрики Лоренца и КиддаКоллекция метрик Лоренца и Кидда — результат практического, промышленного подхода коценке ОО-проектов [45].Метрики, ориентированные на классыМ.
Лоренц и Д. Кидд подразделяют метрики, ориентированные на классы, на четыре категории:метрики размера, метрики наследования, внутренние и внешние метрики.Размерно-ориентированные метрики основаны на подсчете свойств и операций для отдельныхклассов, а также их средних значений для всей ОО-системы. Метрики наследования акцентируютвнимание на способе повторного использования операций в иерархии классов. Внутренниеметрики классов рассматривают вопросы связности и кодирования. Внешние метрики исследуютсцепление и повторное использование.Метрика 1: Размер класса CS (Class Size)Общий размер класса определяется с помощью следующих измерений: общее количество операций (вместе с приватными и наследуемыми экземплярнымиоперациями), которые инкапсулируются внутри класса; количество свойств (вместе с приватными и наследуемыми экземплярными свойствами),которые инкапсулируются классом.Метрика 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)Это количество прямо пропорционально количеству классов, требуемых для реализациитребований, количеству состояний для каждого класса, а также количеству методов, свойств исотрудничеств.