Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
EMPImodul2_empi.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
582.48 Кб
Скачать

35. Які дані можна отримати після проведення вимірювань в iPlasma?

Після проведення вимірювань даних в iplasma можно отримати такі дані:

  • NDD – метрика, що вказує на кількість прямих нащадків

  • NOP – кількість пакетів

  • NOC – кількість класів

  • NOM – кількість методів

  • LOC – кількість рядків коду

  • HIT - висота дерева наслідування

  • CYCLO – цикломатична складність - Число лінійно-незалижних шляхів через операцію

  • CALL – кількість викликів функцій

  • FOUT – кількість нестилізованих рядків - показує неформатовані рядкі.

  • ТСС – метрика, що вказує щільність згуртованості класу - Відносн а кількість пар методів класу, що отримують спільний доступ хоча б до одного атрибуту вимірюваного класу

  • CDІSP – метрика, що вказує на дисперсійний зв’язок

Істотним завданням в процесі аналізу програмного забезпечення є побудова моделі системи. Мета будівництва моделі - витягування з вихідного коду інформації, яка доречна з точки зору специфічної мети. Для цього використовується відкрита бібліотека для аналізу Recoder (для Java) та McC (Model Capture for C++).

36. Як використати дані вимірювань в iPlasma? Які висновки можна зробити? Використовуючи показники метрик в даній програмі ми можемо розрахувати середнє, низьке та максимальне значення метрик. Також кожна метрика фарбується окремим кольором що дає змогу нам побачити рівень показника. Показник може буди поганим та добрим в залежності від кольору. Також використовуючи дані показники метрик ми можемо побудувати спеціальні моделі та графіки розрахувати потрібні нам дані такі як(матиматичне сподівання, дисперсію, кореляцію тощо).

37. При рефакторингу використовуються наступні метрики пз

1. CYCLO – цикломатична складність. За допомогою цієї метрики, ми можемо побачити, чи потребує рефакторингу та частина коду, яка містить цикли

2. Maintainability index – індекс підтримки. Ця метрика показує нам, чи є програмний код легкий і зрозумілий для підтримки сторонньою групою розробників

3. NOAV - Кількість використаних змінних (Number of Accessed Variables) – за допомогою цієї метрики ми можемо дізнатися, скільки змінних було використано у методі і чи можливо зменшити їх кількість для зменшення використання пам’яті

4. AMW - Середня вага метода (Average Method Weight) – за допомогою цієї метрики ми можемо дізнатися, наскільки складний клас для розуміння іншим програмістом.

40. Які метрики краще використовувати при проведенні рефакторинга? Чому?

Maintainability Index

Це, на мій погляд, основна метрика - свого роду KPI для оцінки коду з точки зору підтримки. Решта метрики, на мою думку, варто використовувати просто як підказку при більш детальному аналізі проблем, локалізованих за допомогою Maintainability Index. Або ж, якщо з Maintainability Index все гаразд, а хочеться покращувати код далі, має сенс звернути увагу на метрики, які не є основою для його обчислення (Class Coupling + Depth of Inheritance).

Cyclomatic Complexity

Цикломатическая складність коду - це (спрощено) кількість різних непересічних маршрутів виконання коду. Наприклад, у методу без умовних операторів цикломатическая складність 1, а у методу з одним умовним оператором - 2. Детальніше про це можна прочитати за посиланням вище або в російськомовній вікіпедії.

Як неважко здогадатися, велике значення цикломатическая складності призводить до того, що метод складніше повністю покрити юніт-тестами.

Lines of Code (LOC)

Приблизно показує кількість рядків коду.

Важливе зауваження: рядки коду вважаються в IL. З цієї причини ви можете бути трохи здивовані, побачивши кількість рядків коду в невеликому LINQ-запиті.

Depth of Inheritance

Глибина спадкування поняття досить очевидне. Для класу успадкованого тільки від Object глибина спадкування дорівнює 1 і так далі. Для методів ця метрика не вважається.

Class Coupling

Кількість всіх можливих залежностей від інших класів. Кожен клас, природно, вважається один раз. Думаю не має сенсу пояснювати, що сильна зв'язність ні до чого доброго не приводить - незручно повторно використовувати код, писати юніт-тести.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]