Метрические особенности ООП систем (548338), страница 5
Текст из файла (страница 5)
Метрика NSS — эффективный индикатор размера программы.Рекомендуемое значение NSS — не менее одного сценария на публичный протоколподсистемы, отражающий основные функциональные требования к подсистеме.Метрика 9: Количество ключевых классов NKC (Number of Key Classes)Ключевой класс прямо связан с коммерческой проблемной областью, для которойпредназначена система.
Маловероятно, что ключевой класс может появиться в результатеповторного использования существующего класса. Поэтому значение NKC достоверно отражаетпредстоящий объем разработки. М. Лоренц и Д. Кидд предполагают, что в типовой ОО-системе надолю ключевых классов приходится 20-40% от общего количества классов. Как правило,оставшиеся классы реализуют общую инфраструктуру (GUI, коммуникации, базы данных).Рекомендуемое значение: если NKC < 0,2 от общего количества классов системы, следуетуглубить исследование проблемной области (для обнаружения важнейших абстракций, которыенужно реализовать).Метрика 10: Количество подсистем NSUB (NumberofSUBsystem)Количество подсистем обеспечивает понимание следующих вопросов: размещение ресурсов,планирование (с акцентом на параллельную разработку), общие затраты на интеграцию.Рекомендуемое значение: NSUB > 3.Значения метрик NSS, NKC, NSUB полезно накапливать как результат каждого выполненногоОО-проекта.
Так формируется метрический базис фирмы, в который также включаютсяметрические значения по классами и операциям. Эти исторические данные могут использоватьсядля вычисления метрик производительности (среднее количество классов на разработчика илисреднее количество методов на человеко-месяц). Совместное применение метрик позволяетоценивать затраты, продолжительность, персонал и другие характеристики текущего проекта.Набор метрик Фернандо АбреуНабор метрик MOOD (Metrics for Object Oriented Design), предложенный Ф. Абреу в 1994 году,— другой пример академического подхода к оценке качества ОО-проектирования [6].
Основнымицелями MOOD-набора являются:1) покрытие базовых механизмов объектно-ориентированной парадигмы, таких какинкапсуляция, наследование, полиморфизм, посылка сообщений;2) формальное определение метрик, позволяющее избежать субъективности измерения;3) независимость от размера оцениваемого программного продукта;4) независимость от языка программирования, на котором написан оцениваемый продукт.Набор MOOD включает в себя следующие метрики:1) фактор закрытости метода (МНF);2) фактор закрытости свойства (AHF);3) фактор наследования метода (MIF);4) фактор наследования свойства (AIF);5) фактор полиморфизма (POF);6) фактор сцепления (СОF).13Каждая из этих метрик относится к основному механизму объектно-ориентированнойпарадигмы: инкапсуляции (МНF и АНF), наследованию (MIF и AIF), полиморфизму (POF) ипосылке сообщений (СОF).
В определениях MOOD не используются специфические конструкцииязыков программирования.Метрика 1: Фактор закрытости метода MHF (Method Hiding Factor)Введем обозначения: Мv (Сi) — количество видимых методов в классе Сi (интерфейс класса); Мh (Сi) — количество скрытых методов в классе Сi (реализация класса); Мd (Сi) = Мv (Сi) + Мh (Сi) — общее количество методов, определенных в классе С,(унаследованные методы не учитываются).Тогда формула метрики МНF примет вид:TCMHF =∑Mh∑Mdi =1TCi =1(Ci ),(Ci )где ТС — количество классов в системе.Если видимость т-го метода i-го класса из j-го класса вычислять по выражению:⎧ ⎧j ≠1⎪1, if ⎨is _ visible( M mi , C j ) = ⎨ ⎩C j может вызвать M mi ,⎪0, else⎩a процентное количество классов, которые видят m-й метод i-го класса, определять посоотношению:TCV ( M mi ) =∑ is _ visible(Mi =1mi,C j )TC − 1то формулу метрики МНF можно представить в виде:TC M d ( Ci )MHF =∑∑i =1m =1TC∑i =1(1 − V ( M mi )).M d (Ci )В числителе этой формулы МНF — сумма закрытости всех методов во всех классах.Закрытость метода — процентное количество классов, из которых данный метод невидим.Знаменатель МНF — общее количество методов, определенных в рассматриваемой системе.С увеличением МНF уменьшаются плотность дефектов в системе и затраты на их устранение.Обычно разработка класса представляет собой пошаговый процесс, при котором к классудобавляется все больше и больше деталей (скрытых методов).
Такая схема разработкиспособствует возрастанию как значения МНF, так и качества класса.Метрика 2: Фактор закрытости свойства AHF (Attribute Hiding Factor)Введем обозначения: Аv (Сi) — количество видимых свойств в классе Сi (интерфейс класса); Ah(Ci) — количество скрытых свойств в классе Сi (реализация класса); Ad(Ci) = Аv (Сi) + Ah(Ci) — общее количество свойств, определенных в классе Сi(унаследованные свойства не учитываются).Тогда формула метрики AHF примет вид:14TCAHF =∑ A (C )i =1TChi∑ A (C )i =1d,iгде ТС — количество классов в системе.Если видимость т-го свойства i-го класса из j-ro класса вычислять по выражению:⎧ ⎧j ≠1⎪1, if ⎨is _ visible( Ami , C j ) = ⎨,⎩C j может вызвать Ami⎪0, else⎩а процентное количество классов, которые видят т-е свойство i-ro класса, определять посоотношению:TCV ( Ami ) =∑ is _ visible( Amii =1,C j ),TC − 1то формулу метрики AHFможно представить в виде:TC Ad ( Ci )AHF =∑∑i =1m =1TC∑i =1(1 − V ( Ami )).Ad (Ci )В числителе этой формулы AHF — сумма закрытости всех свойств во всех классах.
Закрытостьсвойства — процентное количество классов, из которых данное свойство невидимо. ЗнаменательAHF — общее количество свойств, определенных в рассматриваемой системе.В идеальном случае все свойства должны быть скрыты и доступны только для методовсоответствующего класса (AHF = 100%).Метрика 3: Фактор наследования метода MIF (Method Inheritance Factor)Введем обозначения: M i (Сi ) — количество унаследованных и не переопределенных методов в классе Сi; M 0(Сi ) — количество унаследованных и переопределенных методов в классе Сi; M n(Сi ) — количество новых (не унаследованных и переопределенных) методов в классе Сi; M d(Сi )= M n(Сi ) + M 0(Сi ) — количество методов, определенных в классе Сi; M a(Сi )= M d(Сi )+ M i (Сi ) — общее количество методов, доступных в классе Сi.Тогда формула метрики MIF примет вид:TCMIF =∑ M (C )i =1TCii∑ M (C )i =1i.iЧислителем MIF является сумма унаследованных (и не переопределенных) методов во всехклассах рассматриваемой системы.
Знаменатель MIF — это общее количество доступных методов(локально определенных и унаследованных) для всех классов.Значение MIF = 0 указывает, что в системе отсутствует эффективное наследование, например,все унаследованные методы переопределены.С увеличением MIF уменьшаются плотность дефектов и затраты на исправление ошибок. Оченьбольшие значения MIF (70-80%) приводят к обратному эффекту, но этот факт нуждается вдополнительной экспериментальной проверке. Сформулируем «осторожный» вывод: умеренноеиспользование наследования — подходящее средство для снижения плотности дефектов и затратна доработку.Метрика 4: Фактор наследования свойства AIF (Attribute Inheritance Factor)15Введем обозначения: Аi (Сi) — количество унаследованных и не переопределенных свойств в классе Сi; А0(Сi) — количество унаследованных и переопределенных свойств в классе Сi; An(Ci) — количество новых (не унаследованных и переопределенных) свойств в классе Сi; Аd(Сi) = An(Ci) + А0(Сi) — количество свойств, определенных в классе Сi; Аa(Сi) = Аd(Сi)+ Аi (Сi) — общее количество свойств, доступных в классе Сi.Тогда формула метрики AIF примет вид:TCAIF =∑ A (C )i =1TCii∑ A (C )i =1a.iЧислителем AIF является сумма унаследованных (и не переопределенных) свойств во всехклассах рассматриваемой системы.
Знаменатель AIF — это общее количество доступных свойств(локально определенных и унаследованных) для всех классов.Метрика 5: Фактор полиморфизма POF (Polymorphism Factor)Введем обозначения: M0(Сi) — количество унаследованных и переопределенных методов в классе Сi; Mn(Сi) — количество новых (не унаследованных и переопределенных) методов в классе Сi; DC(Сi) — количество потомков класса Сi; Md(Сi) = Mn(Сi) + M0(Сi) — количество методов, определенных в классе Сi.Тогда формула метрики POF примет вид:TCPOF =∑Mi =1TC∑[ Mi =1n0(Ci ).(Ci ) × DC (Ci )]Числитель POF фиксирует реальное количество возможных полиморфных ситуаций. Очевидно,что сообщение, посланное в класс Сi связывается (статически или динамически) с реализациейименуемого метода. Этот метод, в свою очередь, может или представляться несколькими«формами», или переопределяться (в потомках Сi).Знаменатель POF представляет максимальное количество возможных полиморфных ситуацийдля класса Сi.