Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал:
https://er.chdtu.edu.ua/handle/ChSTU/9109Повний запис метаданих
| Поле DC | Значення | Мова |
|---|---|---|
| dc.contributor.advisor | Заспа, Григорій Олександрович | - |
| dc.contributor.author | Цибенко, В’ячеслав Олександрович | - |
| dc.date.accessioned | 2026-03-25T19:44:29Z | - |
| dc.date.available | 2026-03-25T19:44:29Z | - |
| dc.date.issued | 2024-06-17 | - |
| dc.identifier.uri | https://er.chdtu.edu.ua/handle/ChSTU/9109 | - |
| dc.description.abstract | АНОТАЦІЯ − прізвище та ініціали студента: Цибенко В’ячеслав Олександрович; − назва КРБ: Інформаційна система університету: підсистема формування сучасного додатку до диплома; − спеціальність (шифр і назва): 121 – Інженерія програмного забезпечення; − установа, де відбудеться захист: Черкаський державний технологічний університет; − місто: Черкаси, рік: 2024. Основні ідеї, результати та висновки КРБ В даній кваліфікаційній роботі бакалавра розроблено програмне забезпечення підсистеми формування сучасного додатку до диплома інформаційної системи університету, яка дає можливість підвищити продуктивність роботи працівників деканатів під час формування додатка. Було виконано: перепроектування бази даних з введенням нових сутностей у відповідності з новими вимогами до додатка; розробку серверної частини модулів, що забезпечують введення даних для формування додатка до диплома у відповідності з новими вимогами; розробку клієнтської частини модулів, що забезпечують введення даних для формування додатка до диплома у відповідності з новими вимогами; розробку програмного забезпечення формування додатка до диплома у відповідності з новими вимогами; закріплення умінь та навичок в проектуванні та розробці програмного забезпечення на основі веб-технологій, роботі з базами даних, а також тестування програмного забезпечення. Результатом роботи буде впровадження підсистеми формування сучасного додатку до диплома, що покращить підготовку дипломів для студентів. | uk_UA |
| dc.description.abstract | ANNOTATION − last name and initials of the student: Tsybenko Vieacheslav Oleksandrovich; − name of the KRB: University Information System: subsystem for the formation of a modern diploma supplement; − specialty (code and name): 121 – Software engineering; − institution where the defense will take place: Cherkasy State Technological University; − city: Cherkasy year: 2024. Main ideas, results and conclusions of the KRB In this bachelor's qualification work, software has been developed for the subsystem for the formation of a modern diploma program of the university information system, which makes it possible to increase the productivity of the dean's office employees when forming the program. The following was carried out: a database redesign with the introduction of new entities in accordance with the new application requirements; development of the server part of modules that provide data input for generating a diploma supplement in accordance with new requirements; development of the client part of modules that provide data input for generating a diploma supplement in accordance with new requirements; development of software for generating a diploma supplement in accordance with new requirements; strengthening skills in web design and software development, working with databases and software testing. The result of the work will be the introduction of a subsystem for the formation of a modern diploma program, which will improve the preparation of student diplomas. | uk_UA |
| dc.language.iso | uk | uk_UA |
| dc.subject | ІНФОРМАЦІЙНА СИСТЕМА | uk_UA |
| dc.subject | ДОДАТОК ДО ДИПЛОМА | uk_UA |
| dc.subject | ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ | uk_UA |
| dc.subject | ВЕБ-ТЕХНОЛОГІЇ | uk_UA |
| dc.subject | INFORMATION SYSTEM | uk_UA |
| dc.subject | DIPLOMA APPLICATION | uk_UA |
| dc.subject | SOFTWARE | uk_UA |
| dc.subject | WEB TECHNOLOGY | uk_UA |
| dc.title | Інформаційна система університету: підсистема формування сучасного додатку до диплома | uk_UA |
| dc.type | Bachelor Thesis | uk_UA |
| Розташовується у зібраннях: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) | |
Файли цього матеріалу:
| Файл | Опис | Розмір | Формат | |
|---|---|---|---|---|
| Кваліфікаційна робота бакалавра Цибенко В'ячеслав Олександрович.pdf Restricted Access | 10.56 MB | Adobe PDF | Переглянути/Відкрити Запит копії |
Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи
«бакалавра»
освітній рівень
на тему: Інформаційна система університету: підсистема формування
сучасного додатку до диплома
Виконав: студент 4 курсу, групи ПЗ-2004
Спеціальності
121 «Інженерія програмного забезпечення»
(шифр і назва спеціальності)
Студент Цибенко В.О.
(прізвище та ініціали)
Керівник Заспа Г.О.
(прізвище та ініціали)
Рецензент Стадник В.В.
(прізвище та ініціали)
Черкаси 2024
__________________________Черкаський державний технологічний університет____________
повне найменування вищого навчального закладу
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
Освітній рівень бакалавр
Спеціальність 121 «Інженерія програмного забезпечення»
Освітня програма Інженерія програмного забезпечення
ЗАТВЕРДЖУЮ
Зав. кафедри ПЗАС, професор
___________________ Голуб С.М.
«___» _______________ 2024 року
З А В Д А Н Н Я
НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ
Цибенко В’ячеслав Олександрович
(прізвище, ім’я, по батькові)
1. Тема проекту (роботи) Інформаційна система університету: підсистема формування
сучасного додатку до диплома
Керівник проекту (роботи) Заспа Григорій Олександрович к.т.н. доцент
(прізвище, ім’я , по батькові, науковий ступінь, вчене звання)
Затверджені наказом Черкаського державного технологічного університету від « 26 » лютого 2024 року
№60/04
2. Термін здачі студентом закінченого проекту (роботи) 06.06.2024
3. Вихідні дані до проекту (роботи) Індивідуальне завдання. Нормативні документи:
Інформаційні технології. Система стандартів по базам даних. Концепція та термінологія я концептуальної
схеми та інформаційної бази
Автоматизовані системи. Терміни та визначення
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити)
Вступ
1 Існуючі методи та засоби розв’язання поставлених завдань,
2 Впровадження результатів досліджень у практику проектування програмного забезпечення
інформаційних систем
3. Розробка та тестування програмного забезпечення
Висновки
Список використаних джерел
Додатки
5. Графічні матеріали. Слайди презентації: 1 слайд – титульна сторінка; 2 слайд – актуальність теми; 3 слайд
– мета і завдання розробки; 4 слайд – об’єкт та методи розробки; 5 слайд – аналіз програм аналогів; 6 слайд
– предметна область моделювання, модель предметної області ; 7 слайд – первинні вимоги; 8 слайд –
детальні вимоги; 9 слайд – формування вимог за допомогою діаграм прецедентів; 11 слайд – проектування
логічної структури програмного комплексу; 12слайд – проектування логічної структури; 13 слайд –
архітектурне проектування; 16 слайд – моделювання поведінки системи; 19 слайд – структурна схема; 20
слайд – розробка програмного комплексу; 21 слайд – Структура бази даних; 22 слайд – інтерфейс
користувача; 23 слайд – тестування.
6. Консультанти розділів проекту (роботи)
Прізвище, ініціали та посади Підпис, дата
Розділ
консультанта Завдання видав Завдання прийняв
1
2
3
7. Дата видачі завдання 04 грудня 2023 р.
КАЛЕНДАРНИЙ ПЛАН
Строк
№ виконання
Назва етапів випускної роботи етапів Примітки
п/п випускної
роботи
1 Постановка задачі 04.12.2023 виконано
2 Підготовка завдання 04.12.2023 виконано
3 Погодження завдання 15.12.2023 виконано
4 Затвердження завдання 19.02.2024 виконано
Основна стадія
1 Підбір матеріалів 26.02.2024 виконано
2 Аналіз шляхів вирішення поставленої задачі 04.03.2024 виконано
3 Розрахунок основних параметрів роботи 11.03.2024 виконано
4 Вибір кінцевого варіанту проектного рішення 18.03.2024 виконано
5 Оформлення первісної редакції роботи 25.03.2024 виконано
Заключна стадія
1 Узгодження прийнятих проектних рішень з 30.04.2024 виконано
керівником
2 Оформлення пояснювальної записки роботи в 13.05.2024 виконано
кінцевій редакції
3 Попередній захист роботи 15.05.2024 виконано
4 Затвердження роботи 03.06.2024 виконано
5 Рецензування роботи 04.06.2024 виконано
6 Захист роботи
Студент _____________________ Цибенко В.О.
(підпис) (прізвище та ініціали)
Керівник проекту (роботи) _____________________ Заспа Г.О.
(підпис) (прізвище та ініціали)
АНОТАЦІЯ
− прізвище та ініціали студента: Цибенко В’ячеслав Олександрович;
− назва КРБ: Інформаційна система університету: підсистема
формування сучасного додатку до диплома;
− спеціальність (шифр і назва): 121 – Інженерія програмного
забезпечення;
− установа, де відбудеться захист: Черкаський державний технологічний
університет;
− місто: Черкаси, рік: 2024.
Основні ідеї, результати та висновки КРБ
В даній кваліфікаційній роботі бакалавра розроблено програмне
забезпечення підсистеми формування сучасного додатку до диплома
інформаційної системи університету, яка дає можливість підвищити
продуктивність роботи працівників деканатів під час формування додатка. Було
виконано: перепроектування бази даних з введенням нових сутностей у
5
відповідності з новими вимогами до додатка; розробку серверної частини
модулів, що забезпечують введення даних для формування додатка до диплома у
відповідності з новими вимогами; розробку клієнтської частини модулів, що
забезпечують введення даних для формування додатка до диплома у відповідності
з новими вимогами; розробку програмного забезпечення формування додатка до
диплома у відповідності з новими вимогами; закріплення умінь та навичок в
проектуванні та розробці програмного забезпечення на основі веб-технологій,
роботі з базами даних, а також тестування програмного забезпечення.
Результатом роботи буде впровадження підсистеми формування сучасного
додатку до диплома, що покращить підготовку дипломів для студентів.
Ключові слова: ІНФОРМАЦІЙНА СИСТЕМА, ДОДАТОК ДО
ДИПЛОМА, ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ, ВЕБ-ТЕХНОЛОГІЇ.
ANNOTATION
− last name and initials of the student: Tsybenko Vieacheslav Oleksandrovich;
− name of the KRB: University Information System: subsystem for the formation
of a modern diploma supplement;
− specialty (code and name): 121 – Software engineering;
− institution where the defense will take place: Cherkasy State Technological
University;
− city: Cherkasy year: 2024.
Main ideas, results and conclusions of the KRB
In this bachelor's qualification work, software has been developed for the
subsystem for the formation of a modern diploma program of the university information
system, which makes it possible to increase the productivity of the dean's office
employees when forming the program. The following was carried out: a database
redesign with the introduction of new entities in accordance with the new application
requirements; development of the server part of modules that provide data input for
generating a diploma supplement in accordance with new requirements; development
of the client part of modules that provide data input for generating a diploma supplement
in accordance with new requirements; development of software for generating a
diploma supplement in accordance with new requirements; strengthening skills in web
design and software development, working with databases and software testing.
The result of the work will be the introduction of a subsystem for the formation
of a modern diploma program, which will improve the preparation of student diplomas.
Key words: INFORMATION SYSTEM, DIPLOMA APPLICATION,
SOFTWARE, WEB TECHNOLOGY.
ЗМІСТ
ВСТУП ........................................................................................................................ 5
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ ПОСТАВЛЕНИХ
ЗАВДАНЬ ................................................................................................................... 8
1.1 Додаток до диплома європейського зразка: підстави для формування та
форма ................................................................................................................... 8
1.2 Аналіз програм аналогів .................................................................................... 11
ВИСНОВОК ДО 1 РОЗДІЛУ ................................................................................... 16
РОЗДІЛ 2 ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У ПРАКТИКУ
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНИХ
СИСТЕМ .................................................................................................................... 17
2.1 Моделювання предметної області .................................................................... 17
2.1.1 Предметна область моделювання. Модель предметної області. Словник
предметної області .................................................................................................... 17
2.1.2 Елементи моделювання предметної області ............................................. 18
2.1.3 Робоча область моделювання ..................................................................... 20
2.2 Формування та аналіз вимог ............................................................................. 20
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні
вимоги ......................................................................................................................... 20
2.2.2 Формування вимог за допомогою діаграми прецедентів ........................ 25
2.3 Проектування логічної структури програмного комплексу ......................... 28
2.3.1 Діаграми класів ............................................................................................ 28
2.3.2 Діаграми пакетів .......................................................................................... 31
2.4 Архітектурне проектування ............................................................................. 32
2.4.1 Діаграма компонентів .................................................................................. 32
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання ................................................................................................................ 35
ЧДТУ 242061.017 ПЗ
Зм. Лист № докумемента Підпис Дата
Розроб. Цибенко В.О. ІНФОРМАЦІЙНА СИСТЕМА Літ. Лист Листів
Перев. Заспа Г..О. УНІВЕРСИТЕТУ: ПІДСИСТЕМА Н 3 125
ФОРМУВАННЯ ДОДАТКУ ДО
Н.ко ФІТІС,
нтр. Півень О.Б. ДИПЛОМА
Затв. Голуб С.В. (Пояснювальна записка) кафедра ПЗАС, ПЗ-2004
ЧДТУ 242061.017 ПЗ
2.5 Моделювання поведінки системи. ................................................................. 36
2.5.1 Діаграма діяльності ................................................................................... 36
2.5.2 Діаграма послідовності ............................................................................. 37
2.5.3 Діаграма комунікації ................................................................................. 37
2.5.4 Діаграма скінченного автомату ............................................................... 38
ВИСНОВОК ДО 2 РОЗДІЛУ ............................................................................... 40
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
......................................................................................................................... ……41
3.1 Розробка програмного комплексу ................................................................ 41
3.1.1 Обґрунтування вибору засобів реалізації ........................................... 41
3.1.2 Опис структурної (функціональної) схеми ........................................ 45
3.1.3 Опис логічної схеми системи .............................................................. 47
3.1.4 Розробка бази даних .............................................................................. 48
3.1.5 Розробка інтерфейсу користувача ....................................................... 56
3.1.6 Опис розробки програмних компонентів ........................................... 58
3.2 Тестування системи ....................................................................................... 60
3.2.1 Модульне тестування ............................................................................ 63
3.2.2 Інтеграційне тестування ....................................................................... 64
3.2.3 Системне тестування ............................................................................ 65
3.2.4 Приймальне тестування ........................................................................ 65
3.3 Приклади впровадженого програмного комплексу .................................... 66
ВИСНОВОК ДО 3 РОЗДІЛУ ............................................................................... 68
ВИСНОВКИ ........................................................................................................... 69
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ............................................................. 70
ДОДАТОК А .......................................................................................................... 73
ДОДАТОК Б .......................................................................................................... 75
ДОДАТОК В .................................................................................................. …..107
ДОДАТОК Г .................................................................................................. …..113
Лис5т
ЧДТУ 242061.017 ПЗ
Зм. Лист № докумементу Підпис Дата
ЧДТУ 242061.017 ПЗ
ВСТУП
Актуальність теми. Визначається в потребі розробці програмного
забезпечення інформаційної системи додатка до диплома, що надає можливість
об`єктивної оцінки кваліфікації (ступеня) освіти, здобутої випускником вищого
навчального закладу. Він містить розширену інформацію про отриману
кваліфікацію та навчальні досягнення випускника, необхідну для забезпечення
міжнародної зрозумілості та визнання отриманого випускником диплома про
вищу освіту. Видається разом з документом про вищу освіту та є невід’ємною
його частиною. Додаток є частиною інженерії програмного забезпечення, що
допоможе побудувати кар’єру в провідних українських компаніях та країнах ЄС
[2].
У сучасному світі процес отримання вищої освіти є важливою складовою
для студентів тому потрібно створити додаток до диплома для забезпечення
надання інформації для студентів.
В Черкаському державному технологічному університеті додаток до
диплома формується в інформаційній системі ЧДТУ. Форма додатку періодично
змінюється. Нещодавно Міністерство освіти та науки внесло суттєві зміни в
додаток. Це привело до того, що працівники деканатів вимушені робити велику
кількість ручної роботи для того, щоб привести додаток від форми яку видає
система до форми у відповідності з новими вимогами. Тому існує необхідність
переробити формування додатка в інформаційній системі ЧДТУ так, щоб додаток
формувався у відповідності з новими вимогами і відповідно працівникам
деканатів не доводилось робити додаткової роботи.
Мета і завдання розробки. Метою даної кваліфікаційної роботи бакалавра
є розробка програмного забезпечення інформаційної технології підсистеми
формування сучасного додатку до диплома інформаційної системи університету,
яка дасть можливість підвищити продуктивність роботи працівників деканатів під
час формування додатка.
Завданнями розробки є:
6
ЧДТУ 242061.017 ПЗ
1 Інформаційний пошук методів, засобів та методик побудови програмного
забезпечення інформаційних систем виконання поставлених завдань.
2 Проектування програмного забезпечення інформаційної системи
університету: підсистеми формування сучасного додатку до диплома.
3 Конструювання програмного забезпечення інформаційної системи
університету: підсистеми формування сучасного додатку до диплома.
4 Тестування програмного забезпечення інформаційної системи
університету: підсистеми формування сучасного додатку до диплома.
5 Впровадження та супроводження програмного забезпечення
інформаційної системи університету: підсистеми формування сучасного додатку
до диплома.
В рамках роботи здійснюється весь життєвий цикл розробки програмного
забезпечення – вироблення вимог, проектування та констроювання програмного
забезпечення, тестування та підтримка програмного забезпечення. Також
використовуються інші дисципліни інженерії програмного забезпечення такі, як
конфігураційний менеджмент тощо.
Характер змін, які потрібно внести в додаток, такий, що вимагає не тільки
змін в самому модулі формування додатку до диплома, але й вимагає внесення
суттєвих змін в інші модулі програмного забезпечення. Зокрема, вимагається
введення нових сутностей, що тягне за собою перепроектування бази даних,
перепроектування програмного забезпечення та розробку нових модулів і змін
існуючих модулів.
Об'єкт розробки: процес побудови програмного забезпечення
інформаційних систем.
Предмет розробки: процес побудови програмного забезпечення
інформаційної системи університету, підсистеми формування додатку до
диплома.
Методи розробки. Методи об’єктно-орієнтованого програмування, методи
веб-програмування, методи проектування реляційних баз даних на основі
сутностей та зв’язків між ними.
7
ЧДТУ 242061.017 ПЗ
Опис отриманих результатів. Створено підсистему формування
сучасного додатку до диплома інформаційної системи університету. Розроблено
серверне та клієнтське програмне забезпечення. Внесено структурні зміни в базу
даних. Підсистема встановлена на сервері та готова до використання
користувачами.
Практичне значення досягнутих результатів. Розроблена підсистема
інформаційної системи університету дає можливість підвищити продуктивність
роботи працівників деканатів під час формування додатка.
Особистий внесок автора. Автор брав участь у виробленні вимог. Автор
реалізував проектування бази даних, проектування та розробку клієнтського та
серверного програмного забезпечення.
8
ЧДТУ 242061.017 ПЗ
1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ ПОСТАВЛЕНИХ
ЗАВДАНЬ
1.1 Додаток до диплома європейського зразка: підстави для
формування та форма
Додаток до диплома є документом, що видається випускникам вищих
навчальних закладів усіх форм власності і підпорядкування з метою надання
інформації, необхідної для об’єктивної оцінки кваліфікації вищої освіти, здобутої
особою, яка отримала диплом про вищу освіту. Додаток є дійсним лише з
дипломом про вищу освіту [2].
Додаток до диплома оформлюється українською та англійською мовами.
Виготовлення та видача Додатка здійснюються у порядку, що визначається
Міністерством освіти і науки України [2]. Виготовлення додатку здійснює
університет. В Черкаському державному технологічному університеті додаток до
диплома європейського зразка почали виготовляти в 2018 році.
Документ, на підставі якого ведеться розробка. Форму додатка до
диплома про вищу освіту європейського зразка (прийнятий до використання в
тому числі в Черкаському державному технічному університеті) можна
завантажити з сайту Міністерства освіти і науки України (МОН України) (рис.
1.1).
Рисунок 1.1 – Сторінка сайту МОН для завантаження форм дипломів та додатків
9
ЧДТУ 242061.017 ПЗ
Форму додатку до диплома про вищу освіту європейського зразка
зображено на (рис. 1.2) та (рис. 1.3).
Рисунок 1.2 – Форма додатку до диплома про вищу освіту європейського зразка
(1 та 2 сторінки)
Рисунок 1.3 – Форма додатку до диплома про вищу освіту європейського зразка
(3 та 4 сторінки)
10
ЧДТУ 242061.017 ПЗ
Форма документу була затверджена наказом МОН України від 25.01.2021
№ 102 “Про затвердження форм документів про вищу освіту (наукові ступені) та
додатка до них, зразка академічної довідки”.
Наказ “Про затвердження форм документів про вищу освіту (наукові
ступені) та додатка до них, зразка академічної довідки” від 25.01.2021 № 102,
опублікований на сайті МОН, зображено на (рис. 1.4).
Посилання на форму додатка для диплома в наказі “Про затвердження форм
документів про вищу освіту (наукові ступені) та додатка до них, зразка
академічної довідки” на сайті МОН зображено на (рис. 1.5).
Рисунок 1.4 – Наказ “Про затвердження форм документів про вищу освіту
(наукові ступені) та додатка до них, зразка академічної довідки” на сайті МОН
11
ЧДТУ 242061.017 ПЗ
Рисунок 1.5 – Наказ “Про затвердження форм документів про вищу освіту
(наукові ступені) та додатка до них, зразка академічної довідки” на сайті МОН –
посилання на форму додатка
1.2 Аналіз програм аналогів
Програма Diploma supplement — додаток до диплома про вищу освіту
європейського зразка. Додаток надає можливість об`єктивної оцінки кваліфікації
(ступеня) освіти, здобутої випускником вищого навчального закладу. Містить
розширену інформацію про отриману кваліфікацію та навчальні досягнення
випускника, необхідну для забезпечення міжнародної зрозумілості та визнання
отриманого випускником диплома про вищу освіту. Видається разом з
документом про вищу освіту та є невід’ємною його частиною [1].
Програма пропонує виконати наступні кроки для того, щоб сформувати
додаток до диплома [1]:
1 Згідно з порядком замовлення документів про освіту – зареєструвати
вузол ІВС «ОСВІТА» у разі, якщо ця процедура не була виконана раніше.
12
ЧДТУ 242061.017 ПЗ
Детальніше.
2 Отримати ключі електронно-цифрового підпису, якщо ця процедура не
була виконана раніше. Детальніше.
3 Для формування загальної бази знань, щодо кваліфікацій, заповнити для
кожної кваліфікації реєстраційну форму.
4 Перейти до роботи з новою програмою збору даних «Education», та
отримати ключі для роботи з нею.
Результат роботи по формуванню додатку до диплома проілюстровано на
(рис. 1.6).
Рисунок 1.6 – Ілюстрація додатку до диплома, сформованого за допомогою ІВС
«Освіта»
Особливості роботи програми:
– від терміну виконання пункту 1 залежить отримання можливості
виконання пункту 2 та пункту 3;
– пункту 3 вимагає кропіткої роботи по підготовці документів щодо
кваліфікацій та перекладу на англійську мову;
13
ЧДТУ 242061.017 ПЗ
– виконання пункту 4 можливе лише після здійснення пункту 2 (для початку
роботи програми) та пункту 3 (для формування замовлень на додаток).
Програма "ПС-ЄВРОДИПЛОМ" розроблена компанією Політек-Софт і
безкоштовно надається для використання закладам вищої освітих [2].
Програма "ПС-ЄВРОДИПЛОМ" може використовуватись при організації
процесу підготовки та виготовлення документів про освіту у вищих навчальних
закладах України (дипломів про вищу освіту) , форма яких встановлена Наказом
Міністерства освіти і науки України від 12.05.2015 № 525.
Основне призначення програми – конвертація XML-файлів з даними
студентів для виготовлення дипломів, які формуються Єдиною державною
електронною базою з питань освіти (ЄДЕБО), у файли формату MS Word. При
цьому структура результуючих *.doc-файлів може задаватись користувачем
(рис.1.7).
Основний принцип функціонування програми при генерації вихідного
документа – формування такого файлу як копії наперед створеного файлу-
шаблону з пошуком та заміною у ньому спеціальних маркерів (тегів) на
відповідні дані, що "прочитані" у XML-файлі.
Основні функції програми:
1 "Читання" вмісту спеціальних XML-файлів з даними студентів для
виготовлення дипломів, що формуються ЄДЕБО.
2 Відображення списку студентів, що містяться у "прочитаному"
програмою файлі з можливістю керування списком: фільтрації, вибору одного,
декількох або всіх студентів.
3 Автоматична генерація вихідного файлу з даними у форматі MS Word з
даними обраного студента в демонстраційному режимі на основі використання
вбудованого демо-шаблону диплома бакалавра.
4 Можливість попереднього "запам`ятовування" повних імен файлів-
шаблонів навчального закладу для кожного типу документа у форматі MS Word,
які містять спеціальні теги (шаблони готуються користувачами).
14
ЧДТУ 242061.017 ПЗ
5 Автоматичне розпізнавання потрібного варіанту шаблону для
конкретного студента на основі даних з XML-файлу.
6 Автоматична генерація вихідних файлів з даними для друку дипломів у
форматі MS Word, яка здійснюється програмою шляхом копіювання файлу-
шаблону у новий файл з одночасною автоматичною заміною тегів на відповідні
дані обраного студента, що "прочитані" програмою з ХМL-файла. Підтримується
як покроковий режим генерації (для кожного студента генерується файл та
відкривається у MS Word для демонстрації), так і пакетний режим.
7 Візуалізація переліку відповідних спеціальних тегів, які підтримуються
програмою, з метою перегляду, копіювання в буфер та перенесення у шаблони,
екран програми ПС-ЄВРОДИПЛОМ зображено на (рис.1.7).
Рисунок 1.7 – Стартовий екран програми ПС-ЄВРОДИПЛОМ
Передбачено два режими генерації вихідних файлів: покроковий режим і
пакетний режим.
У першому випадку обирається студент та натискається кнопка
«Покроковий режим» . Якщо потрібний шаблон встановлено і його структура
15
ЧДТУ 242061.017 ПЗ
правильна – буде здійснена генерація вихідного *.doc-файлу з іменем, що містить
ім`я студента та слово "Диплом". Файл буде збережений у папці Results, що
знаходиться поряд з файлом програми. Автоматично запуститься MS Word, в
якому буде відкрито згенерований файл.
Якщо для одного студента файл генерується декілька разів – у папці будуть
збережені всі версії файлу, додатково помічені номером версії (1), (2),…
Очевидно, слід для друку використовувати найновішу версію. Всі
попередні версії таких файлів згодом можна видалити.
Якщо попередньо було відмічено декілька студентів, то при натисканні
кнопки програма здійснить генерацію диплому тільки для першого відміченого у
списку студента.
Для виклику пакетного режиму генерації файлів обираємо потрібних
студентів та натискаємо кнопку «Покроковий режим». У цьому режимі MS Word
автоматично запускатись не буде.
Цілі розробки програми:
– загальною метою роботи є створення підсистеми існуючої інформаційної
системи університету для формування додатка до диплому у вигляді, який
вимагає Міністерство освіти і науки України в даний час.
Підцілі роботи:
– створити програмні засоби для працівників деканату, які дають
можливість вводити всю необхідну інформацію для формування додатка до
диплома;
– забезпечити формування додатка до диплома саме в тому вигляді, який
вимагає Міністерство освіти і науки України в даний час.
16
ЧДТУ 242061.017 ПЗ
ВИСНОВОК ДО 1 РОЗДІЛУ
Основне призначення програми – конвертація XML-файлів з даними
студентів для виготовлення дипломів, які формуються Єдиною державною
електронною базою з питань освіти (ЄДЕБО), у файли формату MS Word.
17
ЧДТУ 242061.017 ПЗ
2 ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У ПРАКТИКУ
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
ІНФОРМАЦІЙНИХ СИСТЕМ
2.1 Моделювання предметної області
2.1.1 Предметна область моделювання. Модель предметної області.
Словник предметної області.
Предметна область моделювання. Предметною областю даної роботи є
університет. Додаток до диплома європейського зразка формується в рамках
Інформаційно-аналітичної системи підтримки освітньої діяльності університету.
Дана інформаційно-аналітична система охоплює діяльність деканатів
університету та навчально-методичного відділу в галузі, що безпосередньо
стосується навчання студентів. Інформаційно-аналітична система супроводжує
навчання кожного студента від початку до кінця і зберігає в собі всю інформацію,
яка стосується навчання студента.
Модель предметної області. Дана інформація вводиться працівниками
деканатів та навчально-методичного відділу на різних етапах навчання студента.
Структура основних інформаційних об’єктів предметної галузі показана на
(рис.2.1).
Рисунок 2.1 – Діаграма предметної області
18
ЧДТУ 242061.017 ПЗ
Центральним елементом діаграми є поняття «Період навчання студента для
здобуття певного фаху». Зазвичай, дане поняття називається просто «студент».
Але в даній предметній галузі потрібно чітко розрізняти поняття студента як
людини (фізичної особи) і студента як того, що навчається. Це різні інформаційні
поняття, в яких різні інформаційні атрибути. Тому дані поняття в предметній
галузі є окремими.
Словник предметної області
В предметній області існують наступні доменні об’єкти:
студент;
період навчання студента для здобуття певного фаху;
ступінь вищої освіти;
спеціальність;
спеціалізація;
освітня програма;
галузь знань;
програмні результати навчання;
предмет;
група студентів;
вибірковий предмет;
оцінка;
кафедра;
викладач;
навчальний рік;
відрахування студента;
академвідпустка;
інші заклади вищої освіти, звідки переводилися студенти.
2.1.2 Елементи моделювання предметної області
При побудові моделей встановлюється (або обирається) чітка підмножина
використаних або необхідних елементів і зв’язків мови UML. При виборі більшої
19
ЧДТУ 242061.017 ПЗ
підмножини ніж необхідна для використання, може впасти рівень прозорості і
інформативності моделей (рис. 2.2).
Рисунок 2.2 – Елементи мови UML
Важливою складовою моделі є взаємодії між сутностями. Вони описують
як сутності повинні взаємодіяти між собою для коректної роботи системи, модель
якої створюється. Типи взаємодій на діаграмах позначаються відношеннями (рис.
2.3).
Рисунок 2.3 – Зв’язки мови UML
20
ЧДТУ 242061.017 ПЗ
2.1.3 Робоча область моделювання
На рис. 2.4 зображено модель предметної області для програми, що
розробляється.
Рисунок 2.4 – Модель робочої області
2.2 Формування та аналіз вимог
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні
вимоги.
Вимоги до програмного забезпечення:
– програма буде експлуатуватися на хмарному сервері з операційною
системою Ubuntu 18.04.6 LTS (Bionic Beaver). Веб-сервер використовується Jetty;
– характеристики процесора сервера вказано в (табл. 2.1), а характеристики
оперативної пам’яті - в (табл. 2.2).
21
ЧДТУ 242061.017 ПЗ
Таблиця 2.1
Характеристики процесора
Архітектура: x86_64
CPU: 64-bit
Процесорів: 1
On-line CPU(s) list: 0,1,3,5
Off-line CPU(s) list: 2,4,6-11
Назва моделі: Intel i-7 3600 8-Core Processor
Лінія процесора CPU: 19
Модель: 113
Потоків на ядро: 2
Ядер: 8
Socket(s): 1
Stepping: 0
Frequency boost: enabled
CPU max GHz: 4
CPU min GHz: 3
BogoMIPS: 7548.97
Таблиця 2.2
Використання оперативної пам’яті
Total used free shared buff/cache available mem: 8192 1968 6039 85 183 6223
Swap: 2048 0 2047
Розмір жорсткого диску - 100 ГБ
Програма також може експлуатуватись на інших платформах, наприклад
Windows Server.
Вимоги до програмної документації:
22
ЧДТУ 242061.017 ПЗ
– програмна документація серверної частини повинна бути зроблена, як
відображення REST API за правилами Swagger, що зображена на (рис.2.2).
Рисунок 2.2 – Приклад відображення API в Swagger
Тимчасові характеристики і кількість пам 'яті
Кількість пам’яті:
– 50 МБ для серверної частини оперативної пам’яті, дискової пам’яті – 200
МБ;
– 30 МБ для клієнтської частини оперативної пам’яті.
Контроль вхідної і вихідної інформації:
– контроль вхідної та вихідної інформації здійснюють працівники деканату
та навчально-методичного відділу;
– час відновлення після відмови – 10 секунд.
Умови експлуатації:
– серверна частина може бути розгорнута на будь-якому сервері (Windows,
Unix, Linux). На сервері повинні бути встановлені JDK 17 та PostreSQL 14;
– клієнтська частина працює в браузерах Google Chrome, Mozilla Firefox,
Opera, Microsoft Edge.
Первинні вимоги:
23
ЧДТУ 242061.017 ПЗ
1 Працівник деканату може призначити предмети одному студентові або
певній кількості студентів.
2 Працівник деканату може виставити оцінки з предметів, призначених
одному студентові або певній кількості студентів.
3 Працівник деканату може сформувати додаток до диплома, в якому в
окремих таблицях відображені оцінки, здобуті в університеті та поза ним.
Детальні вимоги:
1 Потрібно створити в базі даних окрему таблицю, в якій зберігається
інформація про предмети, призначені індивідуально студентам.
2 В серверній частині повинні бути контролери для читання списку
індивідуальних дисциплін, додавання списку індивідуальних дисциплін, а також
модифікацію, видалення однієї дисципліни.
3 В клієнтській частині повинен бути окремий екран для роботи з
індивідуальними дисциплінами для студентів. На даному екрані повинна бути
можливість:
– перегляд дисциплін, призначених як одному студенту, так і декільком
студентам, у вигляді таблиці;
– призначення довільної кількості предметів довільній кількості студентів
(предмети і студенти виділяються прапорцями);
– редагування предмета, призначеного студенту (відбувається у
модальному вікні);
– видалення предмету, призначеному студенту (з обов’язковим
підтвердженням).
4 В серверній частині повинні бути контролери для додавання оцінки з
предмету, призначеного індивідуально студенту та відображення даної оцінки.
5 В клієнтській частині повинен бути окремий екран для роботи з оцінками
з індивідуальних дисциплін для студентів. На даному екрані повинна бути
можливість вибору академічної групи студентів, введення оцінок з предметів,
призначених студентам даної групи. При цьому поля для введення оцінок повинні
бути тільки для тих предметів, які попередньо були призначені студентам.
24
ЧДТУ 242061.017 ПЗ
6 Додаток до диплома повинен формуватися на основі шаблону документа
у форматі docx. В шаблоні спеціальними плейсходерами позначаються місця, в
які будуть вставлятися дані з бази даних.
7 В шаблоні додатка повинні бути 2 таблиці оцінок – перша для звичайних
оцінок і друга для оцінок, отриманих студентом поза межами університету.
8 При формуванні додатка до диплома таблиця оцінок, отриманих
студентом поза межами університету, повинна відображатися лише тоді, коли такі
оцінки є (наприклад це справедливо для студентів скороченої форми навчання або
студентів, що перейшли з інших закладів вищої освіти).
Нефункціональні вимоги:
Документ повинен бути сформований в форматі docx і придатний для
подальшого ручного редагування.
Програма не повинна видавати помилок при формуванні документу,
документ повинен формуватися в будь-якому випадку.
Програма не повинна вимагати ручної правки документа більш ніж для 5%
документів.
Документ повинен формуватися не більше, ніж за 6 секунд.
При перевірці документу працівниками деканатів та навчально-
методичного відділу не повинно знаходитись помилок в шаблоні.
Додаток повинен формуватись не більше, ніж на 8 сторінок.
Додаток може сформувати працівник деканату або навчально-методичного
відділу.
Вимоги до функціональних характеристик, склад виконуваних функцій -
функції підготовки даних:
1 Окреме введення предметів, що перезараховуються, академрізниці та
звичайних предметів.
2 Введення інформації про освітню програму.
Формування додатка до диплому.
Вхідними даними для підсистеми є:
1 Документи Міністерства освіти і науки України.
25
ЧДТУ 242061.017 ПЗ
2 Освітні програми спеціальностей.
3 Відомості успішності.
4 Внутрішні документи Черкаського державного технологічного
університету.
5 Дані про студентів з Єдиної державної електронної бази в сфері освіти
(ЄДЕБО).
Вимоги до надійного функціонування:
1 Програма не повинна видавати помилок при формуванні документу,
документ повинен формуватися в будь-якому випадку.
2 При перевірці документу працівниками деканатів та навчально-
методичного відділу не повинно знаходитись помилок в шаблоні.
2.2.2 Формування вимог за допомогою діаграми прецедентів
Діаграми прецедентів (діаграми варіантів використання, Use Case Diagrams)
дозволяють отримати наглядне візуальне уявлення про вимоги користувачів та
поведінку системи з погляду користувача. Діаграма прецедентів розглядається як
важливий засіб для початкового моделювання динаміки роботи системи,
використовується для з’ясування вимог замовника до розроблюваної системи,
фіксації цих вимог у формі, яка дозволить проводити подальшу розробку.
Весь функціонал підсистеми формування сучасного додатка до диплому
можна розділити на 3 частини: функції, що виконуються на початку навчання
студента, функції, що виконуються вподовж навчання студента та функції, що
виконуються при завершенні навчання студента. В роботі з наповнення системи
інформацією, потрібною для формування додатка до диплома, беруть участь 3
ролі користувачів: працівник деканату, працівник навчально-методичного відділу
та адміністратор.
На початку навчання потрібно увести початкову інформацію про студентів,
що вступили до університету та про новосформовані групи студентів. Також за
потреби потрібно ввести або скорегувати інформацію про спеціальність, освітню
програму; це особливо характерно тоді, коли відбувається вступ на новостворену
освітню програму (рис. 2.3).
26
ЧДТУ 242061.017 ПЗ
Рисунок 2.3 – Діаграма прецедентів початку навчання для сучасного додатку до
диплома
Найбільше роботи з інформаційного наповнення системи інформацією,
потрібною для формування додатка до диплома, проводиться вподовж навчання
студента. Тут відображаються дії, пов’язані з періодами навчання студента
(студент може переривати своє навчання, будучи відрахованим або беручи
академвідпустку) та навчальними здобутками студента (насамперед предметами,
які той вивчав та оцінками, що отримав). Предмети, що вивчає студент
розділяються на 3 категорії:
1 Звичайні предмети, які вивчають всі студенти певної академічної групи;
2 Вибіркові дисципліни, де студент може сам обрати предмети для
вивчення;
3 Предмети, прив’язані до певного студента, наприклад, академрізниця або
перезарахування (рис. 2.4).
27
ЧДТУ 242061.017 ПЗ
Рисунок 2.4 – Діаграма прецедентів впродовж навчання підсистеми формування
сучасного додатку до диплома
В кінці навчання студента, безпосередньо перед формуванням додатка до
диплома, потрібно з одного боку перевірити правильність даних про студента, а з
іншого боку увести ту інформацію, яка стає відомою тільки при завершенні
студентом навчання (наприклад номер диплому або номер додатку до диплома)
діаграма прецедентів завершення навчання зображена на (рис. 2.5).
28
ЧДТУ 242061.017 ПЗ
Рисунок 2.5 – Діаграма прецедентів завершення навчання підсистеми
формування сучасного додатку до диплома
2.3 Проектування логічної структури програмного комплексу
2.3.1 Діаграми класів
Програмне забезпечення розроблялося на основі шаблону проектування
MVC (Model-View-Controller). Тому в основі проектуванні класів лежить розподіл
їх на контролери та сервіси, а також репозиторії та класи сутностей для роботи з
базою даних. Основним елементом логіки при побудові програмного
забезпечення є класи сервісів – на (рис. 2.6) зображено діаграму класу сервісу
предметів для студента.
29
ЧДТУ 242061.017 ПЗ
Рисунок 2.6 – Діаграма класів модуля сервіса предметів для студента
Клас сервісу предметів для студента пов’язаний з класами репозиторію, які
в свою чергу працюють з класами сутностей – CourseForStudent, CourseForGroup,
SelectiveCourse, діаграми яких зображено на (рисунках 2.7, 2.8, 2.9).
Рисунок 2.7 –Діграми класів модуля предметів для студента
30
ЧДТУ 242061.017 ПЗ
Рисунок 2.8 – Діаграма класів модуля предметів для груп
Рисунок 2.9 – Діаграма класів модуля вибіркової дисципліни
31
ЧДТУ 242061.017 ПЗ
Діаграму CoursesForStudentController зображено на (рис. 2.10).
Рисунок 2.10 – Діаграма класів з атрибутами
2.3.2 Діаграми пакетів
Пакети – це спосіб групування елементів програми за допомогою мови
UML, насамперед класів програми. Пакети застосовують, щоб розбивати великі
моделі на частини, групуючи класи, що мають деяку спільність. Це значною
мірою спрощує розуміння і підтримку проектованої моделі.
Серверна частина розроблена з використанням Spring Framework, що
передбачає використання шаблону проектування MVC (Model-View-Controller).
Тому розбивка на пакети базується на виділенні контролерів, сервісів та
репозиторіїв в пакети вищого рівня. Діаграма пакетів серверної частини
зображена на (рис. 2.11).
Рисунок 2.11 – Діаграма пакетів серверної частини підсистеми формування
сучасного додатку до диплома
32
ЧДТУ 242061.017 ПЗ
В клієнтській частині пакети відповідають компонентам Angular, на основі
якого розроблено клієнтську частину. Діаграма пакетів клієнтської частини
зображена на (рис. 2.12).
Рисунок 2.12 – Діаграма пакетів клієнтської частини програмного модуля
2.4 Архітектурне проектування
2.4.1 Діаграма компонентів
Будівельним блоком для створення архітектури об’єктно-орієнтованої
системи вважається компонентів програмного забезпечення. Діаграма
компонентів показує визначення, внутрішню структуру і залежності набору
компонентів. В якості компонентів можуть виступати файли, бази даних,
бібліотеки, модулі, пакети, інтерфейси ІС тощо.
Компонент – елемент моделі, що представляє деяку модульну частину
системи з інкапсульованим вмістом. У мові UML в якості компонента може
розглядатися будь-який автономний елемент програмної системи або підсистеми.
Внутрішні частини компонентів приховані і недоступні ззовні, окрім тих,
які надаються за допомогою його інтерфейсів. Компоненти можуть бути пов’язані
33
ЧДТУ 242061.017 ПЗ
між собою за допомогою певних відношень. Ці відношення визначені так, щоб
розглядати компонент як можна незалежнішими від свого оточення.
Оскільки розроблювана система складається з серверної частини і
клієнтської частини, то можна виокремити компоненти серверної та клієнтської
частини відповідно.
В серверній частині відбувається робота з базою даних. Крім того важливою
складовою є використання шаблону проектування MVC. Якраз ці чинники в
значній мірі впливають на розподіл компонентів, серед яких виділяються
контролери, сервіси та репозиторії, які складають шари багатошарової моделі
побудови програмного забезпечення. Компоненти репозиторіїв служать для
безпосередньої роботи з базою даних і мають зв’язки з базою даних з одного боку
та сервісами з іншого боку. В свою чергу сервіси пов’язані з контролерами з
одного боку та репозиторіями з іншого боку. Контролери надають WEB API для
клієнтської частини. Діаграма компонентів серверної частини зображена на (рис.
2.13).
Рисунок 2.13 – Діаграма компонентів серверної частини програмного модуля
34
ЧДТУ 242061.017 ПЗ
Модель компонентів клієнтської частини базується на моделі компонентів
Angular, яка передбачає розбивання програми на компоненти та модулі; при
цьому кожен компонент складається з відповідного HTML, CSS і TypeScript
файла. Компоненти часто мають підкомпоненти. Зв’язок компонентів клієнтської
частини відбувається через центральний компонент, який являє собою
центральну сторінку.
Основними компонентами клієнтської частини, спроектованими та
розробленими в рамках роботи, є відображення предметів призначених
студентам, редагування атрибутів призначених предметів, призначення кількох
предметів кільком студентам, відображення оцінок з предметів для студента,
введення оцінок з предметів для студента, формування додатка до диплома,
діаграма компонентів клієнтської частини зображена на (рис. 2.14).
Рисунок 2.14 – Діаграма компонентів клієнтської частини програмного модуля
системи сучасного додатка до диплома
35
ЧДТУ 242061.017 ПЗ
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання.
Система працює як клієнт-серверний комплекс. На сервері
розташовуються:
– серверне програмне забезпечення у вигляді файлу chdtu-dean-office.jar,
який запускається як сервіс в ОС Linux і постійно працює, надаючи клієнтській
частині в користування REST API;
– клієнтське програмне забезпечення у вигляді набору файлів з
розширенням js та css, які є скомпільованими файлами клієнтської програми і
працюють в рамках сервера nginx;
– база даних deanoffice, яка працює в рамках сервера Postgresql і яка
взаємодіє з серверною частиною, діаграма розгортання зображена на (рис.2.15).
Рисунок 2.15 – Діаграма розгортання програмного модуля системи сучасного
додатка до диплома
36
ЧДТУ 242061.017 ПЗ
2.5 Моделювання поведінки системи
2.5.1 Діаграма діяльності
Діаграми діяльності, так само як і блок-схеми, – загальний та потужний
засіб опису алгоритмів. Їх з успіхом також можна застосовувати для моделювання
поведінки людей, пристроїв і організацій при виконанні бізнес-процесів, діаграма
діяльності зображена на (рис.2.16).
Рисунок 2.16 – Діаграма діяльності при реалізації бізнес-процесу формування
додатка до диплома
37
ЧДТУ 242061.017 ПЗ
2.5.2 Діаграма послідовності
Діаграма послідовності призначена для моделювання поведінки у формі
опису протоколу сеансу обміну повідомленнями між взаємодіючими
екземплярами класифікаторів під час виконання одного з можливих сценаріїв.
Діаграма послідовності зображена на (рис.2.17).
Рисунок 2.17 – Діаграма послідовності обміну повідомленнями між
взаємодіючими сервісами програмного модуля
2.5.3 Діаграма комунікації
Діаграма комунікації описує поведінку як взаємодію, тобто як протокол
обміну повідомлень між об’єктами. Основними об’єктами, виділеними на
діаграмі, є:
– student enrollment – зарахування студента;
– assigning items to the group – призначення предметів для групи;
38
ЧДТУ 242061.017 ПЗ
designation of selective subjects – призначення вибіркових предметів;
– appointment of individual subjects – призначення індивідуальних
предметів;
assessment – виставлення оцінок;
– formation of tables of educational achievements in the application –
формування таблиць навчальних досягнень в додатку, діаграма комунікації
зображена на (рис.2.18).
Рисунок 2.18 – Діаграма комунікації між об’єктами програмного модуля системи
сучасного додатка до диплома
2.5.4 Діаграма скінченного автомату
Діаграма кінцевого автомата (діаграма станів) відображає кінцевий автомат,
виділяючи потік управління, наступний від стану до стану. Кінцевий автомат –
поведінка, яка визначає послідовність станів в ході існування об’єкту. В даній
39
ЧДТУ 242061.017 ПЗ
роботі діаграма кінцевого автомата відсутня, тому що потоки управління та стани
достатньо повно виражені в попередніх діаграмах.
40
ЧДТУ 242061.017 ПЗ
ВИСНОВОК ДО 2 РОЗДІЛУ
Дана інформаційно-аналітична система охоплює діяльність деканатів
університету та навчально-методичного відділу в галузі, що безпосередньо
стосується навчання студентів. Інформаційно-аналітична система супроводжує
навчання кожного студента від початку до кінця і зберігає в собі всю інформацію,
яка стосується навчання студента. Дана інформація вводиться працівниками
деканатів та навчально-методичного відділу на різних етапах навчання студента.
41
ЧДТУ 242061.017 ПЗ
3. РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
3.1 Розробка програмного комплексу
3.1.1 Обґрунтування вибору засобів реалізації
Мова програмування для серверної частини – JAVA 17. Використовується
SpringFramework 5.5.3 та SpringBoot 2.5.7.
Мова програмування для клієнтської частини – TypeScript.
Використовується Angular Framework 8.2.
Опис технологій вибраних для розробки програмного забезпечення:
Java [3] — об'єктно-орієнтована мова програмування, випущена 1995 року
компанією «Sun Microsystems» як основний компонент платформи Java.
З точки зору синтаксису мова є спадкоємцем із C і C++, будучи дуже на них
схожою. Зокрема, взято за основу об'єктну модель С++, проте її модифіковано,
зокрема введено поняття інтерфейсу. В Java усунуто можливість появи деяких
конфліктних ситуацій, що могли виникнути через помилки програміста, зокрема
множинне спадкування та полегшено сам процес розробки об'єктно-орієнтованих
програм. Передусім Java розроблялась як крос-платформа мова, тому вона має
обмеження в низькорівневих можливостях для роботи напряму з апаратним
забезпеченням, що в порівнянні, наприклад, з C++ зменшує швидкість роботи
програм.
Spring Framework [4] — це популярний програмний фреймворк з
відкритим кодом, який забезпечує певні базові засоби для платформи Java, такі як
контейнери з підтримкою інверсії керування, аспектно-орієнтовано
програмування, вбудований шаблон проектування MVC, а також має багато
додаткових компонентів кожен з яких може бути інтегрований в програму за
потреби.
Основні особливості Spring Framework можуть бути використані будь-яким
застосунком Java, але є розширення для створення вебдодатків на платформі Java
EE.
42
ЧДТУ 242061.017 ПЗ
Spring Boot [5] — це фреймворк на основі Java з відкритим вихідним кодом,
розроблений компанією Pivotal Software. Завдяки швидкодії та простоті роботи
він став популярним рішенням для створення розгортань у вигляді архіву веб-
додатків (WAR) та автономних Java-додатків.
Spring Boot виділяється серед інших фреймворків, оскільки він надає
розробникам програмного забезпечення можливість автоматичного
налаштування, інтеграцію з менеджерами пакетів, велику кількість різноманітних
інструментів, дозволяючи створювати великі програмні системи на базі Spring
Framework.
Spring JPA [6] — стандартизований інтерфейс для ORM-систем для Java.
Використовується часто разом з Hibernate, але є загалом незалежним від нього і
може використовуватися з іншими ORM-системами також.
Hibernate [7] — бібліотека, яка дає можливість забезпечити відображення
між об'єктними та реляційними структурами даних (object-relational mapping,
ORM) для мови програмування Java. Hibernate є програмним забезпеченням з
відкритим кодом, яке поширюється з GNU ліцензією та надає легкий для
використання фреймворк для прозорого відображення даних між об'єктно-
орієнтованою моделлю, що використовується в програмах і традиційною для баз
даних реляційною моделлю.
PostgreSQL [8] — об'єктно-реляційна система керування базами даних
(СКБД). Є альтернативою як комерційним СКБД (Oracle Database, Microsoft SQL
Server, IBM DB2 та інші), так і СКБД з відкритим кодом (MySQL, Firebird,
SQLite).
На відміну від інших проєктів популярних серверів з відкритим кодом,
такими як MySQL, сервер PostgreSQL не розробляється якоюсь однією
компанією, її розробка ведеться завдяки співпраці багатьох людей та компаній,
які використовують цей сервер та вдосконалюють його, додаючи до нього
найпередовіші технологічні рішення.
Сервер PostgreSQL написаний на мові C. Він має низку досить унікальних
властивостей наприклад можливість використовувати схеми. В даній роботі
43
ЧДТУ 242061.017 ПЗ
використовуються такі можливості PostreSQL, як таблиці, послідовності,
обмеження (унікальність, зовнішні ключі), тригери.
Flyway [9] — інструментарій для супроводу баз даних і синхронізації їхньої
структури з пов'язаним із нею програмним забезпеченням. Flyway можна
розглядати як аналог системи контролю версій для БД, який виконує завдання
автоматизації відображення змін у структурі бази даних для відповідності версії
БД і версії програмного забезпечення, що працює з цією БД. Застосування Flyway
можливо на будь-яких системах для яких доступна мова Java, в тому числі
Windows, macOS, Linux і Android.
Gradle [10] — система автоматичного збирання, яка далі розвиває
принципи, що були запропоновані в Apache Ant та Apache Maven і використовує
предметно-орієнтовану мову (DSL) на основі мови Groovy замість традиційної
XML-подібної форми представлення конфігурації проєкту.
На відміну від Apache Maven, заснованого на концепції життєвого циклу
проєкту, і Apache Ant, в якому порядок виконання задач (targets) визначається
відношеннями залежності (depends-on), Gradle використовує спрямований
ациклічний граф для визначення порядку виконання завдань.
Gradle було розроблено для розробки великих проєктів, які можуть
збільшуватися і підтримує інкрементальне збирання. Він визначає, які частини
проекту було змінено, і виконує тільки ті задачі, які залежать від змінених частин.
Swagger [11] - це специфікація машиночитабельних файлів з інтерфейсами,
для опису, створення, використання і візуалізації REST веб сервісів. Існують
різноманітні інструменти що можуть генерувати код, документацію і тести за
файлом з описом інтерфейсу. В даній роботі Swagger використовується для
тестування серверної частини на рівні API. Це досить зручно оскільки Swagger
показує всі ендпоінти, які є в контролерах серверної частини, і пропонує
структуру параметрів.
Git [12] — розподілена система керування версіями файлів та спільної
роботи. Git є однією з найефективніших, надійних і високопродуктивних систем
керування версіями, що надає гнучкі засоби нелінійної розробки, що базуються
44
ЧДТУ 242061.017 ПЗ
на відгалуженні і злитті гілок. В даний час Git є найпопулярнішим інструментом
в цій сфері, який активно використовується IT-компаніями в розробці
комерційного програмного забезпечення. Для забезпечення цілісності історії та
стійкості до змін заднім числом використовуються криптографічні методи. В
даній роботі використовувався сервіс GitHub.com для центалізованого
збереження коду як серверної так і клієнської частини, всіх версій, з можливістю
доступу всіх розробників задіяних в проекті.
IntelliJ IDEA [13] — інтегроване середовище розробки, що може
використовуватися з різними мовами програмування (Java, Python, тощо),
розроблене компанією JetBrains. Середовище існує двох версіях: як безкоштовна
версія «Community Edition» з неповною функціональністю, зокрема відсутніми
багатьма засобами для веб-розробки і повнофункціональної комерційної версії
«Ultimate Edition», для якої розробники проектів з відкритим кодом мають
можливість отримати безкоштовну ліцензію, наприклад, маючи університетську
електронну пошту. IntelliJ IDEA є найпопулярнішим інструментом в середовищі
програмістів завдяки розвиненим засобам генерації коду, пошуку помилок,
рефакторингу коду, тощо.
Lombok [14] — це бібліотека Java, що дозволяє скоротити шаблонний код.
У Lombok пропонуються різні анотації, які дають можливість замінити
непотрібний повторюваний код, написання якого лише відволікає програміста від
основних задач. Наприклад, Lombok може самостійно генерувати безаргументні
конструктори, методи toString(), equals() і hashCode(), get і set методи, для чого
потрібно просто написати кілька анотацій. Також, ця бібліотека добре
інтегрується з IDE, наприклад, IntelliJ IDEA.
TypeScript [15] — мова програмування, представлена Microsoft восени
2012; позиціонується як засіб розробки вебзастосунків, що розширює можливості
JavaScript. Розробником мови TypeScript є Андерс Гейлсберг, який створив
раніше C#, Turbo Pascal і Delphi.
45
ЧДТУ 242061.017 ПЗ
TypeScript є зворотньо сумісним із JavaScript. Фактично, після компіляції
програму на TypeScript можна виконувати у будь-якому сучасному браузері або
використовувати спільно із серверною платформою Node.js.
Angular [16] — написаний на TypeScript front-end фреймворк з відкритим
кодом, який розробляється під керівництвом Angular Team у компанії Google, а
також спільнотою приватних розробників та корпорацій.
Angular — це ретельно переписаний AngularJS. Починаючи з 9 версії
Angular всі нові програми використовують компілятор Ivy. Команда Angular
працюватиме над покращенням цього компілятора, що в свою чергу має
призвести до зменшення загального розміру пакунка. Очікується, що кожна
наступна версія буде зворотно сумісною з попередньою. В даному проекті
використовується Angular версія 9, планується перехід на новішу версію.
Bootstrap [17] — це безкоштовний набір інструментів з відкритим кодом,
призначений для створення веб-сайтів та веб-застосунків, який містить шаблони
CSS[18] та HTML[19] для різних елементів інтерфейсу, зокрема форм, кнопок,
навігації та інших компонентів, а також додаткові розширення JavaScript [20]. Він
спрощує розробку динамічних веб-сайтів і веб-застосунків.
Bootstrap клієнтський фреймворк, тобто інтерфейс для користувача, на
відміну від коду серверної сторони, який знаходиться на сервері. Репозиторій із
цим фреймворком є одним із найпопулярніших на GitHub [21]. Серед інших, його
використовують NASA [22] і MSNBC [23].
3.1.2 Опис структурної (функціональної) схеми
Структурна схема програмного забезпечення інформаційної системи
визначає основні функціональні частини, їх зв’язки та призначення. Основними
функціональними частинами є:
– призначення предметів;
– оцінки;
– формування додатка до диплома.
Основними структурними блоками функціональних частин є: предмети для
студента, предмети для групи, вибіркові предмети, оцінки з предметів для
46
ЧДТУ 242061.017 ПЗ
студента, оцінки з предметів для групи, оцінки з вибіркових предметів (рис. 3.1)
Функціональна схема зображена на (рис.3.2).
Рисунок 3.1 – Структурна схема
Рисунок 3.2– Функціональна схема
47
ЧДТУ 242061.017 ПЗ
3.1.3 Опис логічної схеми системи
Логічною схемою є послідовність дій, що відбувається у програмному
забезпеченні, яка призводить до певного результату, тому формою опису логічної
схеми є опис алгоритму функціонування програмного забезпечення системи, який
подається у вигляді блок-схеми алгоритму. Опис логічної схеми системи показано
на (рис. 3.3).
Рисунок 3.3 – Логічна схема
48
ЧДТУ 242061.017 ПЗ
3.1.4 Розробка бази даних
База даних є важливою складовою інформаційних систем. Основними
таблицями бази даних є таблиці, які відображають інформацію про студентів,
предмети, оцінки. Загальна структура частини бази даних, що
безпосередньо стосується формування додатку до диплома, зображена на (рис.
3.4).
Рисунок 3.4 – Таблиця Database
49
ЧДТУ 242061.017 ПЗ
Таблиця courses_for_students призначена для збереження інформації про
предмети призначені індивідуально студентам, такі як академрізниця,
перезараховані предмети, тощо. Таблиця courses_for_students зображена на (рис.
3.5).
Рисунок 3.5 – Таблиця courses_for_students в базі даних
Таблиця courses_for_groups призначена для збереження інформації про
предмети, призначені групами студентів, а саме: дати екзаменів, предмети, групи
студентів, викладачі, академрізниця, тощо. Таблиця courses_for_groups зображена
на (рис. 3.6).
Рисунок 3.6 – Таблиця courses_for_groups в базі даних
50
ЧДТУ 242061.017 ПЗ
Таблиця selective_course призначена для збереження інформації про
вибіркові предмети, а саме: викладачі, навчальні роки, кафедра, ім’я групи,
предмет, тощо. Таблиця selective_course зображена на (рис. 3.7).
Рисунок 3.7 – Таблиця selective_course в базі даних
Таблиця selective_courses_student_degrees призначена для збереження
інформації про вибіркові предмети призначені студентам, а саме: студенти,
вибіркові предмети, тощо. Таблиця selective_courses_student_degrees зображена
на (рис. 3.8).
51
ЧДТУ 242061.017 ПЗ
Рисунок 3.8 – Таблиця selective_courses_student_degrees в базі даних
Таблиця course_name призначена для збереження інформації про назви
предметів, а саме: назва на українській та англійській мові, абревіатура, тощо.
Таблиця course_name зображена на (рис. 3.9).
Рисунок 3.9 – Таблиця course_name в базі даних
Таблиця course призначена для збереження інформації про предмет, а саме:
кредити, години, годин за кредити, семестр, ім’я курсу, тощо. Таблиця course
зображена на (рис. 3.10).
52
ЧДТУ 242061.017 ПЗ
Рисунок 3.10 – Таблиця course в базі даних
Таблиця grade призначена для збереження інформації про оцінки, а саме:
бали, предмети, семестр, студенти, академрізниця тощо. Таблиця grade зображена
на (рис. 3.11).
Рисунок 3.11 – Таблиця grade в базі даних
Таблиця student_expel призначена для збереження інформації про
відрахування студентів, а саме: дати звернення, дати виключення, дата
53
ЧДТУ 242061.017 ПЗ
замовлення, номер замовлення, студентські ступені, академрізниця тощо.
Таблиця student_expel зображена на (рис. 3.12).
Рисунок 3.12 – Таблиця student_expel в базі даних
Таблиця student_previous_university призначена для збереження інформації
про попередній заклад навчання студента, а саме: студент, ім’я університету на
українській та англійській мові, дата початку навчання, номер академічного
сертифікату, тощо. Таблиця student_previous_university зображена на (рис. 3.13).
Рисунок 3.13 – Таблиця student_previous_university в базі даних
54
ЧДТУ 242061.017 ПЗ
Таблиця student_degree призначена для збереження інформації про
студента, а саме: активність, контактні номера, дата диплома, оплата, тощо.
Таблиця student_degree зображена на (рис. 3.14).
Рисунок 3.14 – Таблиця student_degree в базі даних
55
ЧДТУ 242061.017 ПЗ
Таблиця student призначена для збереження інформації про студента, а
саме: прізвище, ім’я, по батькові, стать, дата народження, електронна пошта,
тощо. Таблиця student зображена на (рис. 3.14).
Рисунок 3.15 – Таблиця student в базі даних
56
ЧДТУ 242061.017 ПЗ
3.1.5 Розробка інтерфейсу користувача
Інтерфейс забезпечує взаємодію користувача та програмно-технічного
забезпечення ІС, зображено на (рис. 3.16, 3.17, 3.18).
Клієнтська частина розроблялася на основі фреймворка Angular.
Основними вікнами, в яких відбувається робота з функціоналом, що стосується
підготовки даних для формування додатка до диплома та самого формування
додатка до диплома такі:
– призначення предметів групам студентів;
– призначення предметів індивідуально студентам;
– призначення вибіркових предметів студентам;
– виставлення оцінок;
– формування додатка до диплома.
Рисунок 3.16 – Інтерфейс користувача: предмети для груп
При побудові інтерфейса широко використовувалися таблиці, випадаючі
списки та кнопки. У вікнах призначення предметів в верхній частині зазвичай
57
ЧДТУ 242061.017 ПЗ
розташовуються елементи введення, які призначені для вибору того що і кому
буде призначатися. В нижній частині зазвичай розташовуються елементи, що
відображають вибрані предмети і дають можливість з ними працювати.
Рисунок 3.17 – Інтерфейс користувача: вибіркові предмети
Рисунок 3.18 – Інтерфейс користувача: формування додатка до диплома
58
ЧДТУ 242061.017 ПЗ
3.1.6 Опис розробки програмних компонентів
Опис супроводжується частинами тексту модуля з коментарями. Опис
розробки програмних компонентів має відомості про використані методи,
технології.
Програмне забезпечення розроблялося на основі шаблону проектування
MVC (Model-View-Controller). Тому в основі проектуванні класів лежить розподіл
їх на контролери та сервіси, а також репозиторії та класи сутностей для роботи з
базою даних. Структура основних класів формування предметів для студента (з
методами цих класів) зображена на (рис. 3.19, 3.20, 3.21).
Рисунок 3.19 – Класи серверної частини – формування предметів для студента
59
ЧДТУ 242061.017 ПЗ
Рисунок 3.20 – Класи серверної частини – формування додатка до диплома
Рисунок 3.21 – Класи клієнтської частини – компонент предметів для студента
60
ЧДТУ 242061.017 ПЗ
3.2 Тестування системи
Тестування програмного забезпечення [24] — це технічне дослідження,
задачею якого є виявлення інформації про наявність помилок в програмному
забезпеченні відносно контексту, в якому воно має використовуватися.
Тестування включає процес пошуку помилок та дефектів, а також випробування
складових програмного забезпечення з метою його оцінки.
Ручне тестування (manual testing) [25] - це процес ручної перевірки
програмного забезпечення на помилки. В даній роботі використовувалося ручне
тестування для пошуку помилок. Для цього використовувалося написаним у
вигляді таблиць планом тестування з варіантами використання (test cases).
Смоук тестування (Smoke testing) [26], з мінімальним набором тестів на явні
помилки. Цей тест зазвичай виконується самим програмістом. Програму, що не
пройшла такий тест, не має сенсу передавати на глибше тестування.
Регресивне тестування – має на меті виявлення помилок, що були внесені в
програму у функції, що успішно пройшли попередні перевірки.
Функціональне тестування [27] – тестування функцій системи, тобто
безпосередньо того, що являє цінність програми.
Тестування продуктивності [28] – перевірка на те, що робота програмного
забезпеченняи відбувається з задовільною швидкістю.
Варіанти дій користувача для функціонального тестування, які дають
можливість перевірити функції програми, дано в таблиці 3.1.
Тест-кейси для тестування формування додатку до диплома показано в
таблиці 3.2.
Тест-кейси для тестування формування індивідуальних предметів для
студента показано в таблиці 3.3.
61
ЧДТУ 242061.017 ПЗ
Таблиця 3.1
Варіанти дій користувача для функціонального тестування
Функція Вид Рівень
тестування ризику
Працівник деканату може переглядати предмети, Ручне L
призначені індивідуально студентові.
Працівник деканату може додати студентові Ручне H
індивідуальні предмети.
Працівник деканату може додати групі студентів Ручне H
індивідуальні предмети.
Працівник деканату може скопіювати
індивідуальні предмети від одного студента до Ручне M
іншого студента.
Працівник деканату може редагувати
індивідуальний предмет призначений Ручне M
студентові.
Працівник деканату може видалити Ручне H
індивідуальні предмети призначені студентові.
Працівник деканату може переглянути всі Ручне L
предмети студента в певному семестрі.
Працівник деканату може переглядати оцінки Ручне L
студентів з індивідуальних предметів.
Працівник деканату може редагувати оцінки Ручне H
студентів з індивідуальних предметів.
Працівник деканату може сформувати додаток Ручне H
до диплома.
62
ЧДТУ 242061.017 ПЗ
Таблиця 3.2
Тест-кейси для тестування формування додатку до диплома
Ідентифіка- Пріори Вимога, Моду- Підмо- Назва та Результат
тор -тет яка ль дуль кроки тест- за
пов’язана додатку кейсу кроками
з тест- тест-кейсу
кейсом
TC_570.1 A 570 Форм Форму- Формуван- 1.Відобра-
уван- вання ня таблиці жається
ня докумен пере- сторінка
додат- -ту зараховани Додатків
ку до х предметів до дипло-
дипло ма.
-ма 1. Зайти в
розділ меню 2.Відобра-
Додатку до жено
диплома. студентів
2. Вибрати групи
групу ПЗС-
2144 3.Заванта
3. Вибрати жився
студента файл
Бакалова і додатку в
натиснути форматі
кнопку docx.
Сформувати
додаток 4. На
4. Відкрити сторінці
файл присутні 2
додатку. таблиці: з
Перейти на оцінками
сторінку 3. отримани
ми в
універси-
теті та
перезара-
хованими
оцінками.
63
ЧДТУ 242061.017 ПЗ
Таблиця 3.3
Тест-кейси для тестування формування індивідуальних предметів для
студента
Ідентифіка Пріори Вимога Моду- Підмо- Назва та Результат за
тор тет яка ль дуль кроки тест- кроками тест-
пов’яза додатку кейсу кейсу
на з
тест-
кейсом
TC_568.1 B 568 Індиві Призна Відображе 1.Відобража-
ду- че-ння ння ється вікно
альні індиві- предметів Предмети для
предме дуаль- 1. Вибрати студентів
-ти для них пункт
студен предме- меню
-та тів для Початок 2.Відображаю
студен- року - ться студенти
та Предмети групи ПЗС-
для 2144
студентів.
2. Вибрати 3. На панелі
групу ПЗС- предметів
2144 відображено
вибрані для
3. Вибрати даного
студента студента
Бакалова предмети.
3.2.1 Модульне тестування
Модульне тестування[29] – це процес перевірки окремих програмних
модулів, а саме методів класів, що входять до складу розробленого програмного
забезпечення програм. Модульне тестування проводиться розробником і дозволяє
перевіряти всі внутрішні структури і функції у кожному класі. Цей вид тестування
є частиною етапу конструювання ПЗ. Результати модульного тестування
зображено на таблиці 3.4.
64
ЧДТУ 242061.017 ПЗ
Таблиця 3.4
Результати модульного тестування
Компонент Результат
courses-for-students.component.ts Успішний запуск
courses-for-groups.component.ts Успішне завантаження залежностей
selective-course.component.ts Успішне завантаження залежностей
CoursesForStudentsService.java Успішне завантаження залежностей
3.2.2 Інтеграційне тестування
Системна інтеграція [30] — поєднання компонентів підсистем в одну
об'єднану систему та забезпечення їх роботи у якості єдиної системи. Інтеграція
полягає у формуванні інтегрованих рішень, призначених для досягнення
максимальної ефективності роботи системи через налагодження ефективної
взаємодії її підсистем. В даній роботі інтеграція полягала в інтегруванні
розробленого модуля в інформаційну систему університету. Результати
інтеграційного тестування зображено на таблиці 3.5.
Таблиця 3.5
Результати інтеграційного тестування
Компонент Результат
CoursesForStudentsService.java Успішний запуск
courses-for-groups.component.ts Успішне завантаження залежностей
65
ЧДТУ 242061.017 ПЗ
selective-course.component.ts Успішне завантаження залежностей
courses-for-students.component.ts Успішне завантаження залежностей
3.2.3 Системне тестування
Для перевірки програмної системи використоується системне
тестування[31] її функціонування на відповідність специфікаціям вимог
замовника. Результати системного тестування зображено на таблиці 3.6.
Таблиця 3.6
Результати системного тестування
Компонент Результат
courses-for-groups.component.ts Успішний запуск
courses-for-students.component.ts Успішне завантаження залежностей
selective-course.component.ts Успішне завантаження залежностей
courses-for-students.component.ts Успішне завантаження залежностей
3.2.4 Приймальне тестування
Організація, що відповідає за інсталяцію, проводить приймальне
тестування[32], супровід програмної системи та навчання кінцевого користувача.
Результати приймального тестування зображено на таблиці 3.7.
66
ЧДТУ 242061.017 ПЗ
Таблиця 3.7
Результати приймального тестування
Компонент Результат
courses-for-students.component.ts Успішний запуск
courses-for-groups.component.ts Успішне завантаження залежностей
selective-course.component.ts Успішне завантаження залежностей
CoursesForStudentsService.java Успішне завантаження залежностей
3.3 Приклади впровадженого програмного комплексу
Впровадження програмного забезпечення (або Установка програмного
забезпечення) [33] — процес встановлення програмного забезпечення
(застосунку) на сервер або комп'ютер кінцевого користувача. Воно виконується
вручну або спеціальною програмою, наприклад менеджером пакунків,
пов’язаними із засобами розробки (наприклад, RPM[34] і APT[35] у Linux[36],
Windows Installer[37] у Microsoft Windows[38]). В даній роботі використовувалися
менеджери пакунків Gradle та npm.
Супровід програмного забезпечення[40] — процес покращення, оптимізації
та виправлення дефектів у програмному забезпеченні після його вводу до
експлуатації.
Порядок контролю та приймання - загальні вимоги до приймання:
1 Можна ввести в програму всю інформацію, яка потрібна для формування
додатка до диплому з усіма потрібними атрибутами.
2 Можна сформувати додаток до диплома в якому коректно відображена вся
інформація про навчання студента.
67
ЧДТУ 242061.017 ПЗ
Програма буде впроваджена в 2 етапи: модуль введення даних буде
впроваджено в деканатах ЧДТУ до 10.06.2024 року. Модуль формування додатку
до диплома буде впроваджено в деканатах ЧДТУ до 15.06.2024 року і буде
використаний при формуванні додатків бакалаврів випускників 2024 року.
68
ЧДТУ 242061.017 ПЗ
ВИСНОВОК ДО 3 РОЗДІЛУ
В рамках роботи було проведено всі необхідні дії для реалізації теми
кваліфікаційної бакалаврської роботи. Було обґрунтувано вибір засобів реалізації,
описано структурну та логічну схеми системи, розроблено структуру бази даних,
розроблено інтерфейс користувача, розроблені програмні компоненти,
протестовано програмне забезпечення системи (проведено модульне тестування,
інтеграційне тестування, системне тестування, приймальне тестування),
встановлено програмне забезпечення на сервер.
69
ЧДТУ 242061.017 ПЗ
ВИСНОВКИ
В даній кваліфікаційній роботі бакалавра було проведено аналіз предметної
галузі, яка стосується навчальних здобутків студента університету, спроектовано
та розроблено програмне забезпечення підсистеми формування сучасного
додатку до диплома інформаційної системи університету, яка дає можливість
підвищити продуктивність роботи працівників деканатів під час формування
додатка. Було виконано: перепроектування бази даних з введенням нових
сутностей у відповідності з новими вимогами до додатка; розробку серверної
частини модулів, що забезпечують введення даних для формування додатка до
диплома у відповідності з новими вимогами; розробку клієнтської частини
модулів, що забезпечують введення даних для формування додатка до диплома у
відповідності з новими вимогами; розробку програмного забезпечення
формування додатка до диплома у відповідності з новими вимогами; закріплення
умінь та навичок в проектуванні та розробці програмного забезпечення на основі
веб-технологій, роботі з базами даних, а також тестування програмного
забезпечення.
Результат роботи – створена підсистема формування сучасного додатку до
диплома впроваджується в деканатах Черкаського державного технологічного
університету. Вона покращить та зробить простішим підготовку додатків до
диплома для студентів.
В подальшому потрібно адаптувати деякі функції та документи
інформаційної системи університету до зміненої структури бази даних та нових
видів інформації, наявних в системі.
70
ЧДТУ 242061.017 ПЗ
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1 Додаток до диплома про вищу освіту: https://osvita.net/ua/appendix-to-higher-
education-diplomas/
2 Політек-Софт продукти: http://www.politeksoft.kiev.ua/index.php?do=
products
3 Java: https://www.java.com/en/download/help/whatis_java.html
4 Spring Framework: https://spring.io/projects/spring-framework
5 Spring Boot https://www.baeldung.com/spring-boot
6 Java Persistence API: https://www.infoworld.com/article/3379043/what-is-jpa-
introduction-to-the-java-persistence-api.html
7 Hibernate: https://hibernate.org/orm/
8 PostgreSQL: https://www.postgresql.org/about/
9 Flyway:https://medium.com/hprog99/set-up-flyway-with-spring-boot-
1b24b8abe56e
10 Gradle: https://gradle.org/releases/
11 OpenAPI: https://swagger.io/specification/
12 Git: https://git-scm.com
13 IntelliJ IDEA: https://www.jetbrains.com/help/idea/discover-intellij-idea.html
14 Lombok:https://ioflood.com/blog/lombokjava/#:~:text=Lombok%20is%20a%2
0Java%20library,cleaner%20and%20easier%20to%20read.
15 TypeScript:https://www.typescriptlang.org/docs/handbook/typescript-in-5-
minutesoop.html#:~:text=TypeScript%20is%20a%20popular%20choice,betwee
n%20parts%20of%20your%20program.
16 Angular:https://angular.io/guide/architecture#:~:text=Angular%20is%20a%20pl
atform%20and,you%20import%20into%20your%20applications.
17 Bootstrap:https://www.techtarget.com/whatis/definition/bootstrap#:~:text=Boot
strap%20is%20a%20free%2C%20open,of%20syntax%20for%20template%20d
esigns.
18 CSS: https://webdoky.org/uk/docs/Web/CSS/
19 HTML: https://futurenow.com.ua/shho-take-html/
71
ЧДТУ 242061.017 ПЗ
20 JavaScript: https://astwellsoft.com/blog/tehnology/javascript.html
21 GitHub: https://www.simplilearn.com/tutorials/git-tutorial/what-is-github
22 NASA: https://www.nasa.gov
23 MSNBC: https://www.nbc.com/networks/msnbc
24 Тестування програмного забезпечення: https://foxminded.ua/testuvannia-
prohramnoho-zabezpechennia/
25 Ручне тестування: https://katalon.com/resources-center/blog/manual-testing
26 Смоук тестування: https://www.zaptest.com/uk/videos/what-is-smoke-testing-
in-software-engineering
27 Функціональне тестування: https://testlio.com/blog/ultimate-guide-to-
functional-testing/
28 Тестування продуктивності: https://www.tricentis.com/learn/performance-
testing
29 Модульне тестування: https://testsigma.com/blog/module-testing/
30 Системна інтеграція: https://eleks.com/types-of-software-development/system-
integration-services/
31 Cистемне тестування: https://www.guru99.com/system-testing.html
32 Приймальне тестування: https://www.agilealliance.org/glossary/acceptance-
testing/
33 Впровадження програмного забезпечення: https://fullscale.io/blog/software-
implementation-guide/
34 RPM: https://solution25.com/en/what-is-rpm-in-digital-marketing-solution25/
35 APT:https://www.reddit.com/r/chiliadmystery/comments/1wadw4/apt_meaning/
?rdt=39904
36 Linux: https://archlinux.org
37 Windows Installer: https://www.advancedinstaller.com
38 Microsoft Windows: https://www.britannica.com/technology/Microsoft-
Windows
39 GNU: https://www.gnu.org.ua
72
ЧДТУ 242061.017 ПЗ
40 Супровід програмного забезпечення: https://artelogic.net/services/software-
maintenance-and-support/
73
ЧДТУ 242061.017 ПЗ
ДОДАТОК А
ЗАТВЕРДЖЕНО:
Зав. кафедри ПЗАС
проф. Голуб С.В.
___________________________
ІНФОРМАЦІЙНА СИСТЕМА УНІВЕРСИТЕТУ: ПІДСИСТЕМА
ФОРМУВАННЯ СУЧАСНОГО ДОДАТКУ ДО ДИПЛОМА
Специфікація
482.ЧДТУ 242061-017
Листів 2
Розробник ________________ Цибенко В.О.
Керівник ________________ Заспа Г.О.
Черкаси 2024
74
ЧДТУ 242061.017 ПЗ
Позначення Найменування Примітка
Документація
482.ЧДТУ 242061 12-01 Текст програми
482.ЧДТУ 242061 34-01 Інструкція користувача
482.ЧДТУ 242061 90-01 Графічні матеріали
75
ЧДТУ 242061.017 ПЗ
ДОДАТОК Б
ІНФОРМАЦІЙНА СИСТЕМА УНІВЕРСИТЕТУ: ПІДСИСТЕМА
ФОРМУВАННЯ СУЧАСНОГО ДОДАТКУ ДО ДИПЛОМА
Текст програми
482.ЧДТУ 242061 12-01
Листів 32
Розробник ________________ Цибенко В.О.
2024
76
ЧДТУ 242061.017 ПЗ
ЗМІСТ
1 ТЕКСТ МОДУЛЯ ФОРМУВАННЯ ДОДАТКУ ДО ДИПЛОМА...................3
2 ТЕКСТ МОДУЛЯ ФОРМУВАННЯ ПРЕДМЕТІВ ДЛЯ СТУДЕНТА............7
77
ЧДТУ 242061.017 ПЗ
1 ТЕКСТ МОДУЛЯ ФОРМУВАННЯ ДОДАТКУ ДО ДИПЛОМА
Клас DiplomaSupplementService.java
package ua.edu.chdtu.deanoffice.service.document.diploma.supplement;
import com.google.common.base.Strings;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.springframework.stereotype.Service;
import ua.edu.chdtu.deanoffice.entity.Grade;
import ua.edu.chdtu.deanoffice.entity.Student;
import ua.edu.chdtu.deanoffice.entity.StudentDegree;
import ua.edu.chdtu.deanoffice.service.GradeService;
import ua.edu.chdtu.deanoffice.service.StudentDegreeService;
import ua.edu.chdtu.deanoffice.service.document.DocumentIOService;
import ua.edu.chdtu.deanoffice.service.document.FileFormatEnum;
import ua.edu.chdtu.deanoffice.service.document.TemplateUtil;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static
ua.edu.chdtu.deanoffice.service.document.DocumentIOService.TEMPLATES_PATH;
@Service
public class DiplomaSupplementService {
// private static final String STATE_EXAM = "Кваліфікаційний іспит.";
78
ЧДТУ 242061.017 ПЗ
private static final String TEMPLATE = TEMPLATES_PATH +
"DiplomaSupplement.docx";
private final GradeService gradeService;
private final StudentDegreeService studentDegreeService;
private final DocumentIOService documentIOService;
private final SupplementTemplateFillService supplementTemplateFillService;
public DiplomaSupplementService(GradeService gradeService,
StudentDegreeService studentDegreeService,
DocumentIOService documentIOService,
SupplementTemplateFillService supplementTemplateFillService) {
this.gradeService = gradeService;
this.studentDegreeService = studentDegreeService;
this.documentIOService = documentIOService;
this.supplementTemplateFillService = supplementTemplateFillService;
}
public File formDiplomaSupplement(Integer studentDegreeId, FileFormatEnum
format)
throws Docx4JException, IOException {
StudentDegree studentDegree = studentDegreeService.getById(studentDegreeId);
Student student = studentDegree.getStudent();
List<List<Grade>> grades =
gradeService.getGradesByStudentDegreeIdWithSelective(studentDegreeId);
StudentSummary studentSummary = new StudentSummary(studentDegree, grades);
complementQualificationWorkDescription(studentSummary);
String fileName = student.getSurnameEng() + "_" +
studentSummary.getStudent().getNameEng();
79
ЧДТУ 242061.017 ПЗ
WordprocessingMLPackage filledTemplate =
supplementTemplateFillService.fill(TEMPLATE, studentSummary);
return documentIOService.saveDocumentToTemp(filledTemplate, fileName, format);
}
private void complementQualificationWorkDescription(StudentSummary
studentSummary) {
if
(studentSummary.getGrades().get(StudentSummary.QUALIFICATION_SECTION_N
UMBER_IN_GRADES) == null)
return;
studentSummary.getGrades().get(StudentSummary.QUALIFICATION_SECTION_N
UMBER_IN_GRADES).stream().forEach(grade -> {
String courseNameUkr = grade.getCourse().getCourseName().getName();
if (!Strings.isNullOrEmpty(courseNameUkr) && (!courseNameUkr.contains("іспит")
&& !courseNameUkr.contains("екзамен"))) {
String degreeName = "";
String degreeNameEng = "";
switch (studentSummary.getStudentGroup().getSpecialization().getDegree().getId()) {
case 1: {
degreeName = "бакалавра";
degreeNameEng = "bachelor's";
break;
}
case 2: {
degreeName = "спеціаліста";
degreeNameEng = "specialists's";
break;
80
ЧДТУ 242061.017 ПЗ
}
case 3: {
degreeName = "магістра";
degreeNameEng = "master's";
break;
}
}
grade.getCourse().getCourseName()
.setName("Кваліфікаційна робота " + degreeName + " на тему: «" +
TemplateUtil.getValueSafely(grade.getStudentDegree().getThesisName()) + "»");
grade.getCourse().getCourseName()
.setNameEng("Qualification work of a " + degreeNameEng + " degree on a subject: \""
+ TemplateUtil.getValueSafely(grade.getStudentDegree().getThesisNameEng()) +
"\"");
}
});
}
}
6
81
ЧДТУ 242061.017 ПЗ
2 ТЕКСТ МОДУЛЯ ФОРМУВАННЯ ПРЕДМЕТІВ ДЛЯ СТУДЕНТА
Клас CoursesForStudentsRepository.java
package ua.edu.chdtu.deanoffice.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import ua.edu.chdtu.deanoffice.entity.CourseForStudent;
import java.util.List;
public interface CoursesForStudentsRepository extends
JpaRepository<CourseForStudent, Integer> {
@Query("select cfs from CourseForStudent cfs " +
"where cfs.studentDegree.id in :studentDegreeIds and cfs.course.semester=:semester "
+
"order by cfs.studentDegree.id, cfs.course.semester,
cfs.course.knowledgeControl.name, cfs.course.courseName.name")
List<CourseForStudent> getByStudentIdAndSemester(@Param("studentDegreeIds")
List<Integer> studentDegreeIds,
@Param("semester") int semester);
}
CoursesForStudentsService.java
package ua.edu.chdtu.deanoffice.service.course;
import org.springframework.stereotype.Service;
import
ua.edu.chdtu.deanoffice.api.course.dto.coursesforstudents.CourseForStudentWriteDT
O;
import ua.edu.chdtu.deanoffice.entity.Course;
82
ЧДТУ 242061.017 ПЗ
import ua.edu.chdtu.deanoffice.entity.CourseForStudent;
import ua.edu.chdtu.deanoffice.entity.StudentDegree;
import ua.edu.chdtu.deanoffice.entity.Teacher;
import ua.edu.chdtu.deanoffice.exception.OperationCannotBePerformedException;
import ua.edu.chdtu.deanoffice.exception.UnauthorizedFacultyDataException;
import ua.edu.chdtu.deanoffice.repository.CourseRepository;
import ua.edu.chdtu.deanoffice.repository.CoursesForStudentsRepository;
import ua.edu.chdtu.deanoffice.repository.StudentDegreeRepository;
import ua.edu.chdtu.deanoffice.repository.TeacherRepository;
import ua.edu.chdtu.deanoffice.security.FacultyAuthorized;
import java.util.List;
import java.util.Optional;
@Service
public class CoursesForStudentsService {
private CoursesForStudentsRepository coursesForStudentsRepository;
private StudentDegreeRepository studentDegreeRepository;
private CourseRepository courseRepository;
private TeacherRepository teacherRepository;
public CoursesForStudentsService(CoursesForStudentsRepository
coursesForStudentsRepository,
StudentDegreeRepository studentDegreeRepository,
CourseRepository courseRepository,
TeacherRepository teacherRepository) {
this.coursesForStudentsRepository = coursesForStudentsRepository;
this.studentDegreeRepository = studentDegreeRepository;
this.courseRepository = courseRepository;
83
ЧДТУ 242061.017 ПЗ
this.teacherRepository = teacherRepository;
}
public List<CourseForStudent>
getCoursesForStudentDegreeAndSemester(List<Integer> studentDegreeIds, int
semester) {
return
coursesForStudentsRepository.getByStudentIdAndSemester(studentDegreeIds,
semester);
}
@FacultyAuthorized
public String insertCoursesForStudentDegree(StudentDegree studentDegree,
List<CourseForStudentWriteDTO> coursesForStudents)
throws UnauthorizedFacultyDataException {
int added = 0, notAdded = 0;
for (CourseForStudentWriteDTO courseForStudentDTO : coursesForStudents) {
Course course =
courseRepository.getById(courseForStudentDTO.getCourseId());
Teacher teacher = null;
if (courseForStudentDTO.getTeacherId() != null) {
teacher = teacherRepository.getById(courseForStudentDTO.getTeacherId());
}
CourseForStudent courseForStudent = new CourseForStudent(course,
studentDegree, teacher, courseForStudentDTO.getCourseType());
try {
coursesForStudentsRepository.save(courseForStudent);
added++;
} catch(Exception e) {
notAdded++;
84
ЧДТУ 242061.017 ПЗ
}
}
String result = "Додано " + added + " предметів";
if (notAdded > 0)
result += " . Помилка при додаванні " + notAdded + " предметів.";
return result;
}
public StudentDegree getStudentDegreeById(int studentDegreeId) throws
OperationCannotBePerformedException {
Optional<StudentDegree> studentDegreeOptional =
studentDegreeRepository.findById(studentDegreeId);
StudentDegree studentDegree = studentDegreeOptional.orElseThrow(() ->
new OperationCannotBePerformedException("Студента з таким id не
існує"));
return studentDegree;
}
}
CoursesForStudentsController.java
package ua.edu.chdtu.deanoffice.api.course;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.annotation.Secured;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
85
ЧДТУ 242061.017 ПЗ
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import ua.edu.chdtu.deanoffice.api.course.dto.CourseDTO;
import
ua.edu.chdtu.deanoffice.api.course.dto.coursesforstudents.CourseForStudentDTO;
import
ua.edu.chdtu.deanoffice.api.course.dto.coursesforstudents.CourseForStudentWriteDT
O;
import ua.edu.chdtu.deanoffice.api.general.dto.MessageDTO;
import ua.edu.chdtu.deanoffice.entity.Course;
import ua.edu.chdtu.deanoffice.entity.CourseForStudent;
import ua.edu.chdtu.deanoffice.entity.StudentDegree;
import ua.edu.chdtu.deanoffice.exception.OperationCannotBePerformedException;
import ua.edu.chdtu.deanoffice.exception.UnauthorizedFacultyDataException;
import ua.edu.chdtu.deanoffice.service.course.CoursesForStudentsService;
import java.util.List;
import static ua.edu.chdtu.deanoffice.api.general.mapper.Mapper.map;
import static ua.edu.chdtu.deanoffice.api.general.mapper.Mapper.strictMap;
@RestController
public class CoursesForStudentsController {
private CoursesForStudentsService coursesForStudentsService;
public CoursesForStudentsController(CoursesForStudentsService
coursesForStudentsService) {
this.coursesForStudentsService = coursesForStudentsService;
}
@Secured({"ROLE_DEANOFFICER"})
86
ЧДТУ 242061.017 ПЗ
@GetMapping("/courses-for-students")
public ResponseEntity<List<CourseForStudentDTO>>
getCoursesForStudentsBySemester(@RequestParam List<Integer> studentDegreeIds,
@RequestParam(value = "semester")
int semester) {
List<CourseForStudent> coursesForStudents =
coursesForStudentsService.getCoursesForStudentDegreeAndSemester(studentDegreeI
ds, semester);
return ResponseEntity.ok(strictMap(coursesForStudents,
CourseForStudentDTO.class));
}
@Secured({"ROLE_DEANOFFICER"})
@PostMapping("/courses-for-students/{studentDegreeId}")
public ResponseEntity addCoursesForStudents(@PathVariable int studentDegreeId,
@RequestBody List<CourseForStudentWriteDTO>
coursesForStudents)
throws OperationCannotBePerformedException,
UnauthorizedFacultyDataException {
StudentDegree studentDegree =
coursesForStudentsService.getStudentDegreeById(studentDegreeId);
String result =
coursesForStudentsService.insertCoursesForStudentDegree(studentDegree,
coursesForStudents);
return new ResponseEntity(new MessageDTO(result), HttpStatus.CREATED);
}
}
courses-for-students.component.html
<div class="container-fluid courses-for-groups">
87
ЧДТУ 242061.017 ПЗ
<div *ngIf="!showPage">
<loading [size]="40"></loading>
</div>
<div *ngIf="showPage" class="selection row">
<div class="col-7">
<div class="menu-row">
<div class="element">
<div class="element-header">Група:</div>
<div class="col-2">
<select id="group" class="form-control mr-2" [(ngModel)]="selectedGroup"
(change)="onGroupChange()">
<option *ngFor="let group of groups" [ngValue]="group">{{group.name}}</option>
</select>
</div>
</div>
<div class="element">
<div class="element-header">Семестр:</div>
<div class="col-1">
<select id="semester" class="form-control mr-2" [(ngModel)]="selectedSemester"
(change)="onSemesterChange()">
<option *ngFor="let semester of semesters"
[ngValue]="semester">{{semester}}</option>
</select>
</div>
</div>
<div class="col-7">
88
ЧДТУ 242061.017 ПЗ
<input [(ngModel)]="searchText" placeholder="Пошук за предметом"
class="form-control mr-2 search">
</div>
</div>
</div>
</div>
<div class="row courses">
<div class="col-7 h-100">
<div class="studied-courses">
<studied-courses [loading]="studiedCoursesLoading"
(onSelectedCoursesChange)="changeSelectedCourses($event)"
[courses]="courses" [searchText]="searchText"></studied-courses>
</div>
</div>
<div class="col-5">
<course-creation (onCourseCreation)="onCourseCreation()"
(onCourseAdding)="selectedCourses.push($event)"
[selectedSemester]="selectedSemester"
[courses]="courses"
>
</course-creation>
</div>
</div>
<div class="row">
<div class="col-12">
89
ЧДТУ 242061.017 ПЗ
<button type="button" class="btn btn-info btn-medium ml-1"
(click)="addCoursesForStudents(template)"
[disabled]="!selectedCourses.length">Призначити
</button>
<!-- <button type="button" class="btn btn-danger btn-medium"
(click)="checkAddedCoursesForDeleting()"-->
<!-- [disabled]="!coursesForDelete.length">Видалити-->
<!-- </button>-->
</div>
</div>
<div class="row h-100">
<div class="col-2 h-100 pl-2 pr-0">
<div class="table-wrapper-2">
<table class="student-table">
<thead>
<tr class="students-for-groups-student-header">
<th class="students-for-groups-student-header">Студенти</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let studentDegree of students; let i = index" >
<div class="students-for-groups-student-row" [class.selected-
student]="studentDegree.selected">
<td>{{ i+1 }}</td>
<td>
<input type="checkbox" [(ngModel)]="studentDegree.selected"
(change)="getCoursesByStudent()">
90
ЧДТУ 242061.017 ПЗ
</td>
<td>{{studentDegree.student.surname}} {{studentDegree.student.name}}</td>
</div>
</tr>
</tbody>
</table>
</div>
</div>
<div class="col-10">
<table class="table table-striped table-sm fs-13">
<thead>
<tr>
<th></th>
<th>Назва</th>
<th>Контроль</th>
<th class="text-right">Години</th>
<th class="text-right">Кредити</th>
<th>Викладач</th>
<tr>
</thead>
<tr *ngFor="let course of coursesForStudent">
<td class="text-center"><input type="checkbox" #selected
(change)="checkCourse($event.target.checked, course)"
[checked]="allRowsIsSelected"></td>
<td>{{ course.course.courseName.name }}</td>
<td>{{ course.course.knowledgeControl.name }}</td>
91
ЧДТУ 242061.017 ПЗ
<td class="text-right">{{ course.course.hours }}</td>
<td class="text-right">{{ course.course.credits }}</td>
<td (click)="changeTeacher(course)">
<button class="btn btn-outline-secondary">
{{ (course.teacher | nameWithInitials) || 'Вибрати' }}
</button>
</td>
</tr>
</table>
</div>
</div>
</div>
courses-for-students.component.scss
div {
font-size: 15px;
}
.courses-for-groups {
height: calc(100% - 108px);
}
.selection {
margin-top: 10px;
margin-bottom: 10px;
overflow: hidden;
.form-control {
92
ЧДТУ 242061.017 ПЗ
height: 1.5rem;
font-size: 15px;
padding: 0 0.75rem;
}
}
.btn {
height: 2rem;
margin: 7px;
padding: 0.2rem 0.75rem;
&.btn-medium {
width: 145px;
}
}
.menu-row {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.element{
display: inline-flex;
flex-direction: row;
justify-content: flex-start;
.element-header {
margin-right: 5px;
min-width: auto;
93
ЧДТУ 242061.017 ПЗ
}
}
.courses{
height: 40%;
.studied-courses{
height: 100%;
overflow: auto;
}
}
.course-for-group-table{
height: 50%;
overflow: auto;
}
.col-1 {
padding: 1px;
min-width: 4.8em;
}
.col-2 {
padding: 1px;
min-width: 10em;
}
.col-4 {
padding: 1px;
}
.count-label {
94
ЧДТУ 242061.017 ПЗ
margin-top: 15px;
}
.selected-student {
background-color: lightgreen;
}
.students-for-groups-student-row {
padding: 1px;
border: 1px white solid;
}
.students-for-groups-student-header {
horizontal-align: left;
font-weight: bold;
}
courses-for-students.component.spec.ts
import { async, ComponentFixture, TestBed } from ‘@angular/core/testing’;
import { CoursesForStudentsComponent } from ‘./courses-for-students.component’;
describe(‘CoursesForStudentsComponent’, () => {
let component: CoursesForStudentsComponent;
let fixture: ComponentFixture<CoursesForStudentsComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ CoursesForStudentsComponent ]
})
.compileComponents();
95
ЧДТУ 242061.017 ПЗ
}));
beforeEach(() => {
fixture = TestBed.createComponent(CoursesForStudentsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it(‘should create’, () => {
expect(component).toBeTruthy();
});
});
courses-for-students.component.ts
import {Component, OnInit, TemplateRef, ViewChild} from '@angular/core';
import {StudentGroup} from "../../models/StudentGroup";
import {GroupService} from "../../services/group.service";
import {CourseService} from "../../services/course.service";
import {Course} from "../../models/Course";
import {CourseCreationComponent} from "../shared/courses-for/course-
creation/course-creation.component";
import {StudentService} from "../../services/student.service";
import {StudentDegree} from "../../models/StudentDegree";
import {CourseForStudent} from "../../models/CourseForStudent";
import {CourseForStudentService} from "../../services/course-for-student.service";
import {CourseType} from "../../models/course-type.enum";
import {BsModalRef, BsModalService} from "ngx-bootstrap/modal";
96
ЧДТУ 242061.017 ПЗ
import {ConfirmSelectedComponent} from "./confirm-selected/confirm-
selected.component";
@Component({
selector: 'courses-for-students',
templateUrl: './courses-for-students.component.html',
styleUrls: ['./courses-for-students.component.scss']
})
export class CoursesForStudentsComponent implements OnInit {
HOURS_PER_CREDIT = 30;
groups: StudentGroup[];
selectedGroup: StudentGroup;
selectedSemester: number;
courses: Course[];
selectedCourses: Course[] = [];
students: StudentDegree[];
coursesForStudent: CourseForStudent[] = [];
showPage = false;
searchText = '';
semesters: number[] = [];
studiedCoursesLoading: boolean = false;
@ViewChild(CourseCreationComponent, { static: false }) courseCreationChild:
CourseCreationComponent;
assignCoursesModalRef: BsModalRef;
constructor(private groupService: GroupService, private courseService:
CourseService,
private studentService: StudentService, private courseForStudentService:
CourseForStudentService,
97
ЧДТУ 242061.017 ПЗ
private modalService: BsModalService) { }
ngOnInit() {
this.groupService.getGroups().subscribe(groups => {
this.groups = groups;
this.showPage = true;
});
}
changeSemesters() {
this.semesters = [];
for (let i = 0; i < this.selectedGroup.studySemesters; i++) {
this.semesters.push(i + this.selectedGroup.beginYears * 2 - 1);
}
if (!this.semesters.includes(this.selectedSemester)) {
this.selectedSemester = this.semesters[0];
}
}
onSemesterChange() {
this.loadCoursesBySemester();
// this.getCoursesForGroup();
this.courseCreationChild.form.controls.semester.setValue(this.selectedSemester);
}
onGroupChange() {
this.changeSemesters();
// this.refresh();
if (this.selectedSemester) {
98
ЧДТУ 242061.017 ПЗ
this.onSemesterChange();
}
this.studentService.getStudentsByGroupId(this.selectedGroup.id).subscribe(students
=> {
this.students = students;
})
}
loadCoursesBySemester() {
this.studiedCoursesLoading = true;
this.courseService.getCoursesBySemesterAndHoursPerCredit(this.selectedSemester,
this.HOURS_PER_CREDIT).subscribe(cfg => {
this.courses = cfg;
this.studiedCoursesLoading = false;
});
}
changeSelectedCourses(event) {
this.selectedCourses = event;
}
onCourseCreation() {
if (this.selectedSemester) {
this.studiedCoursesLoading = true;
this.courseService.getCoursesBySemesterAndHoursPerCredit(this.selectedSemester,
this.HOURS_PER_CREDIT).subscribe(cfg => {
this.courses = cfg;
99
ЧДТУ 242061.017 ПЗ
this.studiedCoursesLoading = false;
})
}
}
addCoursesForStudents(template: TemplateRef<any>) {
let selectedCourses = this.courses.filter(course => course.selected);
let selectedCoursesWrite: CoursesForStudentWrite[] = selectedCourses.map(
selectedCourse => new CoursesForStudentWrite(selectedCourse.id, null,
CourseType.RECREDIT));
let selectedStudents = this.students.filter(student => student.selected);
this.assignCoursesModalRef =
this.modalService.show(ConfirmSelectedComponent,
{initialState: {selectedStudents: selectedStudents, selectedCourses:
this.selectedCourses}, class: 'modal-custom'});
// selectedStudents.forEach(student => {
// this.courseForStudentService.createCoursesForStudent(student.id,
selectedCoursesWrite).subscribe(result => {
// console.log(result);
// });
// });
}
getCoursesByStudent() {
}
checkCourse(isChecked: boolean, course) {
}
changeTeacher(course) {
}
100
ЧДТУ 242061.017 ПЗ
}
class CoursesForStudentWrite {
courseId: number;
teacherId: number;
courseType: CourseType;
constructor(courseId: number, teacherId: number, courseType: CourseType) {
this.courseId = courseId;
this.teacherId = teacherId;
this.courseType = courseType;
}
}
courses-for-students.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {RouterModule, Routes} from '@angular/router';
import { TypeaheadModule } from 'ngx-bootstrap/typeahead';
import {SharedModule} from '../shared/shared.module';
import {AuthenticationModule} from '../login/authentication.module';
import {PipeModule} from '../../pipes/pipe.module';
import {CoursesForStudentsComponent} from "./courses-for-students.component";
import { ConfirmSelectedComponent } from './confirm-selected/confirm-
selected.component';
//
// import { CoursesForGroupsComponent } from './courses-for-groups.component';
101
ЧДТУ 242061.017 ПЗ
// import { AddedCoursesComponent } from './added-courses/added-
courses.component';
// import { CourseCreationComponent } from './course-creation/course-
creation.component';
// import { TeacherDialogComponent } from './teacher-dialog/teacher-
dialog.component';
// import { CopyCoursesDialogComponent } from './copy-courses-dialog/copy-courses-
dialog.component';
// import { EditDialogComponent } from './edit-dialog/edit-dialog.component';
// import {GroupsDifferentDialogComponent} from './groups-different-dialog/groups-
different-dialog.component';
const coursesForStudentsRoutes: Routes = [
{path: '', component: CoursesForStudentsComponent}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
SharedModule,
PipeModule,
RouterModule.forChild(coursesForStudentsRoutes),
TypeaheadModule.forRoot()
],
declarations: [
CoursesForStudentsComponent,
ConfirmSelectedComponent,
102
ЧДТУ 242061.017 ПЗ
// AddedCoursesComponent,
// CourseCreationComponent,
// TeacherDialogComponent,
// CopyCoursesDialogComponent,
// EditDialogComponent,
// GroupsDifferentDialogComponent
],
entryComponents: [
ConfirmSelectedComponent,
// CopyCoursesDialogComponent,
// TeacherDialogComponent,
// GroupsDifferentDialogComponent
],
providers: [AuthenticationModule.tokenInterceptor()]
})
export class CoursesForStudentsModule {
}
confirm-selected.component.html
<div pl-4><h4>Ви хочете призначити такі предмети таким студентам</h4></div>
<div class="modal-body">
<div class="row">
<div class="col-4">
<div *ngFor="let student of selectedStudents">
{{ student.student.surname }} {{ student.student.name }}
103
ЧДТУ 242061.017 ПЗ
</div>
</div>
<div class="col-8">
<div class="row" *ngFor="let course of selectedCourses">
<div class="col-8">{{ course.courseName.name }}</div>
<div class="col-2">{{ course.knowledgeControl.name }}</div>
<div class="col-1">{{ course.hours }}</div>
<div class="col-1">{{ course.credits }}</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-success"
(click)="save()">Зберегти</button>
<button type="button" class="btn btn-outline-danger"
(click)="bsModalRef.hide()">Скасувати зміни</button>
</div>
</div>
confirm-selected.component.scss
::ng-deep .modal-dialog {
max-width: 70%;
}
confirm-selected.component.spec.ts
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
104
29
ЧДТУ 242061.017 ПЗ
import { ConfirmSelectedComponent } from './confirm-selected.component';
describe('ConfirmSelectedComponent', () => {
let component: ConfirmSelectedComponent;
let fixture: ComponentFixture<ConfirmSelectedComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ConfirmSelectedComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ConfirmSelectedComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
confirm-selected.component.ts
import { Component, OnInit } from '@angular/core';
import {BsModalRef} from "ngx-bootstrap/modal";
import {CourseForStudentService} from "../../../services/course-for-student.service";
@Component({
105
ЧДТУ 242061.017 ПЗ
selector: 'confirm-selected',
templateUrl: './confirm-selected.component.html',
styleUrls: ['./confirm-selected.component.scss']
})
export class ConfirmSelectedComponent implements OnInit {
selectedStudents;
selectedCourses;
constructor(private courseForStudentService: CourseForStudentService, public
bsModalRef: BsModalRef, ) { }
ngOnInit() {
}
save() {
this.courseForStudentService.createCoursesForStudent(1, {}).subscribe(result => {
console.log(result);
});
}
}
106
ЧДТУ 242061.017 ПЗ
ДОДАТОК В
ІНФОРМАЦІЙНА СИСТЕМА УНІВЕРСИТЕТУ: ПІДСИСТЕМА
ФОРМУВАННЯ СУЧАСНОГО ДОДАТКУ ДО ДИПЛОМА
Інструкція користувача
482.ЧДТУ 242061 34-01
Листів 6
Розробник ________________ Цибенко В.О.
2024
107
ЧДТУ 242061.017 ПЗ
Зміст
1 Призначення програми.........................................................................................3
2 Умови запуску і виконання програми.................................................................3
3 Інструкція по роботі з програмою........................................................................3
108
ЧДТУ 242061.017 ПЗ
1 Призначення програми
Програма призначена для формування додатка до диплома європейського
зразка за оновленими вимогами. Для виконання задачі потрібно здійснити 2
етапи: ввести необхідні дані та безпосередньо сформувати додаток. Програма
являє собою інформаційну веб-систему, користувач працює з нею за допомогою
веб-браузера. Додаток формується у вигляді docx-файлу, який можна редагувати
для внесення уточнень.
2 Умови запуску і виконання програми
Додаток складається з серверної та клієнтської частини, а також бази даних.
Встановлення та обслуговування бази даних на сервері здійснює адміністратор
бази даних. Серверна частина програмного забезпечення встановлюється на
сервері у вигляді сервісу, який постійно запущений і приймає запити та дає
відповіді REST API. Клієнтська частина встановлена на сервері з використанням
веб-сервера nginx. Звернення до програми з браузера відбувається за адресою
is.chdtu.edu.ua.
3 Інструкція по роботі з програмою
На початку роботи програми користувач має зайти в браузер, набрати
адресу is.chdtu.edu.ua. Відкриється вікно логіну потрібно увести ім’я та пароль і
натиснути кнопку Вхід рисунок В.1.
Рисунок В.1 – Вікно логіну з кнопкою Вхід
109
3
ЧДТУ 242061.017 ПЗ
При введенні правильного логіну і паролю відкривається програма, якою
можна керувати за допомогою меню. Працівник деканату вводить предмети для
груп студентів на початку навчального року (рис. В.2).
Рисунок В.2 – Інтерфейс користувача: предмети для груп
Вибіркові дисципліни вводяться двічі на рік в березні та серпні.
Призначення вибіркових дисциплін студента відбувається за допомогою
мобільного застосунку, а також може робитися в системі при натисканні кнопки
Додати вибіркові (рис. В.3).
Перезараховані предмети та академрізниця додаються у вікні предметів для
студента – можна вибрати кілька студентів та кілька предметів і здійснити
призначення (рис. В.4).
110
ЧДТУ 242061.017 ПЗ
Рисунок В.3 – Інтерфейс користувача: вибіркові дисципліни
Рисунок В.4 – Інтерфейс користувача: предмети для студента
Після призначення студентам предметів потрібно ввести оцінки для них
(рис.В.5).
111
ЧДТУ 242061.017 ПЗ
Рисунок В.5 – Інтерфейс користувача: оцінки
Формування додатка до диплома здійснюється натисканням кнопки Сформувати
додаток (рис.В.6). Перед цим можна провести перевірку даних студентів.
Рисунок В.6 – Інтерфейс користувача: формування додатка до диплома
112
ЧДТУ 242061.017 ПЗ
ДОДАТОК Г
ІНФОРМАЦІЙНА СИСТЕМА УНІВЕРСИТЕТУ: ПІДСИСТЕМА
ФОРМУВАННЯ СУЧАСНОГО ДОДАТКУ ДО ДИПЛОМА
Графічні матеріали
482.ЧДТУ 242061 90-01
Листів 13
Розробник ________________ Цибенко В.О.
2024
113
ЧДТУ 242061.017 ПЗ
ЗМІСТ
Актуальність теми ....................................................................................... 3
Мета і завдання розробки ........................................................................... 3
Об’єкт та методи розробки ......................................................................... 4
Аналіз програм аналогів ............................................................................. 4
Предметна область моделювання. Модель предметної області............. 5
Первинні вимоги ......................................................................................... 5
Детальні вимоги .......................................................................................... 6
Формування вимог за допомогою діаграм прецедентів. ......................... 6
Проектування логічної структури програмного комплексу ................... 7
Проектування логічної структури ............................................................. 8
Архітектурне проектування ....................................................................... 8
Моделювання поведінки системи ............................................................. 10
Структурна схема ........................................................................................ 11
Розробка програмного комплексу ............................................................. 12
Структура бази даних ................................................................................. 12
Інтерфейс користувача ............................................................................... 13
Тестування ................................................................................................... 13
114
ЧДТУ 242061.017 ПЗ
Рисунок Г.1 – Актуальність теми
Рисунок Г.2 – Мета і завдання розробки
115
ЧДТУ 242061.017 ПЗ
Рисунок Г.3 – Об’єкт та методи розробки
Рисунок Г.4 – Аналіз програм аналогів
116
ЧДТУ 242061.017 ПЗ
Рисунок Г.5 – Модель предметної області
Рисунок Г.6 – Первинні вимоги
117
ЧДТУ 242061.017 ПЗ
Рисунок Г.7 – Детальні вимоги
Рисунок Г.8 – Діаграми прецедентів
118
ЧДТУ 242061.017 ПЗ
Рисунок Г.9 – Діаграма прецедентів
Рисунок Г.10 – Діаграма класів
119
ЧДТУ 242061.017 ПЗ
Рисунок Г.11 – Діаграма пакетів
Рисунок Г.12 – Діаграма компонентів серверної частини
120
ЧДТУ 242061.017 ПЗ
Рисунок Г.13 – Діаграма компонентів клієнтської частини
Рисунок Г.14 – Діаграма розгортання
121
ЧДТУ 242061.017 ПЗ
Рисунок Г.15 – Діаграма діяльності
Рисунок Г.16 – Діаграма послідовності
122
ЧДТУ 242061.017 ПЗ
Рисунок Г.17 – Діаграма комунікації
Рисунок Г.18 – Структурна схема
123
ЧДТУ 242061.017 ПЗ
Рисунок Г.19 – Логічна схема
Рисунок Г.20 – База даних програми
124
ЧДТУ 242061.017 ПЗ
Рисунок Г.21 – Інтерфейс програми
Рисунок Г.22 – Тестування програми
125