Developing elements of technology to port Integro geoinformation system to Linux based on the system approach
Authors: Шумихин А.С. 
Published: September 2024

Статья посвящена выбору технологического подхода к задаче переноса Windows-приложения, разработанного с использованием некроссплатформенной библиотеки компонентов пользовательского интерфейса и имеющего плагинную архитектуру, на операционную систему Linux. Описывается подход, который может применяться в случаях, когда гибкость и низкие накладные расходы более важны, чем возможность использования готового решения. В работе использованы методы системного анализа. Рассмотрены существующие варианты готовых решений и их элементов. Итоговое решение состоит в использовании разработки, управляемой моделями, для разделения компонентов, специфичных для платформы и независимых от нее, хорошо определенными программными интерфейсами. Разработанный вариант технологии порождения исходного кода из декларативного описания модели объектно-ориентированных интерфейсов позволяет организовать взаимодействие объектов, разделенных границей модулей, компиляторов и библиотек времени выполнения. С использованием стека технологий XML обеспечены валидация, автодополнение и преобразование декларативного описания модели в исходный код на языке С++. Представление интерфейсов основано на таблицах виртуальных методов, каждый из которых является функцией в стиле C. В качестве ссылки на интерфейс объекта используется структура, содержащая указатель на объект и указатель на таблицу виртуальных методов. Для каждого интерфейса генерируются определения функций, описания структуры таблицы виртуальных методов и ссылки на интерфейс, обертки для ссылок и базовые классы реализаций на C++. Технология успешно использована при разработке геоинформационной системы INTEGRO.
The article discusses choosing a technological approach to porting a Windows desktop application that utilizes a non-cross-platform user interface component library, and that implements a plugin architecture, to Linux. The approach described can be used in cases when flexibility and low overhead is preferred over a ready-made solution. The work has been done based on systems analysis. A collection of existing options and their elements is examined. The resulting solution consists in using model-driven software development to separate platform-specific components from cross-platform ones by means of well-defined programming interfaces. The suggested version of a technology by which source code is generated from a declarative description of an object-oriented interface model provides interoperability between objects, residing in different modules and separated by a compiler or a runtime library boundary. The XML technology stack is used to implement validation, code completion and transformation of model descriptions into C++ source code. Interfaces are represented by virtual method tables. Each method is a C-style function. A reference to an interface is a structure containing a pointer to a virtual method table, and a pointer to an object instance. For each interface there is a number of declarations and definition generated: a set of function declarations, a virtual method table declaration, an interface reference structure declaration, wrappers for interface references and implementation base classes in C++. The technology is successfully applied in the development of INTEGRO geographic information system.