diff --git a/.gitignore b/.gitignore index 67045665d..a5db62f76 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,6 @@ dist # TernJS port file .tern-port + +#IDE +.vs/ \ No newline at end of file diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 4ae776818..2fb4e6b2c 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -76,7 +76,7 @@ module.exports = { lastUpdated: 'Останнє оновлення', // string | boolean // Assumes GitHub. Can also be a full GitLab url. - repo: 'https://github.com/edu-db/edu_db_labs', + repo: 'https://github.com/illiakroshka/edu_db_labs', // Customising the header label // Defaults to "GitHub"/"GitLab"/"Bitbucket" depending on `themeConfig.repo` repoLabel: 'Github', @@ -95,7 +95,7 @@ module.exports = { // editLinkText: 'Ви можете покращити цю сторінку' }, - title: 'Назва проєкту', + title: '4. Система управління проектами', description: 'Лабораторні роботи з дисципліни "Організація баз даних"', configureWebpack: { resolve: { diff --git a/docs/README.md b/docs/README.md index 9c28efeb0..621edb0d4 100644 --- a/docs/README.md +++ b/docs/README.md @@ -9,8 +9,19 @@ footer: "ECL 2.0 Licensed | Copyright © [YYYY] [Your Name]" **Виконав(-ла):** -*студент(-ка) 2-го курсу, групи (шифр групи)* **[ім’я ПРІЗВИЩЕ] [Посилання email, tg, fb]** +*студент 2-го курсу, групи ІМ-23* **Дмитро КИРИЧЕНКО** [Пошта: dimakirimail@gmail.com, Телеграм] +*студент 2-го курсу, групи ІМ-23* **Ілля КРОШКА** [Пошта: kroshka.illya@lll.kpi.ua , Телеграм] + +*студент 2-го курсу, групи ІМ-23* **Олександр СОЛОГУБ** [Пошта: sologub.sasha2001@gmail.com, Телеграм] + +*студент 2-го курсу, групи ІМ-23* **Ілля СТРЕЛЯ** [Пошта: seylvin2005@gmail.com, Телеграм] + +*студент 2-го курсу, групи ІМ-23* **Андрій ЩИГОЛЬ** [Пошта: andryushka05@gmail.com, Телеграм] + +*студент 2-го курсу, групи ІМ-23* **Тарас ЮРЧЕНКО** [Пошта: turchenko730@gmail.com, Телеграм] + +*студент 2-го курсу, групи ІМ-23* **Станіслав ЮХИМЕНКО** [Пошта: yukhymenko.stas@gmail.com, Телеграм] **Керівник** diff --git a/docs/design/README.md b/docs/design/README.md index 25658a9fd..01aa51f04 100644 --- a/docs/design/README.md +++ b/docs/design/README.md @@ -1,7 +1,227 @@ # Проєктування бази даних -В рамках проекту розробляється: -- модель бізнес-об'єктів -- ER-модель -- реляційна схема +## Business Entity Model +@startuml + + entity Project + entity Project.name #ffffff + entity Project.description #ffffff + entity Project.status #ffffff + entity Task #ffffff + entity Task.status #ffffff + entity Task.name #ffffff + entity Task.developer #ffffff + entity Task.deadline #ffffff + entity Task.ID #ffffff + + entity PaymentData #ffffff + entity PaymentData.email #ffffff + entity PaymentData.cardNumber #ffffff + entity PaymentData.cardExpireDate #ffffff + entity PaymentData.cardCVV #ffffff + + entity Review + entity Review.text #ffffff + entity Review.rate #ffffff + + entity User + entity User.login #ffffff + entity User.password #ffffff + entity User.email #ffffff + entity User.picture #ffffff + entity User.role #ffffff + + entity Member + + entity Role + entity Role.id #ffffff + + entity RoleGrant + + entity Permission + + Role "1,1"--l-"0,*" RoleGrant + RoleGrant "0,*"--u-"1,1" Permission + Role.id --d-* Role + + Project.name --d-* Project + Project.description --d-* Project + Project.status --d-* Project + Task "0,*" -- "1,1" Project + Task.status --u-* Task + Task.name --d-* Task + Task.developer --r-* Task + Task.deadline --d-* Task + Task.ID --u-* Task + + PaymentData "0,*" --u- "1,1" Project + PaymentData.email --l-* PaymentData + PaymentData.cardNumber --r-* PaymentData + PaymentData.cardExpireDate --u-* PaymentData + PaymentData.cardCVV --u-* PaymentData + + Review "0,*" --u- "1,1" Project + Review.text --u-* Review + Review.rate --u-* Review + + User.login --r-* User + User.password --u-* User + User.email --u-* User + User.picture --l-* User + User.role --u-* User + + Member "0,*"--u-"1,1" Role + Member "0,*" -- "1,1" User + Member "1,*" -- "0,*" Project + +@enduml + +## ER-model + +@startuml + +namespace ProjectManagment { + +entity Project <> { + ID: UUID + name: TEXT + description: TEXT + status: TEXT +} + +entity Task <> { + ID: UUID + name: TEXT + developer: TEXT + status: TEXT + deadline: DATE +} + +entity PaymentData <> { + ID: UUID + cardNumber: NUMBER + cardCVV: NUMBER + cardExpireDate: DATE + email: TEXT +} + +entity Review <>{ + ID: UUID + text: TEXT + rate: NUMBER +} + +} + +namespace AccessPolicy { +entity Member <>{ + ID: UUID +} +entity Role <>{ + ID: UUID +} +entity RoleGrant <>{ + ID: UUID +} +entity Permission <>{ + ID: UUID +} +} + +namespace UserProfile { +entity User <>{ + ID: UUID + LOGIN: TEXT + PICTURE: BYTE + PASSWORD: BYTE + EMAIL: TEXT + ROLE: TEXT +} +} + +Project "1.1 "<---"0.*" Task +Project "1.1 "<---"0.* " PaymentData +Project "1.1"<---"0.* " Review + +Project "0.*"<-l--"1.*" Member +Role "1.1"<---"0.*" Member +Role "1.1"<---"0.*" RoleGrant +Permission "1.1"<---"0.*" RoleGrant +User "1.1"<---"0.*" Member + +@enduml + +## Опис ER-моделі + +### Task (Завдання) +Представляє собою завдання. Має поля: + +- Id: BINARY - унікальний код +- Name: VARCHAR - назва завдання +- Developer: VARCHAR - ім'я розробника, який виконує завдання +- Status: VARCHAR - статус завдання +- Deadline: DATETIME - термін, до якого потрібно виконати завдання +- ProjectId: BINARY - унікальний код проєкту, до якого прив'язане завдання + +### Payments (Оплата) +Представляє собою місце, де проводиться оплата. Має поля: + +- Id: BINARY - унікальний код +- CardNumnber: INT - номер картки +- CardCVV: INT - CVV код картки +- CardExpireDate: DATETIME - термін дії картки +- Email: VARCHAR - пошта користувача, куди прийде повідомлення про оплату +- ProjectId: BINARY - унікальний код проєкту, до якого прив'язана оплата + +### Project (Проєкт) +Власне представляє собою проєкт, над яким працює команда. Має поля: + +- Id: BINARY - унікальний код +- name: VARCHAR - ім'я проєкту +- description: VARCHAR - опис проєкту +- manager: BINARY - менеджер проєкту + +### Reviews (Відгуки) +Представляє собою відгук користувача про проєкт. Має поля: + +- Id: BINARY - унікальний код +- Text: VARCHAR - текст відгуку +- Rate: INT - оцінка +- ProjectId: BINARY - унікальний код проєкту, до якого прив'язаний відгук + +### Projects_members (Учасники поточного проєкту) +Projects_members - це сутність-асоціація, яка зберігає в собі код проєкту, та учасників, які працюють над проєктом. + +### Members (Учасники) +Members - це сутність-асоціація, яка зберігає в собі сукупність учасників та їх поточних ролей. + +### User (Користувач) +Являє собою обліковий запис в якому зберігаються дані користувача. Має поля: + +- Id: BINARY - унікальний код +- Login: VARCHAR - логін користувача +- Picture: MEDIUMBLOB - фото користувача +- Password: BLOB - пароль користувача +- Email: VARCHAR - пошта користувача +- Role: VARCHAR - роль користувача + +### Roles (Ролі) +Ролі, які використовується для визначення прав користувача. Має поля: + +- Id: BINARY - унікальний код +- Name: VARCHAR - назви ролей + +### Role_grant (Права ролей) +Role_grant - це сутність-асоціація, яка зберігає сукупність прав, які має певна роль. + +### Permissions (Права) +Права, які можуть додаватися до ролі. Має поля: + +- Id: BINARY - унікальний код +- Permission: VARCHAR - право, яке надається + + +## Relational Schema + +![Db_Model](https://github.com/illiakroshka/edu_db_labs/assets/87243401/835d4983-e09e-4fb4-ae57-06e8e84ed48e) diff --git a/docs/requirements/stakeholders-needs.md b/docs/requirements/stakeholders-needs.md index 8f3361187..f7ebaff81 100644 --- a/docs/requirements/stakeholders-needs.md +++ b/docs/requirements/stakeholders-needs.md @@ -1,86 +1,775 @@ # Запити зацікавлених осіб -## Вступ +## Вступ -*[Вступ повинен містити короткий огляд всього документу.]* +У цьому документі ми зосередимося на детальному аналізі сутності та методології, процесу збору та аналізу запитів зацікавлених осіб, а також на інструментах та методиках, що використовуються в цьому процесі. -### Мета +### Мета -*[Визначення мети цієї сукупності вимог. Зазвичай такою метою є створення та впровадження - інформаційної системи відповідного призначення.]* +Даний документ створено з метою визначення та уточнення вимог, пов'язаних із розробкою та впровадженням системи управління проектами. Основна ціль полягає у проведенні аналізу вимог потенційної аудиторії, зокрема практичності, надійності, продуктивності, функціональності та експлуатаційної придатності, з метою створення високоефективної системи управління проектами. -### Контекст +### Контекст -*[Короткий опис того, з якими проектами пов'язаний цей документ, на що він впливає.]* +Цей документ відіграє надзвичайно важливу роль у процесі розробки системи та є ключовим для забезпечення ефективного спілкування між всіма сторонами, що зацікавлені в проекті. Він впливає на всі аспекти проекту, від визначення функціональних вимог до забезпечення надійності та продуктивності системи. +### Основні визначення та скорочення -### Основні визначення та скорочення +[**FURPS**](https://en.wikipedia.org/wiki/FURPS) — це абревіатура, яка використовується для опису різних аспектів вимог до програмного продукту або системи. Кожна літера **FURPS** представляє п'ять основних категорій вимог, які допомагають здійснювати комплексний аналіз та управління проектом розробки програмного забезпечення. Основні категорії **FURPS** наступні: -*[Розділ містить визначення всіх термінів та скорочень, необхідних для правильного -тлумачення вимог. Можна зробити посилання на документ, в якому поданий аналіз предметної області.]* +- **Functionality (Функціональність)**: Ця категорія визначає функціональні вимоги до програмного продукту, тобто те, що програма повинна робити. Сюди включаються функції, операції, можливості та інші аспекти, які визначають основні функції продукту. +- **Usability (Зручність використання)**: Ця категорія відноситься до того, наскільки легко програма використовується і сприймається користувачем. Вимоги до зручності включають в себе інтерфейс користувача, навігацію, дизайн та інші фактори, які впливають на враження користувача. -### Посилання +- **Reliability (Надійність)**: Ця категорія стосується надійності програмного продукту. Вимоги до надійності включають в себе стійкість до помилок, відновлення після збоїв, забезпечення даних і інші аспекти, які забезпечують безперебійну роботу системи. -*[Розділ містить повний список всіх документів, про які згадується.]* +- **Performance (Продуктивність)**: Ця категорія описує вимоги до продуктивності системи. Вимоги до продуктивності включають в себе швидкість роботи, завантаження, ефективність використання ресурсів і інші аспекти, які визначають продуктивність програмного продукту. +- **Supportability (Підтримка)**: Ця категорія описує вимоги до можливостей підтримки та розвитку програмного продукту в майбутньому. Вимоги до підтримки включають в себе сумісність, можливості розширення, документацію, навчання і підтримку користувачів. + +[**Зацікавлені сторони (Stakeholders)**](https://www.investopedia.com/terms/s/stakeholder.asp) - це особи, групи або організації, які мають інтерес у проекті розробки програмного забезпечення і можуть впливати на різні аспекти проекту. Вони грають важливу роль у визначенні вимог, контролі за розробкою та успішному впровадженні програмного продукту. + +Зацікавлені сторони можуть включати: + +- **Клієнтів**: Особи або організації, які замовляють розробку програмного продукту і мають певні вимоги і очікування щодо його функціональності та якості. + +- **Користувачів**: Люди або групи, які будуть використовувати програмний продукт і мають інтерес у зручності використання та функціональних можливостях. + +- **Менеджерів проекту**: Особи, які відповідають за планування, управління та виконання проекту розробки програмного забезпечення. + +- **Розробників**: Технічні спеціалісти, які працюють над розробкою програмного продукту. + +- **Тестувальників**: Особи, які відповідають за тестування програмного продукту і виявлення помилок. + +- **Фінансових аналітиків**: Особи, які визначають бюджет проекту та фінансовий план. + +- **Маркетингових експертів**: Особи, які вивчають ринок та конкуренцію і розробляють стратегії маркетингу. + +- **Регуляторних органів**: Органи або установи, які встановлюють правила та вимоги, яким повинен відповідати програмний продукт. + +### Посилання + +FURPS — + +Зацікавлені сторони — + +Минулий список посилань див. "[Посилання](state-of-the-art.html#посилання)" ## Короткий зміст -*[Розділ містить опис того, про що йдеться в еій частині цього документу, що залишилася. -Також тут описана структура документу.]* +1. [Вступ](#1) + - [Мета](#2) + - [Контекст](#3) + - [Основні визначення та скорочення](#4) + - [Посилання](#5) +2. [Характеристика ділових процесів](#6) +3. [Короткий огляд продукту](#7) +4. [Функціональність](#8) +5. [Практичність](#9) +6. [Надійність](#10) +7. [Продуктивність](#11) +8. [Експлуатаційна придатність](#12) + +## Характеристика ділових процесів + +Користувачами системи можуть бути: + +- Замовники - створюють та взаємодіють з проектом + +- Тімлідери - організовують командну роботу розробників, описуючи завдання для розробників та контролюючи роботу. + +- Розробники - виконують задачі. + +**---------** + +**_ID:_** SignUp + +**_НАЗВА:_** Реєстрація. + +**_УЧАСНИКИ:_** Користувач, Система. + +**_ПЕРЕДУМОВИ:_** Користувач не зареєстрований в системі. + +**_РЕЗУЛЬТАТ:_** Користувач зареєстрований в системі. + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- **SignUp_EX_UsernameExist** - Користувач з таким ім'ям вже існує. + +- **SignUp_EX_UsernameNotAllowed** - Логін Користувача недопустимий. + +- **SignUp_EX_EmailExist** - Користувач з таким email вже існує. + +- **SignUp_EX_EmailNotAllowed** - Email користувача не допустимий або не існує. + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Користувач натискає кнопку "Реєстрація". + +**2.** Система відкриває форму реєстрації. + +**3.** Користувач вводить email, пароль, логін. + +**4.** Система реєструє Користувача в системі. (SignUp_EX_UsernameExist) (SignUp_EX_UsernameNotAllowed) (SignUp_EX_EmailExist) (SignUp_EX_EmailNotAllowed) + +**5.** Система надсилає підтвердження про реєстрацію Користувача. + +**6.** Користувач отримує підтверження про реєстрацію. + +**---------** + +**_ID:_** SignIn + +**_НАЗВА:_** Авторизація. + +**_УЧАСНИКИ:_** Користувач, Система. + +**_ПЕРЕДУМОВИ:_** Користувач зареєстрований в системі. + +**_РЕЗУЛЬТАТ:_** Користувач авторизований в системі. + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- **SignIp_EX_UsernameNotExist** - Користувача з таким ім'ям не існує. + +- **SignIp_EX_UsernamePasswordNotMatch** - Логін або email і пароль не співпадають. + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Користувач натискає кнопку "Авторизуватись". + +**2.** Система відкриває форму авторизації. + +**3.** Користувач вводить email або логін і пароль. + +**4.** Система авторизує Користувача в системі. (SignIp_EX_UsernameNotExist) (SignIp_EX_UsernamePasswordNotMatch) + +**5.** Система надсилає підтвердження про авторизацію Користувача. + +**6.** Користувач отримує підтверження про авторизацію. + +**---------** + +**_ID:_** CreateProject + +**_НАЗВА:_** Створити новий проєкт + +**_УЧАСНИКИ:_** Замовник, система + +**_ПЕРЕДУМОВИ:_** + +- Замовник авторизувався у системі +- Проєкт не є створеним + +**_РЕЗУЛЬТАТ:_** Новий проєкт + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _CreateProject_EX_DuplicateProjectNameError_ - Клієнт намагається створити новий проєкт в системі, з назвою вже існуючого проєкта + +- _CreateProject_EX_ProjectLimitExceededError_ - Клієнт намагається створити новий проєкт, але вже досягнув максимальної дозволеної кількості проєктів у системі або обмеження для свого облікового запису + +- _CreateProject_EX_NetworkError_ - створення нового проєкту неможливе через тимчасові проблеми з мережею або інфраструктурою серверів. Система спробує автоматично відновити з'єднання. + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Користувач відкриває розділ з проєктами + +**2.** Користувач натискає на кнопку "Новий проєкт" + +**3.** Система відкриває форму зі створення проєкту + +**4.** Користувач вводить дані (назва,опис,залучені особи) про новий проєкт (CreateProject_EX_DuplicateProjectNameError) + +**5.** Користувач натискає на кнопку "Створити" (CreateProject_EX_NetworkError) + +**6.** Система перевіряє кількість вже створених користувачем проєктів і максимальний ліміт кількості проєктів для заданого користувача (CreateProject_EX_ProjectLimitExceededError) + +**7.** Система добавляє новостворений проєкт до списку існуючих + +**8.** Система надсилає повідомлення про успішне створення проєкту + +**---------** + +**_ID:_** DeleteProject + +**_НАЗВА:_** Видалити проєкт + +**_УЧАСНИКИ:_** Замовник, система + +**_ПЕРЕДУМОВИ:_** + +- Замовник авторизувався у системі +- Проєкт вже створений + +**_РЕЗУЛЬТАТ:_** Проєкт видалений + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _DeleteProject_EX_ConfirmationRequiredError_ - Клієнт не підтвердив своє бажання видалити проєкт + +- _DeleteProject_EX_NetworkError_ - видалення проєкту неможливе через тимчасові проблеми з мережею або інфраструктурою серверів. Система спробує автоматично відновити з'єднання. + +- _DeleteProject_EX_UnauthorizedDeletionError_ - видалення проєкту неможливе через відсутність прав доступу + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Користувач відкриває розділ з проєктами + +**2.** Користувач натискає на ім'я проєкту + +**3.** Система відкриває сторінку з проєктом + +**4.** Користувач натискає на кнопку "Налаштування проєкту" + +**5.** Система відкриває сторінку з налаштуваннями проєкту + +**6.** Користувач натискає на кнопку "Видалити цей проєкт" (DeleteProject_EX_UnauthorizedDeletionError) + +**7.** Система відкриває віконце з попередженнями, і полем для верифікації підтвердження + +**8.** Користувач вводить в поле свій нікнейм + +**9.** Користувач натискає кнопку "Підтвердити видалення проєкту" (DeleteProject_EX_ConfirmationRequiredError) + +**10.** Система видаляє проєкт зі списку існуючих () (DeleteProject_EX_NetworkError) + +**11.** Система надсилає повідомлення про успішне видалення проєкту + +**---------** + +**_ID:_** ChangeProjectStatus + +**_НАЗВА:_** Змінити статусу проекта. + +**_УЧАСНИКИ:_** Замовник, Система. + +**_ПЕРЕДУМОВИ:_** Проект існує в системі, замовник є власником проекту. + +**_РЕЗУЛЬТАТ:_** Статус проекта успішно змінений. + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- ChangeProjectStatus_EX_Unauthorized - Замовник не є власником проекту. + +- ChangeProjectStatus_EX_InvalidStatus - Спроба змінити на недопустимий статус. + +- ChangeProjectStatus_EX_ProjectNotFound - Проект не знайдений в системі, спроба зміни статусу над неправильним проектом. + +- ChangeProjectStatus_EX_InternalError - Виникла внутрішня помилка системи під час спроби зміни статусу проекта. + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Замовник входить в систему. + +**2.** Замовник обирає конкретний проект, для якого він хоче змінити статус. (ChangeProjectStatus_EX_Unauthorized) (ChangeProjectStatus_EX_ProjectNotFound) + +**3.** Замовник обирає новий статус для проекта з доступних опцій. (ChangeProjectStatus_EX_InvalidStatus) + +**4.** Замовник підтверджує зміну статусу проекта. (ChangeProjectStatus_EX_InternalError) + +**5.** Система перевіряє, чи має замовник права на зміну статусу даного проекту та чи є новий статус допустимим для зміни. + +**6.** Система змінює статус проекта на новий. + +**7.** Система автоматично надсилає повідомлення всім учасникам проекту про зміну статусу. + +**---------** + +**_ID:_** TrackDevelopmentStatus + +**_НАЗВА:_** Відстежити статус розробки. + +**_УЧАСНИКИ:_** Замовник, Система. + +**_ПЕРЕДУМОВИ:_** Проект існує в системі, замовник має доступ до інформації про статус розробки. + +**_РЕЗУЛЬТАТ:_** Замовник відстежує поточний статус розробки проекту. + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- TrackDevelopmentStatus_EX_ProjectNotFound - Проект не знайдений в системі, спроба відстеження статусу розробки над неправильним проектом. +- TrackDevelopmentStatus_EX_PermissionDenied - Замовник намагається відстежувати статус розробки проекту, на який він не має прав доступу. +- TrackDevelopmentStatus_EX_InternalError - Виникла внутрішня помилка системи під час спроби відстеження статусу розробки. + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Замовник входить в систему. + +**2.** Замовник обирає проект, для якого потрібно відстежувати статус розробки. (TrackDevelopmentStatus_EX_ProjectNotFound) (TrackDevelopmentStatus_EX_InternalError) + +**3.** Система відображає інформацію про поточний статус розробки проекту, включаючи завдання, які вже виконані і ті, що ще в розробці. (TrackDevelopmentStatus_EX_PermissionDenied) + +**4.** Замовник переглядає деталі, опис та статус завдання, відповідального розробника. + +**5.** Система відображає оновлення статусу завдань (наприклад, позначення завдання як виконане). + +**6.** Система оновлює автоматично загальний статус розробки проекту на основі змін у статусах завдань. + +**7.** Замовник перевіряє актуальний статус розробки за потреби. + +**---------** + +**_ID:_** PayServices + +**_НАЗВА:_** Оплатити послуги розробки + +**_УЧАСНИКИ:_** Замовник, система + +**_ПЕРЕДУМОВИ:_** + +- Замовник авторизувався у системі + +**_РЕЗУЛЬТАТ:_** Замовник оплатив надані йому послуги + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _PayServices_EX_NotEnoughMoney_ - Клієнт не має достатньо коштів на рахунку + +- _PayServices_EX_IncorrectBankDetails_ - Клієнт надав не правильні банківські дані + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Користувач відкриває розділ оплати + +**2.** Система підраховує сумму яку потрібно заплатити + +**3.** Система надає користувачеві сумму яку потрібно заплатити та всі необхідні дані для оплати + +**4.** Користувач натискає на кнопку "Оплата" + +**5.** Користувач вводить свої банківські дані + +**6.** Користувач натискає на кнопку "Зробити транзакцію" + +**7.** Система зв'язується з банком (PayServices_EX_IncorrectBankDetails) + +**8.** Система перевіряє дані та кошти на рахунку (PayServices_EX_NotEnoughMoney) + +**9.** Система списує кошти + +**10.** Система надсилає підтвердження про успішну оплату у виді чеку + +**---------** + +**_ID:_** LeaveReview + +**_НАЗВА:_** Залишити відгук + +**_УЧАСНИКИ:_** Замовник, система + +**_ПЕРЕДУМОВИ:_** + +- Замовник авторизувався у системі +- Проект завершений + +**_РЕЗУЛЬТАТ:_** Замовник залишив відгук про надані йому послуги + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _LeaveReview_EX_ProjectIsNotOver_ - Проект ще не завершено + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Користувач відкриває сторінку команди + +**2.** Користувач переходить в розділ "Відгуки" + +**3.** Система відкриває розділ з відгуками + +**4.** Користувач натискає на кнопку "Залишити відгук" + +**5.** Система відкриває вікно залишення відгуку + +**6.** Користувач пише відгук та оцінює роботу команди + +**7.** Користувач натискає на кнопку "Залишити відкук" + +**8.** Система зберігає відгук (LeaveReview_EX_ProjectIsNotOver) + +**9.** Система інформує користувача що відгук збережено + +**---------** + +**_ID:_** AddingDeveloper + +**_НАЗВА:_** Додати розробника + +**_УЧАСНИКИ:_** Розробник, Тімлід, система + +**_ПЕРЕДУМОВИ:_** + +- Тімлід авторизувався у системі + +**_РЕЗУЛЬТАТ:_** Розробника додано в систему + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _AddingDeveloper_EX_AlreadyOccupied_ - Розробник вже існує + +- _AddingDeveloper_EX_ErrorData_ - Дані містять помилку + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +1. Тімлід відкриває меню розробників + +2. Тімлід натискає "Додати розробника" + +3. Система відкриває меню додавання розробника + +4. Тімлід вводить дані розробника + +5. Тімлід натискає кнопку "Додати" + +6. Система перевіряє правильність даних (AddingDeveloper_EX_ErrorData) + +7. Система перевіряє дані розробника (AddingDeveloper_EX_AlreadyOccupied) + +8. Система додає розробника + +9. Система висилає дані для авторизації розробнику на пошту + +**---------** + +**_ID:_** DeleteDeveloper + +**_НАЗВА:_** Видалити розробника + +**_УЧАСНИКИ:_** Розробник, Тімлід, система + +**_ПЕРЕДУМОВИ:_** + +- Тімлід авторизувався у системі + +**_РЕЗУЛЬТАТ:_** Розробника видалено + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _DeleteDeveloper_EX_NotExist_ - Розробника не існує + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +1. Тімлід відкриває меню розробників + +2. Тімлід обирає потрібного розробника з списку + +3. Система виділяє потрібного розробника + +4. Тімлід натискає "Видалити" + +5. Система просить підтверження + +6. Тімлід натискає "Так" + +7. Система перевіряє наявість розробника (DeleteDeveloper_EX_NotExist) + +8. Система видаляє розробника + +**---------** + +**_ID:_** ChangeStatus + +**_НАЗВА:_** Змінити сатус розробки проєкту + +**_УЧАСНИКИ:_** Тімлід, система + +**_ПЕРЕДУМОВИ:_** + +- Тімлід авторизувався у системі +- Проєкт вже створено + +**_РЕЗУЛЬТАТ:_** Статус проєкту змінився + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _ChangeStatus_EX_UnexistingProject_ - Проєкта не існує + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Тімлід відкриває меню проєктів + +**2.** Тімлід натискає на кнопку "Змінити статус" + +**3.** Система пропонує можливі статуси проєкту + +**4.** Тімлід обирає потрібний статус + +**5.** Тімлід натискає кнопку "Зберегти зміни" + +**6.** Система змінює статус проєкту (ChangeStatus_EX_UnexistingProject) + +**---------** + +**_ID:_** AddTask + +**_НАЗВА:_** Додати нову задачу до проекту + +**_УЧАСНИКИ:_** Тімлід, система + +**_ПЕРЕДУМОВИ:_** + +- Тімлід авторизувався у системі +- Проєкт вже створено + +**_РЕЗУЛЬТАТ:_** Задача додана до проекту + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _AddTask_EX_AlreadyAdd_ - Задача вже існує + +- _AddTask_EX_ErrorData_ - Дані містять помилку + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Тімлід відкриває меню задач + +**2.** Тімлід натискає "Додати задачу" + +**3.** Система відкриває меню додавання задачі + +**4.** Тімлід вводить дані для задачі + +**5.** Тімлід натискає кнопку "Додати" + +**6.** Система перевіряє правильність даних (AddTask_EX_ErrorData) + +**7.** Система перевіряє дані задачі (AddTask_EX_AlreadyAdd) + +**8.** Система додає задачу + +**---------** + +**_ID:_** RemoveTask + +**_НАЗВА:_** Видалити існуючу задачу в проєкті + +**_УЧАСНИКИ:_** Тімлід, система + +**_ПЕРЕДУМОВИ:_** + +- Тімлід авторизувався у системі +- Проєкт вже створено + +**_РЕЗУЛЬТАТ:_** Задача видалена з проєкту + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _RemoveTask_EX_NotExist_ - Задачі не існує + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Тімлід відкриває меню задач + +**2.** Тімлід обирає потрібну задачу + +**3.** Тімлід натискає кнопку "Видалити" + +**4.** Система просить користувача підтвердити видалення завдання + +**5.** Тімлід натискає кнопку "Підтвердити" + +**6.** Система перевіряє наявість задачі (RemoveTask_EX_NotExist) + +**7.** Система видаляє задачу + +_Кількість сценаріїв визначається у відповідності до специфіки завдання та необхідного +рівня деталізації (зазвичай, 5-6 сценаріїв)._ + +**---------** + +**_ID:_** ChangeTaskStatus + +**_НАЗВА:_** Змінити статус завдання + +**_УЧАСНИКИ:_** Розробник, система. + +**_ПЕРЕДУМОВИ:_** + +- Розробник авторизувався у системі +- Проєкт вже створено +- Задача вже призначена + +**_РЕЗУЛЬТАТ:_** Статус задачі змінений + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _ChangeTaskStatus_EX_NotExist_ - Задачі не існує + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Розробник відкриває меню задач + +**2.** Розробник обирає потрібну задачу + +**3.** Розробник натискає кнопку "Змінити статус" + +**4.** Система просить користувача вибрати статус завдання + +**5.** Розробник натискає кнопку в залежності від статусу завдання + +**6.** Система перевіряє наявість задачі (ChangeTaskStatus_EX_NotExist) + +**7.** Система змінює стан задачі + +**---------** + +**_ID:_** SendingTaskForReview + +**_НАЗВА:_** Надіслати завдання для огляду + +**_УЧАСНИКИ:_** Розробник, система. + +**_ПЕРЕДУМОВИ:_** + +- Розробник авторизувався у системі +- Проєкт вже створено +- Задача зі статусом "Огляд коду" + +**_РЕЗУЛЬТАТ:_** Задача надіслана на огляд + +**_ВИКЛЮЧНІ СИТУАЦІЇ:_** + +- _SendingTaskForReview_EX_NotExist_ - Задачі не існує + +**_ОСНОВНИЙ СЦЕНАРІЙ:_** + +**1.** Розробник відкриває меню задач + +**2.** Розробник обирає потрібну задачу + +**3.** Розробник натискає кнопку "Відправити код на огляд" + +**4.** Система просить користувача підтвердити відправлення + +**5.** Розробник натискає кнопку підтвердження + +**6.** Система перевіряє наявість задачі (SendingTaskForReview_EX_NotExist) + +**7.** Система надсилає код на огляд + +## Короткий огляд продукту + +**_G.I.T._** - це інноваційний сервіс для ефективного керування проектами. З ним ви отримуєте зручний інтерфейс для створення, відстеження, автоматизації та успішного завершення проектів. + +**Основними користувачами нашого проекту будуть:** + +**_Замовник_** - це основний ініціатор та фінансовий спонсор проекту. Він визначає стратегічні цілі, створює та уточненює вимоги, визначає бюджет, критерії успішності проекту. + +**_Тімлід_** - відповідає за координацію всіх аспектів проекту та досягнення його цілей в рамках визначених обмежень. В його обов`язки входить: планування ресурсів, прийняття стратегічних рішень, контроль над графіком та бюджетом, комунікація з усіма учасниками проекту. Тімлід відповідає за успішне завершення проекту. + +**_Девелопер_** - це виконавець, який конкретно реалізовує завдання, визначені замовником та тімлідом. В його обов`язки входить: розробка, тестування, впровадження технічних рішень. Девелопер відповідає за технічну складову проекту та виконання завдань відповідно до вимог. + +Рамки проекту встановлють саме **_замовник_** та **_тімлід_**. + +## Функціональність + +Кожен користувач має мати індивідуальний інтерфейс, спеціально налаштований для його завдань та ролі. Цей підхід дозволяє ефективно розділити користувачів в залежності від їх функціональних обов'язків і створити автоматизовану систему, де кожен користувач отримує доступ до необхідних функцій для виконання своїх завдань. Такий індивідуальний підхід сприяє зручності та продуктивності роботи, а також допомагає забезпечити ефективну взаємодію між користувачами в рамках системи. + +### Функції інтерфейсу всіх користувачів + +Кожен користувач повинен мати змогу зареєструватися з обиранням свого типу користувача, після цього мати змогу авторизуватися. + +1.Реєстрація. + +2.Авторизація. + +### Функції інтерфейсу користувача **"Замовник"** + +Функції інтерфейсу користувача "Замовник" включають створення та керування проектами, зміну статусу, видалення проектів, доступ до контактів керівника, відстеження статусу розробки, оплату послуг та можливість залишити відгук. + +Функції: + +1.Створення проекту. + +2.Зміна статусу проекта. + +3.Зміна цілей проекта. + +4.Видалення проекта. + +5.Доступ до контактів Керівника. + +6.Відстеження статусу розробки. + +7.Оплата послуг. + +8.Залишити відгук. + +### Функції інтерфейсу користувача **"Тімлід"** + +Функції інтерфейсу користувача "Тімлід" включають додавання та видалення розробників, зміну статусу розробки, додавання завдань, зміну статусу завдань, видалення завдань та призначення розробників на конкретні завдання. + +Функції: + +1.Додати розробника. -## Характеристика ділових процесів +2.Видалити розробника. -*[В цьому розділі визначаються зовнішні фактори, що впливають на бізнес (бізнес-актори), -та внутрішні фактори (робітники), дається загальна характеристика діяльності бізнес-акторів -та робітників, яка здійснюється за допомогою бізнесу.* +3.Зміна статусу розробки. -*Дається опис бізнес-сценаріїв взаємодії бізнес-акторів, робітників і, можливо, інформаційної системи за допомогою наступної -специфікації:* +4.Додавати завдання. - -***ID:*** - -***НАЗВА:*** - -***УЧАСНИКИ:*** +5.Зміна статусу завдання. -***ПЕРЕДУМОВИ:*** +6.Видаляти завдання. -***РЕЗУЛЬТАТ:*** +7.Ставити розробників за завдання. -***ВИКЛЮЧНІ СИТУАЦІЇ:*** +### Функції інтерфейсу користувача **"Девелопер"** -***ОСНОВНИЙ СЦЕНАРІЙ:*** +Функції інтерфейсу користувача "Девелопер" включають зміна статусу завдання, доступ до вміста завдання, відправити завдання на перевірку. -*Кількість сценаріїв визначається у відповідності до специфіки завдання та необхідного -рівня деталізації (зазвичай, 5-6 сценаріїв).* +Функції: -## Короткий огляд продукту +1.Доступ до вміста завдання. -*[Визначається границя системи та категорії її користувачів. Дається загальна характеристика категорій користувачів -системи]* +2.Зміна статусу завдання. -*[Нижче йде опис FURPS:]* +3.Відправити завдання на перевірку. +## Практичність -## Функціональність +1. **Інтуїтивний інтерфейс:** + - Система повинна мати легкий і зрозумілий інтерфейс, який дозволяє користувачам швидко освоювати її функції без необхідності великої підготовки. +2. **Можливість налаштування:** + - Система повинна давати можливість налаштування під потреби конкретного проекту або команди, включаючи налаштування робочих процесів, ролей користувачів та структури завдань. +3. **Легкість і швидкість введення даних:** + - Користувачі повинні мати можливість швидко вводити та оновлювати інформацію про проект, завдання та інші параметри без зайвої затрати часу. +4. **Мобільна сумісність:** + - Система повинна бути доступною на різних платформах і пристроях, щоб користувачі могли працювати з нею в будь-якому місці та часі. +5. **Забезпечення спільної роботи:** + - Практичність системи полягає у здатності команди спільно працювати над проектами, обмінюватися інформацією та взаємодіяти в режимі реального часу. +6. **Можливість аналізу та звітності:** + - Система повинна надавати інструменти для аналізу продвиження проектів та створення звітів, що допоможуть у прийнятті кращих управлінських рішень. +7. **Інтеграція з іншими інструментами:** + - Система повинна легко інтегруватися з іншими популярними інструментами, такими як електронна пошта, календарі, системи спільної роботи та інші. +8. **Надійність і безпека:** + - Система повинна забезпечувати надійний доступ до даних та зберігання конфіденційної інформації. +9. **Масштабованість:** + - Система повинна бути придатною для використання в різних проектах та компаніях, будучи здатною масштабуватися з ростом потреб. -*[Functionality (функциональні вимоги)]* +## Надійність -## Практичність +Основними вимогами до надійності системи є: -*[Usability (вимоги до зручності роботи)]* +- Здатність до безперебійної роботи в будь-яких умовах. +- Можливість обробки запитів від великої кількості користувачів одночасно. +- Забезпечення резервного копіювання баз даних для уникнення втрати інформації. +- Можливість відновлення системи в разі виникнення аварійних ситуацій або втрати даних. +- Захист від вторгнень і вірусів, щоб уникнути можливих загроз для безпеки даних і функціональності системи. -## Надійність +## Продуктивність -*[Reliability (вимоги до надійності)]* +Вимоги стосовно продуктивності: -## Продуктивність +- Швидкість та миттева реакція на запити користувачів (добре виміряна бізнес логіка системи та прорахована кількість потоків та процесів під систему) +- Висока пропускна здатність (одинаково ефективно працювати з великою кількістю користувачів) +- Ефективне використання ресурсів (пам'ять, мережеві з'єднання) -*[Performance (вимоги до продуктивності)]* +## Експлуатаційна придатність -## Експлуатаційна придатність +Вимого стосовно експлуатаційної придатності -*[Supportability (вимоги до підтримки)]* +- Масштабованість (система повинна бути легкомаштабована для нарощення нового функціоналу) +- Захищеність (всі дані повинні бути захищенні, та системи по роботі з ними протестовані) +- Надійність (система має гарантувати незалежну і стабільну роботу незалежно від зовнішніх обставин) +- Легка оптимізація (здатність до постійного рефакторингу і розширення кодової бази) diff --git a/docs/requirements/state-of-the-art.md b/docs/requirements/state-of-the-art.md index 48a056ff6..0da7273cc 100644 --- a/docs/requirements/state-of-the-art.md +++ b/docs/requirements/state-of-the-art.md @@ -1,42 +1,533 @@ # Аналіз предметної області ## Вступ +Сучасний світ характеризується постійним ростом обсягу і складності проєктів у різних галузях діяльності. Однак успішне управління цими проєктами залишається важливим завданням для багатьох організацій і підприємств. Для такого у нагоді стає Система Керування Проєктами (СКП) - набір методів, інструментів і підходів, спрямованих на досягнення поставлених цілей проєкту вчасно та ефективнл. -*[Вступ повинен містити короткий огляд всього документу.]* - - ***vhgdvdc dhcbjhbcds cdsbcdshgc b cbhd cgds cg d*** +Цей проект присвячений саме створенння Системи Керування Проєктами для баз данних. База даних є важливою складовою будь-якої СКП, оскільки вона дозволяє збирати, зберігати, аналізувати та надавати доступ до інформації, необхідної для прийняття управлінських рішень на кожному етапі проєкту. - gdgdgf: - - jdsjsd - - ncjdsnc - - mncjdcnsdknc +У цьому проекті наша команда докладе зусиль для створення потужної та ефективної системи. Ми розглянемо основні принципи та підходи до проектного управління, розгорнемо ключові вимоги до бази даних, що використовується в СКП, та розглянемо інструменти та технології, які можуть бути використані для розробки такої бази даних. Ми також проаналізуємо важливість інтеграції бази даних із іншими системами та факторами, що впливають на її ефективність. - sbhcjhsdcdshc +Запрошуємо вас подальше ознайомлення з нашим проектом та спільну роботу над вдосконаленням систем керування проєктами через вдосконалення баз даних. ## Основні визначення -*[Розділ містить визначення термінів та скорочень, які використовуються при аналізі предметної області.]* +[**Система керування проєктами**](https://uk.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%96%D0%BD%D0%BD%D1%8F_%D0%BF%D1%80%D0%BE%D1%94%D0%BA%D1%82%D0%B0%D0%BC%D0%B8) — визначення для комплексного програмного забезпечення, що охоплює програми для планування завдань, складання розпису, контролю ціни і керування бюджетом, розподілу ресурсів, спільної роботи, спілкування, швидкого керування , документування та адміністрування системи, яке використовуються спільно для керування великими проєктами. + +[**Roadmap (Технологічна дорожня карта)**](https://uk.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D1%96%D1%87%D0%BD%D0%B0_%D0%B4%D0%BE%D1%80%D0%BE%D0%B6%D0%BD%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0) — коротко- або довгостроковий план випуску виробником будь-якого продукту. Найчастіше це нова версія або розвиток уже відомого продукту, змін у якому чекають споживачі. + +[**Діаграма Ґанта**](https://uk.wikipedia.org/wiki/%D0%94%D1%96%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%B0_%D2%90%D0%B0%D0%BD%D1%82%D0%B0) — діаграма, яка використовується для ілюстрації плану, графіка робіт за будь-яким проєктом. Є одним з засобів планування та управління проєктами. + +[**UML (англ. Unified Modeling Language)**](https://uk.wikipedia.org/wiki/Unified_Modeling_Language) — уніфікована мова моделювання, використовується у парадигмі об'єктно-орієнтованого програмування. Є невід'ємною частиною уніфікованого процесу розробки програмного забезпечення. UML є мовою широкого профілю, це відкритий стандарт, що використовує графічні позначення для створення абстрактної моделі системи, яка називається UML-моделлю. UML був створений для визначення, візуалізації, проєктування й документування в основному програмних систем. UML не є мовою програмування, але в засобах виконання UML-моделей як інтерпретованого коду можлива кодогенерація. + +[**Проєкт**](https://uk.wikipedia.org/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%96%D0%BD%D0%BD%D1%8F_%D0%BF%D1%80%D0%BE%D1%94%D0%BA%D1%82%D0%B0%D0%BC%D0%B8) — це обмежений часовими рамками процес, що має визначений початок та кінець, зазвичай обмежений датою, але також може обмежуватися фінансуванням або досягненням результатів, який здійснюється для реалізації унікальних цілей та завдань, зазвичай, щоб призвести до вигідних змін або створення доданої вартості. + +[**Менеджер проєкту**](https://uk.wikipedia.org/wiki/%D0%9C%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80_%D0%BF%D1%80%D0%BE%D1%94%D0%BA%D1%82%D1%83) — це фахівець у сфері управління проєктами. Менеджер проєкту може бути відповідальним за планування, виконання та завершення будь-якого проєкту, а також в будь-яких дотичних операціях, що мають визначений початок та кінець. Проєктний менеджер є першою точкою контакту стосовно будь-яких проблем чи випадків, які ескалюються керівниками різноманітних відділень у організації, перед тим як бути переадресованими до вищих щаблів керівництва. + +[**Замовник**](https://uk.wikipedia.org/wiki/%D0%97%D0%B0%D0%BC%D0%BE%D0%B2%D0%BD%D0%B8%D0%BA) — особа або організація, яка замовляє та фінансує проект. + +[**План проекту**](https://blog.ganttpro.com/ru/plan-proekta/) — документ, який визначає цілі, завдання, ресурси, розклад та інші параметри проекту. + +[**Методологія управління проєктом**](https://worksection.com/ua/blog/benefits-of-project-management-methodology.html) — система, яка дозволяє зменшити ризики, оптимізувати зусилля працівників, уникнути дублювання функцій та вивести на новий рівень взаєморозуміння у команді. Головні складові методології — принципи, методи та правила роботи над проєктом. + +[**Тестування**](https://uk.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F) — процес валідації і верифікації програмного продукту для впевненняся в його коректності і відповідності вимогам. + +[**Scrum**](https://uk.wikipedia.org/wiki/%D0%A1%D0%BA%D1%80%D0%B0%D0%BC) — це популярна Agile-методологія, яка використовується для розробки програмного забезпечення та інших проектів. Scrum включає в себе короткі двотижневі ітерації (спринти) та регулярні зустрічі для планування і відстеження прогресу. + +[**Інтеграція**](https://uk.wikipedia.org/wiki/%D0%86%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D1%96%D1%8F) — процес об'єднання різних компонентів або модулів програмного продукту в єдину систему. + +[**Гнучка розробка програмного забезпечення (AGILE)**](https://uk.wikipedia.org/wiki/%D0%93%D0%BD%D1%83%D1%87%D0%BA%D0%B0_%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B1%D0%B5%D0%B7%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%BD%D1%8F) — клас методологій розробки програмного забезпечення, що базується на ітеративній розробці, в якій вимоги та розв'язки еволюціонують через співпрацю між багатофункціональними командами здатними до самоорганізації. Гнучка розробка — засіб для підвищення продуктивності розробників програмного забезпечення. + +[**Waterfall**](https://uk.wikipedia.org/wiki/%D0%92%D0%BE%D0%B4%D0%BE%D1%81%D0%BF%D0%B0%D0%B4%D0%BD%D0%B0_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C) — це традиційний підхід до управління проектами, в якому проект розбивається на послідовні етапи, і кожен етап завершується перед переходом до наступного. Він часто використовується в проектах з визначеними вимогами і низьким рівнем змін. + +[**PRINCE2 (Проект у Контрольованих Умовах, версія 2)**](https://uk.wikipedia.org/wiki/PRINCE2) — ця методологія розроблена для управління проектами в області інженерії, інформаційних технологій і бізнесу. PRINCE2 надає структурований підхід до управління проектами з численними документами та процесами. + +[**Спринт**](https://www.atlassian.com/ru/agile/scrum/sprints) — це короткий інтервал часу, протягом якого scrum-команда виконує заданий обсяг роботи. Спринти лежать в основі методологій scrum та agile. + +[**Kanban**](https://uk.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BD%D0%B1%D0%B0%D0%BD) — це система для контролю логістичного ланцюга з точки зору виробництва, але не система інвентаризації. Канбан було розроблено Таїті Оно, в Toyota, з метою досягнення та підтримки високого рівня виробництва. Kanban — це один із методів досягнення принципу Кайдзен («Саме вчасно»). + +[**Аналіз вартостей**](https://buklib.net/books/28422/) — це метод контролінгу, що полягає в дослідженні функціональних характеристик продукції, яка виробляється, на предмет еквівалентності їх вартості та корисності. + +[**Цикл життя проекту**](https://buklib.net/books/34069/) — проміжок часу між моментом появи проекту та момен­том його ліквідації. + +[**Система контролю версій**](https://git-scm.com/book/uk/v2/%D0%92%D1%81%D1%82%D1%83%D0%BF-%D0%9F%D1%80%D0%BE-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%83-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8E-%D0%B2%D0%B5%D1%80%D1%81%D1%96%D0%B9) — це система, що записує зміни у файл або набір файлів протягом деякого часу, так що ви зможете повернутися до певної версії пізнише. + +[**Мінімально життєздатний продукт (англ. Minimum viable product — MVP)**](https://uk.wikipedia.org/wiki/%D0%9C%D1%96%D0%BD%D1%96%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE_%D0%B6%D0%B8%D1%82%D1%82%D1%94%D0%B7%D0%B4%D0%B0%D1%82%D0%BD%D0%B8%D0%B9_%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82) — продукт з мінімальним функціоналом, який можна дати користувачам для використання. Використовується для тестування ідей у розробці програм з мінімальними затратами ресурсів. Зазвичай реалізується шляхом вдалого планування релізів, коли у перший реліз входять лише основні функції (або одна найважливіша), що дає можливість користувачам уже почати працювати, не очікуючи остаточної версії і які потім можуть надати зворотній зв'язок для подальшого розвитку продукту. + +[**Реліз**](https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7) — кінцева стадія розробки програмного забезпечення. На даному етапі видавець визнає ПЗ стабільним і вносить до нього лише необхідні виправлення, або не змінює зовсім. ## Підходи та способи вирішення завдання -*[Розділ містить опис підходів, моделей та способів вирішення завдання.]* +### Задачі, які вирішує системне керування проектів: + +- визначення мети проекту та проведення його обґрунтування; +- створення структури проекту (підцілі, основні етапи роботи, які потрібно виконати); +- визначення необхідних обсягів та джерел фінансування; +- підбір команди виконавців, підготовка та укладання контрактів із сторонніми виконавцями; +- визначення термінів виконання проекту: +- складання графіка його реалізації: +- розрахунок необхідних проекту матеріальних ресурсів, укладання контрактів із постачальниками; +- розрахунок кошторису та бюджету проекту: +- планування та облік ризиків; +- забезпечення контролю над ходом виконання проекту. + +### Підходи та способи вирішення завдань: + +- SWOT-аналіз +- Визначення цілей SMART +- Метод робочого розкладу (Work Breakdown Structure, WBS) +- Кількісна оцінка обсягів +- Фінансовий аналіз +- Оцінка навичок і досвіду +- Методи керування строками(Time Management) +- Використання KPI (Key Performance Indicators) +- Системи комунікацій +- Спільні зустрічі і звітності +- Зміна контролю +- Заплановані зміни та надзвичайні ситуації +- Стейкхолдер-аналіз +- Комунікація зі стейкхолдерами +- План якості +- Контроль якості продукту +- Оптимізація використання ресурсів +- Застосування відгуків інших проектів +- Навчання та розвиток персоналу +- Будівництво внутрішнього досвіду +- Використання проектних методологій + +#### SWOT-аналіз + +Один із найпоширеніших аналітичних методів, який дозволяє в комплексі оцінити сильні й слабкі сторони компанії, а також можливості й загрози, що впливають на неї. + +Матриця SWOT: + +S (strengths) - сильні сторони. Характеристики бізнесу, які вирізняють його на фоні конкурентів + +W (weaknesses) — слабкі сторони. Ознаки, які роблять компанію вразливою на ринку. + +O (opportunities) — можливості. Їх компанія може використовувати для розвитку свого бізнесу. + +T (threats) — загрози. Вони можуть завдати компанії збитків. + +#### Визначення цілей SMART + +Типова постановка мети по SMART передбачає виконання певних завдань по пунктам. Вони зашифровані в самій абревіатурі назви цієї методики. + +SMART: + +S – Specific (конкретика); + +M – Measurable (вимірність); + +A – Achievable (досяжність); + +R – Realistic (реалістичність, значимість); + +T – Timed (часовий відрізок). + +На підставі цих пунктів і буде будуватися реальна постановка цілей по смарт методикою. Саме це і визначає ефективність будь-яких дій. + +#### Метод робочого розкладу (Work Breakdown Structure, WBS) + +В управлінні проектами та системній інженерії - це орієнтована на результат розбивка проекту на менші компоненти. Структура розбиття робіт є ключовим результатом проекту, який організовує роботу команди на керовані частини. + +#### Кількісна оцінка обсягів + +Визначення кількісних параметрів завдань для розрахунку ресурсів. + +#### Фінансовий аналіз + +Має на меті оцінку інвестицій з погляду окремо взятої компанії, що планує одержання конкретних фінансових результатів від очікуваного вкладення засобів. Крім визначення прибутковості проекту, задачею фінансового аналізу є складання фінансових планів, що визначають потреби в капіталі, виявлення джерел їхнього покриття, аналіз грошових потоків, а також оцінка проекту з погляду ліквідності, ефективності, фінансового ризику. + +#### Оцінка навичок і досвіду + +Відбір команди на основі їхньої компетентності та досвіду. + +#### Методи керування (Time Management) + +Допомагають визначити, як ефективно розподілити час та ресурси для виконання завдань проекту (використання критичного шляху, графіків Gantt, PERT-аналізу.) + +#### Критичний шлях (Critical Path): + +Це послідовність завдань в проекті, які не мають бути затримані, щоб проект закінчився вчасно. Інакше кажучи, це найдовший шлях в проекті, який визначає мінімальний час для завершення проекту. +Як використовувати: Під час планування проекту важливо визначити всі завдання та їх залежності, а потім знайти критичний шлях. Завдання на критичному шляху потребують особливої уваги та контролю, оскільки будь-яка затримка в них може вплинути на завершення проекту вчасно. + +#### Графіки Gantt (Gantt Charts): + +Це візуальне представлення завдань проекту на часовій лінії. Кожне завдання представлене як смуга на горизонтальній вісі, іншім словами, це проста діаграма, що показує, коли кожне завдання повинно бути виконано. +Як використовувати: Графіки Gantt допомагають візуалізувати послідовність та тривалість завдань, а також ідентифікувати критичний шлях. Вони дозволяють керівникам проекту та командам бачити весь проект і зручно контролювати та планувати роботу. + +#### PERT-аналіз (Program Evaluation and Review Technique): + +Це метод оцінки тривалості завдань, який враховує не тільки найкращий, але і найгірший сценарій завершення завдання. Він використовує три часові оцінки для кожного завдання: оптимістичний, песимістичний та найбільш ймовірний. +Як використовувати: PERT-аналіз допомагає краще оцінити ризики та невизначеність, пов'язану з тривалістю завдань. Він може бути використаний для обчислення середнього часу завершення завдання та визначення ймовірності виконання завдання в строк. + +#### Використання KPI (Key Performance Indicators) + +Це необхідний інструмент для визначення слабких та сильних місць компанії. Він допомагає визначити, які процеси потрібно вдосконалити, визначити цілі для бренду та виявити ефективні шляхи їх досягнення. + +#### Системи комунікацій + +Використання спеціалізованих інструментів для спільної роботи, таких як Slack, Microsoft Teams, або Trello + +#### Спільні зустрічі і звітності + +Регулярні зустрічі команди та звітність щодо прогресу проекту. + +#### Зміна контролю + +Визначення процесу управління змінами та оцінка їх впливу на проект. + + +#### Заплановані зміни та надзвичайні ситуації + +Розробка плану для передбачуваних та непередбачуваних змін. + +#### Стейкхолдер-аналіз + +Визначення та залучення всіх зацікавлених сторін у процес проекту. + +#### Комунікація зі стейкхолдерами + +Забезпечення інформування стейкхолдерів про прогрес та важливі події. + +#### План якості + +Розробка плану якості та стандартів для проекту. + +#### Контроль якості продукту + +Проведення тестів, рецензій та аудитів для забезпечення відповідності продукту встановленим стандартам. + +#### Оптимізація використання ресурсів + +Визначення оптимального використання людських, фінансових та матеріальних ресурсів. + +#### Застосування відгуків інших проектів + +Використання досвіду попередніх проектів для уникнення помилок. + +#### Навчання та розвиток персоналу + +Забезпечення можливостей для навчання та професійного зростання учасників проекту. + +#### Будівництво внутрішнього досвіду + +Збільшення кваліфікації команди через внутрішній обмін знань. + +#### Використання проектних методологій: + +Для визначення структури та послідовності етапів. + +#### Приклади: + +#### Waterfall (водоспад, каскадна методологія) + +Waterfall - традиційна, найпоширеніша та логічна методологія управління проєктами. Водоспадна модель передбачає послідовне проходження процесу, розбитого на стадії або етапи. Зазвичай її застосовують до проєктів, які можуть бути поділені на послідовні логічні частини. До того ж жоден етап не може бути виконаний раніше за попередній. Логіку такого проєкту легко зрозуміти та описати. + +#### Основні принципи +- Послідовність етапів: Проект розробляється послідовно, кожен етап починається після завершення попереднього. +- Фіксовані вимоги: Вимоги визначаються на початку проекту і мають бути стабільними протягом усього процесу. + +#### Ключові особливості +- Структурованість: Проект поділяється на добре визначені фази і етапи, що полегшує керування та оцінку прогресу. +- Чітке документування: Кожен етап супроводжується докладною документацією. + +#### Переваги Waterfall: + +- Зрозуміла та проста логіка. +- Стабільність завдань. +- Реальна оцінка вартості та строків закінчення проєкту. + +#### Недоліки Waterfall: + +- Позбавлений гнучкості процес. +- Неможливість коригувати окремі кроки для отримання ліпшого результату. +- Може постраждати якість виконання проєкту у разі дефіциту ресурсів. + +![Схема Waterfall](https://cdn.technologyadvice.com/wp-content/uploads/2020/09/AdobeStock_281742235.jpeg) + +#### Agile + +Agile сьогодні надзвичайно популярний метод управління проєктами. Це досить гнучка система управління, характерними ознаками якої є надання кінцевого продукту на кожному етапі роботи та незрозумілий фінал проєкту. + +#### Основні принципи Agile: + +- Поділ проєкту на короткі цикли (ітерації). +- Замовник отримує певний продукт наприкінці кожного ітерації. +- Широка сфера застосування, особливо в IT. + +#### Ключові особливості Agile: + +- Етапи можуть не йти послідовно, а відбуватися паралельно або в різному порядку. +- На кожному етапі реалізації проєкту його продуктом можна користуватися. +- Етапи називаються спринтами і мають строки виконання. + +#### Переваги Agile: + +- Високий рівень взаємодії між членами команди проєкту. +- Швидкий результат та гнучкість. + +#### Недоліки Agile: + +- Може перетворити проєкт на каскад постійних і безрезультатних змін. +- Залежність проєкту від рівня кваліфікації та досвіду команди. +- Важко прорахувати остаточну вартість проєкту. + +![Схема Agile](https://www.krasamo.com/wp-content/uploads/agile-01-scaled.jpeg) + +#### PRINCE2 (Projects IN Controlled Environments) + +PRINCE2 (Projects IN Controlled Environments) - це структурована система управління проектами, яка надає акцент на організацію і контроль. Вона розбиває проект на фази і етапи, кожна з яких має свої процеси та контрольні точки. PRINCE2 ставить фокус на визначенні бізнес-цілей та докладній документації. Вона дозволяє забезпечити структурованість та контроль у проектах. + +#### Основні принципи + +- Організованість: Структурована система для керування проектами з акцентом на організацію і контроль. +- Фази і процеси: Проект розбивається на фази, кожна з яких має свої процеси та контрольні точки. + +#### Ключові особливості +- Фокус на бізнес-цілях: Визначення бізнес-цілей і виправданості проекту перед початком роботи. +- Документація: Значний акцент на документації, що дозволяє забезпечити структурованість та контроль. + +#### Переваги +- Висока структурованість і контроль над проектом. +- Забезпечує зрозумілість завдань для всіх учасників. + +#### Недоліки +- Може бути занадто важким і бюрократичним для менших проектів. +- Зазначена структурованість може призвести до обмежень у відгуках на зміни. + +![Схема PRINCE2](https://media.licdn.com/dms/image/D4D12AQG1ImbTcTb2YA/article-cover_image-shrink_600_2000/0/1687816474080?e=2147483647&v=beta&t=xG46GAn2U45TgjqVuKbQSCPFID3tMdEVy1d9oZR6BwI) + +#### Lean Project Management + +Lean Project Management - зосереджується на реалізації виробничого проекту з більшою цінністю та меншими відходами. Це досягається шляхом систематичного усунення відходів у потоці створення цінності процесу економного виробництва. Щоб працювати, економічне управління проектами спирається на постійне вдосконалення. + +#### Основні принципи + +- Відсутність відходів: Максимізація ефективності шляхом усунення непродуктивних етапів та процесів. +- Визначення цінності для клієнта: Кожен етап проекту має додавати цінність для клієнта. + +#### Ключові особливості + +- Pull-процеси: Робота виникає від запитів клієнта, а не від надмірної виробництва. +- Kanban: Використовується дошка з завданнями для візуалізації процесу та збалансовування навантаження. + +#### Переваги +- Максимізація використання ресурсів. +- Зменшення втрат часу та ресурсів. +- Акцент на цінності для клієнта. + +#### Недоліки +- Може вимагати значних змін у внутрішній культурі організації. +- Важкість впровадження в окремих сферах. + +![Схема Lean](https://cdn.sketchbubble.com/pub/media/catalog/product/optimized1/7/4/74ee6d1b6222545b259c3ffd3aa5dfdedc45af8955a8218ebb9121eaf2a1ffab/lean-project-management-slide1.png) + +#### Методологія Kaizen + +Застосування принципів постійного вдосконалення для усунення недоліків та оптимізації процесів проекту. + +#### Основні принципи Kaizen: + +- Гнучкість і адаптивність. +- Постійне вдосконалення. +- Широка сфера застосування. +- Емпіричний підхід. +- Документування і аналіз даних. + +#### Ключові особливості Kaizen: + +- Етапи можуть не йти послідовно, а відбуватися паралельно або в різному порядку. +- На кожному етапі реалізації проєкту його продуктом можна користуватися. +- Етапи називаються спринтами і мають строки виконання. +- Заохочення співпрацы з постачальниками та клієнтами. + +#### Переваги Kaizen: + +- Kaizen стимулює постійне вдосконалення на всіх рівнях організації. +- Всі співробітники залучені до процесу, це сприяє покращенню комунікації та співпраці всередині організації. +- Можна ідентифікувати і ліквідувати марнотратні процеси та оптимізувати робочі процеси, що дозволяє знизити витрати. +- Поліпшення якості продукції або послуг, що веде до більш задоволених клієнтів і покращеного репутації бренду. +- Kaizen дозволяє організації швидко реагувати на зміни в умовах ринку та внутрішніх факторів. + +#### Недоліки Kaizen: + +- Потребує часу +- Вимагає інвестицій в навчання персоналу, внутрішній розвиток та контроль. +- Не всі організації можуть легко впровадити системний підхід, який потрібен для успішної реалізації Kaizen. +- Якщо не встановити чіткі пріоритети, організація може розпочати багато проектів Kaizen, але не завершити жодного з них. + +![Схема Kaizen](https://img.freepik.com/premium-vector/kaizen-steps-for-business-activities-that-continuously-improve-all-functions_518018-414.jpg?w=2000) ## Порівняльна характеристика існуючих засобів вирішення завдання -*[Розділ містить опис існуючих програм, інформаційних систем, сервісів, тощо, призначених для вирішення -завдання. Дається порівняльна характеристика властивостей FURPS:* -- *Functionality (функциональні вимоги)* -- *Usability (вимоги до зручності роботи)* -- *Reliability (вимоги до надійності)* -- *Performance (вимоги до продуктивності)* -- *Supportability (вимоги до підтримки)* +### [GitHub Projects](https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects) + +**GitHub Projects** - це інструмент для керування проектами (project management tool), що надається платформою GitHub для спрощення організації та відстеження робіт над програмними проектами. Він дозволяє створювати список завдань (task list), задач (issues) та інших елементів проекту, які можуть бути організовані у вигляді дошки (board), колонок (columns) та карток (cards). Функціонал GitHub Projects включає в себе можливість призначати завдання користувачам, встановлювати терміни виконання, відстежувати прогрес роботи, створювати мілістоуни (milestones) для досягнення цілей проекту, а також візуалізувати статистику та інші аспекти роботи над проектом за допомогою графіків (charts) та звітів (reports). + +### [Microsoft Project](https://www.microsoft.com/en/microsoft-365/project/project-management-software) + +**Microsoft Project** - це програмне забезпечення для управління проектами, розроблене компанією Microsoft. Воно надає інструменти для планування, виконання, моніторингу та управління проектами різної складності і масштабу. Microsoft Project дозволяє проектним менеджерам та командам ефективно спланувати роботу, розподілити завдання, визначити терміни та ресурси, вести контроль за виконанням завдань, створювати графіки Ганта, аналізувати ресурсне навантаження та звітувати про стан проектів. + +### [Wrike](https://www.wrike.com/vad/) + +**Wrike** - це хмарна платформа для управління проектами та спільної роботи, яка призначена для організації завдань, спільної роботи над проектами, планування ресурсів і ведення звітності. Wrike дозволяє командам і організаціям ефективно керувати робочими процесами, створювати завдання, розподіляти їх, встановлювати терміни виконання, ведення календарів та графіків Ганта, а також використовувати інструменти для спільної роботи, обміну інформацією та комунікації в реальному часі. +Основні функції і можливості Wrike включають у себе створення завдань та проектів, розподіл ролей та відповідальностей, можливість встановлення термінів та пріоритетів, створення звітів і графіків Ганта, інтеграцію з іншими інструментами, такими як електронна пошта, календарі, сервіси обміну повідомленнями та багато іншого. + +### [ClickUp](https://clickup.com/) + +**ClickUp** - це хмарна платформа для управління завданнями, проектами і робочими процесами, призначена для полегшення спільної роботи та підвищення продуктивності в організаціях різних розмірів. ClickUp дозволяє користувачам створювати завдання, проекти та робочі потоки, встановлювати пріоритети, дедлайни та нагадування, а також відстежувати виконання завдань і проектів. Платформа також надає засоби для спільної комунікації, обміну файлами, коментування завдань та проектів, а також ведення документації і аналізу продуктивності. + +### [TeamWork](https://www.teamwork.com/) + +**Teamwork** - це хмарна платформа для управління проектами і спільної роботи, яка дозволяє організаціям і командам планувати, виконувати, відстежувати та спільно працювати над завданнями і проектами в онлайн-середовищі. Teamwork надає інструменти для створення завдань, розподілу ролей , встановлення термінів і пріоритетів, а також можливість ведення комунікації, спільного обговорення завдань і обміну ресурсами та інформацією. + +### [Asana](https://asana.com/) - *(у вигляді таблиці).]* +**Asana** - це хмарна платформа для управління проектами та завданнями, призначена для організацій та команд для спрощення планування, виконання, відстеження та спільної роботи над завданнями і проектами. Asana надає засоби для створення завдань, призначення відповідальних осіб, встановлення термінів і пріоритетів, а також можливість комунікувати, обговорювати завдання та спільно працювати над ними в реальному часі. + +### [Jira](https://www.atlassian.com/software/jira) + +**Jira** - це популярний інструмент для управління проектами та задачами, розроблений компанією Atlassian. Він призначений для планування, виконання, відстеження та спільної роботи над проектами і завданнями в реальному часі. Jira особливо популярний серед розробників програмного забезпечення та команд, які використовують методології Agile, такі як Scrum або Kanban, для управління своїми проектами. +Основні можливості Jira включають створення задач та проектів, надання ролей , встановлення термінів і пріоритетів, ведення комунікації та обмін інформацією, створення звітів і графіків для візуального відстеження прогресу проектів, інтеграцію з іншими інструментами розробки програмного забезпечення, такими як GitHub або Bitbucket, а також можливість налаштування робочих потоків для адаптації під конкретні потреби команди. + +### [Trello](https://trello.com/) + +**Trello** - це онлайн-інструмент для управління завданнями і проектами, розроблений компанією Atlassian. Він базується на концепції дошки (board), на якій користувачі можуть створювати і організовувати завдання за допомогою карток (cards) і списків (lists). Trello призначений для спрощення планування роботи, відстеження прогресу та спільної роботи над завданнями в реальному часі. +Основні можливості Trello включають створення дошок для різних проектів чи завдань, створення карток для представлення конкретних завдань або ідей, організацію карток у списки для логічної групування, призначення відповідальних осіб, встановлення дедлайнів, додавання коментарів, прикріплення файлів, інтеграцію з іншими інструментами, такими як Google Drive, Dropbox, Slack, і багато іншого. + +### [Basecamp](https://basecamp.com/) + +**Basecamp** - це веб-платформа для спільної роботи та управління проектами, розроблена компанією Basecamp. Вона призначена для організації комунікації, спільної роботи над завданнями і проектами, а також ведення проектної документації в одному централізованому місці. Основні можливості Basecamp включають створення проектів та завдань, можливість призначення відповідальних осіб і встановлення термінів, обмін повідомленнями в режимі реального часу, створення списків завдань, обговорення завдань і проектів у відповідних обговореннях, завантаження та обмін файлами, створення заміток та календарів подій. Basecamp також надає інструменти для збереження контактів та ведення спільних проектних заміток. + +### [LiquidPlanner](https://www.liquidplanner.com/) + +**LiquidPlanner** - це онлайн-платформа для управління проектами і ресурсами, спеціалізована на роботі з проектами, що мають змінні, нестабільні терміни та потребують гнучкості у плануванні. LiquidPlanner допомагає організаціям та командам створювати реалістичні графіки проектів, прогнозувати та враховувати зміни у завданнях і ресурсах, а також відстежувати прогрес та контролювати бюджети. +LiquidPlanner спрямований на оптимізацію управління проектами, забезпечення точності у плануванні і відстеженні завдань, що робить його особливо корисним для організацій і команд, які працюють над проектами зі змінними часовими рамками та потребують гнучкого підходу до управління ресурсами і завданнями. + +## FURPS + +**Functionality** - функціональні вимоги. + +**Usability** - вимоги до зручності роботи. + +**Reliability** - вимоги до надійності. + +**Performance** - Вимоги до продуктивності. + +**Supportability** - Вимоги до підтримки. + +- 🟢 - Реалізовано у повній мірі
+- 🔵 - Реалізовано у повній мірі, лише у платній версії
+- 🟣 - Реалізовано неповністю
+- 🟡 - Реалізовано неповністю, лише у платній версії
+- 🟠 - Реалізовано мінімально
+- 🔴 - Немає
+ +| | | **GitHub Projects** | **Microsoft Project** | **Wrike** | **ClickUp** | **TeamWork** | **Asana** | **Jira** | **Trello** | **Basecamp** | **LiquidPlanner** | **Наш проект** | +| ------------------ | :------------------------------------------------- | :-----------------: | :-------------------: | :-------: | :---------: | :----------: | :-------: | :------: | :--------: | :----------: | :---------------: | :------------: | +| **Functionality** | | | | | | | | | | | | | +| | Підтримка збірки, тестування, розгортання | 🔴 | 🔴 | 🔴 | 🟢 | 🔵 | 🟢 | 🟢 | 🔴 | 🟢 | 🟣 | 🔴 | +| | Здатність працювати з різними мовами програмування | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟣 | 🟣 | 🟢 | +| | Можливість інтеграції з сервісами і інструментами. | 🟣 | 🟣 | 🟢 | 🟣 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🔴 | +| | Розподіл робочих завдань | 🟢 | 🟢 | 🟢 | 🟢 | 🔵 | 🟢 | 🟢 | 🟢 | 🔴 | 🟡 | 🟢 | +| | Візуальний інтерфейс | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | +| | Інтеграція з сповіщеннями (email, comment) | 🟢 | 🟣 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | +| | Запит на зміну коду (Push) Запит на злиття (Pull) | 🟢 | 🟢 | 🔴 | 🟣 | 🟢 | 🟡 | 🟡 | 🔴 | 🟣 | 🔴 | 🟢 | +| | Мобільна версія | 🟣 | 🔴 | 🟢 | 🔵 | 🟢 | 🟢 | 🟢 | 🟢 | 🔴 | 🔵 | 🔴 | +| **Usability** | | | | | | | | | | | | | +| | Інтуїтивний і простий інтерфейс | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | +| | Документація та приклади | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟡 | 🟡 | 🟢 | 🟣 | 🟢 | 🟢 | +| | Відстеження стану робіт | 🟢 | 🟢 | 🟢 | 🟢 | 🔵 | 🟢 | 🟢 | 🟣 | 🟣 | 🟢 | 🟢 | +| | Підтримка різних мов | 🔴 | 🟢 | 🟢 | 🟢 | 🟢 | 🟣 | 🟡 | 🟡 | 🔴 | 🟢 | 🔴 | +| | Кастомний інтерфейс | 🔴 | 🟢 | 🟢 | 🟢 | 🔵 | 🟣 | 🟡 | 🟢 | 🔴 | 🟡 | 🔴 | +| **Reliability** | | | | | | | | | | | | | +| | Стійкість до збоїв | 🟢 | 🟢 | 🟢 | 🟢 | 🔴 | 🟣 | 🟡 | 🟢 | 🔴 | 🟢 | 🔴 | +| | Резервне копіювання | 🟢 | 🔴 | 🟢 | 🔵 | 🟢 | 🟣 | 🟡 | 🟢 | 🔴 | 🟣 | 🟢 | +| | Заходи безпеки | 🟢 | 🟢 | 🟢 | 🔴 | 🟢 | 🟣 | 🟡 | 🟢 | 🟢 | 🟢 | 🟢 | +| | Планування тех. заходів сервіса | 🟢 | 🟢 | 🟢 | 🔴 | 🔴 | 🟣 | 🟢 | 🟢 | 🔴 | 🟣 | 🟢 | +| | Контроль версій | 🟢 | 🔴 | 🟢 | 🔴 | 🔵 | 🔴 | 🔴 | 🟢 | 🔴 | 🟣 | 🟢 | +| **Performance** | | | | | | | | | | | | | +| | Висока швидкість роботи | 🟢 | 🟣 | 🟢 | 🟢 | 🟢 | 🔴 | 🔴 | 🟢 | 🟡 | 🟣 | 🟢 | +| | Масштабованість | 🟢 | 🟣 | 🟢 | 🟢 | 🟢 | 🔴 | 🔴 | 🟢 | 🟡 | 🟢 | 🟣 | +| | Система кешування | 🟢 | 🟢 | 🟢 | 🔴 | 🔴 | 🔴 | 🟡 | 🟢 | 🔴 | 🟢 | 🟢 | +| **Supportability** | | | | | | | | | | | | | +| | Технічна підтримка | 🟢 | 🟢 | 🟢 | 🔵 | 🔵 | 🟡 | 🟡 | 🟢 | 🔵 | 🟣 | 🟢 | +| | Політика зберігання даних | 🟢 | 🟣 | 🟢 | 🟢 | 🟢 | 🔴 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | +| | Відмовостійкість (надійність та доступність) | 🟢 | 🟢 | 🟢 | 🟢 | 🟣 | 🔴 | 🟢 | 🔵 | 🟣 | 🟣 | 🟢 | +| | Оновлення та підтримка | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🔴 | 🟢 | 🟢 | 🔵 | 🟢 | 🟢 | ## Висновки -*[Робляться висновки щодо доцільності розробки нової або модифікації існуючої інформаційної системи, необхідності та способів інтеграції з системами(сервісами) третіх сторін, тощо.]* +У результаті проведеного дослідження інструментарію, задач та підходів до реалізації системи керування проєктами, ми отримали важливі уявлення про те, як важливо і складно створювати ефективну систему керування проєктами. Проаналізувавши результати дослідження різноманітних сервісів систем управління проєктами та вище сказану інформацію, можна дійти до висновку, що немає платформи, яка задовольняє всі вимоги. Зокрема багато важливих функцій в деяких системах або просто відсутні або є лише в платній версії. + +Тому ми вважаємо, що буде доцільним розробити власний проект де будуть реалізовані додаткові функції, які відсутні або є платними у вище проаналізованих сервісах. І в такому випадку новий продукт може зайняти долю на ринку. ## Посилання -*[Розділ містить повний список всіх документів, про які згадується.]* +[**Система керування проєктами - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%96%D0%BD%D0%BD%D1%8F_%D0%BF%D1%80%D0%BE%D1%94%D0%BA%D1%82%D0%B0%D0%BC%D0%B8) + +[**Roadmap (Технологічна дорожня карта) - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D1%96%D1%87%D0%BD%D0%B0_%D0%B4%D0%BE%D1%80%D0%BE%D0%B6%D0%BD%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0) + +[**Діаграма Ґанта - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%94%D1%96%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%B0_%D2%90%D0%B0%D0%BD%D1%82%D0%B0) + +[**UML (англ. Unified Modeling Language) - Wikipedia**](https://uk.wikipedia.org/wiki/Unified_Modeling_Language) + +[**Управління проєктами - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%96%D0%BD%D0%BD%D1%8F_%D0%BF%D1%80%D0%BE%D1%94%D0%BA%D1%82%D0%B0%D0%BC%D0%B8) + +[**Менеджер проєкту - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%9C%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80_%D0%BF%D1%80%D0%BE%D1%94%D0%BA%D1%82%D1%83) + +[**Замовник - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%97%D0%B0%D0%BC%D0%BE%D0%B2%D0%BD%D0%B8%D0%BA) + +[**План проекту**](https://blog.ganttpro.com/ru/plan-proekta/) + +[**Методологія управління проєктом**](https://worksection.com/ua/blog/benefits-of-project-management-methodology.html) + +[**Тестування - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F) + +[**Scrum - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%A1%D0%BA%D1%80%D0%B0%D0%BC) + +[**Інтеграція - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%86%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D1%96%D1%8F) + +[**Гнучка розробка програмного забезпечення (AGILE) - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%93%D0%BD%D1%83%D1%87%D0%BA%D0%B0_%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B1%D0%B5%D0%B7%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%BD%D1%8F) + +[**Waterfall - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%92%D0%BE%D0%B4%D0%BE%D1%81%D0%BF%D0%B0%D0%B4%D0%BD%D0%B0_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C) + +[**PRINCE2 (Проект у Контрольованих Умовах, версія 2) - Wikipedia**](https://uk.wikipedia.org/wiki/PRINCE2) + +[**Scrum Sprints: Everything You Need to Know**](https://www.atlassian.com/ru/agile/scrum/sprints) + +[**Kanban - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BD%D0%B1%D0%B0%D0%BD) + +[**Вартісний аналіз**](https://buklib.net/books/28422/) + +[**Поняття життєвого циклу проекту**](https://buklib.net/books/34069/) + +[**Git - Про систему контролю версій**](https://git-scm.com/book/uk/v2/%D0%92%D1%81%D1%82%D1%83%D0%BF-%D0%9F%D1%80%D0%BE-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%83-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8E-%D0%B2%D0%B5%D1%80%D1%81%D1%96%D0%B9) + +[**Мінімально життєздатний продукт (англ. Minimum viable product - MVP) - Wikipedia**](https://uk.wikipedia.org/wiki/%D0%9C%D1%96%D0%BD%D1%96%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE_%D0%B6%D0%B8%D1%82%D1%82%D1%94%D0%B7%D0%B4%D0%B0%D1%82%D0%BD%D0%B8%D0%B9_%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82) + +[**Реліз - Wikipedia**](https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7) + +[GitHub Projects](https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects) + +[Microsoft Project](https://www.microsoft.com/en/microsoft-365/project/project-management-software) +[Microsoft Project Wikipedia](https://en.wikipedia.org/wiki/Microsoft_Project) + +[Wrike](https://www.wrike.com/vad/) + +[ClickUp](https://clickup.com/) + +[TeamWork](https://www.teamwork.com/) +[The importance of teamwork](https://www.atlassian.com/blog/teamwork/the-importance-of-teamwork) + +[Asana](https://asana.com/) + +[Jira](https://www.atlassian.com/software/jira) + +[Trello](https://trello.com/) + +[Basecamp](https://basecamp.com/) + +[LiquidPlanner](https://www.liquidplanner.com/) +[LiquidPlanne Product](https://www.liquidplanner.com/product/) diff --git a/docs/use cases/README.md b/docs/use cases/README.md index b72b73691..273da2d8a 100644 --- a/docs/use cases/README.md +++ b/docs/use cases/README.md @@ -1,149 +1,761 @@ # Модель прецедентів -В цьому файлі необхідно перелічити всі документи, розроблені в проекті та дати посилання на них. +**Діаграма прецедентів** + +## Загальна схема + +
+ +@startuml + + actor "Користувач" as User + actor "Тімлід" as Teamlead + actor "Замовник" as Customer + actor "Розробник" as Developer -*Модель прецедентів повинна містити загальні оглядові діаграми та специфікації прецедентів.* + usecase "SignUp\nРеєстрація" as SignUp + usecase "SignIn\nАвторизація" as SignIn + usecase "ProjectManage\nУправління проектом" as ProjectManage + usecase "PayServices\nОплатити послуги розробки" as PayServices + usecase "LeaveReview\nЗалишити відгук" as LeaveReview + usecase "DevelopersManage\nКерування розробниками" as DevelopersManage + usecase "DevelopmentManage\nУправління розробкою проекту" as DevelopmentManage + usecase "TaskManage\nКерування завданнями проєкту" as TaskManage + Developer -u-> User + Customer -u-> User + Teamlead -u-> Developer + User -u-> SignUp + User -u-> SignIn -Вбудовування зображень діаграм здійснюється з використанням сервісу [plantuml.com](https://plantuml.com/). + Customer -r-> ProjectManage + Customer --> PayServices + Customer --> LeaveReview -В markdown-файлі використовується опис діаграми + Teamlead --> DevelopersManage + Teamlead --> DevelopmentManage -```md + Developer -l-> TaskManage + +@enduml + +
+ +## Замовник
@startuml - right header - Package: UCD_3.0 - end header + skinparam noteFontColor white - title - UC_8. Редагувати конфігурацію порталу - Діаграма прецедентів - end title + actor "Замовник" as Customer + usecase "SignUp\nРеєстрація" as SignUp + usecase "SignIn\nВхід" as SignIn + usecase "PayServices\nОплатити послуги розробки" as PayServices + usecase "LeaveReview\nЗалишити відгук" as LeaveReview + usecase "ProjectManage\nУправління проєктом" as ProjectManage #a28de3 + usecase "CreateProject\nСтворити проєкт" as CreateProject + usecase "DeleteProject\nВидалити проєкт" as DeleteProject + usecase "ChangeProjectStatus\nЗміна статусу проекта" as ChangeProjectStatus + usecase "TrackDevelopmentStatus\nВідстежити статус розробки" as TrackDevelopmentStatus - actor "Користувач" as User #eeeeaa - - package UCD_1{ - usecase "UC_1\nПереглянути список \nзвітів" as UC_1 #aaeeaa - } - - usecase "UC_1.1\nЗастосувати фільтр" as UC_1.1 - usecase "UC_1.2\nПереглянути метадані \nзвіту" as UC_1.2 - usecase "UC_1.2.1\nДати оцінку звіту" as UC_1.2.1 - usecase "UC_1.2.2\nПереглянути інформацію \nпро авторів звіту" as UC_1.2.2 - - package UCD_1 { - usecase "UC_4\nВикликати звіт" as UC_4 #aaeeaa - } - - usecase "UC_1.1.1\n Використати \nпошукові теги" as UC_1.1.1 - usecase "UC_1.1.2\n Використати \nрядок пошуку" as UC_1.1.2 - usecase "UC_1.1.3\n Використати \nавторів" as UC_1.1.3 - - - - User -> UC_1 - UC_1.1 .u.> UC_1 :extends - UC_1.2 .u.> UC_1 :extends - UC_4 .d.> UC_1.2 :extends - UC_1.2 .> UC_1.2 :extends - UC_1.2.1 .u.> UC_1.2 :extends - UC_1.2.2 .u.> UC_1.2 :extends - UC_1 ..> UC_1.2.2 :extends - - - UC_1.1.1 -u-|> UC_1.1 - UC_1.1.2 -u-|> UC_1.1 - UC_1.1.3 -u-|> UC_1.1 - - right footer - Аналітичний портал. Модель прецедентів. - НТУУ КПІ ім.І.Сікорського - Киів-2020 - end footer + Customer -r-> SignUp + Customer -l-> SignIn + Customer --> PayServices + Customer --> LeaveReview + Customer -u-> ProjectManage + ProjectManage <.u. CreateProject:extends + ProjectManage <.u. DeleteProject:extends + ProjectManage <.r. ChangeProjectStatus:extends + ProjectManage <.l. TrackDevelopmentStatus:extends @enduml -**Діаграма прецедентів** +
+ +## Робітник + +
+ +@startuml + + skinparam noteFontColor white + + actor "Розробник" as Collaborator + + usecase "SignUp\nРеєстрація" as SignUp + usecase "SignIn\nВхід" as SignIn + usecase "TaskManage\nКерувати завданнями" as TaskManage + usecase "ChangeTaskStatus\nЗмінити статус завдання" as ChangeTaskStatus + usecase "SendingTaskForReview\nНадіслати завдання для огляду" as SendingTaskForReview + + Collaborator -l-> SignUp + Collaborator -r-> SignIn + Collaborator -u-> TaskManage + TaskManage <.u. ChangeTaskStatus:extends + TaskManage <.u. SendingTaskForReview:extends + + note bottom of Collaborator #4e4e4e + + Робітник, як і всі користувачі може зареєструватися і авторизовуватись + Також він має дозвіл змінювати статус і надсилати завдання для огляду + для завдань які він робить. + end note + +@enduml
-``` -яка буде відображена наступним чином +## Тімлід
@startuml - right header - Package: UCD_3.0 - end header + skinparam noteFontColor white - title - UC_8. Редагувати конфігурацію порталу - Діаграма прецедентів - end title + actor "Тімлід" as Teamlead + usecase "SignUp\nРеєстрація" as SignUp + usecase "SignIn\nВхід" as SignIn + usecase "DevelopmentManage\nУправління розробкою\n проєкту" as DevelopmentManage + usecase "DevelopersManage\nКерування\n розробниками" as DevelopersManage + usecase "AddDeveloper\nДодати розробника" as AddDeveloper + usecase "DeleteDeveloper\nВидалити розробника" as DeleteDeveloper + usecase "SetDeveloper\nПоставити розробника\n на завдання" as SetDeveloper + usecase "ChangeProjectStatus\nЗмінити сатус\n розробки проєкту" as ChangeProjectStatus + usecase "ChangeTaskStatus\nЗмінити сатус\n завдання" as ChangeTaskStatus + usecase "AddTask\nДодати нову\n задачу" as AddTask + usecase "RemoveTask\nВидалити існуючу\n задачу" as RemoveTask - actor "Користувач" as User #eeeeaa - - package UCD_1{ - usecase "UC_1\nПереглянути список \nзвітів" as UC_1 #aaeeaa - } - - usecase "UC_1.1\nЗастосувати фільтр" as UC_1.1 - usecase "UC_1.2\nПереглянути метадані \nзвіту" as UC_1.2 - usecase "UC_1.2.1\nДати оцінку звіту" as UC_1.2.1 - usecase "UC_1.2.2\nПереглянути інформацію \nпро авторів звіту" as UC_1.2.2 - - package UCD_1 { - usecase "UC_4\nВикликати звіт" as UC_4 #aaeeaa - } - - usecase "UC_1.1.1\n Використати \nпошукові теги" as UC_1.1.1 - usecase "UC_1.1.2\n Використати \nрядок пошуку" as UC_1.1.2 - usecase "UC_1.1.3\n Використати \nавторів" as UC_1.1.3 - - - - User -> UC_1 - UC_1.1 .u.> UC_1 :extends - UC_1.2 .u.> UC_1 :extends - UC_4 .d.> UC_1.2 :extends - UC_1.2 .> UC_1.2 :extends - UC_1.2.1 .u.> UC_1.2 :extends - UC_1.2.2 .u.> UC_1.2 :extends - UC_1 ..> UC_1.2.2 :extends - + Teamlead -d-> SignUp + Teamlead -d-> SignIn + Teamlead -u-> DevelopersManage + Teamlead -u-> DevelopmentManage + DevelopersManage <.u. AddDeveloper:extends + DevelopersManage <.l. DeleteDeveloper:extends + DevelopersManage <.u. SetDeveloper:extends + DevelopmentManage <.d. AddTask:extends + DevelopmentManage <.u. ChangeTaskStatus:extends + DevelopmentManage <.u. ChangeProjectStatus:extends + DevelopmentManage <.r. RemoveTask:extends + +@enduml + +
+ +## Сценарії використання + +| ID | `SignUp` | +| :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Назва: | Реєстрація. | +| Учасники: | Користувач, Система. | +| Передумови: | - Користувач не зареєстрований в системі. | +| Результат: | Користувач зареєстрований в системі. | +| Виключні ситуації: | Користувач з таким ім'ям вже існує. SignUp_EX_UsernameExist
Логін Користувача недопустимий. SignUp_EX_UsernameNotAllowed
Користувач з таким email вже існує. SignUp_EX_EmailExist
Email користувача не допустимий або не існує. SignUp_EX_EmailNotAllowed | + +@startuml + + |Користувач| + start; + : Натискає кнопку "Реєстрація"; + + |Система| + : Відкриває форму реєстрації; + + |Користувач| + : Вводить email, пароль, логін; + : Натискає кнопку "Зареєструватися"; + + |Система| + : Реєструє Користувача в системі + SignUp_EX_UsernameExist + SignUp_EX_UsernameNotAllowed + SignUp_EX_EmailExist + SignUp_EX_EmailNotAllowed; - UC_1.1.1 -u-|> UC_1.1 - UC_1.1.2 -u-|> UC_1.1 - UC_1.1.3 -u-|> UC_1.1 + : Надсилає підтвердження про реєстрацію; + + |Користувач| + : Отримує підтверження про реєстрацію; + stop; + +@enduml + +| ID | `SignIn` | +| :----------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Назва: | Авторизація. | +| Учасники: | Користувач, Система. | +| Передумови: | - Користувач зареєстрований в системі. | +| Результат: | Користувач авторизований в системі. | +| Виключні ситуації: | Користувача з таким ім'ям не існує. SignIn_EX_UsernameNotExist
Логін або email і пароль не співпадають. SignIn_EX_UsernamePasswordNotMatch | + +@startuml + + |Користувач| + start; + : Натискає кнопку "Авторизуватись".; + + |Система| + : Відкриває форму авторизації; + + |Користувач| + : Вводить email або логін і пароль; + : Натискає кнопку "Зареєструватися"; + + |Система| + : Авторизовує Користувача в системі + SignIn_EX_UsernameNotExist + SignIn_EX_UsernamePasswordNotMatch; - right footer - Аналітичний портал. Модель прецедентів. - НТУУ КПІ ім.І.Сікорського - Киів-2020 - end footer + : Надсилає підтвердження про авторизацію Користувача; + + |Користувач| + : Отримує підтверження про авторизацію; + stop; @enduml -**Діаграма прецедентів** +| ID | `CreateProject` | +| :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Назва: | Створити новий проєкт | +| Учасники: | Замовник, Cистема | +| Передумови: | Замовник авторизувався у системі
Проєкт не є створеним | +| Результат: | Новий проєкт | +| Виключні ситуації: | Клієнт намагається створити новий проєкт в системі, з назвою вже існуючого проєкта:
CreateProject_EX_DuplicateProjectNameError.
Клієнт намагається створити новий проєкт, але вже досягнув максимальної дозволеної кількості проєктів у системі або обмеження для свого облікового запису:
CreateProject_EX_ProjectLimitExceededError.
Cтворення нового проєкту неможливе через тимчасові проблеми з мережею або інфраструктурою серверів. Система спробує автоматично відновити з'єднання:
CreateProject_EX_NetworkError. | - +@startuml + + |Замовник| + start; + : Користувач відкриває розділ з проєктами; + : Користувач натискає на кнопку "Новий проєкт"; + + |Система| + : Система відкриває форму зі створення проєкту; + + |Замовник| + : Користувач вводить дані + (назва,опис,залучені особи) + про новий проєкт + CreateProject_EX_DuplicateProjectNameError; + + : Користувач натискає на кнопку "Створити" + CreateProject_EX_NetworkError; + + |Система| + : Система перевіряє кількість + вже створених користувачем + проєктів і максимальний ліміт + кількості проєктів + для заданого користувача + CreateProject_EX_ProjectLimitExceededError; + + : Система добавляє новостворений проєкт до списку існуючих; + : Система надсилає повідомлення про успішне створення проєкту; + + |Замовник| + stop; + +@enduml + +| ID | `DeleteProject` | +| :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Назва: | Видалити проєкт | +| Учасники: | Замовник, Cистема | +| Передумови: | Замовник авторизувався у системі
Проєкт вже створений | +| Результат: | Проєкт видалений | +| Виключні ситуації: | Клієнт не підтвердив своє бажання видалити проєкт:
DeleteProject_EX_ConfirmationRequiredError.
Видалення проєкту неможливе через тимчасові проблеми з мережею або інфраструктурою серверів. Система спробує автоматично відновити з'єднання:
DeleteProject_EX_NetworkError.
Видалення проєкту неможливе через відсутність прав доступу:
DeleteProject_EX_UnauthorizedDeletionError. | + +@startuml + + |Замовник| + start; + : Користувач відкриває розділ з проєктами; + : Користувач натискає на ім'я проєкту; + + |Система| + : Система відкриває сторінку з проєктом; + + |Замовник| + : Користувач натискає + на кнопку "Налаштування проєкту"; + + |Система| + : Система відкриває сторінку + з налаштуваннями проєкту; + + |Замовник| + : Користувач натискає + на кнопку "Видалити цей проєкт" + DeleteProject_EX_UnauthorizedDeletionError; + + |Система| + : Система відкриває віконце з попередженнями, + і полем для верифікації підтвердження; + + |Замовник| + : Користувач вводить в поле свій нікнейм; + : Користувач натискає + кнопку "Підтвердити видалення проєкту" + DeleteProject_EX_ConfirmationRequiredError; + + |Система| + : Система видаляє проєкт зі списку існуючих + DeleteProject_EX_NetworkError; + + : Система надсилає повідомлення + про успішне видалення проєкту; + + |Замовник| + stop; + +@enduml + +| ID | `ChangeProjectStatus` | +| :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Назва: | Змінити статус проекта. | +| Учасники: | Замовник, Система. | +| Передумови: | Проект існує в системі, замовник є власником проекту. | +| Результат: | Статус проекта успішно змінений. | +| Виключні ситуації: | Замовник не є власником проекту. ChangeProjectStatus_EX_Unauthorized
Спроба змінити на недопустимий статус. ChangeProjectStatus_EX_InvalidStatus
Проект не знайдений в системі, спроба зміни статусу над неправильним проектом. ChangeProjectStatus_EX_ProjectNotFound
Виникла внутрішня помилка системи під час спроби зміни статусу проекта. ChangeProjectStatus_EX_InternalError | + +@startuml + + |Замовник| + start; + : Входить в систему; + + |Замовник| + : Обирає конкретний проект, для якого він хоче змінити статус + ChangeProjectStatus_EX_Unauthorized + ChangeProjectStatus_EX_ProjectNotFound; + + |Замовник| + : Обирає новий статус для проекта з доступних опцій + ChangeProjectStatus_EX_InvalidStatus; + + |Замовник| + : Підтверджує зміну статусу проекта + ChangeProjectStatus_EX_InternalError; + + |Система| + : Перевіряє, чи має замовник права на зміну статусу даного проекту\n та чи є новий статус допустимим для зміни.; + + : Система змінює статус проекта на новий; + + : Система автоматично надсилає повідомлення\n всім учасникам проекту про зміну статусу.; + + + |Замовник| + stop; + +@enduml + +| ID | `PayServices` | +| :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Назва: | Оплатити послуги розробки | +| Учасники: | Замовник, Система | +| Передумови: | Замовник авторизувався у системі | +| Результат: | Замовник оплатив надані йому послуги | +| Виключні ситуації: | Клієнт не має достатньо коштів на рахунку:
PayServices_EX_NotEnoughMoney.
Клієнт надав не правильні банківські дані:
PayServices_EX_IncorrectBankDetails. | + +@startuml + + |Замовник| + start; + : Користувач відкриває розділ оплати; + + |Система| + : Система підраховує сумму яку потрібно заплатити; + : Система надає користувачеві сумму яку потрібно заплатити та всі необхідні дані для оплати; + + |Замовник| + : Користувач натискає на кнопку "Оплата"; + : Користувач вводить свої банківські дані; + : Користувач натискає на кнопку "Зробити транзакцію"; + + |Система| + + : Система зв'язується з банком + PayServices_EX_IncorrectBankDetails; + : Система перевіряє дані та кошти на рахунку + PayServices_EX_NotEnoughMoney; + : Система списує кошти; + : Система надсилає підтвердження про успішну оплату у виді чеку; + |Замовник| + stop; + +@enduml + +| ID | `LeaveReview` | +| :----------------- | :----------------------------------------------------------------------------------- | +| Назва: | Залишити відгук | +| Учасники: | Замовник, Система | +| Передумови: | Замовник авторизувався у системі
Проект завершений | +| Результат: | Замовник залишив відгук про надані йому послуги | +| Виключні ситуації: | Проект ще не завершено:
LeaveReview_EX_ProjectIsNotOver. | + +@startuml + + |Замовник| + start; + : Користувач відкриває сторінку команди; + : Користувач переходить в розділ "Відгуки"; + + |Система| + : Система відкриває розділ з відгуками; + + |Замовник| + : Користувач натискає на кнопку "Залишити відгук"; + + |Система| + : Система відкриває вікно залишення відгуку; + + |Замовник| + : Користувач пише відгук та оцінює роботу команди; + : Користувач натискає на кнопку "Залишити відкук"; + + |Система| + + : Система зберігає відгук + LeaveReview_EX_ProjectIsNotOver; + : Система інформує користувача що відгук збережено; + + |Замовник| + stop; + +@enduml + +| ID | `TrackDevelopmentStatus` | +| :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Назва: | Відстежити статус розробки | +| Учасники: | Замовник, Система | +| Передумови: | Проєкт існує в системі, замовник має доступ до інформації про статус розробки | +| Результат: | Замовник відстежує поточний статус розробки проекту. | +| Виключні ситуації: | Проект не знайдений в системі, спроба відстеження статусу розробки над неправильним проєктом: TrackDevelopmentStatus_EX_ProjectNotFound.
Замовник намагається відстежувати статус розробки проєкту, на який він не має прав доступу: TrackDevelopmentStatus_EX_PermissionDenied.
Виникла внутрішня помилка системи під час спроби відстеження статусу розробки: TrackDevelopmentStatus_EX_InternalError. | + +@startuml + + |Замовник| + start; + : Входить в систему; + : Відкриває розділ з проєктами; + : Обирає конкретний проект + TrackDevelopmentStatus_EX_ProjectNotFound + TrackDevelopmentStatus_EX_InternalError; + + |Система| + : Відображення інформацію про + поточний статус розробки проекту + TrackDevelopmentStatus_EX_PermissionDenied; + + |Замовник| + : Перегляд деталей, опису та статусу завдання, + відповідального розробника; + + |Система| + : Відображення оновлених статусів завдань; + : Оновлення загального статусу розробки проєкту + на основі змін у статусах завдань; + + |Замовник| + : Перевірка актуального статусу розробки; + + stop; + +@enduml + +| ID | `DeleteDeveloper` | +| :----------------- | :----------------------------------------------------------------------------- | +| Назва: | Видалити розробника | +| Учасники: | Розробник, Тімлід, Система | +| Передумови: | Тімлід авторизувався у системі | +| Результат: | Розробника видалено | +| Виключні ситуації: | Розробника не існує. DeleteDeveloper_EX_NotExist
| + +@startuml + + |Тімлід| + start; + : Відкриває меню розробників; + + |Тімлід| + : Обирає потрібного розробника з списку; + + |Система| + : Виділяє потрібного розробника; + + |Тімлід| + : Натискає "Видалити"; + + |Система| + : Просить підтверження; + + |Тімлід| + : Натискає "Так"; + + |Система| + : Перевіряє наявість розробника + DeleteDeveloper_EX_NotExist; + + |Система| + :Видаляє розробника; + + |Тімлід| + stop; + +@enduml + +| ID | `ChangeStatus` | +| :----------------- | :-------------------------------------------------------------------------------- | +| Назва: | Змінити статус розробки проєкту | +| Учасники: | Тімлід, Система | +| Передумови: | Тімлід авторизувався у системі
Проєкт вже створено | +| Результат: | Статус проєкту змінився | +| Виключні ситуації: | Проєкта не існує. ChangeStatus_EX_UnexistingProject
| + +@startuml + + |Тімлід| + start; + : Відкриває меню проєктів; + + |Тімлід| + : Натискає на кнопку "Змінити статус"; + + |Система| + : Пропонує можливі статуси проєкту; + + |Тімлід| + : Обирає потрібний статус; + + |Система| + : Просить підтверження; + + |Тімлід| + : Натискає кнопку "Зберегти зміни"; + + |Система| + : Змінює статус проєкту + ChangeStatus_EX_UnexistingProject; + |Тімлід| + stop; + +@enduml + +| ID | `AddTask` | +| :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Назва: | Додати нову задачу до проекту | +| Учасники: | Тімлід, Система | +| Передумови: | Тімлід авторизувався у системі
Проєкт вже створено | +| Результат: | Задача додана до проекту | +| Виключні ситуації: | Задача вже існує. ChangeStatus_EX_UnexistingProject
Дані містять помилку. AddTask_EX_ErrorData
| + +@startuml + + |Тімлід| + start; + : Відкриває меню задач; + + |Тімлід| + : Натискає на кнопку "Додати задачу"; + + |Система| + : Відкриває меню додавання задачі; + + |Тімлід| + : Вводить дані для задачі; + + |Тімлід| + : Натискає кнопку "Додати"; + + |Система| + : Перевіряє правильність даних + AddTask_EX_ErrorData; + + : Перевіряє дані задачі + AddTask_EX_AlreadyAdd; + + : Додає задачу; + + |Тімлід| + stop; + +@enduml + +| ID | `AddingDeveloper` | +| :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Назва: | Додати розробника | +| Учасники: | Розробник, Тімлід, Система | +| Передумови: | Тімлід авторизувався у системі | +| Результат: | Розробника додано в систему | +| Виключні ситуації: | Розробник вже існує:
AddingDeveloper_EX_AlreadyOccupied.
Дані містять помилку:
AddingDeveloper_EX_ErrorData. | + +@startuml + + |Тімлід| + start; + : Тімлід відкриває меню розробників; + : Тімлід натискає "Додати розробника"; + + |Система| + : Система відкриває меню\n додавання розробника; + + |Тімлід| + : Тімлід вводить дані розробника; + : Тімлід натискає кнопку "Додати"; + + |Система| + : Система перевіряє правильність даних + AddingDeveloper_EX_ErrorData; + + : Система перевіряє дані розробника + AddingDeveloper_EX_AlreadyOccupied; + + : Система додає розробника; + : Система висилає дані для\n авторизації розробнику на пошту; + + |Тімлід| + stop; + +@enduml + +| ID | `RemoveTask` | +| :----------------- | :-------------------------------------------------------------------- | +| Назва: | Видалити існуючу задачу в проєкті | +| Учасники: | Тімлід, Система | +| Передумови: | Тімлід авторизувався у системі
Проєкт вже створено | +| Результат: | Задача видалена з проєкту | +| Виключні ситуації: | Задачі не існує. RemoveTask_EX_NotExist
| + +@startuml + + |Тімлід| + start; + : Відкриває меню задач; + + |Тімлід| + : Обирає потрібну задачу; + + |Тімлід| + : Натискає кнопку "Видалити"; + + |Система| + : Просить користувача підтвердити видалення завдання; + + |Тімлід| + : Натискає кнопку "Підтвердити"; + + |Система| + : Перевіряє наявість задачі + RemoveTask_EX_NotExist; + + |Система| + : Видаляє задачу; + + |Тімлід| + stop; + +@enduml + +| ID | `ChangeTaskStatus` | +| :----------------- | :------------------------------------------------------------------------------------ | +| Назва: | Змінити статус завдання | +| Учасники: | Розробник, Система | +| Передумови: | Розробник авторизувався у системі
Проєкт вже створено
Задача вже призначена | +| Результат: | Статус задачі змінений | +| Виключні ситуації: | Задачі не існує. ChangeTaskStatus_EX_NotExist
| + +@startuml + + |Розробник| + start; + : Відкриває меню задач; + + |Розробник| + : Обирає потрібну задачу; + + |Розробник| + : Натискає кнопку "Змінити статус"; + + |Система| + : Просить користувача вибрати\n статус завдання; + + |Розробник| + : Натискає кнопку в залежності\n від статусу завдання; + + |Система| + : Перевіряє наявість задачі + ChangeTaskStatus_EX_NotExist; + + + |Система| + : Змінює стан задачі; + + |Розробник| + stop; + +@enduml + +| ID | `SendingTaskForReview` | +| :----------------- | :---------------------------------------------------------------------------------------------- | +| Назва: | Надіслати завдання для огляду | +| Учасники: | Розробник, Система | +| Передумови: | Розробник авторизувався у системі
Проєкт вже створено
Задача зі статусом "Огляд коду" | +| Результат: | Задача надіслана на огляд | +| Виключні ситуації: | Задачі не існує. SendingTaskForReview_EX_NotExist
| + +@startuml + + |Розробник| + start; + : Відкриває меню задач; + + |Розробник| + : Обирає потрібну задачу; + + |Розробник| + : Натискає кнопку "Відправити код на огляд"; + + |Система| + : Просить користувача підтвердити відправлення; + + |Розробник| + : Натискає кнопку підтвердження; + + |Система| + : Перевіряє наявість задачі + SendingTaskForReview_EX_NotExist; + + |Система| + : Надсилає код на огляд; + + |Розробник| + stop; + +@enduml diff --git a/publish.sh b/publish.sh index 28000702b..9b4ce3cc4 100644 --- a/publish.sh +++ b/publish.sh @@ -20,6 +20,6 @@ git commit -m 'deploy' # git push -f git@github.com:boldak/.github.io.git master # if you are deploying to https://.github.io/ -git push -f https://github.com/edu-db/edu_db_labs master:gh-pages +git push -f https://github.com/illiakroshka/edu_db_labs master:gh-pages cd -