Preview

Труды Института системного программирования РАН

Расширенный поиск

Архитектурный подход к быстрой кросс-языковой навигации по связанным сущностям в программных проектах

https://doi.org/10.15514/ISPRAS-2026-38(3)-24

Аннотация

В статье рассматривается новый архитектурный подход к быстрой навигации между связанными элементами программных проектов, написанных на разных языках. Приведен пример конкретной реализации архитектуры для языковой пары GraphQL и Go. Проблема навигации между фрагментами кода на разных языках решается за счет создания разметки проекта и автоматических переходов между соответствующими точками в коде. Подход ориентирован на повседневную деятельность разработчиков и сохраняет устойчивость по мере изменения кода. Метод основан на использовании легковесных грамматик и их синтаксических анализаторов для создания разметки проекта и установления связей между ее элементами. Введено определение нетривиального обработчика GraphQL-поля в Go как функции, содержащей вызовы или управляющие конструкции. Такие функции составляют основу разметки проекта на Go. Разработаны три специализированные легковесные грамматики, которые выделяют конструкции, однозначно характеризующие функцию на Go как нетривиальный обработчик поля. На этой базе построен алгоритм, который автоматически устанавливает соответствия между полями схемы языка запросов GraphQL и методами на Go. Алгоритм учитывает совокупность факторов: от соглашения об именовании методов до их синтаксических особенностей. Алгоритм при установке соответствия решает задачу ранжирования кандидатов на пару для данной точки. Рассчитаны метрики ранжирования MRR и hit@1. Показано, что новый подход обеспечивает медианное ускорение навигации по проекту примерно в 8 раз по сравнению с ручным поиском, а также полностью устраняет повторные переходы.

Об авторах

Дмитрий Сергеевич ДРОЗДОВ
Южный федеральный университет
Россия

Аспирант Южного федерального университета по научной специальности «Математическое и программное обеспечение вычислительных систем, комплексов и компьютерных сетей». В 2023 году получил степень магистра по направлению подготовки «Фундаментальная информатика и информационные технологии». Область интересов: языки программирования, компиляторы, грамматики.



Станислав Станиславович МИХАЛКОВИЧ
Южный федеральный университет
Россия

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



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

1. Mayer P., Kirsch M., Le M. A. On multi-language software development, cross-language links and accompanying tools: a survey of professional software developers. Journal of Software Engineering Research and Development, vol. 5, 2017, Article 1, pp. 1–33. DOI: 10.1186/s40411-017-0035-z.

2. Yang H., Lian W., Wang S., Cai H. Demystifying Issues, Challenges, and Solutions for Multilingual Software Development. In Proc. of the IEEE/ACM International Conference on Software Engineering (ICSE), 2023, pp. 1840–1852. DOI: 10.1109/ICSE48619.2023.00157.

3. Latif S., Mushtaq Z. Pragmatic evidence of cross-language link detection: A systematic literature review. Journal of Systems and Software, vol. 206, 2023, Article 111825. DOI: 10.1016/j.jss.2023.111825.

4. Minelli R., Mocci A., Lanza M. I Know What You Did Last Summer: An Investigation of How Developers Spend Their Time. In Proc. of the 2015 IEEE 23rd International Conference on Program Comprehension (ICPC), 2015, pp. 25–35. DOI: 10.1109/ICPC.2015.12.

5. Robillard M. P., Coelho W., Murphy G. C. How effective developers investigate source code: An exploratory study. IEEE Transactions on Software Engineering, vol. 30, no. 12, 2004, pp. 889–903. DOI: 10.1109/TSE.2004.101.

6. Krein J. L., MacLean A. C., Knutson C. D., Delorey D. P., Eggett D. L. Impact of Programming Language Fragmentation on Developer Productivity: A Sourceforge Empirical Study. International Journal of Open Source Software and Processes, vol. 2, no. 2, 2010, pp. 41–61. DOI: 10.4018/JOSSP.2010040104.

