Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб. 7 УКПО

.docx
Скачиваний:
0
Добавлен:
25.01.2026
Размер:
326.86 Кб
Скачать

Лабораторная работа №7

Метрики Лоренца и Кидда

class TelephoneNetworkSubscriber

{

int phoneNumber;

string surname;

long passportNumber;

public TelephoneNetworkSubscriber(int phoneNumber, string surname, long passportNumber)

{

this.phoneNumber = phoneNumber;

this.surname = surname;

this.passportNumber = passportNumber;

}

public virtual void PrintInfo()

{

Console.WriteLine($"Номер телефона: {phoneNumber}");

Console.WriteLine($"Фамилия: {surname}");

Console.WriteLine($"Номер паспорта: {passportNumber}");

}

}

class Arrears : TelephoneNetworkSubscriber

{

public double paymentDebt { get; }

public Arrears(int phoneNumber, string surname, long passportNumber, double paymentDebt)

: base(phoneNumber, surname, passportNumber)

{

this.paymentDebt = paymentDebt;

}

public override void PrintInfo()

{

base.PrintInfo();

Console.WriteLine($"Задолженность: {paymentDebt}");

}

}

class Program

{

static void Main(string[] args)

{

List<Arrears> arrears = new List<Arrears>

{

new Arrears(1234567, "Попов", 1234567890, 12500),

new Arrears(7654321, "Новиков", 9876543210, 0.0),

new Arrears(1357642, "Молотов", 1357908642, 105.25)

};

Arrears arrearsMax = arrears.MaxBy(a => a.paymentDebt);

Console.WriteLine("Абонент с максимальной задолженностью:");

arrearsMax.PrintInfo();

}

}

Метрики размера класса CS:

Класс TelephoneNetworkSubscriber:

Количество инкапсулированных классом методов: 2

Количество инкапсулированных классом свойств: 3

CS = 2 + 3 = 5 (Значение метрики находится в установленных пределах (< 20))

Класс Arrears:

Количество инкапсулированных классом методов: 3

Количество инкапсулированных классом свойств: 1

CS = 3 + 1 = 4 (Значение метрики находится в установленных пределах (< 20))

Класс Program:

Количество инкапсулированных классом методов: 1

Количество инкапсулированных классом свойств: 0

CS = 1 + 0 = 1 (Значение метрики находится в установленных пределах (< 20))

Количество операций, переопределяемых подклассом NOO:

NOO(Arrears) = 1

Значение не превышает критического уровня (< 3). Тестирование и модификация классов будет несложными.

Количество операций, добавленных подклассом NOA:

NOA(Arrears) = 2

Значение не превышает критического уровня (<= 4). Тестирование и модификация классов будет несложными.

Индекс специализации SI:

SI(Arrears) = NOO * u(номер уровня иерархии) / Mобщ(общее число методов класса) = 1 * 2 / 3 = 0,67

Индекс специализации производных классов достаточно высок (> 0,15). Вероятность нарушения абстракции базового класса отдельными объектами высока. Рекомендуется снижение количества переопределяемых методов в производных классах.

Средний размер операций AOS:

Определим AOS путём подсчёта количества обращений к внешним методам.

AOS(TelephoneNetworkSubscriber) = 3 (Значение метрики находится в установленных пределах (< 9))

AOS(Arrears) = 2 (Значение метрики находится в установленных пределах (< 9))

AOS(Program) = 8 (Значение метрики находится в установленных пределах (< 9))

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

Сложность операций OC:

Класс TelephoneNetworkSubscriber:

  1. Метод TelephoneNetworkSubscriber

  2. Метод PrintInfo

Класс Arrears:

  1. Метод get

  2. Метод Arrears

  3. Метод PrintInfo

Класс Program:

  1. Метод Main

В связи с тем, что сложность операций всех классов не превышает 65, можно сделать вывод о допустимом уровне сложности.

Среднее количество параметров на операцию ANP (кол-во парметров методов / кол-во методов):

Класс TelephoneNetworkSubscriber:

ANP = 3 / 2 = 1,5

Класс Arrears:

ANP = 4 / 3 = 1,3

Класс Program:

ANP = 1 / 1 = 1

Все операции классов программы имею высокие значения характеристик по количеству используемых параметров в объектах (> 0,7), что значительно усложняет взаимодействие между объектами.

Количество описаний сценариев NSS:

Количество сценариев классов NSS определим по количеству используемых методов в классах.

Класс TelephoneNetworkSubscriber:

NSS = 2

Класс Arrears:

NSS = 3

Класс Program:

NSS = 1

Количество сценариев программы сравнительно невелико, что определяет небольшие размеры программы.

Количество ключевых классов NKC:

NKC = 1 (100%), поскольку все классы программы непосредственно связаны с проблемной областью определения абонента с максимальной задолженностью.

Количество подсистем NSUB:

NSUB = 2

  1. Подсистема определения Абонента телефонной мети

  2. Подсистема определения Задолженность

Количество подсистем программы обеспечивает достаточную управляемость проекта и невысокую трудоёмкость.

Соседние файлы в предмете Управление качеством программного обеспечения