Щоразу, коли я чую про спроби пов’язати якийсь тип кодової метрики з дефектами програмного забезпечення, перше, про що я думаю, - це цикломатична складність МакКейба . Різні дослідження виявили, що існує кореляція між високою цикломатичною складністю та кількістю дефектів. Однак в інших дослідженнях, які розглядали модулі з аналогічним розміром (з точки зору рядків коду), було встановлено, що кореляція може не бути.
Для мене, як кількість рядків у модулі, так і цикломатична складність можуть слугувати хорошими показниками можливих дефектів, або, можливо, більшою ймовірністю того, що дефекти будуть введені, якщо в модуль будуть внесені модифікації. Модуль (особливо на рівні класу чи методу) з високою цикломатичною складністю зрозуміти важче, оскільки існує велика кількість незалежних шляхів через код. Модуль (знову ж таки, особливо на рівні класу чи методу) з великою кількістю рядків також важко зрозуміти, оскільки збільшення рядків означає, що відбувається більше речей. Існує багато інструментів статичного аналізу, які підтримують обчислення як вихідних рядків коду, що відповідають визначеним правилам, так і цикломатичної складності, схоже, що їх захоплення сприйняло б низький вищий плід.
Заходи щодо складності Галстеда також можуть бути цікавими. На жаль, їх обгрунтованість виглядає дещо обговорюваною, тому мені не потрібно було б покладатися на них. Одним із заходів Гальстеда є оцінка дефектів на основі зусиль чи обсягу (співвідношення між тривалістю програми у перерахунку на загальну кількість операторів та операндів та словник програм з точки зору різних операторів та операторів).
Існує також група показників, відома як метрика CK. Перше визначення цього набору показників виявляється у статті під назвою "Метричний набір для об'єктно-орієнтованого дизайну" Чідамбер та Кемераре. Вони визначають зважені методи на клас, глибину дерева спадкування, кількість дітей, з'єднання між класами об'єктів, відповідь для класу та відсутність згуртованості у методах. У їх роботі представлені обчислювальні методи, а також опис способів аналізу кожного з них.
З точки зору наукової літератури, яка аналізує ці показники, вас може зацікавити Емпіричний аналіз метрик CK для об'єктно-орієнтованої складності проектування: наслідки для програмних дефектів, авторами яких є Раманат Субраманям та М. С. Кришна. Вони проаналізували три з шести показників КК (зважені методи на клас, з'єднання між класифікованими об'єктами та глибиною дерева спадкування). Поглянувши на папір, виявляється, що вони виявили, що це потенційно дійсні показники, але їх слід трактувати обережно, оскільки "покращення" може призвести до інших змін, які також призводять до більшої ймовірності дефектів.
Емпіричний аналіз об'єктно-орієнтованих метрик проектування для прогнозування несправностей високої та низької ступеня тяжкості, авторами яких є Юмін Чжоу та Харетон Леунг, також вивчають показники CK. Їх підхід полягав у визначенні, чи можуть вони прогнозувати дефекти на основі цих показників. Вони встановили, що багато показників СК, за винятком глибини дерева спадкування та кількості дітей) мали певний рівень статистичної значущості для прогнозування областей, де можуть бути розташовані дефекти.
Якщо у вас є членство в IEEE, я рекомендую шукати в IEEE транзакції з програмної інженерії більш академічні публікації та IEEE Software для деяких реальних та прикладних звітів. АСМ також може мати відповідні публікації у своїй цифровій бібліотеці .