Абрикосов К., Попова В.А. Статическая типизация в веб-приложениях на Node.js: процесс внедрения и выявление ошибок несоответствия типов // «Информационные технологии и математическое моделирование в управлении сложными системами»: электрон. науч. журн. – 2023. – №2(18). – С.23-32 – DOI: 10.26731/2658‑3704.2023.2(18).23-32 – Режим доступа: http://ismm-irgups.ru/toma/218-2023, свободный. – Загл. с экрана. – Яз. рус., англ. (дата обращения: 17.06.2023)
10.26731/2658‑3704.2023.2(18).23-32
Создание качественного программного обеспечения, которое обладает высокой степенью отказоустойчивости при различных факторах, является непростой задачей для разработчиков. К одной из проблем, которая существенно влияет на качество программ, относится несоответствие типов конструкций в динамически типизированных языках программирования. В связи с этим создаются и внедряются инструменты, которые позволяют устранять немалое количество ошибок типизации на этапе разработки. Проблема несоответствия типов также актуальна для веб-приложений, которые нашли широкое применение для решения повседневных задач пользователей в различных сферах деятельности. На текущий момент особо популярным языком программирования для создания как серверной, так и клиентской части веб-приложений является JavaScript. Несмотря на удобство использования и высокую скорость разработки благодаря этому языку программирования, присутствующие проблемы динамической типизации, которые не всегда может отследить разработчик, существенно затрудняют использование созданных веб-приложений. Это связано с высокой вероятностью возникновения ошибок во время работы программы, что способно нарушить целостность данных и остановить рабочие процессы. В данной работе описывается процесс внедрения фреймворка Nest.js, поддерживающего статически типизированных язык программирования TypeScript, в серверную часть веб-приложения, которая реализована на платформе Node.js. Перечисляются виды ошибок, которые были найдены в результате внедрения Nest.js.
- Balyuk A. S., Popova V. A. Static type-checking for programs developed on the platform 1C:Enterprise // CEUR Workshop Proceedings : 4, Irkutsk, 14 сентября 2021 года. Irkutsk, 2021. P. 101–111.
- Карпунин А. А., Ганев Ю. М., Чернов М. М. Методы обеспечения качества при проектировании сложных программных систем // Надежность и качество сложных систем. 2015. № 2 (10). С. 78–84.
- Макконнелл С. Совершенный код. М. : Издательство «Русская редакция», 2010. 896 с.
- Попова В. А. Применение методики статического анализа для выявления ошибок в программах на динамических языках программирования // Информационные технологии. Проблемы и решения. 2022. № 2 (19). С. 26–31.
- Попова В. А. Проектирование механизма статического анализа для выявления ошибок несоответствия типов в программах на динамических языках программирования // Динамические системы и компьютерные науки: теория и приложения (DYSC 2022) : Материалы 4-й Международной конференции, Иркутск, 19–22 сентября 2022 года / Иркутск: Иркутский государственный университет, 2022. С. 142–145.
- JSLint, The JavaScript Code Quality and Coverage Tool [Электронный ресурс]. – URL: https://www.jslint.com/ (дата обращения: 20.03.2023).
- Closure Compiler. Google Developers [Электронный ресурс]. – URL: https:// developers .google.com/closure/compiler (дата обращения: 20.03.2023).
- Node.js® is an open-source, cross-platform JavaScript runtime environment. [Электронный ресурс]. – URL: https://nodejs.org (дата обращения: 20.03.2023).
- JSHint, a JavaScript Code Quality Tool [Электронный ресурс]. – URL: https://jshint.com (дата обращения: 20.03.2023).
- NestJS – A progressive Node.js framework [Электронный ресурс]. – URL: https://docs.nestjs.com (дата обращения: 21.03.2023).
- Demashov, D. Node.js Frameworks Performance Comparison / D. Demashov, I. Gosudarev // The Majorov International Conference on Software Engineering and Computer Systems, 12–13 декабря 2019 года. Vol. Выпуск 11. – Федеральное государственное автономное образовательное учреждение высшего образования «Национальный исследовательский университет ИТМО», 2020. P. 24–28.
- Попова В. А., Гармаева Д. А., Казимиров А. С. Создание информационной системы для представления расписания занятий высшего учебного учреждения // Молодежный вестник ИрГТУ. 2021. Т. 11, № 1. С. 21–28.
- Интеграция Swagger в фреймворк Nest.js [Электронный ресурс]. – URL: https://github.com/nestjs/swagger#readme (дата обращения: 22.03.2023).
- Библиотека sequelize-typescript [Электронный ресурс]. – URL: https://github.com/sequelize/sequelize-typescript#readme (дата обращения: 22.03.2023).
- Документация Passport.js – URL: https://github.com/typestack/class-validator#readme (дата обращения: 22.03.2023).
- Библиотека class-validator [Электронный ресурс]. – URL: https://github.com/typestack/class-validator#readme (дата обращения: 22.03.2023).