РАЗРАБОТКА ПРОГРАММНЫХ МОДУЛЕЙ ПОДСИСТЕМЫ ОГРАНИЧЕНИЯ КОГНИТИВНОЙ СЛОЖНОСТИ IDEF0-ДИАГРАММ

Ремизов В. К., Григорьев А. В. Разработка программных модулей подсистемы ограничения когнитивной сложности IDEF0-диаграмм // Информатика, управляющие системы, математическое и компьютерное моделирование — 2024 (ИУСМКМ-2024): сборник материалов XV Международной научно-технической конференции. — Донецк: ДонНТУ, 2024. — Т. 2. — С. 1146–1155.

В. К. Ремизов, А. В. Григорьев

Донецкий национальный технический университет, г. Донецк кафедра программной инженерии им. Л.П. Фельдмана

E-mail: vsevolod.remizov@gmail.com, grigorievalvl@gmail.com

Аннотация

Рассмотрен процесс разработки программных модулей подсистемы ограничения когнитивной сложности IDEF0-диаграмм. Определены средства разработки. Описан алгоритм работы системы. Рассмотрены полученные результаты.

Введение

Проектирование программных систем предусматривает получение графических представлений алгоритмов. Часто такие представления получаются слишком сложными для понимания, поэтому необходимо отслеживать сложность получившейся модели и затем ее упрощать. При определении когнитивной сложности (сложности восприятия структуры модели людьми) необходимо учитывать, что оценка такой сложности зависит от уровня компетентности человека в предметной области модели [1].

Таким образом, получение графического представления алгоритма, соответствующего необходимому уровню когнитивной сложности – долгий и трудоемкий процесс. Поэтому необходимо автоматизировать решение данной задачи.

Для преобразования алгоритма к виду, имеющему ограниченную когнитивную сложность, необходимо получить его блочную структуру и выделить таблицы связей [2]. Поэтому для получения графического представления алгоритма используется нотация IDEF0, которая описывает алгоритм при помощи блоков (функции) и стрелок (элементы системы, участвующие в работе алгоритма) [3].

Целью предлагаемой статьи является разработка программных модулей подсистемы ограничения когнитивной сложности IDEF0-диаграмм.

Для достижения данной цели необходимо решить следующие задачи:

  • определить средства разработки;
  • описать алгоритм работы системы;
  • спроектировать и реализовать систему;

Средства разработки

Для разработки приложения была выбрана среда разработки Microsoft Visual Studio 2022, а для разработки базы данных – SQLite.

Microsoft Visual Studio 2022 – это универсальный инструмент для разработки программного обеспечения с помощью платформы .NET и языка C#, а также для разработки интерфейса программного обеспечения при помощи WPF и языка разметки XAML.

