УДК 004

Концепция параметризованной разработки программного модуля

Антонов Дмитрий Алексеевич – магистрант Чувашского государственного университета им. И.Н. Ульянова.

Аннотация: В статье рассматривается проблема повторного использования реализованных модулей прикладного программного обеспечения. Представлен один из возможных подходов для разработки настраиваемых подсистем, позволяющий осуществлять декларативное конфигурирование и централизованное управление серверной и клиентской частями. Расширяемый принципами автоматизированных решений из области промышленного моделирования, метод позволит в значительное мере упростить создание новых и адаптацию имеющихся комплексов путем их стандартизации, повышая качество разрабатываемых продуктов и скорость их реализации, а также снижая общую стоимость IT-проектов.

Ключевые слова: параметризованная разработка, параметризация, программный модуль, повторное использование модулей, декларативная разработка, разработка программного обеспечения, проектирование систем.

Введение

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

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

  • создавать и сопровождать сложные информационные системы;
  • привлекать новых людей для улучшения продуктов и раскрытия талантов;
  • совершать открытия в условиях постоянного усиления конкурентной борьбы.

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

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

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

Методика и организация исследования

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

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

В случае, если настройки представляют собой сериализуемые значения, они могут храниться в JSON, XML или любом другом формате обмена данными. При этом, не исключена возможность их передачи между различными частями системы через удобный программный интерфейс – например, по REST API. Помимо этого, они могут храниться в локальной файловой системе или удаленной базе данных.

Передача функции в качестве параметра возможно в случае использования интерпретируемого языка программирования – она может вызываться во время выполнения программы (runtime). В случае использования компилируемого языка программирования необходимо предусмотреть механизм генерации кода для ее вызова во время компиляции (compile time).

Также для передачи параметров можно использовать шаблонизированные строки в связке с любым шаблонизатором, который будет подставлять динамические значения в соответствующие участки во время работы программы: Handlebars, Mustache, или другой.

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

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

Подобный подход, основанный на параметризации, уже длительное время применяется при разработке CAD-систем, которые используются для проектирования, преимущественно, в строительной сфере. Это позволяет архитекторам (пользователям системы) масштабировать создаваемые объекты и производить автоматизированные расчеты объема материалов путем задания размерностей, являющихся параметрами; а также повторно использовать собственные наработки при создании новых макетов.

Результаты исследования

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

В добавок, были сформулированы следующие тезисы:

  1. Модуль должен решать конкретную задачу, причем только одну.
  2. Поведение модуля можно декларативно конфигурировать путем передачи значений в функцию-фабрику.
  3. Настройки могут содержать как сериализуемые значения, так и функции; храниться как в программном коде, так и в отдельных файлах или базе данных; применение шаблонизаторов добавляет гибкость.
  4. Применима как для интерпретируемых языков, так и компилируемых.
  5. Реализация механизма кодогенерации позволит автоматизировать разработку многих частей системы.

Заключение

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

  • легко настраивать, распространять и повторно использовать программные модули в разных информационных системах;
  • повышать скорость разработки;
  • значительно экономить ресурсы;
  • иметь гарантированное качество благодаря стандартизации.

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

Список литературы

  1. Беликов, А. Н. Концепция и архитектура платформы для реализации системной нотации конструирования архитектурных систем / А. Н. Беликов, А. А. Дегтярев, А. С. Свиридов, А. В. Егоров // Электронный научный журнал «Инженерный вестник Дона». - 2022. - № 12 (96). - С. 10-20. - URL: https://cyberleninka.ru/article/n/kontseptsiya-i-arhitektura-platformy-dlya-realizatsii-sistemnoy-notatsii-konstruirovaniya-arhitekturnyh-shem (дата обращения: 02.06.2023). - Режим доступа: Научная электронная библиотека «КиберЛенинка».
  2. Дереглазов, Н. А. Программная система, реализованная в виде веб-приложения на микросервисной архитектур / Н. А. Дереглазов, М. В. Заморенов // Мир компьютерных технологий : Сборник статей всероссийской студенческой научно-технической конференции, Севастополь, 02–06 апреля 2018 года / Научный редактор Е.Н. Мащенко. - Севастополь: Федеральное государственное автономное образовательное учреждение высшего образования "Севастопольский государственный университет". - 2018. - С. 119-123. - URL: https://elibrary.ru/item.asp?id=35638330 (дата обращения: 02.06.2023). - Режим доступа: Научная электронная библиотека eLIBRARY.RU.
  3. Долженко, А.И. Нечеткая продукционная сеть для анализа качества микросервисной архитектуры / А. И. Долженко, И. Ю. Шполянская, С. А. Глушенко // Бизнес-информатика. - 2020. - № 4 (14). - С. 36–46. - URL: https://cyberleninka.ru/article/n/nechetkaya-produktsionnaya-set-dlya-analiza-kachestva-mikroservisnoy-arhitektury (дата обращения: 02.06.2023). - Режим доступа: Научная электронная библиотека «КиберЛенинка».
  4. Пучков, М. В. Параметрическое моделирование архитектурно-пространственной среды города на основе информационных технологий / М. В. Пучков, А. А. Бутенко // Архитектон: известия вузов. - 2015. - № 1 (49). - С. 6. - URL: https://elibrary.ru/item.asp?id=23212859 (дата обращения: 02.06.2023). - Режим доступа: Научная электронная библиотека eLIBRARY.RU.
  5. Чижик, М. А. Метод параметрического проектирования технологических процессов на основе многомерного геометрического моделирования / М. А. Чижик, М. Н. Московцев // Проблемы машиноведения : Материалы III Международной научно-технической конференции. В 2-х частях, Омск, 23–24 апреля 2019 года / Научный редактор П.Д. Балакин. - Омск: Омский государственный технический университет. - 2019. - С. 357-363. - URL: https://elibrary.ru/item.asp?id=37541851 (дата обращения: 02.06.2023). - Режим доступа: Научная электронная библиотека eLIBRARY.RU.

Интересная статья? Поделись ей с другими: