Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/9770Full metadata record
| DC Field | Value | Language |
|---|---|---|
| dc.contributor.advisor | Півень , Олександр Борисович | - |
| dc.contributor.author | Мазуренко, Олена Сергіївна | - |
| dc.date.accessioned | 2026-07-02T07:10:00Z | - |
| dc.date.available | 2026-07-02T07:10:00Z | - |
| dc.date.issued | 2026-06-17 | - |
| dc.identifier.uri | https://er.chdtu.edu.ua/handle/ChSTU/9770 | - |
| dc.description.abstract | АНОТАЦІЇ Виконавець: Мазуренко Олена Сергіївна. Назва роботи: “Програмне забезпечення online-платформи адопції тварин”. Спеціальність: 121 Інженерія програмного забезпечення. Навчальний заклад: «Черкаський державний технологічний університет» м. Черкаси, 2026р. У бакалаврській роботі розглядається розробка online-платформи для адопції тварин, призначеної для об’єднання притулків, волонтерів та потенційних власників у єдиній інформаційній системі. Основною метою роботи є розробка програмного забезпечення online-платформи адопції тварин, яке забезпечує автоматизацію основних процесів взаємодії між потенційними власниками тварин та притулками. Актуальність роботи обумовлена необхідністю створення сучасного програмного забезпечення для підтримки процесів адопції тварин, автоматизації обробки інформації та покращення взаємодії між користувачами системи. У ході роботи було проведено детальний аналіз потреб цільової аудиторії, сформовано вимоги до онлайн платформи, виконано моделювання ключових функцій та реалізовано систему на основі Python з використанням фреймворку Django та мови програмування JavaScript. Основні ідеї та результати досліджень включають: 1 Формування вимог: були визначені детальні вимоги до системи. Враховано потреби користувачів (потенційних власників тварин), притулків, волонтерів та адміністраторів. Розроблено функціональні та нефункціональні вимоги, що забезпечило чітке розуміння цілей, структури та функцій системи. 2 Моделювання функціоналу: було створено логічну та фізичну моделі системи. Визначено основні функції платформи, такі як реєстрація та авторизація користувачів, створення та редагування профілів тварин, пошук і фільтрація за параметрами, подання заявок на адопцію, обробка заявок притулками, а також взаємодія між користувачами.Реалізація системи: було розроблено online-платформу на основі Python (Django), що забезпечує обробку запитів, управління даними та реалізацію бізнес-логіки. Описано архітектуру системи, структуру бази даних та використані технології, що забезпечують масштабованість і стабільність роботи. Висновки роботи показують, що створена платформа успішно задовольняє потреби користувачів, притулків та волонтерів, покращуючи ефективність комунікації та знижуючи витрати часу на пошук тварин, подання заявок і координацію процесу адопції. Розроблена система відповідає сучасним вимогам до веб-застосунків та демонструє надійність і зручність у практичному використанні. | uk_UA |
| dc.description.abstract | ANNOTATIONS Author: Mazurenko Olena Serhiivna. Title: “Software for an Online Platform for Animal Adoption” Specialty: 121 Software Engineering Educational institution: Cherkasy State Technological University, Cherkasy, 2026 This bachelor's thesis is devoted to the development of an online platform for animal adoption, designed to unite shelters, volunteers, and potential pet owners within a single information system. The main goal of the work is to develop software for an online animal adoption platform that automates the key interaction processes between potential pet owners and animal shelters. The relevance of the work is determined by the need to create modern software for supporting animal adoption processes, automating information processing, and improving interaction between system users. During the study, a detailed analysis of the needs of the target audience was carried out, the requirements for the online platform were defined, key functions were modeled, and the system was implemented using Python, the Django framework, and the JavaScript programming language. The main ideas and results of the research include: requirements definition: detailed system requirements were identified. The needs of users (potential adopters), shelters, volunteers, and administrators were taken into account. Functional and non-functional requirements were developed, which ensured a clear understanding of the goals, structure, and functions of the system; functional modeling: logical and physical models of the system were created. The main platform functions were identified, including user registration and authentication, creation and editing of animal profiles, search and filtering by parameters, submission of adoption applications, processing of applications by shelters, and interaction between users; system implementation: an online platform based on Python (Django) was developed, providing request processing, data management, and implementation ofbusiness logic. The system architecture, database structure, and the technologies ensuring scalability and operational stability are described. The conclusions of the work show that the developed platform successfully meets the needs of users, shelters, and volunteers by improving communication efficiency and reducing the time required for searching for animals, submitting applications, and coordinating the adoption process. The developed system meets modern web application requirements and demonstrates reliability and convenience in practical use. | uk_UA |
| dc.language.iso | uk | uk_UA |
| dc.subject | інформаційна система | uk_UA |
| dc.subject | програмне забезпечення | uk_UA |
| dc.subject | online платформа | uk_UA |
| dc.subject | Python | uk_UA |
| dc.subject | Django | uk_UA |
| dc.subject | база даних | uk_UA |
| dc.subject | PostgresSQL | uk_UA |
| dc.subject | адопція тварин | uk_UA |
| dc.subject | information system | uk_UA |
| dc.subject | software | uk_UA |
| dc.subject | online platform | uk_UA |
| dc.subject | Python | uk_UA |
| dc.subject | Django | uk_UA |
| dc.subject | database | uk_UA |
| dc.subject | PostgreSQL | uk_UA |
| dc.subject | animal adoption | uk_UA |
| dc.title | Програмне забезпечення online-платформи адопції тварин | uk_UA |
| dc.type | Bachelor Thesis | uk_UA |
| Appears in Collections: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) | |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Кваліфікаційна робота бакалавра Мазуренко Олена Сергіївна.pdf Restricted Access | 7.7 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ЧЕРКАСЬКИЙ
ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи бакалавра
на тему: «Програмне забезпечення online-платформи адопції тварин»
Виконала: студентка 4 курсу, групи ЗПЗ-2204
Спеціальності
121 «Інженерія програмного забезпечення»
(шифр і назва напряму підготовки)
Студентка Мазуренко О.С.
(прізвище та ініціали)
Керівник Півень О.Б.
(прізвище та ініціали)
Рецензент Захарова М.В.
(прізвище та ініціали)
Черкаси 2026
Черкаський державний технологічний
університет повне найменування
вищого навчального закладу
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
Освітній рівень бакалавр
Спеціальність 121 «Інженерія програмного забезпечення»
Освітня програма Інженерія програмного забезпечення
ЗАТВЕРДЖУЮ
Зав. кафедри ПЗАС, професор
С. Голуб
« » 2026 року
З А В Д А Н Н Я
НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ
Мазуренко Олена Сергіївна
(прізвище, ім’я, по батькові)
1. Тему проекту (роботи) Програмне забезпечення online-платформи адопції тварин
2. Керівник проекту (роботи) Півень Олександр Борисович к.ф.-м. н., доцент
(прізвище, ім’я , по батькові, науковий ступінь, вчене звання)
Затверджені наказом Черкаського державного технологічного університету від « 12» березня
2026 року № 56\03-03
3. Строк подання студентом проекту (роботи) - 3 червня 2026 року
4. Вхідні дані до проекту (роботи) стандарти програмного забезпечення; процеси управління;
вимоги до проекту, технічне завдання на розробку, методичні рекомендації до виконання
бакалаврської роботи, автоматизовані системи, терміни та визначення
5. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити)
Вступ; Розділ 1. Існуючі методи та засоби розв’язання поставлених завдань; Розділ 2.
Впровадження результатів досліджень у практику проектування програмного забезпечення
інформаційних систем; Розділ 3. Розробка та тестування програмного забезпечення;
Висновки; Список використаних джерел; Додатки
6. Перелік графічного матеріалу (з точним зазначенням обов’язкових
робіт проекту): Додаток А – Документація
Додаток Б – Специфікація
програми Додаток В – Текст
програми
Додаток Г – Презентаційний матеріал
2
7. Консультанти розділів роботи
Прізвище, ініціали та посади Підпис, дата
Розділ
Завдання видав Завдання прийняв
консультанта
1
2
3
8. Дата видачі завдання – грудень 2025 року
КАЛЕНДАРНИЙ ПЛАН
Строк виконання
№ етапів
Назва етапів випускної роботи Примітки
п/п кваліфікаційної
роботи
1 Постановка задачі грудень виконано
2 Підготовка завдання січень виконано
3 Погодження завдання лютий виконано
4 Затвердження завдання лютий виконано
Основна стадія
1 Підбір матеріалів лютий виконано
2 Аналіз шляхів вирішення поставленої задачі березень виконано
3 Розрахунок основних параметрів роботи березень виконано
4 Вибір кінцевого варіанту проектного рішення березень виконано
5 Оформлення первісної редакції роботи квітень виконано
Заключна стадія
1 Узгодження прийнятих проектних рішень з квітень виконано
керівником
2 Оформлення пояснювальної записки роботи в травень виконано
кінцевій редакції
3 Попередній захист роботи травень виконано
4 Затвердження роботи травень виконано
5 Рецензування роботи травень виконано
6 Захист роботи червень виконано
Студентка Мазуренко О.С.
(підпис) (прізвище та ініціали)
Керівник роботи Півень О.Б.
(підпис) (прізвище та ініціали)
3
АНОТАЦІЇ
Виконавець: Мазуренко Олена Сергіївна.
Назва роботи: “Програмне забезпечення online-платформи адопції тварин”.
Спеціальність: 121 Інженерія програмного забезпечення.
Навчальний заклад: «Черкаський державний технологічний університет» м.
Черкаси, 2026р.
У бакалаврській роботі розглядається розробка online-платформи для адопції
тварин, призначеної для об’єднання притулків, волонтерів та потенційних
власників у єдиній інформаційній системі. Основною метою роботи є розробка
програмного забезпечення online-платформи адопції тварин, яке забезпечує
автоматизацію основних процесів взаємодії між потенційними власниками тварин
та притулками.
Актуальність роботи обумовлена необхідністю створення сучасного
програмного забезпечення для підтримки процесів адопції тварин, автоматизації
обробки інформації та покращення взаємодії між користувачами системи.
У ході роботи було проведено детальний аналіз потреб цільової аудиторії,
сформовано вимоги до онлайн платформи, виконано моделювання ключових
функцій та реалізовано систему на основі Python з використанням фреймворку
Django та мови програмування JavaScript.
Основні ідеї та результати досліджень включають:
1 Формування вимог: були визначені детальні вимоги до системи.
Враховано потреби користувачів (потенційних власників тварин), притулків,
волонтерів та адміністраторів. Розроблено функціональні та нефункціональні
вимоги, що забезпечило чітке розуміння цілей, структури та функцій системи.
2 Моделювання функціоналу: було створено логічну та фізичну моделі
системи. Визначено основні функції платформи, такі як реєстрація та авторизація
користувачів, створення та редагування профілів тварин, пошук і фільтрація за
параметрами, подання заявок на адопцію, обробка заявок притулками, а також
взаємодія між користувачами.Реалізація системи: було розроблено online-
платформу на основі Python (Django), що забезпечує обробку запитів, управління
даними та реалізацію бізнес-логіки. Описано архітектуру системи, структуру бази
даних та використані технології, що забезпечують масштабованість і стабільність
роботи.
Висновки роботи показують, що створена платформа успішно задовольняє
потреби користувачів, притулків та волонтерів, покращуючи ефективність
комунікації та знижуючи витрати часу на пошук тварин, подання заявок і
координацію процесу адопції. Розроблена система відповідає сучасним вимогам
до веб-застосунків та демонструє надійність і зручність у практичному
використанні.
Ключові слова: інформаційна система, програмне забезпечення, online
платформа, Python, Django, база даних, PostgresSQL, адопція тварин.
ANNOTATIONS
Author: Mazurenko Olena Serhiivna.
Title: “Software for an Online Platform for Animal Adoption” Specialty: 121
Software Engineering
Educational institution: Cherkasy State Technological University, Cherkasy,
2026
This bachelor's thesis is devoted to the development of an online platform for
animal adoption, designed to unite shelters, volunteers, and potential pet owners within
a single information system. The main goal of the work is to develop software for an
online animal adoption platform that automates the key interaction processes between
potential pet owners and animal shelters.
The relevance of the work is determined by the need to create modern software
for supporting animal adoption processes, automating information processing, and
improving interaction between system users.
During the study, a detailed analysis of the needs of the target audience was
carried out, the requirements for the online platform were defined, key functions were
modeled, and the system was implemented using Python, the Django framework, and
the JavaScript programming language.
The main ideas and results of the research include:
requirements definition: detailed system requirements were identified. The
needs of users (potential adopters), shelters, volunteers, and administrators were taken
into account. Functional and non-functional requirements were developed, which
ensured a clear understanding of the goals, structure, and functions of the system;
functional modeling: logical and physical models of the system were created.
The main platform functions were identified, including user registration and
authentication, creation and editing of animal profiles, search and filtering by
parameters, submission of adoption applications, processing of applications by shelters,
and interaction between users;
system implementation: an online platform based on Python (Django) was
developed, providing request processing, data management, and implementation
ofbusiness logic. The system architecture, database structure, and the technologies
ensuring scalability and operational stability are described.
The conclusions of the work show that the developed platform successfully meets
the needs of users, shelters, and volunteers by improving communication efficiency and
reducing the time required for searching for animals, submitting applications, and
coordinating the adoption process. The developed system meets modern web
application requirements and demonstrates reliability and convenience in practical use.
Keywords: information system, software, online platform, Python, Django
database, PostgreSQL, animal adoption.
ЗМІСТ
ЗМІСТ ........................................................................................................................... 4
ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ ....................................................................... 6
ВСТУП ......................................................................................................................... 8
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ ПОСТАВЛЕНИХ
ЗАВДАНЬ ..................................................................................................................... 12
1.1. Огляд технологій та засобів розробки online-платформ....................... 12
1.2. Методи аналізу online-платформ.............................................................. 15
1.3. Порівняльний аналіз існуючих аналогів ................................................. 16
1.4. Постановка задачі ...................................................................................... 23
ВИСНОВОК ДО ПЕРШОГО РОЗДІЛУ ......................................................... 25
РОЗДІЛ 2. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У ПРАКТИКУ
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНИХ
СИСТЕМ ...................................................................................................................... 26
2.1. Моделювання предметної області ........................................................... 26
2.2. Формування та аналіз вимог ..................................................................... 35
2.3. Проектування логічної структури online платформи ............................ 41
2.4. Архітектура проєктування ........................................................................ 49
2.5. Моделювання поведінки системи ............................................................ 54
ВИСНОВОК ДО ДРУГОГО РОЗДІЛУ .......................................................... 65
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 67
3.1 Розробка програмного комплексу ............................................................. 71
3.2 Тестування системи .................................................................................... 92
ЧДТУ 262104.001ПЗ
Змн. Арк. № докум. Підпис Дата
Розроб. Мазуренко О.С, Літ. Лист Листів
«Програмне забезпечення
Перевір. Півень О.Б.. 4
online-платформи адопції
Рецензент Захарова М.В.
тварин»
Н. Контр. Півень О.Б. ФІТІС, кафедра ПЗАС,
Затверд. Голуб С.В. Пояснювальна записка. ЗПЗ-2204
3.3 Приклади впровадженого програмного комплексу .............................. 100
ВИСНОВОК ДО ТРЕТЬОГО РОЗДІЛУ ....................................................... 109
ВИСНОВКИ .............................................................................................................. 110
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ................................................................. 113
ДОДАТОК А ............................................................................................................. 117
ДОДАТОК Б ............................................................................................................... 118
ДОДАТОК В. ............................................................................................................. 141
ДОДАТОК Г. .............................................................................................................. 146
ЧДТУ 262104.001 ПЗ
Змн. Арк. № докум. Підпис Дата
5
ЧДТУ 262104.001 ПЗ
ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ
СУБД – система управління базою даних БД – база даних
ORM – Object-Relational Mapping UML – Unified Modeling Language SQL –
Structured Query Language HTTP – HyperText Transfer Protocol HTML – HyperText
Markup Language CSS – Cascading Style Sheets
MVT – Model-View-Template JSON – JavaScript Object Notation
Python – мова програмування Python
Django – веб-фреймворк для розробки веб-застосунків мовою Python PostgreSQL –
система управління реляційними базами даних
UI – User Interface
CRUD – Create, Read, Update, Delete PK – Primary Key
FK – Foreign Key
ПЗ – програмне забезпечення VS Code – Visual Studio Code
6
ЧДТУ 262104.001 ПЗ
ВСТУП
Актуальність теми. Дана тема відноситься до інженерії програмного
забезпечення. З точки зору інженерії програмного забезпечення адопція тварин та
зростання кількості користувачів і обсяг усиновлення тварин формує гостру
потребу у проектуванні та розробці надійних інформаційних систем, здатних
стабільно функціонувати в умовах екстремальних навантажень. Платформи, які
раніше були на закордонних ринках все частіше демонструють свою
функціональну неефективність
Ефективним вирішенням цих проблем з позицій сучасної програмної
інженерії є створення спеціалізованої online-платформи адопції тварин. Такий
підхід дозволяє об'єднати всі процеси в межах єдиного програмного середовища,
забезпечити централізоване управління інформацією про тварин, автоматизувати
подання та обробку заявок на адопцію, а також реалізувати механізми комунікації
між користувачами та притулками.
Використання сучасних технологій веброзробки, зокрема мови
програмування Python, фреймворку Django та системи керування базами даних
PostgreSQL, дозволяє створити надійне, безпечне та масштабоване програмне
забезпечення. Реалізація такої платформи не лише спрощує процес пошуку
нового дому для тварин, але й сприяє підвищенню ефективності роботи
притулків, покращенню взаємодії між учасниками процесу адопції та створенню
єдиного інформаційного простору для підтримки тварин.
Інформаційні системи, які представлені на ринку, є або локальними, що
діють на території окремого міста, або більшість процесів відбуваються через
месенджери, що мають обмежені можливості, представлені в різних системах і не
об’єднують роботу зоозахисників. Це зумовлює необхідність у програмному
забезпеченні, що буде об’єднувати притулки з різних міст, створення
функціоналу, що надасть можливість цифровізувати подання заявок на адопцію
тварин та комунікацію між всіма членами процесу на одній платформі.
Отже, розробка програмного забезпечення online-платформи для адопції
7
ЧДТУ 262104.001 ПЗ
тварин є актуальним і доцільним завданням, оскільки така система дозволить
об’єднати притулки, волонтерів, потенційних власників та інших зацікавлених
осіб у межах єдиного інформаційного середовища, підвищити ефективність
роботи притулків, спростити процес пошуку нового дому для тварин і покращити
комунікацію між усіма учасниками.
Метою розробки є реалізація програмного забезпечення online-платформи
адопції тварин.
Для досягнення поставленої мети необхідно вирішити такі завдання:
1 Провести аналіз предметної області та існуючих програмних рішень на
ринку.
2 Аналіз і формулювання функціональних та нефункціональних вимог до
програмного забезпечення.
3 Розробка архітектури програмного забезпечення.
4 Проєктування структури для бази даних.
5 Розробка серверної частини для обробки даних та зв’язку з базою даних.
6 Розробка інтерфейсу користувача.
7 Реалізація авторизації та прав доступу доступу на основі ролей.
8 Провести тестування програмного забезпечення для визначення, що
програмне забезпечення розроблено у відповідності вимогам замовника,
та працює відповідно до очікувань кінцевих користувачів.
Об’єктом розробки є процеси організації забезпечення online платформи
для адопції тварин.
Предметом розробки є програмне забезпечення online-платформи адопції
тварин та взаємодія між користувачами та притулками.
Методи проектування та конструювання
Для проектування програмного забезпечення використано методи аналізу,
порівняння, моделювання, системного підходу, об’єктно-орієнтованого
проєктування та тестування програмного забезпечення [1].
Метод аналізу та порівняння застосовано під час дослідження предметної
області та існуючих аналогів online-платформ для адопції тварин з метою
8
ЧДТУ 262104.001 ПЗ
визначення їхніх переваг, недоліків і напрямів удосконалення [2]. Метод
системного підходу використано для формування загальної структури системи,
визначення її основних компонентів і взаємозв’язків між ними. Метод
моделювання застосовано під час побудови концептуальної моделі системи,
проєктування структури бази даних та опису логіки взаємодії користувачів із
платформою. Об’єктно-орієнтоване проєктування використано для розробки
програмного забезпечення, що дозволило представити основні сутності
предметної області у вигляді взаємопов’язаних програмних компонентів. Методи
конструювання інтерфейсу та серверної частини застосовано під час реалізації
користувацького інтерфейсу, бізнес-логіки та механізмів взаємодії з базою даних.
Метод тестування використано для перевірки коректності роботи системи,
виявлення помилок та оцінки зручності використання платформи.
Опис отриманих результатів
У результаті виконання роботи було досліджено предметну область адопції
тварин та проаналізовано потреби основних категорій користувачів, зокрема
потенційних власників, представників притулків, волонтерів та адміністраторів.
Після проведення аналізу було сформовано функціональні та нефункціональні
вимоги до розроблюваної інформаційної системи.
Було розроблено архітектуру online-платформи, спроєктовано структуру бази
даних та визначено основні компоненти програмного забезпечення. У системі
передбачено основні функції, необхідні для її практичного використання:
перегляд каталогу тварин, роботу з профілями тварин, пошук і фільтрацію,
подання заявок на адопцію, а також взаємодію між користувачами різних
категорій.
Проведене тестування підтвердило працездатність системи, коректність
реалізації основних функціональних можливостей і зручність використання
розробленої платформи. Отримані результати свідчать про доцільність
застосування створеного програмного забезпечення для підтримки процесу
адопції тварин.
Практичне значення отриманих результатів
9
ЧДТУ 262104.001 ПЗ
Розроблене програмне забезпечення online-платформи адопції тварин,
призначене для використання у діяльності притулків, волонтерських організацій
та адоптерів. Інформаційна система дозволяє централізувати інформацію про
тварин, спростити процес пошуку нового дому, автоматизувати подання та
обробку заявок, а також покращити координацію дій між усіма учасниками
процесу. Програмний продукт є придатним для подальшого впровадження як
цифровий сервіс у сфері адопції тварин. Практична цінність системи полягає у
зменшенні витрат часу на обробку інформації, підвищенні ефективності
комунікації та створенні зручного середовища для взаємодії між притулками,
волонтерами та потенційними власниками. У подальшому платформа може бути
розширена шляхом додавання системи сповіщень, підтримки донатів, інтеграції з
іншими сервісами та мобільної версії.
Особистий внесок автора
У процесі виконання роботи автором особисто було проведено аналіз
предметної області та дослідження існуючих аналогів online-платформ для
адопції тварин, сформовано основні вимоги до системи, розроблено архітектуру
програмного забезпечення та структуру бази даних. Автором також було
спроєктовано інтерфейс користувача, реалізовано основний функціонал online-
платформи, забезпечено взаємодію між різними категоріями користувачів,
виконано тестування системи та проведено оцінку її працездатності. Особливу
увагу приділено зручності використання платформи, логіці взаємодії між
учасниками процесу та забезпеченню стабільної роботи програмного
забезпечення.
Бакалаврська робота складається зі вступу, трьох розділів, висновків,
списку використаних джерел та додатків.
У першому розділі «Існуючі методи та засоби розв’язання поставлених
завдань» розглянуто предметну область адопції тварин, проаналізовано сучасний
стан проблеми безпритульних тварин, а також досліджено існуючі методи та
програмні засоби, що використовуються для її вирішення.
У другому розділі «Впровадження результатів досліджень у практику
10
ЧДТУ 262104.001 ПЗ
проектування» було сформовано вимоги до програмного забезпечення,
розроблено архітектуру системи та структуру бази даних і визначено основні
компоненти online-платформи.
У третьому розділі «Розробка та тестування програмного забезпечення»
наведено обґрунтування вибору технологій реалізації, описано процес створення
програмного забезпечення та результати його тестування.
У висновках описано результати виконаня кваліфікаційної роботи та
описано можливості розвитку online платформи.
11
ЧДТУ 262104.001 ПЗ
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ
ПОСТАВЛЕНИХ ЗАВДАНЬ
Програмне створення online-платформи для адопції тварин, яка об’єднує
притулки, волонтерів, потенційних власників та інших зацікавлених учасників, є
складним завданням, що потребує застосування сучасних інформаційних
технологій, методів аналізу предметної області та засобів розробки програмного
забезпечення. Така система повинна не лише забезпечувати подання та зберігання
інформації про тварин, а й підтримувати ефективну взаємодію між усіма
учасниками процесу, автоматизувати основні етапи адопції та створювати єдиний
цифровий простір для координації допомоги.
Для реалізації поставленого завдання можуть бути використані такі методи
та засоби:
− розробка веб застосунку за допомогою HTML5[3] та CSS3[4] для
створення клієнтського інтерфейсу;
− використання серверної частини на мові програмування Python[5] із
застосуванням фреймворку Django[6] для реалізації бізнес-логіки;
− впровадження системи реєстрації та автентифікації користувачів;
− використання реляційної бази даних[7] для зберігання інформації про
тварин, користувачів, притулки, заявки та інші сутності;
− реалізація системи подання та обробки заявок на адопцію;
− використання засобів комунікації між користувачами, зокрема
повідомлень або сповіщень;
− забезпечення безпеки та конфіденційності даних;
− використання принципів UX/UI-дизайну для створення зручного й
адаптивного інтерфейсу.
1.1. Огляд технологій та засобів розробки online-платформ
Розробка сучасних інформаційних систем, зокрема online-платформ,
базується на використанні клієнт-серверної архітектури, яка забезпечує розподіл
12
ЧДТУ 262104.001 ПЗ
функцій між клієнтською та серверною частинами системи. Такий підхід
дозволяє створювати масштабовані та зручні у використанні програмні рішення.
Клієнтська частина веб застосунку відповідає за взаємодію з користувачем
та реалізується за допомогою HTML і CSS. HTML забезпечує структуру веб
сторінки, а CSS відповідає за її оформлення та адаптивність. Використання цих
технологій дозволяє створювати зручні, адаптивні та кросплатформні інтерфейси,
які можуть працювати на різних пристроях, включаючи персональні комп’ютери,
планшети та смартфони.
Переваги використання HTML i CSS:
− універсальність;
− підтримка всіма браузерами;
− можливість створення адаптивного дизайну.
Недоліки:
− складність підтримки великих проєктів;
− залежність від браузера.
Серверна частина системи забезпечує обробку запитів користувачів,
реалізацію бізнес-логіки та взаємодію з базою даних. Однією з найбільш
поширених мов програмування для серверної розробки є Python, яка
характеризується простотою синтаксису, високою читабельністю коду та
широкими можливостями для створення веб застосунків.
Переваги Python:
− простота у вивченні та використанні;
− висока читабельність коду;
− велика кількість бібліотек;
− активна спільнота розробників.
Недоліки:
− нижча продуктивність порівняно з компільованими мовами
програмування, такими як C++, Java;
− залежність від сторонніх бібліотек.
Для розробки веб систем на Python широко використовується фреймворк
13
ЧДТУ 262104.001 ПЗ
Django. Він забезпечує швидку розробку завдяки наявності вбудованих
компонентів, таких як система аутентифікації користувачів, адміністративна
панель, засоби роботи з базою даних та механізми забезпечення безпеки.
Переваги Django:
− швидка розробка;
− вбудована система аутентифікації;
− ORM для роботи з базами даних;
високий рівень безпеки.
Недоліки:
− складність для новачків;
− надлишковість для простих проєктів.
Для зберігання та обробки даних у веб застосунках використовуються
системи керування базами даних. У більшості випадків застосовуються реляційні
бази даних, які дозволяють ефективно зберігати структуровану інформацію та
забезпечують надійність і цілісність даних.
Важливим аспектом розробки є також забезпечення безпеки системи, що
включає захист персональних даних користувачів, реалізацію механізмів
автентифікації та авторизації, а також запобігання типовим веб загрозам.
Окрему увагу слід приділити принципам UX/UI-дизайну, які забезпечують
зручність використання системи. Інтерфейс повинен бути інтуїтивно зрозумілим,
адаптивним та доступним для різних категорій користувачів.
Таким чином, використання сучасних веб технологій, клієнт-серверної
архітектури, мови програмування Python, фреймворку Django та реляційних
баз даних дозволяє створити ефективну, безпечну та масштабовану online-
платформу для адопції тварин.
1.2. Методи аналізу online-платформ
Розробка інформаційної системи потребує застосування різних методів
аналізу, які дозволяють визначити вимоги, оцінити ефективність рішень та
мінімізувати ризики.
14
ЧДТУ 262104.001 ПЗ
Одним із ключових методів є аналіз потреб користувачів, який передбачає
вивчення вимог потенційних користувачів: притулків, волонтерів, адоптерів та
донаторів. Це дозволяє сформувати функціональні вимоги до системи.
SWOT-аналіз[8] використовується для оцінки сильних і слабких сторін
системи, а також можливостей і загроз.
Сильні сторони:
− централізація інформації;
− автоматизація процесів;
− зручність використання. Слабкі сторони:
− складність реалізації;
− потреба в технічній підтримці. Можливості:
− масштабування системи;
− інтеграція з іншими сервісами;
− розвиток функціоналу. Загрози:
− конкуренція;
− низька активність користувачів;
− ризики безпеки.
Моделювання процесів [2] дозволяє описати взаємодію користувачів із
системою та оптимізувати її роботу.
Аналіз ризиків [9] допомагає виявити потенційні проблеми, пов’язані з
безпекою, продуктивністю та надійністю системи.
Таким чином, використання різних методів аналізу дозволяє забезпечити
комплексний підхід до розробки.
1.3. Порівняльний аналіз існуючих аналогів
Перед початком розробки будь-якого онлайн-проєкту важливим етапом є
аналіз існуючих аналогів, що вже функціонують у відповідній предметній
області. Такий аналіз дозволяє оцінити функціональні можливості сучасних
інформаційних систем, визначити їх сильні та слабкі сторони, а також виявити
нереалізовані можливості, які можуть бути використані у власному проєкті.
Online платформи для адопції тварин виконують важливу соціальну
15
ЧДТУ 262104.001 ПЗ
функцію та спрямовані на зменшення кількості безпритульних тварин шляхом
спрощення процесу їх прилаштування. Вони забезпечують зв’язок між
притулками, волонтерами та потенційними власниками, що дозволяє підвищити
ефективність процесу адопції, а також сприяють поширенню культури
відповідального ставлення до тварин.
Розглянемо перший аналог, який називається – Petfinder
Рисунок 1.1 - Аналог, домашня сторінка Petfinder
Однією з найвідоміших міжнародних платформ є Petfinder[10]. Вона
функціонує переважно на території США та Канади та об’єднує тисячі притулків і
волонтерських організацій. Основною метою платформи є надання користувачам
зручного інструменту для пошуку тварин, які потребують нового дому.
Система містить великий каталог тварин, який регулярно оновлюється та
включає детальні профілі кожної тварини. У таких профілях зазначається
інформація про вік, породу, розмір, стать, стан здоров’я, характер та поведінкові
особливості. Користувачі можуть здійснювати пошук за різними параметрами,
що значно спрощує процес підбору тварини. Також доступні сторінки притулків
із контактною інформацією.
Водночас Petfinder прямо наголошує, що не бере безпосередньої участі в
самих адопціях: кожна організація самостійно визначає свої правила, політики та
16
ЧДТУ 262104.001 ПЗ
процедури щодо прилаштування тварин. Також сервіс містить довідкові
матеріали для користувачів, які планують адопцію, що робить його не лише
пошуковим ресурсом, а й інформаційною платформою.
Переваги:
— велика база даних тварин і притулків;
— розвинена система пошуку та фільтрації;
− детальні профілі тварин;
− популярність;
− наявність інформаційних матеріалів.
Недоліки:
− відсутність повної автоматизації процесу адопції;
− комунікація часто відбувається поза платформою;
− немає єдиної системи обробки заявок;
− слабка підтримка волонтерського напряму;
− не орієнтована на український ринок.
Розглянемо другий аналог, який називається «Сервіс адопції у
застосунку «Київ Цифровий»»
Сервіс адопції тварин у застосунку «Київ Цифровий»[11] став частиною
розвитку функціоналу застосунку, який сьогодні є головною міською цифровою
платформою для паркування, транспорту, опитувань, сповіщень та доступу до
муніципальних сервісів.
Перевагою цього підходу є інтеграція функцій адопції в уже популярну та
довірену цифрову екосистему. Для користувача це означає, що окремий сервіс не
потрібно шукати чи встановлювати окремо – він вбудований у знайомий міський
застосунок. Крім того, така інтеграція потенційно підвищує довіру до інформації
та полегшує взаємодію з міськими службами.
Водночас це рішення має виражене територіальне обмеження. Сервіс
орієнтований насамперед на мешканців Києва, що суттєво ускладнює його
масштабування на загальноукраїнський рівень. Також у відкритому описі
функціоналу немає підстав говорити про повноцінну рольову взаємодію між
17
ЧДТУ 262104.001 ПЗ
усіма учасниками процесу — наприклад, між незалежними притулками,
волонтерами та благодійниками з різних регіонів.
Рисунок 1.2 - Аналог, сервіс “Адопція тварин” в застосунку Київ Цифровий
Користувачі можуть переглядати доступних тварин, ознайомлюватися з
інформацією про них та подавати заявки. Основною особливістю є те, що сервіс
працює в межах уже популярного мобільного застосунку, що підвищує довіру та
зручність для користувачів.
18
ЧДТУ 262104.001 ПЗ
Рисунок 1.3 - Аналог, сервіс “Адопція тварин” в застосунку Київ
Цифровий
Переваги:
— інтеграція з міською системою;
− висока довіра користувачів;
19
ЧДТУ 262104.001 ПЗ
− зручність використання;
— доступність у мобільному застосунку;
− централізоване управління.
Недоліки:
− обмеження територією Києва;
− обмежений функціонал;
− відсутність розширеної ролі волонтерів;
− складність масштабування;
− залежність від міської інфраструктури.
Розглянемо третій аналог – UAnimals
UAnimals[12] є всеукраїнською зоозахисною організацією, яка активно
використовує цифрові технології. Вона застосовує веб-сайт, соціальні мережі та
чат-боти для організації допомоги тваринам, координації волонтерів та збору
коштів. Такий підхід дозволяє швидко поширювати інформацію та залучати
велику аудиторію.
Рисунок 1.4 - Аналог, домашня сторінка в UAnimals
Організація створила чатбот, який є єдиним офіційним каналом для
подання заявок на фінансову допомогу, безкоштовні послуги, евакуацію,
20
ЧДТУ 262104.001 ПЗ
стерилізацію, будівництво притулків і юридичну допомогу.
Рисунок 1.5 - Аналог, сторінка звернення про допомогу в Uanimals
Цифрова модель UAnimals відрізняється від класичних каталогових
платформ. Тут основну роль відіграє не єдиний каталог тварин, а система
координації допомоги, заявок, евакуації, підтримки притулків і взаємодії з
волонтерами. Організація також наводить конкретні показники допомоги
тваринам у воєнний час, що підтверджує ефективність цифрової координації в
кризових умовах. Разом із тим вона не реалізує повного процесу адопції в межах
однієї платформи й не дає класичного каталогу з єдиним життєвим циклом заявки
від пошуку тварини до ухвалення рішення.
Переваги:
— ефективна комунікація через цифрові канали;
− швидка координація допомоги;
− використання чат-ботів;
− масштабованість інформаційних кампаній;
− соціальна значущість діяльності.
Недоліки:
— немає каталогу тварин;
21
ЧДТУ 262104.001 ПЗ
− відсутність автоматизації адопції.
1.4. Постановка задачі
За результатами аналізу предметної області, технологій розробки та
існуючих аналогів програмного забезпечення online платформ адопції тварин,
визначення їх переваг і недоліків, можна сформулювати основні завдання, які
необхідно вирішити для досягнення поставленої мети та створення ефективної
інформаційної системи[13].
Аналіз потреб користувачів:
− визначення основних груп користувачів системи(адоптери, притулки,
волонтери, донатори, адміністратори);
− дослідження їхніх потреб та очікувань від online-платформи;
− аналіз існуючих процесів адопції тварин та взаємодії між учасниками.
Формування вимог до системи:
− визначення функціональних вимог, зокрема пошук тварин, перегляд
профілів, подання заявок та комунікація між притулками та адоптерами;
− визначення не функціональних вимог:
− вимог до зручності, продуктивності, безпеки та надійності системи
[14].
Вибір технологій для розробки online платформи:
− для розробки клієнтської частини: HTML5, CSS3;
− для серверної частини: Python;
− вибір фреймворку для реалізації бізнес-логіки (Django);
− вибір системи керування базами даних для зберігання інформації.
Розробка та реалізація системи:
— проєктування архітектури системи, включаючи логічну та фізичну
моделі;
− реалізація функціональних можливостей платформи для різних типів
користувачів:
− потенційні власники повинні мати можливість здійснювати пошук
22
ЧДТУ 262104.001 ПЗ
тварин, переглядати інформацію та подавати заявки на адопцію;
− притулки повинні мати можливість додавати та редагувати інформацію
про тварин і обробляти заявки;
− волонтери повинні мати можливість долучатися до допомоги та
взаємодіяти з притулками;
− адміністратори повинні здійснювати контроль за роботою системи.
Тестування системи:
− провести функціональне тестування системи для перевірки її коректної
роботи;
− перевірка на відповідність вимогам і потребам користувачів.
Підводячи підсумки, можна зазначити, що розробка online-платформи для
адопції тварин є складним і багатокомпонентним завданням, яке вимагає
комплексного підходу до аналізу, проєктування та реалізації. Виконання
зазначених завдань дозволить створити ефективну систему, що забезпечить
автоматизацію процесів адопції, покращить взаємодію між учасниками та
сприятиме вирішенню проблеми безпритульних тварин.
23
ЧДТУ 262104.001 ПЗ
ВИСНОВОК ДО ПЕРШОГО РОЗДІЛУ
У першому розділі проведено аналіз наукової та технічної інформації, що
стосується розробки online-платформ для адопції тварин. Розглянуто сучасні
підходи до організації цифрових сервісів у цій сфері, визначено основні
проблеми, пов’язані з фрагментованістю інформації, недостатньою
автоматизацією та обмеженою взаємодією між учасниками процесу. Також було
проаналізовано існуючі аналоги, зокрема Petfinder, сервіс адопції в застосунку
«Київ Цифровий» та UAnimals. На основі проведеного аналізу встановлено,
що наявні рішення не забезпечують повного функціонального охоплення всіх
етапів процесу адопції в межах єдиної системи. Це підтверджує актуальність
розробки власної online-платформи та доцільність подальших досліджень у даній
галузі.
24
ЧДТУ 262104.001 ПЗ
РОЗДІЛ 2. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У
ПРАКТИКУ ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
ІНФОРМАЦІЙНИХ СИСТЕМ
2.1. Моделювання предметної області
2.1.1. Предметна область моделювання. Модель предметної області.
Словник предметної області
Предметна область моделювання online платформи адопції тварин
складається з усіх процесів, що підлягають автоматизації, для покращення
взаємодії між користувачами, притулками та волонтерами. Основною метою
такої системи є спрощення процесу пошуку тварин, подання заявок на адопцію та
організацію допомоги притулкам.
Основні компоненти предметної області для online-платформи включають:
− реєстрація користувачів: процес створення облікового запису, що
передбачає введення персональних даних(ім’я, електронна адреса,
пароль). Це забезпечує ідентифікацію користувача в системі та надання
йому доступу до функціоналу платформи;
− створення та редагування профілів тварин: функція, що дозволяє
притулкам та волонтерам додавати інформацію про тварин, включаючи
ім’я, вид, вік, стать, стан здоров’я, опис та фотографії;
− перегляд та пошук тварин: можливість для користувачів переглядати
каталог тварин та здійснювати пошук за різними параметрами, що
дозволяє швидко знайти тварину відповідно до заданих критеріїв;
− подання заявок на адопцію: процес, за допомогою якого користувач
може подати заявку на усиновлення тварини, що включає передачу
необхідної інформації притулку;
− обробка заявок притулками: функція, що дозволяє притулкам
переглядати заявки, приймати рішення щодо адопції та змінювати
статус заявки;
25
ЧДТУ 262104.001 ПЗ
− взаємодія між користувачами: забезпечує можливість обміну
повідомленнями або отримання сповіщень щодо змін статусу заявок або
оновлення інформації;
− адміністрування системи: функції контролю та модерації, що
виконуються адміністраторами для забезпечення коректної роботи
платформи.
Моделювання предметної області дозволяє схематично створити структуру
online-платформи та визначити функції системи. Це забезпечує ефективний
процес розробки, зменшує ризик помилок та гарантує відповідність системи
потребам користувачів [15].
Модель предметної області. Модель предметної області [13] online-
платформи для адопції тварин охоплює процеси від пошуку тварин до подання
заявок на адопцію, а також описує структуру системи та її зв’язків.
Основні компоненти моделі включають:
1 Реєстрація користувачів.
2 Процес реєстрації користувачів передбачає збирання та зберігання
таких даних:
− ім’я користувача: ідентифікація особи;
− електронна адреса: унікальний ідентифікатор для входу в систему;
− пароль: забезпечення захисту облікового запису;
− роль користувача: визначення прав доступу(адоптер, представник
притулку/ волонтер, адміністратор);
− контактні дані: забезпечення можливості комунікації між
користувачами.
3 Перегляд інформації про тварин. Функція, що надає користувачам
доступ до інформації про тварин, включає:
— ім’я тварини:
— ідентифікація;
− тип тварини:
− класифікація (кіт, собака тощо);
26
ЧДТУ 262104.001 ПЗ
− вік:
− визначення вікової категорії;
− стать:
− характеристика тварини;
− опис:
− поведінкові особливості та додаткові відомості;
− фото:
− зображення.
4 Пошук та перегляд каталогу тварин. Ця функція дозволяє користувачам
отримувати актуальну інформацію про доступних для адопції тварин,
включаючи:
− фільтрацію за типом;
− перегляд списку тварин: відображення доступних варіантів;
− доступ до детального профілю: повна інформація про тварину.
5 Подання заявок на адопцію. Функція, яка дозволяє користувачам
подавати заявки на адопцію тварин, включає:
− вибір тварини: визначення об’єкта адопції;
− дані користувача: інформація про заявника;
− статус заявки: стан розгляду(очікує, схвалено, відхилено);
6 Обробка заявок притулками. Ця функція забезпечує взаємодію між
притулками та користувачами:
− перегляд заявок: список отриманих звернень;
− прийняття або відхилення заявки: управління процесом адопції;
− зміна статусу тварини: оновлення інформації після адопції.
7 Комунікація між користувачами. Функція забезпечує двосторонню
взаємодію між учасниками системи:
− текст повідомлення;
— відправник: користувач, який надсилає повідомлення;
− отримувач: користувач, якому адресоване повідомлення.
Схема моделі предметної області
27
ЧДТУ 262104.001 ПЗ
1 Користувачі системи:
− потенційні власники тварин(адоптери);
− притулки, зоозахисні організації та волонтери;
− адміністратори системи.
2 Дані про користувачів:
− ідентифікаційні дані(ім’я, електронна адреса);
− контактна інформація;
− роль у системі(користувач, притулок, адміністратор).
3 Дані про тварин:
− ім’я тварини;
− вид(кіт, собака тощо);
− характеристика(вік, стать);
− опис;
− фотографії;
− статус(доступна, зарезервована, прилаштована).
4 Заявки на адопцію:
− користувач, що подав заявку;
− тварина, до якої відноситься заявка;
− статус заявки(очікує, схвалено, відхилено);
− дата подання заявки.
5 Повідомлення:
— повідомлення між користувачами.
Моделювання предметної області важливе для створення детальної
структури online-платформи для адопції тварин. Це дозволяє:
− забезпечити відповідність системи потребам користувачів, а саме:
необхідні функції та взаємодії між адоптерами та притулками;
− оптимізувати процес розробки: розуміння структури системи дозволяє
ефективно планувати етапи реалізації та уникати помилок;
− покращити підтримку та розширення системи: наявність моделі спрощує
внесення змін і додавання нового функціоналу в майбутньому.
28
ЧДТУ 262104.001 ПЗ
Словник предметної області
Online-платформа адопції тварин – інформаційна система, що забезпечує
пошук, вибір та усиновлення тварин через мережу Інтернет.
Користувач(адоптер) – особа, яка використовує систему для пошуку та
адопції тварин.
Притулок – організація, що займається утриманням тварин та їх
прилаштуванням у нові сім’ї.
Волонтер – особа, яка надає допомогу притулкам та бере участь у процесі
адопції.
Тварина – об’єкт системи, для якого зберігається інформація з метою
подальшого прилаштування.
Заявка на адопцію – запит користувача на усиновлення тварини. Статус
тварини – стан, що визначає доступність тварини для адопції. Повідомлення –
засіб комунікації між користувачами системи.
Адміністратор – користувач, який здійснює контроль та управління
системою.
База даних – структуроване сховище інформації про користувачів, тварин
та заявки.
2.1.2. Елементи моделювання предметної області
Під час моделювання предметної області та при проектуванні програмного
забезпечення для онлайн платформи буде використовуватись різні елементи UML
[16], за допомогою яких буде відображено структуру та функціонал програмного
забезпечення. Для діаграм мови UML існують три типи візуальних позначень:
графічні символи, зв’язки (єднальні елементи), текст (рисунок 2.1-2.2).
Для моделювання предметної області online-платформи адопції тварин
застосовуються діаграми UML[17], які дозволяють формалізувати структуру
системи та описати взаємодію між її складовими. UML забезпечує можливість
візуалізації, специфікації, конструювання та документування програмної системи,
що є важливим для розуміння її архітектури.
Основні елементи моделювання [15], що використовуються для опису
29
ЧДТУ 262104.001 ПЗ
предметної області, включають:
− класи – відображають основні сутності системи, такі як користувач,
тварина, заявка, повідомлення;
− об’єкти – конкретні екземпляри класів, що містять значення атрибутів;
− атрибути – характеристики класів (наприклад, ім’я, вік, статус);
− методи (операції) – дії, які можуть виконувати об’єкти (створення заявки,
редагування профілю, відправлення повідомлення);
− асоціації – зв’язки між класами, що відображають взаємодію між
сутностями.
Рисунок 2.1 – Основні графічні символи UML [1]
30
ЧДТУ 262104.001 ПЗ
Рисунок 2.2 – Єднальні елементи UML
2.1.3. Робоча область моделювання
Робоча область моделювання охоплює всі аспекти online-платформи для
31
ЧДТУ 262104.001 ПЗ
адопції тварин, які підлягають аналізу, проєктуванню та подальшій реалізації. У
контексті розробки online-платформи для адопції тварин робоча область
моделювання включає всі ключові компоненти системи, необхідні для
забезпечення ефективної взаємодії між користувачами, притулками, волонтерами
та адміністраторами. Вона відображає процеси, що підлягають автоматизації,
зокрема пошук тварин, подання та обробку заявок, комунікацію між учасниками
та управління інформацією.
Робоча область моделювання включає в себе опис сутностей, атрибутів,
зв’язків та функцій, які повинні бути реалізовані для роботи online-платформи.
Рисунок 2.3 – Модель предметної області online-платформи для адопції тварин
Основні компоненти:
32
ЧДТУ 262104.001 ПЗ
1 Користувачі (Users):
− адоптери;
− притулки;
− адміністратори.
2 Притулки (Shelters)
3 Тварини (Animals)
4 Заявки (Applications)
5 Повідомлення (Messages)
2.2. Формування та аналіз вимог
2.2.1. Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні
вимоги
Формування вимог до програмного забезпечення є важливим етапом
розробки програмного забезпечення, оскільки на цьому етапі визначаються
основні функції системи, її поведінка, обмеження та характеристики, які повинні
бути реалізовані в процесі розробки. Процес формування вимог включає в себе
аналіз предметної області, визначення потреб користувачів, систематизацію
функцій системи та їх подальшу деталізацію.
Первинні та детальні вимоги
Первинні вимоги описують загальні функції системи та її основне
призначення:
− online-платформа повинна забезпечувати реєстрацію та авторизацію
користувачів(адоптерів, представників притулків, адміністраторів);
− система повинна надавати можливість перегляду інформації про тварин,
включаючи опис, вік, тип, стан та інші характеристики;
− користувачі повинні мати можливість здійснювати пошук і фільтрацію
тварин;
— платформа повинна забезпечувати можливість подання заявок на
адопцію тварин;
33
ЧДТУ 262104.001 ПЗ
− притулки повинні мати можливість створювати та редагувати профілі
тварин;
− online-платформа повинна підтримувати обмін повідомленнями між
користувачами.
Детальні вимоги описують функції, інтерфейси, дані та інші частини
розроблюваного програмного забезпечення. За їх допомогою уточнюються
первинні вимоги та деталі реалізації функціоналу системи.
1 Реєстрація та авторизація користувачів:
− форма реєстрації повинна містити поля для введення необхідної
інформації;
− після реєстрації користувач повинен отримати підтвердження про
створення облікового запису.
2 Перегляд інформації про тварин:
− інформація повинна відображатися у вигляді списку з можливістю
перегляду детальної сторінки;
− кожна тварина повинна містити опис, фото, тип та статус;
− користувач повинен мати можливість фільтрувати результати
пошуку.
3 Подання заявок на адопцію:
− користувач повинен мати можливість створити заявку для обраної
тварини;
− заявка повинна містити інформацію про користувача та дату
подання;
− притулок повинен мати можливість змінювати статус заявки.
4 Обмін повідомленнями:
− користувачі повинні мати можливість надсилати повідомлення один
одному;
− повідомлення повинні зберігатися для подальшого перегляду;
− система повинна забезпечувати відображення історії повідомлень.
Вимоги замовника і розробника
34
ЧДТУ 262104.001 ПЗ
Вимоги замовника визначаються очікуваннями кінцевих користувачів
системи та включають в себе функціональні та нефункціональні вимоги. Вони
формуються у твердження, що повинні бути реалізовані для задоволення потреб:
− інтерфейс online-платформи повинен бути зручним та простим у
використанні;
− запити мають швидко оброблятися, без затримок;
− платформа повинна забезпечувати надійність та безпеку даних.
Вимоги розробника визначають технічні аспекти реалізації, а також
технічні можливості та обмеження:
− система повинна бути реалізована з використанням мови програмування
Python;
− серверна частина повинна базуватися на фреймворку Django;
− клієнтська частина повинна бути реалізована за допомогою HTML5 та
CSS3;
− для зберігання даних повинна використовуватися реляційна база даних;
− система повинна підтримувати масштабованість та модульну структуру.
Функціональні та нефункціональні вимоги
Функціональні вимоги[14] визначають дії, які програмне забезпечення
повинно виконувати. Для online-платформи адопції тварин функціональними
вимогами є:
− реєстрація та авторизація користувачів;
− перегляд інформації про тварин;
− пошук і фільтрація тварин;
− подання заявок на адопцію;
− обробка заявок притулками;
− обмін повідомленнями.
Нефункціональні вимоги[14] описують такі характеристики системи, як
продуктивність, зручність використання, надійність, безпека та інші
характеристики, що впливають на оцінку ефективності роботи системи.
Для програмного забезпечення онлайн платформи для адопції такими
35
ЧДТУ 262104.001 ПЗ
вимогами є:
− продуктивність: система повинна обробляти запити користувачів за 1–2
секунди;
− зручність використання: інтерфейс повинен бути простим та зрозумілим;
− надійність: система повинна забезпечувати роботу без збоїв;
− безпека: дані користувачів повинні бути захищені шифруванням.
Формування вимог до програмного забезпечення дозволило визначити
основні функції та характеристики online-платформи адопції тварин, а розробка
згідно цих вимог забезпечує відповідність системи до вимог замовника тп потреб
користувачів.
2.2.2. Формування вимог за допомогою діаграми прецедентів
Діаграма прецедентів відображає взаємодію користувачів(акторів) із
системою через функціональні можливості(прецеденти), які вона надає. Такий
підхід дозволяє наочно представити основні сценарії використання системи та
визначити ролі користувачів у межах online-платформи.
У даній роботі діаграма прецедентів описує взаємодію користувачів online-
платформи адопції тварин, зокрема потенційних власників (адоптерів), притулків
та інших учасників процесу.
Рисунок 2.4 – Діаграма прецедентів для online-платформи адопції тварин
36
ЧДТУ 262104.001 ПЗ
Діаграма прецедентів, зображена на рисунку 2.4, відображає основні
функціональні можливості системи та ролі кожного з акторів.
Розглянемо детальніше кожен із прецедентів:
1 Реєстрація:
− актори: користувач, притулок;
− опис: нові користувачі та притулки можуть створювати облікові
записи, вводячи необхідні персональні або організаційні дані. Після
реєстрації користувач отримує доступ до функціоналу системи.
2 Вхід у систему:
− актори: користувач, притулок;
− опис: зареєстровані користувачі можуть авторизуватися в системі
для отримання доступу до персоналізованих функцій, таких як
подання заявок або редагування інформації.
3 Перегляд тварин:
− актор: користувач;
− опис: користувач має можливість переглядати список доступних
тварин, ознайомлюватися з їх характеристиками, фотографіями та
статусом.
4 Пошук тварин:
− актор: користувач;
− опис: система надає можливість виконувати пошук тварин за
параметрами.
5 Подання заявки:
− актор: користувач;
− опис: користувач може подати заявку на адопцію обраної тварини.
Заявка містить необхідну інформацію та передається притулку для
подальшого розгляду.
6 Обмін повідомленнями:– актори: користувач, притулок;
− опис: функція забезпечує двосторонню комунікацію між
користувачем і представниками притулку. Вона дозволяє
37
ЧДТУ 262104.001 ПЗ
уточнювати деталі адопції, ставити запитання та узгоджувати
подальші дії.
7 Додавання тварини:
− актор: притулок;
− опис: притулок має можливість додавати нових тварин до системи,
заповнюючи інформацію про них (опис, характеристики, фото).
8 Редагування тварини:
− актор: притулок;
− опис: притулок може оновлювати інформацію про тварин,
змінювати їх статус або редагувати опис.
9 Обробка заявки:
− актор: притулок;
− опис: притулок отримує заявки від користувачів та має можливість
їх переглядати, схвалювати або відхиляти.
10 Модерація користувачів:
− актор: адміністратор;
− опис: адміністратор здійснює контроль за діяльністю користувачів,
перевіряє їх дії, може блокувати облікові записи або редагувати
інформацію для забезпечення коректної роботи системи.
Діаграма прецендентів дозволила візуально відобразити основні функції
online-платформи та взаємодію користувачів з нею, а також описує які дії може
виконувати кожен з акторів.
2.3. Проектування логічної структури online-платформи
В даному підрозділі буде детально розглянуто проєктування логічної
структури online-платформи для адопції тварин. На цьому етапі формується
внутрішня структура програмного забезпечення, визначаються її основні класи,
властивості, методи та взаємозв’язки між ними.
Спочатку буде представлено діаграми класів[15], які дозволяють наочно
відобразити структуру системи та взаємодію між її компонентами. Це дає змогу
38
ЧДТУ 262104.001 ПЗ
зрозуміти поведінку об’єктів та принципи функціонування програмного
комплексу. Далі буде розглянута діаграма пакетів, яка відображає групування
класів у логічні модулі, що дозволяє структурувати систему, зменшити її
складність та полегшити процес розробки і підтримки.
2.3.1. Діаграми класів
Для розуміння структури системи було спроєктовано діаграму класів, яка
відображає взаємодію між основними сутностями платформи (Рисунок 2.5).
Рисунок 2.5 – Діаграма класів без атрибутів та методів для online-
платформи адопції тварин
39
ЧДТУ 262104.001 ПЗ
Діаграма класів без атрибутів та методів представлена п’ятьма основними
класами:
— користувач;
— притулок;
− тварина;
− заявка;
− повідомлення.
Між цими класами встановлено такі зв’язки:
притулок → тварина: додає / редагує;
користувач → тварина: переглядає;
користувач → заявка: подає;
заявка → тварина: відноситься до конкретної тварини;
притулок → заявка: обробляє;
користувач → повідомлення: надсилає;
притулок → повідомлення: надсилає;
повідомлення → притулок: отримує;
повідомлення → користувач: отримує.
Далі представлено таблицю класів з атрибутами та методами (Рисунок 2.6
Діаграма класів)
В результаті отримано діаграму класів з атрибутами та методами: Клас
Користувач.
Атрибути:
− ім’я: String;
− електронна адреса: String;
− пароль: String;
− номер телефону: String.
Методи:
− реєструватися(): void;
− авторизуватися(): void;
40
ЧДТУ 262104.001 ПЗ
− переглядатиТварин(): Array<Тварина>;
− шукатиТварин(тип: String, статус: String): Array<Тварина>;
− податиЗаявку(тварина: Тварина): void;
− надіслатиПовідомлення(одержувач: String, текст: String): void;
− отриматиПовідомлення(відправник: String, текст: String): void.
Рисунок 2.6 – Діаграма класів online-платформи адопції тварин
Клас Притулок.
Атрибути:
− назва: String;
— адреса: String;
− контактний телефон: String;
41
ЧДТУ 262104.001 ПЗ
− електронна адреса: String;
− пароль: String;
− опис: String.
Методи:
− реєструватися(): void;
− авторизуватися(): void;
− додатиТварину(тварина: Тварина): void;
− редагуватиТварину(тварина: Тварина): void;
− обробитиЗаявку(заявка: Заявка, статус: String): void;
− надіслатиПовідомлення(одержувач: Користувач, текст: String): void;
− отриматиПовідомлення(відправник: Користувач, текст: String): void.
Клас Тварина. Атрибути:
− ім’я: String;
− тип: String;
− стать: String;
− опис: String;
− фото: String;
− статус: String.
Методи:
– отриматиІнформацію(): Тварина;
– оновитиСтатус(статус: String): void;
– редагуватиОпис(опис: String): void. Клас Заявка.
Атрибути:
користувач: Користувач;
тварина: Тварина;
дата подання: DateTime;
статус заявки: String;
коментар: String. Методи:
— створити(): void;
− змінитиСтатус(статус: String): void;
42
ЧДТУ 262104.001 ПЗ
− переглянутиЗаявку(): Заявка.
Клас Повідомлення. Атрибути:
− відправник: String;
− текст повідомлення: String;
− одержувач: String;
− дата: DateTime.
Методи:
− надсилати(): void;
− отримувати(): void.
Отже, за допомогою цієї діаграми описано структуру та взаємодію між
основними компонентами системи.
2.3.2. Діаграма пакетів
Діаграма пакетів[18] в UML використовується для проектування структури
системи з окремих компонентів(класи та підсистеми), що об’єднані в логічні
модулі або пакети. Це дозволяє зрозуміти загальну архітектуру програмного
забезпечення та взаємодію між його складовими.
Для розроблюваної online-платформи адопції тварин можна виділити кілька
основних пакетів:
− User Management: управління користувачами та притулками;
− Animal Management: управління інформацією про тварин;
− Application Management: управління заявками на адопцію;
− Messaging: обробка повідомлень між користувачами та притулками.
1 User Management – пакет відповідає за зберігання та обробку інформації
про користувачів системи:
− користувач: ім’я, електронна адреса, пароль, номер телефону;
− притулок: назва, адреса, контактний телефон, електронна адреса,
пароль, опис.
Функціональність:
− реєстрація користувачів та притулків;
− авторизація в системі;
43
ЧДТУ 262104.001 ПЗ
− управління профілями користувачів і притулків.
Рисунок 2.7 – Діаграма пакетів online-платформи для адопції тварин Нижче
розглянемо кожний пакет більш детально.
2 Animal Management – пакет відповідає за роботу з інформацією про
тварин, які доступні для адопції:
− тварина: ім’я, тип, стать, опис, фото, статус.
Функціональність:
44
ЧДТУ 262104.001 ПЗ
− додавання тварин притулками;
− редагування інформації про тварин;
− зміна статусу тварини;
− перегляд та пошук тварин користувачами.
3 Application Management – пакет забезпечує роботу із заявками на
адопцію: заявка: користувач, тварина, дата подання, статус заявки, коментар.
Функціональність:
− створення заявки користувачем;
− перегляд заявок;
− зміна статусу заявки притулком;
− обробка заявок на адопцію.
4 Messaging – відповідає за комунікацію між користувачами та
притулками:
− повідомлення: відправник, одержувач, текст повідомлення, дата та
час відправлення.
Функціональність:
− надсилання повідомлень користувачами;
− надсилання повідомлень притулками;
− отримання повідомлень обома сторонами;
− зберігання історії комунікації.
Діаграма пакетів дозволяє візуалізувати систему на високому рівні,
відображаючи як різні компоненти згруповані в логічні модулі та їх взаємодію
між собою.
2.4. Архітектура проєктування
У цьому підрозділі розглядається архітектура online-платформи для адопції
тварин. Для опису архітектури використовується діаграма компонентів, яка
демонструє, як різні програмні модулі взаємодіють між собою та які функції вони
виконують і яким чином організовано обмін даними між ними..
2.4.1. Діаграма компонентів
45
ЧДТУ 262104.001 ПЗ
Діаграма компонентів (Component Diagram) [19] в UML використовується
для відображення структури фізичної реалізації системи. Компоненти можуть
представляти як окремі програмні модулі, так і сервіси, що забезпечують
виконання певних функцій системи.
Діаграма компонентів (Рисунок 2.8) включає такі основні компоненти
системи:
1 User Management Service Функції:
− реєстрація користувачів та притулків;
− авторизація в системі;
− управління профілями користувачів і притулків.
Залежності:
− Web Interface: отримання даних від користувача;
− Database Service: зберігання даних користувачів та притулків.
2 Animal Management Service
Рисунок 2.8 – Діаграма компонентів online-платформи для адопції тварин
Функції:
— додавання інформації про тварин;
− редагування профілів тварин;
46
ЧДТУ 262104.001 ПЗ
− зміна статусу тварин;
− надання доступу до каталогу тварин.
Залежності:
− Web Interface: взаємодія з користувачем;
− Database Service: зберігання інформації про тварин.
3 Application Management Service Функції:
− створення заявок на адопцію;
− перегляд заявок;
— зміна статусу заявок;
− обробка заявок притулками.
Залежності:
− Web Interface: отримання запитів від користувачів;
− Database Service: зберігання інформації про заявки.
4 Messaging Service Функції:
− обмін повідомленнями між користувачами та притулками;
− обробка вхідних та вихідних повідомлень;
− зберігання історії повідомлень.
Залежності:
− Web Interface: передача повідомлень;
− Database Service: зберігання повідомлень.
5 Database Service Функції:
− зберігання та управління всіма даними системи;
− забезпечення доступу до даних для інших компонентів.
Залежності: використовується всіма сервісами для збереження та отримання
даних.
6 Web Interface Функції:
− забезпечення взаємодії користувача з системою;
− відображення інформації про тварин, заявки та повідомлення;
− передача запитів до серверної частини.
Залежності: взаємодіє з усіма сервісами для отримання та відображення
47
ЧДТУ 262104.001 ПЗ
даних.
Діаграма компонентів відображає загальну архітектуру програмного
забезпечення online-платформи адопції тварин та демонструє взаємодію
компонентів між собою.
2.4.2. Розгортання програмної системи на апаратних засобах. Діаграма
розгортання
Розгортання програмної системи на апаратних засобах складається з
встановлення, налаштування та запуск всіх компонентів системи на відповідних
фізичних або віртуальних ресурсах. Для online-платформи адопції тварин
розгортання включає розміщення веб-сервера, серверної частини (backend), бази
даних та інших допоміжних сервісів.
Для візуалізації фізичної структури системи відокремимо основні
компоненти розгортання і побудуємо на їх основі діаграму розгортання (рисунок
2.9), розподіливши програмні модулі по відповідних вузлах.
Основні компоненти розгортання.
1 Веб-сервер (Web Server):
— відповідає за взаємодію з користувачами через веб-інтерфейс;
− забезпечує відображення функціональних можливостей системи;
− передає запити до сервера застосунку для подальшої обробки.
2 Сервер застосунку (Application Server):
1 відповідає за обробку запитів від користувачів та виконання бізнес-
логіки системи;
2 реалізує основні сервіси:
– User Management Service;
– Animal Management Service;
– Application Management Service;
– Messaging Service;
3 Забезпечує виконання операцій, пов’язаних із управлінням
користувачами, тваринами, заявками та повідомленнями;
48
ЧДТУ 262104.001 ПЗ
4 взаємодіє з сервером бази даних обміну інформацією.
3 Сервер бази даних (Database Server):
− зберігає данні системи;
− містить інформацію про користувачів, притулки, тварин, заявки та
повідомлення;
− забезпечує швидкий доступ до даних та їх цілісність;
− реалізований із використанням реляційної СУБД PostgreSQL.
Рисунок 2.9 – Діаграма розгортання online-платформи для адопції тварин
Діаграма розгортання складається з наступних елементів та їх взаємодії:
1 Web Server:
− приймає запити від клієнта;
− передає їх до Application Server;
− повертає результати обробки клієнту.
2 Application Server:
— обробляє запити, пов’язані з користувачами, тваринами, заявками та
повідомленнями;
49
ЧДТУ 262104.001 ПЗ
− взаємодіє з Database Server для отримання та збереження даних.
− містить сервіси: User Management Service, Animal Management
Service, Application Management Service, Messaging Service;
− виконує основні функції системи.
3 Database Server:
− зберігає всі дані системи;
− надає доступ до даних для Application Server.
Таким чином, діаграма розгортання показує, як програмні компоненти
розміщуються на апаратних засобах та їх взаємодію між собою. Це дозволяє
оцінити необхідні ресурси для роботи системи.
2.5. Моделювання поведінки системи
У цьому підрозділі детально розглядаються динамічні аспекти
функціонування online-платформи для адопції тварин. Спочатку буде розглянуто
діаграму діяльності, яка відображає потоки виконання дій у системі. Далі буде
розглянуто діаграму послідовності, яка описує порядок взаємодій між об’єктами
та діаграму комунікацій, що відображає взаємодію між об’єктами, та зв’язки між
ними, а також буде розглянуто діаграму скінченного автомату, що описує
можливі стани об'єкта та переходи між ними.
2.5.1. Діаграма діяльності
Діаграма діяльності використовується для відображення поведінки
системи, а саме: послідовність дій від початку до завершення процесу. Діаграма
показує основні кроки виконання операцій, можливі розгалуження та взаємодію
користувачів із системою.
Діаграма діяльності(рисунок 2.10) із розгалуженнями на користувача та
притулок дозволяє оцінити різні сценарії використання системи. Це дає змогу
зрозуміти, як різні типи користувачів взаємодіють із платформою та які функції
їм доступні.
50
ЧДТУ 262104.001 ПЗ
Рисунок 2.10 – Діаграма діяльності online-платформи для адопції тварин
Опис кроків діяльності, зображених на діаграмі діяльності:
1 Користувач
Відкрити online-платформу:
— користувач відкриває веб-платформу через браузер.
Реєстрація / вхід користувача:
− користувач проходить реєстрацію або виконує вхід у систему.
Перегляд і пошук тварин:
− користувач переглядає список тварин;
− за потреби здійснює пошук за параметрами.
Перегляд профілю тварини:
— користувач відкриває профіль обраної тварини;
− переглядає опис, фото та статус.
Подання заявки на адопцію:
51
ЧДТУ 262104.001 ПЗ
− користувач подає заявку на обрану тварину.
Надсилання повідомлення:
− користувач надсилає повідомлення притулку для уточнення деталей.
Отримання відповіді від притулку:
− користувач отримує повідомлення або відповідь щодо заявки.
2 Притулок
Реєстрація / вхід притулку:
− представник притулку реєструється або входить у систему.
Додавання або редагування тварини:
− притулок додає нову тварину;
− редагує дані про вже наявних тварин.
Перегляд заявок:
− притулок переглядає заявки, подані користувачами.
Схвалення або відхилення заявки:
− притулок приймає рішення щодо заявки на адопцію.
Оновлення статусу тварини:
− після обробки заявки притулок оновлює статус тварини.
Отримання/надсилання повідомлення:
− притулок отримує повідомлення від користувачів;
− за потреби надсилає відповідь.
3 Адміністратор Вхід адміністратора:
— адміністратор виконує вхід у систему.
Перегляд користувачів:
− адміністратор переглядає список зареєстрованих користувачів.
Модерація користувачів:
− адміністратор контролює дії користувачів та може обмежувати
доступ у разі порушень.
Контроль коректної роботи системи:
− адміністратор стежить за стабільністю роботи платформи та
коректністю даних.
52
ЧДТУ 262104.001 ПЗ
Діаграма діяльності дозволяє візуально показати поведінку online-
платформи для адопції тварин залежно від ролі користувача. Вона допомагає
зрозуміти послідовність дій у системі та визначити основні сценарії
використання.
2.5.2. Діаграма послідовності
Діаграма послідовності описує взаємодію між об’єктами системи у певній
послідовності та показує, які повідомлення передаються між компонентами
системи та в якому порядку. Такий тип діаграми дозволяє детально простежити
логіку роботи системи під час виконання конкретного сценарію[20].
Створимо дві діаграми послідовності для online-платформи адопції тварин
за двома сценаріями.
Перша діаграма (рисунок 2.11) – сценарій «Реєстрація користувача та
перегляд тварин»
Опис кроків, зображених на першій діаграмі: Відкриття платформи:
− користувач відкриває веб-платформу;
− система відображає головну сторінку.
Реєстрація користувача:
— користувач обирає опцію реєстрації;
− система запитує введення особистих даних;
− користувач вводить свої дані (ім’я, email, пароль);
− система зберігає дані в базі даних;
− система повідомляє користувача про успішну реєстрацію.
Перегляд тварин:
− користувач обирає перегляд тварин;
− система формує запит до сервісу управління тваринами;
− сервіс звертається до бази даних;
− база даних повертає список тварин;
− сервіс повертає дані до системи;
− система відображає список тварин користувачу.
53
ЧДТУ 262104.001 ПЗ
Рисунок 2.11 – Діаграма послідовності за сценарієм «Реєстрація користувача та
перегляд тварин»
Діаграма послідовності[21] для цього сценарію дозволяє наочно побачити
процес взаємодії між користувачем, системою, сервісами та базою даних під час
реєстрації та перегляду доступних тварин.
Друга діаграма (рисунок 2.12) – сценарій «Подання заявки та обмін
повідомленнями»
Опис кроків, зображених на другій діаграмі:
Відкриття платформи:
− користувач відкриває систему;
− система відображає головну сторінку.
Подання заявки на адопцію:
− користувач обирає тварину;
− система запитує підтвердження створення заявки;
54
ЧДТУ 262104.001 ПЗ
− користувач підтверджує дію;
− система передає дані до сервісу управління заявками;
− сервіс зберігає заявку в базі даних;
− база даних підтверджує збереження;
− сервіс повідомляє систему про успішне створення заявки;
− система повідомляє користувача.
Рисунок 2.12 – Діаграма послідовності за сценарієм «Подання заявки та обмін
повідомленнями»
Обробка заявки притулком:
притулок отримує інформацію про нову заявку;
притулок переглядає заявку;
приймає рішення(схвалити або відхилити);
система оновлює статус заявки через сервіс;
база даних зберігає зміни. Обмін повідомленнями:
користувач надсилає повідомлення притулку;
55
ЧДТУ 262104.001 ПЗ
система передає повідомлення до сервісу повідомлень;
сервіс зберігає повідомлення в базі даних;
притулок отримує повідомлення;
притулок надсилає відповідь;
користувач отримує повідомлення.
Дана діаграма послідовності відображає взаємодію між користувачем,
притулком та системою під час подання заявки та обміну повідомленнями. Вона
демонструє, як дані передаються між компонентами системи та як реалізується
основна функціональність платформи.
2.5.3. Діаграма комунікації
Діаграма комунікації (Communication Diagram)[22] відображає взаємодію
між об’єктами системи в межах певного сценарію, акцентуючи увагу на
структурних зв’язках між ними. Послідовність обміну повідомленнями задається
за допомогою нумерації, що дозволяє простежити порядок виконання дій.
Розглянемо діаграму комунікації (рисунок 2.13), яка ілюструє сценарій
подання заявки на адопцію тварини та подальшої взаємодії між користувачем і
притулком.
Рисунок 2.13 – Діаграма комунікації online-платформи адопції тварин
56
ЧДТУ 262104.001 ПЗ
Послідовність взаємодій:
1 Користувач → Web Interface: обрати тварину
– користувач обирає тварину для перегляду.
2 Web Interface → Сервіс управління заявками: подати заявку
– система передає запит на створення заявки.
3 Сервіс управління заявками → База Даних: зберегти заявку
– заявка зберігається у базі даних.
4 База Даних → Сервіс управління заявками: заявку збережено
– база даних підтверджує успішне збереження.
5 Сервіс управління заявками → Притулок: повідомити про заявку
– притулок отримує інформацію про нову заявку.
6 Притулок → Сервіс управління заявками: оновити статус
– притулок змінює статус заявки(схвалити або відхилити).
7 Сервіс управління заявками → База Даних: зберегти статус
– оновлений статус заявки зберігається.
8 Сервіс управління заявками → Користувач: повідомити результат
– користувач отримує результат обробки заявки.
9 Користувач → Сервіс повідомлень: надіслати повідомлення
– користувач надсилає повідомлення притулку.
10 Сервіс повідомлень → База Даних: зберегти повідомлення
– повідомлення зберігається у базі даних.
11 Сервіс повідомлень → Притулок: доставити повідомлення
– притулок отримує повідомлення.
12 Притулок → Сервіс повідомлень: надіслати відповідь
– притулок формує відповідь.
13 Сервіс повідомлень → Користувач: доставити відповідь
– користувач отримує повідомлення.
2.5.4. Діаграма скінченного автомату
Діаграма скінченного автомату(діаграма станів)[23] використовується для
моделювання поведінки системи, яка змінює свої стани у відповідь на події
57
ЧДТУ 262104.001 ПЗ
користувача. Вона дозволяє відобразити всі можливі стани системи та переходи
між ними залежно від дій користувачів.
Нижче наведено діаграму станів (рисунок 2.14) для online-платформи
адопції тварин.
Рисунок 2.14 – Діаграма скінченного автомату для online-платформи адопції
тварин
Опис станів діаграми Неактивний:
– початковий стан системи, коли платформа не використовується
користувачем.
Активний:
– основний стан системи після відкриття платформи;
58
ЧДТУ 262104.001 ПЗ
– містить вкладені стани, що відповідають основним функціям системи.
Вкладені стани активного стану
Головна Сторінка:
– основний стан після входу користувача в систему;
– відображає доступні функції: реєстрація та авторизація, перегляд
тварин, подання заявки, обмін повідомленнями.
Реєстрація Користувача:
– стан, у якому користувач створює обліковий запис;
– користувач вводить свої персональні дані (ім’я, email, пароль);
– після успішної реєстрації система повертає користувача до головного
меню.
Перегляд Тварин:
– стан для перегляду доступних тварин;
– користувач може переглядати список тварин та їх деталі;
– після перегляду користувач може повернутися до головного меню або
перейти до подання заявки.
Подання Заявки:
– стан створення заявки на адопцію;
– користувач обирає тварину та підтверджує подання заявки;
– після створення заявки система повертає користувача до головного
меню.
Обробка Заявки:
– стан, у якому притулок переглядає заявки;
– притулок може змінити статус заявки(схвалено або відхилено);
– після обробки заявка оновлюється, а користувач отримує результат.
Повідомлення:
– стан для обміну повідомленнями між користувачем і притулком;
– користувач може надсилати повідомлення притулку;
– притулок може відповідати на повідомлення;
– після завершення обміну повідомленнями користувач повертається до
59
ЧДТУ 262104.001 ПЗ
головного меню.
Діаграма скінченного автомату відображає всі можливі стани системи
online-платформи та переходи між ними. Вона дозволяє зрозуміти, як система
реагує на дії користувача та притулку, а також як реалізуються основні функції.
60
ЧДТУ 262104.001 ПЗ
ВИСНОВОК ДО ДРУГОГО РОЗДІЛУ
У даному розділі проведено аналіз існуючих підходів до розробки
інформаційних систем та засобів, що використовуються для створення online-
платформи адопції тварин. На основі цього аналізу було сформовано та описано
основні UML-діаграми, які відображають структуру системи, функціональність і
взаємодію між компонентами.
Формування вимог до системи. Було визначено основні функціональні та
нефункціональні вимоги до системи. А саме: можливість реєстрації користувачів
і притулків, перегляду інформації про тварин, подання заявок на адопцію, а також
обміну повідомленнями між користувачами та притулками. Це дозволило
сформулювати цілі та функції, необхідні для реалізації системи.
Діаграма прецедентів. Діаграма прецедентів відобразила основні сценарії
взаємодії користувачів і притулків із системою, включаючи реєстрацію, перегляд
тварин, подання заявок та обмін повідомленнями.
Діаграма класів. Діаграма класів описала структуру системи та
взаємозв’язки між її основними сутностями, такими як користувач, притулок,
тварина, заявка та повідомлення. Це дало змогу визначити необхідні атрибути та
методи для реалізації системи.
Діаграма пакетів. Діаграма пакетів показала логічну організацію системи,
розподіливши її на окремі функціональні модулі, що згруповані в пакети для
кращої організації управління системою.
Діаграма компонентів. Діаграма компонентів продемонструвала фізичну
структуру системи, відображаючи основні сервіси та їх взаємодію.
Діаграма розгортання. Діаграма розгортання описує розміщення
компонентів системи на апаратних засобах, що необхідно для планування
ресурсів системи.
Діаграма діяльності. Діаграма діяльності дозволила відобразити
послідовність дій користувачів і притулків під час роботи з системою,
включаючи перегляд тварин, подання заявок та обмін повідомленнями.
Діаграма послідовності. Діаграма послідовності демонструє порядок
61
ЧДТУ 262104.001 ПЗ
взаємодії між компонентами системи під час виконання основних сценаріїв,
таких як реєстрація користувача та створення заявки.
Діаграма комунікації. Діаграма комунікації показує, як взаємодіють між
собою об’єкти системи, зосереджуючись на обміні повідомленнями між
користувачем, притулком, сервісами та базою даних.
Діаграма скінченного автомату. Діаграма станів демонструє можливі
стани системи та переходи між ними залежно від дій користувачів, що дозволяє
краще зрозуміти логіку роботи системи.
У результаті проведеного аналізу та побудови UML-діаграм було
сформовано цілісне уявлення про архітектуру, функціональні можливості та
поведінку online-платформи адопції тварин.
62
ЧДТУ 262104.001 ПЗ
РОЗДІЛ 3. РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ
3.1. Розробка програмного комплексу
На даному етапі детально розглядається процес створення online-
платформи для адопції тварин. Визначаються основні етапи розробки - від
вибору технологій до реалізації функціоналу компонентів.
3.1.1. Обґрунтування вибору засобів реалізації
Розробка online-платформи адопції тварин потребує вибору оптимальних
засобів реалізації, які забезпечують ефективну обробку даних, зручність взаємодії
користувачів із системою, а також можливість подальшого розширення
функціоналу. Вибір технологій було здійснено з урахуванням таких критеріїв, як
продуктивність, масштабованість, безпека, популярність серед розробників та
відповідність вимогам проєкту.
1 Мова програмування Python. Python [5] обрана як основна мова
програмування для розробки online-платформи адопції тварин.
Перевагами даної мови є:
– простота та читабельність коду: синтаксис Python є зрозумілим і
лаконічним, що значно спрощує процес розробки, тестування та
підтримки системи;
– швидкість розробки: завдяки великій кількості готових бібліотек і
модулів Python дозволяє швидко реалізовувати необхідну
функціональність, а велика спільнота розробників забезпечує
підтримку та допомогу у вирішенні проблем.
2 Фреймворк Django Django[24] є одним із найбільш популярних
фреймворків для створення веб-застосунків на Python. Його вибір
обґрунтований наступними факторами:
– простота використання: Django надає зручний та зрозумілий
інструмент для швидкого створення веб-застосунків;
63
ЧДТУ 262104.001 ПЗ
– наявність вбудованих компонентів: фреймворк містить ORM,
систему аутентифікації, маршрутизацію та адміністративну панель,
що значно спрощує процес розробки [25], [26];
– швидкість розробки: завдяки принципу “batteries included” більшість
необхідних функцій уже реалізовано, що дозволяє скоротити час
розробки;
– зручна робота з базами даних: використання ORM забезпечує
простий доступ до даних без необхідності написання складних SQL-
запитів;
– гнучкість та масштабованість: Django[27] дозволяє легко
розширювати функціональність системи та адаптувати її під зміну
вимог;
– реалізація ролей у системі: фреймворк забезпечує зручну реалізацію
різних ролей користувачів(користувач, притулок, адміністратор), що
є важливим для даного проєкту.
3 База даних PostgreSQL та pgAdmin як СУБД. PostgreSQL [28] було
обрано для даної системи через ряд переваг:
– структурованість даних: PostgreSQL[5] є реляційною базою даних,
що дозволяє зберігати інформацію у вигляді взаємопов’язаних
таблиць. Це забезпечує ефективну організацію даних про
користувачів, притулки, тварин, заявки та повідомлення;
– цілісність даних: система підтримує механізми забезпечення
цілісності, такі як первинні та зовнішні ключі, обмеження та
транзакції, що гарантує коректність та узгодженість інформації [30];
– підтримка складних запитів: PostgreSQL дозволяє виконувати
складні SQL-запити, що є необхідним для реалізації пошуку,
фільтрації та обробки даних[29];
– висока продуктивність: завдяки індексам та оптимізації запитів
PostgreSQL забезпечує швидке виконання операцій навіть при
великій кількості даних [30];
64
ЧДТУ 262104.001 ПЗ
– масштабованість: база даних підтримує роботу з великими обсягами
інформації та дозволяє ефективно розширювати систему;
– pgAdmin: надає графічний інтерфейс для управління PostgreSQL
[31].
Отже, для розробки інформаційної системи обрано мову програмування
Python, фреймворк Django та базу даних PostgreSQL. Завдяки цим складовим
елементам буде створено надійну систему для задоволення потреб усіх
користувачів системи.
3.1.2. Опис структурної(функціональної) схеми
Структурна(функціональна) схема online-платформи для адопції тварин
відображає основні компоненти системи та їх взаємодію. Вона описує, як різні
частини в системі співпрацюють.
Рисунок 3.1 Структурна схема online платформи адопції тварни
Рисунок 3.2 Функціональна схема адопції тварин
65
ЧДТУ 262104.001 ПЗ
Веб-застосунок (User Interface):
– головна сторінка: інтерфейс для взаємодії користувачів із системою, де
відображається основна інформація та доступні функції;
– реєстрація: функціональність, що дозволяє користувачам і притулкам
вводити свої дані та створювати облікові записи;
– перегляд тварин: функціональність, що дозволяє користувачам
отримувати інформацію про доступних для адопції тварин;
– подання заявки: функціональність, що дозволяє користувачам подавати
заявки на адопцію тварин;
– обмін повідомленнями: функціональність для комунікації між
користувачами та притулками;
– керування тваринами: функціональність для притулків, що дозволяє
додавати, редагувати та оновлювати інформацію про тварин;
– адміністрування: інтерфейс для керування користувачами, модерації
даних та контролю роботи системи.
Сервіси системи:
– сервер застосунку (Django): обробляє всі запити від користувача,
виконує бізнес-логіку системи та забезпечує взаємодію між веб-
інтерфейсом і базою даних [32];
– сервіси обробки даних: відповідають за роботу з користувачами,
тваринами, заявками та повідомленнями, виконуючи відповідні операції
з даними.
База даних:
– дані користувачів і притулків: зберігає інформацію про зареєстрованих
користувачів та їх ролі;
– дані тварин: містить інформацію про тварин, доступних для адопції;
– дані заявок: зберігає інформацію про заявки користувачів;
– дані повідомлень: зберігає історію обміну повідомленнями між
користувачами та притулками.
Структурна(функціональна) схема online-платформи адопції тварин надає
66
ЧДТУ 262104.001 ПЗ
чітке уявлення про взаємодію компонентів системи. Вона показує, як користувачі
взаємодіють із веб-застосунком, який передає запити до серверної
частини(Django), де вони обробляються відповідними сервісами та зберігаються
або отримуються з бази даних PostgreSQL.
Така схема дозволяє краще зрозуміти архітектуру системи та забезпечує
узгодженість між її компонентами, що є важливим для ефективної реалізації та
подальшого розвитку проєкту.
3.1.3. Опис логічної схеми системи
Логічна схема (рисунок 3.3) online-платформи адопції тварин описує
послідовність дій, що виконуються у системі для досягнення конкретних
результатів залежно від типу користувача. Схема відображає алгоритм
функціонування системи у вигляді блок-схеми та демонструє взаємодію
користувача, притулку та адміністратора з системою.
Рисунок 3.3 – Логічна схема online-платформи адопції тварин
67
ЧДТУ 262104.001 ПЗ
Алгоритм функціонування системи
Початок роботи системи:
– користувач відкриває online-платформу;
– система відображає головне меню з доступними функціями;
– користувач обирає свій тип: користувач, притулок або адміністратор.
Реєстрація:
– користувач обирає опцію реєстрації;
– вводить особисті дані;
– система зберігає дані у базі даних;
– користувач отримує повідомлення про успішну реєстрацію.
Перегляд і пошук тварин:
– користувач обирає функцію перегляду тварин;
– обирає конкретну тварину;
– система відображає детальну інформацію про неї.
Подання заявки на адопцію:
– користувач обирає тварину;
– створює заявку на адопцію;
– система зберігає заявку у базі даних.
Надсилання повідомлень:
– користувач обирає притулок;
– вводить текст повідомлення;
– система надсилає повідомлення та зберігає його.
Керування тваринами:
– притулок обирає відповідну опцію;
– додає або редагує інформацію про тварину;
– оновлює статус тварини;
– система зберігає зміни у базі даних.
Обробка заявок:
– притулок переглядає заявки;
– приймає або відхиляє їх;
68
ЧДТУ 262104.001 ПЗ
– система оновлює статус заявки.
Робота з повідомленнями:
– притулок переглядає отримані повідомлення;
– надсилає відповіді користувачам.
Модерація користувачів:
– адміністратор переглядає список користувачів;
– виконує блокування або активацію акаунтів.
Контроль роботи системи:
– перевіряє коректність даних;
– здійснює контроль функціонування платформи.
Завершення роботи:
– після виконання операцій користувач повертається до головного меню;
– система переходить у завершальний стан.
Логічна схема online-платформи адопції тварин відображає повний процес
взаємодії різних типів користувачів із системою. Вона демонструє основні
сценарії використання, включаючи реєстрацію, перегляд тварин, подання заявок,
обмін повідомленнями, а також функції притулків і адміністраторів.
3.1.4. Розробка бази даних
Розробка бази даних є важливим етапом у створенні online-платформи
адопції тварин, оскільки вона забезпечує зберігання, організацію та управління
всіма необхідними даними системи.
Для даного проєкту була обрана система керування базами даних
PostgreSQL, оскільки вона є реляційною СУБД, що забезпечує надійне зберігання
структурованих даних, підтримку складних запитів та високий рівень цілісності
даних.
Процес розробки бази даних
1 Аналіз вимог:
– визначення основних об'єктів, які повинні зберігатися у базі даних
(користувачі, тварини, заявки, повідомлення);
– визначення взаємозв'язків між об'єктами (наприклад, заявка
69
ЧДТУ 262104.001 ПЗ
пов’язана з користувачем і твариною).
2 Проектування структури даних:
– створення таблиць для кожної сутності;
– визначення полів та їх типів даних;
– встановлення первинних та зовнішніх ключів;
– визначення індексів для оптимізації запитів.
3 Реалізація бази даних:
– налаштування PostgreSQL та підключення до Django через ORM;
– створення таблиць відповідно до моделей та наповнення їх
тестовими даними;
– реалізація CRUD-операцій (створення, читання,оновлення,
видалення).
4 Тестування та оптимізація:
– перевірка коректності запитів;
– оптимізація структури таблиць та індексів;
– забезпечення швидкого доступу до даних.
Розробка бази даних для online-платформи адопції тварин включає
створення декількох основних таблиць у реляційній базі даних PostgreSQL.
Нижче описано процес розробки кожної таблиці, що використовується для
зберігання різних типів даних. Таблиця user (рисунок 3.4)
Рисунок 3.4 – Схема таблиці users online-платформи адопції тварин
Процес розробки
1 Аналіз вимог:
– визначення основних атрибутів користувачів системи (звичайні
70
ЧДТУ 262104.001 ПЗ
користувачі, притулки, адміністратори);
– врахування потреб у зберіганні облікових даних(логін, пароль,
email);
– визначення ролей користувачів у системі для розмежування доступу
до функціоналу.
2 Проектування схеми:
– створення полів для зберігання імені користувача, email та пароля;
– додавання поля role для визначення ролі користувача(користувач,
притулок, адміністратор);
– використання вбудованої моделі автентифікації
Django(AbstractUser);
– автоматичне створення дати реєстрації користувача.
Таблиця shelter (рисунок 3.5)
Рисунок 3.5 – Схема таблиці shelters online-платформи адопції тварин
Процес розробки.
1 Аналіз вимог:
– визначення необхідних атрибутів для зберігання інформації про
притулки (назва, адреса, опис);
– встановлення зв’язку між притулком і користувачем системи.
2 Проектування схеми:
– створення полів для кожного атрибуту притулку;
– додавання зв’язку OneToOne з таблицею користувачів;
– забезпечення можливості прив’язки тварин до конкретного
притулку.
Таблиця animal(рисунок 3.6)
71
ЧДТУ 262104.001 ПЗ
Рисунок 3.6 – Схема таблиці animals online-платформи адопції тварин
Процес розробки
1 Аналіз вимог:
– визначення атрибутів для зберігання інформації про тварин (ім’я,
тип, опис, фото, статус);
– встановлення зв’язку між твариною та притулком.
2 Проектування схеми:
– створення полів для опису тварини;
– додавання зовнішнього ключа до таблиці shelters;
– створення поля status для визначення доступності тварини(доступна,
зарезервована, знайшла дім);
– забезпечення зберігання зображення тварини.
Таблиця adoptionApplication (рисунок 3.7)
Рисунок 3.7 – Схема таблиці adoptionApplication online-платформи адопції тварин
72
ЧДТУ 262104.001 ПЗ
Процес розробки
1 Аналіз вимог:
– визначення атрибутів, які повинні бути збережені для кожної заявки
на адопцію(користувач, тварина, коментар, статус);
– врахування процесу обробки заявки притулком.
2 Проектування схеми:
– створення полів для кожного атрибуту заявки;
– додавання зовнішніх ключів до таблиць users та animals;
– створення поля status для визначення стану заявки (очікує, схвалено,
відхилено);
– автоматичне заповнення поля created_at поточною датою.
Таблиця messages (рисунок 3.8)
Рисунок 3.8 – Схема таблиці messages online-платформи адопції тварин
Процес розробки
1 Аналіз вимог:
– визначення атрибутів, які повинні бути збережені для кожного
повідомлення (відправник, отримувач, текст повідомлення);
– забезпечення можливості обміну повідомленнями між
користувачами та притулками.
2 Проектування схеми:
– створення полів для зберігання ідентифікаторів відправника та
отримувача;
– створення поля для тексту повідомлення;
– включення поля sent_at для зберігання дати та часу надсилання
повідомлення, яке автоматично заповнюється поточною датою.
73
ЧДТУ 262104.001 ПЗ
Рисунок 3.9 Загальна схема бази даних
Процес розробки бази даних для online-платформи адопції тварин включає
аналіз вимог, проектування структури таблиць, визначення типів даних та
встановлення зв’язків між сутностями. Використання реляційної СУБД
74
ЧДТУ 262104.001 ПЗ
PostgreSQL дозволяє забезпечити ефективну обробку запитів та масштабованість
системи.
Обрана структура бази даних повністю відповідає функціональним вимогам
системи та забезпечує надійне зберігання інформації про користувачів, притулки,
тварин, заявки та повідомлення.
3.1.5. Розробка інтерфейсу користувача
Розробка інтерфейсу користувача (UI) є важливим етапом створення будь-
якого програмного продукту. Від зручності, легкості та зрозумілості інтерфейсу
залежить ефективність взаємодії користувачів, притулків та адміністраторів із
системою.
Процес розробки інтерфейсу включає визначення вимог, проєктування
основних сторінок, реалізацію форм, тестування та оптимізацію.
Вимоги до інтерфейсу користувача:
– функціональність: інтерфейс повинен забезпечувати доступ до
перегляду тварин, реєстрації, подання заявок, обміну повідомленнями
та адміністрування;
– зручність використання: інтерфейс повинен бути простим та інтуїтивно
зрозумілим для всіх користувачів платформи;
– доступність: інтерфейс та всі основні функції повинні бути доступні для
користувачів з різними можливостями.
Проєктування основних компонентів інтерфейсу
Проектування основних компонентів інтерфейсу online-платформи адопції
тварин включає створення головної сторінки, сторінки реєстрації користувачів,
перегляду тварин, системи обміну повідомленнями та адміністративної панелі.
Головна сторінка
Головна сторінка є основною точкою входу в систему. Вона відображає
список тварин, доступних для адопції, та навігаційні елементи для переходу до
іншихсторінок. Залежно від ролі користувача(гість, користувач, притулок,
адміністратор), на сторінці відображаються різні елементи керування.
75
ЧДТУ 262104.001 ПЗ
Рисунок 3.9 – Головна сторінка online-платформи адопції тварин
Для неавторизованого користувача(гостя) доступні:
– перегляд тварин;
– перехід до сторінки реєстрації;
– перехід до сторінки входу.
Для авторизованого користувача додатково доступні:
– подання заявок;
– перегляд повідомлень.
Рисунок 3.10 – Головна сторінка online-платформи адопції тварин для
авторизованого користувача
76
ЧДТУ 262104.001 ПЗ
Для притулку доступні наступні можливості:
– додавання тварин;
– перегляд заявок;
– управління інформацією про тварин.
Рисунок 3.11 – Головна сторінка online-платформи адопції тварин для притулку.
Для адміністратора в меню є доступ до адміністративної панелі системи.
Рисунок 3.12 – Головна сторінка online-платформи адопції тварин для
адміністратора
Також на головній сторінці реалізовано систему фільтрації тварин.
77
ЧДТУ 262104.001 ПЗ
Користувач може обрати тип тварини та конкретний притулок за допомогою
випадаючих списків
Рисунок 3.13 – Фільтрація тварин за типом та притулком
Після вибору необхідних параметрів користувач натискає кнопку
«Застосувати», після чого система відображає відфільтрований список тварин.
Для повернення до початкового списку використовується кнопка «Скинути».
Такий підхід дозволяє швидко знаходити потрібних тварин серед великої
кількості оголошень.
Реєстрація користувачів і притулків
Форма реєстрації дозволяє створити два типи користувачів та особисті
кабінети для них на сайті [35].
В формі реєстрації користувач вводить ім’я, електронну пошту, пароль та
обирає роль(користувач або притулок).
78
ЧДТУ 262104.001 ПЗ
Рисунок 3.14 – Форма реєстрації користувача
Якщо під час реєстрації обрано роль «притулок», система перенаправляє
користувача на форму створення профілю притулку.
Рисунок 3.15 – Форма створення профілю притулку
79
ЧДТУ 262104.001 ПЗ
Форма заповнюється такими даними, як: назва притулку, її адреса та опис.
Після збереження дані записуються до бази даних та стають доступними для
інших користувачів системи.
Інтерфейс перегляду інформації про тварину дозволяє користувачам
отримати детальну інформацію про обрану тварину (рисунок 3.16).
Рисунок 3.16 – Перегляд інформації про тварину
80
ЧДТУ 262104.001 ПЗ
На сторінці відображається фотографія тварини, її ім’я, тип, статус та
повний опис. Для авторизованих користувачів доступна кнопка подання заявки
на адопцію, а також кнопка для надсилання повідомлення притулку.
Інтерфейс додавання тварини дозволяє представникам притулків
створювати нові оголошення про тварин (рисунок 3.17).
Рисунок 3.17 – Додавання нової тварини
81
ЧДТУ 262104.001 ПЗ
Форма додавання тварини містить поля для введення імені тварини, опису,
вибору типу тварини, фотографії та статусу. Тип тварини вибирається зі списку,
який містить варіанти «кіт/кішка», «собака» та «інше».
Після збереження інформації тварина автоматично відображається на
головній сторінці платформи та стає доступною для перегляду іншими
користувачами.
Інтерфейс подання заявки на адопцію дозволяє користувачам надсилати
заявки притулкам.
Рисунок 3.18 – Подання заявки на адопцію
Користувач вводить коментар до заявки, після чого система зберігає заявку
у базі даних та відправляє її представнику притулку.
Представники притулків можуть переглядати отримані заявки та змінювати
їх статус.
Рисунок 3.19 – Перегляд заявок притулком
82
ЧДТУ 262104.001 ПЗ
Для кожної заявки доступні кнопки підтвердження або відхилення заявки.
Після зміни статусу користувач отримує оновлення про результат
розгляду заявки.
Інтерфейс обміну повідомленнями дозволяє користувачам та притулкам
підтримувати комунікацію в межах системи.
Рисунок 3.20 – Обмін повідомленнями між користувачем та притулком
Користувач може переглядати отримані та надіслані повідомлення, а також
надсилати нові повідомлення через спеціальну форму.
Адміністративна панель системи дозволяє адміністратору здійснювати
повний контроль над платформою.
83
ЧДТУ 262104.001 ПЗ
Рисунок 3.21 – Адміністративна панель системи
Через адміністративну панель адміністратор може:
− керувати користувачами в системі;
− редагувати або видаляти інформацію про тварин;
− контролювати заявки на адопцію;
− модерувати повідомлення;
− управляти притулками;
− контролювати роботу системи.
Розробка інтерфейсу користувача для online-платформи адопції тварин
включає створення зручної навігації, реалізацію системи ролей, проектування
форм для введення даних та забезпечення взаємодії між користувачами і
притулками.
3.1.6. Опис розробки програмних компонентів
Розробка програмних компонентів online-платформи адопції тварин
включає створення окремих модулів, які відповідають за реалізацію різних
функцій системи. Розробка здійснюється з урахуванням функціональних вимог,
зручності та надійності системи. Нижче наведено опис основних програмних
компонентів та їх реалізацію.
Основні програмні компоненти
1 Компонент реєстрації користувачів і притулків:
− призначення: забезпечує реєстрацію нових користувачів та
представників притулків у системі;
84
ЧДТУ 262104.001 ПЗ
− реалізація: використовує модель User для зберігання облікових
записів користувачів та модель Shelter для зберігання інформації про
притулки. Під час реєстрації користувач вводить ім’я користувача,
електронну пошту, пароль та обирає роль у системі («Користувач»
або «Притулок»). Якщо користувач реєструється як притулок,
система додатково створює профіль притулку з назвою, адресою та
описом.
2 Компонент авторизації користувачів:
− призначення: забезпечує вхід користувачів до системи та контролює
доступ до функцій платформи;
− реалізація: використовує вбудовану систему автентифікації Django.
Після введення логіна та пароля користувач отримує доступ до
функцій системи відповідно до своєї ролі. Для неавторизованих
користувачів є доступ лише для перегляду платформи.
3 Компонент перегляду тварин:
− призначення: дозволяє користувачам переглядати список тварин,
доступних для адопції;
− реалізація: використовує модель Animal для отримання інформації
про тварин із бази даних PostgreSQL. На головній сторінці
відображаються картки тварин із фотографією, типом, коротким
описом та статусом.
4 Компонент фільтрації тварин:
− призначення: забезпечує швидкий пошук тварин за заданими
параметрами;
− реалізація: дозволяє користувачам фільтрувати список тварин за
типом тварини та притулком.
5 Компонент перегляду інформації про тварину:
− призначення: дозволяє користувачам переглядати детальну
інформацію про конкретну тварину;
− реалізація: використовує модель Animal для отримання повної
85
ЧДТУ 262104.001 ПЗ
інформації про тварину. На сторінці відображається фотографія
тварини, опис та інформація про притулок.
6 Компонент додавання та редагування тварин:
− призначення: дозволяє представникам притулків створювати та
редагувати оголошення про тварин;
− реалізація: використовує форму AnimalForm та модель Animal.
Представник притулку може додати ім’я тварини, тип, опис,
фотографію та статус. Також реалізована можливість редагування
вже існуючих записів.
7 Компонент подання заявок на адопцію
− призначення: надає можливість юзерам подавати заявки на адопцію
тварин;
− реалізація: використовує модель AdoptionApplication для збереження
заявок у базі даних. Авторизований юзер може залишити коментар
до заявки, після чого заявка стає доступною для перегляду
представником притулку.
8 Компонент обробки заявок:
− призначення: дозволяє притулкам переглядати заявки та змінювати
їх статус;
− реалізація: представники притулків можуть переглядати заявки,
підтверджувати або відхиляти їх. Для цього використовується
модель AdoptionApplication та відповідні функції оновлення статусу
заявки.
9 Компонент обміну повідомленнями:
− призначення: забезпечує комунікацію між усіма користувачами
платформи;
− реалізація: використовує модель Message для збереження
повідомлень у базі даних.
10 Компонент адміністрування системи:
− призначення: забезпечує контроль роботи системи та управління
86
ЧДТУ 262104.001 ПЗ
даними;
− реалізація: використовує вбудовану адміністративну панель Django.
Адміністратор має можливість переглядати та редагувати профілі
всіх юзерів в системі, а також тварин, заявки та повідомлення.
Взаємодія компонентів
Компонент реєстрації користувачів взаємодіє з моделлю User, зберігаючи
нові облікові записи у базі даних.
Компонент створення профілю притулку використовує модель Shelter для
збереження інформації про притулки.
Компонент перегляду тварин використовує модель Animal для отримання
інформації про тварин та відображення її на головній сторінці системи.
Компонент подання заявок взаємодіє з моделлю AdoptionApplication,
зберігаючи заявки користувачів на адопцію тварин.
Компонент обміну повідомленнями використовує модель Message для
збереження повідомлень між користувачами та притулками.
Компонент адміністрування взаємодіє з усіма моделями системи та
забезпечує централізоване управління даними платформи.
Розробка програмних компонентів online-платформи адопції тварин
включає створення окремих модулів, кожен з яких відповідає за реалізацію
конкретної функції системи. Усі компоненти реалізовані за допомогою
фреймворку Django та взаємодіють із базою даних PostgreSQL через моделі
Django ORM.
3.2. Тестування системи
У цьому розділі описано процес тестування online-платформи адопції
тварин для забезпечення її коректної роботи та відповідності вимогам.
Модульне тестування включає перевірку окремих функцій та компонентів
системи незалежно один від одного. Інтеграційне тестування спрямоване на
перевірку взаємодії між окремими модулями системи. Системне тестування
дозволяє перевірити роботу всієї online-платформи як єдиного цілого.
87
ЧДТУ 262104.001 ПЗ
Приймальне тестування проводиться для підтвердження того, що система
відповідає вимогам користувачів та готова до використання.
3.2.1. Модульне тестування
Модульне тестування є першим етапом перевірки системи, під час якого
тестуються окремі компоненти online-платформи незалежно від інших модулів.
Метою цього тестування є перевірка коректності роботи окремих функцій
системи та виявлення помилок на ранніх етапах розробки.
Для online-платформи адопції тварин модульне тестування проводилося з
використанням вбудованих засобів тестування Django[35]. Тестувалися окремі
модулі реєстрації користувачів, роботи з тваринами, подання заявок, обміну
повідомленнями та адміністрування системи.
Основні кроки модульного тестування
1 Налаштування середовища тестування:
− налаштування тестової бази даних PostgreSQL;
− створення тестових користувачів та тестових даних;
− підготовка тестових сценаріїв.
2 Написання тестів:
− створення тестів для перевірки моделей, форм та функцій системи;
− перевірка обробки валідних та невалідних даних.
3 Виконання тестів:
− запуск тестів;
− аналіз результатів тестування. Результати модульного тестування:
Таблиця 3.1
Результати модульного тестування компонентів системи
Модуль Тестовий сценарій Що перевіряємо Статус
RegisterForm Реєстрація нового Створення нового користувача з Пройдено
користувача валідними даними
88
ЧДТУ 262104.001 ПЗ
Продовження таблиці 3.1
ShelterForm Створення профілю Коректне збереження даних Пройдено
притулку притулку
AnimalForm Додавання нової Створення запису про тварину Пройдено
тварини притулком
Перегляд Отримання списку Вся інформація відображається Пройдено
тварин доступних тварин коректно
AdoptionAppli Подання заявки Формування заявки на адопцію Пройдено
cationForm
MessageForm Надсилання Створення повідомлення між Пройдено
повідомлення користувачем та притулком
Таблиця 3.2
Результати модульного тестування серверної частини
Модуль Тестовий сценарій Що перевіряємо Статус
register() Реєстрація нового Створення облікового Пройдено
користувача запису
create_shelter_prof Створення профілю Збереження інформації Пройдено
ile() притулку про притулок
add_animal() Додавання тварини Створення картки Пройдено
тварини
animal_detail() Перегляд тварини Отримання інформації Пройдено
про тварину
create_application() Подання заявки Створення заявки на Пройдено
адопцію
shelter_applications() Перегляд заявок Отримання списку Пройдено
заявок притулку
update_application_s Зміна статусу заявки Схвалення або Пройдено
tatus() відхилення заявки
89
ЧДТУ 262104.001 ПЗ
Продовження таблиці 3.2
send_message() Надсилання Створення повідомлення Пройдено
повідомлення
messages_list() Перегляд повідомлень Отримання списку Пройдено
повідомлень
Результати модульного тестування показують, що всі основні функції
online-платформи працюють коректно та відповідно до очікуваних результатів.
Усі тест сценарії були успішно пройдені, що свідчить про правильну реалізацію
окремих модулів системи.
3.2.2. Інтеграційне тестування
Інтеграційне тестування – це тестування, що проводиться після модульного
тестування та спрямоване на перевірку взаємодії між різними компонентами
системи. Під час даного виду тестування перевірялося, як окремі модулі online-
платформи працюють разом. Основна увага приділялася взаємодії веб-
інтерфейсу, серверній частині Django та базі даних PostgreSQL. Під час
тестування використовувалися вбудовані засоби Django TestCase та тестовий
клієнт Django Client [36].
Основні кроки інтеграційного тестування
1 Підготовка середовища тестування:
− налаштування тестового середовища
− підключення тестової бази даних;
− створення тестових записів.
2 Визначення тестових сценаріїв:
− реєстрація користувача та перевірка запису в базі даних;
− додавання тварини притулком;
− подання заявки користувачем;
− обмін повідомленнями між користувачем та притулком.
3 Виконання тестування:
− запуск тестів;
90
ЧДТУ 262104.001 ПЗ
− перевірка результатів роботи системи.
Таблиця 3.3
Результати інтеграційного тестування
Компонент Тестовий сценарій Що перевіряємо Статус
Реєстрація POST /register/ Створення нового Пройдено
користувача користувача у БД
Створення профілю POST/shelter/create/ Створення профілю Пройдено
притулку притулку
Додавання тварини POST Збереження тварини у Пройдено
/animals/add/ БД
Перегляд тварин GET / Отримання списку Пройдено
доступних тварин
Подання заявки POST Створення заявки на Пройдено
/animals/{id}/ap ply/ адопцію
Обробка заявки GET Отримання заявок Пройдено
/applications/ притулку
Надсилання POST Збереження Пройдено
повідомлення /messages/send/{ id}/ повідомлення
Результати інтеграційного тестування показують, що всі компоненти
системи правильно взаємодіють між собою.
3.2.3. Системне тестування
Системне тестування включає перевірку роботи всієї online-платформи як
єдиного цілого. Метою даного виду тестування є підтвердження того, що система
відповідає функціональним та нефункціональним вимогам. Під час системного
тестування перевірялася робота веб-застосунку в умовах, максимально
наближених до реального використання.
Основні кроки системного тестування
91
ЧДТУ 262104.001 ПЗ
1 Підготовка тестового середовища:
− налаштування серверної частини системи;
− підключення бази даних PostgreSQL;
− створення тестових користувачів і притулків.
2 Визначення тестових сценаріїв:
− реєстрація користувачів;
− додавання та редагування тварин;
− подання заявок;
− робота системи повідомлень;
− адміністрування системи.
3 Виконання тестування:
− запуск системи;
− перевірка всіх функцій;
− аналіз результатів.
Таблиця 3.4
Результати системного тестування
Модуль Тестовий Очікуваний Фактичний Статус
сценарій результат результат
Реєстрація Реєстрація Доступ до Доступ до Пройдено
користувача та системи надано системи надано
вхід у систему
Робота з Додавання та Дані оновлено Дані оновлено Пройдено
тваринами редагування
тварини
Подання заявок Створення та Статус заявки Статус заявки Пройдено
обробка заявки змінено змінено
Повідомлення Обмін Повідомлення Повідомлення Пройдено
повідомленнями відображаються відображаються
92
ЧДТУ 262104.001 ПЗ
Продовження таблиці 3.4
Адміністрування Вхід до Дані доступні Дані доступні Пройдено
адміністративно для управління для управління
ї панелі
Системне тестування підтвердило, що всі компоненти online-платформи
працюють коректно, як єдина система та відповідають поставленим вимогам. Всі
тестові сценарії пройдено успішно, що дає розуміння про готовність системи до
використання кінцевими споживачами.
3.2.4. Приймальне тестування
Приймальне тестування є останнім етапом тестування системи перед її
впровадженням. Під час приймального тестування користувачі перевіряли роботу
основних функцій системи: реєстрацію, перегляд тварин, подання заявок, обмін
повідомленнями та роботу адміністративної панелі.
Основні кроки приймального тестування
1 Підготовка тестування:
− створення тестових сценаріїв;
− підготовка тестових даних.
2 Проведення тестування:
− перевірка роботи основних функцій системи;
− тестування інтерфейсу користувача;
− збір відгуків користувачів.
3 Аналіз результатів:
− перевірка результатів тестування;
− виправлення виявлених помилок.
Таблиця 3.5
Результати приймального тестування
93
ЧДТУ 262104.001 ПЗ
Модуль Тестовий Очікуваний Фактичний Статус
сценарій результат результат
Реєстрація Реєстрація Обліковий Обліковий запис Пройдено
нового запис створено створено
користувача
Реєстрація Реєстрація Створення Створення профілю Пройдено
притулку притулку профілю притулку
притулку
Додавання Створення Створення Створення картки Пройдено
тварини картки тварини картки тварини тварини
Перегляд Перегляд Дані Дані Пройдено
тварин списку тварин відображають відображаються
ся коректно коректно
Подання заявки Надсилання Заявку Заявку створено Пройдено
заявки на створено
адопцію
Повідомлення Надсилання Повідомленн я Повідомлення Пройдено
повідомлення доставлено доставлено
притулку
Адмініструва Управління Дані Дані редагуються Пройдено
ння даними через редагуються коректно
адмін-панель коректно
Результати приймального тестування підтверджують, що online-платформа
адопції тварин відповідає поставленим вимогам та готова до використання.
Основні функції системи працюють корректно згідно вимог, а інтерфейс є
логічним, зрозумілим та зручним для користувачів.
3.3.Приклади впровадженого програмного комплексу
У цьому підрозділі наведено приклади реалізованих функцій та
можливостей online-платформи адопції тварин. Ці приклади демонструють
94
ЧДТУ 262104.001 ПЗ
роботу розроблених програмних компонентів у реальному середовищі та
показують, як користувачі взаємодіють із системою для перегляду тварин,
подання заявок, спілкування з притулками та адміністрування платформи.
Реєстрація користувачів і притулків
Користувачі можуть зареєструватися в системі, ввівши необхідні дані у
форму реєстрації. Під час реєстрації користувач обирає свою роль: «Користувач»
або «Притулок». (рисунок 3.22, рисунок 3.23, рисунок 3.24).
Рисунок 3.22 – Форма реєстрації користувача
Після успішної реєстрації користувач отримує доступ до функцій системи
відповідно до своєї ролі. Якщо обрано роль притулку, система перенаправляє
користувача до створення профілю притулку, де необхідно вказати назву
притулку, адресу та короткий опис діяльності
95
ЧДТУ 262104.001 ПЗ
Рисунок 3.23 – Створення профілю притулку
Перегляд списку тварин
Користувачі можуть переглядати список тварин, доступних для адопції, на
головній сторінці системи (рисунок 3.24).
96
ЧДТУ 262104.001 ПЗ
Рисунок 3.24 – Головна сторінка зі списком тварин
Для кожної тварини відображаються:
− фотографія;
− ім’я;
− назва притулку;
− тип тварини;
− короткий опис;
− кнопка «Детальніше».
Для пошуку необхідної тварини реалізовано систему фільтрації. Користувач
може обрати тип тварини або конкретний притулок за допомогою випадаючих
списків (рисунок 3.25, 3.26).
Рисунок 3.25 – Фільтрація тварин за типом
97
ЧДТУ 262104.001 ПЗ
Рисунок 3.26 – Фільтрація тварин за притулком
Перегляд інформації про тварину
Після натискання кнопки «Детальніше» користувач переходить на сторінку
з повною інформацією про тварину (рисунок 3.27).
Рисунок 3.27 – Перегляд інформації про тварину На сторінці відображається:
98
ЧДТУ 262104.001 ПЗ
− фотографія тварини;
− тип тварини;
− статус;
− повний опис;
− інформація про притулок.
Авторизовані користувачі можуть подати заявку на адопцію або написати
повідомлення притулку.
Подання заявки на адопцію
Користувачі можуть надсилати заявки на адопцію тварин через спеціальну
форму (рисунок 3.27). Для цього необхідно:
− перейти на сторінку тварини;
− натиснути кнопку «Подати заявку»;
− ввести коментар до заявки;
− підтвердити надсилання заявки.
Після цього заявка автоматично зберігається у базі даних та стає доступною
для представника притулку.
Рисунок 3.27 – Подання заявки на адопцію
Робота притулку з тваринами
Представники притулків мають доступ до меню «Кабінет притулку», яке
містить функції керування тваринами та заявками (рисунок 3.28).
99
ЧДТУ 262104.001 ПЗ
Рисунок 3.28 – Кабінет притулку
Через це меню притулок може:
– додавати нових тварин;
– редагувати інформацію про вже існуючих тварин у системі;
– переглядати власні оголошення;
– змінювати статус тварин;
– переглядати заявки користувачів.
Для додавання нової тварини представник притулку заповнює форму, де
вказує ім’я тварини, тип, опис, фотографію та статус (рисунок 3.29).
Рисунок 3.29 – Додавання нової тварини Обробка заявок на адопцію
100
ЧДТУ 262104.001 ПЗ
Після отримання заявки представник притулку може переглянути її у
розділі «Заявки» (рисунок 3.30). Для кожної заявки доступні такі дії, як
підтвердження та відхилення заявки, перегляд інформації про користувача. Після
зміни статусу заявки система автоматично оновлює інформацію у базі даних.
Обмін повідомленнями
Користувачі та представники притулків можуть обмінюватися
повідомленнями через систему повідомлень (рисунок 3.31).
Для надсилання повідомлення користувач:
− переходить на сторінку тварини;
− натискає кнопку «Написати притулку»;
− вводить текст повідомлення та підтверджує надсилання.
Усі повідомлення зберігаються у базі даних та доступні у розділі
«Повідомлення».
Рисунок 3.31 – Обмін повідомленнями
Адміністрування системи
Для адміністратора системи реалізовано адміністративну панель Django
(рисунок 3.32 і 3.32).
Рисунок 3.32 - Адмін панель на панелі меню
101
ЧДТУ 262104.001 ПЗ
Рисунок 3.33 - Адмін панель Адміністратор має можливість:
переглядати користувачів;
редагувати інформацію про тварин;
керувати притулками;
контролювати заявки;
модерувати повідомлення;
здійснювати загальне адміністрування системи.
Адміністративна панель забезпечує централізоване управління всіма даними
online-платформи.
102
ЧДТУ 262104.001 ПЗ
ВИСНОВОК ДО ТРЕТЬОГО РОЗДІЛУ
У третьому розділі було детально розглянуто процес розробки, тестування
та впровадження online платформи адопції тварин. Розділ включав декілька
основних етапів, кожен з яких мав важливе значення для забезпечення стабільної
роботи, надійності та зручності використання системи.
На етапі розробки програмного комплексу було обґрунтовано вибір засобів
реалізації та розроблено структурну та логічну схему системи, а також базу даних
для зберігання інформації в системі. Також на цьому етапі реалізовано інтерфейс
користувача, який забезпечує зручний доступ до всіх функцій online платформи.
Було проведено повний цикл тестування системи. Під час модульного
тестування було перевірено окремі компоненти системи, інтеграційне тестування
забезпечило перевірку корректної робити між модулями системи. Системне
тестування підтвердило стабільну роботу програмного комплексу як єдиної цілої
системи, а приймальне тестування дозволило перевірити відповідність системи
вимогам кінцевого користувача.
У результаті проведеної роботи було створено online платформу адопції
тварин, яка значно спрощує взаємодію між користувачами та притулками,
забезпечує зручний пошук тварин, подання заявок на адопцію та підтримку
комунікації між учасниками процесу. Усі етапи розробки та тестування були
виконані успішно, що підтверджує високу якість та надійність системи. Online
платформа повністю відповідає поставленим вимогам та готова до практичного
використання.
103
ЧДТУ 262104.001 ПЗ
ВИСНОВКИ
У кваліфікаційній роботі було розроблено програмне забезпечення online-
платформи адопції тварин, призначене для автоматизації взаємодії між
потенційними власниками тварин, притулками та адміністраторами системи.
Під час виконання роботи було вирішено всі поставлені завдання.
Перше завдання, що полягало у проведенні аналізу предметної області та
існуючих програмних рішень на ринку, було вирішено шляхом дослідження
сучасних сервісів для пошуку та адопції тварин, зокрема міжнародної платформи
Petfinder, українського сервісу «Київ Цифровий», а також платформи UAnimals.
Було проведено аналіз їх функціональних можливостей, переваг та недоліків.
Також було проведено SWOT-аналіз та аналіз ризиків, що дозволило визначити
основні вимоги до майбутнього програмного забезпечення.
Друге завдання, яке передбачало аналіз і формулювання функціональних та
нефункціональних вимог до програмного забезпечення, було вирішено шляхом
визначення основних функцій системи, ролей користувачів та обмежень до
роботи програмного продукту. У результаті було сформовано перелік
функціональних і нефункціональних вимог, які стали основою для подальшого
проєктування та реалізації системи.
Третє завдання, що полягало у розробці архітектури програмного
забезпечення, було вирішено шляхом створення структурної та функціональної
схем системи, а також побудови UML-діаграм прецедентів, компонентів, пакетів,
послідовності, комунікації та станів. Розроблена архітектура визначила структуру
системи та взаємодію між її основними компонентами.
Четверте завдання, пов’язане з проєктуванням структури бази даних, було
вирішено шляхом створення логічної моделі бази даних та визначення основних
сутностей системи: користувачів, притулків, тварин, заявок на адопцію та
повідомлень. Для кожної сутності були визначені необхідні атрибути та
зв’язки, що забезпечують цілісність і коректність зберігання даних. П’яте
завдання, яке передбачало розробку серверної частини для обробки даних та
взаємодії з базою даних, було вирішено шляхом використання мови
104
ЧДТУ 262104.001 ПЗ
програмування Python та фреймворку Django. Було реалізовано бізнес-
логіку
системи, механізми роботи з базою даних PostgreSQL, а також функції
додавання, редагування та отримання інформації про користувачів, тварин,
заявки та повідомлення.
Шосте завдання, що полягало у розробці інтерфейсу користувача, було
вирішено шляхом створення вебінтерфейсу із використанням HTML та CSS. Було
реалізовано сторінки реєстрації та авторизації користувачів, каталог тварин,
сторінки перегляду інформації про тварин, форми подання заявок, сторінки
повідомлень та інші елементи інтерфейсу, необхідні для комфортної роботи із
системою.
Сьоме завдання, пов’язане з реалізацією авторизації та прав доступу на
основі ролей, було вирішено шляхом впровадження системи автентифікації
користувачів та механізму розмежування доступу. У системі реалізовано ролі
користувача, притулку та адміністратора, кожна з яких має набір власних
функцій та прав доступу до даних.
Восьме завдання, яке передбачало проведення тестування програмного
забезпечення, було вирішено шляхом виконання модульного, інтеграційного,
системного та приймального тестування. Проведене тестування підтвердило
коректність роботи всіх функцій системи, стабільність взаємодії між її
компонентами та відповідність програмного забезпечення встановленим вимогам.
Таким чином, усі поставлені завдання були успішно виконані, а мета
кваліфікаційної роботи досягнута. У результаті розроблено повноцінну online-
платформу адопції тварин, яка забезпечує перегляд інформації про тварин,
подання та обробку заявок на адопцію, обмін повідомленнями між
користувачами та притулками, а також адміністрування даних системи.
Результати тестування підтвердили працездатність програмного комплексу
та його готовність до практичного використання.
105
ЧДТУ 262104.001 ПЗ
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1 Методи проектування [Електронний ресурс]. – Точка доступу: https://cpsm.
kpi.ua/Doc/konsp_suchasni_metodi.pdf
2 Аналіз вимог до ПЗ [Електронний ресурс]. – Точка доступу: URL:
http://dspace.wunu.edu.ua
3 HTML Standard [Електронний ресурс]. – Точка доступу: URL:
https://html.spec.whatwg.org/
4 Cascading Style Sheets (CSS) [Електронний ресурс]. – Точка доступу:
URL: https://developer.mozilla.org/en-US/docs/Web/CSS
5 Офіційна сторінка Python [Електронний ресурс]. – Точка доступу: URL:
https://python.org
6 Django Documentation [Електронний ресурс]. – Точка доступу: URL:
https://docs.djangoproject.com/
7 PostgreSQL Documentation [Електронний ресурс]. – Точка доступу: URL:
https://www.postgresql.org/docs/
8 Що таке SWOT [Електронний ресурс]. – Точка доступу: URL:
https://www.ba.in.ua/2023/06/30/shho-take-swot-analiz-ta-yak-jogo-korektno-
provodyty/
9 Аналіз ризиків [Електронний ресурс] – Точка доступу: URL:
https://skillsetter.io/blog/risk-management-ua
10 Petfinder [Електронний ресурс]. – Точка доступу: https://www.petfinder.com
11 Київ Цифровий [Електронний ресурс]. – Точка доступу: https://kyiv.digital
12 UAnimals [Електронний ресурс]. – Режим доступу: https://uanimals.org
13 Моделювання предметної області [Електронний ресурс]. – Точка доступу:
URL: https://dou.ua/forums/topic/42366/
14 Функціональні та нефункціональні вимоги [Електронний ресурс]. – Точка
доступу: URL: https://www.guru99.com/uk/functional-vs-non-functional-
requirements.html
15 Методичні рекомендації до підготовки кваліфікаційної роботи бакалавра
для здобувачів вищої освіти зі спеціальності 121 «Інженерія програмного
106
ЧДТУ 262104.001 ПЗ
забезпечення» усіх форм навчання [Текст] /Укл.: Голуб С.В., Заспа Г.О.,
Куницька С.Ю., Півень О.Б. Катаєва Є.Ю., Салапатов В.І., Метелап В.В.,
Олексюк В.В.; М-во освіти і науки України, Черкас, держ. технол. ун-т. -
Черкаси : ЧДТУ, 2023. - 96 с.
16 Мова UML [Електронний ресурс]. – Точка доступу: URL:
https://docs.kde.org/trunk5/uk/umbrello/umbrello/uml-basics.html
17 Все про UML [Електронний ресурс]. – Точка доступу: URL:
http://www.znannya.org/?view=uml
18 Діаграма пакетів [Електронний ресурс]. – Точка доступу: URL:
https://www.wikiwand.com/uk/Діаграма_пакетів
19 Діаграма компонентів [Електронний ресурс]. – Точка доступу: URL:
https://www.mindonmap.com/uk/blog/uml-component-diagram/
20 Діаграма послідовності [Електронний ресурс]. – Точка доступу: URL:
https://www.maxzosim.com/sequence-diagrams/
21 Актуальність діаграми послідовності [Електронний ресурс]. – Точка
доступу: URL: https://e5.ua/uk/blogpost-2/sequence-diagram-dosi-zhiva/
22 Діаграма комунікації [Електронний ресурс]. – Точка доступу: URL:
https://www.youtube.com/watch?v=xthCbxOENjE
23 Діаграма скінченного автомату [Електронний ресурс]. – Точка доступу:
URL: https://www.guru99.com/uk/state-machine-transition-diagram.html
24 Django Documentation: Getting Started [Електронний ресурс]. – Точка
доступу: URL: https://docs.djangoproject.com/en/stable/intro/
25 Django ORM [Електронний ресурс]. – Точка доступу: URL:
https://docs.djangoproject.com/en/stable/topics/db/
26 Django Authentication System [Електронний ресурс]. – Точка доступу:
URL: https://docs.djangoproject.com/en/stable/topics/auth/
27 Django Models Documentation [Електронний ресурс]. – Точка доступу:
URL: https://docs.djangoproject.com/en/stable/topics/db/models/
28 PostgreSQL Tutorial [Електронний ресурс]. – Точка доступу: URL:
https://www.postgresqltutorial.com/
29 PostgreSQL Data Types [Електронний ресурс]. – Точка доступу: URL:
107
ЧДТУ 262104.001 ПЗ
https://www.postgresql.org/docs/current/datatype.html
30 PostgreSQL Foreign Keys [Електронний ресурс]. – Точка доступу: URL:
https://www.postgresql.org/docs/current/tutorial-fk.html
31 PostgreSQL Administration Guide [Електронний ресурс]. – Точка доступу:
URL: https://www.postgresql.org/docs/current/admin.html
32 Django Admin Site [Електронний ресурс]. – Точка доступу: URL:
https://docs.djangoproject.com/en/stable/ref/contrib/admin/
33 Django Views [Електронний ресурс]. – Точка доступу: URL:
https://docs.djangoproject.com/en/stable/topics/http/views/
34 Django Templates [Електронний ресурс]. – Точка доступу: URL:
https://docs.djangoproject.com/en/stable/topics/templates/
35 Django Forms [Електронний ресурс]. – Точка доступу: URL:
https://docs.djangoproject.com/en/stable/topics/forms/
36 Django Testing Framework [Електронний ресурс]. – Точка доступу: URL:
https://docs.djangoproject.com/en/stable/topics/testing/
108
ДОДАТОК А
«ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ONLINE ПЛАТФОРМИ АДОПЦІЇ
ТВАРИН»
Специфікація
482. ЧДТУ 262401.001
Листів 2
Розробник Мазуренко О.С.
Керівник Півень О.Б.
2026
Позначення Найменування Примітка
Документація
482.ЧДТУ.262401 12 01 Текст програми
482.ЧДТУ. 262401 34 01 Інструкція користувача
482.ЧДТУ. 262401 90 01 Графічні матеріали
110
ДОДАТОК Б
«ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ONLINE ПЛАТФОРМИ АДОПЦІЇ
ТВАРИН»
Лістинг програми
482 ЧДТУ 262401 12 01
Листів 18
Розробник Мазуренко О.С.
2026
482 ЧДТУ 262401 12 01
ЗМІСТ
Файл models.py ............................................................................................................... 3
Файл forms.py ................................................................................................................. 4
Файл views.py ................................................................................................................. 6
Файл urls.py ......................................................................................................................... 12
Файл admin.py ..................................................................................................................... 13
Шаблон base.html ........................................................................................................... 13
Шаблон home.html ............................................................................................................. 14
Шаблон animal_detail.html ................................................................................................ 15
Шаблон shelter_applications.html ...................................................................................... 17
Шаблон messages_list.html ................................................................................................ 17
112
482 ЧДТУ 262401 12 01
Файл models.py
from django.db import models
from django.contrib.auth.models import AbstractUser from django.core.validators import
RegexValidator
class User(AbstractUser): username_validator = RegexValidator(
regex=r"^[^\W_]+(?: [^\W_]+)*$",
message="Ім'я користувача може містити лише літери, цифри та пробіли, без символів.",
)
ROLE_CHOICES = [
("user", "Користувач"),
("shelter", "Притулок"),
("admin", "Адміністратор"),
]
username = models.CharField( "Ім'я користувача", max_length=150, unique=True,
help_text="", validators=[username_validator], error_messages={
"unique": "Користувач із таким іменем вже існує.",
},
)
role = models.CharField(max_length=20, choices=ROLE_CHOICES, default="user")
def str (self):
return self.username
class Shelter(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE,
related_name="shelter_profile") name = models.CharField(max_length=150)
address = models.CharField(max_length=255) description = models.TextField(blank=True,
null=True)
def str (self):
return self.name
class Animal(models.Model): TYPE_CHOICES = [
("cat", "Кіт/кішка"),
("dog", "Собака"),
("other", "Інше"),
]
STATUS_CHOICES = [
("available", "Доступна"), ("reserved", "Зарезервована"), ("adopted", "Вже знайшла дім!"),
]
shelter = models.ForeignKey(Shelter, on_delete=models.CASCADE, related_name="animals")
name = models.CharField(max_length=100)
animal_type = models.CharField(max_length=50, choices=TYPE_CHOICES) description =
models.TextField()
photo = models.ImageField(upload_to="animals/", blank=True, null=True)
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="available")
is_archived = models.BooleanField(default=False)
def str (self):
return self.name
113
482 ЧДТУ 262401 12 01
class AdoptionApplication(models.Model): STATUS_CHOICES = [
("pending", "Очікує розгляду"), ("approved", "Схвалено"),
("rejected", "Відхилено"),
]
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="applications")
animal = models.ForeignKey(Animal, on_delete=models.CASCADE,
related_name="applications") comment = models.TextField(blank=True, null=True)
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="pending")
created_at = models.DateTimeField(auto_now_add=True)
def str (self):
return f"Заявка {self.user.username} на {self.animal.name}"
class ShelterAnnouncement(models.Model): CATEGORY_CHOICES = [
("volunteering", "Волонтерство"), ("donations", "Донати"),
("supplies", "Речі та корм"),
("other", "Інше"),
]
shelter = models.ForeignKey(Shelter, on_delete=models.CASCADE,
related_name="announcements") title = models.CharField(max_length=150)
category = models.CharField(max_length=30, choices=CATEGORY_CHOICES) description =
models.TextField()
contact_info = models.CharField(max_length=255, blank=True) is_active =
models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ["-created_at"]
def str (self):
return self.title
class Message(models.Model):
sender = models.ForeignKey(User, on_delete=models.CASCADE,
related_name="sent_messages") receiver = models.ForeignKey(User,
on_delete=models.CASCADE, related_name="received_messages") animal =
models.ForeignKey(
Animal, on_delete=models.SET_NULL, related_name="messages", blank=True,
null=True,
)
text = models.TextField()
sent_at = models.DateTimeField(auto_now_add=True) def str (self):
return f"Повідомлення від {self.sender.username} до {self.receiver.username}"
Файл forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm from .models import (
User, Shelter, Animal,
AdoptionApplication, ShelterAnnouncement, Message,
)
114
482 ЧДТУ 262401 12 01
class RegisterForm(UserCreationForm): email = forms.EmailField(
label="Електронна пошта", widget=forms.EmailInput(attrs={"placeholder":
"[email protected]"}),
)
role = forms.ChoiceField( label="Роль на платформі", choices=[
("user", "Шукаю улюбленця"), ("shelter", "Представляю притулок"),
],
widget=forms.RadioSelect,
help_text="Притулок зможе додавати тварин та переглядати заявки.",
)
class Meta: model = User
fields = ["username", "email", "role", "password1", "password2"] labels = {
"username": "Ім’я користувача",
}
def init (self, *args, **kwargs): super(). init (*args, **kwargs)
self.fields["username"].help_text = ""
self.fields["username"].widget.attrs.update({"placeholder": "Наприклад: Притулок Че"})
self.fields["password1"].label = "Пароль"
self.fields["password2"].label = "Підтвердження пароля"
class ShelterForm(forms.ModelForm): class Meta:
model = Shelter
fields = ["name", "address", "description"] labels = {
"name": "Назва притулку", "address": "Адреса", "description": "Опис",
}
class AnimalForm(forms.ModelForm): class Meta:
model = Animal
fields = ["name", "animal_type", "description", "photo", "status"] labels = {
"name": "Ім’я тварини", "animal_type": "Тип тварини", "description": "Опис",
"photo": "Фото",
"status": "Статус",
}
class AdoptionApplicationForm(forms.ModelForm): class Meta:
model = AdoptionApplication fields = ["comment"]
labels = {
"comment": "Коментар до заявки",
}
class ShelterAnnouncementForm(forms.ModelForm): class Meta:
model = ShelterAnnouncement
fields = ["title", "category", "description", "contact_info", "is_active"] labels = {
"title": "Заголовок", "category": "Тип допомоги", "description": "Опис",
"contact_info": "Контакти для зв'язку", "is_active": "Оголошення активне",
}
widgets = {
"title": forms.TextInput(attrs={"placeholder": "Наприклад: Потрібна допомога з вигулом
собак"}), "description": forms.Textarea(attrs={"rows": 5}),
"contact_info": forms.TextInput(attrs={"placeholder": "Телефон, email або месенджер"}),
115
482 ЧДТУ 262401 12 01
}
help_texts = {
"contact_info": "Можна залишити порожнім, якщо достатньо повідомлень через
платформу.",
}
class MessageForm(forms.ModelForm): class Meta:
model = Message fields = ["text"] labels = {
"text": "Текст повідомлення",
}
Файл views.py
from django.contrib import messages from django.contrib.auth import login
from django.contrib.auth.decorators import login_required from django.db import transaction
from django.shortcuts import render, redirect, get_object_or_404 from django.utils.http import
url_has_allowed_host_and_scheme
from .forms import ( RegisterForm, ShelterForm, AnimalForm, AdoptionApplicationForm,
ShelterAnnouncementForm, MessageForm,
)
from .models import Animal, Shelter, AdoptionApplication, ShelterAnnouncement, Message, User
def home(request):
animals = Animal.objects.filter(status="available", is_archived=False) selected_type =
request.GET.get("type", "")
selected_shelter = request.GET.get("shelter", "")
valid_types = {animal_type for animal_type, _ in Animal.TYPE_CHOICES}
if selected_type in valid_types:
animals = animals.filter(animal_type=selected_type)
if selected_shelter.isdigit():
animals = animals.filter(shelter_id=selected_shelter)
shelters = (
Shelter.objects.filter(animals status="available", animals is_archived=False)
.distinct()
.order_by("name")
)
return render( request,
"adoption/home.html",
{
"animals": animals,
"animal_types": Animal.TYPE_CHOICES, "selected_type": selected_type,
"selected_shelter": selected_shelter, "shelters": shelters,
},
)
def register(request):
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
user = form.save() login(request, user)
if user.role == "shelter":
return redirect("create_shelter_profile")
messages.success(request, "Реєстрація успішна.") return redirect("home")
116
482 ЧДТУ 262401 12 01
else:
form = RegisterForm()
return render(request, "adoption/register.html", {"form": form})
@login_required
def create_shelter_profile(request): if request.method == "POST":
form = ShelterForm(request.POST)
if form.is_valid():
shelter = form.save(commit=False) shelter.user = request.user shelter.save()
messages.success(request, "Профіль притулку створено.") return redirect("home")
else:
form = ShelterForm()
return render(request, "adoption/shelter_form.html", {"form": form})
def animal_detail(request, animal_id):
animal = get_object_or_404(Animal, id=animal_id)
is_owner = request.user.is_authenticated and request.user == animal.shelter.user
if animal.is_archived and not is_owner:
messages.error(request, "Ця тварина більше не доступна для перегляду.") return
redirect("home")
applications = [] related_messages = []
if is_owner:
applications = animal.applications.select_related("user").order_by("-created_at")
related_messages = animal.messages.select_related("sender", "receiver").order_by("-
sent_at")
return render( request,
"adoption/animal_detail.html",
{
"animal": animal, "applications": applications,
"related_messages": related_messages,
},
)
@login_required
def create_application(request, animal_id):
animal = get_object_or_404(Animal, id=animal_id)
if animal.is_archived or animal.status != "available":
messages.error(request, "Заявку можна подати тільки на доступну тварину.") return
redirect("animal_detail", animal_id=animal.id)
if request.method == "POST":
form = AdoptionApplicationForm(request.POST)
if form.is_valid():
application = form.save(commit=False) application.user = request.user application.animal =
animal application.save()
messages.success(request, "Заявку на адопцію створено.") return
redirect("animal_detail", animal_id=animal.id)
else:
form = AdoptionApplicationForm()
117
482 ЧДТУ 262401 12 01
return render( request,
"adoption/application_form.html",
{"form": form, "animal": animal},
)
@login_required
def add_animal(request):
shelter = get_object_or_404(Shelter, user=request.user)
if request.method == "POST":
form = AnimalForm(request.POST, request.FILES)
if form.is_valid():
animal = form.save(commit=False) animal.shelter = shelter animal.save()
messages.success(request, "Тварину додано.") return redirect("home")
else:
form = AnimalForm()
return render(request, "adoption/animal_form.html", {"form": form})
@login_required
def my_animals(request):
shelter = get_object_or_404(Shelter, user=request.user) animals =
Animal.objects.filter(shelter=shelter) selected_type = request.GET.get("type", "")
selected_status = request.GET.get("status", "") selected_archive = request.GET.get("archive",
"")
valid_types = {animal_type for animal_type, _ in Animal.TYPE_CHOICES} valid_statuses =
{status for status, _ in Animal.STATUS_CHOICES}
if selected_type in valid_types:
animals = animals.filter(animal_type=selected_type)
if selected_status in valid_statuses:
animals = animals.filter(status=selected_status)
if selected_archive == "active":
animals = animals.filter(is_archived=False) elif selected_archive == "archived":
animals = animals.filter(is_archived=True)
return render( request,
"adoption/my_animals.html",
{
"animals": animals,
"animal_types": Animal.TYPE_CHOICES, "animal_statuses": Animal.STATUS_CHOICES,
"selected_type": selected_type, "selected_status": selected_status, "selected_archive":
selected_archive,
},
)
@login_required
def my_applications(request): applications = (
AdoptionApplication.objects.filter(user=request.user)
.select_related("animal", "animal shelter")
.order_by("-created_at")
)
return render( request,
"adoption/my_applications.html",
{"applications": applications},
118
482 ЧДТУ 262401 12 01
)
@login_required
def edit_animal(request, animal_id):
shelter = get_object_or_404(Shelter, user=request.user)
animal = get_object_or_404(Animal, id=animal_id, shelter=shelter)
if request.method == "POST":
form = AnimalForm(request.POST, request.FILES, instance=animal)
if form.is_valid():
form.save()
messages.success(request, "Інформацію про тварину оновлено.") return
redirect("animal_detail", animal_id=animal.id)
else:
form = AnimalForm(instance=animal)
return render(request, "adoption/animal_form.html", { "form": form,
"animal": animal, "is_edit": True,
})
@login_required
def archive_animal(request, animal_id):
shelter = get_object_or_404(Shelter, user=request.user)
animal = get_object_or_404(Animal, id=animal_id, shelter=shelter)
if request.method == "POST": animal.is_archived = True animal.status = "available"
animal.save(update_fields=["is_archived", "status"]) messages.success(request, "Тварину
переміщено в архів.") return redirect("my_animals")
return render( request,
"adoption/animal_confirm_archive.html",
{"animal": animal},
)
@login_required
def restore_animal(request, animal_id):
shelter = get_object_or_404(Shelter, user=request.user)
animal = get_object_or_404(Animal, id=animal_id, shelter=shelter)
animal.is_archived = False animal.save(update_fields=["is_archived"])
messages.success(request, "Тварину відновлено з архіву.") return redirect("my_animals")
@login_required
def shelter_applications(request):
shelter = get_object_or_404(Shelter, user=request.user)
applications = AdoptionApplication.objects.filter(animal shelter=shelter)
return render( request,
"adoption/shelter_applications.html",
{"applications": applications},
)
def announcements_list(request):
119
482 ЧДТУ 262401 12 01
announcements = ShelterAnnouncement.objects.filter(is_active=True) return render(
request, "adoption/announcements_list.html",
{"announcements": announcements},
)
@login_required
def my_announcements(request):
shelter = get_object_or_404(Shelter, user=request.user) announcements =
ShelterAnnouncement.objects.filter(shelter=shelter) return render(
request, "adoption/my_announcements.html",
{"announcements": announcements},
)
def announcement_detail(request, announcement_id):
announcement = get_object_or_404(ShelterAnnouncement, id=announcement_id,
is_active=True) return render(
request, "adoption/announcement_detail.html",
{"announcement": announcement},
)
@login_required
def create_announcement(request):
shelter = get_object_or_404(Shelter, user=request.user)
if request.method == "POST":
form = ShelterAnnouncementForm(request.POST)
if form.is_valid():
announcement = form.save(commit=False) announcement.shelter = shelter
announcement.save()
messages.success(request, "Оголошення створено.") return
redirect("announcements_list")
else:
form = ShelterAnnouncementForm()
return render( request,
"adoption/announcement_form.html",
{"form": form},
)
@login_required
def edit_announcement(request, announcement_id): shelter = get_object_or_404(Shelter,
user=request.user) announcement = get_object_or_404(
ShelterAnnouncement, id=announcement_id, shelter=shelter,
)
if request.method == "POST":
form = ShelterAnnouncementForm(request.POST, instance=announcement)
if form.is_valid():
announcement = form.save() messages.success(request, "Оголошення оновлено.") if not
announcement.is_active:
return redirect("my_announcements")
return redirect("announcement_detail", announcement_id=announcement.id)
else:
form = ShelterAnnouncementForm(instance=announcement)
120
482 ЧДТУ 262401 12 01
return render( request,
"adoption/announcement_form.html",
{
"form": form,
"announcement": announcement, "is_edit": True,
},
)
@login_required
def delete_announcement(request, announcement_id): shelter = get_object_or_404(Shelter,
user=request.user) announcement = get_object_or_404(
ShelterAnnouncement, id=announcement_id, shelter=shelter,
)
if request.method == "POST": announcement.delete()
messages.success(request, "Оголошення видалено.") return
redirect("my_announcements")
return render( request,
"adoption/announcement_confirm_delete.html",
{"announcement": announcement},
)
@login_required
def update_application_status(request, application_id, status):
application = get_object_or_404(AdoptionApplication, id=application_id) next_url =
request.GET.get("next")
if next_url and not url_has_allowed_host_and_scheme(next_url,
allowed_hosts={request.get_host()}): next_url = None
if application.animal.shelter.user != request.user: messages.error(request, "У вас немає
доступу до цієї заявки.") return redirect("home")
if status in ["approved", "rejected"]: with transaction.atomic():
application.status = status application.save(update_fields=["status"])
animal = application.animal if status == "approved":
animal.status = "reserved" animal.save(update_fields=["status"])
animal.applications.exclude(id=application.id).update(status="rejected") elif (
animal.status == "reserved"
and not animal.applications.filter(status="approved").exists() and
animal.applications.exists()
and not animal.applications.exclude(status="rejected").exists()
):
animal.status = "available" animal.save(update_fields=["status"])
messages.success(request, "Статус заявки оновлено.") if next_url:
return redirect(next_url)
return redirect("shelter_applications")
@login_required
def send_message(request, receiver_id):
receiver = get_object_or_404(User, id=receiver_id)
animal_id = request.POST.get("animal_id") or request.GET.get("animal") animal = None
if animal_id:
animal = get_object_or_404(Animal, id=animal_id)
121
482 ЧДТУ 262401 12 01
if request.method == "POST":
form = MessageForm(request.POST)
if form.is_valid():
message = form.save(commit=False) message.sender = request.user message.receiver =
receiver message.animal = animal
else:
message.save()
messages.success(request, "Повідомлення надіслано.") return redirect("messages_list")
form = MessageForm()
return render( request,
"adoption/message_form.html",
{"form": form, "receiver": receiver, "animal": animal},
)
@login_required
def messages_list(request):
received = Message.objects.filter(receiver=request.user).select_related("animal", "sender") sent
= Message.objects.filter(sender=request.user).select_related("animal", "receiver")
return render( request,
"adoption/messages_list.html",
{"received": received, "sent": sent},
)
Файл urls.py
from django.urls
import path from .
import views
urlpatterns = [
path("", views.home, name="home"),
path("register/", views.register,
name="register"),
path("shelter/create/", views.create_shelter_profile, name="create_shelter_profile"),
path("animals/<int:animal_id>/", views.animal_detail, name="animal_detail"),
path("animals/<int:animal_id>/apply/", views.create_application,
name="create_application"), path("animals/add/", views.add_animal,
name="add_animal"),
path("animals/my/", views.my_animals, name="my_animals"),
path("animals/<int:animal_id>/edit/", views.edit_animal,
name="edit_animal"), path("animals/<int:animal_id>/archive/",
views.archive_animal, name="archive_animal"),
path("animals/<int:animal_id>/restore/", views.restore_animal,
name="restore_animal"), path("applications/my/", views.my_applications,
name="my_applications"), path("applications/", views.shelter_applications,
name="shelter_applications"), path("announcements/",
views.announcements_list, name="announcements_list"),
path("announcements/my/", views.my_announcements,
name="my_announcements"), path("announcements/add/",
views.create_announcement, name="create_announcement"),
path("announcements/<int:announcement_id>/edit/", views.edit_announcement,
name="edit_announcement"), path("announcements/<int:announcement_id>/delete/",
views.delete_announcement, name="delete_announcement"),
path("announcements/<int:announcement_id>/", views.announcement_detail,
name="announcement_detail"),
path(
"applications/<int:application_id>/<str:status
>/", views.update_application_status,
122
482 ЧДТУ 262401 12 01
name="update_application_status",
),
path("messages/", views.messages_list, name="messages_list"),
path("messages/send/<int:receiver_id>/", views.send_message,
name="send_message"),
]
Файл admin.py
from django.contrib import admin
from .models import User, Shelter, Animal, AdoptionApplication, ShelterAnnouncement, Message
admin.site.register(User)
admin.site.register(Shelter)
admin.site.register(Animal)
admin.site.register(AdoptionAp
plication)
admin.site.register(ShelterAnno
uncement)
admin.site.register(Message)
Шаблон base.html ..
<!doctype html>
<html lang="uk">
<head>
<meta charset="UTF-8" />
<title>AdoptPet</title>
{% load static %}
<link rel="stylesheet" href="{% static 'adoption/style.css' %}" />
</head>
<body>
<header class="header">
<a href="{% url 'home' %}" class="logo">AdoptPet</a>
<nav>
<a href="{% url 'home' %}">Тварини</a>
<a href="{% url 'announcements_list' %}">Допомога притулкам</a>
{% if user.is_authenticated %}
<a href="{% url 'messages_list' %}">Повідомлення</a>
{% if user.role == "user" %}
<a href="{% url 'my_applications' %}">Мої заявки</a>
{% endif %}
{% if user.role == "shelter" %}
<details class="nav-menu">
<summary>Кабінет притулку</summary>
<div class="nav-menu-content">
<a href="{% url 'my_animals' %}">Мої тварини</a>
<a href="{% url 'add_animal' %}">Додати тварину</a>
<a href="{% url 'shelter_applications' %}">Заявки</a>
<a href="{% url 'my_announcements' %}">Мої оголошення</a>
<a href="{% url 'create_announcement' %}">Створити оголошення</a>
</div>
</details>
{% endif %} {% if user.role == "admin" or user.is_staff %}
<a href="/admin/">Адміністрування</a>
{% endif %}
<a href="{% url 'logout' %}">Вийти</a>
123
482 ЧДТУ 262401 12 01
{% else %}
<a href="{% url 'login' %}">Увійти</a>
<a href="{% url 'register' %}">Реєстрація</a>
{% endif %}
</nav>
</header>
<main class="container">
{% if messages %} {% for message in messages %}
<div class="alert">{{ message }}</div>
{% endfor %} {% endif %} {% block content %}{% endblock %}
</main>
</body>
</html>
Шаблон home.html
{% extends "adoption/base.html" %} {% block content %}
<div class="page-heading">
<div>
<h1>Тварини для адопції</h1>
</div>
</div>
<form method="get" class="filter-panel" aria-label="Фільтри тварин">
<div class="filter-field">
<label for="type-filter">Тип тварини</label>
<select id="type-filter" name="type">
<option value="">Усі типи</option>
{% for value, label in animal_types %}
<option value="{{ value }}" {% if selected_type == value %}selected{% endif %}>
{{ label }}
</option>
{% endfor %}
</select>
</div>
<div class="filter-field">
<label for="shelter-filter">Притулок</label>
<select id="shelter-filter" name="shelter">
<option value="">Усі притулки</option>
{% for shelter in shelters %}
<option value="{{ shelter.id }}" {% if selected_shelter == shelter.id|stringformat:"s" %}selected{% endif
%}>
{{ shelter.name }}
</option>
{% endfor %}
</select>
</div>
<button type="submit">Застосувати</button>
<a class="button secondary" href="{% url 'home' %}">Скинути</a>
</form>
<div class="grid">
{% for animal in animals %}
<div class="card">
{% if animal.photo %}
<img src="{{ animal.photo.url }}" alt="{{ animal.name }}" />
{% else %}
124
482 ЧДТУ 262401 12 01
<div class="photo-placeholder">Фото очікується</div>
{% endif %}
<h3>{{ animal.name }}</h3>
<p class="muted">{{ animal.shelter.name }}</p>
<p>Тип: {{ animal.get_animal_type_display }}</p>
<p>{{ animal.description|truncatechars:100 }}</p>
<a class="button" href="{% url 'animal_detail' animal.id %}">Детальніше</a>
</div>
{% empty %}
<p>Наразі немає доступних тварин.</p>
{% endfor %}
</div>
{% endblock %}
Шаблон animal_detail.html
{% extends "adoption/base.html" %} {% block content %}
<div class="detail">
{% if animal.photo %}
<img src="{{ animal.photo.url }}" alt="{{ animal.name }}" />
{% else %}
<div class="photo-placeholder detail-placeholder">Фото очікується</div>
{% endif %}
<h1>{{ animal.name }}</h1>
{% if animal.is_archived %}
<span class="badge muted-badge">В архіві</span>
{% endif %}
<p><b>Притулок:</b> {{ animal.shelter.name }}</p>
{% if animal.shelter.address %}
<p class="muted">{{ animal.shelter.address }}</p>
{% endif %}
<p><b>Тип:</b> {{ animal.get_animal_type_display }}</p>
{% if not animal.is_archived %}
<p><b>Статус:</b> {{ animal.get_status_display }}</p>
{% endif %}
<p>{{ animal.description }}</p>
{% if user.is_authenticated and user.role == "user" and animal.status == "available" and not
animal.is_archived %}
<a class="button" href="{% url 'create_application'
animal.id %}"> Подати заявку
</a>
<a
class="button secondary"
href="{% url 'send_message' animal.shelter.user.id %}?animal={{ animal.id }}"
>
Написати притулку
</a>
{% elif user.is_authenticated and user.role == "user" %}
<p class="muted">
Ця тварина зараз недоступна для нової заявки, але ви можете написати притулку.
</p>
<a
class="button secondary"
href="{% url 'send_message' animal.shelter.user.id %}?animal={{ animal.id }}"
>
Написати притулку
</a>
{% endif %} {% if not user.is_authenticated %}
125
482 ЧДТУ 262401 12 01
{% if animal.status == "available" and not animal.is_archived %}
<a class="button" href="{% url 'login' %}"> Увійдіть, щоб подати заявку </a>
{% else %}
<p class="muted">Ця тварина зараз недоступна для нової заявки.</p>
{% endif %}
{% endif %} {% if user.is_authenticated and user == animal.shelter.user %}
<div class="actions">
<a class="button secondary" href="{% url 'edit_animal'
animal.id %}"> Редагувати тварину
</a>
{% if animal.is_archived %}
<a class="button secondary" href="{% url 'restore_animal'
animal.id %}"> Відновити з архіву
</a>
{% else %}
<a class="button danger" href="{% url 'archive_animal'
animal.id %}"> Архівувати
</a>
{% endif %}
</div>
{% endif %}
</div>
{% if user.is_authenticated and user == animal.shelter.user %}
<section class="detail-section">
<h2>Заявки на цю тварину</h2>
{% for application in applications %}
<div class="card">
<p><b>Користувач:</b> {{ application.user.username }}</p>
<p><b>Коментар:</b> {{ application.comment|default:"Без коментаря" }}</p>
<p><b>Статус:</b> {{ application.get_status_display }}</p>
<p class="muted">{{ application.created_at|date:"d.m.Y H:i" }}</p>
<div class="actions">
{% if application.status == "pending" %}
<a
class="button"
href="{% url 'update_application_status' application.id 'approved' %}?next={% url 'animal_detail'
animal.id %}"
>
Схвалити
</a>
<a
class="button danger"
href="{% url 'update_application_status' application.id 'rejected' %}?next={% url 'animal_detail'
animal.id %}"
>
Відхилити
</a>
{% endif %}
<a
class="button secondary"
href="{% url 'send_message' application.user.id %}?animal={{ animal.id }}"
>
Написати
</a>
</div>
</div>
{% empty %}
<p>На цю тварину ще немає заявок.</p>
{% endfor %}
126
482 ЧДТУ 262401 12 01
</section>
<section class="detail-section">
<h2>Повідомлення щодо цієї тварини</h2>
{% for message in related_messages %}
<div class="card">
<p>
<b>Від:</b> {{ message.sender.username }}
<b>Кому:</b> {{ message.receiver.username }}
</p>
<p>{{ message.text }}</p>
<p class="muted">{{ message.sent_at|date:"d.m.Y H:i" }}</p>
</div>
{% empty %}
<p>Повідомлень щодо цієї тварини ще немає.</p>
{% endfor %}
</section>
{% endif %}
{% endblock %}
Шаблон shelter_applications.html
{% extends "adoption/base.html" %} {% block content %}
<h1>Заявки на адопцію</h1>
{% for application in applications %}
<div class="card">
<p><b>Користувач:</b> {{ application.user.username }}</p>
<p><b>Тварина:</b> {{ application.animal.name }}</p>
<p><b>Коментар:</b> {{ application.comment }}</p>
<p><b>Статус:</b> {{ application.get_status_display }}</p>
{% if application.status == "pending" %}
<a
class="button"
href="{% url 'update_application_status' application.id 'approved' %}"
>Схвалити</a
>
<a
class="button danger"
href="{% url 'update_application_status' application.id 'rejected' %}"
>Відхилити</a
>
{% endif %}
</div>
{% empty %}
<p>Заявок немає.</p>
{% endfor %} {% endblock %}
Шаблон messages_list.html
{% extends "adoption/base.html" %} {% block content %}
<h1>Повідомлення</h1>
<h2>Отримані</h2>
{% for message in received %}
<div class="card">
<p><b>Від:</b> {{ message.sender.username }}</p>
{% if message.animal %}
<p><b>Тварина:</b> {{ message.animal.name }}</p>
{% endif %}
<p>{{ message.text }}</p>
127
482 ЧДТУ 262401 12 01
<small>{{ message.sent_at }}</small>
<br />
<a class="button secondary" href="{% url 'send_message' message.sender.id %}{% if
message.animal %}?animal={{ message.animal.id }}{% endif %}"
>Відповісти</a
>
</div>
{% empty %}
<p>Отриманих повідомлень немає.</p>
{% endfor %}
<h2>Надіслані</h2>
{% for message in sent %}
<div class="card">
<p><b>Кому:</b> {{ message.receiver.username }}</p>
{% if message.animal %}
<p><b>Тварина:</b> {{ message.animal.name }}</p>
{% endif %}
<p>{{ message.text }}</p>
<small>{{ message.sent_at }}</small>
</div>
{% empty %}
<p>Надісланих повідомлень немає.</p>
{% endfor %} {% endblock %}
128
ДОДАТОК В
«ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ONLINE-ПЛАТФОРМИ АДОПЦІЇ ТВАРИН»
Інструкція користувача
482.ЧДТУ 262401 34 01
Листів 5
Розробник _______________ Мазуренко О.С.
2026
482.ЧДТУ 262104 34 01 2
Коли користувач заходить на сайт, він потрапляє на домашню сторінку. Тут він
бачить інформацію про тварин, для яких шукають дім. На цій сторінці присутнє
посилання на реєстрацію, яке відкриває форму створення нового аккаунту.
Рисунок В.1 Форма реєстрації користувача
Після заповнення форми реєстрації, якщо було обрано роль притулок,
відкривається форма реєcтрації притулку:
130
482.ЧДТУ 262104 34 01 3
Рисунок В.2 Створення профілю притулку
Головна сторінка для всіх юзерів, незалежно від ролі виглядає однаково:
Рисунок В.3 Головна сторінка зі списком тварин
Для перегляду детальної інформації про тварини юзер натискає кнопку
“Детальніше” на картці гравця і відкривається сторінка тварини
131
482.ЧДТУ 262104 34 01 4
Рисунок В.4 Сторінка тварини
Після кліку на кнопку “Подати заявку”, відкривається форм заявки на адопцію
Рисунок В.5 Форма подання заявки на адопцію
Притулок отримує повідомлення про заявку від кристувача та може схвалити або
відхилити заявку
132
482.ЧДТУ 262104 34 01 5
Рисунок В.6 Отримання притулком заявки на адопцію
Притулки додають нову тварину до системи, заповнивши наступну форму:
Рисунок В.7 Додавання нової тварини
133
ДОДАТОК Г
«ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ONLINE ПЛАТФОРМИ АДОПЦІЇ ТВАРИН»
Графічні матеріали
482.ЧДТУ. 262401 90 01
Листів 21
Розробник Мазуренко О.С.
2026
155
482.ЧДТУ 262104 90 01 2
Рисунок Г.1 Тема роботи
Рисунок Г.2 Мета та завдання роботи
135
482.ЧДТУ 262104 90 01 3
Рисунок Г.3 Постановка задачі
Рисунок Г.4 Аналіз аналогів
136
482.ЧДТУ 262104 90 01 4
Рисунок Г.5 Аналіз аналогів
Рисунок Г.6 Моделювання предметної області
137
482.ЧДТУ 262104 90 01 5
Рисунок Г.7 Первинні вимоги
Рисунок Г.8 Детальні вимоги
138
482.ЧДТУ 262104 90 01 6
Рисунок Г.9 Функціональні вимоги
Рисунок Г.10 Нефункціональні вимоги
139
482.ЧДТУ 262104 90 01 7
Рисунок Г.11 Діаграма прецендентів
Рисунок Г.12 Діаграма класів
140
482.ЧДТУ 262104 90 01 8
Рисунок Г.13 Діаграма пакетів
Рисунок Г.14 Діаграма компонентів
141
482.ЧДТУ 262104 90 01 9
Рисунок Г.15 Діаграма розгортання
Рисунок Г.16 Діаграма діяльності
142
482.ЧДТУ 262104 90 01 10
Рисунок Г.17 Діаграма послідовності за сценарієм “Реєстрація користувача та
перегляд тварин”
Рисунок Г.18 Діаграма послідовності за сценарієм “Подання заявки та обмін
повідомленнями”
143
482.ЧДТУ 262104 90 01 11
Рисунок Г.19 Діаграма комунікації
Рисунок Г.20 Діаграма скінченого автомату
144
482.ЧДТУ 262104 90 01 12
Рисунок Г.21 Обґрунтування засобів реалізації
Рисунок Г.22 Структурна схема
145
482.ЧДТУ 262104 90 01 13
Рисунок Г.23 Функціональна схема
Рисунок Г.24 Логічна схема
146
482.ЧДТУ 262104 90 01 14
Рисунок Г.25 Структура бази даних
Рисунок Г.26 Інтерфейс користувача. Головна сторінка
147
482.ЧДТУ 262104 90 01 15
Рисунок Г.27 Інтерфейс користувача. Форма реєстрації
Рисунок Г.28 Інтерфейс користувача. Створення профілю притулку
148
482.ЧДТУ 262104 90 01 16
Рисунок Г.29 Інтерфейс користувача. Сторінка деталей тварини
Рисунок Г.30 Інтерфейс користувача. Заявка на адопцію
149
482.ЧДТУ 262104 90 01 17
Рисунок Г.31 Інтерфейс користувача. Отримання притулком заявку на адопцію
Рисунок Г.32 Інтерфейс користувача. Додавання нової тварини притулком
150
482.ЧДТУ 262104 90 01 18
Рисунок Г.33 Інтерфейс користувача. Панель адміністратора
Рисунок Г.34 Модульне тестування
151
482.ЧДТУ 262104 90 01 19
Рисунок Г.35 Інтеграційне тестування
Рисунок Г.36 Системне тестування
152
482.ЧДТУ 262104 90 01 20
Рисунок Г.37 Приймальне тестування
Рисунок Г.38 Висновок
153
482.ЧДТУ 262104 90 01 21
Рисунок Г.39 Подяки
Рисунок Г.40 Останній слайд презентації
154