Professional Documents
Culture Documents
ВасюкБакалавр Вип
ВасюкБакалавр Вип
АНОТАЦІЯ
ABSTRACT
In the bachelor's work, a simulation model for selecting elemental base for synthesis of
real-time neural network data protection tools, written using the object-oriented
programming language C #, was developed.
This simulation model gives the user the opportunity to select the optimal
elements from a set of all possible elements and form an element base. The user has the
ability to enter the minimum values of the attributes of the elements and enter the
required number of expert estimates of the weight of the attributes. The functionality of
the system is to calculate the integrated assessment for each element and the selection
of elements of different types with the largest value.
The following technologies were used in the development of the simulation
model:
• development environment - Visual Studio 2019;
• programming language - C #;
• interface development framework - Windows Forms;
• tools for installing additional libraries - NuGet.
The explanatory note to the bachelor's thesis consists of 98 pages, 35 figures, 11
tables and formulas. The list of analyzed sources consists of 20 names.
3
ЗМІСТ
ВСТУП...............................................................................................................................................................5
РОЗДІЛ 1. ХАРКТЕРИСТИКА ІМІТАЦІЙНОЇ МОДЕЛІ ВИБОРУ ЕЛЕМЕНТНОЇ БАЗИ ДЛЯ
СИНТЕЗУ ЗАСОБІВ НЕЙРОМЕРЕЖЕВОГО ЗАХИСТУ ДАНИХ В РЕАЛЬНОМУ ЧАСІ І
ПОСТАНОВКА ЗАДАЧІ................................................................................................................................7
РОЗДІЛ 2. ОГЛЯД ЛІТРАТУРИ...................................................................................................................9
2.1 Огляд структури елементної бази.................................................................................................9
2.2 Огляд баз даних......................................................................................................................................16
2.3 Огляд засобів розробки..........................................................................................................................20
2.4 Огляд засобів візуалізації......................................................................................................................21
РОЗДІЛ 3. СИСТЕМНИЙ АНАЛІЗ............................................................................................................24
3.1 Побудова дерева проблем......................................................................................................................24
3.2 Побудова дерева цілей...........................................................................................................................25
3.3 Вибір мови програмування....................................................................................................................27
3.4 Вибір середовища розробки..................................................................................................................30
РОЗДІЛ 4. РОЗРОБКА СТРУКТУРИ ТА АЛГОРИТМІВ РОБОТИ СИСТЕМИ...............................31
4.1. Побудова Use-case діаграми.................................................................................................................31
4.2 Побудова діаграми діяльності.........................................................................................................32
4.3 Побудова моделей бізнес-процесів за допомогою діаграм IDEF0.....................................................34
4.4. Проектування бази даних.....................................................................................................................39
4.4. Блок-схеми алгоритмів.........................................................................................................................41
РОЗДІЛ 5. РОЗРОБКА ПРОГРАМНОГО РІШЕННЯ.............................................................................46
5.1. Структура програмного продукту (діаграма компонентів)................................................................46
5.2. Опис використаних сторонніх бібліотек і модулів.............................................................................47
5.2. Опис використаних сторонніх бібліотек і модулів.............................................................................48
5.4. Розробка та опис інтерфейсу користувача..........................................................................................50
5.5. Опис альтернативних підходів, які розглядались під час розробки..................................................54
5.6. Опис проблем і нестандартних ситуацій, які виникали під час розробки........................................54
РОЗДІЛ 6. ЕКПЕРИМЕНТАЛЬНА ЧАСТИНА.......................................................................................55
6.1. Інструкції з використання для Адміністратора...................................................................................55
6.2. Інструкції з використання для Користувача........................................................................................56
6.3. Інструкції з використання для Програміста........................................................................................59
6.4. Вимоги до апаратного забезпечення....................................................................................................59
6.5. Тестування.............................................................................................................................................60
4
ВСТУП
Актуальність. Імітаційна модель вибору елементної бази для синтезу
засобів нейромережевого захисту та передачі даних в реальному часі має значну
актуальність в рамках досліджень у галузі криптографії. Дослідження та розробка
нових методів захисту інформації та забезпечення інформаційної безпеки систем,
мереж і пристроїв є важливою галуззю досліджень в системах, мережах і
пристроях ІТ. Захист інформації значною мірою базується на використанні
криптографічних методів, пов'язаних з шифруванням даних. Одним із провідних
сучасних напрямків розробки ефективних і стійких методів криптографічного
захисту стали технології штучних нейронних мереж, які вирізняються
різноманітністю архітектур та алгоритмів навчання, а також можливостями
гнучкого налаштування, зокрема і для задач симетричного шифрування даних.
Розроблення систем захисту та передачі даних у реальному часі з високими
техніко-економічними показниками вимагає використання інтегрального
критерію ефективності для вибору елементної бази для їх синтезу. Створення
систем захисту систем захисту даних даних у реальному часі з високими техніко-
економічними показниками найдоцільніше здійснювати при інтегрованому
підході, який охоплює сучасну елементну базу, нейроподібні методи та
алгоритми, архітектури засобів шифрування-дешифрування та кодування-
декодування даних і враховує вимоги конкретних застосувань.
Зменшення часу і вартості розробки систем захисту та передачі даних у
реальному часі з високими техніко-економічними показниками вимагає
автоматизації процесу вибору елементної бази, який повинен враховувати вимоги
технічного завдання та існуючу сучасну елементну базу.
Таким чином, актуальною проблемою є розроблення імітаційної моделі
вибору елементної бази для синтезу засобів нейромережевого захисту та передачі
даних в реальному часі з високими техніко-економічними показниками.
6
Дана імітаційна модель необхідна для вибору елементної бази для синтезу
засобів нейромережевого захисту даних в реальному часі.
Вимоги до БД:
1. Зручність у користуванні
2. Простота
3. Можливість введення даних з клавіатури
4. Повідомлення користувача про можливі помилки під час виконання
програми
Вимоги до платформи та мови розробки:
опрацювання різного роду цифрових даних і сигналів. Для різного роду більш
спеціалізованого функціоналу, СнК містить різноманітні елементи, які можуть
бути, як цифровими так і аналоговими та орієнтовані відповідно до
функціональної галузі систем на кристалі. В залежності від цілей систем на
кристалі, такими вузлами можуть бути різного роду логічні елементи, лічильники
та таймери. До складу систем на кристалі входять або під’єднуються до них в
виді різноманітних зовнішніх блоків різні види модулів пам’яті (SRAM, DRAM,
Flash, ROM, EEPROM). Взаємодія із зовнішнім середовищем відбувається з
використанням паралельних або послідових портів, та комунікаційних
інтерфейсів. Конфігурація вузлів СнК визначається їх функціональним
призначенням. Типів організації зв’язків між вузлами системи безліч в вони
можуть бути різними, включаючи використання стандартизованих шин (типу
АМВА) чи спеціалізованих локальних інтерфейсів. Сьогодні системи на кристалі
займають найбільшу частину ринку мікроелектроніки. Це зумовлено великим
попитом як інженерів-розробників апаратури з використанням СнК, так і
виробників елементної бази для СнК, зокрема Texas Instruments, Analog Devices,
Altera, Atmel, Xilinx, Cirrus Logic, Cypress, NXP, RDC, Sharp, Marvell, NetSilicon
та інших.
Переваги СнП:
ієрархічні,
мережеві,
реляційні,
об'єктні,
об'єктно-орієнтовані,
об'єктно-реляційні.
географічні.
історичні.
наукові.
18
мультимедійні.
централізовані (зосереджені);
розподілені.
Рис. 3.1 Структура дерева проблем для розробки імітаційної моделі вбору
елементної бази
25
Рис. 3.2 Структура дерева цілей для розробки імітаційної моделі вбору
елементної бази
Можливі конфлікти між різними версіями усуваються через те, що усі бібліотеки
у фреймворку вміщають свідчення про версію збірки.
29
SQL Server, при цьому, підтримує, як кластеризацію баз даних так і їхню
дзеркаляцію. Кластером у сервері SQL—є множина серверів із аналогічною
40
В схемі бази даних елементів, яка зоображена на рис 4.5 можна виділити дві
головні сутності, які є повністю логічно незалежними одна від одної: «SOCs»
(системи на кристалі), «Microcontrs» (мікроконтроллери).
n
maxEІЕБj = λi ЕнЕлi
i 1 На рис 4.6 зоображений алготрим вводу даних та створення
масиву елементів, які відповідають мінімальним критеріям.
При запуску створюється об’єкт класу ElemBase, який включає в себе масиви класів
елементів, після чого користувач вносить обмеження ElemCheck, а застосунок
підключається до бази даних. Дані про елементи з БД порівнюються із ElemCheck, і
у випадку, якщо елемент із БД більший – він заноситься у ElemBase.
Основою для того, щоб розпочати розробку системи є чітке розуміння усіх
компонентів, з яких ця система мала б складатись, та проведення чіткої
демаркації між ними. Користуючись моїм застосунком, користувач системи буде
з програмою за допомогою внесення достатніх критеріїв для пошуку елементної
бази та отримуватиме на виході інформацію про оптимальну базу. Застосунок
буде робити запит в базу даних для отримання даних про можливі елементи та
запит до експертів, та отримувати від них множину експертних оцінок, яку сам
застосунок перетворить на агрегатну оцінку вагових коефіцієнтів, після чого,
застосунок вирахує інтегровану оцінку елементів та знайде оптимальні елементи.
Множину оптимальних елементів, застосунок виведе на дисплей, таким чином
надаючи інформацію користувачу. Для опису всіх цих процесів ми будуємо
діаграму компонентів, яка зображена на рис. 5.1.
Сутності:
Єдиним стороннім модулем, який було використано при розробці застосунку був
Entity Framework 6.
зберігання даних, кожна з яких має власні протоколи; навіть додатки, які
працюють із єдиною системою зберігання, повинні співвідносити вимоги
системи зберігання даних з вимогами написання ефективного та бездоганного
коду програми.
Form1
48
Form2
Expert
End
ElemBase
SOC
ProjectDbContext
Microcontr
ElemCheck
Button. Три кнопки: «new expert», яка викликає форму Expert і закриває
дану форму, «exit», яка закриває застосунок. та «Next», яка викликає форму
End та надсилає туди усі необхідні дані.
Label. Три надписи, які є інструкціями.
Button. Одна кнопка: «Done», яка викликає Form2.та надсилає туди дані про
експертну оцінку.
Textbox. Вісім полів, в які необхідно занести інформацію про вагу
критеріїв(Від 1 до 4 в порядку зростання ваги)
Label. Декілька надписів, які є або інструкціями, або вказівниками на те, що
потрібно вписати в Textbox.
В End можна перейти за допомогою кнопки «Next» із Form2. Для створення цієї
форми було використано наступні елементи:
5.6. Опис проблем і нестандартних ситуацій, які виникали під час розробки
6.5. Тестування
Тестування ПЗ охоплює:
То, наскілки кінцевий продукт відповідає вимогам, які були поставлені при
проектуванні.
Наскільки вихідні дані відповідають тим, які мали би бути при коректній
роботі програми.
Оптимальність застосунку в плані швидкодії
Практичність в застосуванні, зручність інтерфейсу.
Якість синхронізації програми з допоміжним ПЗ, операційною системою,
тощо
Відповідність продукту запитам покупця
Через те, що множина усіх можливих тестів дуже велика, навіть для, здавалось
би, простих застосунків, існує стратегія таргетування тестів, яка полягає в
проведенні усіх можливих тестів з оптимізацією відносно часу та ресурсів, щоб
провести всі можливі тести з урахуванням наявного часу та ресурсів. В
результаті, тестування виглядає, як звичайне використання програми з ціллю
знайти помилки та баги.
Тестування, в свою чергу, надає інформацію про стан застосунку, його якість,
практичність та відповідність вимогам.
60
були продумані міри для протидії цій проблемі. Програма видала вікно з
поясненням щодо проблеми, як ми можемо побачити на рис 6.11.
Рис. 6.12. Ввід букв в поля для чисел при експертній оцінці
Таблиця 7.1
Технологія 5 0,2 1
Працівники 2 0,21 0,42
Ресурси 2 0,25 0,50
Загальна сума — 1 2,51
7.5. Бюджетування
Таблиця 7.2
- Тестер (Т);
Таблиця 7.3
Таблиця 7.6
Бюджет адміністративних витрат та витрат на збут
Статті витрат Одиниці Фактична Ціна Разом, грн.
виміру кількість, шт. одиниці, грн
Матеріали та грн 9 - 460
комплектуючі
вироби
Додаткові витрати - 0 - 0
Електроенергія на кВт*год 200 0.42 84
технологічні
цілі(від 100
кВт*год до 600
кВт*год)
Основна заробітня грн/міс 1 - 11800
плата
Додаткова грн/міс 0 0,00 0,00
заробітна плата
Витрати на грн. 2 25 50
утримання й
експлуатацію
устаткувння
Загальновиробничі
витрати, у т.ч.
-змінні грн. 1 3856
-постійні грн. 1 1520
Разом виробничих грн. 1 17770
витрат(Собівартіст
ь продукту)
Адміністративні грн. 1 180
витрати
Витрати на збут грн. 1 100
Інші операційні - - - -
витрати
78
Ц=Сб∗(1+Р) (1)
де Ц – ціна продукту, грн.
Р – рентабельність виробництва, %
Сб – собівартість продукту, грн.
При рентабельності 40%, вартість проведеного дослідження обраховується за
формулою (3):
ДОДАТОК А
Файл Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Bak
{
public partial class Form1 : Form
{
public const int V = 8;
public SOC f;
public Microcontr fb;
public Form1()
{
InitializeComponent();
}
}
85
}
for (int i = 0; i != textBox5.Text.Length; i++)
{
char c = textBox5.Text[i];
if (c != '0' && c != '1' && c != '2' && c != '3' && c != '4' && c != '5' && c != '6' && c != '7' && c != '8' &&
c != '9')
{
text5 = false;
break;
}
}
86
SOC_amout = k;
break;
}
}
int Mcro_amout = 0;
j = 0;
for (int k = 0; k != 100; k++)
{
j = 0;
ElemBase based = new ElemBase();
based.elements1 = new SOC[SOC_amout];
based.elements2 = new Microcontr[Mcro_amout];
for (int i = 0; i != SOC_amout; i++)
{
SOC kek = context.elem1.SingleOrDefault(x => x.id == i + 1);
if (kek.Frequency > test.minelements1.Frequency && kek.RAM > test.minelements1.RAM && kek.Flash
> test.minelements1.Flash && kek.Price < test.minelements1.Price)
{
based.elements1[j] = kek;
j++;
}
}
j = 0;
for (int i = 0; i != Mcro_amout; i++)
{
kek1 = context.elem2.SingleOrDefault(x => x.id == i + 1);
if (kek1.Frequency > test.minelements2.Frequency && kek1.Voltage < test.minelements2.Voltage &&
kek1.Flash > test.minelements2.Flash && kek1.Price < test.minelements2.Price)
{
based.elements2[j] = kek1;
j++;
}
}
r1 = SOC_amout;
r2 = Mcro_amout;
base1 = based;
}
Form2 fm2 = new Form2();
fm2.b = base1;
fm2.soc1 = base1.elements1;
fm2.mic1 = base1.elements2;
fm2.x = r1;
fm2.y = r2;
fm2.next1[0] = test.minelements1.Frequency;
fm2.next1[1] = test.minelements1.RAM;
fm2.next1[2] = test.minelements1.Flash;
fm2.next1[3] = test.minelements1.Price;
fm2.next1[4] = test.minelements2.Frequency;
fm2.next1[5] = test.minelements2.Voltage;
fm2.next1[6] = test.minelements2.Flash;
fm2.next1[7] = test.minelements2.Price;
fm2.Show();
}
88
else
MessageBox.Show("Invalid numbers");
}
private void textBox8_TextChanged(object sender, EventArgs e)
{
}
}
}
Файл Form2.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Bak
{
public partial class Form2 : Form
{
public int i = -1;
public ElemBase b = new ElemBase();
public SOC[] soc1;
public Microcontr[] mic1;
public int[,] rankbase = new int[100, 8];
public double[] next = new double[8];
public int[] next1 = new int[8];
public int x;
public int y;
public double[] final1 = new double[100];
public double[] final2 = new double[100];
public Form2()
{
InitializeComponent();
}
}
next[0] = up/down;
down = 0;
up = 0;
for (int k = 0; k != i; k++)
{
up = up + rankbase[k, 1];
down = down + rankbase[k, 0] + rankbase[k, 2] + rankbase[k, 3];
}
next[1] = up / down;
down = 0;
up = 0;
for (int k = 0; k != i; k++)
{
up = up + rankbase[k, 2];
down = down + rankbase[k, 1] + rankbase[k, 0] + rankbase[k, 3];
}
next[2] = up / down;
down = 0;
up = 0;
for (int k = 0; k != i; k++)
{
up = up + rankbase[k, 3];
down = down + rankbase[k, 1] + rankbase[k, 2] + rankbase[k, 0];
}
next[3] = up / down;
90
down = 0;
up = 0;
for (int k = 0; k != i; k++)
{
up = up + rankbase[k, 4];
down = down + rankbase[k, 5] + rankbase[k, 6] + rankbase[k, 7];
}
next[4] = up / down;
down = 0;
up = 0;
for (int k = 0; k != i; k++)
{
up = up + rankbase[k, 5];
down = down + rankbase[k, 4] + rankbase[k, 6] + rankbase[k, 7];
}
next[5] = up / down;
down = 0;
up = 0;
for (int k = 0; k != i; k++)
{
up = up + rankbase[k, 6];
down = down + rankbase[k, 4] + rankbase[k, 5] + rankbase[k, 7];
}
next[6] = up / down;
down = 0;
up = 0;
for (int k = 0; k != i; k++)
{
up = up + rankbase[k, 7];
down = down + rankbase[k, 4] + rankbase[k, 5] + rankbase[k, 6];
}
next[7] = up / down;
int p = 0;
for (int k = 0; k != x; k++)
{
if (b.elements1[k] == null)
break;
final1[p] = b.elements1[k].Frequency / next1[0] * next[0] + b.elements1[k].RAM
/ next1[1] * next[1] + b.elements1[k].Flash / next1[2] * next[2] + next1[3] /
b.elements1[k].Price * next[3];
p++;
}
p = 0;
for (int k = 0; k != y; k++)
{
if (b.elements2[k] == null)
break;
final2[p] = b.elements2[k].Frequency / next1[4] * next[4] + next1[5] /
b.elements2[k].Voltage * next[5] + b.elements2[k].Flash / next1[6] * next[6] + next1[7] /
b.elements2[k].Price * next[7];
p++;
}
int chosen_one = 0;
for(int k = x; k != 0; k--)
{
if (final1[k - 1] != null)
{
if (final1[k] > final1[k - 1])
chosen_one = k;
}
91
else
break;
}
int chosen_two = 0;
for (int k = y; k != 0; k--)
{
if (final2[k - 1] != null)
{
if (final2[k] > final2[k - 1])
chosen_two = k;
}
else
break;
}
End fm13 = new End();
fm13.a = b.elements1[chosen_one];
fm13.b = b.elements2[chosen_two];
fm13.Show();
}
}
}
Файл Expert.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Bak
{
public partial class Expert : Form
{
public SOC[] soc1;
public Microcontr[] mic1;
public int i;
public ElemBase based = new ElemBase();
public int[,] rankbase = new int [100,8];
public int[] next1 = new int[8];
public int x;
public int y;
public Expert()
{
InitializeComponent();
}
if (Convert.ToInt32(textBox5.Text) + Convert.ToInt32(textBox6.Text) +
Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text) == 10)
text9 = false;
if (Convert.ToInt32(textBox1.Text) + Convert.ToInt32(textBox2.Text) +
Convert.ToInt32(textBox3.Text) + Convert.ToInt32(textBox4.Text) == 10)
text10 = false;
if(text9 == false && text10 == false)
{
rankbase[i, 0] = Convert.ToInt32(textBox5.Text);
rankbase[i, 1] = Convert.ToInt32(textBox6.Text);
rankbase[i, 2] = Convert.ToInt32(textBox7.Text);
rankbase[i, 3] = Convert.ToInt32(textBox8.Text);
rankbase[i, 4] = Convert.ToInt32(textBox1.Text);
rankbase[i, 5] = Convert.ToInt32(textBox2.Text);
rankbase[i, 6] = Convert.ToInt32(textBox3.Text);
rankbase[i, 7] = Convert.ToInt32(textBox4.Text);
soc1 = new SOC[x];
mic1 = new Microcontr[y];
Form2 fm4 = new Form2();
fm4.i = i;
fm4.rankbase = rankbase;
fm4.next1 = next1;
93
fm4.b = based;
fm4.soc1 = based.elements1;
fm4.mic1 = based.elements2;
fm4.x = x;
fm4.y = y;
fm4.Show();
Close();
}
MessageBox.Show("Invalid numbers");
}
else
MessageBox.Show("Invalid signs");
}
else
MessageBox.Show("You cant left any empty boxes");
}
}
}
}
Файл End.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Bak
{
public partial class End : Form
{
public SOC a = new SOC();
public Microcontr b = new Microcontr();
public End()
{
InitializeComponent();
}
}
94
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
}
}
Файл SOC.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Bak
{
public class SOC
{
public int id { get; set; }
public int RAM { get; set; }
public int Frequency { get; set; }
public int Flash { get; set; }
public int Price { get; set; }
95
public SOC()
{
RAM = 0;
Frequency = 0;
Flash = 0;
Price = 0;
Name = "a";
}
}
}
Файл Microcontr.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Bak
{
public class Microcontr
{
public int id { get; set; }
public int Frequency { get; set; }
public int Voltage { get; set; }
public int Flash { get; set; }
public int Price { get; set; }
public string Name { get; set; }
public Microcontr()
{
Voltage = 0;
Frequency = 0;
Flash = 0;
Price = 0;
Name = "a";
}
}
}
Файл ElemBase.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Bak
{
public class ElemBase
{
96
Файл ElemCheck.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Bak
{
public class ElemCheck
{
public SOC minelements1;
}
}
Файл ProjectDbContext.cs
using System;
using System.Data.Entity;
namespace Bak
{
public class ProjectDbContext : DbContext
{
public ProjectDbContext() : base("DBConnectionString")
{
}
}
Файл Program.cs
97
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Bak
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}