Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал: https://er.chdtu.edu.ua/handle/ChSTU/9066
Назва: Розробка WEB-застосунку для вивчення Біблії
Автори: Немченко , Вадим В'ячеславович
Варданян, Еммануїл Мануельович
Ключові слова: програмне забезпечення;освіта;інтерактивне навчання;вивчення Біблії;адаптація контенту;software;education;interactive learning;Bible study;content adaptation
Дата публікації: 20-чер-2024
Короткий огляд (реферат): АНОТАЦІЯ Варданян Е. М., кваліфікаційна робота бакалавра на тему «Розробка WEB-застосунку для вивчення Біблії». Напрям підготовки 121 "Інженерія програмного забезпечення" ЧДТУ, Черкаси 2024. Метою виконання кваліфікаційної роботи бакалавра є створення програмного забезпечення інформаційної системи для інтерактивного вивчення Біблії. Головні завдання: 1 Інформаційний пошук методів, засобів та методик побудови програмного забезпечення для інтерактивного навчання; 2 Проектування програмного забезпечення для системи вивчення Біблії; 3 Конструювання програмного забезпечення інформаційної системи; 4 Тестування програмного забезпечення інформаційної системи; 5 Впровадження та супроводження програмного забезпечення. Робота присвячена аналізу, проектуванню та розробці програмного забезпечення для інтерактивного вивчення Біблії. У роботі розглядаються основні вимоги до сучасних освітніх платформ, аналізуються існуючі програми для вивчення релігійних текстів та їхні недоліки. На основі проведеного аналізу була розроблена власна модель програмного забезпечення, яка відповідає сучасним стандартам зацікавленості та активності користувачів. Викладено методику впровадження та налаштування системи, оцінено її ефективність на прикладі вивчення Біблії. Результати дослідження показують, що розроблена програма сприяє підвищенню зацікавленості та ефективності вивчення Біблії та може бути адаптована до різних освітніх потреб.
ANNOTATION Vardanian E. M., bachelor's qualification work on the topic "Development of a Web Application for Bible Study." Specialty 121 "Software Engineering" Cherkasy State Technological University, Cherkasy 2024. The purpose of this bachelor's qualification work is to create software for an information system for interactive Bible study. Main tasks: 1 Information search of methods, tools, and techniques for building software for interactive learning; 2 Designing software for the Bible study system; 3 Constructing software for the information system; 4 Testing the software of the information system; 5 Implementing and supporting the software. The work is dedicated to the analysis, design, and development of software for interactive Bible study. The thesis examines the main requirements for modern educational platforms, analyzes existing applications for studying religious texts, and identifies their shortcomings. Based on the analysis conducted, a proprietary software model has been developed that meets the modern standards of user engagement and interactivity. The methodology for implementing and configuring the system is presented, and its effectiveness is evaluated based on Bible study. The research results show that the developed software enhances the interest and effectiveness of Bible study and can be adapted to various educational needs.
URI (Уніфікований ідентифікатор ресурсу): https://er.chdtu.edu.ua/handle/ChSTU/9066
Розташовується у зібраннях:121 Інженерія програмного забезпечення (Інженерія програмного забезпечення)

Файли цього матеріалу:
Файл Опис РозмірФормат 
Кваліфікаційна робота бакалавра Варданян Еммануїл Мануельович.pdf
  Restricted Access
3.71 MBAdobe PDFПереглянути/Відкрити    Запит копії


Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.

Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ 
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ 
Факультет інформаційних технологій і систем 
Кафедра програмного забезпечення автоматизованих систем 
   
ПОЯСНЮВАЛЬНА ЗАПИСКА 
до кваліфікаційної роботи 
бакалавра 
на тему «Розробка WEB-застосунку для вивчення Біблії» 
 
Виконав: студент 4 курсу, групи ПЗС-2244 
спеціальності 
121 «Інженерія програмного забезпечення» 
(шифр і назва напряму підготовки) 
 
Студент: Варданян Е. М.  
 (прізвище та ініціали) 
Керівник: Немченко В. В.   
         (прізвище та ініціали) 
Рецензент: Горбань В. В. 
 (прізвище та ініціали) 
 
 
 
 
 
   Черкаси 2024 
 0 
Черкаський державний технологічний університет 
повне найменування вищого навчального закладу 
Факультет  інформаційних технологій і систем 
Кафедра   програмного забезпечення автоматизованих систем 
Освітній рівень   бакалавр 
Спеціальність  121 «Інженерія програмного забезпечення» 
Освітня програма  Інженерія програмного забезпечення 
 
 
ЗАТВЕРДЖУЮ 
Зав. кафедри ПЗАС, професор 
____________________ С. Голуб  
«___» ______________ 2024 року 
 
З А В Д А Н Н Я 
НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ 
Варданян Еммануїл Мануельович 
(прізвище, ім’я, по батькові) 
1. Тему проекту (роботи) Розробка WEB-застосунку для вивчення Біблії 
Керівник проекту (роботи) Немченко Вадим В’ячеславович к.т.н., доцент 
(прізвище, ім’я , по батькові, науковий ступінь, вчене звання) 
Затверджені наказом Черкаського державного технологічного університету від « 26 » лютого 
2024 року №60/04 
2. Строк подання студентом проекту (роботи) 03.06.2024 
3. Вхідні дані до проекту (роботи) стандарти програмного забезпечення; вимоги до проєкту; 
управління ризиками проєкту; календарне планування проєкту; процеси управління; управління 
ресурсами 
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити)  
Розділ 1. Існуючі методи та засоби розвʼязання поставлених завдань; 
Розділ 2. Впровадження результатів досліджень у практику проектування програмного 
забезпечення інформаційних систем; 
Розділ 3. Розробка  та тестування програмного забезпечення; 
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових робіт проекту; 
Слайд 1 Слайд 2 Слайд 3 Слайд 4 Слайд 5 Слайд 6 Слайд 7 Слайд 8 Слайд 9 Слайд 10 
6. Консультанти розділів роботи7. Дата видачі завдання 02 грудня 2024 р. 
 0 
 
Підпис, дата 
Прізвище, ініціали та посади 
Розділ  
консультанта 
Завдання видав Завдання прийняв 
 
1     
 
2    
 
3    
 
КАЛЕНДАРНИЙ ПЛАН 
Строк виконання 
№ етапів 
Назва етапів випускної роботи Примітки 
п/п кваліфікаційноїроб
оти 
1 Постановка задачі   
2 Підготовка завдання   
3 Погодження завдання   
4 Затвердження завдання   
 Основна стадія   
1 Підбір матеріалів   
2 Аналіз шляхів вирішення поставленої задачі   
3 Розрахунок основних параметрів роботи   
4 Вибір кінцевого варіанту проектного рішення   
5 Оформлення первісної редакції роботи   
 Заключна стадія   
1 Узгодження прийнятих проектних рішень з керівником   
2 Оформлення пояснювальної записки роботи в кінцевій   
редакції 
3 Попередній захист роботи   
4 Затвердження роботи   
5 Рецензування роботи   
6 Захист роботи   
Студент _____________________  Варданян Е. М. 
  (підпис)                     (прізвище та ініціали) 
Керівник роботи ___________________              Немченко В. В.                  
(підпис)                         (прізвище та ініціали) 
 0 
АНОТАЦІЯ 
Варданян Е. М., кваліфікаційна робота бакалавра на тему «Розробка WEB-
застосунку для вивчення Біблії». Напрям підготовки 121 "Інженерія програмного 
забезпечення" ЧДТУ, Черкаси 2024. 
Метою виконання кваліфікаційної роботи бакалавра є створення 
програмного забезпечення інформаційної системи для інтерактивного вивчення 
Біблії. 
Головні завдання: 
1 Інформаційний пошук методів, засобів та методик побудови програмного 
забезпечення для інтерактивного навчання; 
2 Проектування програмного забезпечення для системи вивчення Біблії; 
3 Конструювання програмного забезпечення інформаційної системи; 
4 Тестування програмного забезпечення інформаційної системи; 
5 Впровадження та супроводження програмного забезпечення. 
Робота присвячена аналізу, проектуванню та розробці програмного 
забезпечення для інтерактивного вивчення Біблії. У роботі розглядаються основні 
вимоги до сучасних освітніх платформ, аналізуються існуючі програми для 
вивчення релігійних текстів та їхні недоліки. На основі проведеного аналізу була 
розроблена власна модель програмного забезпечення, яка відповідає сучасним 
стандартам зацікавленості та активності користувачів. Викладено методику 
впровадження та налаштування системи, оцінено її ефективність на прикладі 
вивчення Біблії. 
Результати дослідження показують, що розроблена програма сприяє 
підвищенню зацікавленості та ефективності вивчення Біблії та може бути 
адаптована до різних освітніх потреб. 
Ключові слова: програмне забезпечення, освіта, інтерактивне навчання, 
вивчення Біблії, адаптація контенту. 
Об'єктом роботи є процес проектування, конструювання та тестування 
програмного забезпечення інформаційних систем для інтерактивного навчання. 
 
 0 
ANNOTATION 
Vardanian E. M., bachelor's qualification work on the topic "Development of a 
Web Application for Bible Study." Specialty 121 "Software Engineering" Cherkasy 
State Technological University, Cherkasy 2024. 
The purpose of this bachelor's qualification work is to create software for an 
information system for interactive Bible study. 
Main tasks: 
1 Information search of methods, tools, and techniques for building software for 
interactive learning; 
2 Designing software for the Bible study system; 
3 Constructing software for the information system; 
4 Testing the software of the information system; 
5 Implementing and supporting the software. 
The work is dedicated to the analysis, design, and development of software for 
interactive Bible study. The thesis examines the main requirements for modern 
educational platforms, analyzes existing applications for studying religious texts, and 
identifies their shortcomings. Based on the analysis conducted, a proprietary software 
model has been developed that meets the modern standards of user engagement and 
interactivity. The methodology for implementing and configuring the system is 
presented, and its effectiveness is evaluated based on Bible study. 
The research results show that the developed software enhances the interest and 
effectiveness of Bible study and can be adapted to various educational needs. 
Keywords: software, education, interactive learning, Bible study, content 
adaptation. 
             
 
 
 0 
 
 
Вступ…………………………………………………………………………………….6 
Розділ 1. Існуючі методи та засоби розв’язання поставлених завдань………...9 12 
    1.1 Актуальність теми……………………………………………………………….9 ………….12 
    1.2 Аналіз наукової та технічної інформації……………………………………….9 12 
    1.3 Переваги та недоліки різних типів програмного забезпечення……………..13 17 
        1.3.1 ПЗ для вивчення Біблії (YouVersion)……………………………………..13 19 
        1.3.2 ПЗ для вивчення Біблії (Logos)…………………………………………...14 20 
        1.3.3 ПЗ для вивчення Біблії (LifeBible)………………………………………..15 21 
    1.4 Конкретизація завдань…………………………………………………………16 16 
Розділ 2. Впровадження результатів досліджень у практику проектування 
програмного забезпечення інформаційних систем…………………………...…18 23 
    2.1 Моделювання предметної області………………………………………….…18 23 
        2.1.1 Предметна область моделювання. Модель предметної області. Словник 
предметної області…………………………………………………………………….19 23 
        2.1.2 Елементи моделювання предметної області……………………………..20 28 
        2.1.3 Робоча область моделювання……………………………………………..22 30 
    2.2 Формування та аналіз вимог…………………………………………………...23 31 
        2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні 
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні 
вимоги………………………………………………………………………………….23 31 
        2.2.2 Формування вимог за допомогою діаграми прецедентів……………….27 34 
 
 ЧДТУ 242241.003ПЗ 
Змн. Лист. № докум. Підпис Дата 
 
РозроКбив Варданян Е. М.  Літ. Лист Листів 
Керівник Немченко В. В. Розробка WEB-застосунку для 3 
 
 а  вивчення Біблії ФІТІС, Кафедра ПЗАС 
Н.Контр оль Півень О. Б. 
гр. ПЗС-2244 
Затвефрдив Голуб С. В. 
  
е
 0 
д
р
 
    2.3 Проектування логічної структури програмного комплексу…………………28 36 
        2.3.1 Діаграми класів…………………………………………………………….28 36 
        2.3.2 Діаграми пакетів…………………………………………………………...30 38 
    2.4 Архітектурне проектування……………………………………………………31 39 
        2.4.1 Діаграма компонентів……………………………………………………...31 40 
        2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма 
розгортання……………………………………………………………………………32 40 
    2.5 Моделювання поведінки системи……………………………………………..33 41 
        2.5.1 Діаграма діяльності………………………………………………………..34 41 
        2.5.2 Діаграма послідовності……………………………………………………36 41 
        2.5.3 Діаграма комунікації………………………………………………………37 41 
        2.5.4 Діаграма скінченного автомату…………………………………………...37 41 
Розділ 3. Розробка та тестування програмного забезпечення………………….40 42 
    3.1 Розробка програмного комплексу……………………………………………..40 42 
        3.1.1 Обґрунтування вибору засобів реалізації………………………………...40 42 
        3.1.2 Опис структурної (функціональної) схеми………………………………41 
        3.1.3 Опис логічної схеми системи……………………………………………..43 4 
        3.1.4 Розробка бази даних……………………………………………………….44 44 
        3.1.5 Розробка інтерфейсу користувача………………………………………...46 47 
        3.1.6 Опис розробки програмних компонентів………………………………...59 57 
    3.2 Тестування системи…………………………………………………………….60 62 
        3.2.1 Модульне тестування……………………………………………………...60 62 
        3.2.2 Інтеграційне тестування…………………………………………………...62 
        3.2.3 Системне тестування………………………………………………………63 
Лист
 ЧДТУ 242241.003ПЗ т 
4 
 
 0 
        3.2.4 Приймальне тестування…………………………………………………...64 
    3.3 Приклади впровадженого програмного комплексу………………………….66 
ВИСНОВКИ…………………………………………………………………………...72 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ……………………………………………..73 
ДОДАТОК А…………………………………………………………………………..74 
ДОДАТОК Б…………………………………………………………………………...76 
ДОДАТОК В…………………………………………………………………………..94 
ДОДАТОК Г………………………………………………………………………….101 
 
 
Лист
ЧДТУ 242241.003ПЗ т 
5 
 5 
ЧДТУ 242241.003ПЗ 
ВСТУП 
Актуальність теми 
          Актуальність визначається потребою у розробці програмного 
забезпечення інформаційної системи для інтерактивного вивчення Біблії, яке 
відповідає сучасним вимогам ефективності  та безпеки. Зростання обсягів даних і 
потреба в їх оперативному аналізі вимагають від такого програмного 
забезпечення не тільки високої функціональності, але й гнучкості та 
масштабованості. Вибір напрямку розвитку програмного забезпечення, яке зможе 
відповідати цим вимогам, є ключовим для забезпечення якісного духовного 
розвитку та освітньої діяльності користувачів. 
Мета і завдання розробки 
Метою роботи є розробка програмного забезпечення для системи 
інтерактивного вивчення Біблії, що відповідає сучасним вимогам ефективності, 
безпеки та користувацького комфорту. 
Завдання: 
1 Інформаційний пошук методів, засобів та методик побудови 
програмного забезпечення інформаційних систем виконання 
поставлених завдань. 
2 Проектування програмного забезпечення інформаційної системи для 
інтерактивного вивчення Біблії. 
3 Конструювання програмного забезпечення інформаційної системи. 
4 Тестування програмного забезпечення інформаційної системи. 
5 Впровадження та супроводження програмного забезпечення 
інформаційної системи. 
Об'єкт розробки 
Об'єктом розробки є процеси інтерактивного вивчення Біблії, що потребують 
автоматизації та оптимізації за допомогою сучасного програмного забезпечення. 
Предмет розробки 
Предметом розробки є процес побудови програмного забезпечення 
інформаційної системи для інтерактивного вивчення Біблії, що відповідає 
 6 