7. Hao R. L., Glassman E. L. Approaching Polyglot Programming: What Can We Learn from Bilingualism Studies? In Proc. of the 10th Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU 2019), OASIcs, vol. 76, 2020, pp. 1:1–1:7. DOI: 10.4230/OASIcs.PLATEAU.2019.1.

8. Damevski K., Shepherd D. C. A field study of how developers locate features in source code. Empirical Software Engineering, vol. 21, no. 2, 2016, pp. 724–747. DOI: 10.1007/s10664-015-9373-9.

9. Goloveshkin A. V., Mikhalkovich S. S. Tolerant parsing with a special kind of “Any” symbol: the algorithm and practical application. Trudy ISP RAN/Proc. ISP RAS, 2018, vol. 30, issue 4, pp. 7–28. DOI: 10.15514/ISPRAS-2018-30(4)-1.

10. Головешкин А. В., Михалкович С. С. Разметка сквозных функциональностей в коде программы. Научный сервис в сети Интернет: труды XXI Всероссийской научной конференции, 2019, стр. 245–256. DOI: 10.20948/abrau-2019-83. / Goloveshkin A. V., Mikhalkovich S. S. Marking up crosscutting concerns in a program code. Scientific Service in the Internet: Proceedings of the XXI Scientific Conference, 2019, pp. 245–256 (in Russian). DOI: 10.20948/abrau-2019-83.

11. Дроздов Д. С., Михалкович С. С. Создание и постобработка легковесных грамматик Go и GraphQL для разметки функциональностей кода. Труды XXXI Всероссийской научной конференции «Современные информационные технологии: тенденции и перспективы развития», 2024, стр. 163–165. / Drozdov D. S., Mikhalkovich S. S. Creation and post-processing of lightweight Go and GraphQL grammars for code functionality markup. In Proc. of the XXXI Scientific Conference “Modern information technologies: trends and prospects of development”, 2024, pp. 163–165 (in Russian).

12. Головешкин А. В., Михалкович С. С. LanD: инструментальный комплекс поддержки послойной разработки программ. Труды XXV Всероссийской научной конференции «Современные информационные технологии: тенденции и перспективы развития», 2018, стр. 53–56. / Goloveshkin A. V., Mikhalkovich S. S. LanD: a framework for layer-by-layer program development. In Proc. of the XXV Scientific Conference “Modern information technologies: trends and prospects of development”, 2018, pp. 53–56 (in Russian).

13. Дроздов Д. С., Михалкович С. С. Разработка легковесных парсеров с разной детализацией языка Go. Электронные библиотеки, 2024, т. 27, № 6, стр. 857–877. DOI: 10.26907/1562-5419-2024-27-6-857-877. / Drozdov D. S., Mikhalkovich S. S. Development of lightweight parsers with different Go language granularity. Russian Digital Libraries Journal, 2024, vol. 27, issue 6, pp. 857–877 (in Russian). DOI: 10.26907/1562-5419-2024-27-6-857-877.

14. Goloveshkin A. V., Mikhalkovich S. S. Using improved context-based code description for robust algorithmic binding to changing code. Procedia Computer Science, 2021, vol. 193, pp. 239–249. DOI: 10.1016/j.procs.2021.10.024.

15. Дроздов Д. С., Михалкович С. С. Эффективность по памяти и времени легковесных парсеров с разной детализацией языка Go. Научный сервис в сети Интернет: труды XXVI Всероссийской научной конференции, 2024, стр. 85–98. DOI: 10.20948/abrau-2024-10. / Drozdov D. S., Mikhalkovich S. S. Memory and time efficiency of lightweight parsers with different Go language granularity. Scientific Service in the Internet: Proceedings of the XXVI Scientific Conference, 2024, pp. 85–98 (in Russian). DOI: 10.20948/abrau-2024-10.

