From Wikipedia, the free encyclopedia
Метриките на даден софтуер са големина, която отразява качеството на отделните части от програмата посредством числена стойност. [1]
Метриките се делят на:
Обектно ориентираните метрики вземат под внимание взаимовръзките между програмните елементи (класове, методи).
Традиционните метрики се делят на метрики за измерване големината и сложността на програмата и метрики за измерване на програмната структура. Най-важните метрики за измерване големината и комплексността на програмата са метриките за редове код и метриките на Халстед. Цикломатичната сложност на МакКейб е най-известната метрика за измерване на програмната структура.
Измерването на редовете код (LOC, Lines of Code) е най-разпространеният начин за количественото измерване на сложността на софтуер.
Стойностите на метриките определят качеството на кода квантитативно различно в зависимост от езика за програмиране.
Според Кулман и Ламберц[2] дължината на една функция трябва да е между 4 и 40 реда код. Минималната дължина е един ред за дефиницията на функцията, два реда за отварящата и затварящата скоба за начало и край на функцията, и един ред код. Според тях дадена функция с дължина над 40 реда код най-вероятно съдържа действия за повече от една функция в себе си.
Увеличаването на дължината на функциите намалява четимостта им. Според Кулман и Ламберц дължината на един файл трябва да е между 4 и 400 реда. Минималното съдържание на един файл може да е една функция, затова минималната им дължина е 4 реда. Файлове с дължина над 400 реда (10 до 100 функции) в повечето случаи са твърде дълги, за да бъдат разбрани добре.
Коментарите трябва да представляват между 30 и 75 процента от редовете в един файл. В случай, че са по-малко файлът е или недостатъчно документиран, или прекалено тривиален. В случай, че са повече, файлът губи смисъла си на програмен, а представлява по-скоро документация.
Цикломатичната сложност на МакКейб е въведена от Томас МакКейб през 1976 г. Тя е най-разпространената метрика и е независима от езика за програмиране.
Цикломатичното число на МакКейб, v (G), показва сложността на кода спрямо действията в него. За код, съдържащ единствено последователни команди стойността на v (G) е 1.
За дадена функция v (G) е равно на броя разклонения във функцията минус едно. Разклонения се предизвикват както от оператори за разглеждане на случаи като if
и switch-case
, така и от цикли и команди за хващане на грешки (try-catch
). Колкото по-голямо е числото, толкова повече разклонения има в кода и толкова по-сложна е функцията за разбиране и тестване.
Кулман и Ламберц препоръчват цикломатичната сложност на дадена функция да е под 15. Това отговаря на поне 15 възможни развития на една функция. Такъв брой възможности са трудни за идентифициране и тестване. Според тях абсолютно максималната цикломатична сложност на МакКейб трябва да е 100.
Цикломатичната сложност на един файл е сумата от цикломатичните сложности на функциите в него.
Метриките на Халстед са едни от най-старите метрики и са въведени през 1977 г. от Морис Халстед като квантитативна мярка за сложността на дадена програма. Те се основават на броя оператори и операнди в един модул.
Метриките на Халстед интерпретират програмния код като последователност от оператори и операнди. Използват се за определяне на качеството на кода откъм възможност за поддръжка. Съществуват следните метрики на Халстед:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.