ЧДТУ 242241.003ПЗ 
сучасним вимогам ефективності, безпеки та інтеграції з іншими освітніми 
платформами. 
Методи проектування та конструювання 
При розробці програмного забезпечення використовувалися методи 
системного аналізу, об'єктно-орієнтованого проектування, а також методики 
Agile-розробки для забезпечення гнучкості та ефективності процесу створення 
продукту. 
Для досягнення визначеної мети у розробці програмного забезпечення для 
інтерактивного вивчення Біблії були використані наступні методи: порівняльний 
аналіз — під час дослідження існуючих програмних продуктів на ринку для 
ідентифікації їхніх переваг та недоліків; системний аналіз та синтез — для 
проектування архітектури програмного забезпечення, що оптимально відображає 
всі процеси інтерактивного навчання та забезпечує гнучкість в налаштуванні під 
конкретні потреби користувачів; об'єктно-орієнтоване проектування — для 
створення модульної структури програмного забезпечення, що дозволяє легко 
розширювати його функціонал та інтегрувати з іншими освітніми платформами; 
тестування — для перевірки стабільності роботи програмного забезпечення, 
відповідності його функціоналу заявленим вимогам та виявлення можливих 
помилок перед впровадженням у експлуатацію. 
Експериментальна розробка та прототипування — важливі складові 
процесу, що дозволяють на ранніх стадіях розробки визначити оптимальні 
підходи до реалізації ключових функцій програмного забезпечення та оцінити їх 
ефективність на практиці. Це також сприяє адаптації розробки до змінюваних 
вимог замовника та ринку в цілому. 
Таким чином, комплексне використання зазначених методів і підходів 
дозволяє створити надійне, гнучке та ефективне програмне забезпечення для 
інтерактивного вивчення Біблії, яке зможе забезпечити потреби сучасних 
користувачів в освітньому та духовному розвитку. 
Опис отриманих результатів 
 7 
ЧДТУ 242241.003ПЗ 
Був проведений аналіз ринку існуючого програмного забезпечення для 
інтерактивного вивчення Біблії, який включає порівняння функціональних 
можливостей та простоти використання завдяки метрикам. В результаті роботи 
було розроблено програмне забезпечення, що дозволяє значно спростити та 
автоматизувати процеси вивчення Біблії, забезпечити надійний захист даних та 
оптимізувати витрати часу користувачів на навчання. 
Практичне значення отриманих результатів 
Розроблене програмне забезпечення може бути запровадженим в освітніх 
установах та релігійних організаціях для підвищення ефективності процесу 
вивчення Біблії, зниження витрат на обробку даних та забезпечення високого 
рівня безпеки інформації. 
Особистий внесок автора 
Автором був здійснений аналіз сучасного ринку програмного забезпечення 
для інтерактивного вивчення Біблії, проведено повний цикл розробки 
програмного продукту, який включає: 
− аналіз вимог; 
− проектування архітектури; 
− програмування і розширення функціональних можливостей; 
− тестування; 
− підготовку документації; 
− планування процесу впровадження системи в експлуатацію. 
 8 
ЧДТУ 242241.003ПЗ 
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ 
ПОСТАВЛЕНИХ ЗАВДАНЬ 
1.1 Актуальність теми 
Актуальність теми розробки програмного забезпечення для інтерактивного 
вивчення Біблії у сучасному світі важко переоцінити. З поширенням 
комп'ютеризації та автоматизації практично у всіх сферах діяльності, вивчення 
Біблії може стати більш доступним та ефективним з використанням сучасних 
технологій. Люди з різних культурних і вікових груп, які шукають можливості для 
духовного розвитку, потребують інноваційних та надійних рішень для занурення 
у священні тексти, що сприяє глибшому розумінню та персональному зростанню. 
На фоні зростаючих вимог до освітньої залученості та інтерактивності, 
виникає потреба у сучасних технологічних рішеннях, які забезпечать не лише 
ефективність та зручність навчання, але й зацікавленість та мотивацію серед 
користувачів. Тому дослідження в галузі розробки програмного забезпечення для 
вивчення Біблії стає актуальним завданням, що має прямий вплив на підвищення 
рівня освіченості та духовного розвитку сучасного суспільства. 
1.2 Аналіз наукової та технічної інформації 
Аналіз наукової та технічної інформації щодо розробки програмного 
забезпечення для вивчення Біблії підтверджує наявність різноманітних підходів та 
стратегій у цій області. Спостерігається значний прогрес у використанні 
інтерактивних та мультимедійних засобів для залучення користувачів та 
підвищення ефективності навчальних процесів. 
Ключові поняття, які вирізняються у науковій літературі, включають 
"інтерактивне навчання", "гейміфікація освіти", "адаптивні навчальні системи", 
"захист персональних даних". Широко використовуються технології такі як 
мобільні додатки, хмарні сервіси, штучний інтелект для аналізу вивчення та 
адаптації змісту до потреб користувачів. 
За останні кілька років також зросла зацікавленість у використанні великих 
даних і машинного навчання для аналізу ефективності навчальних методів і 
 9 
ЧДТУ 242241.003ПЗ 
підвищення рівня освітньої взаємодії. Тенденція до інтеграції новітніх ІТ-рішень в 
освітні платформи відображає потребу у гнучких, масштабованих та доступних 
рішеннях. 
Зокрема, значний внесок у розвиток галузі внесли дослідження, які 
аналізують вплив інтерактивних методик на залученість і мотивацію 
користувачів, підтверджуючи їх високу ефективність у навчальних програмах. 
Важливість розвитку нових підходів до вивчення Біблії, які інтегрують сучасні 
технологічні рішення без зниження якості навчального контенту, залишається 
актуальною. 
Попри існуючі досягнення, деякі аспекти, такі як розробка універсальних 
критеріїв для оцінки впливу технологій на навчання, потребують подальших 
досліджень. Враховуючи проведений аналіз, можна зробити висновок про 
необхідність подальших досліджень у даній галузі та розробки нових підходів, які 
оптимізують розробку подібних освітніх систем у майбутньому. 
Вимоги до програмного забезпечення для вивчення Біблії: 
1 Надійність: 
1 ПЗ має бути стабільним і надійним, щоб забезпечити безперервний 
доступ до навчальних матеріалів. 
2 Необхідно уникати помилок у навчальному контенті, забезпечуючи його 
високу якість. 
3 Система повинна мати механізми автоматичного відновлення у разі 
технічних збоїв. 
2 Безпека: 
1 Програмне забезпечення має забезпечувати захист конфіденційності 
користувачів та їхніх даних. 
2 Важливо гарантувати цілісність навчального контенту, щоб уникнути 
його модифікацій без авторизації. 
3 ПЗ повинно відповідати сучасним стандартам кібербезпеки. 
3 Функціональність: 
 10 
ЧДТУ 242241.003ПЗ 
1 ПЗ повинно надавати широкий спектр навчальних інструментів, таких як 
відео, інтерактивні завдання, квізи та можливість ведення записів і 
заміток. 
2 Можливість адаптації навчального контенту під потреби різних груп 
користувачів. 
3 Інтеграція з іншими освітніми платформами та ресурсами для 
забезпечення комплексного навчального процесу. 
4 Гнучкість: 
1 Система має бути адаптивною та налаштовуваною, здатною до адаптації 
під різні навчальні потреби та стилі навчання користувачів. 
2 Можливість додавання нових функцій без суттєвих змін у базовій 
структурі. 
3 Підтримка різних мов і культурних контекстів. 
5 Інтеграція: 
1 Важливо, щоб ПЗ могло інтегруватися з іншими освітніми платформами 
та ресурсами, забезпечуючи гармонійну екосистему для вивчення. 
2 Підтримка стандартних форматів даних для обміну інформацією з 
іншими системами. 
3 Можливість синхронізації з календарями, системами управління 
навчальними матеріалами та іншими інструментами. 
6 Легкість використання: 
1 Інтерфейс користувача має бути інтуїтивно зрозумілим та зручним для 
користувачів всіх вікових категорій. 
2 Система повинна мати простий і зрозумілий процес реєстрації та входу. 
3 Забезпечення доступності для користувачів з обмеженими 
можливостями. 
7 Підтримка та оновлення: 
1 Розробник має забезпечувати своєчасну підтримку та оновлення 
програмного забезпечення для адаптації до змін у навчальних 
стандартах та технологіях. 
 11 
ЧДТУ 242241.003ПЗ 
2 Наявність гарячої лінії або інших каналів підтримки для швидкого 
вирішення проблем користувачів. 
3 Регулярні оновлення з новими функціями та виправленнями. 
8 Звітність: 
1 ПЗ повинно надавати інструменти для моніторингу прогресу та аналізу 
ефективності навчання користувачів. 
2 Можливість генерації детальних звітів для викладачів і адміністраторів. 
3 Інструменти для самостійної оцінки прогресу користувачами. 
9 Масштабованість: 
1 Програмне забезпечення має бути здатне до масштабування, 
забезпечуючи ефективну роботу з різною кількістю користувачів та 
об'ємом контенту. 
2 Система повинна бути готова до обробки великої кількості одночасних 
підключень без втрати продуктивності. 
3 Можливість розширення серверної інфраструктури при зростанні 
кількості користувачів. 
10 Вартість: 
1 Вартість програмного забезпечення має бути виправданою з 
урахуванням його функціональності, користувацьких можливостей та 
цінності, яку воно надає користувачам. 
2 Гнучкі цінові плани, що дозволяють користувачам вибирати 
оптимальний варіант в залежності від їх потреб та фінансових 
можливостей. 
3 Наявність безкоштовного або пробного періоду для ознайомлення з 
основними можливостями ПЗ. 
4 Ці вимоги є критичними факторами, які визначають якість та 
придатність програмного забезпечення для ефективного вивчення Біблії. 
Вони допомагають забезпечити, що програмне забезпечення відповідає 
сучасним освітнім потребам і надає користувачам високу якість 
навчання. 
 12 
ЧДТУ 242241.003ПЗ 
1.3 Переваги та недоліки різних типів програмного забезпечення 
Для прикладу розглянемо наступні програмні продукти: 
Програмне забезпечення для вивчення Біблії: YouVersion 
Це програмне забезпечення, яке надає широкий спектр можливостей для 
вивчення Біблії, включаючи доступ до різних перекладів, планів читання та 
молитовних заміток. YouVersion дозволяє користувачам вивчати Біблію з будь-
якого пристрою, що має доступ до Інтернету, забезпечуючи можливість спільного 
використання знань та уроків з різних місць. YouVersion. 
Програмне забезпечення для вивчення Біблії: Logos 
Це одне з найбільш авансованих комерційних програмних рішень для 
глибокого біблійного дослідження, яке надає можливості для вивчення 
оригінальних текстів, проведення комплексних теологічних аналізів, та інтеграції 
з академічними ресурсами. Це ПЗ призначене для дослідників, викладачів та 
студентів теології, які потребують розширених інструментів для своїх досліджень. 
Logos 
Програмне забезпечення для вивчення Біблії: LifeBible 
Це програмне забезпечення націлене на великі релігійні організації та 
церкви, які потребують системи для комплексного управління своїми ресурсами, 
включно з освітніми програмами, розпорядженням церковними заходами та 
зберіганням великої кількості біблійного контенту. LifeBible надає інструменти 
для автоматизації обліку, організації подій та аналізу звітності. LifeBible 
Дані продукти були проаналізовані за допомогою таблиці факторів (Табл. 1.1) 
1.3.1 Програмне забезпечення для вивчення Біблії (YouVersion) 
Переваги: 
1 Легкість доступу з будь-якого пристрою з доступом до Інтернету: 
YouVersion дозволяє користувачам вивчати Біблію з будь-якого пристрою, 
що має доступ до Інтернету, включаючи смартфони, планшети та 
комп'ютери. Це робить платформу доступною у будь-який час та у будь-
якому місці. 
 13 
ЧДТУ 242241.003ПЗ 
2 Можливість спільного використання знань та уроків: Користувачі 
можуть ділитися своїми знахідками, планами читання та молитовними 
замітками з іншими, що сприяє створенню спільноти та обміну досвідом. 
3 Велика кількість перекладів та планів читання: Платформа надає доступ 
до численних перекладів Біблії та різних планів читання, що дозволяє 
користувачам вибирати найзручніші для них варіанти. 
4 Безкоштовний доступ до основних функцій: Більшість функцій доступні 
безкоштовно, що робить платформу доступною для широкого кола 
користувачів, незалежно від їхніх фінансових можливостей. 
5 Регулярні оновлення та додавання нового контенту: Постійні оновлення 
забезпечують актуальність контенту та підтримують інтерес користувачів, 
додаючи нові плани читання, переклади та функції. 
Недоліки: 
1 Залежність від стабільного інтернет-з'єднання: Без стабільного інтернет-
з'єднання доступ до платформи стає неможливим, що може бути проблемою 
для користувачів у районах з поганим інтернет-покриттям. 
2 Питання безпеки даних та конфіденційності: Використання хмарного 
середовища може викликати занепокоєння щодо безпеки особистих даних 
та конфіденційності інформації користувачів. 
3 Обмежені можливості для глибокого дослідження текстів: Платформа 
більше підходить для загального вивчення та особистого користування, ніж 
для глибоких академічних досліджень. 
4 Обмежена функціональність у порівнянні з комерційними рішеннями: 
Деякі розширені функції, такі як детальний аналіз текстів або інтеграція з 
академічними ресурсами, можуть бути недоступні. 
1.3.2 Програмне забезпечення для вивчення Біблії (Logos) 
Переваги: 
1 Глибокі дослідницькі можливості для академічного використання: Logos 
надає інструменти для глибокого аналізу біблійних текстів, включаючи 
 14 
ЧДТУ 242241.003ПЗ 
доступ до оригінальних мов, порівняльний аналіз перекладів та інші наукові 
інструменти. 
2 Інтеграція з академічними ресурсами та оригінальними текстами: 
Платформа дозволяє доступ до великої бібліотеки теологічних матеріалів та 
оригінальних текстів, що робить її ідеальною для академічних досліджень 
та викладання. 
3 Розширені інструменти для комплексного теологічного аналізу: Logos 
підтримує різноманітні інструменти для детального аналізу текстів, такі як 
порівняння різних перекладів, аналіз контексту та історичних коментарів. 
4 Можливість створення власних бібліотек досліджень: Користувачі можуть 
створювати власні бібліотеки досліджень, організовуючи матеріали 
відповідно до своїх потреб та дослідницьких інтересів. 
Недоліки: 
1 Висока вартість ліцензування: Logos є дорогим програмним 
забезпеченням, що може бути перешкодою для багатьох користувачів та 
організацій. 
2 Складність у використанні для неспеціалістів: Платформа може бути 
важкою для освоєння новачками, які не мають досвіду у використанні 
подібного ПЗ. 
3 Необхідність спеціалізованого навчання для ефективного 
використання: Користувачам може знадобитися додаткове навчання для 
повноцінного використання всіх функцій платформи. 
4 Високі вимоги до апаратного забезпечення: Програма може вимагати 
потужного комп'ютера для ефективної роботи, що може бути обмеженням 
для деяких користувачів. 
1.3.3 Програмне забезпечення  для вивчення Біблії (LifeBible) 
Переваги: 
1 Ідеально підходить для великих організацій та церков: Програма 
забезпечує необхідні інструменти для управління великими обсягами даних, 
що робить її підходящою для великих церков та релігійних організацій. 
 15 
