Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/8592| Назва: | Інформаційно-аналітична система вибору інструментальних засобів для створення програмних продуктів |
| Автори: | ГРЕСЬКО, Світлана ТИМОШЕНКО, Назар |
| Ключові слова: | ІНФОРМАЦІЙНО-АНАЛІТИЧНА СИСТЕМА;ШТУЧНИЙ ІНТЕЛЕКТ;ЗАХИСТ ІНФОРМАЦІЇ;ХМАРНІ ТЕХНОЛОГІЇ;ФРЕЙМВОРК;ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ;БАЗА ДАНИХ |
| Дата публікації: | 2023 |
| Короткий огляд (реферат): | Метою виконання даної кваліфікаційної роботи на здобуття освітнього ступеня «бакалавр» є інформаційно-аналітична система вибору інструментальних засобів для створення програмних продуктів. Загальний обсяг роботи становить 84 сторінок. У роботі 10 рисунків. Для виконання роботи використано 20 літературних джерел. Основними завданнями кваліфікаційної роботи є розробка інформаційно- аналітичної системи, яка допоможе розробникам програмного забезпечення підібрати оптимальні інструментальні засоби для реалізації конкретного проекту та забезпечити високу якість розробки програмного продукту. Стислий опис розділів кваліфікаційної роботи бакалавра складається з аналізу предметної області та постановки задачі; вибору технологій та інструментальних засобів; розробки інформаційно-аналітичної системи та її захисту. |
| URI (Уніфікований ідентифікатор ресурсу): | https://er.chdtu.edu.ua/handle/ChSTU/8592 |
| Розташовується у зібраннях: | 123 Комп’ютерна інженерія (Системне програмування) |
Файли цього матеріалу:
| Файл | Опис | Розмір | Формат | |
|---|---|---|---|---|
| 1_ТИТУЛКА_Тимошенко-merged.pdf Restricted Access | 2.36 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ І СИСТЕМ
КАФЕДРА ІНФОРМАЦІЙНОЇ БЕЗПЕКИ ТА КОМП’ЮТЕРНОЇ ІНЖЕНЕРІЇ
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи бакалавра
на тему:«Інформаційно-аналітична система вибору
інструментальних засобів для створення
програмних продуктів»
ЧДТУ.231932.006 ПЗ
Виконав: студент 4 курсу, групи СП-1906
спеціальності 123 – «Комп’ютерна інженерія»
за освітньою програмою – «Системне
програмування»
Назар ТИМОШЕНКО
Керівник
старший викладач Світлана ГРЕСЬКО
Рецензент
старший викладач кафедри інформаційних
технологій Черкаського національного університету
ім. Б. Хмельницького, к.т.н. Інна РОЗЛОМІЙ
«ЗАХИСТ ДОЗВОЛЯЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор ______ Володимир РУДНИЦЬКИЙ
Черкаси 2023 року
Форма № Н-9.01
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет: інформаційних технологій і систем
Кафедра: інформаційної безпеки та комп’ютерної інженерії
Освітньо-кваліфікаційний рівень: Бакалавр
Спеціальність 123 – Комп’ютерна інженерія
Освітня програма Системне програмування
«ЗАТВЕРДЖУЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор ________ Володимир РУДНИЦЬКИЙ
«28» лютого 2023 року
ЗАВДАННЯ
на кваліфікаційну роботу бакалавра студенту
Тимошенку Назару Олеговичу
(прізвище, ім‘я, по батькові)
1. Тема роботи: Інформаційно-аналітична система вибору інструментальних
засобів для створення програмних продуктів
Керівник роботи: старший викладач Гресько Світлана Олексіївна
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом університету від «24» лютого 2023 р. № 43/04
2. Строк подання студентом роботи:
3. Вихідні дані до роботи:
Розробити наступні модулі системи: модуль користувацького інтерфейсу, модуль
адміністрування, модуль рекомендацій. Розробити базу даних для системи
Для створення системи використати наступні інструментальні засоби:
ChatGPT, Express.js, Nod.js, MySQL
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити):
Вступ
1. Аналіз предметної області та постановка задачі
2. Вибір технологій та інструментальних засобів
3. Розробка інформаційно-аналітичної системи вибору інструментальних засобів для
створення програмних продуктів.
4. Захист інформаційно-аналітичної системи
Висновки
Список використаних джерел. Додатки
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів):
1. Специфікація
2. Текст програми
3. Інструкція користувача
6. Консультанти розділів роботи:
Розділ Прізвище, ініціали Підпис, дата
консультанта завдання видав завдання прийняв
7. Дата видачі завдання: 27 лютого 2023 року
КАЛЕНДАРНИЙ ПЛАН
Термін
№ з/п Назва етапів роботи виконання Примітка
етапів роботи
1 Збір матеріалу 01.03 – 14.03 виконано
2 Обробка матеріалу 15.03 – 20.03 виконано
3 Вибір програмного забезпечення та його 24.03 – 12.04 виконано
обґрунтування
4 Розробка функціоналу інформаційно-аналітичної 13.04 – 02.05 виконано
системи
5 Розробка інтерфейсу інформаційно-аналітичної виконано
системи 03.05 – 10.05
6 Розробка та реалізація інформаційно- виконано
аналітичної системи 11.05 – 14.05
7 Оформлення графічного матеріалу 15.05 – 23.05 виконано
8 Подання роботи на відгук та рецензування 30.05.2023 виконано
Студент ___________________________ Назар ТИМОШЕНКО
(підпис)
Керівник роботи ___________________________ Світлана ГРЕСЬКО
(підпис)
АНОТАЦІЯ
Метою виконання даної кваліфікаційної роботи на здобуття освітнього
ступеня «бакалавр» є інформаційно-аналітична система вибору
інструментальних засобів для створення програмних продуктів.
Загальний обсяг роботи становить 84 сторінок. У роботі 10 рисунків. Для
виконання роботи використано 20 літературних джерел.
Основними завданнями кваліфікаційної роботи є розробка інформаційно-
аналітичної системи, яка допоможе розробникам програмного забезпечення
підібрати оптимальні інструментальні засоби для реалізації конкретного
проекту та забезпечити високу якість розробки програмного продукту.
Стислий опис розділів кваліфікаційної роботи бакалавра складається з
аналізу предметної області та постановки задачі; вибору технологій та
інструментальних засобів; розробки інформаційно-аналітичної системи та її
захисту.
Ключові слова: ІНФОРМАЦІЙНО-АНАЛІТИЧНА СИСТЕМА,
ШТУЧНИЙ ІНТЕЛЕКТ, ЗАХИСТ ІНФОРМАЦІЇ, ХМАРНІ ТЕХНОЛОГІЇ,
ФРЕЙМВОРК, ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ, БАЗА ДАНИХ.
ANOTATION
The purpose of this qualification work for obtaining the bachelor's degree is an
information-analytical system for the selection of tools for creating software
products.
The total volume of work is 84 pages. The work contains 10 figures. 20 literary
sources were used to perform the work.
The main tasks of the qualification work are the development of an information
and analytical system that will help software developers to choose the optimal tools
for the implementation of a specific project and to ensure the high quality of software
product development.
A brief description of the sections of the bachelor's qualification work consists
of an analysis of the subject area and a statement of the problem; selection of
technologies and tools; development of the information and analytical system and its
protection.
Key words: INFORMATION AND ANALYTICAL SYSTEM, ARTIFICIAL
INTELLIGENCE, INFORMATION PROTECTION, CLOUD TECHNOLOGIES,
FRAMEWORK, SOFTWARE, DATABASE.
ЗМІСТ
ВСТУП……………………………………………………………………………..4
1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА ЗАДАЧІ………...6
1.1 Аналіз існуючих систем.………………………………….……………6
1.2 Постановка задачі……………………………………………………..11
1.3 Висновки до розділу 1…………………………...……….…………..14
2 ВИБІР ТЕХНОЛОГІЙ ТА ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ……...…...15
2.1 Огляд існуючих технологій………………………………..…............15
2.2 Обґрунтування вибору засобів розробки..…………………………..29
2.3 Висновки до розділу 2………………………………….………….…32
3 РОЗРОБКА ІНФОРМАЦІЙНО-АНАЛІТИЧНОЇ СИСТЕМИ ВИБОРУ
ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ ДЛЯ СТВОРЕННЯ ПРОГРАМНИХ
ПРОДУКТІВ…………………………………………………………………33
3.1 Структура системи …….…………………………….………………33
3.2 Опис функцій системи………..…………………………….….….….40
3.3 Технічні вимоги для роботи з системою…………………...…….….45
3.4 Оцінка ефективності……………………………………….…………46
3.5 Висновки до розділу 3……………………………………….………..48
4 ЗАХИСТ ІНФОРМАЦІЙНО-АНАЛІТИЧНОЇ СИСТЕМИ……………….49
4.1 Огляд існуючих рішень……...………………………………...……..49
4.2 Реалізація захисту даних користувачів………….………….….…....54
4.3 Висновки до розділу 4………………………………………………..58
ВИСНОВКИ……………………………………………………………………...59
ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ……………………...60
ЧДТУ.231932.006 ПЗ
Змн. Арк. № докум. Підпис Дат
РозрКобив Тимошенко а Інформаційно-аналітична система Літ. Лист Листів
Керівник ГНр.Оес.ько С.О. вибору інструментальних засобів 2 84
Рецеанзент Розломій І.О. для створення програмних
Н.Контроль Гресько С.О. продуктів Кафедра ІБ та КІ
Затвфердив Рудницький В.М. Пояснювальна записка гр. СП-1906
е
д
р
а
К
К
-
0
6
ДОДАТКИ:
А – 482.ЧДТУ.31932-01 Інформаційно-аналітична система вибору
інструментальних засобів для створення програмних продуктів
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ……………………………...………..83
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 3
а
ВСТУП
Актуальність теми. Зважаючи на постійний розвиток інформаційних
технологій та широкий спектр доступних інструментальних засобів,
актуальність теми дуже потрібна.
Вона стає важливою для розробників, компаній та організацій, які
прагнуть досягти успіху в галузі програмної розробки і використовувати
найефективніші інструменти для досягнення своїх цілей. Коректний вибір
інструментальних засобів може допомогти знизити вартість розробки та
експлуатації програмного продукту. Також система допомагає
відслідковувати останні тенденції і вибирати найбільш оптимальні
інструменти для розробки програмних продуктів. Побудувати більш
ефективні та інноваційні програми. Це дозволить підвищити
конкурентоспроможність компанії та задовільнити потреби користувачів.
Можливість поліпшити процес тестування, налагодження та підтримки
програмного продукту.
Метою кваліфікаційної роботи полягає у розробці та впровадженні
системи, яка надає об'єктивну та комплексну інформацію для вибору
оптимальних інструментальних засобів при розробці програмного продукту.
Головними цілями даної роботи є:
- дозволить зібрати, систематизувати та аналізувати великий обсяг
інформації про різноманітні інструментальні засоби для розробки
програмного продукту;
- надати об'єктивну оцінку інструментальних засобів на основі розгляду
їхніх переваг, недоліків, популярності та відгуків від користувачів;
- допомогти уникнути непотрібних витрат на недостатньо ефективні
засоби;
- сприяти використанню передових технологій та інструментів, що
дозволяють розробникам створювати інноваційні програмні продукти.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 4
а
Мета роботи полягає в створенні системи, яка допомагає
розробникам об'єктивно та ефективно вибирати інструментальні засоби для
створення програмних продуктів, що підвищує їхню ефективність, якість та
конкурентоспроможність.
На даний момент існує багато джерел інформації, в яких автори
пов'язані з темою вибору вибору інструментальних засобів для створення
програмних продуктів. Наприклад Мартін Фаулер (Martin Fowler) є визнаним
експертом у галузі розробки програмного забезпечення і автором книги
"Refactoring: Improving the Design of Existing Code", яка стала класичним
джерелом знань для розробників програмного забезпечення. У цій книзі
Фаулер описує практику рефакторингу, а також розглядає принципи та
методи, які допомагають покращити дизайн і структуру. Також у інших його
публікацій, де розглядаються принципи розробки програмного забезпечення
та вибір інструментальних засобів.
Робота складається з 4-х розділів, в яких подається інформація про:
- аналіз предметної області та постановку задачі;
- огляд існуючих технологій, за допомогою яких можна реалізувати
подібну систему та обґрунтування вибору тієї чи іншої технології;
- реалізацію системи: відображення структури системи, опис функцій
кожної частини системи, технічні вимоги до системи а також
практична оцінка ефективності роботи;
- розробка захисту даних користувачів та огляд існуючих рішень.
Використана література, під час написання роботи, досить добре
розкриває основні методики та підходи для розробки подібних інформаційно-
аналітичної системи.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 5
а
1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА ЗАДАЧІ
1.1 Аналіз існуючих систем
Аналіз існуючих інформаційно-аналітичних систем вибору
інструментальних засобів для створення програмного продукту може бути
важливим кроком у розумінні поточного стану цієї області та виявленні
сильних та слабких сторін наявних рішень. Тому важливо провести
загальний огляд деяких відомих систем, які можуть бути використані для
вибору інструментальних засобів при розробці. Декілька з них включають:
- G2 Crowd – платформа, яка надає користувачам огляди, рейтинги та
порівняння різних програмних продуктів. Вона містить інформацію
про функціональність, відгуки користувачів, ціни та інші параметри,
які можуть допомогти при виборі інструментів;
- SoftwareAdvice – платформа надає поради та рекомендації щодо вибору
програмного обладнання та інструментів для різних галузей. Вона
містить огляди, відгуки користувачів та порівняння різних продуктів;
- Capterra – нлайн-довідник, який надає користувачам інформацію про
різноманітні програмні продукти, включаючи відгуки користувачів,
оцінки, функціональність та ціни. Він допомагає вибрати оптимальні
інструменти для конкретних потреб.
Більш детально розглянемо на прикладах платформ G2 Crowd та
SoftwareAdvice.
G2 Crowd платформа спрямована на допомогу бізнесам і користувачам
при виборі оптимальних програмних рішень.
Основна мета полягає в забезпеченні користувачів надійною та
корисною інформацією про програмні продукти. На платформі можна знайти
широкий спектр категорій програмного забезпечення, включаючи CRM-
системи, електронну комерцію, управління проектами, маркетингові
інструменти, аналітичні платформи, хмарні послуги та багато іншого.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 6
а
Один з головних аспектів G2 Crowd - це огляди та рейтинги від
користувачів. Користувачі можуть залишати свої відгуки про програмні
продукти, оцінюючи їх функціональність, користувальницький досвід,
підтримку, швидкість та інші параметри[1]. Це дозволяє іншим користувачам
отримати об'єктивну оцінку програмного продукту від людей, які вже його
використовували, приклад оформлення платформи зображено на рисунку 1.1.
Рисунок 1.1 – Зовнішній вигляд платформи G2 Crowd
Також є порівняння програмних продуктів. Користувачі можуть
порівнювати різні рішення за різними критеріями, такими як ціна,
функціональність, інтеграція з іншими системами та інші. Це дозволяє
знайти найбільш підходящий варіант для конкретних потреб.
Надає додаткову інформацію про кожен програмний продукт, таку як
опис функцій, особливості, підтримувані платформи, відомості про
виробника та інші корисні деталі. Ця інформація допомагає користувачам
отримати загальне уявлення про продукт та зробити обґрунтоване рішення
щодо його вибору.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 7
а
Враховуючи велику кількість відгуків та рейтингів, а також широкий
спектр категорій програмного забезпечення, G2 Crowd є цінним джерелом
інформації для бізнесів та користувачів, які шукають надійні та високоякісні
програмні рішення, приклад оформлення платформи зображено на рисунку
Також має ряд деяких недоліків, які варто враховувати:
- існує ризик, що деякі відгуки можуть бути неправдивими або
спрямованими на маніпуляцію рейтингами. Деякі виробники
програмного забезпечення можуть стимулювати своїх користувачів до
позитивних відгуків або негативних відгуків щодо конкурентів;
- не всі користувачі, які використовують програмні продукти, залишають
відгуки на G2 Crowd. Це може призвести до неповної репрезентації або
перекручення уявлення про якість або популярність деяких програмних
продуктів. Варто розглядати інші джерела відгуків та коментарів для
отримання більш повного розуміння про продукт;
- можуть бути випадки, коли деякі програмні продукти не представлені
на платформі або мають обмежену інформацію. Це може обмежити
варіанти вибору та потребувати додаткових досліджень з використання
інших джерел;
- G2 Crowd є комерційною платформою, і вона може мати партнерські
відносини з певними виробниками програмного забезпечення. Це може
вплинути на порівняння та рейтинги продуктів, що можуть бути
спрямовані на підтримку певних виробників або впливових гравців на
ринку.
Загалом, при використанні G2 Crowd варто шукати додаткові джерела
інформації та розглядати різні аспекти при виборі програмного продукту [2].
SoftwareAdvice полягає в тому, щоб спростити процес вибору
програмного забезпечення для користувачів, приклад оформлення платформи
зображено на рисунку 1.2.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 8
а
Рисунок 1.2 – Зовнішній вигляд платформи G2 Crowd
Платформа пропонує можливість зв'язатися з експертами, які надають
персоналізовані консультації та рекомендації засобів, відповідних
конкретним потребам та бюджету користувача [3].
Основні особливості та переваги SoftwareAdvice:
- користувачі можуть отримати консультацію від досвідчених фахівців у
сфері програмного забезпечення. Експерти розуміють особливості
різних галузей та допоможуть знайти найкращі рішення, враховуючи
конкретні потреби користувача;
- SoftwareAdvice надає можливість знайти і порівняти різні програмні
рішення за різними параметрами, такими як функціональність, ціна,
масштабованість тощо. Користувачі можуть вибрати категорію
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 9
а
програмного забезпечення та отримати список рекомендованих
продуктів;
- можливість переглядати відгуки користувачів про різні програмні
продукти. Це дозволяє отримати об'єктивні оцінки та відгуки від
людей, які вже використовували ці продукти, що може допомогти при
прийнятті рішення ,приклад відгуків зображено на рисунку 1.3;
Рисунок 1.3 – Приклад відгуків на платформі
- SoftwareAdvice є безкоштовним для користувачів. Вони можуть
отримати консультацію та рекомендації безпосередньо без будь-яких
витрат;
- платформа охоплює багато різних категорій програмного забезпечення,
включаючи CRM, управління проектами, фінанси, маркетинг та інші.
Це дозволяє користувачам знайти рішення для різних бізнес-потреб [4].
Варто врахувати наступні недоліки:
- обмеженість вибірки;
- суб'єктивність рекомендацій;
- відсутність повної незалежності;
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 10
а
- залежність від експертів;
- SoftwareAdvice надає рекомендації та огляди, але вони не забезпечують
безпосереднього доступу до програмного забезпечення.
Рекомендації та консультації повинні бути доповнені додатковим
дослідженням та врахуванням інших джерел інформації для забезпечення
об'єктивного рішення[5].
Аналіз існуючих систем показав, що аналогів подібних систем немає, є
лише подібні за своїм функціоналом але не настільки практичні або
повноцінні.
1.2 Постановка задачі
У сучасному світі програмних продуктів, розробка яких вимагає
використання інструментальних засобів, стає все більш складною і
багатогранною задачею. Розмаїтість інструментарію, який пропонується на
ринку, постійно зростає, і розробники стикаються зі значними труднощами
при виборі оптимальних засобів для своїх проектів. Велике число
інструментів з різними можливостями, функціональністю та обмеженнями
ускладнює процес прийняття рішень щодо вибору найбільш підходящих
засобів.
У зв'язку з цим, виникає потреба в інформаційно-аналітичній системі,
яка надасть розробникам зручні та надійні інструменти для вибору
оптимальних засобів для створення програмних продуктів. Метою даної
дипломної роботи є створення такої системи, яка забезпечуватиме ефективну
підтримку в процесі прийняття рішень щодо вибору інструментальних
засобів.
Розробка програмних продуктів є складним і трудомістким процесом, і
вибір інструментальних засобів впливає на якість, продуктивність та
ефективність розробки. Необхідність обрати правильні інструменти для
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 11
а
конкретного проекту важлива для досягнення успіху у сфері програмної
розробки.
Незважаючи на значну кількість наявних інструментів, розробники
часто стикаються з проблемою визначення найбільш підходящих засобів для
своїх потреб. Це пов'язано зі складністю оцінки можливостей, сумісності з
іншими інструментами та врахуванням специфічних вимог проекту. В таких
умовах інформаційно-аналітична система, яка надає користувачам
інформацію про доступні інструменти, їх можливості, обмеження та
порівнює їх характеристики, стає незамінним інструментом для розробників.
Для досягнення поставленої мети необхідно вирішити такі завдання:
- розглянути і проаналізувати існуючі інструменти, які
використовуються при розробці програмних продуктів, та
визначити основні критерії їх оцінки;
- розробити модель для оцінки інструментальних засобів на
основі визначених критеріїв;
- створити базу даних, яка буде містити інформацію про різні
інструментальні засоби та їх характеристики;
- розробити інформаційно-аналітичну систему, яка
забезпечуватиме вибір оптимальних засобів на основі моделі
оцінки та бази даних;
- реалізувати прототип інформаційно-аналітичної системи з
використанням мови програмування JavaScript.
- використати SQL базу даних для збереження та керування
інформацією про інструментальні засоби.
- розробити користувацький інтерфейс системи на HTML, що
забезпечуватиме зручний доступ користувачів до функціоналу
системи;
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 12
а
- провести тестування розробленої системи та оцінити її
ефективність та корисність для розробників програмних
продуктів.
Очікується, що розроблена інформаційно-аналітична система надасть
користувачам засоби для вибору оптимальних інструментальних засобів для
створення програмних продуктів. Вона допоможе розробникам зекономити
час і зусилля при виборі інструментів, а також покращить якість та
продуктивність їх роботи.
Результати дослідження та розробки інформаційно-аналітичної системи
будуть представлені у вигляді дипломної роботи та демонстраційного
прототипу системи.
Дане дослідження має свої обмеження, які варто врахувати при
реалізації проекту. Деякі з них включають:
- обмежений перелік інструментальних засобів: у роботі будуть
розглядатися лише деякі популярні та широко використовувані
інструментальні засоби. Інші менш відомі або спеціалізовані
інструменти можуть бути виключені з дослідження;
- оцінка інструментів на основі загальноприйнятих критеріїв: оцінка
буде базуватися на загальноприйнятих критеріях, які можуть не
враховувати всі можливі потреби конкретного проекту;
- обмежений функціонал прототипу: демонстраційний прототип
системи може не містити всіх планованих функцій і можливостей,
але буде демонструвати основні принципи та можливості системи.
Отже, постановка задачі дипломної роботи "Інформаційно-аналітична
система вибору інструментальних засобів для створення програмних
продуктів" передбачає розробку системи, яка допоможе розробникам
ефективно вибирати необхідні інструментальні засоби шляхом аналізу та
порівняння їх характеристик на основі певних критеріїв.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 13
а
1.3 Висновки до розділу 1
В першому розділі роботи розглянуто та проаналізовано існуючі
інформаційно-аналітичні системи вибору інструментальних засобів для
створення програмного продукту. Для кращого розуміння було обрано дві
платформи G2 Crowd та SoftwareAdvice, де проаналізовано їхні переваги та
недоліки, а також можливість виявити можливі області покращення.
Також сформовано задачі, що потребують розв’язку для написання
роботи, сформована на основі виявлених недоліків та потреб користувачів.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 14
а
РОЗДІЛ 2 ВИБІР ТЕХНОЛОГІЇ ТА ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ
2.1 Огляд існуючих технологій
Технології технологій та інструментальних засобів, які можуть
використовуватися дляінформаційно-аналітичних систем.
Застосування штучного інтелекту у створенні інформаційно-
аналітичних систем дозволяє автоматизувати та поліпшити процеси обробки
та аналізу даних. Це робить ІАС більш потужними та ефективними і
допомагає зробити кращі рішення на основі об'єктивних даних.
Штучний інтелект (ШІ) – це галузь комп'ютерної науки, яка
займається розробкою систем та програм, здатних до самостійного
розуміння, вивчення, мислення, прийняття рішень та виконання завдань, які
традиційно вимагають інтелекту людини [4]. ШІ прагне створити
комп'ютерні системи, які можуть функціонувати та вчиняти подібно до
людей, використовуючи здатності, такі як розпізнавання образів, розуміння
мови, прийняття рішень та навчання з досвіду.
Основні складові штучного інтелекту включають:
- машинне навчання (MachineLearning)є ключовою галуззю штучного
інтелекту, в якій система навчається на основі великого обсягу даних,
виявляє закономірності та робить прогнози або приймає рішення без
явного програмування;
- обробка природньої мови (NaturalLanguageProcessing) дозволяє
комп'ютерам розуміти та використовувати людську мову, включаючи
розпізнавання мовлення, переклад тексту, розуміння семантики тощо;
- штучний інтелект може використовувати алгоритми комп'ютерного
зору для розпізнавання та аналізу образів із зображень або відео;
- розподілені системи використовуються для спільної роботи декількох
комп'ютерів або пристроїв з метою вирішення складних завдань,
розподілення обчислювальних завдань та обміну даними;
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 15
а
- експертні системи моделюють знання та експертний досвід у
конкретній галузі, щоб приймати рішення або вирішувати проблеми,
які зазвичай вимагають експертного знання.
Штучний інтелект використовується в різних сферах, таких як
медицина, фінанси, автоматизація виробництва, транспорт, машинне
бачення, голосові помічники та багато інших. Він здатен вирішувати складні
завдання, аналізувати великі обсяги даних та надавати нові можливості у
багатьох галузях життя.
Обробка природної мови (NaturalLanguageProcessing, NLP), може
використовуватися для розуміння та обробки людської мови, що дозволяє
автоматично аналізувати текстову інформацію з різних джерел [5]. Це
допомагає виявляти ключові слова, теми, емоції та зв'язки між текстами.
Машинне навчання (MachineLearning, ML) може використовувати
алгоритми машинного навчання для виявлення закономірностей у великих
наборах даних. Наприклад, він може навчитися класифікувати дані, робити
прогнози або виявляти аномалії. Машинне навчання дозволяє ІАС
вдосконалюватися та адаптуватися на основі нових даних.
Когнітивні системи може використовуватися для створення
когнітивних систем, які можуть розуміти, аналізувати та використовувати
інформацію аналогічно людському мисленню [6]. Це включає в себе
здатність до розпізнавання образів, розуміння мови, прийняття рішень та
навчання з досвіду.
Автоматична обробка даних може автоматизувати процес збору,
очищення та обробки даних у ІАС. Він може автоматично визначати та
коригувати помилки, знаходити спільні шаблони та зв'язки у даних, а також
створювати звіти та візуалізації результатів.
Рекомендаційні системи може використовуватися для створення
рекомендаційних систем, які аналізують великі обсяги даних та знаходять
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 16
а
взаємозв'язки між користувачами, продуктами та іншими факторами. Це
дозволяє надавати персоналізовані рекомендації користувачам ІАС.
Аналіз і візуалізація даних може допомогти в аналізі та візуалізації
великих обсягів даних у зрозумілій формі [7]. Він може автоматично
виявляти та показувати важливі зв'язки, тренди та патерни у даних,
спрощуючи процес розуміння та прийняття рішень.
На основі штучного інтелекту було створено чат GPT (GenerativePre-
trainedTransformer) - це система чат-бота, яка використовує алгоритм GPT,
що базується на передбачуваних трансформаторах, для генерації текстових
відповідей на запитання користувачів.
GPT є одним з передових моделей глибокого навчання, розроблених
компанією OpenAI. Вона використовується для автоматичного генерування
тексту, зокрема для створення реалістичних речень та відповідей на
запитання.
GPT заснований на технології трансформаторів, яка дозволяє моделі розуміти
та генерувати текст з контекстуальною інформацією. Він навчається на
великій кількості текстових даних, що дозволяє йому виробляти відповіді, які
мають сенс і відповідають на запитання користувача, зовнішній вигляд чату
зображено на рисунку 2.1.
Рисунок 2.1 – Зовнішній вигляд чату
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 17
а
Чат GPT може використовуватись в різних сферах, включаючи веб-
чати для підтримки клієнтів, автоматичні відповіді на запитання, генерацію
контенту та багато іншого. Він допомагає забезпечити ефективний та
природний спосіб взаємодії з користувачами через текстові повідомлення.
Хмарні технології, відомі також як обчислення у хмарі, відносяться до
моделі надання обчислювальних ресурсів, таких як обчислювальна
потужність, зберігання даних та програмне забезпечення, через Інтернет.
Замість того, щоб мати локальне обладнання та інфраструктуру, користувачі
можуть отримувати доступ до цих ресурсів від провайдерів хмарних
послуг [8]. Приклад можливостей використання хмарних технологій
зображено на рисунку 2.2.
Рисунок 2.2 – Напрямки використання хмарних технологій
Основні характеристики хмарних технологій:
- хмарні технології базуються на віртуалізації, що дозволяє розділяти
фізичні ресурси, такі як сервери, зберігання та мережі, на віртуальні
екземпляри. Це дозволяє ефективно використовувати ресурси та
надавати їх користувачам по запиту;
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 18
а
- надають можливість масштабувати обчислювальні ресурси залежно від
потреб користувача. Вони можуть бути масштабовані вертикально
(додавання більш потужних ресурсів до існуючих серверів) або
горизонтально (додавання нових серверів);
- користувачі можуть самостійно виконувати певні завдання, такі як
налаштування серверів, зберігання даних та мережеві налаштування,
без прямого втручання провайдера хмарних послуг;
- послуги доступні через Інтернет з будь-якого місця і будь-якого
пристрою з підтримкою з'єднання з мережею. Це дозволяє
користувачам отримати доступ до своїх даних та ресурсів з будь-якого
місця в зручний для них час;
- забезпечують можливість автоматичного резервного копіювання даних
та відновлення у разі втрати чи пошкодження. Це забезпечує надійність
та безпеку даних.
Переваги хмарних технологій включають зниження витрат на
обладнання та обслуговування, гнучкість у використанні ресурсів,
забезпечення високої доступності та швидкого масштабування. Однак, також
важливо враховувати питання щодо безпеки даних, залежності від Інтернет-
з'єднання та можливості впливу на конфіденційність даних у разі
недостатньої захищеності.
AmazonWebServices (AWS) є провідним хмарним провайдером, що
надає широкий спектр послуг та інфраструктури для побудови й управління
хмарними сервісами. AWS пропонує набір платформ та інструментів для
розробки, розгортання та керування програмними додатками та
інфраструктурою, можна розглянути на рисунку 2.3.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 19
а
Рисунок 2.3 – Платформи що включає в себе AWS
AWS включає AmazonElasticComputeCloud, що надає віртуальні
сервери, які дозволяють користувачам запускати та керувати
обчислювальними ресурсами в хмарному середовищі. Можна масштабувати
свої обчислювальні потреби, налаштовувати віртуальні машини та управляти
навантаженням [9].
AmazonSimpleStorageService послуга зберігання об'єктів, яка дозволяє
зберігати та отримувати великі обсяги даних у хмарному середовищі. Він
забезпечує масштабованість, надійність та доступність даних.
AmazonRelationalDatabaseService надає керовані реляційні бази даних,
такі як MySQL, PostgreSQL, Oracle та інші. Він автоматизує процеси
розгортання, масштабування та керування базами даних, забезпечуючи
високу доступність та надійність.
AmazonLambda послуга обчислення без серверів (serverless), яка
дозволяє виконувати код без необхідності управління інфраструктурою.
Можна запускати функції відповідно до потреб та платити лише за фактичне
використання обчислювальних ресурсів [10].
AmazonElasticBeanstalk дозволяє розгортати та масштабувати веб-
додатки швидко та легко. Автоматизує процеси розгортання та керування
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 20
а
інфраструктурою, дозволяючи розробникам зосередитись на програмному
коді.
Платформа також має інші сервіси для машинного навчання, інтернету
речей, аналітики даних, мережевих послуг та багатьох інших галузей. AWS
забезпечує масштабованість, безпеку та надійність для різних потреб бізнесу
та розробників програмного забезпечення.
GoogleCloud є іншим провідним хмарним провайдером, який надає
широкий спектр хмарних послуг та інструментів для розробки, розгортання
та керування програмними додатками. Він пропонує інфраструктуру,
аналітичні сервіси, бази даних, штучний інтелект, інструменти для розробки
та багато інших рішень.
GoogleComputeEngine послуга віртуалізації, що надає віртуальні
машини для обчислень у хмарному середовищі. Вона дозволяє користувачам
запускати, масштабувати та керувати віртуальними машинами з підтримкою
різних операційних систем.
GoogleCloudStorage послуга зберігання об'єктів, що надає
масштабований та безпечний простір для зберігання даних у хмарі. Вона
пропонує надійне зберігання для структурованих та неструктурованих даних
з можливістю доступу з різних пристроїв та місць.
GoogleKubernetesEngine управління контейнерами на основі відкритого
стандарту Kubernetes. Воно дозволяє розгортати, керувати та масштабувати
контейнеризовані додатки в хмарному середовищі зі зручними
інструментами для автоматизації та оркестрації [12].
GoogleBigQuery послуга аналітики даних, яка дозволяє швидко та
ефективно аналізувати великі обсяги даних. Вона пропонує масштабовану та
швидку обробку даних з можливістю виконання складних запитів та
інтерактивного взаємодії з даними.
GoogleCloud AI Platform набір інструментів для розробки та
використання штучного інтелекту. Він надає можливості для навчання
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 21
а
моделей машинного навчання, розпізнавання образів, обробки мови та інших
задач інтелектуального аналізу даних.
GoogleCloud також має інші сервіси, такі як бази даних, інтернет речей,
мережеві послуги та інструменти для розробки та керування хмарними
додатками. Він відомий своєю масштабованістю, широким функціоналом та
інноваційними можливостями.
Microsoft Azure хмарна платформа та інфраструктура корпорації
Microsoft, призначена для розробників застосунківхмарних обчислень і
покликана спростити процес створення онлайнових додатків.
Microsoft Azure пропонує широкий спектр сервісів, включаючи
обчислення, зберігання даних, бази даних, аналітику, штучний інтелект,
Інтернет речей (IoT) та багато інших [13]. Завдяки гнучким можливостям
масштабування, безпеки та доступності, Azure використовується
розробниками та підприємствами для розгортання різних видів додатків, від
невеликих веб-сайтів до складних корпоративних систем.
Набір сервісів Azure включає такі компоненти, як AzureVirtualMachines
(віртуальні машини), AzureAppService (платформа для розгортання веб-
додатків), Azure SQL Database (реляційна база даних), AzureFunctions
(облікові функції), AzureCognitiveServices (сервіси штучного інтелекту),
AzureIoTHub (платформа для Інтернету речей) та багато інших. Можливості
зображенні на рисунку 2.3.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 22
а
Рисунок 2.3 – Можливості Microsoft Azure
Microsoft Azure також надає інструменти для керування та моніторингу
ресурсів у хмарі, автоматизації процесів розгортання та конфігурації, а також
засоби для аналізу та візуалізації даних. Вона підтримує різні мови
програмування, фреймворки та інструменти розробки, що дає розробникам
велику гнучкість у роботі з платформою.
Мови програмування які можливо використовувати для подібних
систем та є найбільш популярними.
Java - це високорівнева об'єктно-орієнтована мова програмування,
розроблена компанією SunMicrosystems (зараз належить компанії Oracle).
Вона була випущена у 1995 році і з того часу стала однією з
найпопулярніших мов програмування у світі.
Java є мовою загального призначення, що означає, що вона може
використовуватись для розробки різноманітних типів програмних додатків,
включаючи настільні додатки, веб-додатки, мобільні додатки, серверні
додатки та інші [14]. Одна з головних переваг Java полягає у її
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 23
а
переносимості, тобто програми, написані на Java, можуть запускатись на
різних платформах без необхідності перекомпіляції.
Java базується на об'єктно-орієнтованому підході до програмування, що
дозволяє розбити програми на окремі об'єкти з власними властивостями та
поведінкою.
Використовує віртуальну машину Java (JVM), яка перетворює
компільований Java-код в машинний код, зрозумілий певній платформі. Це
дозволяє запускати Java-програми на різних операційних системах без
необхідності змінювати вихідний код.
Має вбудовані механізми безпеки, які дозволяють обмежувати доступ
до ресурсів системи та запобігати виконанню небезпечного коду. Також має
підтримку багато потокового програмування, що дозволяє розробляти
програми, які можуть виконувати декілька завдань одночасно.
Широка підтримка з боку розробників та велику кількість бібліотек,
фреймворків та інструментів, що полегшують розробку програмних
продуктів.
Java використовується в різних сферах, включаючи корпоративний
розробку, веб-розробку, мобільні додатки, наукові дослідження та багато
інших. Вона продовжує залишатись однією з найпопулярніших мов
програмування завдяки своїй переносимості, надійності та широким
можливостям.
JavaScript – це високорівнева, інтерпретована мова програмування, яка
використовується для розробки динамічних веб-сторінок. Вона була створена
компанією Netscape і спочатку випущена у 1995 році. Сьогодні JavaScript є
однією з найпоширеніших мов програмування у веб-розробці.
JavaScript виконується на боці клієнта (веб-переглядача), що дозволяє
забезпечити взаємодію користувача з веб-сторінкою. Вона використовується
для динамічного оновлення вмісту сторінки, обробки подій, валідації форм,
анімації та багатьох інших функцій.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 24
а
Базується на об'єктно-орієнтованому підході, де програма складається з
об'єктів, що мають свої властивості та методи. Синтаксис JavaScript схожий
на синтаксис інших мов програмування, таких як C, C++ та Java, що
полегшує вивчення та використання мови. Використовує динамічну
типізацію, що означає, що змінні можуть змінювати свій тип під час
виконання програми [15]. Має велику кількість сторонніх бібліотек і
фреймворків, які дозволяють розширити його функціональність та
полегшити розробку.JavaScript використовується не тільки для розробки веб-
сторінок, але також для розробки веб-додатків, мобільних додатків,
настільних додатків та навіть серверної розробки за допомогою платформи
Node.js.
Python – це високорівнева, інтерпретована мова програмування, яка
була розроблена у 1991 році Гвідо ван Россумом. Вона відома своєю
простотою синтаксису, читабельністю коду і широким спектром застосувань.
Python використовує відступи (пробіли або табуляцію) для
відображення блоків коду, що робить його дуже читабельним та легким для
розуміння. Підтримує об'єктно-орієнтований підхід до програмування, де
об'єкти мають властивості та методи, а програма складається з цих об'єктів.
Має потужну стандартну бібліотеку, яка включає в себе модулі для роботи з
різними завданнями, такими як обробка рядків, мережеве програмування,
робота з базами даних, графіка, наукові обчислення та багато іншого.
Доступний для різних платформ, включаючи Windows, macOS, Linux і багато
інших. Код, написаний на Python, може бути запущений без змін на різних
операційних системах. Дозволяє розширювати свою функціональність за
допомогою сторонніх пакетів і бібліотек.
Є одним з найпопулярніших мов програмування завдяки своїй
простоті, гнучкості та потужним можливостям.
GoLand – це інтегроване середовище розробки (IDE) для мови
програмування Go. Розроблене компанією JetBrains, відомою своїми
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 25
а
продуктами для розробки програмного забезпечення. GoLand надає потужні
інструменти та функціональні можливості, спрямовані на полегшення
розробки програм на мові Go.
GoLand має розумний редактор, який надає підказки, автодоповнення
коду, перевірку синтаксису, рефакторинг та інші функції, що полегшують
написання коду. Має повноцінну підтримку мови програмування Go,
включаючи синтаксичне підсвічування, перехід до визначення, пошук по
коду, аналіз покриття коду тестами та багато інших [16]. Можливості
налагодження, що дозволяють зупиняти виконання програми, ставити точки
зупинки, переглядати значення змінних та крокувати по коду для з'ясування
проблем. Надає інструменти для керування проектами на мові Go,
включаючи можливість створювати, редагувати проекти, керувати
залежностями та виконувати тестування. GoLand інтегрується з різними
засобами розробки, такими як системи контролю версій (наприклад, Git),
системи збирання (наприклад, Docker) та інші, що полегшує роботу з
проектами.
PHP (HypertextPreprocessor) – це широко використовувана мова
сценаріїв загального призначення з відкритим вихідним кодом.
Синтаксис мови бере початок з C, Java і Perl. PHP досить простий для
вивчення. Перевагою PHP є надання web-розробникам можливості швидкого
створення динамічних web-сторінок.
Значною відзнакою PHP від якого-небудь коду, що виконується на
стороні клієнта, наприклад, JavaScript, є те, що PHP-скрипти виконуються на
стороні сервера.
Існують три основні області, де використовується PHP:
- створення скриптів для виконання на стороні сервера;
- створення скриптів для виконання в командному рядку;
- створення додатків GUI (графічних інтерфейсів), що виконуються на
стороні клієнта.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 26
а
PHP доступний для більшості операційних систем, включаючи Linux,
багато модифікації Unix (такі, як HP-UX, Solaris і OpenBSD), Microsoft
Windows, Mac OS X, RISC OS, та багатьох інших.
HTML — стандартизована мова розмітки документів у Всесвітній
павутині. Більшість веб сторінок мають зміст розмітки мовою HTML (або
XHTML). Мова HTML інтерпретується браузерами; отриманий в результаті
інтерпретації форматований текст відображається на екрані монітора
комп’ютера або мобільного пристрою.
CSS — спеціальна мова, яка використовується для опису зовнішнього
вигляду сторінок, написаних мовами розмітки даних.
Найбільш часто CSS використовують для візуальної презентації сторінок,
написаних на HTML та XHTML, але формат CSS може застосовуватись і до
інших видів XML-документів.
CSS має різні рівні та профілі. Наступний рівень CSS створюється на
основі попередніх, додаючи нову функціональність або розширюючи
функції, що вже існують. Рівні позначаються як CSS1, CSS2 та CSS3. Профілі
- сукупність правил CSS одного або більше рівнів, створені для окремих
типів пристроїв або інтерфейсів. Наприклад, існують профілі CSS для
принтерів, мобільних пристроїв тощо.
CSS (каскадна або блокова верстка) прийшла на заміну табличній
верстці веб сторінок. Головна перевага блокової верстки - розділення змісту
сторінки (даних) та її візуальної презентації (оформлення).
Фреймворк – це набір загальних інструментів, бібліотек, правил і
конвенцій, які допомагають розробникам створювати програмні додатки. Він
надає скелет або основу для побудови програми, визначає структуру,
організацію коду та надає готові компоненти для виконання специфічних
завдань.
Нижче перераховано декілька найпопулярніших фреймворків у світі
програмування:
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 27
а
Django – це високорівневий фреймворк розробки веб-додатків на мові
Python. Він пропонує швидку розробку за рахунок готових компонентів,
потужного ORM (об'єктно-реляційного відображення) і вбудованої
адміністративної панелі.
Spring – це потужний фреймворк розробки застосунків на мові Java.
Він пропонує комплексний набір інструментів та модулів для створення
корпоративних та веб-додатків. Spring надає підтримку для інверсії
управління, введення залежностей, роботи з базами даних, веб-розробки та
інших аспектів програмування.
Express.js – це легкий та гнучкий фреймворк розробки веб-додатків на
мові JavaScript. Він базується на Node.js та надає простий інтерфейс для
роботи з HTTP-запитами, маршрутизацією, обробкою шаблонів та багатьма
іншими функціями. Express.js дозволяє швидко створювати веб-сервери та
API за допомогою мінімального набору коду.
Nest.js – це прогресивний фреймворк розробки серверних додатків на
мові JavaScript/TypeScript. Він базується на екосистемі Node.js та пропонує
модульну архітектуру, вбудовану підтримку маршрутизації, обробки HTTP-
запитів, роботи з базами даних та іншими функціями. Nest.js поєднує
принципи об'єктно-орієнтованого та функціонального програмування, що
сприяє розробці швидких, масштабованих та підтримуваних додатків [17].
Ці фреймворки допомагають розробникам спростити процес створення
програмних додатків, забезпечуючи готові компоненти, інструменти та
структуру для ефективної розробки. Кожен з цих фреймворків має свої
особливості та використовується у певному контексті програмування.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 28
а
2.2 Обґрунтування вибору засобів розробки
При виборі технологій для розробки інформаційно-аналітичної
системи, такої як система вибору інструментальних засобів для створення
програмних продуктів, необхідно враховувати кілька ключових факторів,
таких як функціональність, продуктивність, розширюваність та екосистема
підтримки.
Функціональність системи відноситься до набору можливостей,
операцій і функцій, які вона може виконувати. Це описує, як система працює
і які завдання вона може виконувати.
Функціональність системи може бути визначена у формі
функціональних вимог, які описують, що система повинна робити, а також у
формі нефункціональних вимог, які описують характеристики, які система
повинна мати, наприклад, продуктивність, надійність, доступність,
ефективність тощо.
У процесі розробки системи функціональність зазвичай
документується у вигляді специфікацій, які описують кожну функцію та її
поведінку. Ці специфікації допомагають розробникам зрозуміти, як система
повинна працювати і які задачі вона повинна виконувати.
Враховуючи це, функціональність системи є ключовим аспектом при
проектуванні, розробці та використанні будь-якої інформаційної системи чи
програмного забезпечення.
Продуктивність системи - це міра ефективності та ефективності роботи
системи. Вона визначає, наскільки швидко та успішно система виконує свої
функції та завдання. Продуктивність може бути виміряна різними
показниками, залежно від типу системи та її цілей.
Одним з ключових показників продуктивності є швидкодія. Швидкодія
вимірює час, необхідний для виконання певної операції або завдання
системою. Чим менше часу потрібно для виконання завдання, тим більша
продуктивність системи.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 29
а
Інший важливий показник - обсяг продуктивності. Він визначається
кількістю завдань або операцій, які система може виконувати за певний
період часу. Чим більший обсяг завдань система може обробляти або
виконувати, тим вища її продуктивність.
Також у продуктивності системи важлива ефективність використання
ресурсів. Це означає, що система повинна максимально використовувати свої
ресурси, такі як процесорний час, пам'ять, мережевий пропускний здатність
тощо, без марного або зайвого навантаження.
Для покращення продуктивності системи можна використовувати різні
стратегії, такі як оптимізація алгоритмів, вдосконалення апаратного
забезпечення, паралельне виконання завдань, кешування даних тощо.
Оптимізація продуктивності дозволяє забезпечити кращу швидкодію,
збільшення обсягу обробки і поліпшення ефективності використання
ресурсів.
У кінцевому підсумку, продуктивність системи є важливим фактором
для досягнення більшої ефективності та якості роботи системи. Вона впливає
на швидкість, завдання і використання ресурсів, що має значення для
широкого спектру сфер, включаючи програмне забезпечення, апаратне
забезпечення, мережі та інші системи.
Розширюваність системи - це властивість системи або програмного
забезпечення, яка дозволяє збільшувати її масштаби, функціональність і
продуктивність шляхом додавання нових компонентів, ресурсів або модулів.
Це важлива характеристика, особливо для систем, що мають високу
потенційну потребу у зростанні або зміні.
Розширюваність може мати кілька аспектів:
- горизонтальна розширюваність полягає в збільшенні масштабу
системи шляхом додавання нових ідентичних елементів. Наприклад,
у веб-додатку це може означати додавання додаткових серверів для
обробки зростаючого навантаження;
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 30
а
- вертикальна розширюваність полягає в збільшенні масштабу системи
шляхом додавання більш потужних ресурсів, таких як процесори,
пам'ять або мережеві пропускні здатності. Наприклад, це може
означати заміну сервера на більш потужний або додавання
додаткової оперативної пам'яті;
- функціональна розширюваність відноситься до можливості системи з
легкістю додавати нові функції або модулі. Це означає, що система
може адаптуватися до нових вимог і розширюватися без необхідності
змінювати основну архітектуру або код.
Розширюваність дозволяє системам бути більш гнучкими і
пристосовуватися до зростаючих потреб користувачів або бізнес-вимог. Вона
також може забезпечувати високу доступність і зменшувати ризики відмови
системи, оскільки дозволяє розподіляти завдання і навантаження на більшу
кількість ресурсів.
При розробці системи важливо враховувати розширюваність з самого
початку і використовувати архітектурні рішення, що сприяють її
розширенню у майбутньому.
Базуючись на вищесказаному та на огляді існуючих технологій, можна
підібрати кращі інструменти для розробки подібної системи.
Використання ChatGPT, який базується на мережевому архітектурному
підході GPT-3.5, пропонує широкий спектр можливостей для взаємодії з
користувачем у форматі чат-боту. Вона забезпечує високу якість природньої
мови, дозволяючи створювати розумні та автоматизовані відповіді на
запитання користувачів.
Node.js – це середовище виконання JavaScript, яке забезпечує
швидкість та ефективність розробки. Використання Node.js дозволяє
побудувати ефективний та масштабований серверний шар для системи. Його
асинхронна модель вводу/виводу дозволяє ефективно обробляти багато
запитів одночасно.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 31
а
Express.js – це легкий фреймворк для побудови веб-додатків на основі
Node.js. Він надає простий та зрозумілий спосіб створення API,
маршрутизації та обробки запитів. Express.js сприяє швидкому розгортанню
проекту та пропонує гнучкість у розробці серверної частини.
MySQL є однією з найпопулярніших відкритих реляційних баз даних.
Вона забезпечує надійність, швидкість та можливості масштабування для
зберігання даних. Використання MySQL дозволяє ефективно керувати базою
даних, забезпечувати цілісність та забезпечувати потрібні запити для
інформаційно-аналітичної системи.
HTML та CSS є стандартними мовами для створення веб-інтерфейсів.
Вони надають потужні можливості для розробки інтуїтивно зрозумілого та
привабливого веб-інтерфейсу для користувачів системи. Використання
HTML та CSS дозволить створити ефективний та добре структурований веб-
інтерфейс.
2.2 Висновки до розділу 2
В даному розділі було проведено огляд існуючих технологій для
розробки системи. Такі як мови програмування, фреймворки, хмарні
технології та штучний інтелект.
На основі проведеного огляду і аналізу, був обґрунтований вибір
технологій, які найкраще відповідають потребам інформаційно-аналітичної
системи. Цей вибір сприятиме успішній реалізації системи з урахуванням
ефективності та надійності.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 32
а
3 РОЗРОБКА ІНФОРМАЦІЙНО-АНАЛІТИЧНОЇ СИСТЕМИ ВИБОРУ
ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ ДЛЯ СТВОРЕННЯ ПРОГРАМНИХ
ПРОДУКТІВ
3.1Структура системи
Для реалізації інформаційно-аналітичної системи вибору
інструментальних засобів для створення програмних продуктів було
розроблено наступну структуру програмного забезпечення зображено на
рисунку 3.1.
Модуль
користувацького Модуль
інтерфейсу адміністрування
Модуль обробки
наданої інформації
про програмний
продукт
РБоДзроблена система
Модуль рекомендацій
Рисунок 3.1 – Схема структури розробленої системи
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 33
а
Користувацький інтерфейс (або UI, від англ. User Interface) – це та
частина програмного забезпечення або системи, яка дозволяє користувачам
взаємодіяти з комп'ютером, пристроєм або програмою. Він включає в себе
набір елементів, таких як кнопки, поля вводу, меню, вікна, іконки, панелі, які
користувач може використовувати для взаємодії з системою та виконання
певних дій. Користувацький інтерфейс має наступні основні функції:
представлення інформації (дозволяє відображати різноманітну
інформацію користувачам,це можуть бути текстові повідомлення,
графіки, таблиці, зображення та інші візуальні елементи);
введення даних (користувацький інтерфейс надає можливість вводу
даних користувачем,це може бути здійснено за допомогою полів
введення, вибіркових списків, перемикачів, кнопок та інших
елементів);
навігація (надає користувачам можливість переміщатися між різними
сторінками, розділами або функціями системи,це може бути здійснено
за допомогою меню, кнопок, посилань або інших навігаційних
елементів);
взаємодія (користувацький інтерфейс дозволяє користувачам
взаємодіяти з системою шляхом виконання різних дій,це можуть бути
натискання кнопок, перетягування об'єктів, скролінг, зміна
налаштувань та інші операції);
зворотній зв'язок (користувацький інтерфейс повинен надавати
користувачеві інформацію про стан системи, підтвердження виконаних
дій, помилки або повідомлення про неправильні введені дані,це можуть
бути спливаючі повідомлення, підказки, повідомлення про помилки
тощо).
Користувацький інтерфейс розробленої системи, реалізований з
використанням HTML, CSS і JavaScript, пропонує форму для збору
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 34
а
інформації про програмне забезпечення, яке планується розробити. Описаний
інтерфейс має наступну структуру:
заголовок (надає короткий опис цілей форми та розроблюваного
програмного забезпечення);
форма для збору інформації (дозволяє користувачеві вводити
необхідну інформацію про програмне забезпечення. Форма містить
різні поля для заповнення, такі як назва проекту, опис, вимоги до
функціональності, бюджет, технології, які планується використовувати
тощо. Користувач може вводити дані у відповідні поля форми);
кнопка відправки (після заповнення форми є кнопка "Відправити", яку
користувач може натиснути, щоб відправити введені дані для обробки.
Після натискання кнопки, JavaScript забезпечує перевірку та обробку
введених даних);
відображення результатів (після обробки введених даних, інтерфейс
надає інформацію про обрані інструменти для розробки програмного
забезпечення). Це може бути відображено на тій же сторінці після
відправки форми або на новій сторінці. Результати можуть включати
список рекомендованих інструментів, інформацію про їх можливості та
переваги;
дизайн і стилізація (інтерфейс стилізований за допомогою CSS, щоб
створити привабливий та зручний вигляд). Використовуються кольори,
шрифти, розміщення елементів, щоб забезпечити читабельність та
естетичність інтерфейсу.
Модуль обробки даних розробленої системи відповідає за отримання
інформації від користувача та формування пропозицій щодо технологій, які
можуть бути використані при розробці програми. Описаний модуль має
наступний функціонал:
отримання даних (модуль отримує введені користувачем дані з
форми, які включають назву проекту, опис, вимоги до
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 35
а
функціональності, бюджет тощо). Ці дані передаються модулю для
подальшої обробки;
аналіз введених даних (модуль аналізує введені дані, використовуючи
різні алгоритми та правила, щоб зрозуміти вимоги та потреби
користувача). Він визначає ключові параметри, такі як тип
програмного забезпечення, рівень складності, платформи, мови
програмування тощо;
генерація пропозицій (на основі аналізу даних, модуль формує
пропозиції щодо технологій, які можуть бути використані при
розробці програмного продукту). Це можуть бути рекомендації щодо
мов програмування, фреймворків, баз даних, інструментів розробки,
середовищ виконання тощо. Пропозиції базуються на заздалегідь
визначених правилах, експертних знаннях або аналізі існуючих
рішень;
представлення пропозицій ( надає користувачеві зрозумілу
інформацію про рекомендовані технології). Це може бути у вигляді
списку з описом та основними характеристиками кожної технології.
Користувач може переглядати ці пропозиції і обирати найбільш
підходящі для своїх потреб;
додатковий функціонал (може також містити додатковий функціонал,
такий як фільтрація пропозицій за певними критеріями, порівняння
технологій, можливість збереження або експорту пропозицій для
подальшого використання).
Модуль обробки даних забезпечує ефективну обробку інформації від
клієнта та генерацію відповідних пропозицій, що допомагає визначити
оптимальні технології для розробки програмного продукту.
База даних в розробленій системі відіграє важливу роль у зберіганні і
керуванні інформацією, необхідною для функціонування системи. Основна
мета використання бази даних полягає в забезпеченні ефективного,
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 36
а
структурованого та безпечного зберігання даних, що використовуються
системою.
База даних дозволяє зберігати інформацію про різні програмні
продукти, їх характеристики, технології, що використовуються для їх
розробки та інші релевантні дані. Це дозволяє системі оперувати
актуальними даними і забезпечує швидкий доступ до необхідної інформації.
Завдяки базі даних, система може виконувати ефективний пошук та
фільтрацію даних відповідно до вимог користувача. Це дозволяє швидко
знаходити технології та інструменти, що найкраще підходять для розробки
програмного продукту, враховуючи введені користувачем параметри.
База даних може бути використана для аналізу та отримання
статистичних даних щодо використання різних технологій та інструментів
розробки. Це дозволяє системі здійснювати оцінку ефективності та
популярності різних варіантів технологій та забезпечує об'єктивне
рекомендування користувачам. Також робота з даних дозволяє забезпечити
безпеку та контроль доступу до важливих даних. Вона може містити
механізми аутентифікації, авторизації та шифрування, що допомагають
забезпечити конфіденційність та цілісність даних.
Завдяки базі даних, система може масштабуватись та обробляти
великий обсяг даних. Вона може забезпечити ефективну роботу зі
зростанням обсягу даних та користувацької активності. В цілому, база даних
допомагає забезпечити надійне та ефективне функціонування системи,
забезпечуючи збереження, управління та доступ до важливої інформації.
Модуль рекомендацій інструментальних засобів в розробленій
системі відіграє важливу роль у наданні користувачеві рекомендацій щодо
вибору підходящих інструментів для розробки програмного продукту. Цей
модуль використовує власну базу знань системи та інтегрований чат бот GPT
для підготовки цих рекомендацій.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 37
а
Основні функції модуля рекомендацій інструментальних засобів
включають:
модуль отримує вхідні дані від користувача, які містять інформацію
про проект, його вимоги, характеристики та інші фактори, які
впливають на вибір інструментальних засобів. Вхідні дані можуть
бути отримані через користувацький інтерфейс системи;
модуль виконує запит до власної бази знань системи, яка містить
інформацію про різні інструментальні засоби, їх характеристики,
використання, переваги та недоліки. База знань може бути створена
та поповнюватися експертами в галузі розробки програмного
забезпечення;
за допомогою бази знань та алгоритмів аналізу, модуль розглядає
різні можливості інструментальних засобів і вибирає найбільш
підходящі для заданих вхідних даних. Вибір заснований на логіці та
правилах, визначених в базі знань, а також на розумінні контексту та
потреб користувача;
модуль формує рекомендації щодо використання певних
інструментальних засобів у конкретному проекті. Рекомендації
можуть включати список підходящих інструментів, їх опис, переваги,
обмеження та посилання на додаткові ресурси для отримання
детальнішої інформації;
у розробленій системі модуль рекомендацій може використовувати
інтегрований чатбот GPT для надання додаткової інформації та
відповідей на запитання користувача. Це дозволяє забезпечити
зручну та інтерактивну комунікацію з системою та отримання більш
детальних відповідей на запитання.
Модуль рекомендацій інструментальних засобів в розробленій системі
допомагає користувачеві зробити інформовані рішення щодо вибору
інструментів для розробки програмного продукту, забезпечуючи доступ до
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 38
а
актуальних та спеціалізованих знань у цій галузі, зображено структуру
рекомендацій на рисунку 3.2.
Вхідні дані
ЧатботGPT
Прийняття рішення
База знань модуля
Модуль рекомендацій
Мережа Інтернет
Рисунок 3.2 – Структура модулю рекомендацій
Користувач взаємодіє з системою через користувацький інтерфейс,
надсилаючи вхідні дані. Ці дані передаються до модуля обробки даних, який
аналізує їх і генерує запит до бази знань. База знань містить інформацію про
різні інструментальні засоби та їх характеристики.
Після отримання відповіді з бази знань, модуль передає цю інформацію
до чат бота GPT. Чат бот GPT аналізує запит та генерує відповідь, яка може
містити додаткові пояснення, посилання або деталізацію.
Після отримання відповіді від чат бота GPT, модуль рекомендацій
обробляє цю інформацію та генерує рекомендації щодо використання певних
інструментальних засобів. Після цього, система передає рекомендації
користувачеві через користувацький інтерфейс, завершуючи цикл
комунікації між чат ботом GPT і системою.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 39
а
Панель адміністратора в розробленій системі є інтерфейсом,
призначеним для управління та адміністрування системи. Вона надає доступ
до різноманітних функцій та інструментів, які дозволяють адміністратору
ефективно керувати системою і виконувати необхідні завдання.
Панель адміністратора забезпечує механізми аутентифікації, що
дозволяють адміністратору ввійти в систему за допомогою облікових даних.
Крім того, вона здійснює перевірку прав доступу та авторизує адміністратора
на виконання певних функцій;
Панель адміністратора надає можливість додавати, редагувати та
видаляти користувачів системи. Адміністратор може керувати їхніми
правами доступу, ролей та привілеями.
Адміністратор може управляти даними, які зберігаються в системі. Це
включає додавання, редагування та видалення даних, які використовуються в
системі, такі як інформація про інструментальні засоби, технології, проекти
тощо.
Також адміністратор може бачити інформацію про стан системи, таку
як кількість зареєстрованих користувачів, активність, використання ресурсів
тощо. Це допомагає адміністратору контролювати та відстежувати роботу
системи.
3.2 Опис функцій системи
Розроблена система надає користувачам зручні та ефективні
інструменти для вибору оптимальних програмних засобів, враховуючи їхні
потреби та вимоги проекту. Система забезпечує можливість реєстрації та
аутентифікації користувачів, формування профілю проекту, збір інформації
про вже наявні інструменти та їх опрацювання для надання зручних
рекомендацій. Крім того, вона використовує модуль обробки даних для
аналізу вхідних даних та базу знань для зберігання інформації про різні
інструментальні засоби. Наявність чатбота GPT також забезпечує додаткову
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 40
а
інтерактивність та можливість отримання додаткової допомоги для
користувачів системи. Розглянемо кожну функцію системи окремо.
Розроблена система забезпечує безпеку та захист інформації шляхом
використання авторизації. Цей механізм дозволяє користувачам отримати
доступ до системи лише після проходження процедури ідентифікації,
підтверджуючи свою облікову запис і право на вхід. Завдяки авторизації,
система гарантує, що лише вповноважені особи можуть отримати доступ до
функцій та ресурсів, зберігаючи конфіденційність та захищаючи дані
користувачів, авторизацію зображено на рисунку 3.3.
Рисунок 3.3 – Авторизація в системі
Розроблена система надає користувачам можливість створити
обліковий запис для доступу до всіх функціональних можливостей. За
допомогою процесу реєстрації, користувач може ввести необхідну
інформацію, таку як електронна пошта та пароль, для створення
персонального облікового запису. Цей механізм реєстрації дозволяє
забезпечити ідентифікацію користувача та забезпечити безпеку його
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 41
а
особистих даних. Після успішної реєстрації, користувач отримує можливість
використовувати всі функції та ресурси системи, відповідно до його ролі та
прав доступу, робота системи зображено на рисунку 3.4.
Рисунок 3.4 – Робота з системою
Розроблена система використовує опитування користувача за
допомогою форми, щоб отримати інформацію про програмну систему, яка
буде розроблюватись. Система ставить питання, які допомагають зрозуміти
потреби та вимоги користувача щодо функціональності, масштабу та
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 42
а
особливостей програмного продукту. На основі відповідей, система аналізує
та обробляє дані, використовуючи внутрішні алгоритми та базу знань. В
результаті, система надає інформацію про інструменти та технології, які
найкраще підходять для розробки програми, враховуючи відповіді
користувача та рекомендації, що базуються на попередньо зібраному досвіді
та знаннях.
У розробленій системі принцип вибору технологій та інструментів для
розробки програмних продуктів базується на використанні чатбота GPT.
Чатбот забезпечує інтерактивний діалог з користувачем, де можна задавати
питання про потреби та вимоги проекту. На основі цих відповідей, чатбот
використовує свої навички та базу знань для рекомендацій щодо
оптимальних технологій та інструментів розробки, спрощуючи процес
вибору для користувача.
База даних системи накопичує різноманітні знання про технології та
інструменти розробки програмних продуктів. Вона може містити інформацію
про різні мови програмування, фреймворки, бібліотеки, середовища
розробки, практики та методології програмування, архітектурні шаблони та
багато іншого. Також база даних може включати в себе оновлювано
колекцію рекомендацій та передовий досвід у галузі розробки програмного
забезпечення. Всі ці знання використовуються системою для забезпечення
якісних та обґрунтованих рекомендацій користувачам.
Результат роботи програми полягає в наданні користувачеві інформації
про оптимальні технології та інструменти для розробки програмного
продукту на основі введених даних. Вона генерує рекомендації, що
ґрунтуються на аналізі вхідних відповідей та знаннях, накопичених в базі
даних системи, щоб допомогти користувачу зробити обґрунтовані рішення
щодо вибору технологій та інструментів для успішної розробки програмного
продукту, приклад роботи системи зображено на рисунку 3.5.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 43
а
Рисунок 3.5 – Результат роботи програми
Панель адміністратора розробленої системи забезпечує
адміністраторам високий рівень контролю та управління. Це інтерфейс, який
надає доступ до різноманітних функцій, таких як управління користувачами,
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 44
а
налаштування системи, моніторинг та аналітика даних. Адміністратор може
здійснювати розширений набір дій, включаючи створення, редагування та
видалення записів, налаштування прав доступу та керування ресурсами
системи. Панель адміністратора дозволяє забезпечити безпеку та
ефективність системи, забезпечуючи адміністраторам необхідні інструменти
для ефективного управління системою.
3.3 Технічні вимоги для роботи з системою
Технічні вимоги – це набір об'єктивних критеріїв та вимог, які
визначають необхідні характеристики та функціональні можливості системи
чи продукту. Вони встановлюють параметри, за якими система повинна
відповідати, включаючи апаратні та програмні вимоги, стандарти, протоколи,
безпеку, продуктивність та інші технічні аспекти. Технічні вимоги служать
основою для проектування, розробки та впровадження системи, і
допомагають забезпечити відповідність результуючого продукту
специфікаціям та потребам користувачів.
Нижче наведено загальний приклад технічних вимог для даної
системи:
1. Веб-сервер та хостинг:
потрібен веб-сервер для розміщення системи;
забезпечення надійного та стабільного хостингу для системи з
достатньою пропускною здатністю та ресурсами.
2. Доменне ім'я:
реєстрація та налаштування доменного імені для системи, щоб
мати зручний доступ до неї через веб-адресу.
3. База даних:
наявність сумісної та доступної бази даних, включаючи MySQL,
PostgreSQL або MongoDB;
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 45
а
встановлення та налаштування бази даних для збереження та
керування даними системи.
4. Веб-браузер:
доступ до сучасного веб-браузера, такого як GoogleChrome,
MozillaFirefox, Safari або Microsoft Edge, для користування
системою.
5. Інтернет-з'єднання:
стабільне та надійне інтернет-з'єднання для доступу до системи та
взаємодії з нею.
Для початку роботи з системою потрібно:
1. Отримати доступ до системи, включаючи потрібні облікові дані, які
надаються адміністратором системи.
2. Запустити веб-браузер та перейти за допомогою доменного імені або
IP-адреси до системи.
3. Авторизуватися в системі за допомогою облікових даних, щоб мати
можливість використовувати всі функції та можливості системи.
3.4 Оцінка ефективності
Оцінка ефективності системи - це процес визначення та вимірювання
рівня продуктивності, надійності, доступності та інших характеристик
системи з метою оцінки її успішності та відповідності вимогам і очікуванням
користувачів.
Оцінка ефективності системи може включати такі аспекти, як:
Швидкодія (вимірювання часу, який система потребує для виконання
певних операцій або завершення роботи з великими обсягами даних.
Надійність (визначення стабільності та здатності системи працювати
без помилок або збоїв протягом тривалого періоду часу).
Масштабованість (оцінка здатності системи збільшувати свої ресурси
та обсяги обробки для впорядкування з ростом вимог та навантаження).
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 46
а
Зручність використання (оцінка зручності інтерфейсу користувача,
навігації, доступності функцій та відповідності потребам користувачів).
Споживання ресурсів (вимірювання використання пам'яті,
процесорного часу, мережевого трафіку та інших ресурсів системою).
Сумісність (перевірка сумісності системи з іншими програмними та
апаратними компонентами, а також здатність до інтеграції з іншими
системами або стандартами).
Оцінка ефективності системи може включати в себе різні методи, такі
як вимірювання продуктивності, проведення тестів навантаження, аналіз
відмов, збір відгуків користувачів та інше. Результати оцінки ефективності
допомагають вдосконалити систему, виявити проблеми та прийняти
відповідні рішення для її поліпшення.
Розроблена система проявляє високу ефективність і може бути вважана
сильним конкурентом систем, представлених на платформах G2 Crowd,
SoftwareAdvice та Capterra. Її інформаційно-аналітична система здатна
швидко та точно обробляти вхідні дані, а на основі отриманих відповідей
видає релевантні рекомендації щодо вибору оптимальних інструментів та
технологій для розробки програмного продукту.
Крім того, інтерфейс користувача системи є зручним і інтуїтивно
зрозумілим, що сприяє легкому використанню системи. Чат-бот, який
використовується для опитування користувача, забезпечує зручну
інтерактивну взаємодію, а аналітичні алгоритми системи допомагають
збирати та аналізувати значну кількість даних.
Завдяки розробленій системі, команди розробників та бізнес-аналітиків
зможуть швидше та ефективніше вибирати потрібні інструменти для
створення програмного продукту. Рекомендації, надані системою,
забезпечують оптимальний вибір технологій, що дозволяє зекономити час та
ресурси на пошук інформації та аналіз можливостей різних інструментів.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 47
а
Загалом, розроблена система ефективно допомагає приймати
інформовані рішення щодо вибору інструментів та технологій для розробки
програмних продуктів. Вона може значно спростити процес розробки,
забезпечуючи необхідну інформацію та рекомендації, що сприяють високій
продуктивності та успішному завершенню проектів.
3.5 Висновки до розділу 3
В даному розділі було розглянуто структуру системи, з яких модулей
вона буде складатися і за що вони відповідають. Детально описано
користувацький інтерфейс, яка дозволяє користувачам взаємодіяти з
комп'ютером, пристроєм або програмою. Модуль обробки який відповідає за
отримання інформації від користувача та формування пропозицій щодо
технологій, які можуть бути використані при розробці програми. Базу даних,
яка потрібна в забезпеченні ефективного та безпечного зберігання даних.
Модуль рекомендацій інструментальних засобів, який надає користувачеві
рекомендацій щодо вибору підходящих інструментів для розробки
програмного продукту.
Було описано функції системи для вибору оптимальних програмних
засобів, враховуючи їхні потреби та вимоги проекту. Наведено приклади
роботи та зовнішнього вигляду системи.
Описані технічні вимоги для кращої роботи та оцінено ефективність
такої системи.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 48
а
4 ЗАХИСТ ІНФОРМАЦІЙНО-АНАЛІТИЧНОЇ СИСТЕМИ
4.1 Огляд існуючих рішень
Захист інформаційно-аналітичної системи є критично важливим
аспектом, оскільки забезпечує конфіденційність, цілісність та доступність
даних, а також запобігає несанкціонованому доступу та зловживанню.
Для забезпечення захисту інформаційно-аналітичної системи вибору
інструментальних засобів для створення програмних продуктів необхідно
використовувати комплексний підхід, який включає в себе такі аспекти:
система повинна мати механізми перевірки ідентичності
користувачів і контролю доступу до різних рівнів функціональності.
Це може бути досягнуто за допомогою паролів, рольової базової
системи, біометричних методів тощо;
для забезпечення конфіденційності даних важливо застосовувати
шифрування, яке дозволяє перетворити дані у незрозумілу форму
для несанкціонованих користувачів. Шифрування може
застосовуватись як для зберігання, так і для передачі даних;
система повинна мати механізми для виявлення та запобігання
несанкціонованому доступу до даних. Це може включати в себе
використання брандмауерів, систем виявлення вторгнень, аудиту
доступу та інших заходів безпеки;
регулярне створення резервних копій даних і розробка планів
відновлення допоможуть уникнути втрати даних в разі аварійних
ситуацій, таких як системні збої або кібератаки;
система повинна мати механізми для постійного моніторингу
активності, виявлення аномалій та реагування на потенційні загрози
безпеки. Це може включати в себе використання систем
журналювання подій, інтра- та екстрафірмових систем моніторингу,
систем сповіщення тощо;
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 49
а
важливо забезпечити навчання персоналу щодо кращих практик
безпеки, процедур реагування на інциденти та управління ризиками.
Це допоможе знизити ризик людських помилок і збільшити
загальний рівень безпеки системи.
Загальна ефективність захисту інформаційно-аналітичної системи
вибору інструментальних засобів для створення програмних продуктів
залежить від того, наскільки добре впроваджені та забезпечені ці заходи
безпеки. Рекомендується постійно оновлювати систему з урахуванням нових
загроз та вразливостей, щоб забезпечити найвищий рівень захисту.
У мові програмування Node.js існує декілька популярних рішень для
розробки авторизації. Ось огляд деяких з них:
Passport.js – одна з найбільш популярних бібліотек для авторизації в
Node.js. Passport.js надає простий і гнучкий підхід до реалізації
різних стратегій авторизації, таких як локальна аутентифікація з
використанням імені користувача та пароля, аутентифікація через
соціальні мережі (Facebook, Google, Twitter і т.д.), а також JWT
(JSON WebToken) авторизація;
JSON WebTokens (JWT) є відкритим стандартом для безпечного
передавання токенів між двома сторонами. Використання JWT в
Node.js дозволяє зберігати інформацію про авторизованого
користувача у вигляді підписаного токена. JWT може бути
використаний для авторизації API-запитів, створення сеансів,
зберігання даних про користувача та інше.
Okta є платформою для керування ідентичністю, яка надає
інструменти для реалізації авторизації та ідентифікації в Node.js.
Okta надає SDK для Node.js, яке спрощує інтеграцію з їхньою
системою для аутентифікації і авторизації. Вони підтримують різні
методи авторизації, включаючи пароль, мультифакторну
аутентифікацію, соціальні мережі та багато іншого;
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 50
а
FirebaseAuthentication є послугою автентифікації від Google, яка
може бути використана для авторизації в Node.js додатках.
FirebaseAuthentication надає ряд методів аутентифікації, включаючи
електронну пошту та пароль, соціальні мережі, номер телефону та
інші. Вони також надають SDK [18].
Для виконання шифрування даних наявна велика кількість бібліотек та
рішень, які значно спрощують роботу:
вбудована модуль crypto в Node.js надає набір криптографічних
функцій, таких як шифрування, розшифрування, генерація хеш-сум,
підписування та перевірка підпису. Цей модуль базується на
криптографічних функціях, що надаються операційною системою, і
надає доступ до різних алгоритмів шифрування, таких як AES, RSA,
DES тощо;
bcrypt.js є простим і ефективним рішенням для хешування паролів у
Node.js. Він базується на адаптивній функції хешування bcrypt, яка
використовує сіль і важкі обчислення для запобігання атак з
використанням перебору. Використання bcrypt.js для хешування
паролів забезпечує безпеку збереження паролів у базі даних;
OpenSSL є відкритою криптографічною бібліотекою, яка підтримує
широкий спектр криптографічних алгоритмів. Ви можете
використовувати Node.js для доступу до функцій OpenSSL за
допомогою модуля crypto, який надає інтерфейс для різних
операцій, таких як шифрування, розшифрування, генерація ключів,
Node-RSA є модулем, який дозволяє створювати і використовувати
ключі RSA для шифрування та розшифрування даних в Node.js. Він
надає простий і зрозумілий інтерфейс для роботи з RSA-ключами,
включаючи генерацію ключів, шифрування та розшифрування
повідомлень, підписування та перевірку підпису [19].
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 51
а
Ці рішення надають різні можливості для шифрування даних в Node.js.
Вибір конкретного рішення залежить від ваших потреб, безпекових вимог та
вимог до продуктивності.
Брандмауери та антивіруси є також важливими компонентами захисту
системи від несанкціонованого доступу та зловмисного програмного
забезпечення. Вони виконують різні функції і доповнюють один одного для
забезпечення комплексного захисту системи.
Брандмауери є системами, які контролюють трафік мережі, що входить
і виходить з системи. Вони встановлюють правила і фільтри для перевірки
пакетів даних і рішення про те, чи дозволити їм пройти. Брандмауери можуть
блокувати небажаний трафік, такий як небезпечні IP-адреси або порти, і
встановлювати правила доступу для різних мережевих служб і протоколів.
Вони також можуть надавати функцію маскування IP-адреси (NAT) для
забезпечення анонімності системи.
Антивірусне програмне забезпечення (антивіруси) виявляє, блокує та
нейтралізує шкідливі програми, включаючи віруси, троянські програми,
черв'яки та інші види зловмисного програмного забезпечення. Вони
працюють на основі визначеного набору правил та бази даних відомих
загроз, які допомагають виявити і заблокувати шкідливий код. Деякі
антивіруси також мають додаткові функції, такі як захист від фішингу,
виявлення небажаного програмного забезпечення і моніторинг поведінки
програм [20].
З використанням брандмауерів та антивірусного програмного
забезпечення можна досягти наступних переваг:
брандмауери дозволяють контролювати вхідний і вихідний
мережевий трафік, блокуючи потенційно небезпечний трафік та
зовнішні атаки. Це допомагає уникнути несанкціонованого доступу
до системи;
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 52
а
антивірусне програмне забезпечення допомагає виявити та
заблокувати шкідливе програмне забезпечення, що може завдати
шкоди системі або викрасти конфіденційну інформацію;
деякі антивіруси надають захист від фішингу, що допомагає
виявляти та блокувати спроби використовувати соціальну інженерію
для отримання конфіденційної інформації;
багато антивірусних програм оновлюють свої бази даних регулярно,
щоб виявляти нові загрози. Це дозволяє забезпечити постійний
рівень захисту від останніх видів шкідливого програмного
забезпечення.
Важливо встановити і правильно налаштувати як брандмауер, так і
антивірусне програмне забезпечення, а також регулярно оновлювати їх для
забезпечення ефективного захисту системи від несанкціонованого доступу і
зловмисного програмного забезпечення.
Системи резервного копіювання є важливою складовою захисту
інформаційно-аналітичної системи. Вони дозволяють створювати резервні
копії даних і програмного забезпечення, щоб у випадку втрати, пошкодження
або несправності системи можна було відновити дані і продовжити роботу.
Ось деякі ключові аспекти систем резервного копіювання:
системи резервного копіювання дозволяють створювати копії
важливих даних, які зберігаються в інформаційно-аналітичній
системі. Це може включати бази даних, конфігураційні файли,
документи та інші типи інформації. Резервні копії зазвичай
створюються регулярно з певною періодичністю;
існує кілька методів резервного копіювання, таких як повне,
інкрементальне, диференційне копіювання. Кожен метод має свої
переваги і обмеження. Наприклад, повне копіювання передбачає
створення повної копії всіх даних, тоді як інкрементальне
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 53
а
копіювання зберігає лише зміни, зроблені після останньої повної або
попередньої інкрементальної копії;
резервні копії даних можуть зберігатися на різних носіях, таких як
локальні сервери, зовнішні накопичувачі, хмарні сервіси тощо.
Важливо забезпечити фізичну і кібербезпеку резервних копій,
зберігаючи їх у безпечних і доступних місцях;
системи резервного копіювання повинні періодично перевіряти копії
на цілісність та доступність. Також важливо виконувати регулярні
вправи з відновлення даних для переконанняся, що в разі потреби
резервні копії можуть бути успішно відновлені;
для забезпечення надійності і ефективності, рекомендується
автоматизувати процес резервного копіювання. Це може бути
досягнуто за допомогою планувальників завдань, сценаріїв або
спеціального програмного забезпечення для резервного копіювання;
для забезпечення конфіденційності даних в резервних копіях можна
застосовувати шифрування. Це дозволить уникнути
несанкціонованого доступу до копій навіть у випадку їх втрати або
крадіжки.
Використання систем резервного копіювання допомагає забезпечити
захист важливих даних і продовжувати роботу в разі непередбачених
ситуацій, таких як втрата даних, кібератака або технічна несправність.
Регулярне створення, перевірка та збереження резервних копій є важливою
практикою для забезпечення безпеки і надійності інформаційно-аналітичної
системи.
4.2 Реалізація захисту користувачів
В інформаційно-аналітичній системі вибору інструментальних засобів
для створення програмних продуктів була реалізована система захисту
інформації, використовуючи такі методи:
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 54
а
для забезпечення безпечної передачі даних між клієнтом і сервером
використовувався SSL (SecureSocketsLayer) протокол. Це дозволяє
шифрувати з'єднання і захищати передачу конфіденційної
інформації, запобігаючи перехопленню або зламу даних;
для аутентифікації та авторизації користувачів в системі
використовувався механізм JWT (JSON WebToken). Користувачі
після успішної аутентифікації отримували JWT, який містив певну
інформацію про їхню ідентичність та ролі. Цей токен
використовувався для авторизації доступу до захищених ресурсів
системи;
для забезпечення конфіденційності даних користувачів
використовувалася бібліотека crypto.js для шифрування та
розшифрування даних на клієнтській стороні. Це забезпечувало
захист інформації під час її зберігання або передачі між клієнтом і
сервером.
Використання цих методів дозволяло системі забезпечити захист
інформації на різних рівнях: забезпечення безпеки передачі даних за
допомогою SSL протоколу, аутентифікація та авторизація користувачів за
допомогою JWT, а також шифрування конфіденційних даних за допомогою
crypto.js.
Проте, важливо зауважити, що безпека інформаційної системи є
постійним процесом, і вона повинна регулярно оновлюватись та перевірятись
на вразливості. Крім вищезазначених методів, також було враховано інші
аспекти безпеки, такі як захист від кросс-сайтового скриптінгу (XSS), захист
від SQL-ін'єкцій та інші потенційні загрози.
В розробленій системі використовуються також певні практики та
заходи для боротьби з SQL-ін'єкціями та кросс-сайтовим скриптінгом. Ось
деякі з них:
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 55
а
використання параметризованих запитів у мовах програмування та
SQL дозволяє екранувати вхідні дані та запобігати SQL-ін'єкціям.
Замість конкатенації вхідних даних безпосередньо в запит, значення
передаються як параметри, що мінімізує можливість виконання
шкідливого SQL-коду;
перед використанням вхідних даних в SQL-запитах або виводі на
веб-сторінки, вони повинні бути правильно екрановані. Це означає,
що спеціальні символи, такі як кавички, лапки, слеші та інші
спецсимволи, повинні бути замінені або екрановані, щоб запобігти
їх неправильному інтерпретуванню як частини SQL-запиту або
HTML-коду;
використання підготовлених запитів дозволяє відокремити SQL-код
від вхідних даних. SQL-запити попередньо компілюються і
підготовляються з параметрами, а самі дані передаються окремо, що
допомагає запобігти SQL-ін'єкціям;
перед використанням вхідних даних їх потрібно валідувати та
фільтрувати. Валідація допомагає перевірити, чи відповідають дані
певним критеріям (наприклад, правильний формат електронної
пошти), тоді як фільтрація видаляє або екранує небезпечні символи
та код, які можуть викликати кросс-сайтовийскриптінг;
для мінімізації можливості використання SQL-ін'єкцій важливо
надати обмежені привілеї бази даних користувачеві, що
використовується для з'єднання з базою даних. Це означає, що
користувач має тільки необхідні права доступу та виконання запитів
до бази даних;
багато баз даних та мов програмування надають вбудовані функції
або механізми безпеки, які допомагають запобігти SQL-ін'єкціям та
кросс-сайтовомускриптінгу. Наприклад, використання ORM-
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 56
а
фреймворків, які автоматично екранують дані, або використання
вбудованих функцій для екранування вхідних даних.
Ці заходи допомагають забезпечити захист системи від SQL-ін'єкцій та
кросс-сайтовогоскриптінгу, зменшуючи ризики вразливостей та виконання
шкідливого коду. Проте, важливо пам'ятати, що безпека є постійним
процесом, і система повинна піддаватись аудиту та оновлюватись, щоб
уникнути нових загроз та вразливостей.
Щоб навчити людей безпеці та зменшити ризики, пов'язані з роботою в
системі, можна проводити наступні дії:
забезпечити навчання співробітників щодо основних принципів
безпеки і використання системи. Це може включати організацію
тренінгів, семінарів або навчальних курсів;
розробити і впровадити політики безпеки, які будуть регулювати
використання системи та встановлювати правила для забезпечення
безпеки даних і доступу;
розповісти співробітникам про потенційні безпекові загрози, такі як
фішинг, соціальний інжиніринг, шкідливі посилання тощо, і навчити
їх розпізнавати такі загрози та поводитись обережно;
проводити періодичні аудити безпеки, щоб виявити можливі слабкі
місця в системі та процесах, і вживати необхідні заходи для
усунення цих проблем;
поширювати культуру безпеки серед співробітників, щоб безпека
стала невід'ємною частиною їхньої роботи. Залучати співробітників
до процесу забезпечення безпеки та підтримувати відкритий
комунікаційний канал для повідомлення про можливі проблеми або
загрози.
Ці заходи сприятимуть зміцненню безпеки при роботі з інформаційно-
аналітичною системою та підвищенню свідомості співробітників про
безпекові практики. Забезпечення безпеки є постійним процесом, тому
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 57
а
важливо підтримувати навчання та оновлювати політики безпеки залежно від
різних загроз та технологій.
4.3 Висновки до розділу 4
В даному розділі було розглянуто існуючі рішення для створення
інформаційно-аналітичної системи, найкращий підхід який був обрано це
комплексний.
Також було детально описано реалізацію захисту користувачів. Для
забезпечення конфіденційності даних користувачів було обрано бібліотеку
crypto.js. Для забезпечення безпечної передачі даних між клієнтом і сервером
використовувався SSL протокол та для аутентифікації та авторизації
користувачів в системі використовувався механізм JWT.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 58
а
ВИСНОВКИ
У даній кваліфікаційній роботі було розроблено інформаційно-
аналітичну систему вибору інструментальних засобів для створення
програмних продуктів. Така система є необхідним компонентом, що надає
можливість збирати, обробляти та аналізувати інформацію про різні
інструментальні засоби. Вона допомагає розробникам зробити обґрунтовані
рішення щодо вибору інструментів, що найкраще відповідають потребам та
забезпечити успішний результат.
Було проведено аналіз схожих систем, таких як G2 Crowd та Software
Advice виявлено їх переваги та недоліки. Надано оцінку нової системи та
доцільність її розробки. Сформовано вимоги, а саме розробити систему, яка
допоможе розробникам ефективно вибирати необхідні інструментальні
засоби шляхом аналізу та порівняння їх характеристик на основі певних
критеріїв.
Розглянуто технології та інструментальні засоби, які можуть
використовуватися для інформаційно-аналітичних систем. Також було
обґрунтовано вибір технологій.
Детально описано структуру системи та з яких модулей вона
складається.
Описано можливі функції системи та наведені приклади роботи. Для
повноцінної роботи вказані технічні вимоги та проведено оцінку
ефективності.
Для захисту інформаційно-аналітичної системи було проведено огляд
існуючих рішень та реалізовано захист користувачів.
З отриманих вище результатів можна зробити висновок, що система
повністю задовольняє вимогам технічного завдання на роботу.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 59
а
ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ
ШІ (штучний інтелект ) – це галузь комп'ютерної науки, яка займається
розробкою систем та програм, здатних до самостійного
розуміння, вивчення, мислення, прийняття рішень та
виконання завдань, які традиційно вимагають інтелекту
людини.
GPT (Generative Pre-trained Transformer) – це система чат-бота, яка
використовує алгоритм GPT, що базується на
передбачувальних трансформаторах, для генерації текстових
відповідей на запитання користувачів.
HTML (Hyper Text Markup Language) – стандартизована мова розмітки
документів у Всесвітній павутині.
HTTP (Hyper Text Transfer Protocol) – протокол передачі даних, що
використовується в комп'ютерних мережах.
AWS (Amazon Web Services) – є дочірньою компанією Amazon.com, що
надаєплатформу хмарних обчислень в оренду приватним
особам, компаніям та урядом на основі платної підписки.
SQL (Structured Query Language) – декларативна мова програмування для
взаємодії користувача з базами даних, що застосовується для
формування запитів, оновлення і керування реляційними БД,
створення схеми бази даних та її модифікації, системи
контролю за доступом до бази даних.
Лист
ЧДТУ.231932.006 ПЗ т
Зм. Лист № докум. Підпис Дат 60
а
ДОДАТОК А
«ЗАТВЕРДЖУЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор Володимир РУДНИЦЬКИЙ
__________________
«___» ____________ 2023 року
Інформаційно-аналітична система вибору
інструментальних засобів для створення програмних продуктів
Специфікація
482.ЧДТУ.31932-01
Листів 2
Розробник _______________ Назар ТИМОШЕНКО
Керівник _______________ Світлана ГРЕСЬКО
Черкаси 2023
2
482.ЧДТУ.31932-01
Позначення Найменування Примітка
Документація
482.ЧДТУ.31932-01 12 01 Текст програми
482.ЧДТУ.31932-01 34 01 Інструкція користувача
ДОДАТОК Б
Інформаційно-аналітична система вибору
інструментальних засобів для створення програмних продуктів
Текст програми
482.ЧДТУ.31932-01 34 01
Листів 18
Розробник: Назар ТИМОШЕНКО
Черкаси 2023
2
482.ЧДТУ.31932-01 34 01
const validation = require('joi');
const JWT = require('jsonwebtoken');
const exceptions = require('../../exceptions');
const models = require('../../models');
const config = require('../../config/config.json');
const passwordHelper = require('../../lib/password');
const TOKEN_TTL = '180d';
module.exports = {
path: '/api/1.0/users/login',
method: 'POST',
config: {
description: 'Login',
validate: {
payload: {
username: validation.string()
.email()
.required(),
password: validation.string()
.required()
.min(6)
.max(80)
}
}
},
handler: async (request, reply) => {
try {
const user = await models.User.findOne({ where: { username:
request.payload.username } });
if (!user || user.username !== request.payload.username) {
return reply(exceptions.unauthorized('Invalid credentials.'));
3
482.ЧДТУ.31932-01 34 01
}
const match = await passwordHelper.compare(request.payload.password, user.password);
if (!match) {
return reply(exceptions.unauthorized('Invalid credentials.'));
}
const { id, username, re_agent_id: agent_id } = user;
const options = { expiresIn: TOKEN_TTL };
const session = { id, username, agent_id };
const token = JWT.sign(session, config.jwtToken, options);
const res = { token, username, agent_id };
return reply(res).header('Authorization', token);
} catch (error) {
return reply(exceptions.unauthorized('Invalid credentials.'));
}
}
};
export default (sequelize, DataTypes) => {
const User = sequelize.define('User', {
username: {
type: DataTypes.STRING,
allowNull: false,
validate: {
isEmail: true
},
unique: true
},
id: {
type: DataTypes.UUID,
4
482.ЧДТУ.31932-01 34 01
defaultValue: DataTypes.UUIDV4,
allowNull: false,
primaryKey: true
},
password: DataTypes.STRING,
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
phoneNumber: DataTypes.STRING,
re_agent_id: DataTypes.STRING
}, {
indexes: [
{ fields: ['re_agent_id'], method: 'BTREE' }
],
underscored: true,
freezeTableName: true,
tableName: 'user'
});
User.associate = (models) => {
// Define associations here if needed
};
return User;
};
const validation = require('joi');
const exceptions = require('../../exceptions');
const models = require('../../models');
const passwordHelper = require('../../lib/password');
module.exports = {
path: '/api/1.0/users',
method: 'POST',
5
482.ЧДТУ.31932-01 34 01
config: {
auth: false,
description: 'Register',
validate: {
payload: {
username: validation.string().email().required(),
password: validation.string().min(3).max(15).required(),
firstName: validation.string().required(),
lastName: validation.string().required(),
email: validation.string().required(),
phoneNumber: validation.string().allow(''),
agentId: validation.string()
}
}
},
handler: async (req, res) => {
const researchUser = await models.REContact.findOne({ where: { agent_id:
req.payload.agentId } });
if (researchUser || req.payload.agentId === '0') {
const password = await passwordHelper.hash(req.payload.password);
const [user, wasCreated] = await models.User.findOrCreate({
where: { username: req.payload.username },
defaults: {
username: req.payload.username,
firstName: req.payload.firstName,
lastName: req.payload.lastName,
phoneNumber: req.payload.phoneNumber,
email: req.payload.email,
re_agent_id: req.payload.agentId === '0' ? 0 : req.payload.agentId,
password
}
});
6
482.ЧДТУ.31932-01 34 01
if (!wasCreated) {
return res(exceptions.notAcceptable(`Email already taken: ${req.payload.username}`));
} else {
return res(user);
}
} else {
return res(exceptions.notFound('Agent id not found'));
}
}
};
import validation from 'joi';
import exceptions from '../../exceptions';
import models from '../../models';
module.exports = {
path: '/api/1.0/users/poll/preferences',
method: 'POST',
config: {
description: 'Create or update user poll preferences',
auth: {
strategy: 'jwt'
},
validate: {
payload: {
tagline: validation.string().max(80).allow(''),
intro: validation.string().max(300).allow(''),
summary: validation.string().max(5000).allow('')
}
}
},
handler: async (req, res) => {
7
482.ЧДТУ.31932-01 34 01
let user = null;
try {
user = await models.User.findOne({ where: { id: req.auth.credentials.id }, attributes: ['id'] });
} catch (error) {
user = null;
}
if (!user) {
return res(exceptions.notFound(`User with id ${req.auth.credentials.id} not found`));
}
const preferencesData = {
agent_tagline: req.payload.tagline,
agent_intro: req.payload.intro,
agent_summary: req.payload.summary,
user_id: user.id
};
try {
const preferences = await models.UserPollPreferences.findOne({
where: { user_id: user.id },
order: [['id', 'ASC']],
attributes: ['id']
});
if (preferences) {
await models.UserPollPreferences.update(preferencesData, { where: { id:
preferences.id } });
} else {
await models.UserPollPreferences.create(preferencesData);
}
8
482.ЧДТУ.31932-01 34 01
const { agent_tagline: tagline, agent_intro: intro, agent_summary: summary } =
preferencesData;
return res({ userPollPreferences: { tagline, intro, summary } });
} catch (error) {
return res(exceptions.internal('An unexpected error occurred during updating the poll data.'));
}
}
};
import path from 'path';
import Inert from 'inert';
import Vision from 'vision';
import Good from 'good';
import MrHorse from 'mrhorse';
import Routes from 'hapi-plus-routes';
import JWT from 'hapi-auth-jwt2';
import Swagger from 'hapi-swagger';
import SwaggerUI from 'hapi-swaggered-ui';
import gracefulPm2 from 'hapi-graceful-pm2';
import Nes from 'nes';
import validateFunc from './validateJwt.js';
import Pack from '../package.json';
import config from '../config/config.json';
const plugins = [Inert, Vision];
const logSqueezeArgs = [
{
log: '*',
response: '*',
request: '*',
9
482.ЧДТУ.31932-01 34 01
'request-internal': '*'
}
];
plugins.push({
register: Good,
options: {
reporters: {
console: [
{
module: 'good-squeeze',
name: 'Squeeze',
args: logSqueezeArgs
},
{
module: 'good-console',
args: [
{
format: 'HH:mm:ss DD.MM.YYYY'
}
]
},
'stdout'
],
file: [
{
module: 'good-squeeze',
name: 'Squeeze',
args: logSqueezeArgs
},
{
module: 'good-squeeze',
name: 'SafeJson'
10
482.ЧДТУ.31932-01 34 01
},
{
module: 'rotating-file-stream',
args: [
'log',
{
interval: '1d',
compress: 'gzip',
path: './logs'
}
]
}
]
}
}
});
plugins.push({
register: gracefulPm2,
options: {
timeout: 8000
}
});
plugins.push({
register: Nes
});
plugins.push({
register: MrHorse,
options: {
policyDirectory: path.join(__dirname, 'policies'),
defaultApplyPoint: 'onPreHandler'
11
482.ЧДТУ.31932-01 34 01
}
});
plugins.push({
register: Routes,
options: {
routes: './routes/**/*.js'
}
});
plugins.push({
register: Swagger,
options: {
documentationPage: process.env.NODE_ENV !== 'production',
info: {
title: 'API Documentation',
version: Pack.version
},
jsonEditor: true
}
});
plugins.push({
register: SwaggerUI,
swaggerOptions: { validatorUrl: false },
options: {
title: 'Example API',
path: '/docs',
swaggerEndpoint: '/documentation'
}
});
export default server =>
12
482.ЧДТУ.31932-01 34 01
new Promise((resolve, reject) => {
server.register(JWT, jwtRegErr => {
if (jwtRegErr) {
reject(jwtRegErr);
} else {
server.auth.strategy('jwt', 'jwt', true, {
key: config.jwtToken,
verifyOptions: {
algorithms: ['HS256']
},
validateFunc
});
server.register(plugins, err => {
if (err) {
reject(err);
} else {
resolve();
}
});
}
});
});
import Joi from 'joi';
import Boom from 'boom';
import { buildFullName } from '../../lib/helpers';
import models from '../../models';
import * as pollHelper from '../../lib/poll-helper';
import * as resultHelper from '../../lib/results-helper';
module.exports = {
path: '/api/1.0/polls/{id}',
13
482.ЧДТУ.31932-01 34 01
method: 'GET',
config: {
description: 'Get a poll',
cache: {
expiresIn: 5 * 1000,
privacy: 'private'
},
auth: {
strategy: 'jwt',
mode: 'optional'
},
validate: {
params: {
id: Joi.string().guid().required()
},
query: {
sort: Joi.string().valid('_score'),
order: Joi.string().valid('asc', 'desc'),
size: Joi.number().integer().min(1).max(100),
page: Joi.number().integer().min(1)
}
}
},
handler: async (req, res) => {
const portalPoll = await models.Poll.findOne({
where: { id: req.params.id },
raw: true,
include: [
{
model: models.Portal,
as: 'Portal',
attributes: ['id'],
include: [
14
482.ЧДТУ.31932-01 34 01
{
model: models.User,
as: 'User',
attributes: ['id'],
include: [
{
model: models.RERequest,
attributes: ['agent_id', 'first_name', 'last_name']
}
]
}
]
}
]
});
if (!portalPoll) {
return res(Boom.notFound());
}
const sort = req.query.sort || resultHelper.DEFAULT_ITEMS_SORT_FIELD;
const order = req.query.order || resultHelper.DEFAULT_ITEMS_SORT_ORDER;
const size = req.query.size || resultHelper.DEFAULT_ITEMS_PER_PAGE;
const page = req.query.page || resultHelper.DEFAULT_PAGE_NUMBER;
let resResults = { ...resultHelper.emptyResultsObject };
const dbResults = pollHelper.preparePollDbResults(portalPoll);
if (portalPoll.poll_type === 'List' || portalPoll.poll_type === 'ProspectList') {
const sliceStart = (page - 1) * size;
const sliceEnd = sliceStart + size;
const pageDbResults = resultHelper.filterTrashedResults(dbResults,
'likeStatus').slice(sliceStart, sliceEnd);
15
482.ЧДТУ.31932-01 34 01
const pageDbResultsIds = pageDbResults.map(item => item.id);
resResults = await resultHelper.ResultsByMlsIds(pageDbResultsIds, sort, order, size, page);
resResults.resultsTotal = dbResults.length;
resResults.results = pageDbResults.map(pageDbResult => {
const esResult = resResults.results.find(item => item.id === pageDbResult.id) || {};
return { ...resultHelper.getEmptyResult(), ...Result, ...pageDbResult };
});
} else if (portalPoll.poll_type === 'Search') {
resResults = await resultHelper.ResultsBySearch(portalPoll.search, sort, order, size, page);
resResults.results = pollHelper.mergePollResults(resResults.results, dbResults);
}
const preparedPoll = {
...pollHelper.preparePollData(portalPoll),
...resResults,
agent: {
id: portalPoll['Portal.User.RERequest.agent_id'],
name: buildFullName([
portalPoll['Portal.User.RERequest.first_name'],
portalPoll['Portal.User.RERequest.last_name']
])
}
};
return res(preparedPoll);
}
};
import Joi from 'joi';
import Boom from 'boom';
import models from '../../models';
16
482.ЧДТУ.31932-01 34 01
module.exports = {
path: '/api/1.0/results/{id}',
method: 'PUT',
config: {
description: 'Users: Update a result',
auth: {
strategy: 'jwt'
},
validate: {
params: {
id: Joi.string().guid().required()
},
payload: {
name: Joi.string().max(75).allow(''),
Item: Joi.array().items(Joi.number()),
search: Joi.string().allow('')
}
}
},
handler: async (req, res) => {
const result = await models.Result.findOne({ where: { id: req.params.id } });
let resultUpdateObject = req.payload;
if (result) {
if (result.Item.length > 0 && req.payload.Item) {
console.log("Replacing Item...");
const oldResultItems = result.Item;
let newResultItems = req.payload.Item;
console.log(oldResultItems);
console.log(newResultItems);
let rebuiltItems = [];
if (req.payload.Item.length === 0) {
17
482.ЧДТУ.31932-01 34 01
resultUpdateObject.Item = [];
console.log("Empty Item array in payload");
} else {
let matchingItems = [];
for (let i = 0; i < oldResultItems.length; i++) {
console.log(i);
console.log(oldResultItems[i].mls_no);
console.log(newResultItems.indexOf(oldResultItems[i].mls_no));
if (newResultItems.indexOf(oldResultItems[i].mls_no) !== -1) {
matchingItems.push(oldResultItems[i].mls_no);
rebuiltItems.push({
mls_no: oldResultItems[i].mls_no,
like_status: oldResultItems[i].like_status || null,
changes: oldResultItems[i].changes || [],
tracking: oldResultItems[i].tracking || [],
chat: oldResultItems[i].chat || []
});
}
resultUpdateObject = { Item: rebuiltItems };
}
console.log(matchingItems);
const ItemToAdd = req.payload.Item.filter(val => !matchingItems.includes(val));
console.log("LISTINGS TO ADD");
console.log(ItemToAdd);
for (let i = 0; i < ItemToAdd.length; i++) {
rebuiltItems.push({
mls_no: ItemToAdd[i],
like_status: null,
changes: [],
tracking: [],
chat: []
});
18
482.ЧДТУ.31932-01 34 01
}
}
console.log(resultUpdateObject);
if (req.payload.name) {
resultUpdateObject.name = req.payload.name;
}
if (result.result_type === 'List' || result.result_type === 'ProspectList') {
if (resultUpdateObject.Item) {
const ItemIds = resultUpdateObject.Item.map(item => item.mls_no).filter(item
=> !!item);
resultUpdateObject.search = ItemIds.length ? `?q=mls:(${ItemIds.join(' OR ')})` : '';
}
} else if (req.payload.search !== undefined && req.payload.search !== null) {
resultUpdateObject.search = req.payload.search || '';
}
const resultUpdate = await result.update(resultUpdateObject);
if (resultUpdate) {
res(resultUpdate);
} else {
res(Boom.badRequest());
}
} else {
res(Boom.badRequest());
}
} else {
res(Boom.notFound());
}
}
};
ДОДАТОК В
Інформаційно-аналітична система вибору інструментальних
засобів для створення програмних продуктів
Інструкція користувача
482.ЧДТУ.31932-01 34 01
Листів 2
Розробник: Назар ТИМОШЕНКО
Черкаси 2023
2
482.ЧДТУ.31932-01 34 01
Для користування системою потрібно мати доступ до сучасного веб-
браузера, такого як Google Chrome, Mozilla Firefox, Safari або Microsoft Edge.
Мати стабільне та надійне інтернет-з'єднання для доступу до системи та
взаємодії з нею.
Для роботи із самою системою потрібно:
отримати доступ до системи, включаючи потрібні облікові дані, які
надаються адміністратором системи;
запустити веб-браузер та перейти за допомогою доменного імені або
IP-адреси до системи;
авторизуватися в системі за допомогою облікових даних, щоб мати
можливість використовувати всі функції та можливості системи.
Після запуску системи, треба описати проект та його вартість. Вказати
назву проекту, використання хмарних технологій, бюджет, кількість
розробників, рівень розробників та країну розробки. Поті обрати одне на
вибір «використання бази знань програми» або «використати чат бот». Після
чого система проаналізую введені дані і вже на підставі їх згенерує результат.
Інформаційно-аналітична система вибору інструментальних засобів
надає рекомендації на основі доступної інформації, проте варто пам'ятати,
що це не є остаточним вирішенням. Перед прийняттям рішення щодо вибору
інструменту рекомендується провести власний аналіз та зважити всі фактори,
що мають значення для вашого проекту.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Martin, R. C. Clean Code: A Handbook of Agile Software Craftsmanship.
Upper Saddle River, NJ: Prentice Hall,2008– 264 p.
2. Wiegers, K., & Beatty, J. Software Requirements. Redmond, WA: Microsoft
Press,2013 - 36p.
3. Pressman, R. S. Software Engineering: A Practitioner's Approach. New York:
McGraw-Hill Education, 2015 – 87 p.
4. Brooks Jr., F. P. The Mythical Man-Month: Essays on Software Engineering.
Reading, MA: Addison-Wesley Professional, 2015 – 54 p.
5. Gamma, E., Helm, R., Johnson, R., &Vlissides, J. Design Patterns: Elements of
Reusable Object-Oriented Software. Reading, MA: Addison-Wesley
Professional.2004 – 25 p.
6. McConnell, S. Code Complete: A Practical Handbook of Software
Construction. Redmond, WA: Microsoft Press.2004–132 p.
7. Cohn, M.User Stories Applied: For Agile Software Development. Boston:
Addison-Wesley Professional.2004–79p.
8. Duckett, J. HTML and CSS: Design and Build Websites. Wiley.2011.– 51p.
9. Gauchat, G. CSS in Depth. Manning Publications.2018. – 86 p.
10.McFarland, D., &Grothaus, R. CSS: The Missing Manual. O'Reilly
Media.2015– 72p.
11.Lerdorf, R., Tatroe, K., &MacIntyre, P. Programming PHP: Creating Dynamic
Web Pages (3rd ed.). O'Reilly Media.2013 – 38 p.
12.Williams, L., & Lane, T. Learning PHP, MySQL, JavaScript, CSS & HTML5
(3rd ed.). O'Reilly Media.2014 – 83 p.
13.Nixon, R. (Learning PHP, MySQL, and JavaScript: A Step-by-Step Guide to
Creating Dynamic Websites. O'Reilly Media.2011 – 113p.
Арк.
ЧДТУ.231932.006 ПЗ 83
Змн. Арк. № докум. Підпис Дата ПЗ
14.Van Rossum, G., & Drake, F. L. Python Programming Language. Addison-
Wesley Professional.(2009). – 200 p.
15.Sweigart, A.Automate the Boring Stuff with Python: Practical Programming for
Total Beginners (2nd ed.). No Starch Press.2019 – 204 p.
16.Lutz, M. Learning Python (5th ed.). O'Reilly Media.2013 – 88 p.
17.Horstmann, C. S., & Cornell, G. Core Java Volume I - Fundamentals (9th ed.).
Prentice Hall.2013 – 90 p.
18.Sierra, K., & Bates, B. Head First Java (2nd ed.). O'Reilly Media.2018 – 112 p.
19.Eckel, B. Thinking in Java (4th ed.). Prentice Hall.2016 – 48 p.
20.Sommerville, I. Software Engineering (10th ed.). Pearson Education2016 –
56 p.
Арк.
ЧДТУ.231932.006 ПЗ 84
Змн. Арк. № докум. Підпис Дата ПЗ