Платформа Microsoft .NET (и связанный с ней язык программирования C#) – одна из основных современных сред разработки программного обеспечения. Она предоставляет многочисленные API-интерфейсы, включая доступ к базам данных с помощью ADO.NET и Entity Framework, набор технологий LINQ, WPF и другие [4].

SQLite – написанная на ANSI-C библиотека, которая реализует движок реляционных баз данных. В отличие от других систем баз данных SQLite для своей работы не требует сервер базы данных, а обращается напрямую к файлу базы данных на диске [5].

К преимуществам SQLite можно отнести:

  • мобильность;
  • портативность;
  • надежность;
  • кроссплатформенность;
  • высокую скорость работы;
  • открытый исходный код;
  • совместимость со многими языками программирования, такими как Python, Java, C# и т.д.

Описание системы

Рассмотрим алгоритм работы системы, диаграмма прецедентов которой представлена на рисунке 1.

Диаграмма прецедентов
Рисунок 1 – Диаграмма прецедентов

Входными данными системы является IDEF0-диаграмма, описанная при помощи языка IDL:

  • описание диаграмм, блоков и стрелок заключены в блоки «DIAGRAM-ENDDIAGRAM», «BOX-ENDBOX» и «ARROWSEG-ENDSEG» соответственно.
  • название диаграммы записано после ключевого слова «TITLE», название блока – после слова «NAME», а название стрелки – после слова «LABEL».
  • код (узел) диаграммы записан после слова «GRAPHIC», а код диаграммы с декомпозицией блока – после слов «DETAIL REFERENCE».
  • координаты левого верхнего и правого нижнего углов блока записаны после слов «BOX COORDINATES», а координаты стрелки – после слова «PATH» (сначала указываются координаты начала стрелки, затем координаты каждого изгиба стрелки и в последнюю очередь координаты конца стрелки).
  • «источник» стрелки описывается в формате «SOURCE BOX <Номер блока, из которого стрелка выходит> <Тип стрелки (O)> <Порядок выхода стрелки из блока>» или «SOURCE BORDER<Тип стрелки (O/C/M)> <Порядок выхода стрелки из границы изображения>». (где I – вход (Input); C – управление (Control); M – механизм (Mechanism); O – выход (Output)).
  • «приемник» стрелки аналогично описывается в формате «SINK BOX <Номер блока, в который стрелка входит> <Тип стрелки (I/C/M)> <Порядок входа стрелки в блок>» или «SINK BORDER<Тип стрелки (I)> <Порядок входа стрелки в границу изображения>».

Данные, полученные при помощи разбора .IDL файла, сохраняются в SQLite базу данных, концептуальная модель которой представлена на рисунке 2.

Затем при помощи SQL-запросов вида «select diagram.name as 'Диаграмма', diagram.code 'Узел', box.box_id 'ID блока', box.name 'Блок', arrow.name 'Данные'from box join diagram on box.diagram_id = diagram.diagram_id join arrow on diagram.diagram_id = arrow.diagram_id where ((toX = leftX) and (toY between rightY and leftY)) order by box.box_id;» определяются таблицы входов, выходов, механизмов и управлений.

Концептуальная модель базы данных
Рисунок 2 – Концептуальная модель базы данных

Далее определяется когнитивная сложность диаграммы при помощи меры когнитивной сложности [6-7], построенной с использованием введенных пользователем весовых коэффициентов.

Когнитивная сложность IDEF0-диаграммы определяется по формуле (1).

\[S = K_l \cdot L + K_b \cdot \sum_{i=1}^{B} \left( K_{in} \cdot In_j + K_{out} \cdot Out_j + K_{mech} \cdot Mech_j + K_{cont} \cdot Cont_j \right)\tag{1}\]

В этой формуле \(K_l\), \(K_b\), \(K_in\), \(K_out\), \(K_mech\), \(K_cont\) – весовые коэффициенты для связей, блоков, входов, выходов, механизмов и управлений соответственно; \(L\) – количество связей (количество стрелок, являющихся входной для одного и выходной для другого блока); \(B\) – количество блоков; \(j\) – номер блока; \(In_j\), \(Out_j\), \(Mech_j\), \(Cont_j\) – количество входов, выходов, механизмов и управлений \(j\)-го блока.

Также, путем прогона алгоритма с разными значениями (начиная с 0) когнитивной сложности, вычисляется рекомендуемая когнитивная сложность – минимальный уровень когн итивной сложности \(minS\), до которого возможно упростить диаграмму.

Преобразование IDEF0-диаграммы к виду, имеющему ограниченную когнитивную сложность, выполняется при помощи алгоритма (см. рис. 3), который был предложен в [6] и описан в ходе анализа в [2].

 Алгоритм преобразования модели
Рисунок 3 – Алгоритм преобразования модели

После модификации IDEF0-диаграммы необходимо снова разместить блоки и стрелки на изображении. Для этого используется система «IDEF0-SVG» [8], которая позволяет разместить блоки и стрелки на изображении и получить результат в формате SVG.

Входными данными системы является описание IDEF0 модели в формате: «<Название блока> <действие> <название стрелки>». <Действие> может принимать значения: «receives» для входной стрелки, «respects» для стрелки управления, «produces» для выходной стрелки и «requires» для стрелки механизма.

Координаты, полученные из SVG файла, преобразовываются в формат IDL, с учетом следующих отличий в представлении (см. табл. 1).

Таблица 1 — Представление координат в формате IDL и SVG
IDL SVG
Размер изображения всегда «1x1» Размер изображения изменяется в зависимости от количества блоков
Координаты – вещественные числа Координаты – целые числа
Стрелки изгибаются под прямым углом. Т.е. при перечислении координат за один раз может измениться только 1 координата. Изгибы стрелок закругленные. Т.е. при перечислении координат за один раз может измениться сразу и x, и y.

Таким образом, при переходе от SVG к IDL необходимо:

  • каждую координату x разделить на ширину изображения, а координату y – на высоту изображения;
  • «выпрямить» изгибы стрелок, описывая при перечислении координат сначала изменения координаты x, а затем изменение координаты y, если стрелка изгибается из горизонтального положения в вертикальное, и сначала y, а затем x, если наоборот.

Финальным этапом работы программы является сохранение преобразованной диаграммы в формате IDL, с учетом особенностей AllFusion Process Modeler:

  • при присвоении номеров блоки сортируются слева направо по x координате правого угла;
  • если блок декомпозируется на отдельной диаграмме это необходимо указать при помощи «DETAIL REFERENCE N A<Номер блока>». Соответственно, диаграмма с детализацией должна называться «А <Номер блока>» .

Вся описанная ранее логика, реализована в классе «База данных», а IDEF0-диаграмма представляется при помощи списка объектов класса «Блок», содержащего списки объектов класса «Стрелка» (см. рис. 4).

Диаграмма классов
Рисунок 4 – Диаграмма классов

Полученные результаты

Рассмотрим работу реализованной системы на тестовом примере (см. рис. 5).

Тестовая диаграмма
Рисунок 5 – Тестовая диаграмма

>Интерфейс системы предусматривает сценарий диалога с заполнением необходимых полей. Для начала работы необходимо загрузить .IDL файл, состоящий из одной диаграммы, выбрав его из списка файлов или перетянув на экран (см. рис. 6).

Форма «Загрузка IDEF0-модели»
Рисунок 6 – Форма «Загрузка IDEF0-модели»

После загрузки файла становится доступна кнопка «Далее», нажатие по которой приводит к переходу на следующий шаг. На этом шаге необходимо заполнить вещественными числами поля для ввода весовых коэффициентов (см. рис. 7).

Форма «Коэффициенты»
Рисунок 7 – Форма «Коэффициенты»

Следующий шаг – ввод желаемого уровня когнитивной сложности (см. рис. 8). Необходимо учитывать, что желаемый уровень должен быть больше или равен рекомендуемому уровню когнитивной сложности, а также строго меньше сложности введенной диаграммы.

Форма «Когнитивная сложность»
Рисунок 8 – Форма «Когнитивная сложность»

На последнем шаге можно посмотреть, считанные таблицы входов и выходов и введенный уровень когнитивной сложности (см. рис. 9). Для перехода к предыдущим шагам диалога следует нажать кнопку «Назад», а для запуска преобразования – «Преобразовать». В случае успешного преобразования, необходимо ввести путь, по которому будет сохранен файл-результат.

Форма «Предпросмотр»
Рисунок 9 – Форма «Предпросмотр»

В результате преобразования тестовой диаграммы, была получена IDEF0-модель, состоящая из двух диаграмм (см. рис. 10-11).

Таким образом, с учетом заданных коэффициентов, путем вынесения части блоков на новую диаграмму, когнитивная сложность исходной диаграммы была снижена в 3 раза (с 48,6 до 16), что значительно упростило ее понимание.

Результат. Часть 1
Рисунок 10 – Результат. Часть 1
Результат. Часть 2
Рисунок 11 – Результат. Часть 2

Выводы

В рамках статьи был описан процесс разработки программных модулей подсистемы ограничения когнитивной сложности IDEF0-диаграмм средствами языка программирования C#. Были определены средства разработки системы и описан алгоритм ее работы.

Предлагаемая реализация позволяет упростить процесс проектирования программных систем, а также снизить когнитивную сложность получаемых диаграмм.

Литература

  1. Григорьев А.В. Методика тестирования для определения когнитивной сложности моделей различных предметных областей. // Научные труды Донецкого государственного технического университета. Серия: Информатика, кибернетика и вычислительная техника, выпуск 6 (ИКВТ-99): - Донецк: ДонГТУ, 1999. – С. 246-251.
  2. Ремизов, В.К., Григорьев, А.В. Анализ методов преобразования алгоритмов // Информатика и кибернетика. – Д.: ДонНТУ, 2023. – №4 (34). – С. 42-48.
  3. Arpita Chari, Johan Stahre, Maja Bärring, Mélanie Despeisse, Dan Li, Martin Friis, Magnus Mörstam, Björn Johansson. Analysing the antecedents to digital platform implementation for resilient and sustainable manufacturing supply chains - An IDEF0 modelling approach. Journal of Cleaner Production, Volume 429, 2023.
  4. Нейгел Кристиан, Ивьен Билл, Глинн Джей, Уотсон Карли, Скиннер Морган. C# 5.0 и платформа .NET 4.5 для профессионалов.: Пер. с англ. – М.: ООО «И.Д. Вильямс», 2014. – 1440 с.: ил. – Парал. тит. англ.
  5. Введение в SQLite. – Текст: электронный // METANIT.COM. Сайт о программировании. URL: https://metanit.com/sql/sqlite/1.1.php .
  6. Григорьев А.В. Ограничение когнитивной сложности моделей. // Прогрессивные технологии и системы машиностроения: Международный сб. научных трудов. – Донецк: ДонГТУ, 2000. Выпуск. 10 – С. 49-58.
  7. Григорьев А.В. Оценка когнитивной сложности моделей. // Научные труды Донецкого государственного технического университета. Серия: Информатика, кибернетика и вычислительная техника, выпуск 6 (ИКВТ-99): - Донецк: ДонГТУ, 1999. – С. 252-259.
  8. IDEF0-SVG – Текст: электронный // GitHub. URL: https://github.com/jimmyjazz/IDEF0-SVG .