16. GraphQL. October 2021 Edition. Available at: https://spec.graphql.org/October2021/, accessed 10.04.2026.

17. Amareen S., Soto Dector O., Dado A., Bosu A. GraphQL Adoption and Challenges: Community-Driven Insights from StackOverflow Discussions. arXiv preprint, 2024. DOI: 10.48550/arXiv.2408.08363.

18. Buna S. GraphQL in Action. Manning Publications, Shelter Island, NY, 2021. 384 p.

19. Raiturkar J. Hands-On Software Architecture with Golang: Design and architect highly scalable and robust applications using Go. Packt Publishing Ltd, Birmingham–Mumbai, 2018. 500 p.

20. Yellavula N. Hands-On RESTful Web Services with Go: Develop elegant RESTful APIs with Golang for microservices and the cloud. Packt Publishing Ltd, Birmingham–Mumbai, 2020. 393 p.

21. Griswold W. G. Coping with Crosscutting Software Changes Using Information Transparency. In Proc. of the Third International Conference on Metalevel Architectures and Separation of Crosscutting Concerns (REFLECTION 2001), Lecture Notes in Computer Science, vol. 2192. Berlin–Heidelberg: Springer, 2001, pp. 250–265. DOI: 10.1007/3-540-45429-2_17.

22. Ying A. T. T., Wright J. L., Abrams S. Source Code That Talks: An Exploration of Eclipse Task Comments and Their Implication to Repository Mining. SIGSOFT Software Engineering Notes, vol. 30, no. 4, 2005, pp. 1–5. DOI: 10.1145/1082983.1083152.

23. Sulír M., Nosáľ M. Sharing developers’ mental models through source code annotations. In Proc. of the 2015 Federated Conference on Computer Science and Information Systems (FedCSIS), Annals of Computer Science and Information Systems, vol. 5, 2015, pp. 997–1006. DOI: 10.15439/2015F301.

24. Tonella P., Ceccato M. Aspect mining through the formal concept analysis of execution traces. In Proc. of the 11th WCRE 2004, 2004, pp. 112–121. DOI: 10.1109/WCRE.2004.13.

25. Ceccato M., Marin M., Moonen L. Applying and combining three different aspect mining techniques. Software Quality Journal, vol. 14, no. 3, 2006, pp. 209–231. DOI: 10.1007/s11219-006-9217-3.

26. Tomassetti F., Rizzo G., Torchiano M. Spotting automatically cross-language relations. In Proc. of the 2014 Software Evolution Week – IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE), 2014, pp. 338–342. DOI: 10.1109/CSMR-WCRE.2014.6747189.

27. Inozemtseva L., Subramanian S., Holmes R. Integrating software project resources using source code identifiers. In Proc. of the 36th International Conference on Software Engineering, New Ideas and Emerging Results (ICSE-NIER), 2014, pp. 400–403. DOI: 10.1145/2591062.2591108.

28. Konopka M. Combining Eye Tracking with Navigation Paths for Identification of Cross-Language Code Dependencies. In Proc. of the 10th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE 2015), Bergamo, Italy. ACM, 2015, pp. 1057–1059. DOI: 10.1145/2786805.2807561.

29. Sharafi Z., Bertram I., Flanagan M., Weimer W. Eyes on code: A study on developers’ code navigation strategies. IEEE Transactions on Software Engineering, vol. 48, no. 5, 2022, pp. 1692–1704. DOI: 10.1109/TSE.2020.3032064.

30. Nam D., Macvean A., Hellendoorn V. J., Vasilescu B., Myers B. Using an LLM to Help With Code Understanding. In Proc. of the 2024 IEEE/ACM 46th International Conference on Software Engineering (ICSE), 2024, Article 97, pp. 1–13. DOI: 10.1145/3597503.3639187.

31. Patil A., Pachpute S. Unified Deep Semantic Search on Code. International Journal of Engineering and Advanced Technology (IJEAT), vol. 9, no. 5, 2020, pp. 872–876. DOI: 10.35940/ijeat.E9861.069520.

