Keywords: plug-in architecture, object-oriented programming, application binary interface, c++, INTEGRO
Developing elements of technology to port Integro geoinformation system to Linux based on the system approach
UDC 004.41
DOI: 10.26102/2310-6018/2024.45.2.040
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.
1. Varlamov A.I., Gogonenkov G.N. Geophysical exploration for oil and gas: current status and problems of import substitution. Geoinformatika. 2018;(3):3–7. (In Russ.).
2. Cheremisina E.N., Finkel'shtein M.Ya., Deev K.V., Bol'shakov E.M. GIS INTEGRO. Status and prospects for development in the context of import substitution. Geologiya nefti i gaza = Russian Oil and Gas Geology. 2021;(3):31–40. (In Russ.). https://doi.org/10.31087/0016-7894-2021-3-31-40
3. Cheremisina Ye.N., Finkelstein M.Ya., Lyubimova A.V. GIS INTEGRO – import substitution software for geological and geophysical tasks. Geoinformatika. 2018;(3):8–17. (In Russ.).
4. Shoumikhin A.S. Architectural features of GIS INTEGRO software. Geoinformatika. 2018;(3):68–75. (In Russ.).
5. Cheremisina Ye.N., Finkelstein M.Ya., Deyev K.V., Muradyan A.V. The nearest prospects of the geoinformation complex INTEGRO development. Geoinformatika. 2021;(1):5–10. (In Russ.).
6. Quade E.S. Analysis for Military Decisions. Rand McNally; 1964. 382 p.
7. Deyev K. Perspective ways of the GIS INTEGRO development. Geoinformatika. 2020;(1):3–7. (In Russ.).
8. Oberg R.J. Understanding & Programming COM+: A Practical Guide to Windows 2000 DNA. Upper Saddle River, NJ: Pretence Hall PTR; 2000. 656 p.
9. Tsimbal A. Tekhnologiya CORBA. Saint Petersburg: Piter; 2001. 624 p. (In Russ.).
10. Gamma E., Helm R., Johnson R., Vlissides J. Design Patterns: Elements of Reusable Object-Oriented Software. Boston: Addison-Wesley, Pearson Education; 1994. 416 p.
11. Frankel D.S. Model Driven Architecture™: Applying MDA™ to Enterprise Computing. Indianapolis: Wiley Publishing; 2003. 354 p.
12. Levine J.R., Mason T., Brown D. lex & yacc. Sebastopol, CA: O'Reilly Media; 1992. 388 p.
Keywords: plug-in architecture, object-oriented programming, application binary interface, c++, INTEGRO
For citation: Shumikhin A.S. Developing elements of technology to port Integro geoinformation system to Linux based on the system approach. Modeling, Optimization and Information Technology. 2024;12(2). URL: https://moitvivt.ru/ru/journal/pdf?id=1584 DOI: 10.26102/2310-6018/2024.45.2.040 (In Russ).
Received 07.06.2024
Revised 14.06.2024
Accepted 21.06.2024
Published 30.06.2024