ЧДТУ 242241.003ПЗ 
2 Інструменти для комплексного управління ресурсами та організації 
подій: LifeBible надає інструменти для автоматизації управління подіями, 
ресурсами та іншими аспектами діяльності організації. 
3 Можливості для автоматизації обліку та аналізу звітності: Програма 
підтримує інструменти для детального аналізу та обліку, що спрощує 
процес управління фінансами та іншими ресурсами. 
4 Підтримка різноманітних форматів контенту (відео, аудіо, текст): 
LifeBible дозволяє зберігати та управляти контентом у різних форматах, що 
робить її універсальною платформою для навчання та проповіді. 
5 Інтеграція з іншими системами управління організацією: Платформа 
легко інтегрується з іншими системами управління, що забезпечує 
ефективну синхронізацію даних та процесів. 
Недоліки: 
1 Значні витрати на впровадження та обслуговування: Встановлення та 
підтримка програми можуть вимагати значних фінансових витрат, що може 
бути обмеженням для деяких організацій. 
2 Потреба в кваліфікованому персоналі для управління системою: Для 
ефективного використання програми може знадобитися досвідчений 
персонал, що може вимагати додаткового навчання або найму спеціалістів. 
3 Ускладнена інтеграція з нестандартними або старими системами: 
Інтеграція з нестандартними або застарілими системами може бути 
складною, що може вимагати додаткових налаштувань або розробок. 
4 Високі вимоги до технічної інфраструктури організації: Програма може 
вимагати потужної технічної інфраструктури для стабільної роботи, що 
може бути викликом для деяких організацій. 
5 Тривалий час на впровадження та налаштування: Процес впровадження 
та налаштування програми може зайняти багато часу, що може затримувати 
початок її використання. 
1.4 Конкретизація завдань  
 16 
ЧДТУ 242241.003ПЗ 
Одним з головних завдань є детальний розгляд поточних вимог до 
навчального програмного забезпечення для глибокого вивчення Біблії, включно з 
аналізом потреб користувачів та очікувань від функціоналу програми. Окрім того, 
потрібно з'ясувати слабкі місця наявних на ринку продуктів, що може слугувати 
основою для розробки поліпшених версій програмного забезпечення. 
Наступний крок полягає у використанні методологій аналізу та 
проектування для вирішення виявлених проблем. Планується застосування 
детальних аналітичних інструментів для оцінки користувацьких вимог і 
дослідження поточних рішень. Це допоможе у створенні нових функціональних 
можливостей, які відповідають і виправляють виявлені обмеження та недоліки. 
Висновки до розділу 
У розділі був представлений всебічний огляд актуальності розробки 
програмного забезпечення для інтерактивного вивчення Біблії, що є надзвичайно 
важливим у сучасному світі цифрових технологій.  
Аналіз наукової та технічної інформації показав ключові тенденції в 
освітній сфері, такі як використання інтерактивних методів навчання, 
гейміфікації, адаптивних навчальних систем і хмарних технологій, що суттєво 
підвищують ефективність та залученість у процес навчання. Порівняльний аналіз 
різних типів програмного забезпечення для вивчення Біблії виявив їх переваги та 
недоліки, допомагаючи визначити оптимальні рішення для різних груп 
користувачів. 
Використання сучасних технологій і підходів дозволяє підвищити 
ефективність і надійність навчального процесу, зменшити ймовірність помилок та 
оптимізувати витрати часу на засвоєння матеріалу, що є важливим кроком до 
успішної інтеграції інтерактивного навчання у духовне та освітнє життя 
користувачів. 
 17 
ЧДТУ 242241.003ПЗ 
РОЗДІЛ 2 ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У ПРАКТИКУ 
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНИХ 
СИСТЕМ 
Цей розділ розкриває методику, яка була використана для розробки 
програмного продукту. 
2.1 Моделювання предметної області 
Використання ітеративного процесу розробки програмного забезпечення, 
аналогічного компактній версії методології екстремального програмування (XP), 
передбачає, що кожна ітерація буде мати свою унікальну модель предметної 
області. Ця модель відображатиме прецеденти, що виконуються на даному етапі, 
що дозволяє поступово розвивати та удосконалювати модель у міру просування 
проекту. 
2.1.1 Предметна область моделювання. Модель предметної області. 
Словник предметної області 
Предметна область моделювання — це сукупність об'єктів, процесів та 
явищ, які складають зміст певної системи або діяльності, і які відображаються в 
моделі. Вона включає всі сутності та їхні взаємозв'язки, що є актуальними для 
конкретної задачі або проблеми, яку вирішує система. 
Моделювання предметної області дозволяє зрозуміти структуру, функції та 
поведінку системи, а також виявити її основні компоненти та їхні взаємодії. Це 
сприяє ефективному аналізу та проектуванню інформаційних систем, 
забезпечуючи точне відображення реальних процесів та об'єктів у вигляді моделі. 
Модель предметної області – ключовий елемент у об'єктно-орієнтованому 
аналізі, оскільки вона надає візуальне уявлення про концептуальні класи чи 
об'єкти, що існують у реальному світі, і описує їх у контексті предметної області, 
не фокусуючись на програмних компонентах. Така модель, також відома як 
концептуальна модель чи модель об'єктів предметної області, служить своєрідним 
лексиконом основних абстракцій, або головних термінів, що використовуються у 
задачах. 
 18 
ЧДТУ 242241.003ПЗ 
Ці терміни, відомі як доменні об'єкти, є основою для створення моделі на 
ранніх етапах аналізу та проектування, де всі доменні об'єкти представлені на 
одній об'ємній діаграмі класів. Відповідно до UML, модель предметної області 
реалізується у формі діаграми класів, але зазвичай в ній опускаються деталі, такі 
як атрибути та операції класів. Такий підхід дозволяє вважати її спрощеною 
версією діаграми класів, яка виступає в ролі візуального словника важливих 
абстракцій, або словника предметної області. 
Словник предметної області часто визначається як основний артефакт у 
рамках об'єктно-орієнтованого аналізу та проектування. Експерти у галузі 
об'єктно-орієнтованого підходу підкреслюють його значення як фундаментальну 
основу для аналізу і проектування, з якою автори сценаріїв використання можуть 
працювати у подальших етапах розробки. 
Словник предметної області – часто визначається як основний артефакт у 
рамках об'єктно-орієнтованого аналізу та проектування. Експерти у галузі 
об'єктно-орієнтованого підходу підкреслюють його значення як фундаментальну 
основу для аналізу і проектування, з якою автори сценаріїв використання можуть 
працювати у подальших етапах розробки. 
2.1.2 Елементи моделювання предметної області 
У процесі розробки об'єктно-орієнтованих систем, структура програмного 
коду формується за допомогою класів, які представляють узагальнені об'єкти. 
Об'єкти, що мають однакові структури даних та поведінку, класифікуються і 
об'єднуються у класи. Перед початком програмування необхідно визначити 
необхідні класи, для чого створюються одна або декілька діаграм класів. Цей крок 
є першим етапом у створенні повноцінної діаграми класів, що відображає систему 
в цілому, і з часом діаграми доповнюються та уточнюються у відповідності до 
розроблюваних сценаріїв використання. 
Модель предметної області має бути розроблена до формулювання 
сценаріїв використання для уникнення повторення понять. Якщо подібні терміни 
зустрічаються у текстах сценаріїв, їх значно складніше ідентифікувати, ніж у 
вихідному словнику проекту. Така модель, що являє собою діаграму класів на 
 19 
ЧДТУ 242241.003ПЗ 
аналітичному рівні, служить першим наближенням до статичної структури 
системи. 
Системні вимоги зазвичай формулюються у формі тверджень про те, що 
система повинна чи не повинна виконувати. Основними джерелами для класів 
можуть бути високорівневі описи завдань, деталізовані вимоги, сценарії 
використання та експертна оцінка завдання. Подальше уточнення списку 
передбачає перетворення іменників і іменних груп в об'єкти і атрибути, а дієслова 
і дієслівні групи в операції та асоціації. Родовий відмінок іменників може 
вказувати на те, що вони повинні бути атрибутами, а не окремими об'єктами. 
Для візуалізації і структурування цього процесу використовується мова 
UML. Для діаграм мови UML існують три типи візуальних позначень: графічні 
символи, зв’язки (єднальні елементи),  текст (рисунок 2.1-2.2). 
 Для генерації UML-діаграм на основі мови PlantUML був використаний 
онлайн-інструмент PlantUML Web Server – [16] 
 
Таблиця 2.1 
Візуальні позначення UML 
Графічний символ Назва елемента 
Актор (Користувач) 
 
Пакет 
 
Клас 
 
Обʼєкт 
 
 
 
 
 20 
ЧДТУ 242241.003ПЗ 
Продовження таблиці 2.1 
Елемент 
 
Асоціація 
 
Агрегація 
 
Композиція 
 
Залежність 
 
Успадкування 
 
 
При створенні програмного забезпечення для кваліфікаційної роботи 
необхідно активно застосовувати основні діаграми UML. Це дозволить ефективно 
здійснити моделювання предметної області, розробку і аналіз системних вимог, а 
також визначити логічну та фізичну структури і поведінку системи. 
В процесі ідентифікації об'єктів в межах предметної області необхідно 
розпізнати існуючі між ними зв'язки. Особлива увага приділяється двом типам 
відносин: узагальнення (ієрархічні відносини типу «є», позначені символом <|––) 
 21 
ЧДТУ 242241.003ПЗ 
та агрегація (відносини типу «має», позначені символом <>––). Хоча можуть бути 
й інші асоціації між класами, ці два типи є основоположними для формування 
моделі предметної області, яка згодом стане основою для статичної моделі 
діаграми класів. 
Завершена модель предметної області має адекватно представляти статичні 
аспекти завдань, схожі на діаграми «сутність-зв'язок», які часто 
використовуються при моделюванні баз даних. Це включає деталізоване 
представлення асоціацій між класами. 
Побудова початкової моделі не повинна займати багато часу і слід 
завершити її якнайшвидше, щоб потім мати можливість її модифікувати 
відповідно до розвитку проекту. Класи в UML служать контейнерами для 
атрибутів та операцій, проте на ранньому етапі моделювання акцент робиться на 
виявленні ключових об'єктів та відносин, а не на деталізації атрибутів чи 
операцій. 
2.1.3 Робоча область моделювання 
Визначена робоча область моделювання представляє собою ключовий 
сегмент системи BibleGym, який зосереджений на процесах взаємодії 
користувачів з додатком, включаючи читання, тестування, відгуки та відстеження 
прогресу. Ці процеси є важливими через їхнє центральне розташування в освітній 
системі та їхні тісні взаємозв'язки з іншими модулями. 
Моделювання в цій сфері спрямоване на підвищення ефективності цих 
ключових процесів шляхом автоматизації рутинних завдань і інтеграції нових 
функцій, що покращують досвід користувача та точність збереження даних про 
прогрес. Для структуризації і візуалізації процесів було застосовано інструмент 
UML (Unified Modeling Language), який значно полегшує взаєморозуміння серед 
учасників проекту. 
Принципи моделювання, що використовуються, охоплюють точність для 
відповідності моделі реальним процесам, деталізацію, що допомагає уникнути 
прогалин у ключових функціях, і масштабованість, що дозволяє системі 
адаптуватися до змін. 
 22 
ЧДТУ 242241.003ПЗ 
Залучення заінтересованих сторін, таких як користувачі додатка та освітні 
експерти, є критичним. Їхні вхідні дані і зворотній зв'язок забезпечують 
відповідність моделі освітнім вимогам і очікуванням. 
Оцінка і валідація моделі проводяться через тестування з використанням 
реальних даних, що дозволяє виявити та усунути будь-які недоліки перед 
запуском системи на повну потужність. 
2.2 Формування та аналіз вимог 
У цьому розділі здійснено дослідження вимог до продукту. Встановлено 
основні та додаткові вимоги, а також розглянуто очікування замовника та 
розробника, включаючи функціональні та нефункціональні аспекти. 
2.2.1. Формування вимог до програмного забезпечення. Первинні і детальні 
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні 
вимоги 
Формування вимог до програмного забезпечення  
Опис предметної області: 
Користувач: Модуль, що відповідає за автентифікацію користувачів у 
системі. Користувачі можуть входити та виходити з системи, використовуючи цей 
модуль. 
BibleGym: Основний пакет, що включає кілька підсистем, кожна з яких 
виконує певні функції для вивчення Біблії. 
Книги Біблії: модуль, що дозволяє користувачам обирати книги, читати їх 
розділи та вірші. 
Тести: модуль для створення та проходження тестів після читання розділів 
Біблії, а також зберігання результатів. 
Прогрес користувача: модуль для відстеження прогресу користувачів у 
вивченні Біблії, збереження їхніх досягнень. 
Відгуки: модуль, що дозволяє користувачам залишати відгуки та коментарі. 
Адмін панель: модуль для управління контентом, включаючи питання до 
тестів та моніторинг прогресу користувачів. 
Функціональні вимоги: 
 23 
ЧДТУ 242241.003ПЗ 
Система повинна дозволяти користувачам обирати книги Біблії для 
читання. 
Після завершення розділу користувачі повинні мати можливість пройти 
тестування. 
Прогрес користувачів у вивченні Біблії має зберігатися і бути доступним 
для перегляду. 
Користувачі повинні мати можливість залишати відгуки. 
Адмін панель повинна дозволяти адміністратору керувати питаннями для 
тестів і моніторити прогрес користувачів. 
Нефункціональні вимоги: 
Продуктивність: Система повинна забезпечувати швидкий відгук на дії 
користувачів. 
Безпека: Система повинна забезпечувати захист даних користувачів і їхніх 
прогресів. 
Масштабованість: Система повинна підтримувати можливість додавання 
нових функцій без значних змін у коді. 
Надійність: Система повинна забезпечувати безперервну роботу без частих 
збоїв. 
Зручність використання: Інтерфейс повинен бути інтуїтивно зрозумілим для 
користувачів різних вікових категорій. 
Підтримка та оновлення: Розробник повинен забезпечувати регулярне 
оновлення та технічну підтримку програмного забезпечення. 
Цей опис предметної області BibleGym надає загальне уявлення про різні 
модулі системи та їх функціональні можливості, допомагаючи зрозуміти, як 
система інтегрується для підтримки навчального процесу користувачів. 
ВИМОГИ ЗАМОВНИКА 
ПЗ повинно представляти собою застосунок для інтерактивного вивчення 
Біблії для підлітків та молоді. Вимоги включають  можливість читати книги 
Біблії, проходження тестування після читання розділу, зберігання прогресу 
 24 
