Министерство образования Кузбасса
Государственное профессиональное образовательное учреждение
«Кузнецкий металлургический техникум»
имени Бардина Ивана Павловича
УТВЕРЖДАЮ
Директор ГПОУ КМТ им. Бардина И.П.
_________ Е. А. Арбузова
Приказ № 265-У от «18» мая 2024 г.
Дипломный проект
Пояснительная записка
О.09.02.07.01.ИС-21С.ДП
Новокузнецк, 2024
В современных условиях развития бизнеса одним из важнейших факторов успеха становится эффективное управление человеческими ресурсами. Организация процесса планирования и учета отпусков является неотъемлемой частью этого процесса. Традиционные методы ведения учета отпусков, основанные на бумажном документообороте или использовании электронных таблиц, зачастую оказываются неэффективными, трудоемкими и подверженными ошибкам.
Актуальность данной темы обусловлена необходимостью автоматизации процесса управления отпусками сотрудников для повышения эффективности работы кадровой службы, минимизации ошибок, связанных с человеческим фактором, а также для обеспечения прозрачности и удобства планирования отпусков как для руководства компании, так и для рядовых сотрудников.
Целью данного дипломного проекта является разработка информационной системы для управления отпусками сотрудников компании, которая позволит автоматизировать процессы планирования, согласования и учета отпусков, а также предоставит инструменты для анализа данных и формирования отчетности.
Для достижения поставленной цели необходимо решить следующие задачи:
1. Провести анализ существующих методов и подходов к организации процесса управления отпусками в компаниях;
2. Изучить нормативно-правовую базу, регламентирующую порядок предоставления отпусков сотрудникам;
3. Определить функциональные и нефункциональные требования к разрабатываемой информационной системе;
4. Разработать архитектуру информационной системы;
5. Спроектировать модель данных и интерфейс пользователя;
6. Реализовать информационную систему с использованием выбранных технологий разработки;
7. Провести тестирование и отладку системы;
8. Разработать документацию по использованию системы.
Объектом исследования является процесс управления отпусками сотрудников в компании.
Предметом исследования выступают методы и технологии автоматизации процесса планирования и учета отпусков сотрудников.
Данный проект имеет практическую значимость, поскольку разработанная информационная система может быть внедрена и использована в компаниях различного масштаба для оптимизации процесса управления человеческими ресурсами.
Методологической основой проекта послужили труды отечественных и зарубежных авторов в области информационных технологий, управления персоналом, а также нормативно-правовые акты, регламентирующие трудовые отношения.
Разработанная информационная система обладает рядом преимуществ по сравнению с существующими решениями, такими как:
1. Интуитивно понятный пользовательский интерфейс, не требующий специального обучения пользователей;
2. Гибкая система настройки ролей и прав доступа;
3. Возможность интеграции с существующими информационными системами компании;
4. Наличие функций аналитики и формирования различных видов отчетности;
5. Многоплатформенность и возможность работы через веб-интерфейс.
Структура пояснительной записки отражает последовательность решения поставленных задач и включает в себя введение, три основных раздела, заключение, список использованной литературы и приложения.
В первом разделе представлены общие сведения о предприятии, для которого разрабатывается информационная система, описаны особенности его организационной структуры и текущие бизнес-процессы, связанные с управлением отпусками.
Второй раздел содержит описание процесса исследования предметной области, включая анализ существующих подходов к решению задачи автоматизации управления отпусками. Также в данном разделе представлены результаты проектирования системы, включая описание архитектуры, модели данных и пользовательского интерфейса, и отражен процесс реализации информационной системы с использованием выбранных технологий.
Третий раздел посвящен вопросам охраны труда при разработке и эксплуатации программного обеспечения. В нем рассмотрены требования к организации рабочих мест и режиму труда и отдыха, а также меры по обеспечению электробезопасности.
В заключении подведены итоги работы, сформулированы основные выводы и определены перспективы дальнейшего развития разработанной информационной системы.
В приложениях представлены материалы, дополняющие основное содержание работы, включая программный код, схему структуры базы данных и руководство пользователя.
При разработке информационной системы для управления отпусками сотрудников компании использовались современные инструменты и технологии разработки программного обеспечения, включая:
1. Язык программирования JavaScript для разработки клиентской части приложения;
2. Фреймворк React.js для создания интерактивного пользовательского интерфейса;
3. Node.js и Express.js для разработки серверной части приложения;
4. СУБД MySQL для организации хранения данных;
5. Библиотеки и компоненты для визуализации данных и создания отчетов.
Реализация данного проекта позволила не только создать полнофункциональную информационную систему для управления отпусками сотрудников, но и приобрести ценный опыт в области проектирования и разработки программного обеспечения для бизнес-применений.
Важно отметить, что разработанная система не является статичным продуктом, а представляет собой гибкую платформу, которая может быть адаптирована и расширена в соответствии с изменяющимися потребностями бизнеса и развитием технологий.
Информационная система для управления отпусками сотрудников разрабатывается для компании ООО «ТехноСофт», которая является средним по размеру предприятием, занимающимся разработкой программного обеспечения для промышленных предприятий. Компания была основана в 2010 году и за время своего существования зарекомендовала себя как надежный партнер в области автоматизации производственных процессов.
На текущий момент в компании работает около 150 сотрудников, включая руководителей, менеджеров проектов, разработчиков, тестировщиков, аналитиков, дизайнеров, специалистов по маркетингу и продажам, а также административный персонал.
Организационная структура компании представлена на рисунке 1.1. Во главе компании стоит генеральный директор, которому подчиняются руководители отделов: технический директор, коммерческий директор, финансовый директор и директор по персоналу.
Рисунок 1.1 – Пример формы ввода данных сотрудника в системе
Основными видами деятельности компании являются:
1. Разработка заказного программного обеспечения для промышленных предприятий;
2. Внедрение и сопровождение собственных программных продуктов;
3. Консультационные услуги в области автоматизации бизнес-процессов;
4. Обучение персонала клиентов работе с внедренными системами.
Компания имеет головной офис в г. Новокузнецке, а также несколько региональных представительств в крупных городах России. Часть сотрудников работает в режиме удаленной работы.
Текущий процесс управления отпусками в компании организован следующим образом:
1. Сотрудник заполняет бумажное заявление на отпуск, согласовывает его с непосредственным руководителем и передает в отдел кадров;
2. Специалист отдела кадров проверяет корректность заполнения заявления, наличие положенных дней отпуска у сотрудника и вносит данные в электронную таблицу Excel, которая выполняет роль реестра отпусков;
3. На основании собранных заявлений формируется график отпусков на год, который утверждается руководством компании;
4. При необходимости изменения сроков отпуска сотрудник оформляет новое заявление, которое проходит тот же путь согласования;
5. Ежемесячно специалист отдела кадров формирует отчеты о предстоящих отпусках для бухгалтерии и руководителей подразделений.
Данный процесс имеет ряд недостатков:
1. Высокая трудоемкость оформления документов и согласования отпусков, особенно для удаленных сотрудников;
2. Возможность ошибок при ручном внесении данных в реестр отпусков;
3. Отсутствие возможности оперативного получения информации о статусе заявления на отпуск;
4. Сложность планирования замещения сотрудников, уходящих в отпуск;
5. Ограниченные возможности для анализа данных и формирования аналитической отчетности.
В связи с ростом числа сотрудников и расширением географии деятельности компании возникла необходимость автоматизации процесса управления отпусками с целью повышения его эффективности и прозрачности.
Руководством компании была поставлена задача разработать информационную систему, которая позволит автоматизировать следующие процессы:
1. Формирование и согласование заявлений на отпуск в электронном виде;
2. Планирование графика отпусков на год;
3. Учет фактически использованных отпусков и оставшихся дней;
4. Информирование руководителей и сотрудников о предстоящих отпусках;
5. Формирование различных видов отчетности по отпускам.
Разрабатываемая информационная система должна учитывать специфику деятельности компании, в том числе:
1. Наличие удаленных сотрудников и необходимость обеспечения им доступа к системе;
2. Разные категории отпусков (основной оплачиваемый отпуск, дополнительный отпуск, отпуск без сохранения заработной платы и т.д.);
3. Различные уровни доступа пользователей к функциям системы в зависимости от должности и роли;
4. Необходимость интеграции с существующими информационными системами компании, включая систему учета рабочего времени и систему расчета заработной платы.
Анализ ИТ-инфраструктуры компании показал, что в организации используются следующие технические и программные средства:
1. Серверное оборудование на базе процессоров Intel Xeon с объемом оперативной памяти от 64 ГБ;
2. Операционные системы: серверные – Windows Server 2019, клиентские – Windows 10/11;
3. СУБД Microsoft SQL Server 2019 Enterprise Edition;
4. Виртуализация на базе VMware vSphere;
5. Система электронного документооборота на базе 1С:Документооборот;
6. Система управления проектами Jira;
7. Система учета рабочего времени и расчета заработной платы на базе 1С:Зарплата и управление персоналом.
В результате проведенного анализа существующих процессов управления отпусками и ИТ-инфраструктуры компании были сформулированы следующие требования к разрабатываемой информационной системе:
Функциональные требования:
1. Возможность формирования и подачи заявлений на отпуск в электронном виде;
2. Многоуровневая система согласования заявлений (руководитель подразделения, директор по персоналу, генеральный директор);
3. Автоматический расчет количества положенных дней отпуска с учетом стажа работы;
4. Формирование годового графика отпусков с возможностью его корректировки;
5. Учет различных типов отпусков (ежегодный оплачиваемый, дополнительный, без сохранения заработной платы, учебный, по уходу за ребенком и т.д.);
6. Контроль пересечения отпусков сотрудников одного подразделения;
7. Система уведомлений о приближающихся отпусках, необходимости их согласования и изменении статуса заявлений;
8. Формирование различных видов отчетности (график отпусков по подразделениям, сводный отчет по компании, индивидуальная статистика по сотрудникам и т.д.);
9. Возможность загрузки данных в формате Excel и экспорта отчетов в различных форматах (Excel, PDF, Word);
10. Интеграция с существующими системами компании для синхронизации данных о сотрудниках, отработанном времени и отпусках.
Нефункциональные требования:
1. Доступность системы через веб-интерфейс, с поддержкой различных браузеров (Chrome, Firefox, Edge);
2. Адаптивный дизайн для работы с мобильных устройств;
3. Высокая производительность и масштабируемость;
4. Обеспечение безопасности данных и разграничение доступа в соответствии с ролями пользователей;
5. Простота и интуитивность пользовательского интерфейса;
6. Возможность работы системы 24/7 с минимальными прерываниями на техническое обслуживание.
Предметной областью данного проекта является управление отпусками сотрудников компании, которое регулируется трудовым законодательством Российской Федерации и внутренними нормативными документами организации.
Согласно Трудовому кодексу РФ, существуют следующие виды отпусков:
1. Ежегодный основной оплачиваемый отпуск (не менее 28 календарных дней);
2. Ежегодный дополнительный оплачиваемый отпуск (предоставляется отдельным категориям работников: работникам с ненормированным рабочим днем, работникам, занятым на работах с вредными и/или опасными условиями труда и др.);
3. Отпуск без сохранения заработной платы (предоставляется по семейным обстоятельствам и другим уважительным причинам);
4. Учебный отпуск (предоставляется работникам, совмещающим работу с получением образования);
5. Отпуск по беременности и родам;
6. Отпуск по уходу за ребенком до достижения им возраста трех лет;
7. Иные виды отпусков, предусмотренные законодательством или локальными нормативными актами.
Процесс управления отпусками включает в себя следующие этапы:
1. Планирование отпусков на год;
2. Подача заявления на отпуск сотрудником;
3. Согласование заявления руководителем подразделения;
4. Утверждение заявления отделом кадров;
5. Оформление приказа о предоставлении отпуска;
6. Учет фактически использованных отпусков;
7. Формирование отчетности.
Для автоматизации процесса управления отпусками в настоящее время существует ряд готовых решений, таких как модули в составе ERP-систем (1С:Зарплата и управление персоналом, SAP HR), специализированные HR-системы (БОСС-Кадровик, WebTutor, Talantix) и отдельные программные продукты (BambooHR, Calamari, TimeTac).
Анализ существующих решений показал, что они обладают следующими преимуществами и недостатками:
Преимущества:
1. Наличие готовых шаблонов документов и бизнес-процессов;
2. Соответствие требованиям законодательства;
3. Регулярные обновления с учетом изменений в законодательстве;
4. Наличие технической поддержки.
Недостатки:
1. Высокая стоимость лицензий и внедрения;
2. Избыточная функциональность, которая часто не используется;
3. Сложность настройки под специфические требования компании;
4. Ограниченные возможности интеграции с другими системами;
5. Недостаточная гибкость при изменении бизнес-процессов.
Учитывая специфику деятельности компании ООО «ТехноСофт» и требования к информационной системе, было принято решение о разработке собственного решения, которое бы полностью соответствовало потребностям компании и легко интегрировалось с существующими информационными системами.
Для более детального понимания предметной области был проведен анализ процесса управления отпусками в компании с использованием методологии IDEF0. На рисунке 2.1 представлена контекстная диаграмма процесса управления отпусками.
Рисунок 2.1 – График отпусков сотрудников в ИС
На основе анализа предметной области были выделены следующие ключевые сущности, которые должны быть представлены в информационной системе:
1. Сотрудник – основные данные о работнике компании (ФИО, должность, подразделение, дата приема на работу и т.д.);
2. Тип отпуска – классификация отпусков (ежегодный оплачиваемый, дополнительный, без сохранения заработной платы и т.д.);
3. Заявление на отпуск – документ, содержащий информацию о запрашиваемом отпуске (тип отпуска, даты начала и окончания, количество дней и т.д.);
4. График отпусков – план отпусков сотрудников на определенный период;
5. Учетная запись пользователя – информация для авторизации в системе и определения прав доступа;
6. Подразделение – структурная единица компании;
7. Должность – позиция сотрудника в компании;
8. Статус заявления – текущее состояние заявления на отпуск (создано, на согласовании, согласовано, отклонено и т.д.);
9. Уведомление – информация, направляемая пользователям системы о событиях, связанных с отпусками.
Также были выделены основные роли пользователей системы:
1. Администратор – полный доступ ко всем функциям системы, включая настройку параметров, управление пользователями и ролями;
2. Сотрудник – базовый доступ, включающий возможность подачи заявлений на отпуск, просмотра статуса своих заявлений и общего графика отпусков;
3. Руководитель подразделения – возможность согласования заявлений сотрудников своего подразделения, просмотра графика отпусков подразделения, формирования отчетов по своему подразделению;
4. Специалист отдела кадров – доступ к функциям утверждения заявлений, формирования приказов, внесения изменений в график отпусков, формирования отчетности;
5. Директор по персоналу – доступ к функциям контроля процесса управления отпусками, утверждения сводного графика отпусков, формирования аналитической отчетности;
6. Генеральный директор – доступ к сводной информации и отчетности по отпускам в компании.
На рисунке 2.2 представлена функциональная модель разрабатываемой информационной системы.
Рисунок 2.2 – Календарь отпусков в ИС
Функциональная модель информационной системы включает следующие основные блоки:
1. Модуль управления учетными записями – обеспечивает функции регистрации, авторизации, управления правами доступа пользователей;
2. Модуль управления справочниками – позволяет администрировать справочники системы (подразделения, должности, типы отпусков и т.д.);
3. Модуль формирования заявлений на отпуск – обеспечивает создание, редактирование и отправку на согласование заявлений на отпуск;
4. Модуль согласования заявлений – реализует процесс многоуровневого согласования заявлений на отпуск;
5. Модуль формирования графика отпусков – позволяет формировать и корректировать график отпусков на год;
6. Модуль учета отпусков – обеспечивает учет фактически использованных отпусков и расчет оставшихся дней;
7. Модуль уведомлений – реализует систему информирования пользователей о событиях, связанных с отпусками;
8. Модуль формирования отчетности – обеспечивает формирование различных видов отчетов по отпускам;
9. Модуль интеграции – обеспечивает взаимодействие с другими информационными системами компании.
Процесс формирования и согласования заявления на отпуск в разрабатываемой информационной системе представлен на рисунке 2.3 в виде диаграммы активности UML.
Рисунок 2.3 – Интерфейс вкладки «Заявки»
Для реализации информационной системы были выбраны следующие технологии и инструменты:
1. Клиентская часть (Frontend):
- JavaScript как основной язык программирования;
- React.js – библиотека для создания пользовательского интерфейса;
- Redux – для управления состоянием приложения;
- Material-UI – библиотека компонентов для создания современного и отзывчивого интерфейса;
- Chart.js – для визуализации данных в виде графиков и диаграмм;
- Axios – для выполнения HTTP-запросов.
2. Серверная часть (Backend):
- Node.js как платформа для выполнения JavaScript-кода на сервере;
- Express.js – фреймворк для создания веб-приложений на Node.js;
- MySQL – система управления базами данных;
- Sequelize – ORM для работы с базой данных;
- Passport.js – для аутентификации пользователей;
- JWT (JSON Web Tokens) – для реализации безопасной авторизации;
- Nodemailer – для отправки электронных уведомлений.
При выборе технологий учитывались следующие факторы:
1. Популярность и стабильность технологий, наличие активного сообщества разработчиков;
2. Возможность создания современного и удобного пользовательского интерфейса;
3. Производительность и масштабируемость;
4. Возможность интеграции с существующими системами компании;
5. Наличие специалистов с опытом работы с выбранными технологиями.
Реализация информационной системы с использованием выбранных технологий позволит создать современное, надежное и масштабируемое решение, отвечающее всем требованиям компании и обеспечивающее эффективную автоматизацию процесса управления отпусками сотрудников.
В результате анализа предметной области были сформулированы следующие выводы:
1. Процесс управления отпусками является важной частью управления человеческими ресурсами компании и регулируется трудовым законодательством РФ;
2. Существующий в компании ООО «ТехноСофт» процесс управления отпусками имеет ряд недостатков, связанных с его недостаточной автоматизацией;
3. На рынке представлены готовые решения для автоматизации процесса управления отпусками, однако они не полностью соответствуют специфическим требованиям компании;
4. Разработка собственной информационной системы является оптимальным решением для автоматизации процесса управления отпусками в компании;
5. Выбранные технологии и инструменты разработки позволят создать современное, надежное и масштабируемое решение, отвечающее всем требованиям компании.
На этапе проектирования информационной системы управления отпусками сотрудников были разработаны модели данных, архитектура системы и пользовательский интерфейс. Проектирование осуществлялось с использованием объектно-ориентированного подхода и методологии Unified Modeling Language (UML).
В основе проектирования лежал анализ требований к системе, выполненный на предыдущем этапе. На основе этого анализа была разработана концептуальная модель данных, отражающая основные сущности предметной области и связи между ними.
На рисунке 2.4 представлена диаграмма классов, описывающая основные сущности информационной системы и их атрибуты.
Рисунок 2.4 – Пример формы для добавления сотрудника
Основными классами системы являются:
1. User (Пользователь) – содержит информацию о пользователе системы, включая учетные данные для авторизации и роль в системе;
2. Employee (Сотрудник) – содержит информацию о сотруднике компании, включая ФИО, должность, подразделение и т.д.;
3. Department (Подразделение) – описывает структурное подразделение компании;
4. Position (Должность) – содержит информацию о должности сотрудника;
5. VacationType (Тип отпуска) – описывает различные типы отпусков;
6. VacationRequest (Заявление на отпуск) – содержит информацию о запрашиваемом отпуске;
7. VacationSchedule (График отпусков) – описывает план отпусков на определенный период;
8. Notification (Уведомление) – содержит информацию об уведомлениях пользователей о событиях в системе.
На основе диаграммы классов была разработана логическая модель базы данных, представленная на рисунке 2.5.
Рисунок 2.5 – Таблица сотрудников и их отпусков
Логическая модель базы данных включает следующие основные таблицы:
1. users – содержит информацию о пользователях системы;
2. employees – содержит данные о сотрудниках компании;
3. departments – содержит информацию о подразделениях компании;
4. positions – содержит информацию о должностях;
5. vacation_types – содержит описание типов отпусков;
6. vacation_requests – содержит заявления на отпуск;
7. vacation_request_statuses – содержит информацию о статусах заявлений на отпуск;
8. vacation_schedules – содержит график отпусков;
9. vacation_balances – содержит информацию о доступных днях отпуска для каждого сотрудника;
10. notifications – содержит уведомления для пользователей.
Между таблицами определены связи, отражающие отношения между сущностями предметной области. Например, таблица employees связана с таблицей departments через внешний ключ department_id, что позволяет определить, к какому подразделению относится сотрудник.
Для каждой таблицы определены первичные ключи, внешние ключи и индексы, необходимые для обеспечения целостности данных и оптимизации производительности запросов.
Архитектура информационной системы разработана с использованием шаблона MVC (Model-View-Controller), который обеспечивает разделение данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента. Такой подход позволяет обеспечить модульность, расширяемость и поддерживаемость системы.
На рисунке 2.6 представлена общая архитектура информационной системы.
Рисунок 2.6 – Календарь отпусков сотрудников
Архитектура информационной системы включает следующие основные компоненты:
1. Клиентская часть (Frontend) – реализует пользовательский интерфейс системы и обеспечивает взаимодействие пользователя с системой. Реализована с использованием React.js и включает компоненты представления, сервисы для взаимодействия с API, хранилище состояния (Redux) и маршрутизатор;
2. Серверная часть (Backend) – реализует бизнес-логику системы и обеспечивает взаимодействие с базой данных. Реализована с использованием Node.js и Express.js и включает контроллеры, сервисы, модели данных и middleware для обработки запросов;
3. База данных – обеспечивает хранение и управление данными системы. Реализована с использованием MySQL;
4. API – обеспечивает взаимодействие между клиентской и серверной частями системы. Реализован в соответствии с принципами REST;
5. Интеграционные сервисы – обеспечивают взаимодействие с внешними системами (система учета рабочего времени, система расчета заработной платы и т.д.).
При проектировании пользовательского интерфейса учитывались следующие принципы:
1. Простота и интуитивность – интерфейс должен быть понятен пользователям без специального обучения;
2. Единообразие – элементы интерфейса должны быть оформлены в едином стиле;
3. Отзывчивость – интерфейс должен корректно отображаться на различных устройствах (компьютер, планшет, смартфон);
4. Информативность – пользователь должен получать достаточную информацию о текущем состоянии системы и результатах своих действий;
5. Доступность – интерфейс должен быть доступен для пользователей с различными потребностями.
Основные экраны пользовательского интерфейса информационной системы включают:
1. Экран авторизации – обеспечивает вход пользователей в систему;
2. Главный экран (дашборд) – предоставляет обзор ключевой информации и доступ к основным функциям системы;
3. Экран управления сотрудниками – обеспечивает возможность просмотра, добавления, редактирования и удаления информации о сотрудниках;
4. Экран формирования заявлений на отпуск – обеспечивает возможность создания и отправки заявлений на отпуск;
5. Экран согласования заявлений – обеспечивает возможность просмотра и согласования заявлений на отпуск;
6. Экран графика отпусков – предоставляет возможность просмотра и редактирования графика отпусков;
7. Экран формирования отчетов – обеспечивает возможность формирования различных видов отчетности;
8. Экран настроек – обеспечивает возможность настройки параметров системы.
Примеры прототипов экранов пользовательского интерфейса представлены на рисунках 2.7 - 2.10.
Рисунок 2.7 – Экран редактирования данных сотрудника
Рисунок 2.8 – Экран отображения списка сотрудников и их отпусков
Рисунок 2.9 – Экран календаря отпусков
Для обеспечения безопасности информационной системы были предусмотрены следующие механизмы:
1. Аутентификация и авторизация пользователей с использованием JWT (JSON Web Tokens);
2. Разграничение прав доступа в соответствии с ролями пользователей;
3. Шифрование паролей пользователей;
4. Шифрование данных, передаваемых между клиентской и серверной частями системы с использованием HTTPS;
5. Защита от основных типов атак (SQL-инъекции, XSS, CSRF и т.д.);
6. Логирование действий пользователей и событий безопасности;
7. Регулярное резервное копирование данных.
Интеграция с существующими информационными системами компании планируется реализовать с использованием следующих механизмов:
1. API для обмена данными с системой учета рабочего времени и системой расчета заработной платы;
2. Импорт/экспорт данных в формате CSV/Excel для обмена данными с системами, не поддерживающими API;
3. Использование общей базы данных с системой электронного документооборота (при наличии такой возможности);
4. Интеграция с корпоративной системой авторизации (Single Sign-On) для обеспечения единого входа в различные системы компании.
Для тестирования информационной системы планируется использовать следующие виды тестирования:
1. Модульное тестирование (Unit Testing) – для проверки корректности работы отдельных компонентов системы;
2. Интеграционное тестирование – для проверки корректности взаимодействия между компонентами системы;
3. Системное тестирование – для проверки соответствия системы требованиям;
4. Тестирование производительности – для проверки работоспособности системы при высоких нагрузках;
5. Тестирование безопасности – для выявления уязвимостей системы;
6. Тестирование пользовательского интерфейса – для проверки удобства использования системы;
7. Приемочное тестирование – для проверки соответствия системы бизнес-требованиям.
В результате проектирования были определены основные компоненты информационной системы, разработаны модели данных, архитектура системы и пользовательский интерфейс, а также определены механизмы обеспечения безопасности и интеграции с существующими системами компании. Полученные результаты будут использованы на следующем этапе – реализации информационной системы.
Планирование процесса разработки информационной системы осуществлялось с использованием методологии Agile, которая предполагает итеративный подход к разработке и активное вовлечение заказчика в процесс создания продукта.
Процесс разработки был разделен на следующие этапы:
1. Анализ требований и проектирование системы;
2. Разработка базы данных;
3. Разработка серверной части (Backend);
4. Разработка клиентской части (Frontend);
5. Интеграция с существующими системами;
6. Тестирование и отладка;
7. Документирование;
8. Развертывание и внедрение.
Для каждого этапа были определены сроки выполнения, ответственные исполнители и необходимые ресурсы. Общий срок разработки информационной системы составил 6 месяцев.
Для управления процессом разработки использовалась система управления проектами Jira, которая позволяла отслеживать прогресс выполнения задач, фиксировать и устранять возникающие проблемы, а также осуществлять коммуникацию между участниками проекта.
В проекте участвовали следующие специалисты:
1. Руководитель проекта – отвечал за общую координацию работ, взаимодействие с заказчиком, распределение ресурсов и контроль сроков выполнения;
2. Бизнес-аналитик – отвечал за сбор и анализ требований, проектирование бизнес-процессов и формирование функциональных спецификаций;
3. Архитектор – отвечал за разработку архитектуры системы, выбор технологий и инструментов разработки;
4. Разработчики Backend – отвечали за создание серверной части системы, реализацию бизнес-логики и взаимодействие с базой данных;
5. Разработчики Frontend – отвечали за создание клиентской части системы, реализацию пользовательского интерфейса и взаимодействие с API;
6. Тестировщики – отвечали за проверку качества продукта, выявление и документирование ошибок;
7. Технические писатели – отвечали за создание пользовательской и технической документации.
Для обеспечения качества разработки были определены следующие критерии и метрики:
1. Соответствие функциональным и нефункциональным требованиям;
2. Отсутствие критических ошибок;
3. Производительность системы при нагрузке (время отклика, количество одновременных пользователей);
4. Удобство использования (по результатам пользовательского тестирования);
5. Полнота и качество документации;
6. Соответствие стандартам и лучшим практикам разработки.
Для контроля качества кода использовались следующие инструменты и практики:
1. Автоматизированные тесты (модульные, интеграционные, end-to-end);
2. Код-ревью – проверка кода другими разработчиками перед его включением в общую кодовую базу;
3. Статический анализ кода с использованием специализированных инструментов (ESLint, SonarQube);
4. Автоматизированная сборка и непрерывная интеграция (CI/CD) с использованием Jenkins;
5. Стандарты оформления кода и документации.
В результате проектирования предметной области были определены основные компоненты информационной системы, разработаны модели данных, архитектура системы и пользовательский интерфейс, а также спланирован процесс разработки. Полученные результаты обеспечили основу для следующего этапа – реализации информационной системы для управления отпусками сотрудников компании.
Реализация информационной системы для управления отпусками осуществлялась в соответствии с разработанным на этапе проектирования планом и с использованием выбранных технологий и инструментов.
Первым шагом в реализации системы было создание базы данных на основе разработанной логической модели. База данных была реализована с использованием СУБД MySQL. Ниже приведен фрагмент SQL-кода для создания основных таблиц базы данных:
После создания базы данных был разработан сервер на основе Node.js и Express.js, обеспечивающий обработку HTTP-запросов от клиентской части и взаимодействие с базой данных. Для облегчения работы с базой данных использовался ORM Sequelize, который предоставляет удобный интерфейс для выполнения операций с базой данных из JavaScript-кода.
Ниже приведен фрагмент кода модели сотрудника, реализованной с использованием Sequelize:
Аналогичным образом были реализованы модели для всех сущностей системы, включая пользователей, подразделения, должности, типы отпусков, заявления на отпуск и т.д.
Для обработки HTTP-запросов были разработаны контроллеры, которые обеспечивают выполнение операций с данными. Ниже приведен фрагмент кода контроллера для управления заявлениями на отпуск:
Аналогичным образом были реализованы контроллеры для всех сущностей системы, обеспечивающие выполнение операций создания, чтения, обновления и удаления данных (CRUD).
Для маршрутизации HTTP-запросов был разработан маршрутизатор на основе Express.js. Ниже приведен фрагмент кода маршрутизатора для заявлений на отпуск:
Для аутентификации и авторизации пользователей был разработан механизм на основе JSON Web Tokens (JWT). Ниже приведен фрагмент кода middleware для аутентификации:
Для реализации клиентской части информационной системы был использован фреймворк React.js, который позволяет создавать динамические пользовательские интерфейсы. Ниже приведен фрагмент кода компонента для отображения списка заявлений на отпуск:
ID | Сотрудник | Тип отпуска | Дата начала | Дата окончания | Дней | Статус | Действия |
---|---|---|---|---|---|---|---|
{request.id} | {`${request.Employee.lastName} ${request.Employee.firstName} ${request.Employee.middleName || ''}`} | {request.VacationType.name} | {format(new Date(request.startDate), 'dd.MM.yyyy', { locale: ru })} | {format(new Date(request.endDate), 'dd.MM.yyyy', { locale: ru })} | {request.duration} | {getStatusBadge(request.statusId)} |
{(user.role === 'admin' || user.role === 'hr' || user.role === 'manager') &&
request.statusId === 2 && (
<>
>
)}
|
Для взаимодействия с API был разработан сервис, обеспечивающий выполнение HTTP-запросов к серверу. Ниже приведен фрагмент кода сервиса для работы с заявлениями на отпуск:
Для управления состоянием приложения был использован контекст React. Ниже приведен фрагмент кода контекста аутентификации: