== Иницијална архитектура == // === 1. Архитектура === Мрежната инфраструктура функционира базирано на моделот клиент-сервер. Клиент-сервер архитектурата е компјутерски модел во кој серверот е домаќин (host). Тој испорачува и управува со повеќето ресурси и услуги што треба да ги потроши клиентот. Овој тип архитектура има еден или повеќе клиентски компјутери поврзани со централен сервер преку мрежа или интернет конекција. Системот прави поделба на компјутерски ресурси. Архитектурата клиент/сервер е исто така позната како компјутерски модел за вмрежување или мрежа на клиент/сервер бидејќи сите барања и услуги се испорачуваат преку мрежа. Централниот сервер е поврзан со базата на податоци, додека серверскиот оперативен систем е Linux. Клиентот треба да поседува стабилна интернет врска за да може да оствари комуникација со серверот [5]. Неколку главни карактеристики на клиент-сервер моделот се: - На клиентите и серверите им треба различна количина хардверски и софтверски ресурси. - Клиентска или серверска апликација комуницира директно со протоколот за транспортниот слој за да воспостави комуникација и да испраќа или прима информации. - Еден компјутер од класа на сервер може да понуди повеќе услуги во исто време; потребна е посебна серверска програма за секоја услуга. Предности на клиент-сервер моделот во споредба со peer-to-peer се: + Подобрено споделување податоци - податоците се чуваат со вообичаени деловни процеси и се манипулираат со сервер и се достапни за назначени корисници (клиенти) преку овластен пристап. + Интеграција на услуги - на секој клиент му е дадена можност да пристапи до корпоративни информации преку работниот интерфејс, елиминирајќи ја потребата да се логира во терминален режим или друг процесор. Алатките за работна површина како табеларни пресметки, презентации на power point итн. може да се користат за справување со корпоративни податоци со помош на бази на податоци и сервери за апликации кои се наоѓаат на мрежата за да произведат значајни информации. * Заеднички ресурси меѓу различни платформи - апликациите што се користат за моделот клиент/сервер се изградени без оглед на хардверската платформа или техничката позадина на оперативниот софтвер, обезбедувајќи отворена компјутерска околина, со што се овозможува корисниците да ги добијат услугите на клиентите и серверите (база на податоци, апликација, сервери за комуникација). * Можност за обработка на податоци и покрај локацијата - Преку клиент-сервер, корисниците можат директно да се најават во системот и покрај локацијата или технологијата на процесорите на различните машини што се користат во денешно време. * Лесно за одржување - Архитектурата клиент-сервер е дистрибуиран модел што претставува дисперзирани одговорности меѓу независни компјутери интегрирани низ мрежа, затоа и претставува предност во однос на одржувањето. * Безбедност - серверите овозможуваат квалитетна контрола врз пристапот и ресурсите со што се гарантира дека само овластените клиенти можат да пристапат или манипулираат со податоците, и ажурирањата на серверот се администрираат ефикасно. // // [[Image(architecture.svg)]] [[Image(architecture_saveSpace.png)]] === 2. Класен дијаграм === UML Class дијаграмот е графичка нотација што се користи за конструирање и визуелизација на објективно-ориентирани системи. Класен дијаграм во Унифицираниот јазик за моделирање (UML) е тип на дијаграм за статичка структура што ја опишува структурата на системот со прикажување на системот и неговите атрибути,операции (или методи) како и односите меѓу нив. [6][[br]] На сликата подолу е прикажан класен дијаграм на базата на податоци која се користи за системот за архивско рабптење. Може да се забележи дека клучна класа е класата Document со кпја се поврзани поголем дел од останатите класи. Од оваа класа се креираат повеќе видови на објекти, односно сите видови на архивски датотеки кои ќе бидат додадени на сервер. Може да се забележи дека се чуваат ппдатпци за корисникот, оддели (физичка локација), архивски број и слично што во нашиот случај се вадат како регистри и подоцна се користат за формирањее на гплемата слика т.е. архивските документи. [[br]] Во архивското работење многу битен податок е да има увид кој корисник (референт) ги има внесено датотеките (документите) и дали се внесени во правилен формат. На слиакта подолу може да се види дека во класата Document се чуваат податоци за корисникот кој ја додал и времето кога биле додадени датотеките. Преку класата Document се внесуваат датотеките кои подоцна ќе бидат зачувани во базата на податоци. Една датотека од класата Document може да има неколку прилози. [[Image(uml_class_diagram.png)]] === 3. Секвенцијален дијаграм === [[br]] На сликата подолу е прикажан секвенцијален дијаграм за начинот како корисникот внесува и се запишува датотеката во базата на податоци на сервер. Во овој дел клуч е архивскиот број кој се доделува на одредена датотека во формат "ID на оддел" + "вредност внесена од корисникот". ID на оддел се одредува според одделот кој е избран од корисникот која означува и физичка локација на самата датотека. [[Image(sequence_user_uploads.png)]] === 4. Користени технологии === **Spring Boot** [[br]] Spring Boot ја разгледува апликацијата, прави проверки, претпоставки и обезбедува стандардни конфигурации за да може апликацијата да работи. Spring Boot неодамна се појави како најдостапна и најефикасна рамка за апликации за интерфејсот базиран на Java. Spring Framework е иновативна технологија, многу прилагодлива и без проблеми, рамка која се користи од системи базирани на JVM за изградба на апликации и системи што се брзи, флексибилни и подвижни. Нејзината активна заедница нуди добро поддржан back-end за различни видови потреби на една апликација. Рамката одлично се вклопува во секоја Java апликација, и широк спектар на екстензии за дизајнирање на крајните веб -апликации се достапни на врвот на Java EE платформата. Покрај тоа, досега не постои пропишан модел за програмирање. Spring Framework е едноставна платформа со отворен код [7]. [[br]] [[br]] **Vue.js** [[br]] Vue.js е една од наједноставните рамки бидејќи оваа рамка користи JavaScript. Алатката Vue CLI во комбинација со други front-end развојни алатки го прави поставувањето на Vue.js многу лесно и едноставно. Стандардно е поставена со некоја функционалност, но исто така можно е да се изгради код со логика и структура DRY (Don't Repeat Yourself). Реактивноста е вградена и во Vue.js. Тоа значи дека функционалноста во реално време, која беше популарна во Angular, е премногу едноставна со Vue.js [8]. [[br]] [[br]] **MySQL - База на податоци** [[br]] MySQL е RDBMS со отворен код, што значи систем за управување со релациони бази на податоци (Relational Database Management System). Поконкретно, RDBMS е корисна програма за ажурирање, управување и формулирање релациони бази на податоци. Релациона база на податоци е тип на база на податоци (обично распоредена во табели) што овозможува препознавање податоци во однос на друг дел од податоците во истата база на податоци. MySQL, PostgreSQL и SQL се RDBMS кои користат сопствена варијација на SQL (Структурен јазик за пребарување). [[br]] MySQL користи структуриран јазик за пребарување (SQL) кога бара информации од табела со бази на податоци или комбинација од табели. SQL е најпопуларниот користен јазик за побарување кој бара само јазик за дефинирање податоци (DDL) и јазик за манипулација со податоци (DML) за комуникација со базата на податоци. [[br]] MySQL користи безбедносен модел базиран на привилегии, кој бара автентикација на корисникот и исто така може да обезбеди или одбие кориснички привилегии на одредена база на податоци. Дополнително, за пренос на податоци од базата на податоци на серверот, MySQL користи шифрирани врски помеѓу клиентите и серверот, користејќи Secure Sockets Layer (SSL) - безбедносен протокол [9].