ЧДТУ 242241.003ПЗ 
користувача у вивченні, менеджмент питань через адмін панель, створення питань 
за допомогою штучного інтелекту. 
ВИМОГИ РОЗРОБНИКА 
1 Читання Біблії: 
1 Інтерфейс для читання: Система повинна забезпечувати користувачам 
можливість читати тексти Біблії, підтримуючи різні переклади і версії. 
2 Навігація по книгам і розділам: Необхідно реалізувати зручну навігацію 
по книгам і розділам Біблії. 
2 Тестування та квізи: 
1 Генерація питань: Система має включати інструментарій для 
автоматичної генерації питань за допомогою штучного інтелекту на 
основі прочитаних розділів. 
2 Оцінювання та зворотній зв'язок: Після проходження тестування 
користувач повинен отримувати зворотний зв'язок з поясненнями 
відповідей. 
3 Керування користувацьким прогресом: 
1 Зберігання даних: Система повинна ефективно зберігати інформацію 
про прогрес користувачів, включаючи завершені розділи і результати 
тестів. 
2 Інтерфейс для користувача: Має бути зручний інтерфейс для перегляду 
індивідуального прогресу. 
4 Адміністративний панель: 
1 Керування контентом: Адміністратори повинні мати можливість 
додавати, редагувати і видаляти питання та текстовий контент через 
адмін панель. 
2 Керування користувачами: Необхідні інструменти для керування 
правами користувачів і стеження за їх активністю. 
5 Безпека та приватність: 
1 Захист даних: Важливо забезпечити захист персональних даних 
користувачів і їхньої активності від несанкціонованого доступу. 
 25 
ЧДТУ 242241.003ПЗ 
2 Резервне копіювання даних: Система має регулярно виконувати 
резервне копіювання даних для запобігання втраті інформації. 
Ці вимоги розробника забезпечать створення повноцінного, безпечного та 
ефективного застосунку для інтерактивного вивчення Біблії, спрямованого на 
підлітків та молодь, відповідаючи основним вимогам замовника. 
Нефункціональні вимоги 
1 Безпека: 
1 Забезпечення конфіденційності: Запровадження заходів для охорони 
приватних даних користувачів від неавторизованого доступу. 
2 Регулювання доступу: Налаштування системних протоколів для 
диференційованого доступу користувачів до функціоналу і даних. 
2 Масштабованість: 
1 Розширення ресурсів: Підтримка додавання обладнання або серверів для 
збільшення оброблювальної потужності. 
2 Модульність архітектури: Введення гнучкої архітектури, що дозволяє 
легко інтегрувати додаткові модулі. 
3 Продуктивність: 
1 Швидкість обробки запитів: Забезпечення миттєвої відповіді системи на 
запити користувачів. 
2 Обробка об'ємних даних: Здатність системи ефективно працювати з 
великими обсягами інформації. 
4 Надійність: 
1 Стабільність системи: Запровадження заходів для забезпечення 
безперервної роботи системи. 
2 Відновлення після збоїв: Реалізація процедур швидкого відновлення 
даних та системи після збоїв. 
5 Зручність використання: 
1 Дружній інтерфейс: Розробка зрозумілого інтерфейсу, призначеного для 
забезпечення комфортної роботи користувачів. 
 26 
ЧДТУ 242241.003ПЗ 
2 Доступність документації: Надання чітких інструкцій і посібників для 
користувачів та адміністраторів. 
Ці нефункціональні вимоги забезпечують створення ефективної та надійної 
платформи, яка адекватно відповідає потребам користувачів і адміністраторів, 
підтримуючи високий рівень безпеки та доступності. 
2.2.2 Формування вимог за допомогою діаграми прецедентів  
 
 
Рис. 2.2 - діаграма прецедентів вимог до системи 
 
1 Читати Біблію: 
1.1. Користувач може переглядати та читати різні книги Біблії. 
1.2. Перегляд текстів з можливістю зміни розміру шрифту та фону для 
кращого читання. 
2 Проходити тести: 
 27 
ЧДТУ 242241.003ПЗ 
1 Після читання розділів користувач проходить тести для перевірки 
засвоєних знань. 
2 Відображення питань з варіантами відповідей, автоматичне оцінювання. 
3 Зберігати прогрес навчання: 
1 Система автоматично зберігає інформацію про прогрес користувача у 
вивченні, включаючи закінчені розділи і результати тестів. 
2 Можливість перегляду історії навчання та продовження з місця зупинки. 
4 Управління користувацькими питаннями через адмін панель: 
1 Адміністратор може керувати базою питань для тестів, додавати, 
видаляти чи редагувати питання. 
2 Можливість здійснювати імпорт та експорт питань з/у зовнішніх файлів. 
5 Створення питань за допомогою ШІ: 
1 Система використовує алгоритми штучного інтелекту для 
автоматичного генерування нових питань на основі текстів Біблії. 
2 Перевірка та адаптація згенерованих питань перед їхнім включенням у 
тести. 
2.3 Проектування логічної структури програмного комплексу 
При створенні логічної структури нашої розробки ми використали діаграму 
класів для візуального представлення основних функціональних модулів 
програми. 
2.3.1 Діаграми класів 
− Клас Користувач (User): 
− username: Ім'я користувача (тип String). 
− password: Пароль користувача (тип String). 
− login: Метод для входу в систему. 
− logout: Метод для виходу з системи. 
− Клас Книга (Book): 
− book_number: Номер книги (тип Number). 
− short_name: Коротка назва книги (тип String). 
− long_name: Довга назва книги (тип String). 
 28 
