Модульная архитектура на основе локатора сервисов для рефакторинга монолитной нативной программной системы

  • Aleksandr Sergeevich Shumikhin Всероссийский научно-исследовательский геологический нефтяной институт http://orcid.org/0009-0008-2783-3594

Аннотация

Монолитные нативные программные системы, отличающиеся высокой связностью компонентов и зависимостью от проприетарных технологий, создают значительные трудности при модернизации и переходе на новые платформы. Данная работа посвящена разработке подхода к инкрементальному рефакторингу такой системы, обеспечивающего слабую связность и кроссплатформенность. Предложенное решение основано на использовании локатора сервисов и генерации программного кода для создания модульных компонентов с чёткими интерфейсами. Предлагаемая архитектурная реализация локатора сервисов использует принципы разделения ответственности и инверсии управления, комбинирует паттерны объектно-ориентированного программирования, обеспечивая безопасность типов времени выполнения, а также корректность управления временем жизни объектов и последовательности их инициализации. Подход поддерживает три цели: добавление новых функций, уменьшение технического долга и миграцию на новые инструменты и платформы для снижения зависимости от поставщиков. Разработанная архитектура позволяет проводить рефакторинг без остановки разработки, упрощая интеграцию и снижая риски. Эмпирическая проверка на реальном кейсе миграции программного обеспечения со стека технологий Embarcadero (Borland) С++ Builder и VCL на Microsoft Visual Studio и Qt с дальнейшим портированием на операционную систему Linux подтвердила применимость решения, которое может быть использовано для других систем с аналогичными ограничениями.

Сведения об авторе

Aleksandr Sergeevich Shumikhin, Всероссийский научно-исследовательский геологический нефтяной институт

старший научный сотрудник

Литература