32. Paltenghi M., Pandita R., Henley A. Z., Ziegler A. Follow-up Attention: An Empirical Study of Developer and Neural Model Code Exploration. IEEE Transactions on Software Engineering, vol. 50, no. 10, 2024, pp. 2568–2582. DOI: 10.1109/TSE.2024.3445338.

33. Pandey R., Singh P. Transforming Software Development: Evaluating the Efficiency and Challenges of GitHub Copilot in Real-World Projects. arXiv preprint, 2024. DOI: 10.48550/arXiv.2406.17910.

34. Wermelinger M. Using GitHub Copilot to Solve Simple Programming Problems. In Proc. of the 54th ACM Technical Symposium on Computer Science Education (SIGCSE 2023), March 15–18, 2023, Toronto, ON, Canada. ACM, New York, NY, USA, 7 p. DOI: 10.1145/3545945.3569830.

35. Rahman M. M., Kundu A. Code Hallucination. arXiv preprint, 2024. DOI: 10.48550/arXiv.2407.04831.

36. Tian Y., Yan W., Yang Q., Zhao X., Chen Q., Wang W., Luo Z., Ma L., Song D. CodeHalu: Investigating Code Hallucinations in LLMs via Execution-based Verification. Proceedings of the AAAI Conference on Artificial Intelligence, 2025, vol. 39, no. 24, pp. 25300–25308. DOI: 10.1609/aaai.v39i24.34717.

37. GraphQL: Language Feature Support. Extension for Visual Studio Code. Available at: https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql, accessed 10.04.2026.

38. GraphQL. Extension for Visual Studio Code (Orsen Kucher). Available at: https://marketplace.visualstudio.com/items?itemName=orsenkucher.vscode-graphql, accessed 10.04.2026.

39. Apollo GraphQL. Extension for Visual Studio Code. Available at: https://marketplace.visualstudio.com/items?itemName=apollographql.vscode-apollo, accessed 10.04.2026.

40. Gqlgen. Library for building GraphQL servers in Go. Available at: https://github.com/99designs/gqlgen, accessed 10.04.2026.

41. Gopls. Go language server. Available at: https://pkg.go.dev/golang.org/x/tools/gopls, accessed 10.04.2026.

42. GraphiQL. GraphQL LSP ecosystem. Available at: https://github.com/graphql/graphiql/tree/main, accessed 10.04.2026.

43. Moonen L. Generating robust parsers using island grammars. In Proc. of the 8th Working Conference on Reverse Engineering (WCRE 2001), Stuttgart, Germany, 2–5 Oct. 2001. IEEE Computer Society, 2001, pp. 13–22. DOI: 10.1109/WCRE.2001.957806.

44. Gorchakov A. V., Demidova L. A. Methods and Algorithms for Cross-Language Search of Source Code Fragments. In Proc. of the 2024 International Conference on Information Technologies (InfoTech 2024), Sofia, Bulgaria. IEEE, 2024, pp. 1–4. DOI: 10.1109/InfoTech63258.2024.10701403.

45. Graphql-go-tools. GraphQL router and API gateway framework in Go. Available at: https://github.com/wundergraph/graphql-go-tools/, accessed 10.04.2026.

46. Graphql-go. GraphQL server for Go with a focus on ease of use. Available at: https://github.com/graph-gophers/graphql-go, accessed 10.04.2026.

47. Gqlparser. GraphQL parser for Go. Available at: https://github.com/vektah/gqlparser, accessed 10.04.2026.

48. Quick Navigation. Available at: https://github.com/dmitry-drozdov/quick_nav, accessed 10.04.2026.

49. Bodner J. Learning Go: An Idiomatic Approach to Real-World Go Programming. O’Reilly Media, Sebastopol, CA, 2024. 468 p.

