Метрические особенности ООП систем (548338), страница 6
Текст из файла (страница 6)
Имеется в виду случай, когда все новые методы, определенные в Сi,переопределяются во всех его потомках.Умеренное использование полиморфизма уменьшает как плотность дефектов, так и затраты надоработку. Однако при POF > 10% возможен обратный эффект.Метрика 6: Фактор сцепления COF (Coupling Factor)В данном наборе сцепление фиксирует наличие между классами отношения «клиентпоставщик» (client-supplier). Отношение «клиент-поставщик» (Сc =>Cs) здесь означает, что классклиент содержит но меньшей мере одну не унаследованную ссылку на свойство или метод классапоставщика.⎧1, if Cc => C s ∩ Cc ≠ C s ,is _ client (Cc , C s ) = ⎨⎩0, else,Если наличие отношения «клиент-поставщик» определять по выражению:COF =TCTCi =1j =1∑[∑ is _ client (Ci , C j )].TC 2 − TCто формула для вычисления метрики COF примет вид:Знаменатель COF соответствует максимально возможному количеству сцеплений в системе сТС-классами (потенциально каждый класс может быть поставщиком для других классов).
Из16рассмотрения исключены рефлексивные отношения — когда класс является собственнымпоставщиком. Числитель COF фиксирует реальное количество сцеплений, не относящихся кнаследованию.С увеличением сцепления классов плотности дефектов и затрат на доработку также возрастают.Сцепления отрицательно влияют на качество ПО, их нужно сводить к минимуму. Практическоеприменение этой метрики доказывает, что сцепление увеличивает сложность, уменьшаетинкапсуляцию и возможности повторного использования, затрудняет понимание и усложняетсопровождение ПО.Метрики для объектно-ориентированного тестированияРассмотрим проектные метрики, которые, по мнению Р. Байндера (Binder), прямо влияют натестируемость ОО-систем [17]. Р.
Байндер сгруппировал эти метрики в три категории,отражающие важнейшие проектные характеристики.Метрики инкапсуляцииК метрикам инкапсуляции относятся: «Недостаток связности в методах LCOM», «Процентпубличных и защищенных PAP (Percent Public and Protected)» и «Публичный доступ ккомпонентным данным PAD (Public Access to Data members)».Метрика 1: Недостаток связности в методах LCOMЧем выше значение LCOM, тем больше состояний надо тестировать, чтобы гарантироватьотсутствие побочных эффектов при работе методов.Метрика 2: Процент публичных и защищенных PAP (Percent Public and Protected)Публичные свойства наследуются от других классов и поэтому видимы для этих классов.Защищенные свойства являются специализацией и приватны для определенного подкласса.
Этаметрика показывает процент публичных свойств класса. Высокие значения РАР увеличиваютвероятность побочных эффектов в классах. Тесты должны гарантировать обнаружение побочныхэффектов.Метрика 3: Публичный доступ к компонентным данным PAD (Public Access to Datamembers)Метрика показывает количество классов (или методов), которые имеют доступ к свойствамдругих классов, то есть нарушают их инкапсуляцию.
Высокие значения приводят квозникновению побочных эффектов в классах. Тесты должны гарантировать обнаружение такихпобочных эффектов.Метрики наследованияК метрикам наследования относятся «Количество корневых классов NOR (Number Of Rootclasses)», «Коэффициент объединения по входу FIN», «Количество детей NOC» и «Высота дереванаследования DIT».Метрика 4: Количество корневых классов NOR (Number Of Root classes)Эта метрика подсчитывает количество деревьев наследования в проектной модели. Для каждогокорневого класса и дерева наследования должен разрабатываться набор тестов.
С увеличениемNOR возрастают затраты на тестирование.Метрика 5: Коэффициент объединения по входу FINВ контексте О-О-смистем FIN фиксирует множественное наследование. Значение FIN > 1указывает, что класс наследует свои свойства и операции от нескольких корневых классов.Следует избегать FIN > 1 везде, где это возможно.Метрика 6: Количество детей NOC17Название говорит само за себя. Метрика заимствована из набора Чидамбера-Кемерера.Метрика 7: Высота дерева наследования DITМетрика заимствована из набора Чидамбера-Кемерера. Методы суперкласса должны повторнотестироваться для каждого подкласса.В дополнение к перечисленным метрикам Р.
Байндер выделил метрики сложности класса (этометрики Чидамбера-Кемерера — WMC, CBO, RFC и метрики для подсчета количества методов), атакже метрики полиморфизма.Метрики полиморфизмаРассмотримследующиеметрикиполиморфизма:«Процентноеколичествонепереопределенных запросов OVR», «Процентное количество динамических запросов DYN»,«Скачок класса Bounce-С» и «Скачок системы Bounce-S».Метрика 8: Процентное количество не переопределенных запросов OVRПроцентное количество от всех запросов в тестируемой системе, которые не приводили кперекрытию модулей. Перекрытие может приводить к непредусмотренному связыванию.
Высокоезначение OVR увеличивает возможности возникновения ошибок.Метрика 9: Процентное количество динамических запросов DYNПроцентное количество от всех сообщений в тестируемой системе, чьи приемникиопределяются в период выполнения. Динамическое связывание может приводить кнепредусмотренному связыванию. Высокое значение DYN означает, что для проверки всехвариантов связывания метода потребуется много тестов.Метрика 10: Скачок класса Bounce-CКоличество скачущих маршрутов, видимых тестируемому классу. Скачущий маршрут — этомаршрут, который в ходе динамического связывания пересекает несколько иерархий классовпоставщиков. Скачок может приводить к непредусмотренному связыванию.
Высокое значениеBounce-C увеличивает возможности возникновения ошибок.Метрика 11: Скачок системы Bounce-SКоличество скачущих маршрутов в тестируемой системе. В этой метрике суммируетсяколичество скачущих маршрутов по каждому классу системы. Высокое значение Bounce-Sувеличивает возможности возникновения ошибок.18.