Системный анализ System analysis
УДК 004.05 DOI 10.29141/2949-477X-2024-3-2-1 EDN UEZYBI
А.С. Рванова1, Н.С. Кольева2, М.В. Панова2
'Университет ИТМО, г. Санкт-Петербург, Российская Федерация 2Уральский государственный экономический университет, г Екатеринбург, Российская Федерация
Разработка модели оценки структурной сложности программ
Аннотация. Статья посвящена оценке структурной сложности программ. Описан алгоритм нахождения цикломатических маршрутов исполнений программы. К настоящему времени определены два направления получения оценок сложности программных модулей: структурное и статистическое. Оба направления связывают значение сложности программ с трудоемкостью их разработки. Структурная сложность программных модулей обусловлена числом взаимодействующих компонент, числом и сложностью связей между ними. Сложность поведения программы в большой степени зависит от совокупности маршрутов, по которым она исполняется. Метрика сложности, полученная с этих позиций, позволяет определить оценки затрат на проектирование программы в целом, а также идентифицировать модули, которые, вероятно, содержат больше всего ошибок, особенно логического характера.
Ключевые слова: сложность алгоритма; метрики; анализ; оценка; граф; вершины графа; моделирование.
Дата поступления статьи: 4 апреля 2024 г.
Для цитирования:Рванова А.С., Кольева Н.С., Панова М.В. Разработка модели оценки структурной сложности программ // Цифровые модели и решения. 2024. Т. 3, № 2. С. 5-16. DOI: 10.29141/2949-477Х-2024-3-2-1. EDN: UEZYBI.
A.S. Rvanova1, N.S. Kolyeva2, M.V. Panova2
'ITMO University, St. Petersburg, Russia 2Ural State University of Economics, Ekaterinburg, Russia
Development model for assessing the structural complexity of programs
Abstract. The research is devoted to the estimation the structural complexity of programs. The algorithm of finding cyclomatic routes for program executions is described. By now, two directions of obtaining estimates for the complexity estimates in software modules
Системный анализ System analysis
have been defined: structural and statistical. Both directions connect the value of program complexity with the labor intensity related to their development. The structural complexity of program modules is determined by the number of interacting components, the number and complexity of links between them. The complexity of a program's behavior depends to a large extent on the set of routes through which it is executed. The complexity metric obtained from these positions allows us to determine estimates of the cost of designing the program as a whole, as well as to identify the modules that are likely to contain the most errors, especially the logical ones.
Key words: algorithm complexity; metrics; analysis; estimation; graph; graph vertices; modeling.
Paper submitted: April 4, 2024.
For citation:Rvanova A.S., Kolyeva N.S., Panova M.V. Development model for assessing the structural complexity of programs. Digital models and solutions. 2024. Vol. 3, no. 2. Pp. 5-16. DOI: 10.29141/2949-477X-2024-3-2-1. EDN: UEZYBI.
Одним из способов измерения сложности программы является использование в качестве основного индикатора такой топологической характеристики управляющего графа программы (далее - просто графа), как цикломатическое число.
Согласно этому подходу оценка сложности программы состоит в вычислении числа линейно-независимых маршрутов в графе программы, т.е. таких маршрутов, при комбинировании которых можно получить все маршруты из входа графа в выход. Число линейно-независимых маршрутов в графе программы, который является орграфом, равно его цикломатическому числу, увеличенному на единицу. Поэтому далее в работе будем называть такие маршруты цикломатическими.
Цикломатической метрикой сложности программы (метрикой Маккейба) [1; 2] называется величина У(О):
где - цикломатическое число соответствующего графа программы; т - число дуг в нем; п - число вершин.
Для расчета У(О) и выделения цикломатических маршрутов в исследовании [3] приводится алгоритм, где используются матрицы смежности и достижимости графа. Обе матрицы имеют размер п*п, где п - число вершин графа. Матрицу достижимости получают из матрицы смежности путем возведения последней в степень, равную числу вершин графа без единицы.
В данном исследовании для автоматического расчета метрики [4] используется аппарат ^-анализа [4; 5], Исходная для ^-анализа система описывается в виде бинарного отношения между двумя конечными множествами. Анализируемой системой в нашем слу-
Введение
V(G) = ЦО) + 1 = m - n + 2,
(1)
Системный анализ System analysis
чае является граф программы, бинарное отношение для которого записывается в виде матрицы инцидентности А. Для графа программы можно рассмотреть два комплекса: прямой, который описывает выходы из вершин графа, и сопряженный, описывающий входы в вершины графа. Оба комплекса задаются в виде 0-матриц [5].
Построение и анализ Q-матриц для графа программы
Для графа программы строим матрицу А размерности (п - 1) х п, где п - число вершин графа, полагая в ней элементы (/, 7) равными 1, если из вершины с номером г есть дуга в вершину7, и равными 0 в противном случае. Таким образом, в матрице А в строках указываются выходы из вершин, а в столбцах - входы в вершины графа.
Рассмотрим прямой комплекс по выходам из вершин графа и составим для него ^-матрицу следующим способом. Каждый элемент qij этой матрицы равняется числу совпадающих единиц в строках г и7 матрицы А без единицы. В случае отсутствия совпадающих элементов в сравниваемых строках исходной матрицы в соответствующем элементе ^-матрицы ставится знак «-» (символ несвязности). Если из вершин графа программы выходит не более двух единиц, то ^-матрица будет состоять только из единиц, нулей и знаков несвязности. Недиагональные элементы qij (г Ф7) дают размерность симплексов, соединяющих вершины с номерами г и7 комплекса. При нулевом значении элемента qij между вершинами существует одна связь, при единичном - две и т.д. Диагональные элементы qij (г = 7) все равны либо нулю, либо целому положительному числу.
Число диагональных элементов в ^-матрице, отличных от нуля, дает число вершин, в которых происходит ветвление. Поэтому метрика У(О) получается из прямой ^-матрицы следующим образом:
п - 1
Г(О) = 2 qn + 1. (2)
г = 1
Точно так же можно построить ^-матрицу для сопряженного комплекса с той лишь разницей, что сравнение проводится по столбцам матрицы. Этот комплекс описывает входы в вершины графа. Недиагональные элементы сопряженной ^-матрицы такие же, как и в прямой ^-матрице. Диагональные элементы могут принимать любое неотрицательное значение. Для структурированной программы, где нет вложенных циклов с общей начальной вершиной, диагональные элементы сопряженной матрицы имеют значения 0 и 1. Исключение составляют элементы, которые соответствуют вершинам графа, являющимся выходом из вложенных базовых структур (компоненты структурного программирования). Эти элементы будут больше единицы, и отличить их можно следующим образом. Если qij > 1 и вершина с номером г не является начальной вершиной цикла в присоединенной структуре, то среди элементов qij для 7 < г в прямой ^-матрице и для 7 > г в сопряженной ^-матрице нет ни одной связи. Нумерация вершин в этом случае должна вести сверху вниз в порядке соединения структур. Внутри структуры вершины графа должны быть пронумерованы таким образом, чтобы конец дуги имел номер больший, чем начало дуги (исключение составят только дуги, замыкающие цикл). При такой нумерации вершин анализ ^-матриц позволяет обнаружить некоторые неструктурности программы (например, «ветвление из решения», «ветвление в решение»).
Системный анализ System analysis
Обе ^-матрицы симметричны относительно главной диагонали. Поэтому можно изображать их треугольной матрицей с главной диагональю.
Алгоритм выделения цикломатических маршрутов графа программы
С помощью сопряженной ^-матрицы и матрицы А формируем список начальных вершин циклов (далее - список циклов). В этот список войдут вершины, соответствующие диагональные элементы, которых в сопряженной ^-матрице больше нуля. В такие вершины входит дуга (замыкающая цикл), номер конца которой меньше номера начала (находим по матрице А ).
На рис. 1 приведена схема алгоритма выделения цикломатических маршрутов исполнения программы (далее просто маршрутов). Здесь и - степени исхода 1-й вершины графа (число выходящих дуг) и захода]-й вершины (число входящих дуг). Входной информацией для алгоритма является матрица А.
Сначала по алгоритму выделяем линейно-независимые циклы, затем находим оставшиеся маршруты. При выделении циклов номер строки г матрицы А и значение п полагаются равными номеру очередной вершины из списка циклов. Если список исчерпан, то все циклы выделены. Для оставшихся маршрутов г полагается равным единице, а п - номеру конечной вершины графа.
->
Печать маршрута
Рис. 1. Алгоритм выделения цикломатических маршрутов графа программы
Просматриваемые дуги (/,_/') на выделяемом маршруте могут быть в одном из трех состояний: непомеченное, помеченное и исключенное. Запоминается только последняя помеченная дуга.
Исключение замыкающей дуги цикла является признаком того, что все циклы с общей начальной вершины выписаны. Для этого исключаем не только дугу, помеченную на предыдущем шаге, но и просматриваемую, если = 1 и > 1 Чтобы исключать в первую очередь внутренние из вложенных циклов, список циклов следует упорядочить по убыванию.
При выделении циклов может возникнуть ситуация, когда придем в конечную вершину графа, т.е. г получит значение номера конечной вершины. Чтобы определить такую ситуацию, необходимо во входной матрице добавить одну строку с нулевыми элементами. Тогда по алгоритму при нахождении для г-й вершины смежной с минимальным номером
о
Для 1-й вершины находим смежную у с минимальным номером. Находим d\i) и <ГЦ)
1+]
d (i) > 1 & и d (i) > 1 Нет исключенной дуги г: =/
->о—--——>о-„ >0—Ю
исключить дугу (i,j)
d\i) > 1 & и d~(j) - 1
поместить дугу (i,j) d\î) = 1 & и d (j) > 1
>0
Есть помеченная дуга.
Нет исключенной дуги
Исключить дугу (i,f) и помеченную
Системный анализ System analysis
получим 7 = 0. В этом случае необходимо возвратиться в исходную начальную вершину цикла, восстановить удаляемые дуги и запретить проход по ним до тех пор, пока не удалим замыкающую дугу циклов.
Если на очередном маршруте нет исключенных дуг - это признак того, что все маршруты выделены. Их число должно быть равно числу У(О).
Предложенный алгоритм обеспечит необходимое покрытие графа. Действительно, если т - число дуг графа, п - число его вершин, то цикломатическое число = т - п + + 1 = т - (п - 1), т.е. М@) есть число дуг, не принадлежащих произвольно выбранному остову [6-8]. При построении покрытия графа по алгоритму на каждой итерации (за одну итерацию выписываем один маршрут) исключим только одну дугу, удаление которой не нарушает связности графа. Для таких дуг (г, 7) либо сС+(г) > 1 и сСт(/) > 1, либо сС+(г) = 1 и с-/) > 1. Таким образом, удаляем дугу, не принадлежащую остову графа, а Х(О) есть число таких дуг. Еще один маршрут получаем на последней итерации, когда нет удаленных дуг, т.е. число всех маршрутов У(О) = Х(О) + 1.
Оценим сложность алгоритма. Для программ в большинстве случаев можно считать, что степень выхода каждой вершины (отличной от конечной) равна 1 или 2. Тогда число дуг т < 2п, где п - число вершин графа программы. Получаем, что У(О) < п + 2. Для каждой итерации требуется не более п операций, а число итераций равно У(О). Следовательно, сложность алгоритма есть 0(п2).
Q-анализ и суммарная сложность текстов. Если У(О) - число выделенных маршрутов, кг - число вершин ветвления (условия-предикатов) в г-м маршруте, а к - суммарное число таких вершин во всех маршрутах (сложность тестов), то имеем
У(О)
к = Хк-. (3)
г = 1
Число к так же, как и У(О), характеризует сложность программы и соответствует трудоемкости тестирования ее логики.
Оценку к для структурированной программы можно получить, не выписывая ее маршруты исполнения. Это число зависит не только от общего числа операторов ветвления, но и от того, как соединены эти операторы. Число вложенных и параллельных операторов ветвления и глубины вложенности можно определить, если провести ^-анализ сопряженного комплекса. Проведение ^-анализа сводится к следующему. Просматривается элемент qij с максимальным значением, которое соответствует размерности симплекса q. Затем просматривают недиагональные элементы по строкам и столбцам матрицы. Значение элемента qij дает размерность (уровень) связности симплексов. Далее находят число q-связанных компонент на каждом уровне связности. На следующих шагах рассматривают уровни q - 1, q - 2, ..., 1,0.
Рассмотрим два уровня: q = 1 и q = 0 (элементы qij > 1 могут быть только на диагонали). Суммарная сложность тестов зависит от того, какие вершины (ветвления или нет) войдут в связанные симплексы на этих уровнях.
Экспериментальным путем получена оценка суммарной сложности тестов (число к) при прохождении цикломатических маршрутов 1 раз. Для графа без мостов [9; 10] имеем
Системный анализ System analysis
к = n(n + 3) / 2 -p(n -p - 1) + t,
(4)
где п - число вершин ветвления графа (сумма диагональных элементов в прямой ^-матрице); р - число связей вершин ветвления на первом и нулевом уровнях; I - число начальных вершин циклов, которые имеют два выхода (соответствующие элементы на диагонали прямой ^-матрицы равны единице).
Число р фактически равно числу операторов ветвления (одна связь - два оператора), выполняющихся параллельно, т.е. вложенных в разные ветви оператора ветвления.
Параллельность при глубине вложенности больше двух можно не обнаружить по сопряженной ^-матрице. Число к в этом случае будет больше фактического на величину, которая зависит от п и от числа необнаруженных связей. Следует отметить, что программа при такой глубине вложенности с параллельным 1¥ достаточно сложная, а число к увеличивается незначительно. Например, если для п = 7 (цикломатическая сложность равна восьми) из трех связей одна не обнаружена, то к больше фактического только на единицу. Такая связь возможна, например, при глубине вложенности, равной трем, и на втором и третьем уровнях вложенности есть параллельные 1¥.
По формуле (4) можно рассчитать сложность к и для неструктурированных программ, если только на маршрутах, проходящих через структуры с более чем одним входом, нет циклов.
Для графа с одним мостом (^-матрицы имеют блочную структуру) формула для вычисления к примет вид
где р\ и р2 - число связей вершин ветвления в графе до и после моста соответственно; П1 - число вершины ветвления в графе после моста.
В формулах (4) и (5) учитывается прохождение по циклам от начальной вершины графа, а не от начальной вершины цикла.
Применение той или иной метрики для оценки программ требует дополнительных расходов. Поэтому перед разработчиками программного обеспечения стоит проблема экономической целесообразности применения метрик качества и сложности. Для оценки программ [11] с этой точки зрения применять метрики У(0) и к эффективнее и целесообразнее, так как программа, представленная нагруженным по дугам графом, неотделима от него. Для программ приходится либо специально составлять блок-схему, либо генерировать образец графа из исходного модуля программным способом.
Более того, поскольку каждый этап разработки программ представляется в виде Р-схе-мы [10; 11] (данных, алгоритма и т.д.), то метрику для оценки структурной сложности разработки отдельного этапа при необходимости всегда можно эффективно применить.
Для расчета структурной сложности программ с использованием метрики Маккейба также можно применить аппарат ^-анализа.
Чтобы определить бинарное отношение X, используем следующее правило нумерации: нумерации подлежат все вершины Р-схемы, а также концы дуг, а именно если две вершины соединяют п дуг (п > 1), то конец первой дуги получает номер вершины, в которую входят дуги, а концы остальных (п - 1) дуг нумеруются иными номерами.
к = n(n + 3) / 2 - p(n - p - 1) + t + (2pi + 1)n2 - 2p2),
(5)
Системный анализ System analysis
При выписывании маршрутов, достигнув одного их этих (п - 1) номеров, будем осуществлять переход в вершину, в которую входят все п дуг. Вершины специальной структуры [11] получают один номер.
Рекомендуется сначала пронумеровать все вершины (в порядке соединения структур слева направо), затем оставшиеся непронумерованные концы дуг. Это позволит избежать пустых строк в матрице А. Размер матрицы т*п, где т - число строк матрицы, равное числу вершин Р-схемы конечной, п - число столбцов, равное числу всех пронумерованных вершин и концов дуг.
Следует отметить, что метрики У(О) для программ, представленных Р-схемой и блок-схемой, одинаковы. Однако отличаться по сложности они могут суммарным числом условий (число к), которое необходимо задать, чтобы пройти все цикломатические маршруты программы. Если в Р-схеме, как и в блок-схеме, из вершин выходит не более двух дуг (зависит от глубины вложенности операторов ветвления), то число к для них одинаково. При глубине вложенности операторов ветвления больше двух число к для Р-схемы будет меньше, чем для блок-схемы. В этом случае прямая ^-матрица содержит на диагонали элементы больше единицы. Размеры обеих ^-матриц сокращаются.
Описанный алгоритм можно эффективно использовать как для «ручного» тестирования программы, так и для машинного - с применением ПК. При этом к тестированию программы можно приступать на начальных этапах проектирования, так как с самого начала мы строим Р-схему соответствующего этапа разработки. Это позволяет обнаружить подавляющее большинство ошибок этапа проектирования, причем поиск ошибок проводится целенаправленно: необходимо выписать и проверить все маршруты исполнения программы.
Приступив к тестированию на ранних этапах разработки, не только есть возможность исправлять логические ошибки проектирования, но можно оценить сложность и стоимость разработок еще до написания программы на языке программирования.
Рассмотрим пример управляющего графа программы (рис. 2). Построим для него матрицу А (матрица 1 на рис. 3) и составим ^-матрицы (матрицы 2 и 3 на рис. 4 и 5).
Из матрицы 2 имеем, что вершинами ветвления в графе являются вершины из списка (1, 2, 6, 7, 9, 10). Получаем
n
V(G) = I qn + 1 = 7.
i = 1
Рис. 2. Пример управляющего графа
Системный анализ System analysis
1 2 3 4 5 6 10 11 12
2 3 4 56789
Рис. 3. Матрица 1
1 1 1 1 0
2 1 1 2 1 0 _ _
3 3 0
4 1 4 0 0
5 1 5 0
6 1 6 1
7 1 1 7 1
8 8 0
9 1 9 1
10 1 1 10
11 1 11
Рис. 4. Матрица 2
Таким образом, в графе можно выделить семь цикломатический маршрутов. Сначала по описанному выше алгоритму выделяем циклы, отправляясь от вершин из списка цикла (8, 5, 4) (находим по матрице 3). Оставшиеся четыре маршрута получаем, отправляясь от вершины 1. Все семь маршрутов приведены ниже:
1) 8 - 9 - 8;
2) 5 - 6 - 5;
3) 4 - 5 - 6 - 7 - 4;
4) 1 - 2 - 3 - 8 - 9 - 12;
5) 1 - 2 - 4 - 5 - 6 - 10 - 11 - 12;
6) 1 - 2 - 4 - 5 - 6 - 7 - 10 - 12;
7) 1 - 3 - 8 - 9 - 12.
В каждом маршруте указано к - число вершин ветвления в г-м маршруте. Достаточно подсчитать частоту повторения в маршруте вершин из списка ветвлений. Суммарное число условий к равно 19.
2 3 4 5 6 7 11 12
23456789
2 0 0 1 1 1 1
3 1 0 2 1
4 1 3 1 1
5 1 4 1
6 0 5 1
7 0__ 6 1 1 1 1
Рис. 5. Матрица 3 Рис. 6. Матрица 4
2 3 4 5 6 7 8 9
2 1 0 0 0
1 2 3 4 5 6 3 0
1 2 0 _ 0 4 1 0 _0 0 0
2 0 5 1 _0 0
3 1 _0 6 0_
4 0 _0 7 1 0
5 0_ 8 0 1
6 3 9 0
Рис. 7. Матрица 5
Рис. 8. Матрица 6
Системный анализ System analysis
Элемент ^33 в матрице 3 равен 1, хотя вершина 3 не является началом цикла. Она также не является выходом и структуры, так как в матрице 3 среди элементов и qjа для] > 3 есть нулевые. Следовательно, программа, представленная графом на рис. 2, не является структурированной за счет ситуации «ветвление из решения».
Для оценки структурной сложности используем пример программы, представленной графом на рис. 2. Р-схема этой программы с пронумерованными вершинами и концами дуг показана на рис. 6.
Строим для Р-схемы матрицу А (матрица 4) и ^-матрицы (матрицы 5 и 6). Размеры матриц значительно уменьшились.
Анализ матриц показывает, что метрика У(О) (сумма диагональных элементов матрицы 5) не изменилась, а число к уменьшилось до 11. Список вершин ветвления (1, 3, 6) получен из матрицы 5, начальные вершины циклов (2, 4, 5) определены из матрицы 6.
Заключение
Приведенные выше критерии оценки сложности структуры программы характеризуют минимальное количество проверок, необходимое для каждого критерия. В этом случае оценить достаточность проверок программы гораздо сложнее, поскольку, помимо сложности структуры программы, необходимо проанализировать сложность трансформации переменных, их изменения и сочетания с другими переменными. Применение метрик для оценки сложности структуры позволяет более эффективно оценивать сложность программы и повышать качество управления процессом разработки. Совокупность метрик позволяет более глобально оценить исходный код и работу программиста и упрощает задачу оценки работы программиста.
Источники
1. Батьковский А.М., Стяжкин А.Н., Хрусталев Е.Ю. Инструментарий разработки оптимального варианта программы диверсификации производства и оценки ее мероприятий // Политематический сетевой электронный научный журнал Кубанского государственного аграрного университета. 2021. № 167. С. 207-227. DOI: 10.21515/1990-4665-167-014. EDN: TMVVAI.
2. Кривель С.М., Лебедева А.А., Спасибко А.Б. Методика и программное обеспечение моделирования функционирования систем с учетом характеристик их надежности на этапах эксплуатации и проектирования // Crede Experto: транспорт, общество, образование, язык. 2023. № 1. С. 57-76. DOI: 10.51955/2312-1327_2023_1_57. EDN: CRPEIE.
3. Кербер Л.С., Тихонов А.И. Применение показателя ROI при оценке эффективности корпоративных HR-программ // Московский экономический журнал. 2022. Т. 7, № 12. URL: https://qje.su/ekonomicheskaya-teoriya/moskovskij-ekonomicheskij-zhurnal-12-2022-5/ (дата обращения: 08.04.2023). DOI: 10.55186/2413046X_2022_7_12_702. EDN: SEGXAU.
4. Демин А.Ю., Рейзлин В.И. Анализ программного обеспечения на основе структурно-графического представления // Проблемы информатики. 2011. № S2. С. 6-15. EDN: OPAEHJ.
Системный анализ System analysis
5. Жуков В.В. Методы синтеза бинарных программ, допускающих рекурсивный вызов процедур // Вестник Московского университета. Серия 15: Вычислительная математика и кибернетика. 2021. № 3. С. 3-12. EDN: WNWWCY.
6. Буснюк Н.Н., Новиков В.А. Компьютерное тестирование знаний с позиций методологии OLTP // Труды БГТУ. Серия 3: Физико-математические науки и информатика. 2018. № 1(206). С. 130-134. EDN: YXBESG.
7. Ермолаев Е.В., Чурилов Д.А. Анализ семантической близости критериев оценивания рабочих программ дисциплин // Информационные технологии. Проблемы и решения. 2021. № 2(15). С. 33-39. EDN: AHZCYP.
8. Бибило П.Н., Позняк А.М. Выделение подсистем связанных функций из многоуровневого представления системы булевых функций // Информатика. 2020. Т. 17, № 1. С. 63-77. DOI: 10.37661/1816-0301-2020-17-1-63-77. EDN: MHVCBW.
9. Кольева Н.С., Боруцкий Г.И. Приложение 1. Содержимое package.json // Современные тренды высшего образования: монография / отв. ред. А.Ю. Нагорнова. Ульяновск: ИП Кеньшенская В.В., 2023. С. 586-589. EDN: ENCZAW.
10. Воеводин В.В. Параллелизм в сложных программных комплексах (почему сложно создавать эффективные прикладные пакеты) // Чебышевский сборник. 2017. Т. 18, № 3(63). С. 188-201. DOI: 10.22405/2226-8383-2017-18-3-188-201. EDN: XWQEWL.
11. Климято П.В. Исследование компьютерной информации с использованием программно-аппаратных комплексов // Противодействие киберпреступлениям и преступлениям в сфере высоких технологий: материалы междунар. науч.-практ. конф. (Москва, 2-3 декабря 2021 г.). М.: Московская академия Следственного комитета Российской Федерации, 2022. С. 53-58. EDN: NMAHWJ.
References
1. Bat'kovskii A.M., Styazhkin A.N., Khrustalev E.Yu. Instrumentarii razrabotki optimal'no-go varianta programmy diversifikatsii proizvodstva i otsenki ee meropriyatii [Toolkit for developing the optimal version of the production diversification program and evaluation of its measures]. Politematicheskii setevoi ehlektronnyi nauchnyi zhurnal Kubanskogo gosudarstvennogo agrarnogo universiteta. 2021. No. 167. Pp. 207-227. DOI: https://doi. org/10.21515/1990-4665-167-014. EDN: https://www.elibrary.ru/tmvvai. (In Russ.)
2. Krivel' S.M., Lebedeva A.A., Spasibko A.B. Metodika i programmnoe obespechenie mode-lirovaniya funktsionirovaniya sistem s uchetom kharakteristik ikh nadezhnosti na ehtapakh ehkspluatatsii i proektirovaniya [Methodology and software for modeling the functioning of systems taking into account the characteristics of their reliability at the stages of operation and design]. Crede Experto: transport, obshchestvo, obrazovanie, yazyk. 2023. No. 1. Pp. 57-76. DOI: https://doi.org/10.51955/2312-1327_2023_1_57. EDN: https://www.eli-brary.ru/crpeie. (In Russ.)
3. Kerber L.S., Tikhonov A.I. Primenenie pokazatelya ROI pri otsenke ehffektivnosti korpo-rativnykh HR-programm [Application of the ROI indicator in assessing the efficiency of corporate HR-programs]. Moskovskii ehkonomicheskii zhurnal. 2022. Vol. 7, no. 12. URL: https://qje.su/ekonomicheskaya-teoriya/moskovskij-ekonomicheskij-zhurnal-12-2022-5/
Системный анализ System analysis
(accessed 08.04.2023). DOI: https://doi.org/10.55186/2413046X_2022_7_12_702. EDN: https://www.elibrary.ru/segxau. (In Russ.)
4. Demin A.Yu., Reizlin V.I. Analiz programmnogo obespecheniya na osnove strukturno-gra-ficheskogo predstavleniya [Software analysis based on structural-graphical representation]. Problemy informatiki. 2011. No. S2. Pp. 6-15. EDN: https://www.elibrary.ru/opaehj. (In Russ.)
5. Zhukov V.V. Metody sinteza binarnykh programm, dopuskayushchikh rekursivnyi vyzov protsedur [Synthesis methods for binary programs that allow recursive procedure calls]. Vestnik Moskovskogo universiteta. Seriya 15: Vychislitel'naya matematika i kibernetika. 2021. No. 3. Pp. 3-12. EDN: https://www.elibrary.ru/wnwwcy. (In Russ.)
6. Busnyuk N.N., Novikov V.A. Komp'yuternoe testirovanie znanii s pozitsii metodologii OLTP [Computer testing from OLTP methodology positions]. Trudy BGTU. Seriya 3: Fiziko-matematicheskie nauki i informatika. 2018. No. 1(206). Pp. 130-134. EDN: https:// www.elibrary.ru/yxbesg. (In Russ.)
7. Ermolaev E.V., Churilov D.A. Analiz semanticheskoi blizosti kriteriev otsenivaniya rab-ochikh programm distsiplin [Analysis of semantic proximity of criteria for evaluating work programs of disciplines]. Informatsionnye tekhnologii. Problemy i resheniya. 2021. No. 2(15). Pp. 33-39. EDN: https://www.elibrary.ru/ahzcyp. (In Russ.)
8. Bibilo P.N., Poznyak A.M. Vydelenie podsistem svyazannykh funktsii iz mnogourovnevogo predstavleniya sistemy bulevykh funktsii [The search for subsystems of related functions from multilevel representation of systems of Boolean functions]. Informatika. 2020. Vol. 17, no. 1. Pp. 63-77. DOI: https://doi.org/10.37661/1816-0301-2020-17-1-63-77. EDN: https:// www.elibrary.ru/mhvcbw. (In Russ.)
9. Kol'eva N.S., Borutskii G.I. Prilozhenie 1. Soderzhimoe package.json [Appendix 1. Contents of package.json]. In: Nagornov A.Yu. (ed.). Sovremennye trendy vysshego obrazovani-ya. Ul'yanovsk: IP Ken'shenskaya V.V., 2023. Pp. 586-589. EDN: https://www.elibrary.ru/ enczaw. (In Russ.)
10. Voevodin V.V Parallelizm v slozhnykh programmnykh kompleksakh (pochemu slozhno sozdavat' ehffektivnye prikladnye pakety) [Parallelism in large software packages (why is it difficult to create efficient software)]. Chebyshevskii sbornik. 2017. Vol. 18, no. 3(63). Pp. 188-201. DOI: https://doi.org/10.22405/2226-8383-2017-18-3-188-201. EDN: https:// www.elibrary.ru/xwqewl. (In Russ.)
11. Klimyato P.V. Issledovanie komp'yuternoi informatsii s ispol'zovaniem programmno-ap-paratnykh kompleksov [Research of computer information using software and hardware systems]. In: Protivodeistvie kiberprestupleniyam i prestupleniyam v sfere vysokikh tekhnologii: materialy mezhdunar. nauch.-prakt. konf. (Moskva, 2-3 dekabrya 2021 g.). Moscow: Moskovskaya akademiya Sledstvennogo komiteta Rossiiskoi Federatsii, 2022. Pp. 53-58. EDN: NMAHWJ. (In Russ.)
Информация об авторах
Рванова Алла Сергеевна, кандидат педагогических наук, доцент, доцент научно-образовательного центра математики. Университет ИТМО, 197101, РФ, г. Санкт-Петербург,
Кронверкский пр-кт, 49, лит. А. E-mail: alla_rv@mail.ru.
Системный анализ System analysis
Кольева Наталья Станиславовна, кандидат педагогических наук, доцент, доцент кафедры информационных технологий и статистики. Уральский государственный экономический университет, 620144, РФ, г. Екатеринбург, ул. 8 Марта/Народной Воли, 62/45. E-mail: nkoleva@mail.ru.
Панова Марина Валерьевна, старший преподаватель кафедры информационных технологий и статистики. Уральский государственный экономический университет, 620144, РФ, г. Екатеринбург, ул. 8 Марта/Народной Воли, 62/45. E-mail: marval@usue.ru.
Information about the authors
Alla S. Rvanova, Associate Professor, Candidate of Pedagogical Sciences, Research and Educational Center for Mathematics, ITMO University, 197101, Russia, St. Petersburg, Kro-nverksky Ave., 49, bldg. A. E-mail: alla_rv@mail.ru.
Natalya S. Kolyeva, Associate Professor, Candidate of Pedagogical Sciences, Associate Professor of the Department of Information Technologies and Statistics. Ural State University of Economics, 620144, Russian Federation, Ekaterinburg, 8 Marta/Narodnaya Volya St., 62/45. E-mail: nkoleva@mail.ru.
Marina V. Panova, Senior Lecturer of the Department of Information Technologies and Statistics. Ural State University of Economics, 620144, Russian Federation, Ekaterinburg, 8 Marta/Narodnaya Volya St., 62/45. E-mail: marval@usue.ru.