50. Freeman A. Pro Go: The Complete Guide to Programming Reliable and Efficient Software Using Golang. Apress, Berkeley, CA, 2022. 1076 p.

51. Дроздов Д. С., Михалкович С. С. Валидация легковесных грамматик языка Go. В сборнике: Современные информационные технологии: тенденции и перспективы развития: материалы XXXII научной конференции. 2025, стр. 156–160. / Drozdov D. S., Mikhalkovich S. S. Validation of lightweight Go language grammars. In: Modern information technologies: trends and prospects of development: Proceedings of the XXXII Scientific Conference. 2025, pp. 156–160 (in Russian).

52. Azure Service Operator for Kubernetes. Available at: https://github.com/Azure/azure-service-operator, accessed 10.04.2026.

53. Kubernetes. Production-grade container orchestration system. Available at: https://github.com/kubernetes/kubernetes, accessed 10.04.2026.

54. Docker CE. Archived repository. Available at: https://github.com/docker-archive/docker-ce, accessed 10.04.2026.

55. Sourcegraph Public Snapshot. Code AI platform with code search and Cody. Available at: https://github.com/sourcegraph/sourcegraph-public-snapshot, accessed 10.04.2026.

56. Chainlink. Decentralized oracle network node. Available at: https://github.com/smartcontractkit/chainlink, accessed 10.04.2026.

57. Boost. Tool for Filecoin storage providers. Available at: https://github.com/filecoin-project/boost, accessed 10.04.2026.

58. Core-geth. Configurable Go implementation of the Ethereum protocol. Available at: https://github.com/etclabscore/core-geth, accessed 10.04.2026.

59. Exo. Process manager and log viewer for development. Available at: https://github.com/deref/exo, accessed 10.04.2026.

60. HydroAPI. Public API for Hydro. Available at: https://github.com/HydroOSS/HydroAPI, accessed 10.04.2026.

61. Mattermost Playbooks plugin. Available at: https://github.com/mattermost/mattermost-plugin-playbooks, accessed 10.04.2026.

62. SlabAPI. API backbone for the Slab project. Available at: https://github.com/TylerConlee/SlabAPI, accessed 10.04.2026.

63. Sturdy. Open-source real-time version control platform. Available at: https://github.com/sturdy-dev/sturdy, accessed 10.04.2026.

64. Toolkit for Cardano. Smart contract development tools for Cardano. Available at: https://github.com/SundaeSwap-finance/toolkit-for-cardano, accessed 10.04.2026.

65. Card S. K., Moran T. P., Newell A. The Psychology of Human-Computer Interaction. Lawrence Erlbaum Associates, Hillsdale, NJ, 1983. 469 p.

66. Nielsen J. Usability Engineering. Morgan Kaufmann Publishers, San Francisco, CA, 1994. 362 p.

67. Singh A., Henley A. Z., Fleming S. D., Luong M. V. An Empirical Evaluation of Models of Programmer Navigation. In Proc. of the ICSME 2016, USA, 2016, pp. 9–19. DOI: 10.1109/ICSME.2016.84.

68. Lazar J., Feng J. H., Hochheiser H. Research Methods in Human-Computer Interaction. 2nd ed. Cambridge, MA, Morgan Kaufmann Publishers (an imprint of Elsevier), 2017. 534 p.


Рецензия

Для цитирования:


ДРОЗДОВ Д.С., МИХАЛКОВИЧ С.С. Архитектурный подход к быстрой кросс-языковой навигации по связанным сущностям в программных проектах. Труды Института системного программирования РАН. 2026;38(3):111-132. https://doi.org/10.15514/ISPRAS-2026-38(3)-24

For citation:


DROZDOV D.S., MIKHALKOVICH S.S. An Architectural Approach to Fast Cross-Language Navigation of Related Entities in Software Projects. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2026;38(3):111-132. (In Russ.) https://doi.org/10.15514/ISPRAS-2026-38(3)-24



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)