
- •Практическая работа №3 «Метрики сложности потока данных.» Вариант 17
- •Ход лабораторной работы
- •Исходные предоставленные данные
- •Листинг программы
- •Описание программы
- •Расчёт спена идентификаторов и спена разработанной программы
- •Расчет полной метрики Чепина и метрики Чепина ввода/вывода с результатами
Описание программы
Данный код представляет собой программу на языке 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;
Выводит таблицу аргумент-значение-функция. Выводит сообщение о завершении программы.
Программа модульная и использует объектно-ориентированный подход для решения задачи. Она разделена на отдельные компоненты (классы и функции), что делает код более читаемым и поддерживаемым.
Расчёт спена идентификаторов и спена разработанной программы
Спен идентификатора – это число повторных появлений идентификатора (число появлений после его первого появления) в тексте программы. Идентификатор, встречающийся в тексте программы n раз, имеет спен, равный n-1.
Таблица 4.1 – Спен разработанной программы
Идентификатор |
first_border |
second_border |
step |
value_of_argument |
values_of_function |
view_of_functions |
x |
y |
string |
Суммарный спен программы |
Спен |
1 |
1 |
2 |
15 |
4 |
0 |
1 |
8 |
1 |
33 |
Расчет полной метрики Чепина и метрики Чепина ввода/вывода с результатами
Метрика Чепина базируется на анализе характера использования в программе переменных.
Существуют различные варианты метрики Чепина. Ниже рассмотрен вариант (назовем данный вариант полной метрикой Чепина), в котором все множество переменных программы разбивается на четыре функциональные группы:
Р – вводимые переменные, содержащие исходную информацию, но не модифицируемые в программе и не являющиеся управляющими переменными;
М – модифицируемые переменные и создаваемые внутри программы константы и переменные, не являющиеся управляющими переменными;
С – переменные, участвующие в управлении работой программного модуля (управляющие переменные);
Т – не используемые в программе («паразитные») переменные, например, вычисленные переменные, значения которых не выводятся и не участвуют в дальнейших вычислениях.
Значение метрики Чепина определяется по формуле:
Q = a1p + a2m + a3c + a4t ,
где a1, a2, a3, a4 – весовые коэффициенты; p, m, c, t – количество переменных в группах Р, М, С, Т соответственно.
Наиболее часто применяются следующие значения весовых коэффициентов: а1 = l, а2 = 2, а3 = 3, а4 = 0,5. С учетом данных значений формула для определения метрики Чепина принимает вид:
Q = p + 2m + 3c + 0,5t.
Рассматривая различные переменные относительно разных метрик Чепина, их можно соотнести по разным группам.
Атрибуты класса functionY: first_border является входным параметром, для указания начала области определения функции, в то время как другие входные параметры step и second_border являются управляющими идентификаторами, поскольку принимают участие в самом алгоритме программы.
Переменные-паразиты отсутствуют в программе, в ней используются самые передовые версии языка программирования Python: используются различные методы коллекций данных, функции округления, математические функции из модуля math.
Итоговые пары “аргумент-значение” заносятся в список values_of_function, переменные x, y, string не являются управляющими, поэтому относятся в другую группу.
Таблица 5.1 – Метрика Чепина разработанной программы
|
Полная метрика Чепина |
Метрика Чепина ввода/вывода |
|||||||
Группа переменных |
P |
M |
C |
T |
P |
M |
C |
T |
|
Переменные, относящиеся к группе |
First_border |
Values_of_function, x, y, string |
Step, second_border, value_of_argument, view_of_functions |
Отсутствуют |
First_border, Step, second_border, |
Values_of_function, x, y, string |
view_of_functions |
Отсутствуют |
|
Количество переменных в группе |
p = 1 |
m = 4 |
c = 4 |
t = 0 |
p = 3 |
m = 4 |
c = 1 |
t = 0 |
|
Метрика Чепина |
Q = 1*1 + 2*4 + 3*4 + 0,5*0 = 21 |
Q = 1*3 + 2*4 + 3*1 + 0,5*0 = 14 |