Продължителност
Трудоемкост
Брой изменения
в изискванията
Качество
Разходи
Стабилност
Детайлно проектиране
Продължителност
Трудоемкост
Брой открити грешки
в спецификациите
Разходи
Тестване
Продължителност
Трудоемкост
Брой открити грешки
в спецификациите
Разходи
Изчерпателност
Систематичност
РЕСУРСИ
Кадри
Възраст
Възнаграждение
Производителност
Професионален опит
Екип
Численост
Структура
Продуктивност
Качество
Софтуер
Цена
Размер
Полезност
Надеждност
Хардуер
Цена
Изч. възможности
Надежност
на функциониране
Таблица 1
86
Една метрика се нарича адитивна, ако резултатите от прилагането й за
програмна система могат да се получат чрез сумиране на резултатите от прила-
гането й върху съставящите я програмни части.
7.4. Примери за софтуерни метрики Ще опишем някои софтуерни метрики, които се смятат за „класически". Те
се споменават най-често в специализираната литература и са с висока степен
на валидираност, т. е. полезността от прилагането им е потвърдена теоретичес-
ки и/или експериментално. Описанието е кратко и цели само да се добие пред-
става за съответната метрика, а в цитираните източници могат да се намерят
останалите подробности.
Метриките ще представим по следната схема:
I. Описание
То включва вида на метриката по някои от критериите за класификация,
препратка към литература за допълнителна информация, описание на самата
метрика и оценъчните елементи, които използва, възможности за автоматиза-
ция на процедурата за измерване и др.
П. Приложимост — за какво могат да се използват получаваните от метри-
ката резултати.
M1. Метрика за размера на програма I. Описание
Метриката е статична и може да се прилага както за отделен програмен
модул, така и за програмна система.
За мярка на размера на програма се избира броят програмни редове в из-
ходния текст на програмата.
L = L1 + L2
където
L — общ брой редове;
L1 — коментарни и празни редове;
L2 — същински програмни редове.
Метриката е адитивна.
II. Приложимост
Броят на грешките, усилията за разбиране, поддържане и съпровождане
са правопропорционални на размера на програмите [3, 4].
В зависимост от размера (на ниво програмна единица) и на размера и
броя модули в програмна система програмите могат да се класифицират като
прости, средно сложни, сложни и свръхсложни и за всяка категория да се фор-
мулират мерките за осигуряване на качеството, да се оценят обхватът и слож-
ността на тестването, съпровождането и др.
Примерна класификация е дадена в [3, 4]. Граничните стойности могат да
се определят експериментално или да се задават за всеки софтуерен проект.
3. L е най-проста мярка за извършената от програмиста работа.
87
M2. Метрика на Маккейб за структурна (цикломатична) сложност I. Описание
Метриката на Маккейб [5] е за програми (обекти от тип „продукт"). Тя е
статична и измерва сложността на потока на управление в програмата. Тази
метрика е една от най-често цитираните в литературата.
За прилагане на метриката трябва да се построи управляващият граф на програ-
мата, в който върховете са отделните оператори (или линейни участъци) и два върха
са свързани с ребро, ако има предаване на управление между съответните оператори.
Тогава
(G) = е — n + 2 * р,
където:
(G) е цикломатичната сложност, представляваща максималния брой ли-
нейно-независими пътища в програмата;
е — брой ребра в управляващия граф;
n — брой върхове в управляващия граф;
р — брой на свързаните компоненти в графа.
Разработени са инструментални средства за автоматично изчисляване на
цикломатичната сложност, като при това се установяват и някои структурни
неправилности — недостижими програмни части, пресичащи се цикли и други.
Недостатъци на метриката са, че не отчита дължината на линейните участь-
ци и нивото на влагане на управляващите структури. Не се отразяват и между-
модулните връзки.
Разширение на тази метрика е метриката на Гонг—Шмид [6], която пред-
лага цикломатичната сложност да се изчислява по формулата
С (G) = V (G) + Е,
където Е представя обобщената степен на вграждане на управляващите струк-
тури една в друга.
II. Приложимост
Метриката предлага мярка за вътрешномодулната сложност, която опреде-
ля леснотата на разбиране и усвояване на програмите и точността на внасяне
на изменения в тях.
Препоръчва се да се проектират модули с цикломатична сложност V < 10
като се смята, че модулите със сложност до 10 са прости, до 20 — средно слож-
ни, от 30 до 50 — сложни, а при сложност над 50 трябва да се обмисли прест-
руктуриране (разделяне на няколко модула).