Разработка веб-приложения для управления командами, проектами и задачами
|
Аннотация 2
ВВЕДЕНИЕ 11
1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ 13
1.1. ОБЗОР АНАЛОГОВ 13
1.2. АНАЛИЗ ОСНОВНЫХ ТЕХНОЛОГИЧЕСКИХ РЕШЕНИЙ 16
1.2.2. Базы данных 16
1.2.3. Серверная часть приложения 22
1.2.3.1. Выбор языка программирования 22
1.2.3.2. Выбор фреймворка 28
1.2.4. Выбор фреймворка для frontend 30
1.3. ВЫВОД 35
2. Определение требований 36
2.1. Функциональные требования 36
2.1.1. Основные требования к функционалу системы 36
2.1.2. Требования к авторизации пользователя 38
2.1.3. Общие требования к системе безопасности 39
2.1.4. Требования безопасности контента 39
2.1.5. Требования к системе уведомлений 40
2.2. НЕФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ 41
2.2.1. Требования к построению интерфейса системы 41
2.2.2. Требования к графическому оформлению системы 41
2.2.3. Требования к графическому оформлению системы задач и
проектов 42
3. ПРОЕКТИРОВАНИЕ 43
3.1. АРХИТЕКТУРА ПРЕДЛАГАЕМОГО РЕШЕНИЯ 43
3.1.1. Основная архитектура 43
3.1.2. SPA 44
3.1.3. Сервер API 46
3.2. АЛГОРИТМЫ РЕШЕНИЯ ЗАДАЧИ 48
3.2.1. Основные принципы организации приложения 48
3.2.2. Математический аппарат 50
3.2.2.1. Помощь пользователю в распределении работников 50
3.2.2.2. Надежность выполнения задачи 54
3.3. ОПИСАНИЕ ДАННЫХ 56
3.4. Описание классов сущностей 65
3.5. Описание классов репозиториев 68
3.6. Описание классов конфигурации и ошибок 71
3.7. Описание классов сервисов 72
3.8. Описание контроллеров 73
3.9. Описание приложения SPA 77
4. РЕАЛИЗАЦИЯ 81
4.1. Форма входа в приложение 81
4.2. Реализация OAuth 2.0 82
4.3. Главное окно приложения 84
4.4. Личный кабинет пользователя 88
4.5. Создание и отображение заданий и проектов 88
4.6. Графы задач 100
4.7. Слияние проектов 102
4.8. Редактирование информации о проекте или списке задач 107
4.9. Работа с командами 109
4.10. Проекты и группы сообщества 114
5. ТЕСТИРОВАНИЕ 118
5.1. Тестирование форм ввода 118
5.2. Тестирование прав пользователя 123
5.3. Тестирование системы приглашений и заявок 125
5.4. Тестирование оценки надежности выполнения задачи 128
5.5. Тестирование отображения списка проектов, списка задач и
отдельных задач 131
5.6. Тестирование слияния проектов 131
5.7. Тестирование отображения графов задач 131
5.8. Тестирование отображения списка групп 132
5.9. Тестирование отображения списка проектов и групп сообщества 132
6. Заключение 133
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 134
ПРИЛОЖЕНИЕ А ИСХОДНЫЙ КОД МОДЕЛИ USER 137
ПРИЛОЖЕНИЕ Б ИСХОДНЫЙ КОД МОДЕЛИ GROUP 142
ПРИЛОЖЕНИЕ В ИСХОДНЫЙ КОД МОДЕЛИ USERGROUP 145
ПРИЛОЖЕНИЕ Г ИСХОДНЫЙ КОД МОДЕЛИ DESK 147
ПРИЛОЖЕНИЕ Д ИСХОДНЫЙ КОД МОДЕЛИ TASKLIST 151
ПРИЛОЖЕНИЕ Е ИСХОДНЫЙ КОД МОДЕЛИ TASK 156
ПРИЛОЖЕНИЕ Ж ИСХОДНЫЙ КОД МОДЕЛИ DESKREQUESTMERGE
162
ПРИЛОЖЕНИЕ К ИСХОДНЫЙ КОД МОДЕЛИ GROUPDESK 164
ПРИЛОЖЕНИЕ Л ИСХОДНЫЙ КОД МОДЕЛИ USERDESK 166
ПРИЛОЖЕНИЕ М ИСХОДНЫЙ КОД МОДЕЛИ USERTASK 168
ПРИЛОЖЕНИЕ Н ИСХОДНЫЙ КОД МОДЕЛИ USERTASKLIST 170
ПРИЛОЖЕНИЕ П ИСХОДНЫЙ КОД ПЕРЕЧИСЛЕНИЯ ROLE 172
ПРИЛОЖЕНИЕ Р ИСХОДНЫЙ КОД КОНФИГУРАЦИИ
WEBSECURITYCONFIG 173
ПРИЛОЖЕНИЕ С ИСХОДНЫЙ КОД РЕПОЗИТОРИЕВ СУЩНОСТЕЙ
ПОЛЬЗОВАТЕЛЯ И ГРУППЫ 174
ПРИЛОЖЕНИЕ Т ИСХОДНЫЙ КОД РЕПОЗИТОРИЕВ СУЩНОСТЕЙ
ЗАДАЧ, СПИСКОВ И ПРОЕКТОВ 176
ПРИЛОЖЕНИЕ У ИСХОДНЫЙ КОД РЕПОЗИТОРИЕВ СВЯЗИ МЕЖДУ
СУЩНОСТЯМИ 178
ПРИЛОЖЕНИЕ Ф ИСХОДНЫЙ КОД КЛАССА ОШИБКИ 181
ПРИЛОЖЕНИЕ X ИСХОДНЫЙ КОД ГЛАВНОГО КОНТРОЛЛЕРА...182
ПРИЛОЖЕНИЕ Ц ИСХОДНЫЙ КОД СЕРВИСА DESKSERVICE 183
ПРИЛОЖЕНИЕ Ш ИСХОДНЫЙ КОД СЕРВИСА EFFECTIVE WALK
SERVICE 185
ПРИЛОЖЕНИЕ Щ ИСХОДНЫЙ КОД СЕРВИСА USER RELIABILITY
SERVICE 187
ПРИЛОЖЕНИЕ Э ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА USER....189
ПРИЛОЖЕНИЕ Ю ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА GROUP190
ПРИЛОЖЕНИЕ Я ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА
USERGROUP 191
ПРИЛОЖЕНИЕ A ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА DESK....193
ПРИЛОЖЕНИЕ B ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА TASK....195
ПРИЛОЖЕНИЕ C ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА TASKLIST
197
ПРИЛОЖЕНИЕ D ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА
GROUPDESK 199
ПРИЛОЖЕНИЕ F ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА USERDESK
201
ПРИЛОЖЕНИЕ G ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА USERTASK
203
ПРИЛОЖЕНИЕ H ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА
USERTASKLIST 205
ПРИЛОЖЕНИЕ J ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА
UTILITYREST 207
ПРИЛОЖЕНИЕ K ИСХОДНЫЙ КОД ТОЧКИ ВХОДА В ПРОГРАММУ
208
ПРИЛОЖЕНИЕ L ИСХОДНЫЙ КОД ПРИМЕРА VUE ФАЙЛА
TASKLISTEDIT 209
ПРИЛОЖЕНИЕ M ИСХОДНЫЙ КОД ПРИМЕРА VUE ФАЙЛА GRAPH
214
ВВЕДЕНИЕ 11
1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ 13
1.1. ОБЗОР АНАЛОГОВ 13
1.2. АНАЛИЗ ОСНОВНЫХ ТЕХНОЛОГИЧЕСКИХ РЕШЕНИЙ 16
1.2.2. Базы данных 16
1.2.3. Серверная часть приложения 22
1.2.3.1. Выбор языка программирования 22
1.2.3.2. Выбор фреймворка 28
1.2.4. Выбор фреймворка для frontend 30
1.3. ВЫВОД 35
2. Определение требований 36
2.1. Функциональные требования 36
2.1.1. Основные требования к функционалу системы 36
2.1.2. Требования к авторизации пользователя 38
2.1.3. Общие требования к системе безопасности 39
2.1.4. Требования безопасности контента 39
2.1.5. Требования к системе уведомлений 40
2.2. НЕФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ 41
2.2.1. Требования к построению интерфейса системы 41
2.2.2. Требования к графическому оформлению системы 41
2.2.3. Требования к графическому оформлению системы задач и
проектов 42
3. ПРОЕКТИРОВАНИЕ 43
3.1. АРХИТЕКТУРА ПРЕДЛАГАЕМОГО РЕШЕНИЯ 43
3.1.1. Основная архитектура 43
3.1.2. SPA 44
3.1.3. Сервер API 46
3.2. АЛГОРИТМЫ РЕШЕНИЯ ЗАДАЧИ 48
3.2.1. Основные принципы организации приложения 48
3.2.2. Математический аппарат 50
3.2.2.1. Помощь пользователю в распределении работников 50
3.2.2.2. Надежность выполнения задачи 54
3.3. ОПИСАНИЕ ДАННЫХ 56
3.4. Описание классов сущностей 65
3.5. Описание классов репозиториев 68
3.6. Описание классов конфигурации и ошибок 71
3.7. Описание классов сервисов 72
3.8. Описание контроллеров 73
3.9. Описание приложения SPA 77
4. РЕАЛИЗАЦИЯ 81
4.1. Форма входа в приложение 81
4.2. Реализация OAuth 2.0 82
4.3. Главное окно приложения 84
4.4. Личный кабинет пользователя 88
4.5. Создание и отображение заданий и проектов 88
4.6. Графы задач 100
4.7. Слияние проектов 102
4.8. Редактирование информации о проекте или списке задач 107
4.9. Работа с командами 109
4.10. Проекты и группы сообщества 114
5. ТЕСТИРОВАНИЕ 118
5.1. Тестирование форм ввода 118
5.2. Тестирование прав пользователя 123
5.3. Тестирование системы приглашений и заявок 125
5.4. Тестирование оценки надежности выполнения задачи 128
5.5. Тестирование отображения списка проектов, списка задач и
отдельных задач 131
5.6. Тестирование слияния проектов 131
5.7. Тестирование отображения графов задач 131
5.8. Тестирование отображения списка групп 132
5.9. Тестирование отображения списка проектов и групп сообщества 132
6. Заключение 133
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 134
ПРИЛОЖЕНИЕ А ИСХОДНЫЙ КОД МОДЕЛИ USER 137
ПРИЛОЖЕНИЕ Б ИСХОДНЫЙ КОД МОДЕЛИ GROUP 142
ПРИЛОЖЕНИЕ В ИСХОДНЫЙ КОД МОДЕЛИ USERGROUP 145
ПРИЛОЖЕНИЕ Г ИСХОДНЫЙ КОД МОДЕЛИ DESK 147
ПРИЛОЖЕНИЕ Д ИСХОДНЫЙ КОД МОДЕЛИ TASKLIST 151
ПРИЛОЖЕНИЕ Е ИСХОДНЫЙ КОД МОДЕЛИ TASK 156
ПРИЛОЖЕНИЕ Ж ИСХОДНЫЙ КОД МОДЕЛИ DESKREQUESTMERGE
162
ПРИЛОЖЕНИЕ К ИСХОДНЫЙ КОД МОДЕЛИ GROUPDESK 164
ПРИЛОЖЕНИЕ Л ИСХОДНЫЙ КОД МОДЕЛИ USERDESK 166
ПРИЛОЖЕНИЕ М ИСХОДНЫЙ КОД МОДЕЛИ USERTASK 168
ПРИЛОЖЕНИЕ Н ИСХОДНЫЙ КОД МОДЕЛИ USERTASKLIST 170
ПРИЛОЖЕНИЕ П ИСХОДНЫЙ КОД ПЕРЕЧИСЛЕНИЯ ROLE 172
ПРИЛОЖЕНИЕ Р ИСХОДНЫЙ КОД КОНФИГУРАЦИИ
WEBSECURITYCONFIG 173
ПРИЛОЖЕНИЕ С ИСХОДНЫЙ КОД РЕПОЗИТОРИЕВ СУЩНОСТЕЙ
ПОЛЬЗОВАТЕЛЯ И ГРУППЫ 174
ПРИЛОЖЕНИЕ Т ИСХОДНЫЙ КОД РЕПОЗИТОРИЕВ СУЩНОСТЕЙ
ЗАДАЧ, СПИСКОВ И ПРОЕКТОВ 176
ПРИЛОЖЕНИЕ У ИСХОДНЫЙ КОД РЕПОЗИТОРИЕВ СВЯЗИ МЕЖДУ
СУЩНОСТЯМИ 178
ПРИЛОЖЕНИЕ Ф ИСХОДНЫЙ КОД КЛАССА ОШИБКИ 181
ПРИЛОЖЕНИЕ X ИСХОДНЫЙ КОД ГЛАВНОГО КОНТРОЛЛЕРА...182
ПРИЛОЖЕНИЕ Ц ИСХОДНЫЙ КОД СЕРВИСА DESKSERVICE 183
ПРИЛОЖЕНИЕ Ш ИСХОДНЫЙ КОД СЕРВИСА EFFECTIVE WALK
SERVICE 185
ПРИЛОЖЕНИЕ Щ ИСХОДНЫЙ КОД СЕРВИСА USER RELIABILITY
SERVICE 187
ПРИЛОЖЕНИЕ Э ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА USER....189
ПРИЛОЖЕНИЕ Ю ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА GROUP190
ПРИЛОЖЕНИЕ Я ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА
USERGROUP 191
ПРИЛОЖЕНИЕ A ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА DESK....193
ПРИЛОЖЕНИЕ B ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА TASK....195
ПРИЛОЖЕНИЕ C ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА TASKLIST
197
ПРИЛОЖЕНИЕ D ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА
GROUPDESK 199
ПРИЛОЖЕНИЕ F ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА USERDESK
201
ПРИЛОЖЕНИЕ G ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА USERTASK
203
ПРИЛОЖЕНИЕ H ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА
USERTASKLIST 205
ПРИЛОЖЕНИЕ J ИСХОДНЫЙ КОД REST-КОНТРОЛЛЕРА
UTILITYREST 207
ПРИЛОЖЕНИЕ K ИСХОДНЫЙ КОД ТОЧКИ ВХОДА В ПРОГРАММУ
208
ПРИЛОЖЕНИЕ L ИСХОДНЫЙ КОД ПРИМЕРА VUE ФАЙЛА
TASKLISTEDIT 209
ПРИЛОЖЕНИЕ M ИСХОДНЫЙ КОД ПРИМЕРА VUE ФАЙЛА GRAPH
214
На сегодняшний день отсутствует удобная возможность взаимодействия на рынке состоявшихся организаций, начинающих стартап-команд и приходящих в определенную сферу новых людей, ищущих определенный проект или команду по их интересам. Актуальность темы, связанной с данным взаимодействием, заключается в том, что в современном мире Интернета и облачных технологий разные слои людей на рынке могут достаточно легко коммуницировать друг с другом, создавая новые инновационные продукты. За последнее десятилетие большие организации нередко выкупали команды разработчиков того или иного инновационного приложения или программы. На более низком уровне часто стартап-командам требуются единомышленники, еще не нашедшие постоянное место работы.
На основании вышеизложенного можно утверждать, что инструмент, предоставляющий возможности нахождения методов гибкой и наиболее быстрой работы команды и её членов, будет весьма полезен и востребован. Гибкость предполагается также в способах взаимодействий разных проектов.
Целью представленной выпускной квалификационной работы является разработка веб-приложения, обеспечивающего систему взаимодействий команд, проектов и задач с использованием технологии Java Spring, базы данных PostgreSQL и JavaScrpit фреймворков(Уие JS).
Для достижения поставленной цели, необходимо решить следующие задачи:
1. Рассмотреть существующие на рынке проекты или научные исследования по теме работы.
2. Провести детальный анализ найденных проектов с точки зрения их достоинств и недостатков, учесть полученные результаты при разработке.
3. Определить основные цели и назначение проекта. Определить основной функционал.
4. Сформулировать основные сущности проекта.
5. Выбрать средства реализации проекта.
6. Разработать схему данных.
7. Разработать серверную часть приложения, опираясь на ранее созданную схему данных. Разработать фронт-энд сторону приложения.
8. Протестировать итоговую версию продукта.
На протяжении всей работы должны проводиться тесты после каждого из практических пунктов (начиная со схемы данных).
На основании вышеизложенного можно утверждать, что инструмент, предоставляющий возможности нахождения методов гибкой и наиболее быстрой работы команды и её членов, будет весьма полезен и востребован. Гибкость предполагается также в способах взаимодействий разных проектов.
Целью представленной выпускной квалификационной работы является разработка веб-приложения, обеспечивающего систему взаимодействий команд, проектов и задач с использованием технологии Java Spring, базы данных PostgreSQL и JavaScrpit фреймворков(Уие JS).
Для достижения поставленной цели, необходимо решить следующие задачи:
1. Рассмотреть существующие на рынке проекты или научные исследования по теме работы.
2. Провести детальный анализ найденных проектов с точки зрения их достоинств и недостатков, учесть полученные результаты при разработке.
3. Определить основные цели и назначение проекта. Определить основной функционал.
4. Сформулировать основные сущности проекта.
5. Выбрать средства реализации проекта.
6. Разработать схему данных.
7. Разработать серверную часть приложения, опираясь на ранее созданную схему данных. Разработать фронт-энд сторону приложения.
8. Протестировать итоговую версию продукта.
На протяжении всей работы должны проводиться тесты после каждого из практических пунктов (начиная со схемы данных).
В ходе дипломного проектирования было выполнено следующее:
1. Проведен анализ современного подхода к взаимодействию между членами команды, изучены способы гибкой работы небольших групп.
2. Проведен анализ предметной области и рынка родственных разработок.
3. Определены функциональные и нефункциональные требования к приложению.
4. Спроектирована архитектура веб-приложения.
5. Разработана структура базы данных.
6. Разработано и протестировано программное обеспечение, выполняющее поставленную задачу.
В веб-приложении были реализованы следующие функции:
1. Возможность организовывать работу с проектами, списками задач и отдельными задачами.
2. Возможность создавать команды и создавать проекты, связанные с данными командами.
3. Возможность отображения проекта или списка задач в виде графа.
4. Создание и отображение оптимального выполнения списка задач.
5. Сообщество, в котором пользователи могут приглашать или быть приглашенными к определенному проекту.
6. Возможность взаимодействия проектов.
7. Система модерирования приложения.
В ближайших планах стоит цель добавления сущностей коммерческих организаций и связанных с ней функционалом.
1. Проведен анализ современного подхода к взаимодействию между членами команды, изучены способы гибкой работы небольших групп.
2. Проведен анализ предметной области и рынка родственных разработок.
3. Определены функциональные и нефункциональные требования к приложению.
4. Спроектирована архитектура веб-приложения.
5. Разработана структура базы данных.
6. Разработано и протестировано программное обеспечение, выполняющее поставленную задачу.
В веб-приложении были реализованы следующие функции:
1. Возможность организовывать работу с проектами, списками задач и отдельными задачами.
2. Возможность создавать команды и создавать проекты, связанные с данными командами.
3. Возможность отображения проекта или списка задач в виде графа.
4. Создание и отображение оптимального выполнения списка задач.
5. Сообщество, в котором пользователи могут приглашать или быть приглашенными к определенному проекту.
6. Возможность взаимодействия проектов.
7. Система модерирования приложения.
В ближайших планах стоит цель добавления сущностей коммерческих организаций и связанных с ней функционалом.





