- •Практическая работа №4 «Количественные метрики программного продукта.» Вариант 17
- •Ход лабораторной работы
- •Исходные предоставленные данные
- •Листинг программы
- •Описание программы
- •Расчёт метрик Холстеда
- •Результаты sloc-анализа
- •Результаты метрики стилистики и понятности программы
- •Рaсчёт abc-метрики
Описание программы
Данный код представляет собой программу на языке Python, которая вычисляет значения функции Y для определенных интервалов аргумента X. Программа разбита на несколько файлов:
main.py: Этот файл содержит основной класс Solution, который выполняет основную бизнес-логику программы. Он импортирует класс FunctionY из файла function_y.py и несколько функций для вывода сообщений из файла messages.py;
function_y.py: Здесь определен класс FunctionY, представляющий искомую функцию Y. Он содержит методы для вычисления значений функции на различных интервалах аргумента X, а также для определения интервала, к которому принадлежит текущий аргумент;
messages.py: Этот файл содержит несколько функций для вывода приветственных сообщений, информации о работе и разработчике, а также для завершения программы;
colors.py: В этом файле определены стили текста с использованием библиотеки colorama.
Основной метод main() класса Solution в файле main.py выполняет все необходимые инструкции:
Выводит приветственные сообщения;
Создает объект класса FunctionY с заданными границами и шагом аргумента. В цикле вычисляет значения функции Y на различных интервалах аргумента X;
Выводит таблицу аргумент-значение-функция. Выводит сообщение о завершении программы.
Программа модульная и использует объектно-ориентированный подход для решения задачи. Она разделена на отдельные компоненты (классы и функции), что делает код более читаемым и поддерживаемым.
Расчёт метрик Холстеда
Основу метрик Холстеда составляют шесть базовых метрик программы:
n1 – словарь операторов (число уникальных операторов программы);
n2 – словарь операндов (число уникальных операндов программы);
N1 – общее число операторов в программе;
N2 – общее число операндов в программе;
f1j – число вхождений j-го оператора, j = 1, 2, …, n1;
f2i – число вхождений i-го операнда, i = 1, 2, …, n2.
Производные метрики программы:
Словарь программы (общее число уникальных операторов и
операндов программы): n = n1 + n2
Длина программы (общее количество операторов и операндов
программы): N = N1 + N2
Объем программы (число битов, т.е. логических единиц информации,
необходимых для записи программы): V = N*log2n
Расчет базовых метрик Холстеда изображен в таблице 1.
Таблица 4.1 – Расчет базовых метрик Холстеда
j |
Оператор |
f1j |
i |
Операнд |
f2i |
1. |
= |
12 |
1. |
value_of_argement |
3 |
2. |
<= |
1 |
2. |
step |
4 |
3. |
>= |
1 |
3. |
1.5 |
1 |
4. |
# |
50 |
4. |
1 |
1 |
5. |
+ |
44 |
5. |
2 |
1 |
6. |
{ } |
1 |
6. |
“ ” |
41 |
7. |
[ ] |
2 |
7. |
__name__ |
1 |
8. |
-> |
12 |
8. |
‘__main__’ |
1 |
9. |
from import |
8 |
9. |
second_border |
1 |
10. |
: |
26 |
10. |
None |
11 |
11. |
while |
1 |
11. |
int |
1 |
12. |
for |
1 |
12. |
Solution |
1 |
13. |
. |
123 |
13. |
y |
8 |
14. |
< |
1 |
14. |
x |
1 |
15. |
== |
1 |
15. |
string |
1 |
16. |
in |
1 |
16. |
values_of_function |
5 |
17. |
print() |
20 |
17. |
3 |
1 |
18. |
cos() |
5 |
18. |
|
|
19. |
sin() |
5 |
19. |
|
|
20. |
( , ) |
5 |
20. |
|
|
21. |
( ) |
25 |
21. |
|
|
22. |
init() |
1 |
22. |
|
|
n1 = 22 |
|
N1 = 337 |
n2 = 17 |
|
N2 = 81 |
Словарь программы: n = 22 + 17 = 39
Длина программы: N = 337 + 81 = 418
Объём программы: V = 418*log2 39 = 2209
