Главная страница
Навигация по странице:

  • Пример: Рассмотрим программу:сlass

  • Пример: Рассмотрим программу:class

  • лекция. Сборник лекций по МДК _Технология разработки программного обеспе. Курс лекций для специальности спо базовой подготовки


    Скачать 4.41 Mb.
    НазваниеКурс лекций для специальности спо базовой подготовки
    Анкорлекция
    Дата02.09.2022
    Размер4.41 Mb.
    Формат файлаdocx
    Имя файлаСборник лекций по МДК _Технология разработки программного обеспе.docx
    ТипКурс лекций
    #660044
    страница58 из 62
    1   ...   54   55   56   57   58   59   60   61   62

    Количество унаследованных методов (NMI)


    Количество методов, унаследованных от предков (Numer of Methods Inherited -NMI) позволяет класса от его предков. В отличие от метрики DIT, эта метрика оценивает не количество уровней в иерархии наследования, а именно зависимость от предков. Возможно базовые классы не оказывают сильного влияния на потомков, если имеют небольшое количество методов.

    Метрика связана с повторным использованием программ, чем ниже доля унаследованных методов в подклассе, тем больше вероятность того, что подкласс создан "неразумно".

    Рекомендованные значения: число унаследо-ванных методов должно превосходить число новых методов в классе, и тем больше превосходить, чем глубже класс расположен в модели наследования

    Пример:

    Рассмотрим программу:

    сlass View {

    TRect getArea();

    string getName();

    };
    сlass Node : public View {

    Point* clipLine(Point p1, Point p2);

    };
    сlass ClassNode : public Node {

    Point clipLine(Point p1, Point p2);

    };

    В этом случае:

    • NMI(View) = 0

    • NMI(Node) = 2, 

    • NMI(ClassNode) = 3.
      1. Количество потенциально наследуемых методов (PMI)


    Количество методов, унаследованных классом от предков (Potencial Methods Inherited - PMI) + количество методов в самом классе.  С помощью этой метрики вычисляется степень функциональности, которую данный класс предоставляет своим потомкам.
    Пример:

    Рассмотрим программу:

    сlass View {

    TRect getArea();

    string getName();

    };

    сlass Node : public View {

    Point* clipLine(Point p1, Point p2);

    };

    сlass ClassNode : public Node {

    Point clipLine(Point p1, Point p2);

    };
    PMI(View) = 2, PMI(Node) = 3, PMI(ClassNode) = 4.

      1. Пропорция методов наследуемых подклассом (PMIS)


    Пропорция методов, унаследованных классом от предков (Proportion of Methods Inherited by a Subclass-PMIS). Эта метрика  вычисляется по формуле:

    PMIS = NMI /PMI

    С помощью этой метрики вычисляется мера специализации класса по отношению к его предкам.

    Пример:

    Рассмотрим программу:

    сlass View {

    TRect getArea();

    string getName();

    };
    сlass Node : public View {

    Point* clipLine(Point p1, Point p2);

    };
    сlass ClassNode : public Node {

    Point clipLine(Point p1, Point p2);

    };
    В этом случае:

    • NMI(View) = 0

    • NMI(Node) = 2

    • NMI(ClassNode) = 3

    • PMI(View) = 2

    • PMI(Node) = 3

    • PMI(ClassNode) = 4

    • PMIS(View) = 0

    • PMIS(Node) = 0.666

    • PMIS(ClassNode) = 0.75.
      1. Число общедоступных методов в классе (NPM)


    Число общедоступных методов в классе (The number of public methods in a class - NPM) - число точек-методов с типом доступа “общедоступный” (public) в списке операций круга-вершины полной модели наследования.

    При вычислении данной метрики, рассматривают как определенные в классе, так и унаследованные методы. В некоторых случаях рассматривают пару метрик: число общедоступных методов, возвращающих значение некоторого типа, и число общедоступных методов, не возвращающих никакого значения.

    Метрика связана с сопровождаемостью ОО программ. Чем больше значение метрики, тем выше затраты на сопровождение (maintenance effort in OO systems).
      1. Степень методологической сцепленности (DMC)


    Степень методологического сцепления (Density of Methodological Cohensiveness - DMC). Эта метрика вычисляется как отношение количества пар методов, которые используют общие атрибуты класса, к общему числу пар методов. В отличие от метрики LCOM, эта метрика вычисляется более просто.
    Пример:

    Рассмотрим программу:

    class Edge : public View {

    Point *start, *end;

    Node *node1, *node2;

    Node getNode1() { return node1; }

    Node getNode2() { return node2; }

    void setArea(Point p1, Point p2){

    start = p1;

    end = p2;

    };

    void draw(Graphics *g){

    Point c1 = node1->getCenter();

    Point c2 = node2->getCenter();

    g->drawLine(p1, p2);

    setArea(p1, p2);

    }

    };
    Подсчитаем сцепление пар методов:

    • N(getNode1, getNode2) = 0

    • N(getNode1, setArea) = 0

    • N(getNode1, draw) = 1, общий атрибут node1.

    • N(getNode2, draw) = 1, общий атрибут node2.

    • N(getNode2, setArea) = 0.

    • N(setArea, draw) = 2, общие атрибуты node1 и node2 .

    Использующих общие атрибуты 3. Всего пар 6. В результате  DMC = 0.5

      1. 1   ...   54   55   56   57   58   59   60   61   62


    написать администратору сайта