1. Lehman M.M. Programs, life cycles, and laws of software evolution. Proceedings of the IEEE. 2005;68(9):1060-1076. https://doi.org/10.1109/PROC.1980.11805
2. Politowski C., et al. A large scale empirical study of the impact of Spaghetti Code and Blob anti-patterns on program comprehension. Information and Software Technology. 2020;122:106278. https://doi.org/10.1016/j.infsof.2020.106278
3. Meyers S. Effective C++: 55 specific ways to improve your programs and designs. Pearson Education; 2005.
4. Oliveira B.C.S., Cook W.R. Extensibility for the masses: Practical extensibility with object algebras. In: Extensibility for the Masses. In: Noble J. (eds.) ECOOP 2012 – Object-Oriented Programming. ECOOP 2012. Lecture Notes in Computer Science. Vol. 7313. Berlin, Heidelberg: Springer; 2012. P. 2-27. https://doi.org/10.1007/978-3-642-31057-7_2
5. Wiegand J., et al. Eclipse: A platform for integrating development tools. IBM Systems Journal. 2004;43(2):371-383. https://doi.org/10.1147/sj.432.0371
6. Kächele S., et al. nOSGi: a posix-compliant native OSGi framework. In: Proceedings of the 5th International Conference on Communication System Software and Middleware (COMSWARE '11). New York, NY, USA: Association for Computing Machinery; 2011. Article number: 4. https://doi.org/10.1145/2016551.2016555
7. Kalibera T., Tůma P. Distributed component system based on architecture description: The sofa experience. In: OTM Confederated International Conferences "On the Move to Meaningful Internet Systems". Berlin, Heidelberg: Springer Berlin Heidelberg; 2002. p. 981-994. https://doi.org/10.1007/3‑540‑36124‑3_63
8. Shumikhin A.S. Development of elements of technology for transferring the INTEGRO geoinformation system to Linux based on a systems approach. Modeling, Optimization and Information Technology. 2024;12(2). (In Russ., abstract in Eng.) https://doi.org/10.26102/2310-6018/2024.45.2.040
9. Dig D., Johnson R. How do APIs evolve? A story of refactoring. Journal of software maintenance and evolution: Research and Practice. 2006;18(2):83-107. https://doi.org/10.1002/smr.328
10. Liu A., et al. Prevalence and severity of design anti-patterns in open source programs – A large-scale study. Information and software technology. 2024;170:107429. https://doi.org/10.1016/j.infsof.2024.107429
11. Ma S.P. et al. Microservice Migration Using Strangler Fig Pattern and Domain-Driven Design. Journal of Information Science & Engineering. 2022;38(6). https://doi.org/10.6688/JISE.202211_38(6).0010
12. Parnas D.L. On the criteria to be used in decomposing systems into modules. Communications of the ACM. 1972;15(12):1053-1058. https://doi.org/10.1145/361598.361623
13. Hevner A.R., et al. Design science in information systems research. MIS quarterly. 2004. p. 75-105. https://doi.org/10.2307/25148625
14. Lee A. Inaugural editor's comments. MIS Quarterly. 1999;23(1):v-xi.
15. Liskov B., Zilles S. Programming with abstract data types. ACM Sigplan Notices. 1974;9(4):50-59. https://doi.org/10.1145/942572.807045
16. Petrescu C.C., et al. Do names echo semantics? A large-scale study of identifiers used in C++’s named casts. Journal of Systems and Software. 2023;202:111693. https://doi.org/10.1016/j.jss.2023.111693
17. Solodkyy Y., Dos Reis G., Stroustrup B. Open and efficient type switch for C++. ACM SIGPLAN Notices. 2012;47(10):963-982. https://doi.org/10.1145/2384616.2384686
18. Oliveira B.C.S., Wang M., Gibbons J. The visitor pattern as a reusable, generic, type-safe component. The visitor pattern as a reusable, generic, type-safe component. ACM SIGPLAN Notices. 2008;43(10):439-456. https://doi.org/10.1145/1449955.1449799
19. Laigner R., et al. Cataloging dependency injection anti-patterns in software systems. Journal of Systems and Software. 2022;184:111125. https://doi.org/10.1016/j.jss.2021.111125
20. Zhang W., Oliveira B.C.S. EVF: An extensible and expressive visitor framework for programming language reuse. In: 31st European Conference on Object-Oriented Programming (ECOOP 2017). Schloss Dagstuhl – Leibniz-Zentrum für Informatik; 2017. p. 29. https://doi.org/10.4230/LIPIcs.ECOOP.2017.29
21. Oliveira B.C.S. Modular visitor components: a practical solution to the expression families problem. In: European Conference on Object-Oriented Programming. Berlin, Heidelberg: Springer Berlin Heidelberg; 2009. p. 269-293. https://doi.org/10.1007/978-3-642-03013-0_13
22. Martin R. Discovering patterns in existing applications. In: Pattern Languages of Program Design. ACM Press/Addison-Wesley Publishing Co., USA; 1995. p. 365-393.
23. Riehle D. Composite design patterns. In: Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '97). New York, NY, USA: Association for Computing Machinery; 1997. p. 218-228. https://doi.org/10.1145/263698.263739
24. Alfadel M., Aljasser K., Alshayeb M. Empirical study of the relationship between design patterns and code smells. PLOS One. 2020;15(4):e0231731. https://doi.org/10.1371/journal.pone.0231731
25. Hicks M., Moore J.T., Nettles S. Dynamic software updating. ACM SIGPLAN Notices. 2001;36(5):13-23. https://doi.org/10.1145/378795.378798
26. Neamtiu I., et al. Practical dynamic software updating for C. ACM SIGPLAN Notices. 2006;41(6):72-83. https://doi.org/10.1145/1133981.1133991
27. Hayden C.M., et al. Kitsune: Efficient, general-purpose dynamic software updating for C. ACM SIGPLAN Notices. 2012;47(10):249-264. https://doi.org/10.1145/2398857.2384635
Опубликована
2025-07-21
Как цитировать
SHUMIKHIN, Aleksandr Sergeevich. Модульная архитектура на основе локатора сервисов для рефакторинга монолитной нативной программной системы. Современные информационные технологии и ИТ-образование, [S.l.], v. 21, n. 2, p. 260-271, july 2025. ISSN 2411-1473. Доступно на: <http://sitito.cs.msu.ru/index.php/SITITO/article/view/1200>. Дата доступа: 31 may 2026 doi: https://doi.org/10.25559/SITITO.021.202502.260-271.
Раздел
Исследования и разработки в области новых ИТ и их приложений