В данной статье автор пытается создать прототип информационной системы тестирования корпоративных работников. Рассматриваются технологии для разработки и отладки информационных систем, а также способы построения архитектуры программного обеспечения.
Ключевые слова: информационная система, архитектура ПО, средства разработки ПО, микросервисы, языки программирования.
Одним из приоритетных направлений развития крупных корпораций является снижение негативного влияния человеческого фактора на различные аспекты корпоративной деятельности. Как следствие, поддержание высокого уровня профессиональных компетенций сотрудников, путем организации дополнительного обучения и повышения квалификации, проведение различных форм тестирования и создание автоматизированных систем для внутреннего контроля становится все более актуальным.
Под профессиональной компетентностью понимается интегративная характеристика личности, представляющая собой целостную, системную совокупность качеств, необходимых для успешного выполнения деятельности в определенных областях, а также способность эффективно разрешать проблемные ситуации и задачи, возникающие во всех других сферах ее жизнедеятельности. [1]
Особое внимание уделяется не технологическим профессиональным знаниям, навыкам и умениям, а компетентности как ситуативной категории, которая должна отражать способность работника выполнять работу в рамках своих обязанностей. [2]
Становление профессионализма происходит под влияем различных социальных и психологических факторов: с одной стороны, это направленность личности на самосовершенствование и творчество, а с другой — это усвоение широкого спектра как профессиональных, так и общечеловеческих норм, ценностей. [3]
Таким образом, проведение периодических форм внутрикорпоративного тестирования можно рассматривать как один из способов для поддержания уровня профессиональной компетентности работников. В связи с этим создание и проектирование информационных систем тестирования является востребованным направлением в сфере разработки программного обеспечения для нужд внутрикорпоративного пользования.
Любая информационная система представляет собой программный продукт, реализующий клиент серверную модель взаимодействия между различными частями приложения.
Архитектура «клиент-сервер» характеризуется наличием по крайне мере двух взаимодействующих, самостоятельных процессов — клиента и сервера. Процессы, осуществляющие некоторую службу, например, службу базы данных или файловой системы, называются серверами, а процессы, запрашивающие службы у серверов посредством посылки запроса и последующего ожидания ответа от сервера, называются клиентами. Фактически эти процессы — программное обеспечение, которое установлено на разных вычислительных машинах и взаимодействующее между собой через вычислительную сеть посредством сетевых протоколов, но они могут быть расположены также и на одной машине. [4] Схема взаимодействия представлена на рисунке 1.
Рис. 1. Архитектура клиент — сервер
Для работы настоящего приложения используется многоуровневая модель клиент-серверной архитектуры, которая представляет собой дальнейшее развитие клиент-серверного взаимодействия.
В трехуровневой модели взаимодействия, которая представлена на рисунке 2, вся обработка данных, которая ранее входила в клиентское приложение или была на сервере, выделяется в отдельное звено, которое называется сервером приложений.
Рис. 2. Трехуровневая архитектура клиент-серверного взаимодействия
При передаче информации по каналам используются криптографические алгоритмы шифрования.
Серверная часть приложения использует язык программирования PHP и фреймворк Lumen.
PHP — распространённый интерпретируемый язык общего назначения с отрытым исходным кодом. PHP специально сконструирован для веб-разработки, его код может внедряться непосредственно в HTML документ. Язык является крайне простым в освоении, позволяет создавать сложные динамические приложения с высокой скоростью разработки. Изначально язык имел ярко — выраженную функциональную направленность, в более поздних версиях чувствуется сильное влияние объектно-ориентированной модели языка Java. PHP является динамически слабо типизированным языком, однако в более поздних версиях языка был введен контроль типов, что значительно снизило риск возникновения ошибок в момент исполнения программы. Взаимодействие между сервисами осуществляется по протоколу HTTP с использованием пакета Guzzle.
Lumen — является микрофреймворком, производным от популярного Laravel. Данный фреймворк является более легковесным и использует ограниченный набор пакетов, предоставляя возможность для расширения по мере необходимости.
Клиентская часть приложения использует JavaScript и библиотеку React с пакетами для организации маршрутизации пользователей и обеспечение сохранения общего состояния приложения (Redux). React — библиотека, разработанная Facebook, для создания пользовательских интерфейсов. React основан на использовании компонентов и инкапсуляций. Для обеспечения клиентской логики достаточно описать то, как части пользовательского интерфейса приложения выглядят в разных состояниях. Соответственно при изменении состояния, происходит изменение самого компонента. Таким образом React исключает непосредственное взаимодействие с DOM деревом, в отличие от jQuery, самостоятельно обновляя или загружая необходимые компоненты и данные.
Сохранение и управление данными осуществляется с использованием MySQL — наиболее распространённой в сфере веб-технологий реляционной системой управления базами данных, разработанная и поддерживаемая корпорацией Oracle. Частое применение данной СУБД обусловлено свободной лицензией (данная СУБД распространяется под лицензией GNU GPL 2), лёгкостью установки и простотой использования.
С целью обеспечения работы микросервисной архитектуры используется Docker контейниризация. Docker — это проект с открытым исходным кодом для автоматизации развертывания приложений в виде переносимых автономных контейнеров, выполняемых в облаке или локальной среде. Проксирование HTTP запросов осуществляется с использованием веб — сервера Nginx. Сервер работает в операционной системе Linux CentOs. Обработка серверного языка осуществляется отдельным сервисом php-fpm с динамическим регулированием количества доступных дочерних процессов. Для разработки клиентской части приложения дополнительно использовалась технология Webpack, позволяющая производить автоматическую сборку клиентской части приложения.
Функционально система представлена двумя модулями — панель администратора и пользовательская часть.
Пользовательская часть состоит из 3-х сервисов:
- Сервис аутентификации и авторизации
- Сервис тестов (включает группы, ответы и вопросы к тестам)
- Аналитический сервис
Панель администратора дополнительно включает в себя сервис конструктора тестов, сервис администрирования пользователей, а также расширенный функционал аналитического сервиса.
Декомпозиция процессов приложения в соответствии с методологией IDEF0 представлена на рисунке 3.
Рис. 3. Декомпозиация процессов работы приложения в соответствии с методологией IDEF0
Внедрение автоматизированных и самодостаточных информационных систем, особенно в части повышения и поддержания грамотности персонала, позволит более рационально распоряжаться кадрами и продуктивно распределять время и рабочие процессы между сотрудниками.
В данной статье был рассмотрен прототип небольшой информационной системы для корпоративного тестирования с использованием современных технологий контейниризации и построения микросервисной архитектуры веб приложений.
Литература:
- Колбасова Л. О. «Профессиональная компетентность в современном социальном пространстве» // Вестник оренбургского государственного университета — 2009. № 7(101). — С.26–31; URL: https://elibrary.ru/item.asp?id=12987149 (дата обращения: 18.03.2021).
- Бозаджиев В. Л. Профессиональные компетенции как интегральные качества специалиста // Успехи современного естествознания. — 2007. — № 5. — С. 40–44; URL: http://www.natural-sciences.ru/ru/article/view?id=11094 (дата обращения: 12.03.2021).
- Долинина О. Н., Печенкин В. В., Файфель Б. Л., Кузнецова К. Д. Эффективные алгоритмы. — Саратов: Амирит, 2020. — 230 с. ISBN 978–5–00140–526–9
- Герберт Шилдт. " Java 8. Полное руководство 9-е издание» 2015г.