ЧДТУ 242241.003ПЗ 
− book_color: Колір книги (тип String). 
− sorting_order: Порядок сортування (тип Number). 
− chapters_count: Кількість розділів (тип Number). 
− active: Статус активності книги (тип Boolean). 
− Клас Питання (Question): 
− text: Текст питання (тип String). 
− isGeneratedWithAi: Чи створено з використанням ШІ (тип Boolean). 
− answers: Масив відповідей, де кожна відповідь містить текст та 
прапорець правильності. 
− book: Посилання на книгу (тип String, зв'язок з Book). 
− chapter: Номер розділу (тип Number). 
− verse: Масив посилань на вірші (тип String, зв'язок з Verse). 
− priority: Пріоритет питання (тип Number). 
− Клас Тест (Test): 
− answers: Масив відповідей, де кожна відповідь містить ID питання та 
прапорець правильності. 
− isCompleted: Статус завершеності тесту (тип Boolean). 
− user: Посилання на користувача (тип String, зв'язок з User). 
− book: Посилання на книгу (тип String, зв'язок з Book). 
− chapterNumber: Номер розділу (тип Number). 
− Клас Адміністратор (Admin): 
− Наслідує всі властивості та методи класу User. 
− manageUsers(): Метод для управління користувачами. 
− generateReports(): Метод для генерації звітів. 
− Клас Прогресу Користувача по Книзі (UserBookProgress): 
− user: Посилання на користувача (тип String, зв'язок з User). 
− book: Посилання на книгу (тип String, зв'язок з Book). 
− currentChapter: Поточний розділ (тип Number). 
− progress: Прогрес відсотках (тип Number). 
 29 
ЧДТУ 242241.003ПЗ 
− Клас Прогресу Користувача по Розділу (UserChapterProgress): 
− userBookProgress: Посилання на прогрес користувача по книзі (тип 
String, зв'язок з UserBookProgress). 
− chapter: Номер розділу (тип Number). 
− completed: Статус завершеності (тип Boolean). 
 
 
Рис. 2.3 - діаграма класів 
 
2.3.2 Діаграми пакетів  
Діаграма пакетів відображає логічну структуру програмної системи, 
організовану у вигляді модулів або пакетів. Вона ілюструє, як різні компоненти 
програмного забезпечення згруповані в пакети, і демонструє їхні взаємозв'язки та 
залежності. Це дозволяє краще зрозуміти, як організована система, які модулі 
взаємодіють між собою та як вони розподілені. 
 30 
ЧДТУ 242241.003ПЗ 
 
 
 
Рис. 2.4 - діаграма пакетів структури проєкту 
 
2.4 Архітектурне проектування 
У рамках архітектурного проектування для логічного зображення та аналізу 
структури системи і взаємодій між її складовими частинами використовувалася 
діаграма компонентів (Рис. 2.5). Ця діаграма ілюструє логічну архітектуру 
системи, виражену через пакети, програмні класи та підсистеми на вищому рівні 
абстракції. Опис архітектури програми включає детальну інформацію про 
підсистеми та їх взаємозв'язки в рамках об'єктно-орієнтованої декомпозиції 
системи. 
2.4.1 Діаграма компонентів 
Через діаграму компонентів виражено архітектуру, внутрішню будову та 
залежності між модулями системи, які репрезентують окремі модульні та 
автономні сегменти проекту із замкненим функціоналом. Внутрішні деталі 
кожного компоненту приховані та захищені від зовнішнього доступу, окрім 
інтерфейсів, які забезпечують взаємодію між ними. Зв'язки між компонентами 
встановлені так, що вони можуть функціонувати незалежно від зовнішніх 
чинників. 
 31 
ЧДТУ 242241.003ПЗ 
 
 
 
 
Рис. 2.5 - діаграма компонентів програми 
 
 32 
ЧДТУ 242241.003ПЗ 
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма 
розгортання 
Діаграма розгортання відображає фізичну архітектуру системи, ілюструючи 
взаємодію між ключовими компонентами для забезпечення її функціонування. Ця 
діаграма охоплює всі важливі фізичні ресурси, включаючи сервери для веб-
додатків, сервери баз даних та файлові сервери, забезпечуючи стабільну та 
ефективну інфраструктуру для операцій системи. Використання хмарних серверів 
AWS зумовлено їх високою надійністю та широкими можливостями 
масштабування. 
 
 
 33 
ЧДТУ 242241.003ПЗ 
Рис. 2.6 - діаграма розгортання системи на апаратних засобах  
 
2.5 Моделювання поведінки системи 
Для точного відображення поведінки нашої системи ми застосували 
діаграми діяльності, діаграми взаємодій та діаграми скінченного автомата. Ці 
інструменти допомогли нам сформувати поведінкову модель, яка відображає 
динаміку взаємодії об'єктів системи через обмін повідомленнями та виконання 
операцій. 
Опис взаємодії між компонентами системи було реалізовано за допомогою 
діаграм діяльності, які показують потоки виконання операцій, діаграм 
послідовності для відображення порядку обміну повідомленнями між об'єктами, а 
також діаграм комунікації для візуалізації взаємодій на рівні зв'язків. Також ми 
використовували діаграми скінченного автомату для представлення станів 
системи та їх переходів відповідно до зовнішніх подій або внутрішніх умов. 
Ці діаграми разом створюють повний і зрозумілий опис поведінкових 
аспектів системи, дозволяючи ефективно керувати розробкою та впровадженням, 
а також гарантуючи високу якість кінцевого продукту. 
2.5.1 Діаграма діяльності 
Діаграма діяльності зображує детальний процес користувача під час 
інтерактивного вивчення Біблії за допомогою розробленого веб-застосунку. Вона 
включає етапи від вибору конкретного розділу Біблії до тестування та збереження 
прогресу. Користувач починає з вибору розділу, який він хоче вивчати, після чого 
переходить до читання тексту. Прочитавши розділ, користувач може приступити 
до тестування своїх знань. 
Якщо користувач не успішно проходить тест, система дозволяє йому 
повернутися до читання розділу для повторного вивчення матеріалу. Це 
забезпечує можливість додаткового засвоєння інформації та кращої підготовки до 
повторного тестування. У разі успішного проходження тесту прогрес користувача 
автоматично зберігається в системі, що дозволяє відстежувати його навчання та 
продовжувати з того місця, де він зупинився. 
 34 
ЧДТУ 242241.003ПЗ 
Діаграма також підкреслює важливість механізму збереження прогресу, 
який забезпечує безперервність навчального процесу та підтримує мотивацію 
користувача до вивчення. Завдяки цьому користувач може поступово переходити 
від одного розділу до іншого, маючи чітке уявлення про свої досягнення та 
необхідні кроки для подальшого розвитку. 
 
Рис. 2.7 - Діаграма діяльності 
 
 35 
ЧДТУ 242241.003ПЗ 
2.5.2 Діаграма послідовності 
Діаграма послідовності використовується для детального зображення 
взаємодії між системою і користувачем під час вибору та проходження тесту. 
Вона показує, як користувацькі запити обробляються через різні шари системи, 
включаючи веб-інтерфейс, серверну логіку, та базу даних. Це допомагає розуміти, 
як дані проходять через систему та як відбувається обмін інформацією. 
 
 
Рис. 2.8 - Діаграма послідовності 
 36 
ЧДТУ 242241.003ПЗ 
2.5.3 Діаграма комунікації  
Діаграма комунікації у проекті відображає взаємодію між компонентами 
системи при збереженні прогресу користувача. Вона використовується для 
ілюстрації потоку даних між користувачем, веб-інтерфейсом, сервером, та базою 
даних, що дозволяє чітко відстежувати логіку збереження даних та їхнього 
оброблення. 
 
Рис. 2.8 - Діаграма комунікації 
 
2.5.4 Діаграма скінченного автомату 
Діаграма скінченного автомату демонструє різні стани користувацького 
сеансу в системі, включаючи авторизацію, читання, тестування та вихід з системи. 
Ця діаграма допомагає визначити можливі стани, які користувач може досягти під 
час інтеракції з системою, а також визначає переходи між цими станами, що 
забезпечують плавний перехід та інтуїтивне керування процесами. 
 
 37 
ЧДТУ 242241.003ПЗ 
 
Рис. 2.9 - Діаграма скінченного автомату 
 38 
ЧДТУ 242241.003ПЗ 
Висновки до розділу 
У цьому розділі було детально розглянуто ключові аспекти впровадження 
результатів досліджень у практику проектування програмного забезпечення для 
інтерактивного вивчення Біблії. На основі аналізу та узагальнення досліджень 
були запропоновані методи та підходи, які сприяють підвищенню ефективності та 
якості розробки інформаційних систем. 
Важливим результатом є впровадження гнучкої методології розробки, яка 
дозволяє швидко адаптуватися до змін вимог і забезпечує тісну взаємодію з 
користувачами. Також було акцентовано увагу на значущості використання 
сучасних хмарних технологій і сервісів, що дозволяють забезпечити 
масштабованість і надійність програмного забезпечення для вивчення Біблії. Було 
висвітлено значення інтеграції інструментів контролю версій, таких як Git, для 
управління кодом та координації командної роботи. 
Загалом, впровадження наукових досліджень у практику проектування 
програмного забезпечення сприяло створенню більш ефективних, надійних та 
гнучких рішень, що відповідають сучасним вимогам і тенденціям у галузі 
розробки інтерактивних освітніх систем. 
 
 39 
ЧДТУ 242241.003ПЗ 
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО 
ЗАБЕЗПЕЧЕННЯ 
Процес розробки програмного забезпечення здійснювався за допомогою 
сучасних методологій агільної розробки, використання хмарних сервісів та 
технологій для створення веб-сервісів. 
3.1 Розробка програмного комплексу 
− docker-сompose для оркестрації контейнерів: Використання Docker 
Compose дозволяє легко налаштувати та управляти декількома 
контейнерами, які виконують різні ролі в рамках одного проекту. 
− Node.js і Express.js для серверної частини: Ці технології 
використовуються для створення масштабованих мережевих додатків. 
Express.js, мінімалістичний веб-фреймворк для Node.js, спрощує роботу 
з маршрутизацією та обробкою запитів. 
− React.js і React Native для клієнтської частини: React.js 
використовується для розробки інтерактивного користувацького 
інтерфейсу веб-додатків, тоді як React Native дозволяє розробляти 
нативні мобільні додатки на JavaScript. 
− MongoDB для бази даних: Документо-орієнтована база даних MongoDB 
ідеально підходить для зберігання структурованих даних з можливістю 
легкого масштабування. 
3.1.1 Обґрунтування вибору засобів реалізації 
Docker Compose використовується для оркестрації множини контейнерів, 
які виконують різні сервіси в рамках нашого проекту. Цей інструмент дозволяє 
визначати та запускати мульти-контейнерні додатки за допомогою одного файлу 
конфігурації. 
Переваги: Забезпечує консистентність середовища розробки, тестування та 
продукції; підтримує модульність і ізоляцію компонентів; спрощує процеси 
масштабування та розгортання. 
 40 
ЧДТУ 242241.003ПЗ 
Git надає високоефективні можливості для моніторингу модифікацій у 
програмному коді, дозволяючи управляти різними версіями додатка. Він сприяє 
колаборації серед розробників, забезпечуючи можливість паралельної роботи над 
окремими сегментами проекту без ризику конфліктів. Крім того, Git дозволяє 
ефективно створювати бекапи коду і швидко відновлювати попередні стани в разі 
виявлення помилок. 
Node.js використовується як серверна платформа, що дозволяє виконувати 
JavaScript на сервері. Express.js є легким фреймворком, що надбудовується на 
Node.js та спрощує розробку веб-додатків за рахунок зручного API для обробки 
запитів та маршрутизації. 
Переваги: Висока продуктивність завдяки асинхронній природі Node.js; 
зниження затримки та збільшення пропускної спроможності сервера; об'єднання 
мови програмування для клієнтської та серверної частини. 
React.js використовується для створення інтерактивних та динамічних веб-
інтерфейсів. React Native дозволяє розширити межі веб-розробки на розробку 
нативних мобільних додатків за допомогою того ж API. 
Переваги: Поліпшене взаємодію з користувачем завдяки швидкій реакції на 
взаємодії; реюзабельність компонентів; однаковий програмний досвід для 
розробників на різних платформах. 
MongoDB — це NoSQL база даних, яка зберігає дані у форматі документів, 
що дозволяє легко інтегрувати дані в додаток без потреби у складних SQL 
запитах. 
Переваги: Гнучка схема документів, що дозволяє швидко модифікувати 
структуру даних; масштабованість та висока доступність; підтримка великої 
кількості операцій читання та запису. 
3.1.2 Опис структурної (функціональної) схеми 
Структурна схема показує основні компоненти програмної системи, їхні 
функції та взаємозв'язки між ними. Вона допомагає зрозуміти, як різні частини 
системи взаємодіють, щоб забезпечити її функціонування та досягнення 
поставлених цілей. 
 41 
ЧДТУ 242241.003ПЗ 
Ця схема відображає основні компоненти системи BibleGym, їхні 
функціональні елементи та зв'язки між ними. Вона ілюструє, як окремі частини 
системи працюють разом для досягнення освітніх цілей та забезпечення 
ефективної роботи додатку. 
Діаграма підсистем BibleGym наочно демонструє ключові функціональні 
компоненти системи та їхні взаємозв'язки. Вона показує, як різні підсистеми 
взаємодіють для ефективного управління користувачами, контентом, тестами, 
відгуками та прогресом користувачів. Це дозволяє зрозуміти, як кожна підсистема 
сприяє досягненню загальних цілей системи та як вони взаємодіють для 
забезпечення цілісного функціонування BibleGym. 
 
 
Рисунок 3.1.1 - Структурна схема системи BibleGym 
 42 
ЧДТУ 242241.003ПЗ 
 
Рисунок 3.1.2 - Функціональна схема системи BibleGym 
 
3.1.3 Опис логічної схеми системи 
Логічна схема системи BibleGym забезпечує цілісність і узгодженість даних 
між різними модулями, що дозволяє ефективно управляти всіма аспектами 
освітнього процесу в додатку. Кожен модуль системи інтегрований з іншими, що 
забезпечує безперебійну передачу даних і узгодженість інформації. Наприклад, 
дані, введені користувачами у модулі книг Біблії, автоматично оновлюються в 
модулях тестів і прогресу користувача, що дозволяє забезпечити точність обліку 
та уникнути дублювання даних. Модуль зворотного зв'язку інтегрується з 
 43 
ЧДТУ 242241.003ПЗ 
модулями книг Біблії та тестів, забезпечуючи повний контроль над взаємодіями з 
користувачами і відповідними освітніми операціями. 
Крім того, інтеграція модулів книг Біблії та прогресу користувача дозволяє 
оптимізувати процес вивчення, забезпечуючи своєчасне оновлення інформації про 
досягнення користувачів. Модуль тестів збирає дані з усіх інших модулів для 
створення комплексних звітів про навчальний прогрес, що відображають повний 
стан засвоєння матеріалу користувачами. Це дозволяє адміністраторам системи 
приймати обґрунтовані рішення на основі актуальних та точних даних. 
Завдяки своїй гнучкій і масштабованій архітектурі, створена система 
BibleGym може бути легко адаптована до потреб різних груп користувачів 
незалежно від їхнього віку та рівня знань. Інтеграція з зовнішніми системами, 
такими як платформи онлайн-навчання і системи управління контентом, 
додатково розширює функціональні можливості системи, дозволяючи ефективно 
управляти всіма аспектами освітнього процесу в єдиному програмному 
середовищі. 
3.1.4 Розробка бази даних 
Колекція User: 
− _id: MongoDB унікальний ідентифікатор. 
− username: Ім'я користувача. 
− email: Електронна пошта. 
− password: Хеш пароля. 
− createdAt: Час створення облікового запису. 
− updatedAt: Час оновлення облікового запису. 
Колекція Admin (яка наслідується від User): 
− _id: MongoDB унікальний ідентифікатор. 
− username: Ім'я користувача. 
− email: Електронна пошта користувача. 
− password: Хеш пароля. 
− createdAt: Час створення облікового запису. 
− updatedAt: Час оновлення облікового запису. 
 44 
ЧДТУ 242241.003ПЗ 
Колекція Book: 
− _id: MongoDB унікальний ідентифікатор. 
− title: Назва книги. 
− description: Опис книги. 
− totalChapters: Загальна кількість розділів у книзі. 
− createdAt: Час створення книги. 
− updatedAt: Час оновлення книги. 
Колекція Verse: 
− _id: MongoDB унікальний ідентифікатор. 
− bookId: Ідентифікатор книги. 
− chapter: Номер розділу. 
− verse: Номер вірша. 
− text: Текст вірша. 
Колекція Question: 
− _id: MongoDB унікальний ідентифікатор. 
− bookId: Ідентифікатор книги. 
− chapter: Номер розділу. 
− verse: Номер вірша. 
− text: Текст питання. 
− options: Масив варіантів відповідей. 
− correctAnswer: Індекс правильної відповіді. 
Колекція Feedback: 
− _id: MongoDB унікальний ідентифікатор. 
− userId: Ідентифікатор користувача, який залишив відгук. 
− content: Зміст відгуку. 
− createdAt: Час створення відгуку. 
Колекція UserBookProgress: 
− _id: MongoDB унікальний ідентифікатор. 
− userId: Ідентифікатор користувача. 
 45 
ЧДТУ 242241.003ПЗ 
− bookId: Ідентифікатор книги. 
− progress: Прогрес користувача у вивченні книги у відсотках. 
Колекція UserChapterProgress: 
− _id: MongoDB унікальний ідентифікатор. 
− userId: Ідентифікатор користувача. 
− chapterId: Ідентифікатор розділу. 
− progress: Прогрес користувача у вивченні розділу у відсотках. 
3.1.5 Розробка інтерфейсу користувача 
У процесі планування ми заздалегідь розглянули потенційні вимоги 
користувачів, які можуть виникнути на ранніх стадіях використання системи. 
Основні екрани інтерфейсу: 
Екрани реєстрації та авторизації: 
Автентифікація: Користувачам пропонується зареєструватися або ввійти 
використовуючи електронну пошту та пароль, або за допомогою сторонніх 
сервісів (Google, Facebook, Apple). Це забезпечує зручність та швидкість доступу, 
оскільки багато користувачів вважають за краще використовувати вже існуючі 
аккаунти для нових застосунків. 
Запам'ятовування даних: Надано опцію для збереження паролю, що спрощує 
подальші входи в систему. 
Відновлення паролю: Присутня можливість відновлення забутого паролю, що є 
важливим аспектом підтримки користувачів. 
Вітальна сторінка: Нових користувачів вітає сторінка з виразним 
логотипом BibleGYM та анімацією, що вказує на процес завантаження. Це 
створює позитивне перше враження і налаштовує користувачів на взаємодію з 
програмою. 
Інструкції для новачків: Після реєстрації користувачі отримують короткий огляд 
основних функцій програми, таких як читання Біблії, проходження тестів та 
перегляд особистого прогресу. Це допомагає користувачам швидше адаптуватися 
та розпочати використання програми. 
 
 46 
ЧДТУ 242241.003ПЗ 
 
Рисунок 3.2 - Проходження онбордингу 
 
 
Рисунок 3.3 - Процес автентифікації користувача 
 47 
ЧДТУ 242241.003ПЗ 
Вибір книги для читання 
На сторінці вибору книги для читання в застосунку BibleGYM користувачі 
зустрічаються з добре організованим та зрозумілим інтерфейсом, який сприяє 
легкому доступу до багатого каталогу біблійних книг. Ця сторінка розділена на 
дві основні секції: одна для "Старого Заповіту" та одна для "Нового Заповіту", 
кожна з яких містить список доступних книг. 
Основні елементи інтерфейсу: 
Навігація по категоріях: Користувачі можуть вибрати між двома 
основними категоріями книг — Старий Заповіт та Новий Заповіт, що забезпечує 
структурований підхід до вибору читання. 
Список книг: Кожна категорія містить чітко організований список книг, що 
дозволяє користувачам легко знаходити і вибирати книги для читання. 
Візуальні елементи: 
Іконки книг: Кожна книга представлена іконкою, яка забезпечує візуальне 
відображення змісту чи теми книги, роблячи вибір більш інтуїтивним. 
Інформативні модальні вікна: При спробі вибору книги, яка ще не 
доступна або знаходиться в розробці, з'являється модальне вікно з повідомленням 
про статус книги та заохоченням спробувати іншу. Це допомагає утримувати 
інтерес та взаємодію користувачів. 
Функціональність: Прямий доступ до читання: Після вибору книги 
користувач може безпосередньо перейти до читання, натиснувши кнопку, яка 
з'являється у спливаючому вікні. Це забезпечує плавний перехід від вибору до дії. 
Збереження прогресу: Система автоматично зберігає прогрес користувача, 
що дозволяє з легкістю повертатися до останнього місця читання. 
 
 
 48 
ЧДТУ 242241.003ПЗ 
 
Рисунок 3.4 - Вибір книги та попередження 
 
Екран прогресу та вибору розділу для читання: 
Основні компоненти: 
Інформаційний заголовок: Верхня частина екрана містить ім'я 
користувача та його фото, що робить інтерфейс більш персоналізованим.  
Іконка з сердечками показує кількість доступних життів, які можуть бути 
використані під час тестування, з можливістю їх відновлення через певний час, як 
показано на другому з трьох основних екранів. 
Прогрес у вивченні: Прогрес-бар на верхній панелі показує, скільки 
розділів вже пройдено у поточній книзі, що дозволяє користувачам легко оцінити 
свій загальний прогрес. Кожний розділ представлений у вигляді іконки на 
траєкторії навчання, з зірками та номерами для візуального представлення їх 
послідовності. 
Інтерактивні модальні вікна: При виборі розділу з'являється модальне 
вікно з додатковою інформацією та вибором дій, таких як "Почати тест" або 
 49 
ЧДТУ 242241.003ПЗ 
"Читати", що забезпечує користувачам можливість вибору способу інтеракції з 
матеріалом. 
 
 
Рисунок 3.5 - Прогрес користувача по розділу 
 
Сторінки читання розділу та нагадування про доброчесність 
Ці екрани демонструють інтерактивний інтерфейс, спеціалізований на 
навчанні та перевірці знань з Біблії. Ось детальний опис ключових компонентів і 
функціональності цих інтерфейсів: 
Читання розділу Біблії: 
Екран читання розділу відображає текст з Біблії, де користувачі можуть 
читати розділи за власним вибором. В даному випадку представлено розділ 
"Буття". 
Користувачам доступні засоби навігації для переходу між розділами або 
версіями тексту, а також додаткові функції, як-от підказки чи пояснення до 
текстів. 
Інтерактивний підхід до тестування: 
 50 
ЧДТУ 242241.003ПЗ 
Екран із закликом до доброчесності під час тестування містить 
застереження не використовувати зовнішні допомоги, такі як гугл або біблійні 
коментарі, для гарантування чесності результатів. 
Ця сторінка є передвісником тесту, що вимірює розуміння прочитаного 
розділу, з метою підвищення залучення та вдосконалення навчального досвіду. 
Ці екрани підкреслюють інноваційний підхід BibleGym до вивчення 
релігійних текстів, використовуючи інтерактивність і гейміфікацію для 
покращення залученості та освітнього результату. 
 
 
Рисунок 3.6 - Читання розділу 
 51 
ЧДТУ 242241.003ПЗ 
 
Рисунок 3.7 - Проходження тесту 
 
Сторінки з основним функціоналом тестування 
Сторінки, зображені на скріншотах, демонструють інтерактивний процес 
тестування в додатку BibleGym. Основні особливості цього процесу включають: 
Вибір питань тесту: На цих сторінках користувачі беруть участь у вікторині, 
де відповідають на запитання, пов'язані з конкретними розділами Біблії. Це 
допомагає зміцнити знання та розуміння тексту. 
Відображення правильних/неправильних відповідей: У разі неправильної 
відповіді система показує правильний варіант, допомагаючи користувачу 
навчитися на помилках та зберегти правильну інформацію. 
 52 
ЧДТУ 242241.003ПЗ 
Процес підтвердження завершення тесту: Користувачам надається 
можливість завершити тест або продовжити читання, що забезпечує гнучкість у 
навчальному процесі. 
Відображення результатів: Після завершення тесту користувачі отримують 
візуальне підтвердження своїх результатів, яке може включати подальше 
заохочення або запрошення спробувати ще раз, щоб покращити результат. 
Ці сторінки не тільки оцінюють знання користувачів, але й мотивують їх 
продовжувати вивчення, використовуючи дружній до користувача інтерфейс і 
стимулюючі відгуки. 
 
 
Рисунок 3.8 - Проходження тесту 
 53 
ЧДТУ 242241.003ПЗ 
 
Рисунок 3.9 - Результат тесту 
 54 
ЧДТУ 242241.003ПЗ 
Адмін панель 
Сторінка огляду всіх питань: 
Сторінка адміністративної панелі, на якій відображаються всі питання, що 
виводяться в додаток, має такі ключові компоненти та функціональності: 
Перелік питань: 
Таблиця зі списком питань: Всі питання, доступні для тестування, 
перераховані в таблиці. Кожен рядок таблиці представляє окреме питання з 
відповідними атрибутами. 
Поля даних: У таблиці містяться колонки з важливою інформацією, такою 
як текст питання, варіанти відповідей, правильна відповідь, розділ Біблії, до якого 
відноситься питання, та інші метадані. 
Фільтри та сортування: 
Фільтри: Можливість фільтрувати питання за різними критеріями, такими 
як розділ Біблії, складність питання, статус публікації (опубліковане або в 
чернетці), і т.д. 
Кнопка "Додати нове питання": Дозволяє адміністратору створити нове 
питання, вказавши всі необхідні дані та опції відповідей. 
Редагування питання: Можливість натискання на питання для редагування 
його тексту, варіантів відповідей, правильної відповіді, та інших атрибутів. 
Видалення питання: Опція видалення питання з бази даних, якщо воно 
більше не потрібне. 
Масові дії: 
Вибір декількох питань: Адміністратор може вибрати кілька питань 
одночасно для здійснення масових дій, таких як видалення або зміна статусу 
публікації. 
Ця сторінка адміністративної панелі є центральним місцем для управління 
контентом тестування в додатку, забезпечуючи адміністраторів всіма 
необхідними інструментами для ефективного керування питаннями та підтримки 
актуальності та точності навчального матеріалу. 
 
 55 
ЧДТУ 242241.003ПЗ 
 
Рисунок 3.9 - Управління питаннями 
 
Сторінка управління користувачами: 
Сторінка управління користувачами в адміністративній панелі додатку 
BibleGym надає централізований інтерфейс для перегляду та управління 
зареєстрованими користувачами. Ось детальний опис функціональності цієї 
сторінки: 
1 Інформаційний залоговок: 
− Загальна кількість користувачів: На верхній частині сторінки 
відображається загальна кількість зареєстрованих користувачів, що 
дає швидке уявлення про масштаб користувацької бази. 
2 Таблиця зареєстрованих користувачів: 
− Інформація про користувачів: Таблиця містить інформацію про 
кожного користувача, включаючи ім'я, дату створення (реєстрації) та 
електронну адресу. Це дозволяє адміністраторам легко ідентифікувати 
та управляти користувачами. 
− Функціонал управління: Адміністратори можуть здійснювати дії, 
такі як редагування деталей користувачів, зміна їхнього статусу 
(активний/неактивний), або навіть видалення користувачів з системи. 
 56 
ЧДТУ 242241.003ПЗ 
Кожен рядок має кнопку для взаємодії, яка відкриває доступ до цих 
функцій. 
3 Пошук та фільтрація: 
− Фільтри: Додаткові фільтри можуть бути застосовані для сортування 
користувачів за датою реєстрації або статусом, що дозволяє 
адміністраторам легше організовувати та керувати користувацькою 
базою відповідно до потреб. 
Ця сторінка є важливим інструментом для адміністрації та управління 
користувацькою базою, надаючи адміністраторам могутні засоби для контролю та 
оптимізації взаємодії з користувачами. 
 
 
Рисунок 3.10 - Управління користувачами 
 
Сторінка управління відгуками та електронними поштами: 
Сторінка "Зворотний зв'язок від користувачів" у адміністративній панелі 
BibleGym представляє важливий інструмент для моніторингу відгуків від 
користувачів. Ця сторінка візуально організована для легкого перегляду деталей 
користувачів та їхніх повідомлень, допомагаючи адміністраторам зрозуміти 
користувацький досвід та знайти потенційні області для покращення. Інформація, 
 57 
ЧДТУ 242241.003ПЗ 
яка відображається на цій сторінці, включає ім'я користувача, дату створення 
відгуку, електронну пошту, а також текст самого відгуку. 
Основні характеристики цієї сторінки: 
Список зареєстрованих відгуків: Центральна частина сторінки містить 
таблицю, де перелічені імена відправників (або їх відсутність, якщо відгук 
анонімний), їхні електронні адреси, дати надсилання відгуків та самі 
повідомлення. Це дозволяє адміністраторам швидко оцінювати та відповідати на 
користувацькі звернення. 
Пошукова панель: Зверху на сторінці розміщено пошукову панель, яка 
дозволяє фільтрувати відгуки за іменами або електронними адресами. Це спрощує 
навігацію по великій кількості даних та допомагає локалізувати конкретні 
відгуки. 
Інтерактивність інтерфейсу: Кожен рядок з відгуком може містити 
інтерактивні елементи, такі як кнопки для відповіді на відгуки або їх видалення. 
Це забезпечує ефективне управління зворотнім зв'язком без потреби залишати 
сторінку. 
Ця сторінка є ключовою для забезпечення високої якості користувацького 
досвіду, оскільки вона дозволяє адміністраторам збирати та аналізувати відгуки 
користувачів, що є важливим для постійного вдосконалення додатку. 
 
 
Рисунок 3.11 - Управління відгуками 
 58 
ЧДТУ 242241.003ПЗ 
3.1.6 Опис розробки програмних компонентів 
Призначення модуля тестування 
Модуль тестування в BibleGym створений для забезпечення інтерактивного 
вивчення Біблії шляхом проведення тестів після прочитання розділів. Основне 
завдання цього модуля — надавати користувачам можливість перевірити свої 
знання та закріпити вивчений матеріал. Цей модуль допомагає користувачам 
краще зрозуміти та запам'ятати прочитане, створюючи інтерактивний ігровий 
досвід з використанням різних типів тестових завдань. 
Зв’язки з іншими компонентами 
Модуль тестування інтегрується з іншими частинами системи BibleGym, 
такими як управління користувачами, збереження прогресу, менеджмент питань 
та створення питань за допомогою штучного інтелекту. Це забезпечує 
комплексний підхід до навчання, де дані про користувача та його прогрес можуть 
бути використані для персоналізації тестів. Наприклад, результати тестів 
зберігаються і аналізуються для надання користувачам зворотного зв'язку та 
рекомендацій щодо подальшого вивчення. 
Особливості реалізації алгоритму 
Реалізація алгоритму модуля тестування заснована на сучасних технологіях 
веб-розробки з використанням Node.js, Express.js і MongoDB. 
Збір даних: Вибірка питань для тестів з бази даних MongoDB з урахуванням 
рівня складності та попередніх результатів користувача. 
Обробка даних: Обробка відповідей користувачів у реальному часі з 
використанням Node.js і Express.js для забезпечення миттєвого зворотного зв'язку. 
Аналіз відповідей користувача для визначення правильних і неправильних 
відповідей. 
Форматування результатів: Підготовка результатів тестування та їх 
візуалізація у вигляді графіків або текстових звітів. Використання React.js для 
створення динамічних інтерфейсів, що відображають прогрес користувача та його 
досягнення. 
Приклади використання 
 59 
ЧДТУ 242241.003ПЗ 
Користувачі можуть проходити тести після кожного розділу, оцінювати свої 
знання та отримувати рекомендації щодо подальшого навчання. 
Адміністратори можуть додавати нові питання або редагувати існуючі за 
допомогою панелі адміністрування, що забезпечує актуальність і різноманітність 
тестового матеріалу. 
Система автоматично генерує питання за допомогою штучного інтелекту на 
основі аналізу тексту Біблії, що підвищує якість та релевантність тестів. 
Цей модуль є ключовою частиною системи BibleGym, забезпечуючи 
інтерактивний і ефективний процес навчання, що допомагає користувачам 
поглибити свої знання Біблії та підтримує їхню мотивацію до навчання. 
3.2 Тестування системи 
Тестування програмного забезпечення є критичним етапом у процесі 
розробки, що забезпечує підтвердження правильного виконання завдань системи. 
Тестування включає кілька основних типів: модульне, інтеграційне, системне та 
приймальне тестування. Модульне тестування перевіряє роботу окремих 
компонентів системи, виявляючи помилки на ранніх стадіях розробки. 
Інтеграційне тестування фокусується на взаємодії між модулями, забезпечуючи 
їхню сумісність і правильну передачу даних. Системне тестування охоплює всю 
систему в цілому, підтверджуючи її відповідність вимогам користувачів і бізнесу, 
а приймальне тестування забезпечує остаточне підтвердження готовності системи 
до реальної експлуатації за участю кінцевих користувачів. 
3.2.1. Модульне тестування 
Модульне тестування було проведено для перевірки основних елементів 
системи з метою підвищення якості коду. 
Приклад модульного тесту: 
const request = require('supertest'); 
const app = require('../app'); // Путь до основного додатку 
 
describe('Testing User Routes', () => { 
  it('should return a list of users', async () => { 
    const res = await request(app).get('/users'); 
 60 
ЧДТУ 242241.003ПЗ 
    expect(res.statusCode).toEqual(200); 
    expect(res.body).toHaveProperty('users'); 
  }); 
 
  it('should create a new user', async () => { 
    const res = await request(app).post('/users').send({ 
      username: 'testuser', 
      email: '[email protected]', 
      password: 'password' 
    }); 
    expect(res.statusCode).toEqual(201); 
    expect(res.body).toHaveProperty('user'); 
  }); 
}); 
Таблиця 3.1 
Результати модульного тестування 
Модуль  Результат 
index.js Успішний запуск 
ExpressLoader.js Успішне завантаження залежностей 
config.js Успішне завантаження залежностей 
config.json Успішне завантаження залежностей 
bibleModel.js Успішне завантаження залежностей 
bookModel.js Успішне завантаження залежностей 
userModel.js Успішне завантаження залежностей 
 
 
 61 
ЧДТУ 242241.003ПЗ 
Продовження таблиці 3.1 
progressModel.js Успішне завантаження залежностей 
routes Успішне завантаження залежностей 
 
3.2.2. Інтеграційне тестування 
BibleGym, як інтерактивна система для вивчення Біблії, включає кілька 
модулів, які взаємодіють для забезпечення злагодженої роботи всієї системи. 
Основні модулі системи включають: 
− Управління користувачами 
− Тестування і перевірка знань 
− Збереження і відстеження прогресу 
− Менеджмент питань 
− Адміністративна панель 
Таблиця 3.2 
Результати  інтеграційного тестування 
Компонент Результат 
index.js Успішний запуск 
ExpressLoader.js Успішне завантаження залежностей 
config.js Успішне завантаження залежностей 
config.json Успішне завантаження залежностей 
bibleModel.js Успішне завантаження залежностей 
bookModel.js Успішне завантаження залежностей 
 
 
 62 
ЧДТУ 242241.003ПЗ 
Продовження таблиці 3.2 
userModel.js Успішне завантаження залежностей 
progressModel.js Успішне завантаження залежностей 
routes Успішне завантаження залежностей 
 
3.2.3. Системне тестування 
Системне тестування складалося з таких етапів: 
− Функціональне тестування: Перевірка, чи всі функції системи працюють 
відповідно до специфікацій. Включало тестування створення, редагування 
та видалення записів, правильність оцінок, генерацію звітів та інші операції. 
− Тестування користувацького інтерфейсу: Перевірка зручності інтерфейсу 
для користувачів, правильність відображення та функціонування елементів. 
Було перевірено відповідність дизайну до специфікацій та відсутність 
графічних дефектів. 
− Тестування безпеки: Перевірка правильності обробки прав доступу, 
захисту даних користувачів, та вразливостей до атак, таких як SQL-ін'єкції 
або XSS. 
− Продуктивність та навантажувальне тестування: Перевірка поведінки 
системи під високим навантаженням. Моделювання ситуацій з великою 
кількістю одночасних запитів та вимірювання часу відповіді системи. 
− Таблиця 3.3 
− Результати  системного тестування 
Компонент Результат 
index.js Успішний запуск 
ExpressLoader.js Успішне завантаження залежностей 
 
 63 
ЧДТУ 242241.003ПЗ 
Продовження таблиці 3.3 
config.js Успішне завантаження залежностей 
config.json Успішне завантаження залежностей 
bibleModel.js Успішне завантаження залежностей 
bookModel.js Успішне завантаження залежностей 
userModel.js Успішне завантаження залежностей 
progressModel.js Успішне завантаження залежностей 
routes Успішне завантаження залежностей 
 
3.2.4. Приймальне тестування 
Приймальне тестування було успішно проведене для перевірки готовності 
системи до впровадження. Метою було підтвердити відповідність системи 
вимогам користувачів та бізнесу, а також її готовність до реального використання. 
На цьому етапі використовували як ручне тестування, так і тестування за 
участю кінцевих користувачів (User Acceptance Testing, UAT). Ручне тестування 
дозволило перевірити специфічні вимоги, що були складні для автоматизації. 
Залучення кінцевих користувачів забезпечило відповідність системи їхнім 
очікуванням та потребам. 
Були розроблені детальні сценарії тестування на основі вимог користувачів, 
включаючи типові та нетипові робочі процеси. Тестування проводилося за участю 
кінцевих користувачів, які виконували завдання згідно з розробленими 
сценаріями. Результати їхньої роботи були детально проаналізовані. 
Після збирання даних та зворотного зв'язку від користувачів, були внесені 
необхідні покращення. Результати показали, що продукт відповідає робочим 
 64 
ЧДТУ 242241.003ПЗ 
процесам та потребам користувачів, підтверджуючи його готовність до 
впровадження. 
Таким чином були протестовані і інші модулі системи, 
 
Таблиця 3.4 
Результати  приймального тестування 
Компонент Результат 
index.js Успішний запуск 
ExpressLoader.js Успішне завантаження залежностей 
config.js Успішне завантаження залежностей 
config.json Успішне завантаження залежностей 
bibleModel.js Успішне завантаження залежностей 
bookModel.js Успішне завантаження залежностей 
userModel.js Успішне завантаження залежностей 
progressModel.js Успішне завантаження залежностей 
routes Успішне завантаження залежностей 
 
Висновки до розділу 
Система успішно пройшла всі етапи тестування та відповідає всім 
встановленим вимогам. Це дозволило нам з упевненістю вважати систему 
готовою до впровадження в реальну експлуатацію. Приймальне тестування 
забезпечило остаточне підтвердження якості та готовності системи до 
використання, що є важливим кроком перед її запуском. 
 65 
ЧДТУ 242241.003ПЗ 
Модульне тестування 
Модульне тестування показало високу надійність і правильність роботи 
кожного окремого модуля системи. Результати тестування підтвердили, що 
основні функції виконують свої завдання відповідно до специфікацій. Це 
дозволило нам виявити та виправити локальні помилки на ранніх етапах 
розробки, забезпечуючи стабільність роботи системи. 
Інтеграційне тестування 
Інтеграційне тестування продемонструвало успішну взаємодію між різними 
модулями системи. Тести підтвердили коректну передачу даних між 
компонентами, забезпечуючи цілісність і узгодженість системи. Виявлені 
незначні помилки були оперативно виправлені, що забезпечило стабільну роботу 
системи в інтегрованому середовищі. 
Системне тестування 
Системне тестування показало, що вся система функціонує відповідно до 
вимог користувачів та бізнесу. Тести підтвердили, що система відповідає 
критеріям продуктивності, стабільності та функціональності. Ми переконалися, 
що всі основні функції системи працюють належним чином, а продуктивність 
відповідає очікуванням навіть під високими навантаженнями. Це забезпечило 
високу якість та надійність програмного забезпечення. 
Приймальне тестування 
Приймальне тестування системи було успішно завершено за участю 
кінцевих користувачів, що підтвердило готовність системи до впровадження в 
реальну експлуатацію. Ручне тестування та User Acceptance Testing (UAT) 
дозволили переконатися, що система відповідає всім вимогам користувачів і 
бізнесу. Отримані відгуки та результати тестів показали, що система зручна у 
використанні, функціональна і готова до запуску. Це забезпечило остаточне 
підтвердження якості системи перед її впровадженням. 
3.3 Приклади впровадженого програмного комплексу 
Авторизація в системі 
 66 
ЧДТУ 242241.003ПЗ 
Щоб почати роботу з додатком BibleGym, відкрийте свій веб-браузер або 
мобільний додаток та перейдіть на URL-адресу вашої інсталяції BibleGym. 
Введіть свої облікові дані (ім'я користувача та пароль) у відповідні поля та 
натисніть кнопку "Увійти". 
Реєстрація нового користувача 
Якщо у вас ще немає облікового запису, ви можете зареєструватися, 
натиснувши кнопку "Зареєструватися". Заповніть необхідну інформацію, 
включаючи поштову адресу та пароль. Також є можливість увійти за допомогою 
облікових записів Google, Facebook або Apple. 
 
 
Рисунок 3.12 - Реєстрація нового користувача 
 67 
ЧДТУ 242241.003ПЗ 
 
Процес онбордингу 
Після успішної реєстрації, ви перейдете до процесу онбордингу, де вам буде 
показано основні можливості додатку. Ви зможете ознайомитися з інтерфейсом та 
основними функціями додатку BibleGym. 
 
Рисунок 3.13 - Процес онбордингу 
 
Вибір книги для читання 
Після завершення онбордингу, ви можете вибрати книгу для читання з 
доступних варіантів Старого та Нового Заповіту. На цій сторінці можна обрати 
конкретну книгу, яку ви хочете вивчати, та почати читання. 
 68 
ЧДТУ 242241.003ПЗ 
 
Рисунок 3.14 - Вибір книги для читання 
Читання розділу та підготовка до тестування 
На сторінці вибраної книги ви можете читати її розділи. Після прочитання 
розділу ви будете підготовлені до проходження тесту. Перед початком тесту вам 
буде показано нагадування про важливість чесного проходження тестування. 
 69 
ЧДТУ 242241.003ПЗ 
 
Рисунок 3.15 - Читання розділу та підготовка до тестування 
 
Проходження тесту 
Тестування включає серію запитань по прочитаному матеріалу. За кожну 
правильну відповідь ви отримаєте бали, а у разі помилки – побачите правильну 
відповідь та пояснення. Після завершення тесту ви отримаєте результати з 
оцінкою вашої пам’яті та знань. 
 70 
ЧДТУ 242241.003ПЗ 
 
Рисунок 3.16 - Проходження тесту 
 71 
ЧДТУ 242241.003ПЗ 
 
Рисунок 3.17 - Результат тесту 
 72 
ЧДТУ 242241.003ПЗ 
ВИСНОВКИ 
Розробка та автоматизація системи BibleGym виявила її важливість у сфері 
сучасного цифрового навчання та духовного розвитку молоді. Поглиблений аналіз 
наукової та технічної літератури дозволив визначити ключові тенденції в освітніх 
програмних продуктах. Порівняння з конкурентами допомогло виділити їхні 
переваги та недоліки, що сприяло удосконаленню нашої системи. Вибір 
оптимального програмного забезпечення для інтерактивного вивчення Біблії 
залежить від конкретних потреб та вимог користувачів. Використання сучасних 
технологій, таких як Docker, Node.js, Express.js, React Native, React.js та MongoDB, 
забезпечує високу продуктивність та зручність системи, мінімізує можливість 
помилок та оптимізує взаємодію з користувачами.  
Було розглянуто ключові аспекти впровадження розробленої системи у 
практику проектування освітніх програмних продуктів. Запропоновані методи та 
підходи сприяють підвищенню ефективності та якості розробки інформаційних 
систем. Результатом дослідження стала сучасна система BibleGym, яка об'єднує 
інтерактивне вивчення Біблії для підлітків та молоді, тестування знань, 
збереження прогресу користувачів, управління питаннями через адміністративну 
панель, а також генерацію питань за допомогою штучного інтелекту. На відміну 
від інших існуючих освітніх програм, BibleGym пропонує комплексний та 
інтерактивний підхід до вивчення біблійних текстів, що робить його ідеальним 
вибором для релігійних організацій та навчальних закладів, які прагнуть 
модернізувати підхід до духовного навчання. Система успішно пройшла всі етапи 
тестування і відповідає встановленим вимогам, що дозволяє вважати її готовою до 
впровадження в реальну експлуатацію. Приймальне тестування підтвердило 
якість та готовність системи до використання, що є важливим етапом перед її 
запуском. Модульне тестування виявило високу надійність та коректність роботи 
кожного компонента, дозволивши вчасно усунути виявлені помилки. Інтеграційне 
тестування підтвердило успішну взаємодію між модулями, забезпечуючи 
стабільну роботу системи в цілому. 
 
 73 
ЧДТУ 242241.003ПЗ 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 
1 Gamma, E., Helm, R., Johnson, R., Vlissides, J. (1994). Design Patterns: 
Elements of Reusable Object-Oriented Software. Addison-Wesley. 
2 Martin, R.C. (2003). Agile Software Development: Principles, Patterns, and 
Practices. Pearson. 
3 Fowler, M. (2010). Domain-Specific Languages. Addison-Wesley Professional. 
4 Larman, C. (2002). Applying UML and Patterns: An Introduction to Object-
Oriented Analysis and Design and Iterative Development. Prentice Hall. 
5 Docker Documentation. (2024). Docker Overview. - https://docs.docker.com/get-
started/overview/ 
6 MongoDB Documentation. (2024). Introduction to MongoDB. - 
https://docs.mongodb.com/manual/introduction/ 
7 Node.js Documentation. (2024). About Node.js. - https://nodejs.org/en/about/ 
8 React Documentation. (2024). Introducing JSX. - 
https://reactjs.org/docs/introducing-jsx.html 
9 Express.js Documentation. (2024). Getting Started. - 
https://expressjs.com/en/starter/installing.html 
10 React Native Documentation. (2024). Introduction to React Native. - 
https://reactnative.dev/docs/getting-started 
11 Evans, E. (2004). Domain-Driven Design: Tackling Complexity in the Heart of 
Software. Addison-Wesley Professional. 
12 Sommerville, I. (2011). Software Engineering (9th Edition). Addison-Wesley. 
13 YouVersion. (2024). YouVersion Bible App. - https://www.youversion.com/ 
14 LifeBible. (2024). LifeBible Software. - https://lifebible.com/ 
15 Logos. (2024). Logos Bible Software. - https://www.logos.com/ 
16 https://www.plantuml.com/plantuml 
 74 
ЧДТУ 242241.003ПЗ 
 75 
ЧДТУ 242241.003ПЗ 
ДОДАТОК А 
  
 
ЗАТВЕРДЖЕНО: 
Зав. кафедрою ПЗАС, професор 
_________________ Голуб С.В. 
„____” ______________ 2024 р. 
 
 
 
 
 
Програмне забезпечення системи бухгалтерського обліку організації 
 
Специфікація 
482 ЧДТУ 242241 03 01 
Листів 2 
 
 
 
 
 
 
 
 
 
Розробник ________________     Варданян Е. М. 
Керівник ________________     Немченко В. В. 
 
 
 
 
 
 
 
 
 
 
 
2024 
 76 
ЧДТУ 242241.003ПЗ 
 
Позначення Найменування Примітка 
 Документація  
482.ЧДТУ. 24 2241 12 01 Текст програми  
482.ЧДТУ. 24 2241 34 01 Інструкція користувачеві  
482.ЧДТУ. 24 2241 90 01 Графічні матеріали  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 77 
ЧДТУ 242241.003ПЗ 
ДОДАТОК Б 
 
 
 
 
 
 
 
 
Програмне забезпечення WEB-застосунку для вивчення Біблії 
 
 
 
 
 
Текст програми 
482 ЧДТУ 242241 12 01 
Листів 17 
 
 
 
Розробник    ________________  Варданян Е. М. 
 
 
 
 
 
 
2024 
 78 
ЧДТУ 242241.003ПЗ 
const jwt = require('jsonwebtoken') 
const config = require('../config') 
const { Token, User, AuthRequest } = require('../models') 
const { Forbidden, RequestError, FoundError } = require('../utils/error') 
const bcrypt = require("bcryptjs") 
const generateJWTToken = (userId) => { 
  return jwt.sign({ id: userId }, config.jwt.secret, { 
    expiresIn: config.jwt.accessTokenExpirationTime, 
  }) 
} 
const generateTokens = async (user) => { 
  const accessToken = generateJWTToken(user._id) 
  const refreshToken = await Token.createToken(user) 
  return { accessToken, refreshToken } 
} 
const validateToken = async (requestToken, pinCode) => { 
  if (!requestToken) { 
    const error = 'Refresh Token is required!' 
    return { error: new Forbidden(error), isValid: false } 
  } 
  let refreshToken = await Token.findOne({ token: requestToken }) 
  if (!refreshToken) { 
    const error = 'Invalid token' 
    return { error: new Forbidden(error), isValid: false } 
  } 
  const user = await User.findById(refreshToken.user) 
  if (!refreshToken) { 
    const error = 'Refresh token is not in database' 
    return { error: new Forbidden(error), isValid: false } 
  } 
  if (Token.verifyExpiration(refreshToken)) { 
    Token.findByIdAndRemove(refreshToken._id, { useFindAndModify: false }).exec() 
    const error = 'Refresh token was expired. Please make a new sign-in request' 
    return { error: new Forbidden(error), isValid: false }  
 79 
ЧДТУ 242241.003ПЗ 
  } 
  return { error: null, isValid: true, currentRefreshToken: refreshToken, user } 
} 
const response = async (res, data, message = "") => { 
  res.send({ 
    status: "success", 
    message, 
    data, 
  }) 
} 
const createAuthRequests = async ({ phoneNumber, email }) => { 
  return await AuthRequest.create({ 
    phoneNumber, 
    email, 
    tries: 0, 
  }) 
} 
const requestEmailCodeByFlow = async (req, res, flow = "forgot") => { 
  let errorRes = null 
  let data = null 
  const user = await User.findOne({ email: req.body.email }) 
  switch (flow) { 
    case "signUp": 
      if (user) { 
        return new FoundError("The email is already in use.") 
      } else { 
        data = await generateConfirmationToken('confirmation', req.body.email) 
      } 
      break 
    case "forgot": 
      if (!user) { 
        return new FoundError("The Email does not exist.") 
      } else { 
        data = await generateConfirmationToken('confirmation', req.body.email) 
 80 
ЧДТУ 242241.003ПЗ 
      } 
      break 
    case "changeEmailAddress": 
      if (user) { 
        return new FoundError("The email is already in use.") 
      } else { 
        data = await generateConfirmationToken( 
          'confirmation', 
          req.body.email 
        ) 
      } 
      break 
    default: 
      data = await generateConfirmationToken('confirmation', req.body.email) 
  } 
  return { error: errorRes, data } 
} 
const generateConfirmationToken = async ( 
  tokenType = "confirmation", 
  email = null 
) => { 
  const token = await Token.findOne({ email, type: tokenType }) 
  if (token) { 
    token.deleteOne() 
  } 
  const confirmToken = generate4DigitNumber() 
  const hash = await bcrypt.hash(confirmToken, Number(config.jwt.secret)) 
  const newToken = new Token({ 
    token: hash, 
    email, 
    type: tokenType, 
  }) 
  await newToken.save() 
  return { confirmationToken: confirmToken, token: newToken } 
 81 
ЧДТУ 242241.003ПЗ 
} 
const generate4DigitNumber = () => 
  Math.floor(1000 + Math.random() * 9000).toString() 
const validateConfirmationToken = async (code, email, type = "confirmation") => { 
  const confirmToken = await Token.findOne({ email, type }) 
  if (!confirmToken || verifyExpiration(confirmToken)) { 
    return { 
      error: new RequestError(`Invalid or expired ${type} code`), 
      isValid: false, 
    } 
  } 
  const isValid = await bcrypt.compare(code, confirmToken.token) 
  if (!isValid) { 
    return { 
      error: new RequestError({ message: `Invalid or expired ${type} code` }), 
      isValid: false, 
    } 
  } 
  await removeToken({ email, type }) 
  return { isValid: true, error: null } 
} 
const removeToken = async ({ email, type }) => { 
  return Token.findOneAndDelete({ email, type }) 
} 
const validatePassword = async (password, email) => { 
  const user = await User.findOne({ email }).select('+password') 
  if (!user) { 
    return { 
      error: `User with this email does not exist`, 
      isValid: false, 
    } 
  } 
  const isValid = await bcrypt.compare(password, user?.password) 
  if (!isValid) { 
 82 
ЧДТУ 242241.003ПЗ 
    return { 
      error: `Password is invalid`, 
      isValid: false, 
    } 
  } 
  return { isValid: true, error: null } 
} 
const verifyExpiration = (token) => { 
  if (!token) { 
    return false 
  } 
  const currentTime = new Date().getTime() 
  const tokenExpiryTime = token.expiryDate.getTime() 
  return currentTime > tokenExpiryTime 
} 
module.exports = { 
  generateTokens, 
  validateToken, 
  response, 
  createAuthRequests, 
  requestEmailCodeByFlow, 
  validateConfirmationToken, 
  validatePassword, 
} 
const { User, Admin } = require("../models") 
const { RequestError } = require("../utils/error") 
const createAdmin = async ({ email, fullName, password }) => { 
  if (!email || !fullName || !password) return new RequestError('Parameters: email, fullName, 
password are required') 
  return await Admin.create({ 
    email, 
    fullName, 
    password, 
  }) 
 83 
ЧДТУ 242241.003ПЗ 
} 
const getBaseUser = async (query = {}) => { 
  return User.findOne({ ...query }) 
} 
const changeBaseUserPasswordById = async (userId, password) => { 
  return User.findByIdAndUpdate(userId, { password }, { new: true }) 
} 
const changeBaseUserPasswordByQuery = async (query, password) => { 
  return User.findOneAndUpdate(query, { password }, { new: true }) 
} 
const changeBaseUserEmail = async (userId, email) => { 
  return User.findByIdAndUpdate(userId, { email }, { new: true }) 
} 
module.exports = { 
  getBaseUser, 
  changeBaseUserPasswordByQuery, 
  changeBaseUserPasswordById, 
  changeBaseUserEmail, 
  createAdmin 
} 
const { Book, Verse } = require("../models") 
const { RequestError } = require("../utils/error") 
const createBook = async ({ book_number, short_name, long_name, book_color, sorting_order, 
translate }) => { 
  try { 
    console.log({ 
      book_number, 
      short_name, 
      long_name, 
      book_color, 
      sorting_order, 
      translate, 
    }) 
    return Book.create({ 
 84 
ЧДТУ 242241.003ПЗ 
      book_number, 
      short_name, 
      long_name, 
      book_color, 
      sorting_order, 
      translate, 
    }) 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const getAllBooks = async () => { 
  try { 
    return await Book.find({ translate: 'UBIO' }).sort({ sorting_order: 1 }) 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const getBookById = async ({ bookId }) => { 
  try { 
    return await Book.findOne({ _id: bookId, translate: 'UBIO' }) 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const getBookNumberById = async ({ bookId }) => { 
  try { 
    const book = await Book.findOne({ _id: bookId, translate: 'UBIO' }, { book_number: 1 }) 
    return book?.book_number 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const getBookByNumber = async ({ bookNumber }) => { 
 85 
ЧДТУ 242241.003ПЗ 
  try { 
    return await Book.findOne({ book_number: bookNumber, translate: 'UBIO' }) 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const updateBookByNumber = async ({ book_number, data }) => { 
  try { 
    return await Book.updateOne({ book_number, translate: 'UBIO' }, { $set: { ...data } }) 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const getBookChaptersCount = async ({ book_number }) => { 
  try { 
    if (!book_number) return new RequestError('You should pass the book number') 
    const verse = await Verse.findOne({ book_number, translate: 'UBIO' }).sort({ chapter: -1 
}).limit(1) 
    return verse.chapter 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const getBookChaptersCountById = async ({ bookId }) => { 
  try { 
    if (!bookId) return new RequestError('You should pass the book id') 
    const book = await Book.findOne({ _id: bookId, translate: 'UBIO' }) 
    return book?.chapters_count 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const createVerse = async ({ book_number, chapter, verse, text, source, bookId, translate }) => { 
  try { 
 86 
ЧДТУ 242241.003ПЗ 
    return Verse.create({ 
      book_number, 
      chapter, 
      verse, 
      text, 
      source, 
      bookId, 
      translate, 
    }) 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const getVersesByChapter = async ({ book_number, chapterNumber }) => { 
  try { 
    if (!book_number) return new RequestError('You should pass the book number') 
    if (!chapterNumber) return new RequestError('You should pass the chapter number') 
    return await Verse.find({ book_number, chapter: chapterNumber, translate: 'CUV' }, { createdAt: 
0, updatedAt: 0, }).sort({ verse: 1 }) 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
module.exports = { 
  createBook, 
  getAllBooks, 
  getBookById, 
  getBookChaptersCount, 
  getVersesByChapter, 
  createVerse, 
  updateBookByNumber, 
  getBookChaptersCountById, 
  getBookByNumber, 
  getBookNumberById, 
 87 
ЧДТУ 242241.003ПЗ 
} 
const { RequestError } = require("../utils/error") 
const { Customer } = require("../models") 
const createCustomer = async ({ email, fullName, password, avatar_url }) => { 
  if (!email || !fullName || !password) return new RequestError('Parameters: email, fullName, 
password are required') 
  const query = { 
    email, 
      fullName, 
      password, 
  } 
  avatar_url ? query['avatar_url'] = avatar_url : '' 
  return await Customer.create(query) 
} 
const getAllCustomers = async ({ limit, offset }) => { 
  try { 
    return await Customer.find({}).limit(limit).skip(offset) 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
module.exports = { 
  getAllCustomers, 
  createCustomer, 
} 
const { RequestError } = require("../utils/error") 
const brevo = require('@getbrevo/brevo') 
const { email } = require('../config' 
const sendEmail = async ({ subject, htmlContent, sender, to, replyTo, headers, params, templateId 
}) => { 
  try { 
    let defaultClient = brevo.ApiClient.instance 
    let apiKey = defaultClient.authentications['api-key'] 
    apiKey.apiKey = email.brevoAPIKey 
 88 
ЧДТУ 242241.003ПЗ 
    let apiInstance = new brevo.TransactionalEmailsApi() 
    let sendSmtpEmail = new brevo.SendSmtpEmail() 
    const sendInfo = { 
      subject, // "My {{params.subject}}" 
        htmlContent, //"<html><body><h1>Common: This is my first transactional email 
{{params.parameter}}</h1></body></html>" 
        sender, // { "name": "John", "email": "[email protected]" } 
        to, //[ { "email": "[email protected]", "name": "sample-name" } ] 
        replyTo, // { "email": "[email protected]", "name": "sample-name" } 
        headers, // { "Some-Custom-Name": "unique-id-1234" } 
        params, // { "parameter": "My param value", "subject": "common subject" } 
        templateId, // 2 
    } 
    Object.keys(sendInfo || {}).map(key => { 
      sendSmtpEmail[key] = sendInfo[key] 
    }) 
    apiInstance.sendTransacEmail(sendSmtpEmail).then(function (data) { 
      console.log('API called successfully. Returned data: ' + JSON.stringify(data)) 
    }, function (error) { 
      console.error(error) 
    }) 
  } catch (err) { 
    throw new RequestError(err) 
  } 
} 
module.exports = { 
  sendEmail, 
} 
const { Feedback } = require("../models") 
const { RequestError } = require("../utils/error") 
const createFeedback = async ({ text, email, userName, type }) => { 
  try { 
    await Feedback.create({ text, email, userName, type }) 
  } catch (e) { 
 89 
ЧДТУ 242241.003ПЗ 
    throw new RequestError(e) 
  } 
} 
const findFeedback = async ({ offset = 0, limit = 10, searchQuery = '' }) => { 
  try { 
    let fields = {} 
    if (searchQuery) { 
      fields = { 
        $or: [ 
          { text: { $regex: new RegExp(searchQuery, 'i') } }, 
          { email: { $regex: new RegExp(searchQuery, 'i') } }, 
        ] 
      } 
    } 
    return await Feedback.find(fields).skip(+offset).limit(+limit) 
  } catch (e) { 
    throw new RequestError(e) 
  } 
const deleteFeedback = async ({ feedbackId }) => { 
  try { 
   return await Feedback.findByIdAndDelete(feedbackId) 
  } catch (e) { 
    throw new RequestError(e) 
  } 
} 
module.exports = { 
  createFeedback, 
  findFeedback, 
  deleteFeedback, 
} 
const { UserBookProgress, UserChapterProgress } = require("../models") 
const { RequestError } = require("../utils/error") 
const { getBookChaptersCountById, getAllBooks, getBookById, getBookByNumber } = 
require("./bible") 
 90 
ЧДТУ 242241.003ПЗ 
const createUserBookProgress = async ({ bookId, userId }) => { 
  try { 
    !bookId ? new RequestError('You should pass the book id') : '' 
    !userId ? new RequestError('You should pass the user id') : ' 
    const book = await getBookById({ bookId }) 
    if (!book) return new RequestError(`Book with id = '${bookId}' not found`) 
    for (let i = 0; i < book.chapters_count; i++) { 
      await createUserChapterProgress({ 
        book_number: book.book_number, 
        chapter_number: i + 1, 
        test_completed: false, 
        started: !i, // if i === 0 then started = true 
        userId 
      }) 
    } 
    return UserBookProgress.create({ 
      book: bookId, 
      user: userId 
    }) 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const updateUserBookProgressByNumber = async ({ bookId, userId, data }) => { 
  try { 
    return await UserBookProgress.updateOne({ book: bookId, user: userId }, { $set: { ...data } }) 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const incrementCompletedChaptersCount = async ({ bookId, userId }) => { 
  try { 
    const chapterCount = await getBookChaptersCountById({ bookId }) 
    const progress = await UserBookProgress.findOne({ 
 91 
ЧДТУ 242241.003ПЗ 
      book: bookId, 
      user: userId 
    }) 
    if (!progress) return new RequestError(`You have not studied this book yet`) 
    if (!chapterCount) return new RequestError(`Something went wrong with this book`) 
    if (!(chapterCount >= progress.completedChaptersCount)) return new RequestError(`You can't 
have more than ${progress.completedChaptersCount} completed chapters in this book.`) 
    if (chapterCount && chapterCount >= progress.completedChaptersCount) { 
      return await UserBookProgress.findOneAndUpdate( 
        { book: bookId, user: userId }, 
        { $inc: { completedChaptersCount: 1 } }, 
        { new: true } 
      ) 
    } 
  } catch (error) { 
    console.error("Error while updating completed chapters count:", error) 
    throw error 
  } 
} 
const getAllBooksWithUserProgresses = async (userId) => { 
  try { 
    const books = await getAllBooks() 
    const data = [] 
    const userProgresses = await UserBookProgress.find({ user: userId }) 
    for (let book of books) { 
      book = (await book).toObject() 
      const bookProgress = userProgresses.find(progress => progress.book.toString() === 
book._id.toString()) 
      if (bookProgress) { 
        data.push({ 
          ...book, 
          completedChaptersCount: bookProgress.completedChaptersCount, 
          isCompleted: bookProgress.isCompleted, 
        }) 
 92 
ЧДТУ 242241.003ПЗ 
      } else { 
        data.push({ ...book, completedChaptersCount: 0, isCompleted: false }) 
      } 
    } 
    return data 
  } catch (e) { 
    throw new RequestError(e) 
  } 
} 
const getBookProgressByUserAndBook = async ({ userId, bookId }) => { 
  try { 
    return await UserBookProgress.findOne({ user: userId, book: bookId }, { 
      isCompleted: 1, 
      completedChaptersCount: 1 
    }).populate('book') 
  } catch (e) { 
    throw new RequestError(e) 
  } 
} 
const createUserChapterProgress = async ({ book_number, chapter_number, test_completed, 
started, userId }) => { 
  try { 
    if (!book_number) return new RequestError('You should pass the book number') 
    if (!chapter_number) return new RequestError('You should pass the chapter number') 
    return await UserChapterProgress.create({ 
      book_number, 
      chapter_number, 
      test_completed, 
      started, 
      user: userId, 
    }) 
  } catch (e) { 
    new RequestError(e) 
  } 
 93 
ЧДТУ 242241.003ПЗ 
} 
const getChaptersInfoByUser = async ({ book_number, userId }) => { 
  try { 
    if (!book_number) return new RequestError('You should pass the book number') 
    if (!userId) return new RequestError('You should pass the user id') 
    const progresses = await UserChapterProgress.find({ book_number, user: userId }, { 
      _id: 1, 
      book_number: 1, 
      chapter_number: 1, 
      test_completed: 1, 
      started: 1, 
    }).sort({ chapter_number: 1 }) 
    if (!progresses || progresses.length === 0) { 
      const data = [] 
      const book = await getBookByNumber({ bookNumber: book_number }) 
      for (let i = 0; i < book?.chapters_count; i++) { 
        data.push({ 
          book_number: +book_number, 
          chapter_number: i + 1, 
          test_completed: false, 
          started: !i 
        }) 
      } 
      return data 
    } 
    return progresses 
  } catch (e) { 
    new RequestError(e) 
  } 
} 
const updateChaptersInfoByUser = async ({ query, data }) => { 
  try { 
    return await UserChapterProgress.findOneAndUpdate({ ...query }, { ...data }) 
  } catch (e) { 
 94 
ЧДТУ 242241.003ПЗ 
    new RequestError(e) 
  } 
} 
module.exports = { 
  createUserBookProgress, 
  updateUserBookProgressByNumber, 
  incrementCompletedChaptersCount, 
  getAllBooksWithUserProgresses, 
  createUserChapterProgress, 
  getChaptersInfoByUser, 
  updateChaptersInfoByUser, 
  getBookProgressByUserAndBook, 
 95 
ЧДТУ 242241.003ПЗ 
ДОДАТОК В 
 
 
 
 
 
 
 
 
Програмне забезпечення WEB-застосунку для вивчення Біблії 
 
 
 
 
 
Інструкція користувачеві 
482.ЧДТУ. 24 2241 34 01 
Листів 6 
 
 
 
Розробник    ________________  Варданян Е. М. 
 
 
 
 
 
2024 
 96 
ЧДТУ 242241.003ПЗ 
 
Вхід в систему 
Відкрийте додаток і пройдіть онбординг 
Натисніть"Увійти"
 
Рисунок В 1 – Сторінка онбордінгу  
 
Вхід в систему 
Оберіть спосіб логіну. 
Введіть ваш логін та пароль. 
Натисніть Увійти 
 
 
 
 
 
 
 
 
 97 
ЧДТУ 242241.003ПЗ 
 
Рисунок В 2 – Сторінка логіну 
          Перегляд контенту: 
          Оберіть необхідну книгу 
          Натисність почати  
 
 98 
ЧДТУ 242241.003ПЗ 
 
          Перегляд контенту: 
          Перегляньте і оберіть необхідну главу  
Натисніть на іконку 
Оберіть кнопку Читати 
 
Рисунок В 3 – Сторінка перегляду розділів 
     
 
 
      Читання розділу 
      Прочитайте розділ  
      Натисніть Почати новий тест 
      Натисніть Вперед 
 99 
ЧДТУ 242241.003ПЗ 
 
Рисунок В 4 – Сторінка читання розділу 
 
 
 
 
 
 
Проходження тесту: 
Оберіть відповідь 
Натисніть Наступне питання 
 
1 00 
ЧДТУ 242241.003ПЗ 
 
Рисунок В 5 – Сторінка проходження тесту 
 
Результати тесту: 
Перегляньте результат 
Оберіть один з варіантів продовження або закінчення тесту 
1 01 
ЧДТУ 242241.003ПЗ 
 
Рисунок В 6 – Сторінка перегляду результатів 
 
 
1 02 
ЧДТУ 242241.003ПЗ 
ДОДАТОК Г 
 
 
 
 
 
 
Програмне забезпечення WEB-застосунку для вивчення Біблії 
 
 
 
Графічні матеріали 
482.ЧДТУ. 24 2241 90 01 
Листів 8 
 
 
 
 
Розробник    ________________      Варданян Е. М. 
 
 
 
 
 
 
 
2024 
 
1 03 
ЧДТУ 242241.003ПЗ 
Рисунок Г 1 – Слайд 1 
 
Рисунок Г 2 – Слайд 2 
1 04 
ЧДТУ 242241.003ПЗ 
Рисунок Г 3 – Слайд 3 
 
Рисунок Г 4 – Слайд 4 
1 05 
ЧДТУ 242241.003ПЗ 
Рисунок Г 5 – Слайд 5 
 
Рисунок Г 6 – Слайд 6 
1 06 
ЧДТУ 242241.003ПЗ 
Рисунок Г 7 – Слайд 7 
 
Рисунок Г 8 – Слайд 8 
1 07 
ЧДТУ 242241.003ПЗ 
Рисунок Г 9 – Слайд 9 
Рисунок Г 10 – Слайд 10 
1 08 
ЧДТУ 242241.003ПЗ 
Рисунок Г 11 – Слайд 11 
 
 
 
Рисунок Г 12 – Слайд 12 
 
1 09 
ЧДТУ 242241.003ПЗ 
Рисунок Г 13 – Слайд 13 
 
 
 
Рисунок Г 14 – Слайд 14 
1 10 
ЧДТУ 242241.003ПЗ 
Рисунок Г 15 – Слайд 15 
 
 
Рисунок Г 15 – Слайд 16 
 
1 11