Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал:
https://er.chdtu.edu.ua/handle/ChSTU/8826| Назва: | Телеграм-бот кафедри програмного забезпечення автоматизованих систем Черкаського державного технологічного університету |
| Автори: | Півень, Олександр Борисович Басюк, Кирил Сергійович |
| Ключові слова: | ТЕЛЕГРАМ-БОТ;ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ;NODE.JS;JAVASCRIPT;NOSQLBOOSTER;БАЗА ДАНИХ;GRAMMY;РОЗКЛАД;КОМУНІКАЦІЯ;МАСШТАБОВАНІСТЬ СИСТЕМИ;АРХІТЕКТУРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ;TELEGRAM BOT;SOFTWARE;NODE.JS;JAVASCRIPT;NOSQLBOOSTER;DATABASE;GRAMMY;SCHEDULE;COMMUNICATION;SYSTEM SCALABILITY;SOFTWARE ARCHITECTURE |
| Дата публікації: | 11-чер-2024 |
| Короткий огляд (реферат): | АНОТАЦІЇ
Виконавець: Басюк Кирил Сергійович.
Назва роботи: "Телеграм-бот кафедри програмного забезпечення автоматизованих систем Черкаського державного технологічного університету".
Спеціальність: 121 Інженерія програмного забезпечення.
Навчальний заклад: «Черкаський державний технологічний університет» м. Черкаси, 2024р.
У бакалаврській роботі розглядається розробка телеграм бота для студентів та викладачів кафедри програмного забезпечення автоматизованих систем Черкаського державного технологічного університету. Основною метою розробки є створення інструменту, який допомагатиме користувачам отримувати актуальну інформацію про розклад занять та інші пов’язані сервіси. Бот повинен відповідати вимогам користувачів щодо функціональності, зручності використання та продуктивності.
У ході роботи було проведено детальний аналіз потреб цільової аудиторії, сформовано вимоги до телеграм бота, виконано моделювання ключових функцій та реалізовано систему на основі Node.js з використанням мови програмування JavaScript. Основні ідеї та результати досліджень включають:
‒ формування вимог: були визначені первинні та детальні вимоги до системи. Враховано потреби студентів і викладачів, розроблені функціональні та нефункціональні вимоги. Цей процес забезпечив чітке розуміння цілей і функцій, які повинні бути реалізовані;
‒ моделювання функціоналу: було створено концептуальну, логічну та фізичну моделі системи. Визначено основні функції бота, такі як відображення розкладу занять, нагадування про розклад, відслідковування його змін, можливість надсилати повідомлення обраній категорії студентів від викладачів;
‒ реалізація системи: було розроблено телеграм-бот на основі Node.js, що забезпечує його гнучкість і можливість масштабування. Використання мови програмування JavaScript дозволило ефективно реалізувати необхідний функціонал. Описана архітектура системи та використані технології. Висновки роботи показують, що створений телеграм-бот успішно задовольняє потреби студентів та викладачів ЧДТУ, покращуючи ефективність комунікації та знижуючи витрати часу на пошук та управління розкладом. Система відповідає вимогам користувачів та демонструє високу продуктивність і надійність у практичному використанні. ANNOTATIONS Performer: Basyuk Kyril Serhiyovych. The title of the work: "Telegram-bot of the department of software of automated systems of the Cherkasy State University of Technology". Specialty: 121 Software engineering. Educational institution: Cherkasy State Technological University, Cherkasy, 2024. The bachelor's thesis deals with the development of a telegram bot for students and teachers of the department of software of automated systems of the Cherkasy State University of Technology. The main goal of the development is to create a tool that will help users get up-to-date information about the schedule of classes and other related services. The bot must meet user requirements for functionality, usability, and performance. In the course of the work, a detailed analysis of the needs of the target audience was carried out, requirements for the Telegram bot were formed, key functions were modeled, and a system based on Node.js using the JavaScript programming language was implemented. Key insights and research findings include: ‒ formation of requirements: primary and detailed requirements for the system were defined. The needs of students and teachers are taken into account, functional and non-functional requirements are developed. This process ensured a clear understanding of the goals and functions to be implemented; ‒ functional modeling: a conceptual, logical and physical model of the system was created. The main functions of the bot are defined, such as displaying the schedule of classes, reminders about the schedule, tracking its changes, the ability to send messages to the selected category of students from teachers; ‒ system implementation: Telegram bot was developed based on Node.js, which ensures its flexibility and scalability. The use of the JavaScript programming language made it possible to effectively implement the necessary functionality. The system architecture and used technologies are described. The conclusions of the work show that the created telegram bot successfully meets the needs of students and teachers of ChSTU, improving the efficiency of communication and reducing the time spent on searching and managing the schedule. The system meets user requirements and demonstrates high performance and reliability in practical use |
| URI (Уніфікований ідентифікатор ресурсу): | https://er.chdtu.edu.ua/handle/ChSTU/8826 |
| Розташовується у зібраннях: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) |
Файли цього матеріалу:
| Файл | Опис | Розмір | Формат | |
|---|---|---|---|---|
| Кваліфікаційна робота бакалавра Басюк Кирил Сергійович.pdf Restricted Access | 5 MB | Adobe PDF | Переглянути/Відкрити Запит копії |
Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи
«бакалавра»
освітній рівень
на тему: «Телеграм-бот кафедри програмного забезпечення
автоматизованих систем Черкаського державного технологічного
університету»
Виконав: студент 4 курсу, групи ПЗC-2244
Спеціальності
121 «Інженерія програмного забезпечення»
(шифр і назва напряму підготовки)
Студент Басюк К.С.
(прізвище та ініціали)
Керівник Півень О.Б.
(прізвище та ініціали)
Рецензент Біда А.Ю.
(прізвище та ініціали)
Черкаси 2024
Черкаський державний технологічний університет
повне найменування вищого навчального закладу
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
Освітній рівень бакалавр
Спеціальність 121 «Інженерія програмного забезпечення»
Освітня програма Інженерія програмного забезпечення
ЗАТВЕРДЖУЮ
Зав. кафедри ПЗАС, професор
___________ Голуб С.В.
«___» _______________ 2024 року
З А В Д А Н Н Я
НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ
Басюк Кирил Сергійович
(прізвище, ім’я, по батькові)
1.Тему проекту (роботи) «Телеграм-бот кафедри програмного забезпечення автоматизованих
систем Черкаського державного технологічного університету»
Керівник проекту (роботи) Півень Олександр Борисович кандидат наук, доцент
(прізвище, ім’я , по батькові, науковий ступінь, вчене звання)
Затверджені наказом Черкаського державного технологічного університету від « 26 » лютого
2024 року №60/04
2. Строк подання студентом проекту (роботи) 3 червня 2024 р.
3. Вхідні дані до проекту (роботи) Технічне завдання на розробку, методичні рекомендації до
виконання бакалаврської роботи, автоматизовані системи, терміни та визначення.
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити)
Вступ;
Розділ 1. Існуючі методи та засоби розв’язання поставлених завдань;
Розділ 2. Впровадження результатів досліджень у практику проектування програмного
забезпечення інформаційних систем;
Розділ 3. Розробка та тестування програмного забезпечення;
Висновки;
Список використаних джерел;
Додатки.
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових робіт проекту;
2
Слайд 1; Слайд 2; Слайд 3; Слайд 4; Слайд 5; Слайд 6; Слайд 7; Слайд 8; Слайд 9; Слайд 10;
Слайд 11; Слайд 12; Слайд 13; Слайд 14; Слайд 15; Слайд 16; Слайд 17; Слайд 18; Слайд 19;
Слайд 20; Слайд 21; Слайд 22; Слайд 23; Слайд 24.
6. Консультанти розділів проекту (роботи)
Прізвище, ініціали та посади Підпис, дата
Розділ
консультанта Завдання видав Завдання прийняв
1
2
3
7. Дата видачі завдання 02 грудня 2023 р.
КАЛЕНДАРНИЙ ПЛАН
Строк
виконання
№
Назва етапів випускної роботи етапів Примітки
п/п
випускної
роботи
1 Постановка задачі 05.12.2023 виконано
2 Підготовка завдання 13.12.2023 виконано
3 Погодження завдання 16.12.2023 виконано
4 Затвердження завдання 19.02.2024 виконано
Основна стадія
1 Підбір матеріалів 27.02.2024 виконано
2 Аналіз шляхів вирішення поставленої задачі 04.02.2024 виконано
3 Розрахунок основних параметрів роботи 10.03.2024 виконано
4 Вибір кінцевого варіанту проектного рішення 17.03.2024 виконано
5 Оформлення первісної редакції роботи 25.03.2024 виконано
Заключна стадія
1 Узгодження прийнятих проектних рішень з 31.04.2024 виконано
керівником
2 Оформлення пояснювальної записки роботи в 13.05.2024 виконано
кінцевій редакції
3 Попередній захист роботи 15.05.2024 виконано
4 Затвердження роботи 31.05.2024 виконано
5 Рецензування роботи 20.05.2024 виконано
6 Захист роботи 11.06.2024
Студент _____________________ Басюк К.С.
(підпис) (прізвище та ініціали)
Керівник проекту (роботи) _____________________ Півень О.Б.
(підпис) (прізвище та ініціали)
3
АНОТАЦІЇ
Виконавець: Басюк Кирил Сергійович.
Назва роботи: "Телеграм-бот кафедри програмного забезпечення
автоматизованих систем Черкаського державного технологічного університету".
Спеціальність: 121 Інженерія програмного забезпечення.
Навчальний заклад: «Черкаський державний технологічний університет» м.
Черкаси, 2024р.
У бакалаврській роботі розглядається розробка телеграм бота для студентів
та викладачів кафедри програмного забезпечення автоматизованих систем
Черкаського державного технологічного університету. Основною метою розробки
є створення інструменту, який допомагатиме користувачам отримувати актуальну
інформацію про розклад занять та інші пов’язані сервіси. Бот повинен відповідати
вимогам користувачів щодо функціональності, зручності використання та
продуктивності.
У ході роботи було проведено детальний аналіз потреб цільової аудиторії,
сформовано вимоги до телеграм бота, виконано моделювання ключових функцій
та реалізовано систему на основі Node.js з використанням мови програмування
JavaScript. Основні ідеї та результати досліджень включають:
‒ формування вимог: були визначені первинні та детальні вимоги до
системи. Враховано потреби студентів і викладачів, розроблені функціональні та
нефункціональні вимоги. Цей процес забезпечив чітке розуміння цілей і функцій,
які повинні бути реалізовані;
‒ моделювання функціоналу: було створено концептуальну, логічну та
фізичну моделі системи. Визначено основні функції бота, такі як відображення
розкладу занять, нагадування про розклад, відслідковування його змін,
можливість надсилати повідомлення обраній категорії студентів від викладачів;
‒ реалізація системи: було розроблено телеграм бот на основі Node.js, що
забезпечує його гнучкість і можливість масштабування. Використання мови
програмування JavaScript дозволило ефективно реалізувати необхідний
функціонал. Описана архітектура системи та використані технології.
Висновки роботи показують, що створений телеграм бот успішно
задовольняє потреби студентів та викладачів ЧДТУ, покращуючи ефективність
комунікації та знижуючи витрати часу на пошук та управління розкладом.
Система відповідає вимогам користувачів та демонструє високу продуктивність і
надійність у практичному використанні.
Ключові слова. ТЕЛЕГРАМ-БОТ, ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ,
NODE.JS, JAVASCRIPT, NOSQLBOOSTER, БАЗА ДАНИХ, GRAMMY,
РОЗКЛАД, КОМУНІКАЦІЯ, МАСШТАБОВАНІСТЬ СИСТЕМИ, АРХІТЕКТУРА
ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
ANNOTATIONS
Performer: Basyuk Kyril Serhiyovych.
The title of the work: "Telegram-bot of the department of software of automated
systems of the Cherkasy State University of Technology".
Specialty: 121 Software engineering.
Educational institution: Cherkasy State Technological University, Cherkasy,
2024.
The bachelor's thesis deals with the development of a telegram bot for students
and teachers of the department of software of automated systems of the Cherkasy State
University of Technology. The main goal of the development is to create a tool that will
help users get up-to-date information about the schedule of classes and other related
services. The bot must meet user requirements for functionality, usability, and
performance.
In the course of the work, a detailed analysis of the needs of the target audience
was carried out, requirements for the Telegram bot were formed, key functions were
modeled, and a system based on Node.js using the JavaScript programming language
was implemented. Key insights and research findings include:
‒ formation of requirements: primary and detailed requirements for the system
were defined. The needs of students and teachers are taken into account, functional and
non-functional requirements are developed. This process ensured a clear understanding
of the goals and functions to be implemented;
‒ functional modeling: a conceptual, logical and physical model of the system
was created. The main functions of the bot are defined, such as displaying the schedule
of classes, reminders about the schedule, tracking its changes, the ability to send
messages to the selected category of students from teachers;
‒ system implementation: Telegram bot was developed based on Node.js, which
ensures its flexibility and scalability. The use of the JavaScript programming language
made it possible to effectively implement the necessary functionality. The system
architecture and used technologies are described.
The conclusions of the work show that the created telegram bot successfully
meets the needs of students and teachers of ChSTU, improving the efficiency of
communication and reducing the time spent on searching and managing the schedule.
The system meets user requirements and demonstrates high performance and reliability
in practical use
Keywords: TELEGRAM BOT, SOFTWARE, NODE.JS, JAVASCRIPT,
NOSQLBOOSTER, DATABASE, GRAMMY, SCHEDULE, COMMUNICATION,
SYSTEM SCALABILITY, SOFTWARE ARCHITECTURE
ЗМІСТ
ЗМІСТ . .................................................................................................................... 4
ВСТУП ................................................................................................................... 5
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ
ПОСТАВЛЕНИХ ЗАВДАНЬ ....................................................................................... 13
1.1 Огляд платформ та фреймворків для розробки телеграм-бота ............ 13
1.2 Методи аналізу телеграм-бота ................................................................. 15
1.3 Порівняльний аналіз існуючих аналогів ................................................. 16
1.4 Постановка задачі...................................................................................... 21
ВИСНОВОК ДО ПЕРШОГО РОЗДІЛУ ....................................................... 23
РОЗДІЛ 2. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У
ПРАКТИКУ ПРОЕКТУВАННЯ .................................................................................. 24
2.1 Моделювання предметної області ........................................................... 24
2.1.1 Предметна область моделювання. Модель предметної області.
Словник предметної області ................................................................................ 24
2.1.2 Елементи моделювання предметної області ................................... 28
2.1.3 Робоча область моделювання ........................................................... 30
2.2 Формування та аналіз вимог .................................................................... 32
2.2.1 Формування вимог до програмного забезпечення. Первинні і
детальні вимоги. Вимоги замовника і розробника. Функціональні та
нефункціональні вимоги ....................................................................................... 32
2.2.2 Формування вимог за допомогою діаграми прецедентів .............. 35
2.3 Проектування логічної структури програмного комплексу ................. 37
2.3.1 Діаграми класів .................................................................................. 37
2.4 Архітектура проектування ....................................................................... 44
2.4.1 Діаграма компонентів ........................................................................ 44
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання ............................................................................................................ 46
ЧДТУ 242239.001ПЗ
Змн. Арк. № докум. Підпис Дата
Розроб. Басюк К.С. «Телеграм-бот кафедри програмного Літ. Лист Листів
Перевір. Півень О.Б. забезпечення автоматизованих систем 3
Черкаського державного технологічного
університету»
Н. Контр. Півень О.Б. ФІТІС, кафедра ПЗАС, ПЗС-2244
Пояснювальна записка.
Затверд. Голуб С.В.
3
2.5 Моделювання поведінки системи ........................................................... 48
2.5.1 Діаграма діяльності ............................................................................ 48
2.5.2 Діаграма послідовності ...................................................................... 51
2.5.3 Діаграма комунікації ......................................................................... 54
2.5.4 Діаграма скінченного автомату ........................................................ 56
ВИСНОВОК ДО ДРУГОГО РОЗДІЛУ ......................................................... 58
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ........................................................................................................... 60
3.1 Розробка програмного комплексу ........................................................... 60
3.1.1 Обґрунтування вибору засобів реалізації ........................................ 60
3.1.2 Опис структурної (функціональної) схеми ..................................... 62
3.1.3 Опис логічної схеми .......................................................................... 64
3.1.4 Розробка бази даних .......................................................................... 66
3.1.5 Розробка інтерфейсу користувача .................................................... 71
3.1.6 Опис розробки програмних компонентів ........................................ 85
3.2 Тестування системи .................................................................................. 87
3.2.1 Модульне тестування ........................................................................ 87
3.2.2 Інтеграційне тестування .................................................................... 90
3.2.3 Системне тестування ......................................................................... 91
3.2.4 Приймальне тестування ..................................................................... 93
3.3 Приклади впровадженого програмного комплексу .............................. 95
ВИСНОВОК ДО ТРЕТЬОГО РОЗДІЛУ ..................................................... 103
ВИСНОВКИ ....................................................................................................... 105
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ......................................................... 107
Додаток А ........................................................................................................... 110
Додаток Б ........................................................................................................... 112
Додаток В ........................................................................................................... 134
Додаток Г ........................................................................................................... 138
ЧДТУ 242239.001ПЗ
Змн. Арк. № докум. Підпис Дата
4
ЧДТУ 242239.001ПЗ
ВСТУП
Актуальність теми. Актуальність визначається потребою в розробці
телеграм бота для студентів та викладачів кафедри програмного забезпечення
автоматизованих систем Черкаського державного технологічного університету
(ЧДТУ). Сучасний освітній процес потребує ефективних інструментів для
покращення комунікації та доступу до інформації. В умовах зростання обсягів
інформації та необхідності швидкого реагування на зміни, телеграм бот може
значно полегшити навчальний процес.
По-перше, студенти стикаються з великим обсягом академічних завдань,
строками здачі робіт та екзаменами. Швидкий доступ до актуальної інформації
про розклад занять, зміни в навчальному процесі та важливі події допомагає
студентам краще планувати свій час та знижувати рівень стресу.
По-друге, викладачі відповідають за розробку навчальних планів,
оцінювання робіт та проведення консультацій. Телеграм бот може спростити
комунікацію між викладачами та студентами, дозволяючи викладачам швидко
сповіщати студентів про зміни у розкладі, надавати додаткові матеріали та
нагадування про важливі дати.
По-третє, бот може стати платформою для швидкого отримання відповідей
на запитання, пов'язані з навчальним процесом, що знижує рівень стресу у
студентів і допомагає їм зосередитися на навчанні.
По-четверте, інтеграція сучасних технологій у навчальний процес сприяє
створенню більш згуртованої академічної спільноти. Телеграм бот забезпечує
зручний та ефективний спосіб доступу до інформації та спілкування для обох
сторін – студентів та викладачів.
Таким чином, розробка телеграм бота є актуальним і необхідним завданням,
що сприяє підвищенню ефективності навчального процесу, зниженню витрат часу
на адміністративні завдання, покращенню якості комунікації та створенню більш
зручного і сучасного освітнього середовища.
Мета і завдання розробки
5
ЧДТУ 242239.001ПЗ
Мета розробки. Метою розробки телеграм бота є створення ефективного
інструменту для покращення комунікації та доступу до інформації для студентів
та викладачів Черкаського державного технологічного університету. Бот
забезпечить швидкий доступ до актуального розкладу занять, сповіщень про
зміни та важливих подій, що допоможе студентам краще планувати свій час і
знижувати рівень стресу. Викладачі зможуть легко повідомляти студентів про
зміни, надавати додаткові матеріали та нагадування, що спростить організацію
навчального процесу та підвищить його ефективність.
Завдання розробки
Завдання розробки телеграм бота:
1 Аналіз вимог до телеграм бота:
визначити ключові функції, необхідні для студентів і викладачів;
зібрати та впорядкувати вимоги від користувачів і зацікавлених
сторін.
2 Огляд існуючих рішень:
дослідити наявні телеграм боти для освітніх установ;
оцінити їхні сильні та слабкі сторони, а також можливості для
покращення.
3 Розробка архітектури телеграм бота:
створити концептуальну модель системи;
визначити основні компоненти та їх взаємодію;
розробити схему бази даних для зберігання та обробки інформації.
4 Реалізація телеграм бота:
створити для користувача зручний інтерфейс на основі доступних
засобів для телеграм-ботів;
впровадити основні функціональні модулі: показ розкладу занять,
оголошення, можливість надсилати повідомлення від викладачів до
студентів;
провести тестування для виявлення та подальшого виправлення
6
ЧДТУ 242239.001ПЗ
помилок.
5 Інтеграція та впровадження телеграм бота:
розробити стратегію інтеграції бота з існуючими інформаційними
системами університету;
скласти план впровадження, включаючи навчання користувачів і
підтримку.
6 Оцінка економічної ефективності:
провести аналіз економічної ефективності впровадження телеграм
бота;
визначити потенційні переваги та ризики, пов'язані з використанням
нової системи.
Ці завдання забезпечують всебічний підхід до розробки телеграм-бота для
кафедри програмного забезпечення автоматизованих систем Черкаського
державного технологічного університету, враховуючи всі аспекти навчального
процесу та сприяючи підвищенню його ефективності.
Об'єкт розробки. Об'єктом розробки є телеграм бот для кафедри
програмного забезпечення автоматизованих систем Черкаського державного
технологічного університету. Цей бот покликаний забезпечити ефективний та
зручний доступ до інформації про розклад занять, зміни в навчальному процесі,
оголошення та важливі події, а також спростити комунікацію між студентами і
викладачами кафедри.
Методи проектування та конструювання
Методи проектування. Проектування телеграм-бота для кафедри
програмного забезпечення автоматизованих систем Черкаського державного
технологічного університету передбачає використання кількох методів, що
забезпечують його ефективність, зручність у використанні та масштабованість. У
цій бакалаврській роботі використані наступні методи проектування [1].
Об'єктно-орієнтоване проектування (ООП)
Основним методом, що використовується для розробки системи, є об'єктно-
орієнтоване проектування (ООП). ООП дозволяє організувати програмний код у
7
ЧДТУ 242239.001ПЗ
вигляді об'єктів, які представляють реальні сутності та їхні взаємодії.
Основні принципи ООП включають:
інкапсуляцію: приховування внутрішньої реалізації об'єктів та надання
доступу до них через публічні методи;
наслідування: створення нових класів на основі існуючих, що забезпечує
повторне використання коду та зменшує його складність;
поліморфізм: можливість об'єктам різних класів відповідати на однакові
методи по-різному, що дозволяє створювати більш гнучкі та розширювані
системи;
абстракцію: виділення загальних характеристик і поведінки об'єктів для
створення абстрактних класів і інтерфейсів, що полегшує проектування складних
систем.
Моделювання за допомогою UML
Для візуального представлення структури та поведінки системи
використовувалося моделювання за допомогою UML (Unified Modeling Language).
Основні UML-діаграми, що застосовуються в проектуванні телеграм бота,
включають:
діаграми прецедентів: визначають взаємодії між користувачами
(акторами) та системою, окреслюючи основні функціональні можливості;
класові діаграми: описують структуру системи, включаючи класи, їхні
властивості, методи та взаємозв'язки між ними;
діаграми послідовностей: показують порядок взаємодії між об'єктами в
процесі виконання певного сценарію, що допомагає зрозуміти динаміку системи;
діаграми станів: відображають можливі стани об'єкта та переходи між
ними протягом його життєвого циклу, що важливо для розуміння поведінки
об'єкта в різних ситуаціях.
Використання шаблонів проектування
Шаблони проектування забезпечують перевірені рішення для типових
проблем проектування програмного забезпечення. У розробці телеграм бота були
використані наступні шаблони:
8
ЧДТУ 242239.001ПЗ
Singleton: забезпечує існування єдиного екземпляра класу і глобальну
точку доступу до нього, що корисно для управління ресурсами, такими як
налаштування або з'єднання з базою даних;
Factory Method: визначає інтерфейс для створення об'єктів, але дозволяє
підкласам змінювати тип створюваних об'єктів, що сприяє гнучкості коду та
полегшує розширення системи;
Observer: встановлює залежність "один-до-багатьох" між об'єктами так,
що при зміні стану одного об'єкта всі залежні об'єкти сповіщаються і
оновлюються, що допомагає підтримувати синхронізацію станів, наприклад, для
оновлення користувацького інтерфейсу у відповідь на зміни в даних.
Ці методи проектування забезпечують структурований підхід до розробки
телеграм бота, що сприяє створенню надійного, зручного та ефективного
інструменту для студентів і викладачів ЧДТУ.
Методи конструювання
Розробка користувацького інтерфейсу. Цей метод включає проектування та
реалізацію інтерфейсу користувача, який буде взаємодіяти з користувачами через
телеграм-бот. Це охоплює визначення функціональних можливостей бота,
створення інтерфейсу, який буде зручним для користувачів, та впровадження
необхідної функціональності.
Розробка серверної частини. Для функціонування телеграм-бота потрібен
сервер, який буде обробляти запити користувачів та забезпечувати відповіді. Цей
метод включає розробку та налаштування серверної програми, яка буде
відповідати на запити, взаємодіяти з базою даних та відправляти відповіді
користувачам через платформу Telegram [2].
Інтеграція з базою даних. Для збереження та обробки даних, необхідних для
роботи бота, потрібна база даних. Цей метод включає розробку схеми бази даних,
створення таблиць для зберігання інформації про користувачів, розклад занять,
матеріали курсів тощо, а також написання запитів для отримання та збереження
даних.
Реалізація функціональності. Цей метод включає програмування
9
ЧДТУ 242239.001ПЗ
різноманітних функцій, які будуть доступні через телеграм-бот. Це функції для
перегляду розкладу занять, отримання оголошень від викладачів. Кожна функція
повинна бути ретельно розроблена та протестована перед включенням у роботу
бота.
Тестування та відлагодження. Після реалізації функціональності необхідно
провести тестування бота, щоб переконатися, що він працює коректно та
задовольняє всі потреби користувачів. Це включає тестування різних сценаріїв
використання, виявлення та виправлення помилок та вдосконалення
користувацького досвіду.
Опис отриманих результатів
У результаті виконання бакалаврської роботи були досягнуті наступні
результати.
Аналіз потреб користувачів. Було проведено детальний аналіз потреб
цільової аудиторії, що включає студентів та викладачів Черкаського державного
технологічного університету. Визначено основні функціональні та
нефункціональні вимоги до телеграм-бота. Зібрані дані дозволили створити
систему, яка відповідає очікуванням користувачів.
Формування вимог. На основі аналізу потреб було сформовано чіткі вимоги
до телеграм бота. Було визначено перелік основних функцій, таких як:
відображення розкладу занять;
інформація про викладачів;
можливість надсилання повідомлень від викладачів до обраних
категорій студентів.
Моделювання системи. Було створено концептуальну, логічну та фізичну
моделі системи. Це включає:
концептуальна модель: визначає загальну структуру та основні
функціональні компоненти бота;
логічна модель: детальний опис функцій та взаємодії між компонентами;
фізична модель: реалізація структури даних та технічних рішень для
забезпечення роботи системи.
10
ЧДТУ 242239.001ПЗ
Реалізація системи. Телеграм-бот був реалізований на основі Node.js з
використанням мови програмування JavaScript [3]. Це забезпечило гнучкість та
можливість масштабування системи. Були реалізовані основні функції, визначені
на етапі формування вимог.
Оцінка та тестування. Проведене тестування показало високу
продуктивність та надійність телеграм бота у практичному використанні. Система
успішно задовольняє потреби студентів та викладачів ЧДТУ, покращуючи
ефективність комунікації та знижуючи витрати часу на пошук та управління
розкладом.
Висновки та рекомендації. Висновки роботи показують, що створений
телеграм бот успішно відповідає вимогам користувачів та демонструє високу
продуктивність і надійність у практичному використанні. Запропоновано
рекомендації щодо подальшого розвитку системи та її розширення функціоналу.
Ці результати демонструють ефективність підходу до розробки телеграм
бота та його практичну цінність для студентів і викладачів ЧДТУ.
Практичне значення отриманих результатів
Результати дослідження та розробки телеграм бота для кафедри
програмного забезпечення автоматизованих систем Черкаського державного
технологічного університету (ЧДТУ) мають значне практичне значення, що
виявляється в наступних аспектах:
Покращення комунікації. Телеграм бот суттєво підвищує ефективність
комунікації між студентами та викладачами ЧДТУ. Завдяки функціям, таким як
відображення розкладу занять, нагадування про заняття та відслідковування змін
у розкладі, користувачі отримують актуальну інформацію в режимі реального
часу. Це знижує витрати часу на пошук розкладу та підвищує організованість
навчального процесу.
Готовність до використання. Розроблений телеграм бот повністю готовий до
практичного використання. Проведене тестування підтвердило його високу
продуктивність та надійність. Бот може бути негайно впроваджений у навчальний
процес ЧДТУ без необхідності додаткових доопрацювань.
11
ЧДТУ 242239.001ПЗ
Масштабність використання. Телеграм бот може бути використаний не
тільки на рівні кафедри програмного забезпечення автоматизованих систем, але і
в інших кафедрах та підрозділах ЧДТУ. Більш того, розроблена система є
універсальною і може бути адаптована для використання в інших навчальних
закладах, що дозволяє масштабувати її застосування [4].
Рекомендації щодо використання. Рекомендації щодо використання
телеграм бота включають постійне оновлення та підтримку системи, розширення
функціоналу відповідно до нових вимог користувачів, а також проведення
регулярного навчання студентів та викладачів для ефективного використання
бота. Додатково рекомендовано створити систему зворотного зв'язку для збору
відгуків та пропозицій щодо покращення роботи телеграм бота.
Ці результати свідчать про високу практичну цінність розробленого
телеграм бота, його готовність до широкомасштабного використання та значний
потенціал для покращення навчального процесу у Черкаському державному
технологічному університеті.
Особистий внесок автора. У процесі виконання бакалаврської роботи
автор зробив значний внесок у всі етапи розробки телеграм-бота. Особисто було
проведено детальний аналіз потреб користувачів, сформовано функціональні та
нефункціональні вимоги до системи. Автор самостійно розробив концептуальну,
логічну та фізичну моделі бота, а також реалізував систему на основі Node.js з
використанням JavaScript. Особливу увагу було приділено тестуванню та
оптимізації продуктивності системи, що забезпечило її високу надійність та
ефективність у практичному використанні.
12
ЧДТУ 242239.001ПЗ
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ
ПОСТАВЛЕНИХ ЗАВДАНЬ
Телеграм-боти стали важливим інструментом у різних сферах, включаючи
освіту, бізнес, медіа та багато інших. Вони дозволяють автоматизувати процеси,
забезпечувати миттєву комунікацію та надавати користувачам зручний доступ до
інформації. У цьому розділі проведемо аналіз наукової та технічної інформації
щодо створення телеграм-ботів, зосереджуючись на існуючих методах,
технологіях та прикладах успішних реалізацій [5].
Телеграм-боти – це малі додатки, які працюють всередині месенджера
Telegram і забезпечують інтерактивний інтерфейс для виконання різних завдань.
Вони можуть використовуватися для автоматизації задач, отримання та обробки
інформації, інтеграції з іншими сервісами, проведення опитувань та багато
іншого. Згідно з офіційною документацією Telegram, бот-платформа підтримує
понад 10 мільйонів ботів, що свідчить про її популярність та ефективність [6].
1.1 Огляд платформ та фреймворків для розробки телеграм-бота
Розробка телеграм-ботів стала популярною завдяки зручності використання
месенджера Telegram та його потужним API. Для створення ботів існує безліч
платформ та фреймворків, які забезпечують різний рівень функціональності та
зручності розробки. Нижче наведено огляд деяких з найпопулярніших платформ
та фреймворків для розробки телеграм-ботів.
Node.js - це серверна платформа, що базується на JavaScript. Вона
забезпечує високу продуктивність та масштабованість, що робить її популярним
вибором для розробки телеграм-ботів [7].
Переваги:
висока продуктивність завдяки асинхронній моделі обробки запитів;
широка екосистема модулів та пакетів через npm (Node Package
Manager);
підтримка великої спільноти розробників;
13
ЧДТУ 242239.001ПЗ
Недоліки:
необхідність знання JavaScript та асинхронного програмування;
відносно складна налагодження та відстеження помилок у
великомасштабних застосунках.
Grammy - це сучасний фреймворк для створення телеграм-ботів на Node.js.
Він забезпечує зручний інтерфейс для роботи з Telegram API та включає велику
кількість корисних функцій для розробників [8].
Переваги:
легкий у використанні, з детальною документацією та прикладами;
підтримка TypeScript для додаткової безпеки та зручності розробки;
вбудовані механізми для обробки команд, середовища запуску та інших
важливих функцій бота.
Недоліки:
відносно новий фреймворк, що може означати обмежену кількість
готових рішень та підтримки.
Telegraf - це ще один популярний фреймворк для розробки телеграм-ботів
на Node.js. Він надає простий та інтуїтивний інтерфейс для взаємодії з Telegram
API [9].
Переваги:
простий у використанні, добре документований та підтримуваний
спільнотою;
підтримка широкого спектру функцій, включаючи обробку повідомлень,
команд, інтеграцію з базами даних та іншими сервісами;
легка інтеграція з іншими інструментами та фреймворками.
Недоліки:
обмежена підтримка TypeScript у порівнянні з Grammy;
деякі функції можуть бути складними для реалізації без додаткових
налаштувань.
14
ЧДТУ 242239.001ПЗ
Python - популярна мова програмування для розробки телеграм-ботів
завдяки своїй простоті та багатій екосистемі бібліотек [10]. Aiogram - це
асинхронний
фреймворк для створення телеграм-ботів на Python [11].
Переваги:
простота у вивченні та використанні;
велика кількість готових бібліотек та модулів для різних задач;
асинхронна обробка запитів для високої продуктивності.
Недоліки:
може бути менш продуктивним у порівнянні з Node.js для деяких задач;
вимагає налаштування середовища розробки та залежностей.
Виходячи з описаних переваг та недоліків вищезазначених інструментів для
розробки, вирішено використовувати мову програмування JavaScript на платформі
Node.js та фреймворк для створення телеграм-ботів – Grammy. Цей вибрів є
цілком виправданим з огляду на потреби проекту та задані цілі. Node.js, з його
асинхронними можливостями та високою продуктивністю, ідеально підходить
для розробки швидкодіючих і масштабованих ботів. Фреймворк Grammy спрощує
інтеграцію з Telegram API, забезпечуючи гнучкість та легкість у розробці.
Загалом, використання цих технологій та інструментів забезпечує міцну
основу для розробки телеграм-бота, який відповідає сучасним вимогам до
швидкості, ефективності, та масштабованості.
1.2 Методи аналізу телеграм-бота
Розробка телеграм-бота вимагає всебічного аналізу для визначення
оптимальних рішень, що забезпечать високу ефективність та надійність системи.
У цьому підрозділі розглядаються методи аналізу, які використовуються для
оцінки та покращення системи розробки телеграм-бота.
SWOT-аналіз дозволяє оцінити сильні та слабкі сторони системи розробки
телеграм-бота, а також можливості та загрози, які виникають у зовнішньому
15
ЧДТУ 242239.001ПЗ
середовищі. Це допомагає визначити основні переваги проекту, а також
потенційні виклики, які можуть виникнути під час розробки та впровадження
системи [12].
Аналіз даних включає обробку великого обсягу інформації про вимоги
користувачів, технічні характеристики, продуктивність та інші аспекти системи.
Це дозволяє виявити тенденції, відхилення та критичні точки, що потребують
уваги під час розробки телеграм-бота.
Моделювання процесів передбачає використання математичних та
комп'ютерних моделей для прогнозування поведінки системи. Це включає
моделювання користувацької взаємодії, оптимізацію використання ресурсів та
оцінку продуктивності бота.
Аналіз ризиків спрямований на виявлення потенційних загроз для телеграм-
бота та розробку стратегій управління цими ризиками. Це включає оцінку
можливих проблем з безпекою, продуктивністю та надійністю системи [13].
Аналіз потреб користувачів спрямований на вивчення вимог та очікувань
кінцевих користувачів системи. Це допомагає визначити найважливіші функції та
забезпечити, що розроблений телеграм-бот максимально відповідає потребам
студентів та викладачів ЧДТУ.
Застосування вищезгаданих методів аналізу дозволяє створити ефективну та
надійну систему розробки телеграм-бота. Кожен метод забезпечує цілісне бачення
проекту з різних аспектів, що сприяє прийняттю обґрунтованих рішень та
підвищенню якості кінцевого продукту.
1.3 Порівняльний аналіз існуючих аналогів
Для проведення порівняння з існуючими аналогами, проведемо відповідний
пошук в мережі Інтернет схожих за функціональністю застосунків та
безпосередньо телеграм-ботів. Виберемо найбільш придатні для порівняння і
виділимо у кожного з них переваги та недоліки притаманні їм.
16
ЧДТУ 242239.001ПЗ
1 Сайт з розкладом занять Черкаського державного технологічного
університету (рисунок 1.1).
Рисунок 1.1 – Сайт «Розклад занять»
Рисунок 1.2 – Вибір дати за домогою календарю
17
ЧДТУ 242239.001ПЗ
Являє веб-сайт з однойменною сторінкою (єдиною) для перегляду розкладу
занять за вибраним факультетом, ПІБ викладача або назвою групи, також
можливо вказати діапазон дати для пошуку.
Переваги:
простий, інтуїтивно зрозумілий інтерфейс;
широкий набір конфігурації для пошуку розкладу, зокрема можливість
вибору дати за допомогою календарю (рисунок 1.2).
Недоліки:
доволі тривала загрузка сторінки, що складає в середньому 1.5 секунди,
що є достатньо поганим показником для такого простого сайту (рисунок 1.3);
відсутня можливість реєстрації/авторизації, що унеможливлює
збереження назви своєї групи і в результаті її потрібно кожного разу вводити
заново;
представлений сайт розроблений приватним підприємством, що надає
своє програмне забезпечення для великої кількості вищих навчальних закладів,
тому воно є максимально уніфікованим, внаслідок чого істотно підвищує затрати
на оновлення, а також унеможливлює додавання функціоналу для конкретного
університету.
Рисунок 1.3 – Результати тестування швидкості загрузки сайту
18
ЧДТУ 242239.001ПЗ
2 Застосунок «Студент ЧДТУ»
Застосунок, що доступний для завантаження на смартфони з операційною
системою Android з магазину додатків Play Market. Призначений для студентів
Черкаського державного технологічного університету. Має систему авторизації за
даними які видаються кожному студенту. Налічує наступні сторінки: головна,
заяви, розклад, профіль (рисунок 1.4), вибіркові дисципліни, вибори та
опитування, навчальний план.
Рисунок 1.4 – Сторінка «Профіль» застосунку «Студент ЧДТУ»
Переваги:
19
ЧДТУ 242239.001ПЗ
авторизація, що дає можливість взаємодіяти зі застосунком від лиця
студента та переглядати актуальну інформацію щодо себе;
широкий набір функціоналу, що має простір для розширення в
майбутньому;
Недоліки:
необхідність встановлення окремого застосунку;
відсутність застосунку в App Store для користувачів смартфонів Apple з
операційною системою IOS (на момент дослідження);
відсутність двофакторної автентифікації.
3 Телеграм-бот «Розклад VNU» Волинського національного університету
імені Лесі Українки.
Бот, що має інтерфейс у вигляді клавіатури для взаємодії з його функціями
(рисунок 1.5). Спеціалізується на відображенні розкладу занять.
Рисунок 1.5 – Меню телеграм-бота «Розклад VNU»
Переваги:
можливість перегляду розкладу безпосередньо в телеграмі.
Недоліки:
обмежений функціонал (лише перегляд розкладу);
20
ЧДТУ 242239.001ПЗ
відсутність реєстрації, внаслідок чого кожен раз для перегляду розкладу
потрібно виконати дії з вибору категорії, факультету та групи.
Порівнюючи наведені приклади між собою, складаючи їх плюси та мінуси,
можна виділити наступне:
телеграм-бот є доступнішим у порівнянні зі встановлюваним
застосунком, оскільки Telegram використовують більша кількість користувачів, а
для взаємодії з ботом достатньо знайти його в діалогах;
телеграм-бот є простішим у використанні, оскільки має однаковий
інтерфейс для усіх ботів, завдяки чому є інтуїтивно зрозумілим новому
користувачу;
у порівнянні зі сайтом, він краще адаптований під мобільні пристрої, та
відрізняється кращою швидкодією;
для доступу до бота, необхідно бути авторизованим у свій обліковий
запис Telegram, який проходить через двоєтапну автентифікацію, у разі входу на
підозрілому пристрої.
1.4 Постановка задачі
За результатом огляду платформ та фреймворків для розробки телеграм-
бота, визначення методів аналізу, та проведення дослідження наявних аналогів із
порівнянням їх між собою, завдяки чому було виділено сильні та слабкі сторони
кожного, можна описати завдання, що необхідно виконати для досягнення
поставленої мети, та підвести підсумки даного розділу.
Розробка такого бота вимагає вирішення низки завдань, що включають
аналіз потреб користувачів, формування вимог, вибір відповідних технологій,
реалізацію та тестування системи.
Аналіз потреб користувачів:
проведення опитувань та інтерв'ю зі студентами та викладачами для
визначення їхніх основних потреб та очікувань від системи;
збір та аналіз даних щодо поточного процесу управління розкладом
занять.
21
ЧДТУ 242239.001ПЗ
Формування вимог до системи:
визначення функціональних вимог, таких як відображення розкладу,
нагадування про заняття, відстеження змін у розкладі, та можливість надсилання
повідомлень;
визначення нефункціональних вимог, включаючи вимоги до
продуктивності, надійності, безпеки та масштабованості системи.
Вибір технологій:
вибір платформи для розробки бота (Node.js);
вибір фреймворку для роботи з Telegram API (Grammy);
вибір бази даних для зберігання інформації (MongoDB);
вибір інструментів для управління базою даних (NoSQLBooster).
Розробка та реалізація системи
розробка архітектури системи, включаючи логічну та фізичну моделі;
реалізація функціоналу бота на основі обраних технологій;
забезпечення інтеграції з існуючими інформаційними системами
університету.
Тестування та валідація
проведення функціонального тестування для перевірки коректності
роботи всіх функцій бота;
проведення навантажувального тестування для оцінки продуктивності
системи під великим навантаженням;
валідація системи з кінцевими користувачами для отримання зворотного
зв'язку та внесення необхідних коригувань.
Підводячи підсумки, можна сказати, що розробка телеграм-бота для ЧДТУ є
комплексним завданням, яке вимагає всебічного підходу до аналізу потреб
користувачів, формування вимог, вибору технологій, реалізації та тестування
системи. Виконання цих завдань дозволить створити ефективний інструмент,
який покращить комунікацію та організацію навчального процесу в університеті.
22
ЧДТУ 242239.001ПЗ
ВИСНОВОК ДО ПЕРШОГО РОЗДІЛУ
У першому розділі проведено огляд платформ та фреймворків для розробки
телеграм-бота кафедри програмного забезпечення автоматизованих систем
Черкаського державного технологічного університету, внаслідок чого складено
певне представлення про найбільш доречні інструменти для розробки. Розібрали
методи аналізу. Провели пошук та порівняння існуючих аналогів, виділивши їх
основні переваги та недоліки, підвели підсумки стосовно них. На основі описаних
вище даних зробили постановку задачі по розробці бота.
23
ЧДТУ 242239.001ПЗ
РОЗДІЛ 2. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У
ПРАКТИКУ ПРОЕКТУВАННЯ
2.1 Моделювання предметної області
Моделювання предметної області є важливим етапом у розробці телеграм-
бота, оскільки дозволяє створити абстрактну уяву про систему, яка допомагає
визначити основні функції та взаємодію між компонентами. У нашому випадку,
моделювання забезпечує чітке розуміння структури та процесів, що відбуваються
всередині системи телеграм-бота. Це включає розробку концептуальної, логічної
та фізичної моделей, які допомагають виявити критичні елементи системи,
оптимізувати її функціонування та забезпечити інтеграцію з існуючими
інформаційними системами університету. Такий підхід дозволяє мінімізувати
ризики помилок та підвищити ефективність реалізації проекту.
2.1.1 Предметна область моделювання. Модель предметної області. Словник
предметної області
Предметна область моделювання. Моделювання предметної області для
телеграм-бота кафедри програмного забезпечення автоматизованих систем
Черкаського державного технологічного університету (ЧДТУ) включає всі
аспекти діяльності, що підлягають автоматизації, з метою забезпечення
ефективної комунікації та доступу до інформації для студентів та викладачів.
Основні компоненти предметної області для даного телеграм-бота включають:
реєстрація студентів: процес, що передбачає введення таких даних, як
прізвище, ім'я, по батькові, рік народження, курс, група, бакалавр/магістр, номер
телефону, електронна адреса. Це забезпечує створення унікального профілю для
кожного студента в системі;
перегляд інформації про викладачів: функція, що надає студентам
доступ до інформації про викладачів, включаючи прізвище, ім'я, по батькові,
науковий ступінь, фото, електронну адресу. Це дозволяє студентам легко
знаходити контактну інформацію викладачів;
24
ЧДТУ 242239.001ПЗ
перегляд розкладу занять: можливість для студентів отримувати
актуальну інформацію про розклад своїх занять, що допомагає їм планувати свій
навчальний процес;
надсилання оголошень викладачами: функція, яка дозволяє викладачам
надсилати оголошення певним категоріям користувачів (групам студентів або
окремим студентам). Це забезпечує оперативне інформування студентів про
важливі події або зміни;
можливість студентів писати викладачам повідомлення: забезпечує
двосторонню комунікацію між студентами та викладачами, що сприяє вирішенню
питань, пов'язаних з навчальним процесом.
Моделювання предметної області [14] дозволяє створити чітке уявлення про
структуру та функціональність телеграм-бота, визначити ключові елементи
системи та їх взаємодію. Це допомагає забезпечити ефективний процес розробки
та впровадження бота, мінімізувати ризики помилок і забезпечити відповідність
системи потребам користувачів ЧДТУ.
Модель предметної області. Моделювання предметної області для
телеграм-бота кафедри програмного забезпечення автоматизованих систем
Черкаського державного технологічного університету охоплює всі аспекти, що
підлягають автоматизації, з метою покращення комунікації та доступу до
інформації для студентів та викладачів. Основні компоненти предметної області
включають:
1 Реєстрація студентів. Процес реєстрації студентів передбачає збирання
та зберігання таких даних:
прізвище, ім'я, по батькові: ідентифікація студента;
рік народження: визначення вікової категорії;
курс і група: визначення навчального статусу та належності до
групи;
бакалавр/магістр: освітній рівень студента;
номер телефону та електронна адреса: контактна інформація для
зв'язку.
25
ЧДТУ 242239.001ПЗ
2 Перегляд інформації про викладачів. Функція, що надає студентам
доступ до інформації про викладачів, включає:
прізвище, ім'я, по батькові: ідентифікація викладача;
науковий ступінь: академічна кваліфікація викладача;
фото: візуальна ідентифікація;
електронна адреса: контакт для зв'язку.
3 Перегляд розкладу занять. Ця функція дозволяє студентам отримувати
актуальну інформацію про розклад своїх занять, включаючи:
назва курсу: ідентифікація предмету;
час та місце проведення: вказання конкретного часу та місця занять;
викладач: викладач, який проводить заняття.
4 Надсилання оголошень викладачами. Функція, яка дозволяє викладачам
надсилати оголошення певним категоріям користувачів, включає:
текст оголошення: основний зміст повідомлення;
категорія користувачів: групи студентів або окремі студенти, яким
адресоване оголошення.
5 Можливість студентів писати викладачам повідомлення. Ця функція
забезпечує двосторонню комунікацію між студентами та викладачами:
текст повідомлення: зміст звернення студента;
адресат: викладач, до якого звертається студент.
Схема моделі предметної області:
1 Користувачі:
студенти;
викладачі.
2 Дані про студентів:
ідентифікаційні дані (прізвище, ім'я, по батькові);
контактні дані (номер телефону, електронна адреса);
освітні дані (курс, група, бакалавр/магістр);
додаткова інформація (рік народження).
26
ЧДТУ 242239.001ПЗ
3 Дані про викладачів:
ідентифікаційні дані (прізвище, ім'я, по батькові);
науковий ступінь;
контактні дані (електронна адреса);
візуальні дані (фото).
4 Розклад занять:
курси;
час та місце проведення;
викладачі.
5 Повідомлення та оголошення:
від викладачів до студентів;
від студентів до викладачів.
Моделювання предметної області необхідне для створення чіткої та
детальної уяви про структуру та функціональність телеграм-бота. Це дозволяє:
забезпечити відповідність системи потребам користувачів: врахувати всі
необхідні функції та взаємодії, що є важливими для студентів та викладачів;
оптимізувати процес розробки: чітке розуміння вимог та взаємодій
дозволяє ефективно планувати розробку та уникати помилок;
покращити підтримку та розширення системи: моделі допомагають
легше вносити зміни та доповнення у майбутньому.
Таким чином, моделювання предметної області є ключовим етапом у
розробці телеграм-бота, що забезпечує його ефективну та надійну роботу,
відповідність потребам користувачів та легкість подальшого вдосконалення.
Словник предметної області
Телеграм-бот – програмне забезпечення, що працює всередині месенджера
Telegram, автоматизуючи завдання та забезпечуючи взаємодію з користувачами
через чат-інтерфейс.
Студент – користувач системи, який є студентом Черкаського державного
технологічного університету, зареєстрований у телеграм-боті для отримання
27
ЧДТУ 242239.001ПЗ
інформації про розклад занять та спілкування з викладачами.
Викладач – користувач системи, який є викладачем ЧДТУ, використовує
телеграм-бот для надсилання оголошень студентам та отримання повідомлень від
студентів.
Розклад занять – графік проведення навчальних занять для студентів, що
включає інформацію про час, місце проведення занять та викладача.
Реєстрація студентів – процес внесення студентів у систему телеграм-бота з
введенням таких даних, як прізвище, ім'я, по батькові, рік народження, курс,
група, номер телефону та електронна адреса.
Оголошення – інформаційні повідомлення, які викладачі надсилають
студентам через телеграм-бот, інформуючи їх про важливі події або зміни.
Повідомлення – текстові повідомлення, які студенти можуть надсилати
викладачам через телеграм-бот для спілкування та вирішення навчальних питань.
Інформація про викладачів – дані про викладачів, включаючи прізвище,
ім'я, по батькові, науковий ступінь, фото та електронну адресу, які доступні
студентам через телеграм-бот.
Node.js – серверна платформа для виконання JavaScript коду, що забезпечує
високу продуктивність та масштабованість.
Grammy – фреймворк для створення телеграм-ботів на платформі Node.js,
що забезпечує зручний інтерфейс для роботи з Telegram API.
MongoDB – NoSQL база даних, яка забезпечує гнучке зберігання та
управління даними.
NoSQLBooster – інструмент для управління базами даних MongoDB, що
дозволяє ефективно адмініструвати та налаштовувати базу даних [15].
Цей словник допомагає чітко визначити ключові поняття та терміни, що
використовуються у процесі розробки та впровадження телеграм-бота для
кафедри програмного забезпечення автоматизованих систем ЧДТУ.
2.1.2 Елементи моделювання предметної області
У процесі моделювання предметної області для телеграм-бота кафедри
програмного забезпечення автоматизованих систем ЧДТУ ми будемо
28
ЧДТУ 242239.001ПЗ
використовувати різні елементи UML (Unified Modeling Language), які
допоможуть наочно представити структуру та функціональність системи. Основні
елементи UML, які ми будемо використовувати, включають класи, атрибути,
операції, асоціації та діаграми класів [16].
Рисунок 2.1 – Основні графічні символи UML
Для моделювання предметної області телеграм-бота кафедри програмного
забезпечення автоматизованих систем ЧДТУ ми будемо використовувати
діаграми UML (Unified Modeling Language), які є стандартним засобом для
візуалізації, специфікації, конструювання та документування артефактів
програмних систем. Основні елементи моделювання UML, що використовуються
29
ЧДТУ 242239.001ПЗ
для опису предметної області, включають класи, об'єкти, атрибути, методи,
асоціації, та різні типи діаграм.
Рисунок 2.2 – Єднальні елементи UML
Елементи моделювання предметної області за допомогою UML включають
класи, об'єкти, атрибути, методи, асоціації та різні типи діаграм. Використання
UML для моделювання системи дозволяє створити наочну та зрозумілу структуру
системи, що забезпечує ефективну комунікацію між розробниками та іншими
зацікавленими сторонами проекту, а також полегшує процес проектування,
реалізації та тестування програмного забезпечення [17].
2.1.3 Робоча область моделювання
Робоча область моделювання представляє всі аспекти системи, які
підлягають моделюванню для розуміння, аналізу та подальшого проектування. В
30
ЧДТУ 242239.001ПЗ
контексті розробки телеграм-бота для кафедри програмного забезпечення
автоматизованих систем Черкаського державного технологічного університету,
робоча область моделювання охоплює всі сутності та їх взаємодії, необхідні для
реалізації основних функцій системи. Всі аспекти діяльності, що підлягають
автоматизації у системі. Вона включає опис сутностей, їх атрибутів, взаємодій та
функцій, які повинні бути реалізовані для забезпечення ефективної роботи
системи.
Рисунок 2.3 – Модель предметної області
Основні компоненти
1 Користувачі (Users):
студент (Student);
викладач (Teacher).
2 Розклад (Schedule):
3 Повідомлення (Messages):
4 Оголошення (Announcements):
31
ЧДТУ 242239.001ПЗ
2.2 Формування та аналіз вимог
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні
вимоги
Формування вимог до програмного забезпечення є критичним етапом у
розробці будь-якої системи, включаючи телеграм-бот кафедри програмного
забезпечення автоматизованих систем ЧДТУ. Цей процес включає збір, аналіз,
документування та управління вимогами, що забезпечує чітке розуміння потреб і
очікувань як замовника, так і розробника [18].
Первинні та детальні вимоги
Первинні вимоги включають загальні функції та властивості, які система
повинна мати для виконання своїх основних завдань. Вони визначають основні
цілі та обмеження системи:
телеграм-бот повинен забезпечувати реєстрацію студентів з введенням
наступних даних: прізвище, ім'я, по батькові, рік народження, курс, група,
освітній рівень (бакалавр/магістр), номер телефону, електронна адреса;
телеграм-бот повинен дозволяти студентам переглядати інформацію про
викладачів, включаючи: прізвище, ім'я, по батькові, науковий ступінь, фото,
електронну адресу;
телеграм-бот повинен надавати користувачам можливість переглядати
розклад занять;
викладачі повинні мати можливість надсилати оголошення певним
категоріям користувачів (групам студентів або окремим студентам);
студенти повинні мати можливість писати викладачам повідомлення
через телеграм-бот.
Детальні вимоги включають більш точні та конкретні описи функцій,
інтерфейсів, даних та інших аспектів системи. Вони уточнюють первинні вимоги і
забезпечують основу для розробки технічної документації та реалізації системи.
1 Реєстрація студентів:
32
ЧДТУ 242239.001ПЗ
форма реєстрації повинна включати поля для введення всіх
необхідних даних;
після реєстрації студент повинен отримати підтвердження успішної
реєстрації.
2 Перегляд інформації про викладачів:
інформація повинна відображатися у вигляді списку, з можливістю
вибору окремого викладача для перегляду детальної інформації;
інформація повинна включати фото викладача та контактні дані для
зв'язку.
3 Перегляд розкладу занять:
розклад повинен бути доступний для перегляду за день;
користувач повинен мати можливість фільтрувати розклад групами.
4 Надсилання оголошень:
викладач повинен мати можливість обирати категорію користувачів
для надсилання оголошення;
оголошення повинні мати текстове поле для введення повідомлення
та можливість додавання вкладень.
5 Надсилання повідомлень студентами:
студенти повинні мати можливість обирати викладача з списку для
надсилання повідомлення;
повідомлення повинні зберігатися в історії для подальшого
перегляду.
Вимоги замовника і розробника
Вимоги замовника визначаються кінцевими користувачами системи і
включають функціональні та нефункціональні аспекти, що мають значення для
задоволення їхніх потреб. Ці вимоги формулюються у вигляді тверджень, що
описують, що система повинна робити:
інтерфейс телеграм-бота повинен бути інтуїтивно зрозумілим і простим
у використанні для студентів та викладачів;
33
ЧДТУ 242239.001ПЗ
система повинна забезпечувати швидку обробку запитів і мінімальні
затримки;
дані користувачів повинні бути надійно захищені і конфіденційні.
Вимоги розробника визначаються командою розробників і включають
технічні аспекти реалізації системи, такі як архітектура, технології, стандарти та
інші внутрішні критерії. Ці вимоги забезпечують, що система буде реалізована з
урахуванням технічних можливостей та обмежень:
телеграм-бот повинен бути розроблений на платформі Node.js з
використанням фреймворка Grammy для взаємодії з Telegram API;
дані повинні зберігатися у базі даних MongoDB з використанням
NoSQLBooster для управління;
система повинна бути масштабованою, щоб підтримувати збільшення
кількості користувачів без зниження продуктивності.
Функціональні та нефункціональні вимоги
Функціональні вимоги описують специфічні функції, які система повинна
виконувати. Вони включають дії, що можуть виконуватися користувачами
системи, обробку даних, взаємодію між компонентами системи і т.д. Для
телеграм-бота ЧДТУ функціональні вимоги наступні:
реєстрація студентів (прізвище, ім'я, по батькові, рік народження, курс,
група, номер телефону, електронна адреса);
перегляд інформації про викладачів (прізвище, ім'я, по батькові,
науковий ступінь, фото, електронна адреса);
перегляд розкладу занять;
надсилання оголошень викладачами певним категоріям користувачів;
можливість студентів писати викладачам повідомлення.
Нефункціональні вимоги описують атрибути системи, такі як
продуктивність, безпека, зручність використання, надійність та інші якості, що
впливають на загальну ефективність системи [19]. Для телеграм-бота ЧДТУ
нефункціональні вимоги наступні:
34
ЧДТУ 242239.001ПЗ
продуктивність: система повинна обробляти запити від користувачів в
межах 1-2 секунд;
безпека: дані користувачів повинні бути захищені за допомогою
шифрування;
зручність використання: інтерфейс бота повинен бути інтуїтивно
зрозумілим і легким у використанні;
надійність: система повинна забезпечувати високу доступність та
відсутність простоїв;
масштабованість: система повинна підтримувати можливість збільшення
кількості користувачів без зниження продуктивності.
Формування вимог до програмного забезпечення є важливим етапом, який
визначає успішність розробки та впровадження системи. Чітко сформульовані
вимоги забезпечують, що кінцевий продукт буде відповідати очікуванням
замовника та технічним можливостям розробника.
2.2.2 Формування вимог за допомогою діаграми прецедентів
Діаграма прецедентів (Use Case Diagram) показує взаємодію користувачів
(акторів) з системою через різні функціональні можливості (прецеденти), які вона
підтримує. У нашому випадку діаграма прецедентів представляє взаємодію
студентів та викладачів з телеграм-ботом кафедри програмного забезпечення
автоматизованих систем ЧДТУ.
Проведемо опис акторів і прецедентів для діаграми прецедентів телеграм-
бота (рисунок 2.4).
Рисунок 2.4 – Діаграма прецедентів для телеграм-бота кафедри
35
ЧДТУ 242239.001ПЗ
1 Реєстрація студента:
актор: студент;
опис: студент заповнює форму реєстрації, вводячи своє прізвище,
ім'я, по батькові, рік народження, курс, групу, освітній рівень
(бакалавр/магістр), номер телефону та електронну адресу. Після
успішної реєстрації студент отримує підтвердження.
2 Перегляд розкладу занять:
актори: студент, викладач;
опис: студенти та викладачі можуть переглядати розклад занять.
Інтерфейс надає можливість фільтрувати розклад за курсами,
групами та викладачами.
3 Перегляд інформації про викладачів:
актор: студент;
опис: студенти можуть переглядати інформацію про викладачів,
включаючи їх прізвище, ім'я, по батькові, науковий ступінь, фото та
електронну адресу. Це допомагає студентам знайти необхідну
контактну інформацію для зв'язку з викладачами.
4 Надсилання повідомлень викладачам:
актори: студент, викладач;
опис: студенти можуть надсилати повідомлення викладачам через
бот. Викладачі можуть отримувати ці повідомлення та відповідати на
них.
5 Надсилання оголошень студентам:
актор: викладач;
опис: викладачі можуть надсилати оголошення студентам або
певним групам студентів. Це забезпечує оперативне інформування
студентів про важливі події, зміни в розкладі або інші оголошення.
36
ЧДТУ 242239.001ПЗ
Діаграма прецедентів допомагає візуалізувати основні функціональні
можливості телеграм-бота та взаємодію користувачів з системою. Вона
забезпечує чітке уявлення про те, які дії можуть виконувати студенти та
викладачі, що дозволяє планувати та розробляти систему відповідно до їх потреб.
2.3 Проектування логічної структури програмного комплексу
У цьому підрозділі буде детально розглянуто проектування логічної
архітектури телеграм-боту кафедри. Спочатку ми представимо діаграми класів,
які покажуть взаємодію між різними класами та їх атрибути й методи, що
дозволить зрозуміти структуру та поведінку об'єктів у системі. Далі буде
розглянута діаграма пакетів, що відображає організацію класів у логічні групи
(пакети), визначаючи залежності між цими групами та полегшуючи управління
складністю системи.
2.3.1 Діаграми класів
Спроектуємо та побудуємо діаграму класів для розуміння взаємодії між
кожним з класів, встановивши відповідні зв’язки (рисунок 2.5).
Вона представлена п’ятьма класами:
студент;
викладач;
розклад;
повідомлення;
оголошення.
Та вісьмома зв’язками:
студент -> повідомлення: надсилає;
повідомлення -> студент: отримує;
викладач -> повідомлення: надсилає;
повідомлення -> викладач: отримує;
37
ЧДТУ 242239.001ПЗ
викладач -> оголошення: надсилає;
оголошення -> студент: отримує;
викладач -> розклад: переглядає;
студент -> розклад: переглядає.
Рисунок 2.5 – Діаграма класів без атрибутів та методів для телеграм-боту кафедри
Заповнимо кожний з класів необхідними атрибутами та методами (рисунок
2.6), посилаючись на нижчеописані властивості класів.
Студент:
може реєструватися в системі;
може переглядати розклад занять;
може надсилати повідомлення викладачам.
Викладач:
може переглядати розклад занять;
може надсилати оголошення студентам;
може отримувати повідомлення від студентів.
Розклад:
38
ЧДТУ 242239.001ПЗ
зберігає інформацію про курси, час проведення занять, аудиторії та
викладачів;
може надавати розклад занять для конкретного курсу та групи.
Повідомлення:
зберігає інформацію про відправника, одержувача, текст повідомлення
та дату/час відправлення;
може бути надіслане та отримане.
Оголошення:
зберігає текст оголошення, категорію користувачів, дату та час
відправлення;
може бути надіслане та отримане.
Рисунок 2.6 – Діаграма класів для телеграм-бота кафедри
39
ЧДТУ 242239.001ПЗ
В результаті маємо повну діаграму класів з наступними атрибутами, та
методами.
Клас Студент.
Атрибути:
прізвище: String;
ім'я: String;
по батькові: String;
рік народження: Date;
курс: Number;
група: String;
освітній рівень: String;
номер телефону: String;
електронна адреса: String.
Методи:
реєструватися(): void;
переглядатиРозклад(): розклад;
надсилатиПовідомлення(одержувач: Викладач, текст: String): void.
Клас Викладач.
Атрибути:
прізвище: String;
ім'я: String;
по батькові: String;
науковий ступінь: String;
фото: String;
електронна адреса: String.
Методи:
переглядатиРозклад(): розклад;
надсилатиОголошення(категорія: String, текст: String): void;
отримуватиПовідомлення(відправник: Студент, текст: String): void;
40
ЧДТУ 242239.001ПЗ
Клас Розклад.
Атрибути:
назва курсу: String;
час початку: String;
час завершення: String;
аудиторія: String;
викладач: String.
Методи:
отримуватиРозклад(курс: Number, група: String): Array<Розклад>
Клас Повідомлення.
Атрибути:
відправник: String;
одержувач: String;
текст повідомлення: String;
дата та час відправлення: DateTime.
Методи:
надсилати(): void;
отримувати(): void.
Клас Оголошення.
Атрибути:
текст оголошення: String;
категорія користувачів: String;
дата та час відправлення: DateTime.
Методи:
надсилати(): void;
отримувати(): void.
Ця діаграма класів візуалізує структуру та взаємодію між основними
компонентами системи телеграм-бота для кафедри програмного забезпечення
автоматизованих систем ЧДТУ. Вона допомагає розробникам зрозуміти, як
41
ЧДТУ 242239.001ПЗ
будуть взаємодіяти різні класи, які методи та атрибути необхідні для реалізації
функціональності системи.
2.3.2 Діаграма пакетів
Діаграма пакетів (Package Diagram) в UML використовується для
відображення структури високого рівня системи, показуючи, як різні компоненти
(класи, підсистеми) згруповані в логічні модулі або пакети. Це допомагає
зрозуміти, як функціональні частини системи організовані та взаємодіють між
собою.
Для нашого телеграм-бота ми можемо виділити кілька основних пакетів:
User Management: управління користувачами (студенти та викладачі);
Schedule Management: управління розкладом занять;
Messaging: обробка повідомлень між студентами та викладачами;
Announcement Management: управління оголошеннями від викладачів до
студентів.
Рисунок 2.7 – Діаграма пакетів для телеграм-бота кафедри
Нижче розберемо кожний пакет діаграми пакетів (рисунок 2.7) більш
детально.
42
ЧДТУ 242239.001ПЗ
User Management.
студент: прізвище, ім'я, по батькові, рік народження, курс, група,
освітній рівень, номер телефону, електронна адреса;
викладач: прізвище, ім'я, по батькові, науковий ступінь, фото,
електронна адреса.
Функціональність:
реєстрація студентів та викладачів;
управління інформацією про користувачів.
Schedule Management:
розклад: назва курсу, час початку, час завершення, аудиторія, викладач.
Функціональність:
перегляд розкладу занять студентами та викладачами;
управління інформацією про розклад занять.
Messaging:
повідомлення: відправник, одержувач, текст повідомлення, дата та час
відправлення.
Функціональність:
надсилання повідомлень студентами викладачам;
отримання повідомлень викладачами від студентів.
Announcement Management:
оголошення: текст оголошення, категорія користувачів, дата та час
відправлення.
Функціональність:
надсилання оголошень викладачами студентам або певним групам
студентів;
управління інформацією про оголошення.
Діаграма пакетів допомагає візуалізувати організацію системи на високому
рівні, показуючи, як різні компоненти системи згруповані в логічні модулі та як
вони взаємодіють між собою. Це сприяє кращому розумінню архітектури системи
43
ЧДТУ 242239.001ПЗ
та полегшує її підтримку та розвиток [20].
2.4 Архітектура проектування
У цьому підрозділі ми зосередимося на вивченні архітектури телеграм-боту
кафедри. Буде представлена діаграма компонентів, яка покаже, як різні програмні
компоненти взаємодіють між собою, які інтерфейси вони використовують та як
організована їхня взаємодія. Далі ми розглянемо процес розгортання програмної
системи на апаратних засобах, що буде проілюстровано діаграмою розгортання.
Ця діаграма допоможе зрозуміти, як програмні компоненти розміщуються на
фізичних машинах, сервери, бази даних та інші апаратні засоби.
2.4.1 Діаграма компонентів
Діаграма компонентів (Component Diagram) в UML використовується для
відображення структури фізичної реалізації системи. Вона показує різні
компоненти системи, їх взаємозв'язки та залежності. Компоненти можуть бути як
програмними модулями, так і апаратними елементами [21].
Рисунок 2.8 – Діаграма компонентів для телеграм-бота кафедри
Діаграма компонентів (рисунок 2.8) представлена нижчеописаними
компонентами, з відповідними функціями та залежностями.
User Management Service.
Функції:
реєстрація студентів та викладачів;
44
ЧДТУ 242239.001ПЗ
управління даними користувачів.
Залежності:
Telegram API: отримання та відправлення даних через інтерфейс
Telegram;
Database Service: зберігання даних користувачів.
Schedule Management Service.
Функції:
управління розкладом занять;
надання доступу до розкладу для студентів та викладачів.
Залежності:
Telegram API: отримання та відправлення даних через інтерфейс
Telegram;
Database Service: зберігання даних про розклад.
Messaging Service.
Функції:
надсилання повідомлень між студентами та викладачами;
обробка вхідних та вихідних повідомлень.
Залежності:
Telegram API: отримання та відправлення повідомлень через інтерфейс
Telegram;
Database Service: зберігання історії повідомлень.
Announcement Management Service.
Функції:
надсилання оголошень від викладачів до студентів;
управління оголошеннями.
Залежності:
Telegram API: отримання та відправлення даних через інтерфейс
Telegram;
Database Service: зберігання даних оголошень.
45
ЧДТУ 242239.001ПЗ
Database Service.
Функції:
зберігання та управління всіма даними системи.
Залежності:
інші сервіси використовують цей компонент для зберігання та
отримання даних.
Telegram API.
Функції:
інтерфейс для взаємодії з платформою Telegram.
Залежності:
використовується всіма сервісами для обміну даними з Telegram.
User Interface.
Функції:
інтерфейс для взаємодії користувачів з системою.
Залежності:
взаємодіє з усіма сервісами для отримання та відображення даних
користувачам.
Діаграма компонентів забезпечує високорівневе представлення фізичної
архітектури системи, показуючи різні компоненти і їх взаємодію. Це допомагає
розробникам зрозуміти, як організована система, які компоненти
використовуються і як вони взаємодіють один з одним, що сприяє ефективному
плануванню, розробці та підтримці системи.
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання
Розгортання програмної системи на апаратних засобах включає в себе
встановлення та налаштування всіх компонентів системи на відповідних
апаратних засобах. Для телеграм-бота кафедри програмного забезпечення
автоматизованих систем ЧДТУ розгортання включає розміщення серверів, баз
даних та інших необхідних сервісів на фізичних або віртуальних машинах.
46
ЧДТУ 242239.001ПЗ
Виділимо основні компоненти розгортання, та побудуємо на їх основі
діаграму розгортання (рисунок 2.9), розподіливши наявні пакети до відповідних
блоків.
Сервер Telegram-Bot:
відповідає за обробку запитів від користувачів, взаємодію з telegram API
та виконання бізнес-логіки;
розгортається на сервері з необхідними ресурсами для забезпечення
безперебійної роботи.
Сервер бази даних:
відповідає за зберігання даних користувачів, повідомлень та оголошень;
використовує MongoDB для забезпечення гнучкого зберігання та
швидкого доступу до даних.
Балансувальник навантаження:
забезпечує розподіл вхідного трафіку між декількома інстанціями
серверів telegram-bot для підвищення продуктивності та надійності.
Рисунок 2.9 – Діаграма розгортання для телеграм-бота кафедри
Діаграма розгортання складається з наступних компонентів та їх
взаємодії.
Load Balancer:
47
ЧДТУ 242239.001ПЗ
розподіляє трафік між інстанціями серверів Telegram-Bot для
забезпечення високої доступності та продуктивності;
взаємодіє з користувачами через інтерфейс користувача.
Telegram-Bot Server:
містить основні сервіси бота: User Management Service, Schedule
Management Service, Messaging Service, Announcement Management Service;
обробляє запити від користувачів і виконує відповідні дії;
взаємодіє з сервером бази даних для зберігання та отримання необхідних
даних.
Database Server:
використовує MongoDB для зберігання даних;
забезпечує швидкий доступ до даних для сервісів на Telegram-Bot
Server.
Діаграма розгортання показує, як програмна система телеграм-бота
розміщується на апаратних засобах. Вона допомагає зрозуміти фізичну структуру
системи, показуючи розподіл компонентів між різними апаратними засобами та їх
взаємодію. Це важливо для планування ресурсів, забезпечення масштабованості
та надійності системи.
2.5 Моделювання поведінки системи
У цьому підрозділі ми детально розглянемо динамічні аспекти
функціонування телеграм-боту кафедри. Спочатку буде представлена діаграма
діяльності, яка покаже потік управління та виконання задач у системі. Далі
розглянемо діаграму послідовності, яка відобразить взаємодію об'єктів у вигляді
хронологічної послідовності повідомлень. Буде представлена діаграма
комунікації, яка ілюструє взаємодію об'єктів з акцентом на структурні зв'язки між
ними. Зрештою, ми представимо діаграму скінченного автомату, яка детально
відобразить можливі стани системи та переходи між ними в залежності від різних
подій.
2.5.1 Діаграма діяльності
48
ЧДТУ 242239.001ПЗ
Діаграма діяльності (Activity Diagram) в UML використовується для
моделювання поведінки системи, показуючи потік діяльностей або дій від
початку до кінця. Вона відображає різні кроки, які виконуються в процесі, та їхні
взаємозв'язки, включаючи умови розгалуження та паралельні дії.
Діаграма діяльності (рисунок 2.10) з розгалуженням на студента та
викладача допоможе чітко візуалізувати різні потоки діяльностей для обох типів
користувачів. Це дозволить зрозуміти, як студенти та викладачі взаємодіють із
системою та які функції доступні для кожного з них.
Рисунок 2.10 – Діаграма діяльності для телеграм-бота кафедри
Опис кроків діяльності зображених на діаграмі діяльності:
Студент
Запустити телеграм-бот:
користувач відкриває телеграм-бота.
Відкрити головне меню:
головне меню бота відображає основні опції: реєстрація, перегляд
інформації про викладачів, перегляд розкладу, надсилання повідомлень.
Реєстрація студента:
користувач обирає опцію реєстрації;
вводить свої особисті дані (прізвище, ім'я, по батькові, рік народження,
курс, група, освітній рівень, номер телефону, електронна адреса);
підтверджує реєстрацію.
49
ЧДТУ 242239.001ПЗ
Перегляд інформації про викладачів:
користувач обирає опцію перегляду інформації;
вибирає викладача зі списку;
переглядає деталі викладача (прізвище, ім'я, по батькові, науковий
ступінь, фото, електронна адреса).
Перегляд розкладу:
користувач обирає опцію перегляду розкладу;
вибирає день;
переглядає розклад занять.
Надсилання повідомлень:
користувач обирає опцію надсилання повідомлення;
вибирає викладача зі списку;
водить текст повідомлення;
надсилає повідомлення.
Викладач
Запустити телеграм-бот:
користувач відкриває телеграм-бота.
Відкрити головне меню:
головне меню бота відображає основні опції: перегляд розкладу,
надсилання оголошень, отримання повідомлень.
Перегляд розкладу:
користувач обирає опцію перегляду розкладу;
вибирає курс і групу;
переглядає розклад занять.
Надсилання оголошень:
викладач обирає опцію надсилання оголошень;
вибирає групу студентів;
вводить текст оголошення;
надсилає оголошення.
50
ЧДТУ 242239.001ПЗ
Отримання повідомлень:
викладач переглядає отримані повідомлення від студентів.
Діаграма діяльності з розгалуженням на студента та викладача дозволяє
чітко побачити різні потоки дій для кожного типу користувачів. Це допомагає
краще зрозуміти, як студенти та викладачі взаємодіють із системою, які функції
доступні для кожного з них, та як ці функції реалізуються в системі.
2.5.2 Діаграма послідовності
Діаграма послідовності (Sequence Diagram) відображає взаємодію між
об'єктами системи в певній послідовності. Вона показує, які повідомлення
передаються між об'єктами і в якому порядку це відбувається [22].
Створимо дві діаграми послідовності за двома сценаріями.
Перша діаграма (рисунок 2.11) за сценарієм реєстрації студента та
перегляду ним розкладу.
Опис кроків, зображених на першій діаграмі
Запуск телеграм-бота:
студент запускає телеграм-бота;
телеграм-бот відправляє відповідь студенту з головним меню.
Реєстрація студента:
студент обирає опцію реєстрації в головному меню;
телеграм-бот запитує введення особистих даних;
студент вводить свої дані (ПІБ, рік народження, курс, група, освітній
рівень, телефон, email);
телеграм-бот передає ці дані в сервіс управління користувачами для
реєстрації;
сервіс управління користувачами зберігає дані в базі даних;
база даних підтверджує успішне збереження даних;
сервіс управління користувачами повідомляє телеграм-бот про успішну
реєстрацію;
телеграм-бот повідомляє студента про успішну реєстрацію.
51
ЧДТУ 242239.001ПЗ
Перегляд розкладу:
студент обирає опцію перегляду розкладу в головному меню;
телеграм-бот запитує введення дню;
студент вводить потрібні дані (день);
телеграм-бот передає запит на отримання розкладу в сервіс управління
розкладом;
сервіс управління розкладом запитує розклад з бази даних;
база даних повертає розклад для вказаного курсу та групи;
сервіс управління розкладом повертає розклад до телеграм-бота;
телеграм-бот відображає розклад студенту.
Діаграма послідовності для сценарію реєстрації студента та перегляду ним
розкладу допомагає візуалізувати послідовність взаємодій між студентом і
телеграм-ботом.
Друга діаграма (рисунок 2.12) за сценарієм надсилання викладачем
оголошень студентам
Опис кроків, зображених на другій діаграмі
Запуск телеграм-бота:
викладач запускає телеграм-бота;
телеграм-бот відправляє відповідь викладачу з головним меню.
Надсилання оголошень:
викладач обирає опцію надсилання оголошення в головному меню;
телеграм-бот запитує введення тексту оголошення та вибір групи
студентів;
викладач вводить текст оголошення та вибирає групу студентів;
телеграм-бот передає ці дані в сервіс управління оголошеннями для
обробки;
сервіс управління оголошеннями зберігає оголошення в базі даних;
база даних підтверджує успішне збереження оголошення;
52
ЧДТУ 242239.001ПЗ
сервіс управління оголошеннями повідомляє телеграм-бот про успішне
надсилання оголошення;
телеграм-бот повідомляє викладача про успішне надсилання
оголошення;
телеграм-бот надсилає оголошення студентам вибраної групи.
Рисунок 2.11 – Діаграма послідовності за сценарієм «Реєстрація студента та
перегляд розкладу» для телеграм-бота кафедри
Діаграма послідовності для сценарію надсилання викладачем оголошень
студентам допомагає візуалізувати послідовність взаємодій між викладачем і
телеграм-ботом. Вона показує, як дані передаються між різними компонентами
системи під час надсилання оголошення, що є важливим для забезпечення чіткого
розуміння процесу та успішної реалізації функціональності [23].
53
ЧДТУ 242239.001ПЗ
Рисунок 2.12 – Діаграма послідовності за сценарієм «Надсилання викладачем
оголошень студентам» для телеграм-бота кафедри
2.5.3 Діаграма комунікації
Діаграма комунікації описує поведінку системи як взаємодію об'єктів у
певному контексті, показуючи відносини між об'єктами та використовуючи
нумерацію для представлення послідовності повідомлень [24].
Опишемо послідовність дій зображених на діаграмі комунікації (рисунок
2.13) у відповідності їх нумерації для сценарію надсилання викладачем оголошень
студентам
Рисунок 2.13 – Діаграма комунікації для телеграм-бота кафедри
54
ЧДТУ 242239.001ПЗ
1 Викладач -> Телеграм-Бот: запустити Телеграм-Бот
викладач запускає телеграм-бота.
2 Телеграм-Бот -> Викладач: відкрити головне меню
телеграм-бот відправляє відповідь з головним меню.
3 Викладач -> Телеграм-Бот: обрати надсилання оголошення
викладач обирає опцію надсилання оголошення.
4 Телеграм-Бот -> Викладач: введіть текст оголошення та виберіть групу
телеграм-бот запитує введення тексту оголошення та вибір групи
студентів.
5 Викладач -> Телеграм-Бот: введення тексту оголошення та вибір групи
викладач вводить текст оголошення та вибирає групу студентів.
6 Телеграм-Бот -> Сервіс Управління Оголошеннями: надіслати
оголошення (текст, група)
телеграм-бот передає дані оголошення до сервісу управління
оголошеннями.
7 Сервіс Управління Оголошеннями -> База Даних: зберегти оголошення
сервіс управління оголошеннями зберігає оголошення у базі даних.
8 База Даних -> Сервіс Управління Оголошеннями: оголошення
збережено
база даних підтверджує успішне збереження оголошення.
9 Сервіс Управління Оголошеннями -> Телеграм-Бот: оголошення
надіслано
сервіс управління оголошеннями повідомляє телеграм-бот про
успішне надсилання оголошення.
10 Телеграм-Бот -> Викладач: оголошення успішно надіслано
телеграм-бот повідомляє викладача про успішне надсилання
оголошення.
11 Телеграм-Бот -> Студенти: отримати оголошення
телеграм-бот надсилає оголошення студентам вибраної групи.
55
ЧДТУ 242239.001ПЗ
Діаграма комунікації для сценарію надсилання викладачем оголошень
студентам візуалізує взаємодію між різними компонентами системи. Це
допомагає зрозуміти, як дані передаються між викладачем, телеграм-ботом,
сервісом управління оголошеннями та базою даних, забезпечуючи чітке
розуміння процесу та взаємодій в системі.
2.5.4 Діаграма скінченного автомату
Діаграма скінченного автомату (діаграма станів) використовується для
моделювання поведінки об'єктів, що змінюють свій стан у відповідь на події [25].
Нижче наведено діаграму станів (рисунок 2.14) для телеграм-бота кафедри
програмного забезпечення автоматизованих систем ЧДТУ.
Рисунок 2.14 – Діаграма скінченного автомату для телеграм-бота кафедри
Опис станів діаграми скінченого автомату
Неактивний:
початковий стан бота, коли він не запущений.
Активний:
основний стан бота після запуску;
містить кілька вкладених станів для різних функцій бота.
Вкладені стани активного стану
ГоловнеМеню:
56
ЧДТУ 242239.001ПЗ
основне меню, яке відображається користувачу після запуску бота;
користувач може обрати одну з кількох функцій: реєстрацію, перегляд
розкладу, надсилання оголошення.
РеєстраціяСтудента:
стан для реєстрації студента;
користувач вводить особисті дані для реєстрації;
після успішної реєстрації користувач повертається до головного меню.
ПереглядРозкладу:
стан для перегляду розкладу занять;
користувач вводить день для отримання розкладу;
після отримання розкладу користувач повертається до головного меню.
НадсиланняОголошення:
стан для надсилання оголошень викладачами;
викладач вводить текст оголошення та обирає групу студентів;
після успішного надсилання оголошення викладач повертається до
головного меню.
Діаграма скінченного автомату (станів) для телеграм-бота відображає всі
можливі стани бота та переходи між ними в залежності від дій користувачів. Вона
допомагає зрозуміти, як бот реагує на різні події та які стани він може приймати
під час своєї роботи.
57
ЧДТУ 242239.001ПЗ
ВИСНОВОК ДО ДРУГОГО РОЗДІЛУ
У даному розділі проведено всебічний аналіз існуючих методів та засобів
розв'язання завдань, пов'язаних з розробкою телеграм-бота кафедри програмного
забезпечення автоматизованих систем ЧДТУ. На основі цього аналізу було
створено та описано кілька важливих діаграм, що відображають різні аспекти
функціонування та взаємодії компонентів системи.
Формування вимог до системи. Було визначено первинні та детальні
вимоги до телеграм-бота, що включають функціональні та нефункціональні
вимоги. Це забезпечило чітке розуміння цілей і функцій, які повинні бути
реалізовані для задоволення потреб студентів та викладачів.
Діаграма прецедентів. Діаграма прецедентів показала основні
функціональні можливості системи та взаємодію користувачів (студентів і
викладачів) з телеграм-ботом, що включає реєстрацію, перегляд розкладу,
перегляд інформації про викладачів, надсилання повідомлень та оголошень.
Діаграма класів. Діаграма класів візуалізувала структуру та взаємодію між
основними компонентами системи, такими як студенти, викладачі, розклад,
повідомлення та оголошення. Це допомогло зрозуміти, які класи і методи
необхідні для реалізації функціональності системи.
Діаграма пакеті. Діаграма пакетів продемонструвала логічну організацію
системи на високому рівні, показавши, як різні функціональні модулі згруповані у
пакети, що сприяє кращій організації коду та управлінню системою.
Діаграма компонентів. Діаграма компонентів показала фізичну реалізацію
системи, відображаючи розподіл програмних компонентів між різними
апаратними засобами, такими як сервери та бази даних.
Діаграма розгортання. Діаграма розгортання відобразила, як система
телеграм-бота розміщується на апаратних засобах, що є важливим для планування
ресурсів та забезпечення масштабованості та надійності системи.
Діаграма діяльності. Діаграма діяльності візуалізувала потік дій у системі
під час виконання різних операцій, таких як реєстрація студента та перегляд
розкладу, що допомогло краще зрозуміти функціональні можливості системи.
58
ЧДТУ 242239.001ПЗ
Діаграма комунікації. Діаграма комунікації показала взаємодію об'єктів
через повідомлення, використовуючи блоки та лінії для представлення обміну
даними між різними компонентами системи.
Діаграма скінченного автомату. Діаграма станів відобразила можливі
стани телеграм-бота та переходи між ними в залежності від дій користувачів, що
допомогло зрозуміти, як бот реагує на різні події та змінює свої стани під час
роботи.
Ці діаграми та аналізи забезпечили всебічне розуміння архітектури,
функціональності та поведінки телеграм-бота, що є ключовими для його
успішного проектування, розробки та впровадження.
59
ЧДТУ 242239.001ПЗ
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ
3.1 Розробка програмного комплексу
У цьому підрозділі ми детально опишемо процес створення телеграм-бота
для кафедри програмного забезпечення автоматизованих систем ЧДТУ. Тим
самим створимо повне уявлення про процес розробки телеграм-бота, від вибору
технологій до реалізації функціональності та інтеграції компонентів,
забезпечуючи чітке розуміння кожного етапу розробки.
3.1.1 Обґрунтування вибору засобів реалізації
Розробка телеграм-бота для кафедри програмного забезпечення
автоматизованих систем ЧДТУ вимагає вибору оптимальних засобів реалізації,
які забезпечать ефективну роботу, зручність використання та можливість
масштабування системи. Вибір інструментів, мов програмування та фреймворків
був зумовлений декількома ключовими факторами, такими як продуктивність,
популярність, підтримка спільноти та відповідність потребам проекту.
1 Мова програмування JavaScript.
JavaScript обрана як основна мова програмування для розробки телеграм-
бота через її численні переваги [26]:
популярність та підтримка спільноти: JavaScript є однією з
найпопулярніших мов програмування у світі. Велика спільнота розробників
забезпечує підтримку, наявність великої кількості бібліотек і фреймворків, а
також численні ресурси для навчання та вирішення проблем;
кросплатформеність: JavaScript може працювати як на стороні сервера,
так і на стороні клієнта, що дозволяє використовувати одну мову для розробки
всього проекту. Це знижує складність розробки та обслуговування коду;
асинхронне програмування: JavaScript підтримує асинхронне
програмування, що є критично важливим для розробки телеграм-ботів, які
повинні швидко обробляти запити та реагувати на події в режимі реального часу.
60
ЧДТУ 242239.001ПЗ
2 Платформа Node.js з пакетним менеджером npm.
Node.js є ідеальною платформою для розробки телеграм-бота завдяки своїм
наступним характеристикам [27]:
висока продуктивність: Node.js використовує неблокуючу модель
вводу/виводу та подіє-орієнтовану архітектуру, що дозволяє обробляти велику
кількість одночасних з'єднань з високою продуктивністю;
екосистема npm: пакетний менеджер npm надає доступ до тисяч модулів
і бібліотек, які можуть значно спростити та прискорити розробку. Для створення
телеграм-бота особливо корисні такі пакети, як node-fetch для виконання HTTP-
запитів та dotenv для управління конфігураціями;
єдина мова програмування: використання Node.js дозволяє писати
серверний код на JavaScript, що спрощує навчання та зменшує кількість
можливих помилок, оскільки одна й та ж мова використовується для фронтенд та
бекенд розробки [28].
3 Фреймворк Grammy для створення ботів.
Grammy є одним з найбільш популярних фреймворків для створення
телеграм-ботів на Node.js. Його вибір обґрунтований наступними факторами:
простота використання: Grammy надає простий та інтуїтивно зрозумілий
API для створення телеграм-ботів. Це дозволяє швидко почати розробку та
зосередитися на реалізації бізнес-логіки бота;
гнучкість та розширюваність: Grammy підтримує широкий спектр
функцій, таких як обробка команд, відповіді на повідомлення, робота з файлами
та багато іншого. Крім того, він легко розширюється за допомогою плагінів, що
дозволяє додавати нові функції без значних змін у коді;
активна підтримка та документація: Grammy має активну спільноту
розробників та добре документовану базу знань, що робить процес розробки
простішим та більш ефективним.
4 База даних MongoDB і NoSQLBooster як інструмент для управління.
MongoDB була обрана як база даних для проекту через наступні причини:
гнучкість даних: MongoDB є документно-орієнтованою базою даних, що
дозволяє зберігати дані в форматі JSON-подібних документів. Це надає гнучкість
61
ЧДТУ 242239.001ПЗ
у зберіганні різнорідних даних та легкість у зміні структури даних без
необхідності складних міграцій [29];
масштабованість: MongoDB підтримує горизонтальне масштабування,
що дозволяє легко збільшувати обсяги даних та обробляти велику кількість
запитів, що є важливим для масштабування телеграм-бота;
висока продуктивність: завдяки індексам та агрегатним фреймворкам
MongoDB забезпечує високу продуктивність у виконанні запитів до бази даних;
NoSQLBooster: цей інструмент надає зручний графічний інтерфейс для
управління MongoDB, що спрощує адміністрування, моніторинг та виконання
запитів до бази даних.
Вибір JavaScript, Node.js, фреймворку Grammy, MongoDB та NoSQLBooster
як основних засобів реалізації для розробки телеграм-бота для кафедри
програмного забезпечення автоматизованих систем ЧДТУ є обґрунтованим та
оптимальним. Ці інструменти забезпечують високу продуктивність, гнучкість,
масштабованість та простоту розробки, що дозволяє створити ефективну та
надійну систему для задоволення потреб студентів та викладачів.
3.1.2 Опис структурної (функціональної) схеми
Структурна (функціональна) схема (рисунок 3.1) телеграм-бота для кафедри
програмного забезпечення автоматизованих систем ЧДТУ відображає основні
компоненти системи та їх взаємодію. Ця схема допомагає зрозуміти, як різні
частини системи працюють разом для забезпечення необхідної функціональності.
Рисунок 3.1 – Структурна (функціональна) схема для телеграм-бота кафедри
62
ЧДТУ 242239.001ПЗ
Схема складається з наступним компонентів:
Телеграм-бот:
головне меню: інтерфейс для взаємодії користувачів із системою, звідки
користувачі можуть обирати необхідні функції;
реєстрація студента: функціональність, що дозволяє студентам
реєструватися в системі, ввівши особисті дані;
перегляд розкладу: функціональність, що дозволяє студентам
переглядати розклад занять для їхньої групи;
перегляд інформації про викладачів: функціональність, що дозволяє
студентам переглядати інформацію про викладачів;
надсилання повідомлень: функціональність, що дозволяє студентам
надсилати повідомлення викладачам;
надсилання оголошень: функціональність, що дозволяє викладачам
надсилати оголошення студентам.
Сервіси:
сервіс управління користувачами: обробляє запити, пов'язані з
реєстрацією користувачів, переглядом інформації про викладачів та надсиланням
повідомлень;
сервіс управління розкладом: обробляє запити на отримання розкладу
занять;
сервіс управління оголошеннями: обробляє запити на надсилання
оголошень та зберігає їх у базі даних.
База даних:
дані користувачів: зберігає інформацію про студентів та викладачів;
дані повідомлень: зберігає історію повідомлень між студентами та
викладачами;
дані оголошень: зберігає оголошення, які надсилають викладачі
студентам.
Структурна (функціональна) схема телеграм-бота надає чітке уявлення про
63
ЧДТУ 242239.001ПЗ
взаємодію різних компонентів системи. Вона показує, як користувачі (студенти та
викладачі) взаємодіють із телеграм-ботом, який у свою чергу виконує запити
через відповідні сервіси та зберігає дані в базі даних. Така схема допомагає краще
зрозуміти архітектуру системи та забезпечити ефективну розробку та інтеграцію
всіх її компонентів.
3.1.3 Опис логічної схеми
Логічна схема (рисунок 3.2) системи телеграм-бота для кафедри
програмного забезпечення автоматизованих систем ЧДТУ описує послідовність
дій, що відбувається у системі для досягнення певного результату. Цей опис
включає алгоритм функціонування системи, який подається в текстовому вигляді,
а також графічну інтерпретацію у вигляді блок-схеми алгоритму.
Рисунок 3.2 – Логічна схема для телеграм-бота кафедри
Алгоритм функціонування системи
Запуск телеграм-бота:
користувач (студент або викладач) запускає телеграм-бота;
64
ЧДТУ 242239.001ПЗ
бот відправляє користувачу головне меню з доступними опціями.
Реєстрація студента:
користувач обирає опцію "Реєстрація";
бот запитує особисті дані (ПІБ, рік народження, курс, група, освітній
рівень, телефон, email);
користувач вводить дані та надсилає їх боту;
бот передає дані до сервісу управління користувачами для збереження у
базі даних;
сервіс управління користувачами зберігає дані у відповідній колекції
бази даних;
бот повідомляє користувачу про успішну реєстрацію.
Перегляд розкладу:
користувач обирає опцію "перегляд розкладу";
бот запитує курс і групу;
користувач вводить курс і групу, бот передає запит до сервісу
управління розкладом;
сервіс управління розкладом запитує розклад з бази даних;
база даних повертає розклад, сервіс передає його боту;
бот відображає розклад користувачу.
Перегляд інформації про викладачів:
користувач обирає опцію "перегляд інформації про викладачів";
бот запитує ім'я викладача або надає список викладачів для вибору;
користувач обирає викладача, бот передає запит до сервісу управління
користувачами;
сервіс управління користувачами запитує інформацію про викладача з
бази даних;
база даних повертає інформацію, сервіс передає її боту;
бот відображає інформацію користувачу.
Надсилання повідомлень:
65
ЧДТУ 242239.001ПЗ
користувач обирає опцію "надсилання повідомлень";
бот запитує отримувача повідомлення (викладача) та текст
повідомлення;
користувач вводить дані, бот передає запит до сервісу управління
користувачами;
сервіс управління користувачами зберігає повідомлення у базі даних;
бот повідомляє користувачу про успішне надсилання повідомлення.
Надсилання оголошень (викладачем):
викладач обирає опцію "надсилання оголошень";
бот запитує текст оголошення та вибір групи студентів;
викладач вводить дані, бот передає запит до сервісу управління
оголошеннями;
сервіс управління оголошеннями зберігає оголошення у базі даних;
бот повідомляє викладача про успішне надсилання оголошення.
Логічна схема системи телеграм-бота детально описує послідовність дій, які
виконуються для досягнення різних результатів, таких як реєстрація студентів,
перегляд розкладу, надсилання повідомлень та оголошень. Ця схема включає
основні кроки, починаючи від запуску бота і завершуючи виконанням конкретних
дій користувачів. Графічна інтерпретація у вигляді блок-схеми алгоритму
забезпечує наочне уявлення про потік дій і взаємодію між компонентами системи.
3.1.4 Розробка бази даних
Розробка бази даних є важливим етапом у створенні телеграм-бота, оскільки
вона забезпечує зберігання, організацію та управління всіма необхідними даними.
Для цього проекту обрана база даних MongoDB, оскільки вона є документно-
орієнтованою, що дозволяє зберігати дані у форматі JSON-подібних документів,
що забезпечує гнучкість та легкість у зміні структури даних [30].
Процес розробки бази даних для телеграм-боту кафедри.
1 Аналіз вимог:
визначення основних об'єктів, які повинні бути збережені у базі
66
ЧДТУ 242239.001ПЗ
даних (користувачі, розклад, повідомлення, оголошення);
визначення взаємозв'язків між об'єктами (наприклад, повідомлення
належить відправнику і отримувачу).
2 Проектування структури даних:
створення схеми для кожної колекції, визначення полів та їх типів;
визначення необхідних індексів для оптимізації запитів (наприклад,
індекси на полі course і group в колекції schedule для швидкого
пошуку розкладу).
3 Реалізація бази даних:
встановлення MongoDB та налаштування підключення до неї;
створення колекцій та додавання початкових даних для тестування;
розробка функцій для взаємодії з базою даних (запити, вставка,
оновлення, видалення даних).
4 Тестування та оптимізація:
перевірка роботи запитів до бази даних для забезпечення їх
коректності та продуктивності;
оптимізація схеми бази даних та індексів на основі результатів
тестування.
Розробка бази даних для телеграм-бота кафедри програмного забезпечення
автоматизованих систем ЧДТУ включає створення декількох основних схем
(колекцій) у MongoDB. Нижче описано процес розробки кожної схеми, що
використовується для зберігання різних типів даних.
Колекція `users` (рисунок 3.4)
Процес розробки.
1 Аналіз вимог:
визначення основних атрибутів, які повинні бути збережені для
користувачів (студентів та викладачів);
врахування потреб у зберіганні особистої інформації (ім'я, прізвище,
по батькові, дата народження), академічної інформації (курс, група,
67
ЧДТУ 242239.001ПЗ
науковий ступінь) та контактних даних (телефон, електронна пошта).
Рисунок 3.4 – Схема колекції `users` телеграм-боту кафедри
2 Проектування схеми:
створення полів для кожного атрибуту, визначення їх типів даних;
додавання поля role для визначення ролі користувача (студент або
викладач);
включення поля confirmed для відстеження підтвердження реєстрації
користувача;
автоматичне заповнення поля registrationAt поточною датою під час
створення документа.
Колекція `messages` (рисунок 3.5)
68
ЧДТУ 242239.001ПЗ
Рисунок 3.5 – Схема колекції `messages` телеграм-боту кафедри
Процес розробки.
1 Аналіз вимог:
визначення атрибутів, які повинні бути збережені для кожного
повідомлення (ідентифікатори відправника та отримувача, ролі,
текст повідомлення).
2 Проектування схеми:
створення полів для кожного атрибуту, визначення їх типів даних;
включення поля sentAt для зберігання дати та часу надсилання
повідомлення, яке автоматично заповнюється поточною датою.
Колекція `interlocutors` (рисунок 3.6)
Рисунок 3.6 – Схема колекції `interlocutors` телеграм-боту кафедри
Процес розробки.
1 Аналіз вимог:
визначення необхідних атрибутів для зберігання інформації про всіх,
хто взаємодіє з ботом (ідентифікатор Telegram, ім'я користувача).
69
ЧДТУ 242239.001ПЗ
2 Проектування схеми:
створення полів для кожного атрибуту, визначення їх типів даних;
автоматичне заповнення поля registrationAt датою першої взаємодії з
ботом.
Колекція `groups` (рисунок 3.7)
Рисунок 3.7 – Схема колекції `groups` телеграм-боту кафедри
Процес розробки.
1 Аналіз вимог:
визначення атрибутів для зберігання інформації про академічні
групи (назва групи).
2 Проектування схеми:
створення поля name, яке зберігає назву групи.
Колекція `broadcasts` (рисунок 3.8)
Рисунок 3.8 – Схема колекції `broadcasts` телеграм-боту кафедри
Процес розробки.
1 Аналіз вимог:
визначення атрибутів, які повинні бути збережені для кожного
оголошення (ідентифікатор ініціатора, критерії для цільової
аудиторії, текст оголошення).
70
ЧДТУ 242239.001ПЗ
2 Проектування схеми:
створення полів для кожного атрибуту, визначення їх типів даних;
автоматичне заповнення поля sentAt поточною датою.
Процес розробки бази даних для телеграм-бота кафедри включає аналіз
вимог, проектування схем для кожної колекції, визначення типів даних та
необхідних атрибутів. Вибрані схеми забезпечують гнучкість та ефективність у
зберіганні та обробці даних, необхідних для функціонування системи. MongoDB
як документно-орієнтована база даних дозволяє легко масштабувати та
оновлювати структуру даних, що робить її ідеальним вибором для цього проекту
[31].
3.1.5 Розробка інтерфейсу користувача
Розробка інтерфейсу користувача (UI) є критичним етапом у створенні
телеграм-бота для кафедри програмного забезпечення автоматизованих систем
ЧДТУ. Від якості та зручності інтерфейсу користувача залежить ефективність
взаємодії студентів та викладачів з системою. Процес розробки інтерфейсу
користувача включає кілька ключових аспектів: визначення вимог до інтерфейсу,
проектування основних компонентів, тестування та оптимізація.
Вимоги до інтерфейсу користувача:
зручність використання: інтерфейс повинен бути інтуїтивно зрозумілим
та легким у використанні для всіх категорій користувачів, включаючи студентів
та викладачів;
доступність: інтерфейс повинен бути доступним для користувачів з
різними можливостями, забезпечуючи доступність основних функцій;
функціональність: інтерфейс повинен забезпечувати доступ до всіх
необхідних функцій, таких як реєстрація, перегляд розкладу, надсилання
повідомлень та оголошень.
Проектування основних компонентів інтерфейсу
Головне меню є основним пунктом входу для користувачів. Воно містить
кнопки для переходу до різних функцій бота. Воно має три варіанти
71
ЧДТУ 242239.001ПЗ
відображення: для гостя (рисунок 3.9), студента (рисунок 3.10) та викладача
(рисунок 3.11).
Рисунок 3.9 – Головне меню гостя в телеграм-боті кафедри
Меню для гостя має кнопки для перегляду розкладу, перегляду інформації
про викладачів, реєстрації та переходу на сайт університету.
Рисунок 3.10 – Головне меню студента в телеграм-боті кафедри
Меню для студента має кнопки для перегляду розкладу, перегляду
інформації про викладачів, написати викладачу та переходу на сайт університету.
72
ЧДТУ 242239.001ПЗ
Рисунок 3.11 – Головне меню викладача в телеграм-боті кафедри
Меню для викладача має кнопки для перегляду розкладу, перегляду
інформації про викладачів, підтвердження студентів, розсилання та переходу на
сайт університету.
Форма реєстрації, яка дозволяє студентам вводити свої особисті дані для
реєстрації в системі, має наступні поля для введення: стать, ПІБ, дати
народження, курсу, освітнього рівня, групи, номера телефону та електронної
пошти.
Більшість пунктів вводиться користувачем вручну за допомогою клавіатури
у відповідне поле вводу месенджера телеграм, але деякі з них, такі як стать
(рисунок 3.12), курс і освітній рівень (рисунок 3.13) вибираються за домогою так
званої лінійної клавіатури.
Рисунок 3.12 – Вибір статі під час реєстрації в телеграм-боті кафедри
Рисунок 3.13 – Вибір освітнього рівня і курсу під час реєстрації в телеграм-боті
кафедри
73
ЧДТУ 242239.001ПЗ
Також, слід зазначити, що в кінці реєстрації є повідомлення з
підтвердженням введених даних, де можна підтвердити або ж відмінити
реєстрацію за допомогою кнопок (рисунок 3.14).
Інтерфейс перегляду розкладу, що дозволяє користувачам, в першу чергу –
студентам, переглядати розклад занять для вибраної групи.
Вибір групи відбувається зі списку представленого всіма доступними для
перегляду розкладу групами (рисунок 3.15). У випадку, якщо груп більше, аніж
можна розмістити кнопки, з’являється пагінація з можливістю листати список
груп вперед або назад (рисунок 3.16)
Рисунок 3.14 – Підтвердження ведених даних під час реєстрації в телеграм-боті
кафедри
74
ЧДТУ 242239.001ПЗ
Рисунок 3.15 – Вибір групи для перегляду розкладу в телеграм-боті кафедри
Також слід зазначити, що у випадку, якщо переглядає розклад
зареєстрований користувач, то перед появу вищеописаного меню групи, у нього
відображається повідомлення з можливістю швидкого вибору своєї групи, або ж
переходу до вибору зі списку всіх груп (рисунок 3.17). Даний функціонал
спрощує процес перегляду розкладу для зареєстрованих в телеграм-боті кафедри
студентів.
Обравши бажану групу, користувач одразу отримує повідомлення з
розкладом даної групи на сьогоднішній день (рисунок 3.18).
Рисунок 3.16 – Пагінація при виборі групи для перегляду розкладу в телеграм-
боті кафедри
75
ЧДТУ 242239.001ПЗ
Рисунок 3.17 – Повідомлення з можливістю швидкого вибору своєї групи для
перегляду розкладу в телеграм-боті кафедри
Рисунок 3.18 – Повідомлення з розкладом в телеграм-боті кафедри
В той же час, якщо розклад на сьогодні відсутній, користувачу виводиться
відповідне повідомлення з констатацією даного факту (рисунок 3.19)
Рисунок 3.19 – Повідомлення про відсутність розкладу в телеграм-боті кафедри
76
ЧДТУ 242239.001ПЗ
Паралельно з виводом повідомлення з розкладом або інформацією про його
відсутність, з’являється так звана клавіатура, що дозволяє користувачу обрати
якийсь інший день тижня, змінити тиждень на один назад або вперед безмежну
кількість разів, відображаючи нижче діапазон вибраного тижня, або ж
повернутися до головного меню (рисунок 3.20).
Рисунок 3.20 – Клавіатура для вибору дня розкладу в телеграм-боті кафедри
Інтерфейс перегляду інформації про викладачів, що дозволяє студентам
переглядати інформацію про викладачів.
Він складається зі списку викладачів (рисунок 3.21) з можливістю вибору
конкретного викладача. Також, наявний функціонал пошуку серед всіх
викладачів, для цього потрібно відправити частину ПІБ викладача, після цього
список звузиться до відфільтрованих викладачів.
Рисунок 3.21 – Вибір викладача для перегляду інформації про нього в телеграм-
боті кафедри
77
ЧДТУ 242239.001ПЗ
Після вибору бажаного викладача, виводиться його фотографія з підписом,
що містить дані про прізвище, ім’я, по-батькові, вчене звання, дату народження,
E-mail та кнопку, що відкриває сторінку в браузері з більш детальною
інформацією про викладача на сайті університету (рисунок 3.22).
Інтерфейс надсилання повідомлень, який дозволяє студентам надсилати
повідомлення викладачам, а викладачам відповідати на отримані повідомлення.
Після переходу студентом з головного меню до меню відправки
повідомлень, у нього з’являється клавіатура зі списком викладачів, з якого
необхідно обрати того, якому потрібно відправити повідомлення (рисунок 3.23).
Також, слід зазначити, що окрім вибору зі списку, доступний і пошук за
частиною ПІБ, в такому випадку, якщо вказана частина ПІБ буде збігатися з
одним викладачем, то він автоматично буде вибраний, якщо ж з декількома, то
вони виведуться в списку для вибору.
Після натискання на одного з викладачів, з’являється можливість ввести
бажане повідомлення (рисунок 3.24).
Рисунок 3.22 – Інформація про викладача в телеграм-боті кафедри
78
ЧДТУ 242239.001ПЗ
Рисунок 3.23 – Вибір викладача для відправки повідомлень в телеграм-боті
кафедри
Рисунок 3.24 – Введення повідомлення викладачу в телеграм-боті кафедри
Коли повідомлення введено і відправлено телеграм-боту, він запитує
підтвердження для відправлення даного повідомлення викладачу, виводячи його
для прикладу з відповідними кнопками для дій «Підтвердити» та «Відмінити»
(рисунок 3.25).
Рисунок 3.25 – Підтвердження відправки повідомлення викладачу в телеграм-боті
кафедри
79
ЧДТУ 242239.001ПЗ
Після підтвердження, студент отримує повідомлення від бота про те, що
його повідомлення для викладача надіслано.
В той же час, викладачу приходить написане студентом повідомлення з
детальною інформаціє про студента, яка включає його ПІБ, групу, курс та номер
телефона (рисунок 3.26). Це дозволяє викладачу легко зорієнтуватися в тому, від
кого саме він отримав повідомлення, оскільки він бачить не просто нікнейм
телеграму, якщо б це повідомлення було відправлено в особисті, а ще й повні
контактні дані. В тому числі, викладач має можливість надіслати відповідь
даному студенту, натиснувши всього одну кнопку – «Відповісти».
Рисунок 3.26 – Повідомлення, що надійшло викладачу від студента в телеграм-
боті кафедри
Коли викладач відповідає студенту на повідомлення, він також проходить
етап підтвердження написаного повідомлення з можливістю відмінити дану дію
(рисунок 3.27).
Рисунок 3.27 – Відправка викладачем повідомлення студенту в телеграм-боті
кафедри
80
ЧДТУ 242239.001ПЗ
Після підтвердження викладачем відправки повідомлення, студент отримує
відповідне повідомлення у особисті повідомлення від телеграм-бота з вказанням
ПІБ викладача, що йому відповів, а також кнопкою для швидкої відповіді цьому
викладачу (рисунок 3.28).
Рисунок 3.28 – Повідомлення викладача студенту в телеграм-боту кафедри
Після реєстрації студента в системі, його дані відправляються на перевірку,
яку повинні здійснити викладачі, підтвердивши його обліковий запис, або ж ні.
Для цього у викладачів на головному меню є відповідна кнопка «Підтвердження
студентів», натиснувши яку, система перевіряє наявність не підтверджених
студентів, та виводить повідомлення про їх відсутність (рисунок 3.29) або ж
наявність (рисунок 3.30).
Рисунок 3.29 – Інформування про відсутність студентів на підтвердження в
телеграм-боті кафедри
81
ЧДТУ 242239.001ПЗ
Рисунок 3.30 – Підтвердження реєстрації студента викладачем в телеграм-боті
кафедри
В повідомленні зі студентом на підтвердження, виводиться вся введена ним
інформація для підтвердження, а також кнопки: «Схвалити», «Відмовити» та
«Відмовити з причиною». Відповідно, викладач може схвалити студента, тоді він
отримає повідомлення, що його реєстрацію схвалено, та доступ до відповідних
функцій користувача (рисунок 3.31). Відмовити в реєстрації без причини, в
такому випадку користувач отримує повідомлення про те, що йому відмовлено
(рисунок 3.32). Відмовити з вказанням причини, тоді викладач вводить причину
відмови, вона надсилається користувачу, що намагався зареєструватися, разом з
повідомленням про відмову (рисунок 3.33).
Рисунок 3.31 – Повідомлення студенту про схвалення його реєстрації в телеграм-
боті кафедри
82
ЧДТУ 242239.001ПЗ
Рисунок 3.32 – Повідомлення студенту про відхилення реєстрації в телеграм-боті
кафедри
Рисунок 3.33 – Повідомлення студенту про відхилення реєстрації в телеграм-боті
кафедри з причиною, вказаною викладачем
Інтерфейс надсилання оголошень, який дозволяє викладачам надсилати
оголошення студентам. Після вибору відповідного пункту в головному меню,
викладач може обрати критерії для розсилки, тобто які групи користувачів
повинні отримати дану розсилку (рисунок 3.34).
Рисунок 3.34 – Вибір критеріїв для розсилки оголошень в телеграм-боті кафедри
Після вибору критеріїв для розсилки, викладач повинен написати текст цієї
розсилки, після цього телеграм-бот відправить повідомлення з вмістом даного
тексту та кнопками для «Підтвердити» та «Відмінити» (рисунок 3.35).
83
ЧДТУ 242239.001ПЗ
Рисунок 3.35 – Підтвердження тексту розсилки в телеграм-боті кафедри
Коли розсилка підтвердження, викладач отримує повідомлення, яке
редагується в процесі розсилки, відображаючи ступінь завершеності в форматі
скільки повідомлень відправлено/скільки залишилось відправити (рисунок 3.36).
По закінченню розсилки, викладач отримує відповідне повідомлення від
телеграм-бота (рисунок 3.36).
Рисунок 3.36 – Повідомлення про процес та завершення розсилки в телеграм-боті
кафедри
В той же час студенти, що підпали під вибрані для розсилки критерії,
отримують відповідні повідомлення з оголошенням (рисунок 3.37).
84
ЧДТУ 242239.001ПЗ
Рисунок 3.37 – Повідомлення з оголошенням від викладачів в телеграм-боті
кафедри
Розробка інтерфейсу користувача для телеграм-бота кафедри програмного
забезпечення автоматизованих систем ЧДТУ включає визначення вимог до
інтерфейсу, проектування основних компонентів, тестування та оптимізацію.
Інтерфейс повинен забезпечувати зручність, доступність та повну
функціональність для всіх користувачів, включаючи студентів та викладачів.
Тестування та оптимізація інтерфейсу допоможуть забезпечити його ефективну
роботу у різних умовах використання.
3.1.6 Опис розробки програмних компонентів
Розробка програмних компонентів телеграм-бота для кафедри програмного
забезпечення автоматизованих систем ЧДТУ включає створення окремих модулів,
які відповідають за реалізацію різних функцій системи. Кожен компонент
розробляється з урахуванням вимог до функціональності, ефективності та
надійності. Нижче наведено опис ключових програмних компонентів та їх
реалізацію.
Основні програмні компоненти
1. Компонент реєстрації користувачів
призначення: забезпечує реєстрацію нових користувачів (студентів
та викладачів) у системі;
реалізація: використовує userSchema для зберігання даних
користувачів у MongoDB. Реєстрація включає запит особистих даних
у користувача та збереження цих даних у базі.
85
ЧДТУ 242239.001ПЗ
2. Компонент перегляду розкладу
призначення: дозволяє студентам переглядати розклад занять для
їхньої групи;
реалізація: використовує scheduleHelper для отримання розкладу на
основі запиту користувача.
3. Компонент перегляду інформації про викладачів
призначення: дозволяє студентам переглядати інформацію про
викладачів;
реалізація: використовує userSchema для отримання інформації про
викладачів з бази даних.
4. Компонент надсилання повідомлень
призначення: забезпечує можливість студентам та викладачам
надсилати повідомлення один одному;
реалізація: використовує messageSchema для зберігання повідомлень
у базі даних.
5. Компонент надсилання оголошень
призначення: дозволяє викладачам надсилати оголошення
студентам;
реалізація: використовує broadcastSchema для зберігання оголошень
у базі даних та надсилання їх студентам.
Взаємодія компонентів.
Компонент реєстрації користувачів взаємодіє з базою даних через
userSchema, зберігаючи нові записи про користувачів.
Компонент перегляду розкладу здійснює запити за допомогою
scheduleHelper для отримання розкладу занять.
Компонент перегляду інформації про викладачів використовує userSchema
для отримання інформації про викладачів.
Компонент надсилання повідомлень зберігає повідомлення між
користувачами за допомогою messageSchema.
86
ЧДТУ 242239.001ПЗ
Компонент надсилання оголошень зберігає оголошення за допомогою
broadcastSchema і надсилає їх відповідним групам студентів.
Розробка програмних компонентів для телеграм-бота включає створення
окремих модулів, кожен з яких відповідає за конкретну функцію системи. Кожен
компонент реалізується з використанням відповідних схем бази даних MongoDB
та забезпечує взаємодію з базою даних для зберігання та отримання необхідної
інформації. Такий підхід забезпечує модульність, масштабованість та легкість
підтримки системи.
3.2 Тестування системи
У цьому розділі буде описано процес перевірки телеграм-бота на різних
рівнях для забезпечення його коректної роботи та відповідності вимогам.
Модульне тестування включатиме перевірку окремих функцій та методів кожного
компонента системи в ізоляції. Інтеграційне тестування буде зосереджене на
взаємодії між модулями, щоб переконатися, що всі частини системи працюють
разом належним чином. Системне тестування охоплюватиме перевірку всієї
системи як єдиного цілого, включаючи всі функціональні можливості бота, щоб
забезпечити стабільність і відповідність вимогам. Нарешті, приймальне
тестування буде проведено для підтвердження того, що система відповідає
очікуванням кінцевих користувачів і готова до впровадження.
3.2.1 Модульне тестування
Модульне тестування є першим етапом тестування в процесі забезпечення
якості програмного забезпечення, під час якого перевіряються окремі компоненти
системи в ізоляції. Метою модульного тестування є виявлення помилок у
функціональності окремих модулів до їх інтеграції в загальну систему. Для
телеграм-бота кафедри програмного забезпечення автоматизованих систем ЧДТУ
буде проведено модульне тестування з використанням інструментів Mocha і Chai,
які забезпечують зручне середовище для написання і виконання тестів.
Основні кроки:
1 Налаштування середовища тестування:
87
ЧДТУ 242239.001ПЗ
встановлення Mocha та Chai;
створення тестових файлів.
2 Написання тестів:
створення тестових сценаріїв для перевірки функцій та методів
модулів.
3 Виконання тестів:
запуск тестів і аналіз результатів.
Таблиця 3.1
Результат модульного тестування
Тестовий Очікуваний Фактичний
Модуль Статус
випадок результат результат
Реєстрація нового Користувача Користувача Пройдено
користувача з створено, дані створено, дані
Реєстрація валідними збережено в збережено в
користувача даними базі базі
Помилка Помилка
Реєстрація
збереження збереження
користувача з
даних, даних, Пройдено
невалідними
користувача не користувача не
даними
створено створено
Отримання Розклад Розклад
розкладу для отримано, дані отримано, дані Пройдено
існуючої групи відображено відображено
Отримання
Отримання
розкладу Помилка або Помилка або
розкладу для
порожній порожній Пройдено
неіснуючої
результат результат
групи
88
ЧДТУ 242239.001ПЗ
Продовження таблиці 3.1
Надсилання Повідомлення Повідомлення Пройдено
повідомлення збережено в збережено в
між базі, базі,
користувачами користувачі користувачі
отримали отримали
Надсилання
повідомлення повідомлення
повідомлень
Надсилання Помилка Помилка Пройдено
повідомлення з збереження збереження
невалідними даних, даних,
даними повідомлення повідомлення
не збережено не збережено
Перегляд Перегляд Інформацію Інформацію Пройдено
інформації інформації про отримано та отримано та
про існуючого відображено відображено
викладачів викладача
Надсилання Оголошення Оголошення Пройдено
оголошення з збережено в збережено в
валідними базі та базі та
даними розіслано розіслано
Надсилання студентам студентам
оголошень Надсилання Помилка Помилка Пройдено
оголошення з збереження збереження
невалідними даних, даних,
даними оголошення не оголошення не
збережено збережено
Результати модульного тестування показують, що всі ключові функції
телеграм-бота кафедри працюють коректно згідно з очікуваними результатами.
89
ЧДТУ 242239.001ПЗ
Всі тестові випадки були успішно пройдені, що свідчить про надійність і
правильність реалізації окремих модулів системи. Це забезпечує впевненість у
коректній роботі телеграм-бота при інтеграції його компонентів і подальшому
тестуванні.
3.2.2 Інтеграційне тестування
Інтеграційне тестування є наступним етапом після модульного тестування і
має на меті перевірку взаємодії між різними модулями системи. У процесі
інтеграційного тестування телеграм-бота кафедри програмного забезпечення
автоматизованих систем ЧДТУ буде перевірено, як окремі компоненти системи
працюють разом для забезпечення коректної функціональності. Це включає
перевірку взаємодії між ботом, сервісами та базою даних.
Основні кроки інтеграційного тестування.
1 Підготовка середовища тестування:
налаштування тестового середовища, включаючи тестову базу даних
та підключення до сервісів;
ініціалізація тестових даних у базі даних.
2 Визначення інтеграційних тестових сценаріїв:
визначення сценаріїв, що включають взаємодію між різними
модулями, наприклад, реєстрація користувача та перевірка даних у
базі, надсилання повідомлень між користувачами.
3 Написання інтеграційних тестів:
написання тестів, які перевіряють коректність обробки даних при
взаємодії між модулями.
4 Виконання тестів та аналіз результатів:
запуск інтеграційних тестів;
аналіз результатів тестування, виправлення помилок та повторне
тестування.
Таблиця 3.2
90
ЧДТУ 242239.001ПЗ
Результат інтеграційного тестування
Модуль Тестовий Очікуваний Фактичний Статус
випадок результат результат
Реєстрація Реєстрація Користувача Користувача Пройдено
користувача нового створено, дані створено, дані
користувача та збережено в збережено в базі
перевірка базі
даних
Надсилання Надсилання Повідомлення Повідомлення Пройдено
повідомлень повідомлення збережено в збережено в базі,
між базі, користувачі
користувачами користувачі отримали
та перевірка отримали повідомлення
даних повідомлення
Результати інтеграційного тестування показують, що основні функції
системи телеграм-бота працюють коректно при взаємодії між різними модулями.
Всі тестові випадки були успішно пройдені, що свідчить про правильну
інтеграцію компонентів системи та їхню здатність працювати разом без помилок.
Наступним етапом буде проведення системного тестування для перевірки всієї
системи як єдиного цілого.
3.2.3 Системне тестування
Системне тестування є наступним етапом після інтеграційного тестування і
включає перевірку всієї системи як єдиного цілого. Метою системного тестування
є перевірка того, чи відповідає система встановленим вимогам і працює стабільно
в реальних умовах експлуатації. У процесі системного тестування телеграм-бота
кафедри програмного забезпечення автоматизованих систем ЧДТУ буде
проведено перевірку всіх функціональних і нефункціональних вимог, що включає
тестування на відповідність вимогам користувачів, продуктивність, безпеку та
91
ЧДТУ 242239.001ПЗ
інші важливі аспекти.
Основні кроки системного тестування.
1 Підготовка тестового середовища:
налаштування середовища, яке максимально наближене до
реального, включаючи всі компоненти системи (телеграм-бот, базу
даних, зовнішні сервіси);
ініціалізація реальних даних або використання тестових даних, що
відображають реальні сценарії використання.
2 Визначення системних тестових сценаріїв:
визначення сценаріїв, які охоплюють всі функціональні можливості
системи, такі як реєстрація користувачів, перегляд розкладу,
надсилання повідомлень та оголошень;
включення нефункціональних вимог, таких як продуктивність,
безпека та масштабованість.
3 Написання тестів:
написання детальних тестових сценаріїв для перевірки коректності
виконання всіх функцій системи.
4 Виконання тестів:
запуск тестових сценаріїв та збір результатів;
виявлення та документування помилок, аналіз результатів.
5 Аналіз результатів і виправлення помилок:
аналіз звітів про помилки, виявлених під час тестування;
виправлення помилок та повторне тестування до досягнення
успішних результатів.
Системне тестування підтверджує, що всі компоненти телеграм-бота
працюють коректно як єдине ціле, забезпечуючи відповідність системи вимогам
та її стабільну роботу. Всі тестові випадки були успішно пройдені, що свідчить
про готовність системи до експлуатації. Наступним етапом буде проведення
приймального тестування для підтвердження відповідності системи очікуванням
92
ЧДТУ 242239.001ПЗ
кінцевих користувачів.
Таблиця 3.3
Результат системного тестування
Тестовий Очікуваний Фактичний
Модуль Статус
випадок результат результат
Реєстрація Реєстрація Користувача Користувача Пройдено
користувача користувача та створено, створено, доступ
доступ до доступ до до функцій
функцій функцій надано надано
Надсилання Надсилання Повідомлення Повідомлення Пройдено
повідомлень повідомлення збережено в збережено в базі,
між базі, користувачі
користувачами користувачі отримали
та перевірка отримали повідомлення
даних повідомлення
3.2.4 Приймальне тестування
Приймальне тестування (Acceptance Testing) є заключним етапом
тестування перед впровадженням системи у реальну експлуатацію. Метою
приймального тестування є підтвердження того, що система відповідає
очікуванням кінцевих користувачів та всім вимогам, визначеним на етапі
проектування. Приймальне тестування здійснюється з залученням реальних
користувачів (студентів і викладачів) та охоплює перевірку всіх ключових
функцій системи телеграм-бота кафедри програмного забезпечення
автоматизованих систем ЧДТУ.
Основні кроки приймального тестування.
1 Підготовка до тестування:
93
ЧДТУ 242239.001ПЗ
визначення тестових сценаріїв, які включають реальні сценарії
використання системи;
вибір групи користувачів для проведення тестування (студенти,
викладачі).
2 Проведення тестування:
організація тестової сесії з користувачами;
користувачі виконують реальні завдання, використовуючи телеграм-
бота, такі як реєстрація, перегляд розкладу, надсилання повідомлень
та оголошень;
збір зворотного зв'язку від користувачів щодо зручності
використання та функціональності системи.
3 Аналіз результатів:
оцінка результатів тестування на основі зворотного зв'язку та
виконання тестових сценаріїв;
виявлення та документування будь-яких проблем або помилок, які
виникли під час тестування.
4 Виправлення помилок і остаточне тестування:
виправлення виявлених помилок та повторне тестування для
підтвердження їх усунення;
остаточна перевірка системи для забезпечення повної готовності до
впровадження.
Приймальне тестування підтверджує, що система телеграм-бота відповідає
всім вимогам користувачів та готова до впровадження у реальну експлуатацію.
Усі ключові функції працюють коректно, а користувачі задоволені зручністю
використання системи. Всі тестові випадки були успішно пройдені, що свідчить
про високий рівень готовності системи до використання в реальному середовищі.
Таблиця 3.4
Результат приймального тестування
94
ЧДТУ 242239.001ПЗ
Тестовий Очікуваний Фактичний
Модуль Статус
випадок результат результат
Реєстрація
Користувача Користувача
нового
Реєстрація створено, створено, доступ
користувача та Пройдено
користувача доступ до до функцій
перевірка
функцій надано надано
доступу
Перегляд Розклад Розклад
Перегляд
розкладу для відображено відображено Пройдено
розкладу
існуючої групи коректно коректно
Надсилання Повідомлення
Повідомлення
Надсилання повідомлення отримано, дані
отримано, дані Пройдено
повідомлень між збережено
збережено
користувачами
Оголошення Оголошення
Надсилання
Надсилання отримано всіма отримано всіма
оголошення Пройдено
оголошень учасниками учасниками
групі студентів
групи групи
3.3 Приклади впровадженого програмного комплексу
У цьому підрозділі наведемо приклади реалізованих функцій та
можливостей телеграм-бота кафедри програмного забезпечення автоматизованих
систем ЧДТУ. Ці приклади демонструють, як розроблені програмні компоненти
працюють у реальному середовищі, забезпечуючи користувачам доступ до
необхідної інформації та сервісів.
1 Реєстрація користувачів
Користувачі можуть зареєструватися в системі, ввівши свої особисті дані.
Після успішної реєстрації користувачі отримують доступ до всіх функцій
телеграм-бота (рисунок 3.38, рисунок 3.39, рисунок 3.40).
95
ЧДТУ 242239.001ПЗ
2 Перегляд розкладу
Студенти можуть переглядати розклад занять для своєї групи, вибравши
відповідний пункт в головному меню (рисунок 3.41), вказавши бажану групу
(рисунок 3.42) та вибравши день за допомогою відповідних кнопок (рисунок
3.43).
3 Інформація про викладачів
Користувачі можуть переглядати інформацію про викладачів, вибравши
відповідний пункт в головному меню (рисунок 3.41), та обравши бажаного
викладача зі представленого списку (рисунок 3.44).
4 Написати викладачу
Студенти можуть надсилати повідомлення викладачам, а викладачі -
студентам через телеграм-бота. Для цього необхідно вибрати відповідний пункт в
головному меню (рисунок 3.41), обрати викладача зі списку, написати
повідомлення викладачу та підтвердити його відправку (рисунок 3.45).
5 Підтвердження студентів
Після реєстрації кожен зі студентів очікує на підтвердження свого
облікового запису. Для цього у викладачів в головному меню (рисунок 3.46) є
кнопка для відображення користувачів, що потребують підтвердження. За
допомогою кнопок «Схвалити», «Відмовити» або «Відмовити з причиною»,
викладач має можливість здійснити відповідну дію щодо відображуваного
користувача (рисунок 3.47).
6 Розсилання оголошень
Регулярно відбуваються події, про які необхідно сповістити певні групи
студентів або викладачів. Для цього у викладачів є можливість розсилки
оголошень серед вибраних груп користувачів. В головному меню (рисунок 3.46)
розташована відповідна кнопка «Розсилка», що відкриває меню для вибору
критеріїв розсилки (рисунок 3.48), та після вибору запитує повідомлення для
розсилки, котре після підтвердження відправляється телеграм-ботом усім
обраним його користувачам.
Ці приклади демонструють основні функції та можливості телеграм-бота,
96
ЧДТУ 242239.001ПЗ
які були впроваджені та успішно працюють у реальному середовищі.
Розроблений програмний комплекс забезпечує зручний і ефективний доступ до
інформації та комунікації між студентами і викладачами, підвищуючи загальну
ефективність навчального процесу.
Рисунок 3.38 – Реєстрація студента в телеграм-боті кафедри. Частина 1
97
ЧДТУ 242239.001ПЗ
Рисунок 3.39 – Реєстрація студента в телеграм-боті кафедри. Частина 2
98
ЧДТУ 242239.001ПЗ
Рисунок 3.40 – Реєстрація студента в телеграм-боті кафедри. Частина 3
Рисунок 3.41 – Головне меню телеграм-бота кафедри
99
ЧДТУ 242239.001ПЗ
Рисунок 3.42 – Вибір групи для перегляду розкладу в телеграм-боті кафедри
Рисунок 3.43 – Вибір дня для перегляду розкладу в телеграм-боті кафедри
Рисунок 3.44 – Список для вибору викладача для перегляду інформації про нього
в телеграм-боті кафедри
100
ЧДТУ 242239.001ПЗ
Рисунок 3.45 – Підтвердження відправки повідомлення викладачу в телеграм-боті
кафедри
Рисунок 3.46 – Головне меню викладача в телеграм-боті кафедри
Рисунок 3.47 – Повідомлення з підтвердженням студента в телеграм-боті кафедри
101
ЧДТУ 242239.001ПЗ
Рисунок 3.48 – Меню вибору критеріїв розсилки в телеграм-боті кафедри
102
ЧДТУ 242239.001ПЗ
ВИСНОВОК ДО ТРЕТЬОГО РОЗДІЛУ
У третьому розділі ми детально розглянули процес розробки, тестування та
впровадження телеграм-бота для кафедри програмного забезпечення
автоматизованих систем Черкаського державного технологічного університету.
Розділ включав кілька ключових етапів, кожен з яких мав важливе значення для
забезпечення високої якості та надійності системи.
Основні етапи розробки.
1 Розробка програмного комплексу:
ми обґрунтували вибір засобів реалізації, таких як JavaScript, Node.js,
фреймворк Grammy, база даних MongoDB та інструмент
NoSQLBooster;
було розроблено структурну та логічну схему системи, а також базу
даних для зберігання інформації про користувачів, повідомлення,
розклад та оголошення;
розроблено інтерфейс користувача, що забезпечує зручний доступ до
всіх необхідних функцій.
2 Тестування системи:
на етапі модульного тестування ми перевірили окремі компоненти
системи, що дозволило виявити та виправити помилки на ранніх
стадіях;
інтеграційне тестування забезпечило перевірку взаємодії між
різними модулями, що гарантує їх коректну спільну роботу;
системне тестування підтвердило, що всі компоненти працюють
разом як єдине ціле, забезпечуючи стабільну роботу системи;
приймальне тестування залучило кінцевих користувачів, які
підтвердили, що система відповідає їхнім вимогам та готова до
впровадження.
3 Приклади впровадженого програмного комплексу:
103
ЧДТУ 242239.001ПЗ
ми навели приклади основних функцій телеграм-бота, таких як
реєстрація користувачів, перегляд розкладу, надсилання повідомлень
та оголошень, що демонструють успішне впровадження системи в
реальному середовищі.
В результаті проведеної роботи було створено телеграм-бот кафедри, який
значно полегшує взаємодію між студентами та викладачами, забезпечуючи
зручний доступ до актуальної інформації та комунікаційних можливостей. Всі
етапи розробки та тестування були виконані успішно, що підтверджує високу
якість та надійність системи. Телеграм-бот повністю відповідає поставленим
вимогам і готовий до впровадження в навчальний процес Черкаського державного
технологічного університету.
104
ЧДТУ 242239.001ПЗ
ВИСНОВКИ
Кваліфікаційна робота була спрямована на розробку телеграм-бота для
кафедри програмного забезпечення автоматизованих систем Черкаського
державного технологічного університету. Робота включала аналіз існуючих
методів та засобів розв'язання поставлених завдань, впровадження результатів
досліджень у практику проектування програмного забезпечення інформаційних
систем, а також розробку та тестування програмного забезпечення.
У першому розділі було проведено детальний аналіз наукової та технічної
інформації щодо теми розробки телеграм-бота. Було досліджено сучасні методи
та засоби створення ботів, включаючи використання різних мов програмування,
фреймворків та баз даних. Особлива увага приділялася аналізу переваг і недоліків
кожного підходу, що дозволило обґрунтувати вибір оптимальних засобів для
розробки телеграм-бота. Було розглянуто існуючі рішення та їх застосування у
подібних проектах, що дало можливість визначити найкращі практики та
уникнути потенційних проблем.
Другий розділ був присвячений впровадженню результатів досліджень у
процес розробки програмного забезпечення. Було детально описано процес
проектування телеграм-бота, включаючи формування вимог, моделювання
функціональних компонентів та розробку архітектури системи. Було розроблено
концептуальні, логічні та фізичні моделі, які стали основою для реалізації
програмного забезпечення. Описано процес розробки бази даних, інтерфейсу
користувача та програмних компонентів, що забезпечують функціональність
телеграм-бота. Було розглянуто питання забезпечення продуктивності, безпеки та
масштабованості системи.
У третьому розділі було детально описано процес розробки та тестування
телеграм-бота. Розробка програмного комплексу включала обґрунтування вибору
засобів реалізації, опис структурної та логічної схеми системи, розробку бази
даних, інтерфейсу користувача та програмних компонентів. Тестування системи
включало модульне, інтеграційне, системне та приймальне тестування. У
результаті тестування було підтверджено коректність роботи всіх компонентів
105
ЧДТУ 242239.001ПЗ
системи, їх взаємодію та відповідність встановленим вимогам. Було проведено
приймальне тестування із залученням кінцевих користувачів, що підтвердило
готовність системи до впровадження.
Результати виконаної кваліфікаційної роботи свідчать про успішну
реалізацію телеграм-бота, який значно полегшує взаємодію між студентами та
викладачами кафедри програмного забезпечення автоматизованих систем ЧДТУ.
Система відповідає вимогам користувачів, забезпечує зручний доступ до
інформації та комунікаційних можливостей, підвищуючи ефективність
навчального процесу. Проведені етапи розробки, тестування та впровадження
підтвердили високу якість і надійність створеного програмного комплексу, що
готовий до використання в реальному середовищі навчального закладу.
106
ЧДТУ 242239.001ПЗ
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1 Методи проектування [Електронний ресурс]. – Точка доступу:
https://cpsm.kpi.ua/Doc/konsp_suchasni_metodi.pdf [1]
2 Telegram Bot API: Розробка ботів [Електронний ресурс]. – Точка
доступу: URL: core.telegram.org/bots/api [2]
3 JavaScript: what is [Електронний ресурс]. – Точка доступу: URL:
aws.amazon.com/ru/what-is/javascript/ [3]
4 Масштабованість в програмуванні [Електронний ресурс]. – Точка
доступу: URL: https://uk.itpedia.nl/2021/07/20/schaalbaarheid-als-software-
requirement-betekenis-en-definitie/ [4]
5 Навіщо потрібен чат-бот [Електронний ресурс]. – Точка доступу: URL:
https://sendpulse.ua/knowledge-base/chatbot/telegram/create-telegram-
chatbot [5]
6 Telegram Bot API: Розробка Ботів [Електронний ресурс]. – Точка
доступу: URL: core.telegram.org/bots/api [6]
7 Node.js: Розробка за допомогою Node.js [Електронний ресурс]. – Точка
доступу: URL: nodejs.org/docs [7]
8 Документація Grammy: Основи [Електронний ресурс]. – Точка доступу:
URL: grammy.dev [8]
9 Telegraf: Офіційна документація [Електронний ресурс]. – Точка доступу:
URL: telegraf.js.org [9]
10 Офіційна сторінка Python [Електронний ресурс]. – Точка доступу: URL:
python.org [10]
11 Документація Aiogram [Електронний ресурс]. – Точка доступу: URL:
docs.aiogram.dev [11]
12 Що таке SWOT [Електронний ресурс]. – Точка доступу: URL:
https://www.ba.in.ua/2023/06/30/shho-take-swot-analiz-ta-yak-jogo-
korrektno-provodyty/ [12]
107
ЧДТУ 242239.001ПЗ
13 Аналіз ризиків [Електронний ресурс]. – Точка доступу: URL:
https://skillsetter.io/blog/risk-management-ua [13]
14 Моделювання предметної області [Електронний ресурс]. – Точка
доступу: URL: https://dou.ua/forums/topic/42366/ [14]
15 NoSQLBooster [Електронний ресурс]. – Точка доступу: URL:
https://www.mongobooster.com/home [15]
16 Мова UML [Електронний ресурс]. – Точка доступу: URL:
https://docs.kde.org/trunk5/uk/umbrello/umbrello/uml-basics.html [16]
17 Все про UML [Електронний ресурс]. – Точка доступу: URL:
http://www.znannya.org/?view=uml [17]
18 Аналіз вимог до ПЗ [Електронний ресурс]. – Точка доступу: URL:
http://dspace.wunu.edu.ua/retrieve/14135/FCIT_kKN_sPZS_dAVPZ_%20LE
C.pdf [18]
19 Функціональні та нефункціональні вимоги [Електронний ресурс]. –
Точка доступу: URL: https://www.guru99.com/uk/functional-vs-non-
functional-requirements.html [19]
20 Діаграма пакетів [Електронний ресурс]. – Точка доступу: URL:
www.wikiwand.com/uk/Діаграма_пакетів [20]
21 Діаграма компонентів [Електронний ресурс]. – Точка доступу: URL:
https://www.mindonmap.com/uk/blog/uml-component-diagram/ [21]
22 Діаграма послідовності [Електронний ресурс]. – Точка доступу: URL:
https://www.maxzosim.com/sequence-diagrams/ [22]
23 Актуальність діаграми послідовності [Електронний ресурс]. – Точка
доступу: URL: https://e5.ua/uk/blogpost-2/sequence-diagram-dosi-zhiva/
[23]
24 Діаграма комунікації [Електронний ресурс]. – Точка доступу: URL:
https://www.youtube.com/watch?v=xthCbxOENjE [24]
25 Діаграма скінченного автомату [Електронний ресурс]. – Точка доступу:
URL: https://www.guru99.com/uk/state-machine-transition-diagram.html
[25]
108
ЧДТУ 242239.001ПЗ
26 Чому JavaScript популярна мова програмування [Електронний ресурс]. –
Точка доступу: URL: https://dou.ua/forums/topic/40132/ [26]
27 Все що треба знати про Node.js [Електронний ресурс]. – Точка доступу:
URL: https://wezom.com.ua/blog/vse-chto-nuzhno-znat-o-nodejs [27]
28 Back-End на Node.js [Електронний ресурс]. – Точка доступу: URL:
https://robotdreams.cc/uk/blog/241-zachem-ponimat-backend-chast-i-
pochemu-stoit-vybrat-node-js [28]
29 Гнучкість MongoDB [Електронний ресурс]. – Точка доступу: URL:
https://devzone.org.ua/post/osnovy-mongodb [29]
30 JSON документи [Електронний ресурс]. – Точка доступу: URL:
https://docs.fileformat.com/uk/web/json/ [30]
31 Побудова схем бази даних MongoDB [Електронний ресурс]. – Точка
доступу: URL: https://developer.mozilla.org/ru/docs/Learn/Server-
side/Express_Nodejs/mongoose [31]
109
ДОДАТОК А
ЗАТВЕРДЖЕНО:
Зав. кафедрою ПЗАС, професор
_________________ Голуб С.В.
„____” ______________ 2024 р.
Телеграм-бот кафедри програмного забезпечення автоматизованих систем
Черкаського державного технологічного університету
Специфікація
482. ЧДТУ 242239.001
Листів 1
Розробник ________________ Басюк К.С.
Керівник ________________ Півень О.Б.
Черкаси 2024
482. ЧДТУ 242239.001 2
Позначення Найменування Примітки
Документація
482.ЧДТУ. 242239 12 01 Текст програми
482.ЧДТУ. 242239 34 01 Інструкція користувачеві
482.ЧДТУ. 242239 90 01 Графічні матеріали
111
ДОДАТОК Б
Телеграм-бот кафедри програмного забезпечення автоматизованих систем
Черкаського державного технологічного університету
Текст програми
482. ЧДТУ. 242239 12 01
Листів 21
Розробник ________________ Басюк К.С.
Черкаси 2024
482. ЧДТУ. 242239.001 12 01
Лістинг файлу app.js:
require('dotenv').config();
const mongoose = require("mongoose");
const { Bot, session, MemorySessionStorage } =
require("grammy");
const { conversations, createConversation, } =
require("@grammyjs/conversations");
const { hydrate } = require("@grammyjs/hydrate");
const { hydrateReply, parseMode } = require("@grammyjs/parse-
mode");
const { run } = require("@grammyjs/runner");
const conversationsComposer = require("./conversations");
const commandsComposer = require("./commands");
const hearsComposer = require("./hears");
const handlersComposer = require("./handlers");
const middlewareInterlocutorSaver =
require('./middlewares/interlocutorSaver');
const middlewareAuth = require('./middlewares/auth');
const moment = require("moment");
moment.locale('uk');
const runApp = async () => {
console.log('Starting app...');
await mongoose.connect(process.env.MONGODB_URI);
console.log('Mongo connected');
const bot = new Bot(process.env.TELEGRAM_BOT_TOKEN);
bot.use(hydrate());
bot.use(hydrateReply);
const storageAdapter = new MemorySessionStorage();
global.storageAdapter = storageAdapter;
bot.use(session({
initial() {
return {
loggedIn: false
}
},
storage: storageAdapter
}));
bot.use(middlewareInterlocutorSaver);
bot.use(middlewareAuth);
bot.use(conversations());
bot.use(conversationsComposer);
bot.use(commandsComposer);
bot.use(hearsComposer);
bot.use(handlersComposer);
113
482. ЧДТУ 242239 12 01
bot.catch(console.error);
await bot.init();
run(bot);
console.info(`Bot ${bot.botInfo.username} is up and
running`);
}
runApp();
Лістинг файлу middlewares/auth.js
const accountHelper = require("../helpers/users/account");
const middleware = async (ctx, next) => {
try {
if (!ctx.from?.id) return await next();
if (ctx.session.loggedIn) return await next();
if (ctx.session.onConfirmation) return await next();
await accountHelper.loadAccount(ctx);
await next();
} catch (err) {
console.log("middleware.auth", err);
}
}
module.exports = middleware;
Лістинг файлу middlewares/interlocutorSaver.js
const InterlocutorModel = require("../models/Interlocutor");
const middleware = async (ctx, next) => {
try {
if (!ctx.session.interlocutorSaved) {
ctx.session.interlocutorSaved = true;
await InterlocutorModel.findOneAndUpdate(
{
tgId: ctx.from.id,
username: ctx.from.username
},
{},
{
upsert: true
}
);
}
await next();
} catch (err) {
console.log("middleware.interlocutorSaver", err);
114
482. ЧДТУ 242239 12 01
}
}
module.exports = middleware;
Лістинг файлу models/Broadcast.js
const { Schema, model } = require('mongoose');
const broadcastSchema = new Schema({
initiatorId: String,
criteria: String,
text: String,
sentAt: { type: Date, default: Date.now }
});
const BroadcastModel = model('Broadcast', broadcastSchema);
module.exports = BroadcastModel
Лістинг файлу models/Group.js
const { Schema, model } = require('mongoose');
const groupSchema = new Schema({
name: String
});
const GroupModel = model('Group', groupSchema);
module.exports = GroupModel
Лістинг файлу models/Interlocutor.js
const { Schema, model } = require('mongoose');
const interlocutorSchema = new Schema({
tgId: Number,
username: String,
registrationAt: {
type: Date,
default: Date.now
}
});
const InterlocutorModel = model('Interlocutor',
interlocutorSchema);
module.exports = InterlocutorModel
Лістинг файлу models/Message.js
const { Schema, model } = require('mongoose');
115
482. ЧДТУ 242239 12 01
const messageSchema = new Schema({
senderId: Number,
receiverId: Number,
senderRole: String,
receiverRole: String,
message: String,
sentAt: { type: Date, default: Date.now }
});
const MessageModel = model('Message', messageSchema);
module.exports = MessageModel
Лістинг файлу models/User.js
const { Schema, model } = require('mongoose');
const userSchema = new Schema({
tgId: Number,
firstName: String,
lastName: String,
patronymic: String,
birthday: Date,
role: String, // "student" або "teacher"
course: Number,
group: String,
degree: String,
photo: String,
phone: String,
email: String,
infoUrl: String,
confirmed: {
type: Boolean,
default: false
},
registrationAt: {
type: Date,
default: Date.now
}
});
const UserModel = model('User', userSchema);
module.exports = UserModel
Лістинг файлу hears/common.js
const {Composer, InlineKeyboard} = require("grammy");
const composer = new Composer();
composer.hears("Розклад занять", async (ctx) => {
await ctx.conversation.enter("couplesSchedule");
116
482. ЧДТУ 242239 12 01
});
composer.hears("Інформація про викладачів", async (ctx) => {
await ctx.conversation.enter("teachersInfo");
});
composer.hears(" Сайт університету", async (ctx) => {
await ctx.reply("Натисніть кнопку нижче, щоб перейти на
сайт університету", {
reply_markup: new InlineKeyboard().url('Сайт
університету', "https://chdtu.edu.ua/")
});
});
module.exports = composer;
Лістинг файлу hears/guest.js
const {Composer} = require("grammy");
const composer = new Composer();
composer.hears("Зареєструватися", async (ctx) => {
await ctx.conversation.enter("guest/studentRegisration");
});
module.exports = composer;
Лістинг файлу hears/index.js
const {Composer} = require("grammy");
const common = require("./common");
const guest = require("./guest");
const student = require("./student");
const teacher = require("./teacher");
const composer = new Composer();
composer.use(common);
composer.use(guest);
composer.use(student);
composer.use(teacher);
module.exports = composer;
Лістинг файлу hears/student.js
const {Composer} = require("grammy");
const composer = new Composer();
117
482. ЧДТУ 242239 12 01
composer.hears("✉ Написати викладачу", async (ctx) => {
await
ctx.conversation.enter("student/sendMessageToTeacher");
});
module.exports = composer;
Лістинг файлу hears/teacher.js
const {Composer} = require("grammy");
const composer = new Composer();
composer.hears("✅ Підтвердження студентів", async (ctx) => {
await ctx.conversation.enter("teacher/confirmStudents");
});
composer.hears(" Розсилання", async (ctx) => {
await ctx.conversation.enter("teacher/broadcast");
});
module.exports = composer;
Лістинг файлу handlers/index.js
const {Composer} = require("grammy");
const callback_query = require("./callback_query");
const composer = new Composer();
composer.use(callback_query);
module.exports = composer;
Лістинг файлу handlers/callback_query.js
const { Composer } = require('grammy');
const MessageModel = require('../models/Message');
const composer = new Composer();
composer.on('callback_query:data', async (ctx) => {
if (ctx.callbackQuery.data.startsWith('reply:')) {
const message = await
MessageModel.findById(ctx.callbackQuery.data.split(':')[1]);
if (message.senderRole === 'teacher') {
await
ctx.conversation.enter('student/replyToTeacher');
} else if (message.senderRole === 'student') {
118
482. ЧДТУ 242239 12 01
await
ctx.conversation.enter('teacher/replyToStudent');
}
}
});
module.exports = composer;
Лістинг файлу commands/index.js
const { Composer } = require('grammy');
const start = require('./start');
const composer = new Composer();
composer.use(start);
module.exports = composer;
Лістинг файлу commands/start.js
const { Composer } = require('grammy');
const composer = new Composer();
composer.command("start", async ctx => {
await ctx.reply(`
Вітаю!
Я — твій бот-помічник.
Тут можна отримати інформацію про розклад, викладачів, новини
університету та кафедри.
Також, ти можеш пройти реєстрацію як студент, що спростить
пошук розкладу і дасть можливість комунікувати з викладачами!
Скористайся відповідними кнопками меню нижче
`);
await ctx.conversation.enter("keyboard");
});
module.exports = composer;
Лістинг файлу conversations/index.js
const { Composer } = require('grammy');
const {createConversation} =
require("@grammyjs/conversations");
const mainKeyboard = require("./keyboard");
119
482. ЧДТУ 242239 12 01
const guestStudentRegistration =
require("./guest/registration");
const guestDummy = require("./guest/dummy");
const couplesSchedule = require('./couplesSchedule');
const teachersInfo = require('./teachersInfo');
const studentSendMessageToTeacher =
require('./student/dialogs/sendMessageToTeacher');
const studentReplyToTeacher =
require('./student/dialogs/replyToTeacher');
const teacherReplyToStudent =
require('./teacher/dialogs/replyToStudent');
const teacherConfirmStudents =
require('./teacher/confirmStudents');
const teacherBroadcast = require('./teacher/broadcast');
const composer = new Composer();
composer.use(createConversation(mainKeyboard, "keyboard"));
composer.use(createConversation(guestStudentRegistration,
"guest/studentRegisration"));
composer.use(createConversation(guestDummy, "guest/dummy"));
composer.use(createConversation(studentSendMessageToTeacher,
"student/sendMessageToTeacher"));
composer.use(createConversation(studentReplyToTeacher,
"student/replyToTeacher"));
composer.use(createConversation(teacherReplyToStudent,
"teacher/replyToStudent"));
composer.use(createConversation(teacherConfirmStudents,
"teacher/confirmStudents"));
composer.use(createConversation(teacherBroadcast,
"teacher/broadcast"));
composer.use(createConversation(couplesSchedule,
"couplesSchedule"));
composer.use(createConversation(teachersInfo, "teachersInfo"));
module.exports = composer;
Лістинг файлу conversations/couplesSchedule.js
const { Keyboard, InlineKeyboard } = require("grammy");
const groupSelection = require("./helpers/groupSelection");
const moment = require("moment");
const couplesScheduleHelper =
require("../helpers/couplesSchedule");
const daysOfWeek = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'нд'];
120
482. ЧДТУ 242239 12 01
const createKeyboard = (currentDate) => {
const keyboard = new Keyboard();
daysOfWeek.forEach(day => {
keyboard.text(day);
});
keyboard.row();
keyboard.text('⬅ тиждень').text('сьогодні').text('тиждень
➡ ').row();
const weekStart =
currentDate.startOf('week').format('DD.MM.YYYY');
const weekEnd =
currentDate.endOf('week').format('DD.MM.YYYY');
keyboard.text(`${weekStart} - ${weekEnd}`).row();;
keyboard.text('На головну')
return keyboard;
}
const couplesSchedule = async (conversation, ctx) => {
try {
let group = null;
if (ctx.session.loggedIn && ctx.session.group) {
const keyboard = new InlineKeyboard().text(`Своєї
(${ctx.session.group})`, "my").text("Іншу", "another");
await ctx.reply("Ви бажаєте переглянути розклад
своєї групи, чи обрати іншу?", { reply_markup: keyboard });
const response = await
conversation.waitForCallbackQuery(["my", "another"], {
otherwise: async (ctx) => await
ctx.reply("Використовуйте кнопки!", { reply_markup: keyboard
}),
});
await response.answerCallbackQuery(`Ви обрали
${response.match === "my" ? ctx.session.group : "іншу"}`);
if (response.match === "my") {
group = ctx.session.group;
} else {
group = await groupSelection(conversation,
ctx);
}
} else {
group = await groupSelection(conversation, ctx);
121
482. ЧДТУ 242239 12 01
}
let currentDate = moment();
const couplesMessageText = await
couplesScheduleHelper.getMessage(group,
currentDate.format("DD.MM.YYYY"),
currentDate.format("DD.MM.YYYY"));
let subText = null; // оптимізація в одне повідомлення
if (couplesMessageText) {
ctx.replyWithHTML(couplesMessageText);
} else {
subText = 'На сьогодні розклад відсутній ';
}
while (true) {
const keyboard = createKeyboard(currentDate);
await ctx.reply((subText ? subText+"\n" : '') +
'Виберіть дію або день тижня:', {
reply_markup: keyboard,
});
subText = null;
ctx = await conversation.wait();
const {message} = ctx;
switch (message.text) {
case '⬅ тиждень':
currentDate = currentDate.subtract(1,
'week');
break;
case 'тиждень ➡ ':
currentDate = currentDate.add(1, 'week');
break;
case 'сьогодні':
currentDate = moment();
break;
case (daysOfWeek.includes(message.text) ?
message.text : null): {
const selectedDay =
daysOfWeek.indexOf(message.text);
const selectedDate =
currentDate.startOf('week').add(selectedDay, 'days');
const couplesMessageText = await
couplesScheduleHelper.getMessage(group,
122
482. ЧДТУ 242239 12 01
selectedDate.format("DD.MM.YYYY"),
selectedDate.format("DD.MM.YYYY"));
if (couplesMessageText) {
ctx.replyWithHTML(couplesMessageText);
} else {
subText = `Розкладу за вказаною датою
не знайдено `;
}
break;
}
case "На головну":
// await ctx.conversation.exit();
await ctx.conversation.enter("keyboard");
return;
default:
await ctx.reply('Невідома команда. Будь
ласка, виберіть дію з клавіатури.');
break;
}
}
} catch (err) {
console.log("couplesSchedule", err);
}
}
module.exports = couplesSchedule;
Лістинг файлу conversations/keyboard.js
const { Keyboard } = require("grammy");
const keyboard = async (conversation, ctx) => {
const keyboard = new Keyboard()
.text("Розклад занять").text("Інформація про
викладачів");
if (!ctx.session.loggedIn && !ctx.session.onConfirmation) {
keyboard.row();
keyboard.text("Зареєструватися");
}
if (ctx.session.loggedIn) {
if (ctx.session.role === "student") {
keyboard.row().text("✉ Написати викладачу").row();
}
if (ctx.session.role === "teacher") {
keyboard.row().text("✅ Підтвердження
студентів").row();
keyboard.row().text(" Розсилання").row();
123
482. ЧДТУ 242239 12 01
}
}
keyboard.row().text(" Сайт університету");
keyboard.resized();
await ctx.reply("Головне меню", {
reply_markup: keyboard
});
}
module.exports = keyboard;
Лістинг файлу conversations/teachersInfo.js
const { Bot, session, Keyboard, InlineKeyboard } =
require('grammy');
const moment = require('moment');
const UserModel = require('../models/User');
const createTeachersKeyboard = async (page, search = '') => {
const pageSize = 10;
const query = { role: 'teacher' };
if (search) {
query.$or = [
{ firstName: new RegExp(search, 'i') },
{ lastName: new RegExp(search, 'i') },
{ patronymic: new RegExp(search, 'i') }
];
}
const totalTeachers = await
UserModel.countDocuments(query);
const teachers = await UserModel.find(query)
.sort({ lastName: 1, firstName: 1 })
.skip(page * pageSize)
.limit(pageSize);
const keyboard = new Keyboard();
keyboard.text('На головну');
keyboard.row();
if (page > 0) {
keyboard.text('⬅ Попередня');
}
teachers.forEach(teacher => {
keyboard.text(`${teacher.lastName} ${teacher.firstName}
${teacher.patronymic}`).row();
124
482. ЧДТУ 242239 12 01
});
if ((page + 1) * pageSize < totalTeachers) {
keyboard.text('Наступна ➡ ');
}
return keyboard;
}
const teachersInfo = async (conversation, ctx) => {
let page = 0;
let searchQuery = '';
while (true) {
const keyboard = await createTeachersKeyboard(page,
searchQuery);
await ctx.reply(' Виберіть викладача або введіть
частину ПІБ для пошуку:', {
reply_markup: { keyboard: keyboard.build(),
resize_keyboard: true }
});
ctx = await conversation.wait();
const {message} = ctx;
if (message.text === '⬅ Попередня') {
page -= 1;
} else if (message.text === 'Наступна ➡ ') {
page += 1;
} else if (message.text === 'На головну') {
await ctx.conversation.enter("keyboard");
return;
} else {
const teacherName = message.text;
const nameParts = teacherName.split('
').filter(Boolean);
const query = { role: 'teacher' };
if (nameParts.length === 1) {
query.$or = [
{ firstName: new RegExp(nameParts[0], 'i')
},
{ lastName: new RegExp(nameParts[0], 'i')
},
{ patronymic: new RegExp(nameParts[0], 'i')
}
];
} else if (nameParts.length === 2) {
query.$or = [
{ firstName: new RegExp(nameParts[0], 'i'),
lastName: new RegExp(nameParts[1], 'i') },
125
482. ЧДТУ 242239 12 01
{ lastName: new RegExp(nameParts[0], 'i'),
firstName: new RegExp(nameParts[1], 'i') }
];
} else if (nameParts.length === 3) {
query.$or = [
{ firstName: new RegExp(nameParts[1], 'i'),
lastName: new RegExp(nameParts[0], 'i'), patronymic: new
RegExp(nameParts[2], 'i') }
];
}
const teachers = await UserModel.find(query).sort({
lastName: 1, firstName: 1 });
if (teachers.length === 1) {
const teacher = teachers[0];
const inlineKeyboard = new
InlineKeyboard().url('Детальніше', teacher.infoUrl);
await ctx.replyWithPhoto(teacher.photo, {
caption: ` ${teacher.lastName}
${teacher.firstName} ${teacher.patronymic}\n`
+ ` Вчене звання:
${teacher.degree}\n\n`
+ ` День народження:
${moment(teacher.birthday).format('LL')}\n`
+ (teacher.group ? ` Куратор групи:
${teacher.group}\n` : '')
+ `✉ E-mail: ${teacher.email}\n`,
reply_markup: inlineKeyboard
});
} else if (teachers.length > 1) {
searchQuery = teacherName;
page = 0;
} else {
await ctx.reply('Викладача не знайдено.
Спробуйте ще раз.');
}
}
}
}
module.exports = teachersInfo;
Лістинг файлу conversations/guest/registration.js
const {InlineKeyboard, Keyboard} = require("grammy");
const regexpHelper = require("../../helpers/regexp");
126
482. ЧДТУ 242239 12 01
const accountHelper = require("../../helpers/users/account");
const groupsHelper = require("../../helpers/groups");
class Registration {
constructor(tgId, conversation) {
this.conversation = conversation;
this.tgId = tgId;
this.gender = null;
this.firstName = null;
this.lastName = null;
this.patronymic = null;
this.birthday = null;
this.role = "student";
this.degree = null;
this.course = null;
this.group = null;
this.phone = null;
this.email = null;
}
async askGender(ctx) {
const keyboard = new InlineKeyboard().text("Чоловіча",
"male").text("Жіноча", "female");
await ctx.reply("Виберіть Вашу стать", { reply_markup:
keyboard });
const response = await
this.conversation.waitForCallbackQuery(["male", "female"], {
otherwise: async (ctx) => await
ctx.reply("Використовуйте кнопки!", { reply_markup: keyboard
}),
});
this.gender = response.match;
await response.answerCallbackQuery(`Ви обрали
${this.gender === "male" ? 'чоловічу' : 'жіночу'} стать`);
}
async askLastName(ctx) {
await ctx.reply("Вкажіть Ваше прізвище");
const lastName = await this.conversation.form.text();
if (!regexpHelper.testName(lastName)) return await
ctx.reply("Некоректне прізвище!");
this.lastName = lastName;
}
async askFirstName(ctx) {
await ctx.reply("Вкажіть Ваше ім'я");
const firstName = await this.conversation.form.text();
127
482. ЧДТУ 242239 12 01
if (!regexpHelper.testName(firstName)) return await
ctx.reply("Некоректне ім'я!");
this.firstName = firstName;
}
async askPatronymic(ctx) {
await ctx.reply("Вкажіть Ваше по-батькові");
const patronymic = await this.conversation.form.text();
if (!regexpHelper.testName(patronymic)) return await
ctx.reply("Некоректне по-батькові!");
this.patronymic = patronymic;
}
async askBirthday(ctx) {
await ctx.replyWithHTML("Вкажіть Вашу дату
народження.\nУ форматі <code>дд.мм.рррр</code>.\nНаприклад:
31.01.2003");
const birthday = await this.conversation.form.text();
if (!regexpHelper.testBirthday(birthday)) return await
ctx.reply("Некоректна дата народження!");
this.birthday = birthday;
}
async askDegree(ctx) {
const keyboard = new InlineKeyboard().text("Бакалавр",
"бакалавр").text("Магістр", "магістр");
await ctx.reply("Виберіть Ваш освітній рівень", {
reply_markup: keyboard });
const response = await
this.conversation.waitForCallbackQuery(["бакалавр", "магістр"],
{
otherwise: async (ctx) => await
ctx.reply("Використовуйте кнопки!", { reply_markup: keyboard
}),
});
this.degree = response.match;
await response.answerCallbackQuery(`Ви обрали
${this.degree} курс`);
}
async askCourse(ctx) {
const keyboard = new InlineKeyboard().text("1",
"1").text("2", "2").text("3", "3").text("4", "4").text("5",
"5");
128
482. ЧДТУ 242239 12 01
await ctx.reply("Виберіть Ваш курс", { reply_markup:
keyboard });
const response = await
this.conversation.waitForCallbackQuery(["1", "2", "3", "4",
"5"], {
otherwise: async (ctx) => await
ctx.reply("Використовуйте кнопки!", { reply_markup: keyboard
}),
});
this.course = parseInt(response.match);
await response.answerCallbackQuery(`Ви обрали
${this.course} курс`);
}
async askGroup(ctx) {
await ctx.replyWithHTML("Вкажіть Вашу
групу.\nНаприклад: ПЗС-2244");
const group = await this.conversation.form.text();
if (!groupsHelper.exists(group)) return await
ctx.reply("Вказаної групи не існує!");
this.group = group;
}
async askPhone(ctx) {
const keyboard = new Keyboard().requestContact("Надати
номер телефону").oneTime();
await ctx.reply("Вкажіть Ваш номер телефону", {
reply_markup: keyboard });
const response = await this.conversation.wait();
if (!response.message?.contact) return await
ctx.reply("Надайте доступ до Вашого номеру телефону за
допомогою відповідної кнопки");
this.phone = response.message?.contact.phone_number;
}
async askEmail(ctx) {
await ctx.replyWithHTML("Вкажіть вашу e-mail
адресу.\nНаприклад: [email protected]");
const email = await this.conversation.form.text();
if (!regexpHelper.testEmail(email)) return await
ctx.reply("Некоректна електронна адреса!");
this.email = email;
129
482. ЧДТУ 242239 12 01
}
async askConfirm(ctx) {
const keyboard = new
InlineKeyboard().text("Підтверджую",
"accept").text("Відмінити", "decline");
await ctx.reply(`
Нижче представлений перелік Ваших даних.
Перевірьте їх правильність, та натисніть кнопку "Підтверджую".
Якщо знайшли помилку, то оберіть "Відмінити", та пройдіть
реєстрацію заново.
${accountHelper.generateInfo(this.getData())}
`, { reply_markup: keyboard });
const response = await
this.conversation.waitForCallbackQuery(["accept", "decline"], {
otherwise: async (ctx) => await
ctx.reply("Використовуйте кнопки!", { reply_markup: keyboard
}),
});
await response.answerCallbackQuery();
if (response.match !== "accept") return;
return response;
}
getData() {
return {
tgId: this.tgId,
firstName: this.firstName,
lastName: this.lastName,
patronymic: this.patronymic,
birthday: this.birthday,
role: this.role,
degree: this.degree,
course: this.course,
group: this.group,
phone: this.phone,
email: this.email
}
}
}
const registration = async (conversation, ctx) => {
try {
if (ctx.session.loggedIn) return await ctx.reply("Ви
вже зареєстровані!");
if (await
accountHelper.isWaitingConfirmation(ctx.from.id)) return await
ctx.reply("Ваші дані в процесі підтвердження!");
130
482. ЧДТУ 242239 12 01
await ctx.replyWithHTML("<b>Важливо!</b>\nДля
правильної реєстрації, Вам потрібно послідовно відповісти на
усі наступні питання.");
const reg = new Registration(ctx.from.id,
conversation);
do {
await reg.askGender(ctx);
} while (!reg.gender);
do {
await reg.askLastName(ctx);
} while (!reg.lastName);
do {
await reg.askFirstName(ctx);
} while (!reg.firstName);
do {
await reg.askPatronymic(ctx);
} while (!reg.patronymic);
do {
await reg.askBirthday(ctx);
} while (!reg.birthday);
do {
await reg.askDegree(ctx);
} while (!reg.degree);
do {
await reg.askCourse(ctx);
} while (!reg.course);
do {
await reg.askGroup(ctx);
} while (!reg.group);
do {
await reg.askPhone(ctx);
} while (!reg.phone);
do {
await reg.askEmail(ctx);
} while (!reg.email);
const confirmResult = await reg.askConfirm(ctx);
if (!confirmResult) return await ctx.reply("Реєстрацію
скасовано.");
const regData = reg.getData();
await accountHelper.createAccount(ctx, regData);
131
482. ЧДТУ 242239 12 01
await ctx.reply(`
Ваші дані збережно!
Вони відправлені на підтвердження викладачам.
Ви отримаєте доступ до функцій авторизованих користувачів, коли
пройдете перевірку.
`);
await confirmResult.conversation.enter("keyboard");
} catch (err) {
console.log("studentRegistration", err)
}
}
module.exports = registration;
Лістинг файлу conversations/helpers/groupSelection.js
const { Keyboard } = require("grammy");
const groupsHelper = require("../../helpers/groups");
const createKeyboard = (page, pageSize = 10) => {
const keyboard = new Keyboard();
const start = page * pageSize;
const end = start + pageSize;
const hasPrevPage = page > 0;
const hasNextPage = end < groupsHelper.size;
if (hasPrevPage) {
keyboard.text("⬅ ");
}
groupsHelper.getAll().slice(start, end).forEach(group => {
keyboard.text(group);
});
if (hasNextPage) {
keyboard.text("➡ ");
}
return keyboard.toFlowed(3);
}
const groupSelection = async (conversation, ctx) => {
let page = 0;
while (true) {
const keyboard = createKeyboard(page);
await ctx.reply("Выберіть групу (або введіть вручну):",
{ reply_markup: keyboard });
const { message } = await conversation.wait();
if (message.text === "⬅ ") {
page -= 1;
132
482. ЧДТУ 242239 12 01
} else if (message.text === "➡ ") {
page += 1;
} else if (groupsHelper.exists(message.text)) {
const selectedGroup = message.text;
// await ctx.reply(`Ви вибрали групу:
${selectedGroup}`, { reply_markup: { remove_keyboard: true }
});
return selectedGroup;
} else {
await ctx.reply("Вказаної групи не існує.");
}
}
}
module.exports = groupSelection;
133
ДОДАТОК В
Телеграм-бот кафедри програмного забезпечення автоматизованих систем
Черкаського державного технологічного університету
Інструкція користувачеві
482. ЧДТУ. 242239 34 01
Листів 3
Розробник ________________ Басюк К.С.
Черкаси 2024
482. ЧДТУ. 242239 34 01 2
Цей телеграм-бот розроблено для полегшення взаємодії між студентами та
викладачами кафедри програмного забезпечення автоматизованих систем
Черкаського державного технологічного університету. Бот надає зручний доступ
до інформації про розклад занять, можливість надсилання повідомлень та
отримання оголошень.
Реєстрація користувачів
Запуск бота:
відкрийте додаток Telegram;
знайдіть телеграм-бота кафедри за його назвою або за допомогою
пошуку;
натисніть кнопку "Start" або введіть команду /start.
Реєстрація студента:
після запуску бота оберіть опцію "Реєстрація";
введіть ваше ім'я у відповідь на запит бота;
введіть ваше прізвище;
введіть по батькові;
вкажіть рік вашого народження (у форматі dd.mm.yyyy);
виберіть ваш освітній рівень;
введіть номер вашого курсу;
введіть назву вашої групи;
вкажіть ваш номер телефону;
введіть вашу електронну адресу;
підтвердіть введені дані
після успішної реєстрації бот повідомить вас про це.
Перегляд розкладу.
Запит розкладу:
оберіть опцію "Розклад занять" в головному меню;
введіть або виберіть бажану групу;
бот відобразить розклад занять для вибраної групи на поточний день;
135
482. ЧДТУ. 242239 34 01 3
використовуйте клавіатуру для вибору іншого дня.
Перегляд інформації про викладачів
Запит інформації про викладача:
виберіть опцію "Інформація про викладачів" в головному меню;
виберіть ПІБ викладача або введіть його частину;
бот відобразить інформацію про викладача, включаючи науковий
ступінь та контактні дані.
Надсилання повідомлень.
Надсилання повідомлення викладачеві:
виберіть опцію "Написати викладачу" в головному меню;
виберіть викладача;
введіть текст повідомлення;
підтвердіть відправку повідомлення;
бот повідомить вас про успішне надсилання повідомлення.
Надсилання оголошень
Надсилання оголошення (для викладачів):
виберіть опцію "Розсилання" в головному меню;
введіть текст оголошення;
виберіть групу або категорію студентів, яким необхідно надіслати
оголошення;
підтвердіть відправку написаного оголошення;
бот повідомить вас про успішне надсилання оголошення.
Підтвердження студентів
Підтвердження студента (для викладачів):
виберіть в головному меню опцію "підтвердження студентів";
отримайте повідомлення з студентом, що очікує на підтвердження, та
перевірьте коректність введених ним даних
оберіть дію відносно цього студента (схвалити, відмовити або
відмовити з коментарем);
136
482. ЧДТУ. 242239 34 01 4
ви отримаєте відповідне повідомлення щодо виконаної дії;
студент отримає відповідне повідлення про статус його реєстрації.
137
ДОДАТОК Г
Телеграм-бот кафедри програмного забезпечення автоматизованих систем
Черкаського державного технологічного університету
Графічні матеріали
482. ЧДТУ. 242239 90 01
Листів 12
Розробник ________________ Басюк К.С.
Черкаси 2024
482. ЧДТУ. 242239 90 01 2
Рисунок Г1 – Слайд 1
Рисунок Г2 – Слайд 2
139
482. ЧДТУ. 242239 90 01 3
Рисунок Г3 – Слайд 3
Рисунок Г4 – Слайд 4
140
482. ЧДТУ. 242239 90 01 4
Рисунок Г5 – Слайд 5
Рисунок Г6 – Слайд 6
141
482. ЧДТУ. 242239 90 01 5
Рисунок Г7 – Слайд 7
Рисунок Г8 – Слайд 8
142
482. ЧДТУ. 242239 90 01 6
Рисунок Г9 – Слайд 9
Рисунок Г10 – Слайд 10
143
482. ЧДТУ. 242239 90 01 7
Рисунок Г11 – Слайд 11
Рисунок Г12 – Слайд 12
144
482. ЧДТУ. 242239 90 01 8
Рисунок Г13 – Слайд 13
Рисунок Г14 – Слайд 14
145
482. ЧДТУ. 242239 90 01 9
Рисунок Г15 – Слайд 15
Рисунок Г16 – Слайд 16
146
482. ЧДТУ. 242239 90 01 10
Рисунок Г17 – Слайд 17
Рисунок Г18 – Слайд 18
147
482. ЧДТУ. 242239 90 01 11
Рисунок Г19 – Слайд 19
Рисунок Г20 – Слайд 20
148
482. ЧДТУ. 242239 90 01 12
Рисунок Г21 – Слайд 21
Рисунок Г22 – Слайд 22
149
482. ЧДТУ. 242239 90 01 13
Рисунок Г23 – Слайд 23
Рисунок Г24 – Слайд 24
150