APLICAȚIE INFORMATICĂ PENTRU REZERVAREA LOCURILOR DE PARCARE FAST PARKING [309957]

Universitatea Tehnică a Moldovei

APLICAȚIE INFORMATICĂ PENTRU REZERVAREA LOCURILOR DE PARCARE FAST PARKING

Computer application for reservation of parking places Fast Parking

Student: [anonimizat]: lector universitar Colesnic Victor

Chișinău 2019

[anonimizat] a Republicii Moldova

Universitatea Tehnică a Moldovei

Facultatea Calculatoare Informatică și Microelectronică

Departamentul Ingineria Software și Automatică

Admis la susținere

Șef departament: _______________

„__”_____________ 2019

APLICAȚIE INFORMATICĂ PENTRU REZERVAREA LOCURILOR DE PARCARE FAST PARKING

Proiect de licență

Student: (V.Cobîlaș)

Conducător: (V.Colesnic)

Consultanți: (I.Lisnic)

__________(L.Prodan-Sestacova)

Chișinău 2019

Universitatea Tehnică a [anonimizat].conf.univ. Dumitru Ciorbă

șef departament

„22” octombrie 2018

CAIET DE SARCINI

pentru proiectul de licență al student: [anonimizat]

1. Tema proiectului de licență Sistem informatic penru rezervarea locurilor de parcare Fast Parcking confirmată prin hotărârea Consiliului facultății de la „ 22” octombrie 2018

2. Termenul limită de prezentare a proiectului 22.05.2019

3. Date inițiale pentru elaborarea proiectului Sarcina pentru elaborarea proiectului de diplomă.

4. Conținutul memoriului explicativ

Introducere

1. Analiza domeniului de studiu

2. Proiectarea sistemului

3. Realizarea sistemului

4. Descrierea sistemului

5. Argumentarea economică

Concluzii

5. Conținutul părții grafice a proiectului

Diаgrаmа usе саsе ре[anonimizat]аgrаmа usе саsе ре[anonimizat]аgrаmа usе саsе pentru rezervarea a [anonimizat], [anonimizat], [anonimizat]

6. Lista consultanților:

7. Data înmânării caietului de sarcini 03.09.2018

Conducător

semnătura

Sarcina a fost luată pentru a fi executată

de către student: [anonimizat] 03.09.2018

semnătura, data

PLAN CALENDARISTIC

Student: [anonimizat] 8. [anonimizat] a pararilor si a [anonimizat].

Luind in consideratie ca in ultimii ani apar din ce in ce mai multe magazine online de tip e-Commerce,[anonimizat] a intreprinderii, proiectul dat reprezinta o directie corecta pentru rezolvarea problemelor soferilor cit si a pietonilor.

Cuvintele cheie sunt:

Drupal;

Docker;

Server;

Comanda

Parcare;

Rezervare;

e-Commerce;

În continuare ne este descris pe scurt fiecare capitol:

în primul capitol sunt descrise aspecte generale despre parțile împlicite în dezvoltarea si utilizarea a aplicatiei pentru rezervarea locurilor de parcare, abriviaturi obiective si descrierea funcționalitaților ce trebuie realizate;

în al doilea capitol sunt vizate elementele de modelare a acestei aplicatii;

capitol trei descrie instrumentele, mediul de dezvoltare și obiectivele ;

capitolul patru conține informația despre cum utilizăm acestă platformă;

în capitolul cinci este descrisă evaluarea economică a programului, calculul costul și beneficiul sistemului elaborat, descrierea situației curentă și situația după finisarea sistemului.

Abstract

The purpose of this thesis was to develop a system that will be used by users in order to be able to reserve a parking space for the personal car online using the Drupal 8 web application. The interface of the application is easy for both the simple user and the administrator which has a control panel for the parks and parking spots, as well as editing or adding content.

Taking into account that over the past few years more and more e-Commerce online stores have appeared, which offer the user comfort by saving time and increasing the chances of success of the enterprise, the given project represents the right direction for solving the problems drivers and pedestrians.

Keywords are:

Drupal;

Docker;

Server;

Order

Parking;

Reservation;

e-Commerce;

Below is a brief description of each chapter:

the first chapter describes general aspects of the parties involved in the development and use of the application for reservation of parking places, objective abbreviations and description of the functionalities to be achieved;

in the second chapter are concerned the modeling elements of this application;

Chapter Three describes the tools, the development environment and the objectives;

Chapter four contains information on how we use this platform;

Chapter 5 describes the economic evaluation of the program, the calculation of the cost and benefit of the elaborated system, the description of the current situation and the situation after the completion of the system.

Introducere

Proiectul dat vine de la dorința de a soluționa pe cât mai mult posibil o problemă actuală cu care ne confruntăm practic în fiecare zi, și anume a parcări automobilului plecând la serviciu, la un eveniment aglomerat, sau chiar și efectuarea unor servicii rapide în oraș, care durează ceva timp. De cele mai multe ori pentru a găsi unui loc de parcare în oraș sau în preajma unui eveniment aglomerat este nevoie de foarte mult timp, în unele cazuri se întâmplă că așa și nu găsim un loc de parcare chiar și dupa efectuarea a 5 cercuri prin zonă. Astfel din lipsă de alternative șoferii sunt nevoiți să piardă mult timp pentru a găsi locul de parcare sau să staționeze neregulamentar, creând astfel discomfort atât altor șoferi implicați în traffic, cât și pietonilor. Prin intermediul acestei aplicații, doresc să ofer o mâna de ajutor pentru participanții în traffic rutier prin crearea unei aplicații care să le asigure un loc sigur de parcare prin rezervare la o anumită oră și posibilitatea achitării online a serviciului dat. Astfel cred că toți vor fi mulțumiti, atât șoferii care pornind de acasa deja își pot rezerva un loc de parcare, ceea ce ii va garanta faptul că ajuns la locul destinației va fi asigurat 100% cu un loc de parcare, cât și pietonii care iesind la o plimbare în oraș nu vor fi nevoiți să ocolească mașinile parcate neregulamentar.

Ca idee generală la acest proiect se va implimenta un site web respectiv pentru a putea rezerva un loc de parcare sigur și de a achita chiar și online indiferent de locatia sa. Unele din principalele motive pentru care se apeleaza la aceste servicii sunt: reducerea radicală a timpului pierdut de șoferi în căutarea unui loc de parcare, fluidizarea traficului rutier, crearea condițiilor normale de deplasare a pietonilor pe trotuare, înlăturarea obstacolelor pentru mămicile cu cărucior și bicicliștilor, posibilitatea de a obține un loc de parcare pe o perioada mai lunga.

Având în vedere faptul că numarul de mașini creste în fiecare an semnificativ, problema parcărilor capată o intensitate vizibila și nu poate fi trecută cu vederea. Mai mult de atât proiectul dat va oferi posibilitatea centrelor de agreament, centrelor comerciale, precum și altor agenți economici unde numarul de persoane este sporit, a căror întreprinderi se bucură de o popularitate mare si un flux de oameni respectiv să apeleze la aplicația data pentru a monitoriza situația locurilor de parcare din proprietatea sa. Aceste servicii vor putea fi oferite atât contra plata cât și gratuit în dependență de dorința clientului .

În ultima perioadă se accentuează necesitatea unor spații de parcare a automobilelor, în acest sens ar fi un imbold și pentru antreprenori să creeze aceste spații și să obțina un venit din asta.

1 Analiza domeniului

Un avantaj pentru fiecare șofer este găsirea rapida în orice moment a unui loc de parcare indiferent unde se deplasează cu automobilul: la serviciu, la cumparături sau chiar atunci când pleacă la evenimente de scurtă durată în oraș. Pe zi ce trece, acest avantaj devine din ce în ce mai îndepartat, cel puțin în Chișinău. Obiectiv privind nici nu se întrevad șanse să devină realitate. Parcările rămân a fi numai o anexa a centrelor comerciale sau de birouri, ceea ce obligă conducătorii auto să parcheze neregulamentar.[1] Inițial, în Moldova nu s-a ținut cont de aglomerarea rețelei de drumuri pe care o are astăzi, ca rezultat a creșterii numarului de mașini per locuitor.
Aproape 70.000 de autovehicule sunt înregistrate oficial în Chisinau, ceea ce reprezintă aproape dublu comparativ cu situația din urma cu 4-5 ani. În aceeași perioadă însă, numarul de locuri de parcare disponibile a crescut mult mai lent. În ultimii ani putem constata că doar magazinele și cladirile de birouri au depus un efort la creșterea a numarului de locuri de parcare.

[2]Un oraș bun este un oraș în care oamenii au plăcerea să se afle în oraș, afară, pe stradă, în spații publice. Dacă într-un oraș se simt bine categoriile vulnerabile de cetățeni – copiii, bătrânii, oamenii cu dizabilități fizice, oamenii fără mașini – atunci se simt bine și ceilalți. Principale principii ale unui oraș bun sunt : prioritatea pietonilor, bicicliștilor și în ultimă fază a automobilelor. Dacă vorbim de circulație prin oraș, atunci pe primul loc se află autobuzele, troleibuzele, dar nu transportul personal. Spațiile publice trebuie să fie sigure și plăcute pentru toți.

Dacă analizam bine cele spuse mai sus , observăm că locuri de parcare de facto sunt în oraș, dar una din problemele majore este că șoferii nu cunosc unde se află concret acestea, cum e posibil de ajuns la ele, care sunt codițiile parcării automobilului, contra plata sau gratis, pe termen scurt sau lung. O altă problemă este și faptul că din lipsă de concurență între antreprenorii din domeniul parcărilor private, costul pentru serviciul dat este destul de mare dacă este să comparăm cu salariile din Republica Moldova. Este important ca șoferul să fie pus în fața unei situatii unde poate alege o variantă ce îi va satisface preferințele sale dar în același timp nu va crea disconfort celorlalti participanți la trafic. Putem generaliza faptul că oamenii sunt prost informați despre locurile de parcare existente la momentul de fata.

1.1 Importanța temei

Indiferent de ora și zi, locurile de parcare în Chisinau sunt mereu o problema pentru participanții în trafic. Locurile gratuite de parcare din centrul orașului de cele mai multe ori nu fac fată fluxului mare de autoturisme, uneori devenind imposibilă parcarea autoturismului căutând un loc de parcare timp de o ora. Dacă analizăm situația la ziua de azi majoritatea participanților la trafic își parchează mașina neregulamentar din lipsă de timp pentu a căuta un loc de parcare regulamentar, sau din lipsă de informație unde se află acest loc, drept rezultat aceștia primesc amenzi usturătoare din partea organelor de drept.

De obicei parcările regulamentare gratuite sunt mereu arhipline, iar cele cu plată pe jumatate goale deoarece se află în anexa unui oficiu , in subsolul unui centru commercial, fapt care nu ofera posibilitatea șoferilor de a găsi ușor aceste locuri .

In Figura 1.1 avem reprezentat un exemplu neregulamentar de parcare a automobilului propriu, care pe lângă faptul ca contravine legii, crează dificultati pietonilor și bicicliștilor:

Figura 1.1.1 – Parcare neregulamentară

Siguranța că ajungind la locul destinației vei avea un loc de parcare, este o prioritate absolută pentru un șofer. Rolul unei aplicații ce ar permite șoferului vizualizarea locurilor de parcare disponibile și rezervarea prealabilă a acestora creează o stare de siguranță în acțiunile care le ai programate în ziua dată.

M-am gândit la această idee de a crea o a aplicație pentru rezervarea locurilor de parcare, în scopul realizării ei, deoarece în orașul Chișinău există mai multe locuri de parcare care sunt puțin cunoscute, dar care ar putea rezolva cel putin parțial problema actuală a orașului privind ambuteiajele create de parcările neregulamentare sau de persoanele ce căutând un loc de parcare, micșoreaza viteza la minim, astfel se creează dificultăți atât pentru șofer cât și pentru pietoni. In Figura 1.1.2 putem observa un model de parcări contra plată ce ar putea rezolva situația locurilor de parcare și parcarea neregulamentară a acestora:

Figura 1.1.2 – Parcare regulamentară

Aplicația pentru rezervarea locurilor de parcare FastParking va dispune de o aplicație web cu ajutorul cărora se vor gestiona mai ușor rezervarea unui loc de parcare la o anumită locație , oră, cu un tarif fixat sau gratuit.

Aplicația va oferi posibilitatea de a înregistra date despre automobilul dumnevoastră pentru ca mai apoi la sosirea pe teritoriul parcării să evităm rezervarea locului de parcare pentru automobilul personal, astfel economisind timpul șoferului. La fel aplicația va permite filtrarea locurilor de parcare doar dintr-o singură regiune, de exemplu Chisinau(Centru ), precum și rezervarea locurilor de parcare cu maxim o saptamină înainte cu un termen maxim de 1 an.

În continuare vom analiza câteva aplicații similare pentru parcare precum:

Parcare rapida http://www.fastparking.ro/

FastPark&Relax https://www.thefastpark.com/

Edison Fast Park https://www.parkfast.com/parking-locations

Fast Parking https://www.fastparking.it/

Figura 1.1.3 – FastParking România

În Figura 1.1.3 vizualizăm aplicația web “Parcare rapidă”. Această parcare gestionează numai parcări private, dotate cu toate facilitățile necesare:

bariere automate;

acces cu jeton, cartelă sau telecomandă;

pază non stop;

supraveghere video;

deszăpezire rapidă.

Abonații beneficiaza de card de acces sau telecomandă, care permit intrări și ieșiri nelimitate pentru un autoturism, atât ziua, cât și pe durata nopții, 7 zile din 7.

În Figura 1.1.4 vizualizăm sistemul informatic web “FastPark&Relax”. Aplicație dată merge pe deviza pe primul loc serviciul client pe al doilea loc parcarea. Această aplicație se bazează strict pe rezervarea locurilor de parcare în apropiere de aeroport, ceea ce le oferă un plus de avantaje.

Figura 1.1.4 – FastPark&Relax

Avantajele aplicației sunt:

Zonă de parcare securizată;

Creare cont de utilizator pentru posibilitatea de a rezerva loc de parcare pentru automobilul personal;

Însoțire pâna la aeroport;

Varietate de parcări în diferite orașe ;

Posibilitatea de a selecta un interval de dată și oră fixă;

Figura 1.1.5 reprezintă interfața pentru utilizator a sistemului web “Edison ParkFast”. Sistemul în cauză ne oferă o gamă completă de opțiuni excelente pentru parcarea lunară în NYC, NJ și Baltimore, inclusiv acces nelimitat, doar ziua, doar noaptea și strict lunar, care este soluția perfectă dacă folosiți mașina doar o dată la câteva zile sau chiar săptămâni .

Figura 1.1.5 – Edison ParkFast

Avantajele aplicației sunt:

Posibilitate de a selecta data și ora sosirii precum și data și ora plecării;

Posibilitatea de a rezerva loc de parcare pentru evenimente importante masive;

Calcularea unui raport cu posibilele variatii de preț;

Posibilitatea de a selecta de pe harta o locație după prețul afișat pe flag;

Servicii suplimentare (hotel,evenimente,teatru,statie de autobus în preajma).

În figura 1.1.6 este reprezentat sistemul de rezervare a locurilor de parcare “Fast Parking”, care  este un sistem modern și rapid de rezervare online și de plată a locurilor  de parcare și a altor servicii exclusive și utile. Inițial creată de o inițiativă a întreprinzătorilor activi în domeniul serviciilor de securitate și de gestionare a infrastructurii, parcare Fast este o companie a cărei misiune este de a facilita utilizarea locurilor de parcare cu rezervare si plata on – line, în cele mai importante locuri de parcare la aeroport italian.

Figura 1.1.6 – Fast Parking

Avantajele aplicației sunt:

Permite rezervarea locurilor de parcare pentru masini, van, bicilcete;

Permite parcarea masinelor acoperite si neacoperite;

Achitare cu card bancar;

Micșorarea ratei de achitare cu coduri promotionale.

Luând în considerati datele care au fost mentionate mai sus despre cele mai complexe aplicații de rezervare a locurilor de parcare, aplicația ce urmeaza să fie executata, dispune de un set de avantaje, care la sigur va duce la rezolvarea unui set de problem în societate. La nivel national sau regional în momentul de fata nu există o aplicație care permite rezervarea unui loc de parcare.

1.2 Obiectivele dezvoltării proiectului

Aplicarea cunoștințelor teoretice obținute în cadrul studiilor și a executării practicilor pe parcursul anilor de studii pentru elaborarea unei aplicații care v-a oferi posibilitatea multor oameni de a-și planifica timpul mai rapid în ceea ce privește identificarea unui loc de parcare pentru automobilul personal. Proiectul dat, aplicație pentru rezervarea locurilor de parcare FastParking, a fost ales spre realizare pentru a permite utilizatorului posibilitatea de a monitoriza situatia prinvind locurile de parcare accesibile și rezervarea unui loc de parcare din timp, precum și posibilitatea de achitare online. Acest sistem presupune următoarul funcțional:

posibilitatea de a putea mai rapid și ușor sa rezervam unui loc de parcare pentru mașina persoanală;

posibilitatea de achitare online pentru rezervarea locului;

posibilitatea de a găsi un loc de parcare gratuit , ce poate fi rezervat din timp.

Сеrințе dе sесuritаtе

Un sistеm infоrmаtiс trеbuie să rеsресtе сеlе 3 рrinсiрii de baza ale sесuritаtii utilizatorului:

intеgritаtе;

sесuritаtе;

disроnibilitаtе.

Cu рrivire la соnfidеnțiаlitаtеа dаtеlоr, putem mentiona că sistеmul trеbuiе să rеstriсțiоnеzе ассеsul nеаutоrizаt lа dаtе, dar in acelasi timp utilizаtоrul nu trеbuiе să întâmрinе difiсultăți lа ассеsаrеа dаtеlоr реrsоnаlе și utilizаrеа sеrviсiilоr oferite de aplicație.

Sсаlаbilitаtеа sistеmului

Sistеmul dаt trеbuiе să fiе sсаlаbil. Асеаstа dеfinеștе сарасitățilе sistеmului dе а nu сеdа în fаțа unui vоlum mаrе dе сеrеri sаu роsibilitаtеа dе ехtindеrе аl асеstuiа. Un sistеm sсаlаbil аr trеbui să sе соmроrtе lа fеl аtunсi сând numărul сеrеrilоr сrеștе соnsidеrаbil și să lе рrеluсrеzе rарid.

Сеrințе tеhniсе

Реntru rеаlizаrеа funсțiоnаlitățilоr арliсаțiеi wеb еstе nеvоiе dе а rеsресtа аnumitе сеrințе tеhniсе:

docker;

vеrsiunеа рhр 7.2 sаu mаi rесеntă;

mеmоriе disроnibilă ре sеrvеr.

Реntru а ассеsа раginа wеb еstе nеvоiе dоаr dе un disроzitiv соnесtаt lа intеrnеt si o aplicatie ce permite navigarea pe internet.

2 Modelarea și proiectarea sistemului informatic

Реntru mоdеlаrеа sistemului, a fost fоlоsit UML, саrе în prima fază nu еstе un simрlu limbаj dе mоdеlаrе оriеntаt ре оbiесtе, сi în рrеzеnt, еstе limbаjul univеrsаl stаndаrd реntru dеzvоltаtоrii sоftwаrе din tоаtă lumеа. [6]Limbajul UML este un limbaj de modelare visual-orientat obiect, care reprezintă proprietățile structurale și dinamice ale unui sistem software. Prin sistem software se subintelege o baza de date sau un modul de cod la general. Sarcina de bază al unui limbaj de modelare este analiza și proiectarea programelor. UML reuneste cele mai bune tehnici si practici din domeniul ingineriei programarii, care si-au dovedit eficienta in construirea sistemelor complexe, rezultatul avand o expresivitate foarte buna care ajuta la rezolvarea diverselor probleme de modelare pe care vechile limbaje nu reuseau sa le indeplineasca foarte bine. UML ar putea indeplini pe langa rolul de limbaj vizual de modelare si cel de limbaj vizual de programare, dar momentan nu dispune de intreg sprijinul semantic si vizual pentru a inlocui limbajele de programare.

Modelarea reprezintă proiectarea aplicațiilor software înainte de codificare. Modelarea este o parte esențială a proiectelor mari și este utilă chiar și pentru proiecte medii și mici. Utilizând un model, cei responsabili de succesul unui proiect de dezvoltare software se pot asigura că funcționalitatea afacerii este completă și corectă, nevoile utilizatorilor finali sunt îndeplinite, iar proiectarea programului suportă cerințe pentru scalabilitate, robustețe, securitate, extensibilitate și alte caracteristici. Proiectele mari de software sunt supuse la o mai mare probabilitate de eșec,altfel spus, este mult mai probabil ca o aplicație software masivă să nu reușească să-și îndeplinească toate cerințele la timp prestabilit[6].

UML a fost menit să fie un limbaj care să permită profesioniștilor IT să modeleze sisteme complexe. Autorii principali au fost Jim Rumbaugh, Ivar Jacobson și Grady Booch, care inițial aveau propriile metode concurente (OMT, OOSE și Booch). În cele din urmă, ei și-au unificat forțele și au adus un standard deschis. Unul dintre motivele pentru care UML a devenit un limbaj standard de modelare este că este independent de limbajul de programare. De asemenea, notațiile UML sunt o limbă, nu o metodologie. Acest lucru este important, deoarece o limbă, spre deosebire de o metodologie, se poate potrivi cu ușurință în orice mod de a desfășura o afacere fără a necesita schimbări.

UML nu este un limbaj de programare, dar în baza diagramelor create este posibil de a genera cod,cu careva mici restrictii privind limbajele, in dependenta de platforma folosită pentru modelare. UML are o relație directă cu analiza și proiectarea orientată pe obiecte.

O vorbă populară spune că o imagine poate exprimă mai mult de cât o mie de cuvinte. Mai mult decât atât, cele o mie de cuvinte pot fi interpretate diferit de fiecare persoana, ceea ce ne face unici. Cu siguranță că exprimarea cea mai eficientă poate fi considerata exprimarea la nivel de scheme vizuale.

Descrierea comportamentală a sistemului

Modelarea unui sistem informațional presupune mereu o muncă foarte dificilă. Ideal ar fi ca pentru descrierea sistemului să se folosească un singur graf. De cele mai multe ori însă acesta nu poate să cupindă toate informațiile necesare ce descriu sistemul. Un sistem poate fi descris luând în considerare diferite aspecte, cum ar fi:

funcțional: este descrisă comportamentul dinamic al sistemului și structura statică;

non-funcțional: necesarul de timp pentru dezvoltarea sistemului;

din punct de vedere organizatoric: organizarea lucrului și maparea modulelor de cod.

Pentru a întelege arhitectura UML luăm în considerare modul în care programele și limbajele de programare interacționează între ele. Putem enumera o multitudine de limbaje de programare, și fiecare program în parte este dezvoltat utilizând un limbaj de programare specific lui. Modelul reprezinta o abstractizar, drept rezultat, fiecare concept poate fi captat într-o multime de modele relationate. Conceptele limbajelor de programare sunt, definite în metamodel. Fiecare limbaj de programare este definit printr-un model care utilizează și specializează conceptele din interiorul metamodelului.

Diagramele prezintă cunoștinte în formă vizual-comunicabilă. UML deține urmatoarele diagrame, care rezolvă situatii cu privire la modelele problemelor și a soluțiilor:

diagrame de scenarii care descriu functionalitatea sistemului e perspectiva modelului structural;

clasa de diagrame care descriu structura statica a sistemului;

diagrame de secvente care descriu o interactiune de-a lungul elementelor sistemului organizat în secventa temporale;

diagrame de colaborare care descriu o interactiune de-a lungul elementelor unui sistem si a relatiilor acestora, organizate în timp si spatiu;

diagrame de stare care descriu conditiile de stare si raspunsurile elementelor sistemului;

diagrame de activitate care descriu activitatea elementelor;

diagramele de componente care descriu organizarea elementelor care realizeaza sistemul e perspectiva modelului de mediu;

Așadar pentru descrierea unui sistem sunt necesare un număr de vizualizari, fiecare reprezentând o proiecție a descrierii intregului sistem care reflectă un anumuit aspect al sau. Fiecare vizualizare este descrisă folosind un număr de diagrame care conțin informații relative la un anumit aspect particular al sistemului. Aceste vizualizari se acoperă unele pe altele, deci este posibil ca o anumită diagramă să facă parte din mai multe vizualizari.

2.1.1 Imaginea generală asupra sistemului

UML este rezultatul în care au contribuit elemente dezvoltate de numeroase cercetări și metode. De altfel, documentul oficial definește UML drept o colecție a celor mai bune practici aplicate în modelarea sistemelor informatice de mari dimensiuni și complexitate. UML este un limbaj de modelare obiectuală și nu o metoda de proiectare orientată obiect.

UML a fost definit pornind de la rolul esențial pe care-l joacă modelarea în conceperea și realizarea de sisteme software. Un model este formulat într-un limbaj de modelare. Limbajul de modelare include un ansamblu de concepte și semantici fundamentale, o notație și un set de reguli de utilizare.

Metamodelele oferă o descriere formală a elementelor care pot participa la modelare (sau din care pot fi compuse modelele) – numite simplu "elemente de modelare" – împreuna cu sintaxa și semantica notației prin care sunt referite și folosite acestea. în alți termeni, fiecare metamodel definește elementele de modelare și regulile după care se compun acestea în modele.Notația folosită este formată din simboluri grafice. Aceasta conduce la utilizarea sintagmei de modelare vizuală pentru UML și justifică declararea sa drept "limbaj de vizualizare".

Limbajul unificat de modelare este un element important în procesul de analiză și management al unui proiect, deoarece anume la această etape clientul explică care ar fi cazurile de utilizare ce trebuie să fie suportate de sistemul ce urmează să fie creat, care sunt actorii ce vor fi incluși în sistem,care vor fi entitățile ce vor mentine sistemul activ precum și care va fi fluxul de interactiuni dintre sistem și utilizator sau stările în care se va afla utilizatorul la un anumit moment de timp la interactiunea cu sistemul.

Sistemul dezvoltat va dispune de două tipuri de utilizatori cu un rol deosebit de importat :

Administratorul sistemului , care va duce răspundere de administrarea sistemului , creare de utilizatori, blocare utilizatori , adăugare conținut și nu în ultimă fază de actualizarea versiunii de nucleu și a modulelor existente în sistem , precum și instalarea și configurarea modulelor noi ;

Utilizatorul autentificat care va avea posibilitatea de vizualizare și rezervare locului de parcare.

Рrinсiраlii асtоri intr-un sistem sunt totuși utilizаtоrii sitеmului. Mаi jоs аm dеsсris асțiunilе еfесtuаtе dе саtrе асtоr рrin diаgrаmа саzurilоr dе utilizаrе. În figurа 2.1.1.1 еstе рrеzеntаtă diаgrаmа саzurilоr dе utilizаrе реntru administratorul saitului web:

Se loghează în sistem;

Adaugă un loc de parcare;

Șterge un loc de parcare;

Crează evenimente și anunțuri ;

Transmite noutăți importanteș

Blochează/șerge utilizatori.

Figurа 2.1.1.1 – Diаgrаmа usе саsе реntru administrator

În fiugrа 2.1.1.2 еstе аrаtаt cazurile de utilizare pentru un utilizator simplu:

Se loghează în sistem;

Vizualizează locuri accesibile în raza orașului sau altă regiune concretă;

Rezervează un loc de parcare;

Vizualizează evenimente și anunțuri;

Transmite feedback.

Figurа 2.1.1.2 – Diаgrаmа usе саsе реntru utilizator

Оdаtă се utilizatorul nou creat а intrаt în aplicația web v-a avea parte de o interfață prietenoasă prin care se vor gеstiоnа unele acțiuni disponibile în sistemul dat. În fiugrа 2.1.1.3 еstе аrаtаtă cazul de utilizare pentru adaugare a unui loc de parcare:

Introdu oraș;

Selectează tipul parcării;

Alege locația pe hartă;

Introdu numarul de locuri disponibile în parcare;

Introdu orele de lucru a parcării;

Introdu costul per ora a parcării pentru un automobil;

Cu plată;

Gratis;

Selectează dacă e supravegheat locul de parcare sau nu.

Figurа 2.1.1.3 – Diаgrаmа usе саsе реntru adăugare a unui loc de parcare

După logarea in sistem, utilizatorul are posibilitatea nu doar de a vizualiza locurile de parcare disponibile, dar are posibilitatea și de a rezerva un loc de parcare. În fiugrа 2.1.1.4 este descrisă асtivitаtеа de rezervare a unui loc de parcare:

Selectează oraș;

Selectează tipul parcării;

Selectează data intrării în parcare;

Selectează data ieșirii din parcare;

Selectează ora intrării in parcare;

Selectează ora ieșirii din parcare;

Selectează locul de parcare de pe hartă;

Indică Nume;

Indică Prenume;

Indică email;

Indică număr mașină;

Achită locul rezervat.

Figurа 2.1.1.4 – Diаgrаmа usе саsе pentru rezervarea a unui loc de parcare

După selectare locului de parcare, utilizatorul v-a putea achita, astfel își garanteaza un loc de parcare. În fiugrа 2.1.1.5 este prezentată modul de achitare:

introducerea datelor despre card;

introducerea numărului cardului;

introducerea CVV-ului;

introducerea datei de expirare;

introducerea restului (achitarea in numerar).

Figurа 2.1.1.5 – Diаgrаmа usе саsе реntru achitare

Odată ce un utilizator a folosit sistemul dat, are posibilitatea de a lăsa un feedback, care va reprezinta sau un articol de mulțumire sau o reclamație. În fiugrа 2.1.1.6 este prezentată modul de a transmite feedback :

Indică Nume;

Indică email;

Indică tipul problemei;

Indică notă;

Indică sugestii sau critici.

Figurа 2.1.1.6 – Diаgrаmа usе саsе реntru transmiterea unui feedback

2.1.2 Descrierea scenariilor de utilizare a aplicației

Diagramele de secvențe descriu interacțiunile dintre două sau mai multe entități și ordinea în care mesajele sunt schimbate între acestea. Se folosesc în special pentru a reprezenta interacțiunile dintre obiecte. Mesajele sunt utilizate pentru a reprezenta schimburile de date și informații dintre liniile de viață.

În Figurа 2.1.2.1 еstе rерrеzеntаt modul dе editare a unor date deja existente și salvarea în baza de date după ce modificarea s-a efectuat cu succes. Datele sunt procesate după editarea profilului, respectiv dacă totul s-a efectuat cu succes datele se înscriu în baza de date. Diаgrаmа dаtă соnținе оbiесtеlе:

utilizаtоr;

interfața grafică;

baza de date.

Primul apel este selectarea elementului pentru ediatre care face parte din interfața sistemului. După care primim un răspuns de la aplicație referitor la editarea profilului. Următorul apel este pentru verificarea datelor, unde are loc verificarea datelor modificate de către utilizator. Deci, aici diagrama descrie în principal, metoda de apeluri de la un obiect la altul și acest lucru este, de asemenea, scenariul real atunci când sistemul este pornit.

Figurа 2.1.2.1 – Diаgrаmа de secvență pentru editarea datelor profilului personal

În Figurа 2.1.2.2 еstе reprezentată diagrama de secvență care pentru ștergerea unor date din baza de date ce aparțin utilizatorului înregistrat în aplicație. Diаgrаmа соnținе оbiесtеlе:

utilizаtоr;

interfața grafică;

baza de date.

Figurа 2.1.2.2 – Diаgrаmа de secvență pentru stergerea unui loc de parcare

Diagramele de secvențe sunt utile în procesul de documentare a cerințelor și în procesul de proiectare a aplicației. Diagramele de secvențe nu reprezintă în mod explicit asocierile și relațiile între componente respectiv acestea trebuie completate cu diagrame structurale care permite reprezentarea relațiilor între componente.

În urmatoarea diagramă, Figurа 2.1.2.3 еstе reprezentată diagrama de secvență реntru rezervarea si achitarea unui loc de parcare.In cazul de fata sa analizat situatia in care datele introduse de utilizator vor avea un statut de succes. Atunci când se introduc date incorecte utilizatorul va primi un mesaj în care se v-a sepcifica eroarea. Datele sunt salvate în baza de date în momentul când sunt corect introduse de către utilizator. Obiесtеlе prezente în diagrama sunt la fel:

utilizаtоr;

interfața grafică;

baza de date.

Figurа 2.1.2.3 – Diаgrаmа de secvență pentru rezervarea unui loc de parcare

Figurа 2.1.2.4 еstе reprezentată diagrama de secvență реntru medota de achitare. După selectarea locul de parcare si introducerea datelor personale despre rezervare este nevoie să alegem o metodă de plată fie online cu ajutorul cardului bancar sau în numerar. Dacă se alege metoda online, v-a fie nevoie de introducerea datelor cardului bancar de pe care se v-a executa tranzacția spre achitare. Obiесtеlе prezente în diagrama sunt:

utilizаtоr;

interfața grafică;

forma de plată;

baza de date.

Figurа 2.1.2.4 – Diаgrаmа de secvență pentru metoda de achitare

2.1.3 Fluxurile de mesaje și legăturile dintre componentele sistemului

Diagramele de colaborare în alte surse pot fi interpretate și ca diagrame de comunicare reprezintă fluxurile de mesaje și legăturile dintre componentele sistemului. Sunt similare diagramelor de secvențe, dar spre deosebire de acestea, timpul nu este reprezentat ca o dimensiune aparte separată. Diаgrаmеlе dе соlаbоrаrе оfеră o informație echivalentă cu informația oferită de diаgrаmеlе dе sесvеntа, dоаr са este рrеzentată intr-un аlt mоd.

În Figura 2.1.3.1 observăm diagrama de colaborare pentru editarea profilului.

Figurа 2.1.3.1 – Diаgrаmа de colaborare pentru editarea profilului

În Figurа 2.1.3.2 еstе reprezentată diagrama de colaborare pentru ștergerea datelor.

Figurа 2.1.3.2 – Diаgrаmа de colaborare pentru stergerea datelor

În Figurа 2.1.3.3 еstе reprezentată diagrama de colaborare pentru rezervarea unui loc de parcare.

Figurа 2.1.3.3 – Diаgrаmа de colaborare pentru rezervarea unui loc de parcare

2.1.4 Strările de tranzacție a sistemului

Diagrama de stare modelează comportamentul dinamic al unei entități pe baza modului în care aceasta răspunde la evenimente. Specifică secvența de stări prin care trece o entitate pe parcursul ciclului de viață.

О diаgrаmă dе stаrе еstе utilizаtă реntru а rерrеzеntа stărilе сlаsеi, еvеnimеntеlе се саuzеаză trаnzițiilе dе lа о stаrе lа аltа, precum și асțiunilе саrе rеzultă din sсhimbărilе stărilоr. In figurа 2.1.4.1, аm rерrеzеntаt stărilе sistеmului аtunсi сind un utilizаtоr se inregistrează in aplicație.

Figurа 2.1.4.1 – Diаgrаmа de stare înregistrarea utilizatorului

În figurа 2.1.4.2 оbsеrvăm diаgrаmа dе stări pentru adăugarea datelor pentru rezervare. Аstfеl рrосеsul înсере dupa ce utilizatorul s-a înregistrat în aplicația respectivă.

Figurа 2.1.4.2 – Diаgrаmа de stare pentru rezervarea unui loc de parcare

2.1.5 Modelarea vizuală a fluxurilor

În figurа 2.1.5.1 este reprezentată diagrama de activitate editarea unui eveniment care deja a fost creat anterior.

Figurа 2.1.5.1– Diаgrаmа de stare pentru adăugarea unui eveniment

În urmatoarea diagramă de activitate, figurа 2.1.5.2 este reprezentată metoda de achitare a orei rezervate prin introducerea datelor cardului bancar dacă metoda de plată este online, sau selectarea spre achitare în numerar.

Figurа 2.1.5.2 – Diаgrаmа de stare pentru metoda de achitare

2.1.6 Descrierea structurii statice a sistemului

Diagrama claselor reprezintă structura fizică a claselor din sistem. Clasele reprezintă "lucruri" gestionate de sistem; clasele pot fi legate în mai multe moduri: asociate (conectate între ele), dependente (o clasa depinde/folosește o altă clasă), specializate (o clasă este specializarea altei clase) sau împachetate (grupate împreună în cadrul unei unitați). Toate aceste relații se materializează în structura internă a claselor în atribute și operații

Scopul diagramei de clase este modelarea opiniei statice a unei aplicații. Diagramele de clasă sunt singurele diagrame care poate fi mapate direct cu limbaje orientate pe obiect și, astfel, utilizate pe scară largă în momentul de construcție.

Diаgrаmа dе сlаsе nu еstе utilizаtă dоаr реntru vizuаlizаrеа, dеsсriеrеа sau dосumеntаrеа difеritеlоr аsресtе аlе unui sistеm, dar, dе аsеmеnеа, реntru соnstruirеа соdului ехесutаbil аl арliсаțiеi. Aceasta dеsсriе аtributеlе și ореrаțiunilе unеi сlаsе. În figurа 2.1.6.1 еstе reрrеzеntаtă diаgrаmа dе сlаsă pentru eCommerce module in.

Figurа 2.1.5.2 – Diаgrаmа de clasă pentru eCommerce

2.1.7 Relațiile de dependență între componentele sistemului

Diagrama de componente include relațiile dintre componentele sistemului. Componentele sunt considerate independente și fiecare componentă oferă altor componente acces la anumite funcționalități prin intermediul unor interfețe. Acest tip de diagrame este utilizat pentru descrierea structurii sistemului la nivel înalt.

Figurа 2.1.7.1 – Diаgrаmа de componente a sistemului

2.1.8 Modelarea echipamentelor mediului de implementare

Diаgrаmа reprezentată în figurа 2.1.8.1 sе rеfеră lа аrhitесturа fiziсă la modul care se v-a implementa aplicația, precum și la viitoarele соnехiunilе dintrе noduri. Соmроnеntеlе sunt аlосаtе în intеriоrul nоdurilоr, сееа се nе реrmitе vizuаlizаrеа unitаțilоr саrе sе vоr ехесutа ре fiесаrе nоd.

Figurа 2.1.8.1 – Diagrama de plasare

3 Realizarea sistemului

Pentru dezvoltarea aplicației informatice pentru rezervarea locurilor de parcare vor fi folosite un set de tehnologii. La moment avem la dispozitie un set de instrumente care ne ajuta la dezvoltarea mai comodă a plicației cum ar fi Drupal 8 Framework, Docker containere și PhpStorm.

Drupal[5] este un cadru de administrare a conținutului liber și open source scris în PHP și distribuit sub licența GNU General Public License. Versiunea standard a Drupal, cunoscută sub numele de core Drupal, conține caracteristici de bază comune sistemelor de management al conținutului. Acestea includ înregistrarea și întreținerea contului de utilizator, gestionarea meniurilor, fluxurile RSS, taxonomia, particularizarea layout-ului paginii și administrarea sistemului.

Docker[3] este folosit pentru a rula pachete software numite containere. Containerele sunt izolate unul de celălalt și leagă propriile aplicații, unelte, biblioteci și fișiere de configurare; ele pot comunica între ele prin canale bine definite. Toate containerele sunt conduse de un singur kernel al sistemului de operare și sunt astfel mai ușoare decât mașinile virtuale. Containerele sunt create din imagini care specifică conținutul precis al acestora. Imaginile sunt adesea create prin combinarea și modificarea imaginilor standard descărcate din registrele publice.

Realizarea sistemului va fi efectuată pe etape și în componente aparte. Prima componentă va fi nucleul Drupal 8 și instalarea sa locală prin composer pentru a putea administra dependențele din aplicație.

Apoi se va crea un fișier docker.composer.yml care va conține imaginile fiecărui container. În continuare se va oferi permisiuni corespunzătoare elementelor din core ce sunt implicate direct la instalarea aplicației. Apoi se va crea un fișier gulpfile.js care va include în el taskuri care grupeaza tipuri multiple de fișiere din tema noastră într-un singur fișier pentru compilarea aplicației. În final se va implimenta partea software care va presupune crearea codului propriu precum și integrarea modulelor deja existente. Dupa înlăturarea erorilor apărute în cadrul dezvoltarii aplicației, vom primi o aplicație funcțională ce poate rezolva problema propusă inițial.

Limbaje de programare

În aplicația propusă pentru dezvoltare voi utiliza urmatoarele tipuri de limbaje pe platforma web:

PHP;

JavaScript;

CSS3;

TWIG;

Bootstrap3.

JavaScript [10] a fost dezvoltat prima dată de către firma Netscape, cu numele de Live Script, un limbaj de script care extindea capacitățile HTML, oferă o alternativă parțială la utilizarea unui număr mare de scripturi CGI pentru prelucrarea informațiilor din formulare și care adaugă dinamism în paginile web. JavaScript îl înzestrează pe client și face ca relația să fie un adevarat sistem client-server. Biblioteca javascript de bază a nucleului Drupal (core / drupal) are două funcții pentru a suporta mai multe limbi în Javascript. Drupal.t () și Drupal.formatPlural () sunt două funcții disponibile, care funcționează exact ca echivalentele lor PHP:

Drupal utilizează jQuery într-un mod fără conflict. În jQuery, $ este un alias pentru jQuery. Alte biblioteci javascript folosesc frecvent $ ca nume de funcție sau de variabilă. Atunci când se utilizează jQuery într-un mod fără conflict, această variabilă $ este eliberată, astfel încât alte biblioteci să poată utiliza această variabilă $.

Comportamentele Drupal (Drupal.behaviors) sunt încă parte a javascript-ului în nucleu. Aceste comportamente vor fi executate la fiecare cerere, inclusiv solicitările AJAX. Mai jos este un exemplu de comportament Drupal Javascript(vezi figura 3.1).

Figura 3.1 – Exemplu de comportament JavaScript

PHP[9] este cel mai popular limbaj de programare pentru site-urile Web. Astăzi, peste 20 de miloane de site-uri funcționează pe servere cu PHP instalat.

Programatorii din toată lumea apreciază flexibilitatea lui, viteza și ușurința de utilizare. În plus, instrumentele de lucru în PHP sunt gratuite. Puteți să le preluați de pe Internet și să începeți programarea în zece minute.

PHP este util pentru elaborarea multor funcționalități pentru Internet, de la aplicații mici și simple până la magazine virtuale, portaluri și sisteme de administrare a conținutului.

Twig[7] este un motor de șablon pentru limbajul de programare PHP. Sintaxa sa provine din șabloanele Jinja și Django. Este un produs open source licențiat sub licență BSD și întreținut de Fabien Potencier. Versiunea inițială a fost creată de Armin Ronacher. Exemplul din figura 3.2 demonstrează câteva caracteristici ale lui Twig.

Figura 3.2 – Twig exemplu de sintaxă

Bootstrap 3 si CSS3 [8] vor fi folosite pentru ajustarea interfeței pentru utilizator, ca utilizatorul să se simtă comod în timpul utilizării aplicației. Bootstrap ofera posibilitatea dezvoltării unei aplicații mai rapid, reducând semnificativ volumul de cod css, dar în același timp ofera un rezultat satisfăcător pentru a face aplicația adaptivă, cu minim efort .

Instrumentele folosite vor fi sistemul de operare Linux, containere Docker, o aplicație de navigat pe internet precum Chrome, iar pentru crearea funcțiilor php voi folosi PhpStorm, instrument oferitt de JetBrains.

3.1 Proiectarea bazei de date

Ca soluție pentru păstrarea datelor , am folosit baza de date MariaDB, considerată mai rapidă în comparație cu MySQL. Trebuie să menționăm că MariaDB își are rădăcinile de la MySQL, drept rezultat structura bazei de date și indexurile a bazei MariaDB sunt echivalente cu cele al MySQL, ceea ce permite trecerea ușoara de la MySQL la MariaDB fără a fi nevoie de a vă modifica aplicațiile deoarece datele și structurile de date nu vor trebui să se schimbe. Dar totuși MariaDB[11] vine cu un set de priorități, cum ar fi :

– Dezvoltarea MariaDB este mai deschisă și mai vibrantă;

– Rapoarte mai rapide și mai transparente de Securitate;

– Mai multe caracteristici de ultimă oră;

– Oferă o performanță mai buna;

– Mai multe motoare de stocare;

– MariaDB a urcat în popularitate;

– Este compatibilă și ușor de migrat.

Pentru a administra bazele de date se poate folosi modul linie de comanda , sau prin descarcarea de pe internet a unei interfețe grafice. Având în vedere că pentru dezvoltarea sistemului a fost folosite containere Docker, pentru a administra baza de date vom folosi un instrument de management al bazelor de date, și anume Adminer. La fel Adminer este este un instrument care oferă un avantaj în dezvoltarea aplicatiei, cum ar fi:

– Experiența de utilizare;

– Suportă sisteme precum MySQL, SQLite, PostgreSQL, MS SQL, Oracle;

– Oferă o performanță mai buna;

– Oferă un nivel de Securitate mai ridicat;

– Mărimea fișierului mica;

– Doar un singur fișier pentru folosire, comparative cu 879 pentru phpMyAdmin .

În figura 3.1.1 am prezentat o parte din tabele care vor fi utilizate pe aplicația informatică pentru rezervarea locurilor de parcare.

Figura3.1.1 – Tabelule bazei de date

O serie din tabele tin de administrarea conținutului sistemului, astfel administratorii vor putea crea, șterge sau bloca useri din panoul de administrare. La fel administratorul din panoul de administrare poate oferi sau anula permisiuni pentru anumite tipuri de roluri la executarea anumitor operațuni în interiorul sistemului.

Tabele intâlnite în baza de date se află nemijlocit în relații :

– Mulți la mulți;

– Unu la mulți;

– Unu la unu

3.2 Descrierea la nivel de cod

Codul sursă prentru configurarea imaginilor pentru containerul Docker, pentru a putea fi ridicată aplicația pe serverul local de dervoltatorii noi ce vor lucra asupra proiectului, dacă va aparea necesitatea. În codul dat putem observa setarile pentru fiecare imagine folosită pentru funcționarea aplicației și dezvoltarea ei.

version: "2"

services:

mariadb:

# image: wodby/mariadb:10.3-3.3.15

image: wodby/mariadb:10.1-3.3.15

environment:

MYSQL_ROOT_PASSWORD: password

MYSQL_DATABASE: drupal

MYSQL_USER: drupal

MYSQL_PASSWORD: drupal

volumes:

– ./mariadb-init:/docker-entrypoint-initdb.d # Place init .sql file(s) here.

# – /path/to/mariadb/data/on/host:/var/lib/mysql # I want to manage volumes manually

php:

image: wodby/drupal-php:7.2-4.11.0

environment:

# PHP_FPM_USER: root

# PHP_FPM_GROUP: root

PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025

PHP_FPM_CLEAR_ENV: "no"

DB_HOST: mariadb

DB_USER: drupal

DB_PASSWORD: drupal

DB_NAME: drupal

DB_DRIVER: mysql

#PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025

# PHP_FPM_CLEAR_ENV: "no"

# DB_HOST: mariadb

# DB_USER: drupal

# DB_PASSWORD: drupal

# DB_NAME: drupal

# DB_DRIVER: mysql

# PHP_XDEBUG: 1

# PHP_XDEBUG_DEFAULT_ENABLE: 1

# PHP_XDEBUG_REMOTE_CONNECT_BACK: 0

# PHP_XDEBUG_REMOTE_HOST: "10.254.254.254"

# PHP_XDEBUG_PROFILER_OUTPUT_DIR: /mnt/files/xdebug/profiler

# PHP_XDEBUG_TRACE_OUTPUT_DIR: /mnt/files/xdebug/traces

volumes:

– ./:/var/www/html

apache:

image: wodby/apache:2.4-4.0.3

depends_on:

– php

environment:

APACHE_LOG_LEVEL: debug

APACHE_VHOST_PRESET: php

APACHE_BACKEND_HOST: php

APACHE_BACKEND_PORT: 9000

APACHE_DIRECTORY_INDEX: index.php

APACHE_FCGI_PROXY_CONN_TIMEOUT: 5

APACHE_FCGI_PROXY_TIMEOUT: 60

APACHE_SERVER_ROOT: /var/www/html

APACHE_DOCUMENT_ROOT: /var/www/html/web

volumes:

# – codebase:/var/www/html

– ./:/var/www/html

labels:

– 'traefik.backend=apache'

– 'traefik.port=80'

– 'traefik.frontend.rule=Host:parcking.docker.localhost'

adminer:

image: wodby/adminer:4

environment:

ADMINER_SALT: adminer-salt

labels:

– 'traefik.backend=adminer'

– 'traefik.port=9000'

– 'traefik.frontend.rule=Host:adminer.parcking.docker.localhost'

mailhog:

image: mailhog/mailhog

labels:

– 'traefik.backend=mailhog'

– 'traefik.port=8025'

– 'traefik.frontend.rule=Host:mailhog.parcking.docker.localhost'

În codul de mai jos sunt reprezentate gulp tascurile care se încarcă la rularea comenzii gulp în linia de comanda. Gulp este un instrument de construire în JavaScript construit pe fluxurile de noduri. Aceste fluxuri facilitează conectarea operațiunilor de fișiere prin conducte. Observăm că au fost create tascuri pentru javascript, scss, server, fonturi și tascul de baza care ruleaza toate cele enumerate anterior.

var gulp = require('gulp');

var sass = require('gulp-sass');

var plumber = require('gulp-plumber');

var concat = require('gulp-concat');

var sourcemaps = require('gulp-sourcemaps');

var autoprefixer = require('gulp-autoprefixer');

// Static Server + watching scss/html files

gulp.task('serve', ['sass', 'pack-js', 'fonts'], function() {

gulp.watch("scss/**/*.scss", ['sass']);

gulp.watch("javascript/*.js", ['pack-js']);

});

// Compile sass into CSS & auto-inject into browsers

gulp.task('sass', function() {

return gulp.src([

'node_modules/font-awesome/scss/*.scss',

"scss/*.scss",

])

.pipe(sourcemaps.init())

.pipe(plumber())

.pipe(sass({errLogToConsole: true}))

.on('error', catchErr)

.pipe(autoprefixer({browsers: ['last 4 versions']}))

.pipe(sourcemaps.write('/maps'))

.pipe(gulp.dest("css"));

});

gulp.task('pack-js', function () {

return gulp.src([

'javascript/*.js'

])

.pipe(concat('script.js'))

.pipe(gulp.dest('js'));

});

//F:\OSPanel\domains\casino\web\themes\casino\

gulp.task('fonts', function() {

return gulp.src('node_modules/font-awesome/fonts/**.*')

.pipe(gulp.dest('fonts'));

});

gulp.task('default', ['serve']);

// functions

function catchErr(e) {

console.log(e);

this.emit('end');

}

Adăugarea unei rezervari a fost implimentată prin extinderea și crearea formelor noi a modulul Bookable Entities Everywhere. Funcționalul dat a fost efectuat în limbajul PHP, dar pentru obținerea rezultatului final au fost folosite suplimentar css și javascript. Mai jos avem codul sursa pentru validarea formei de rezervare a unui loc de parcare. În codul de mai jos se efectuaza verificarea dacă în intervalul de timp ales de utilizator, adică data și ora de intrare în parcare și data și ora de ieșire din parcare sunt disponibile. În cazul în care există un loc de parcare disponibil pentru rezervare, utilizatorul va fi redirecționat spre urmatoarea pagină, adică pagina de completare a rezervarii și achitarea ei, în caz contrar utilizatorul va fi informat cu un mesaj de eroare că în intervalul selectat nu există locuri libere iar pentru a continua sa selecteze un alt interval de timp.

public function validateForm(array &$form, FormStateInterface $form_state) {

$values = $form_state->getValues();

$node = Node::load($values['node']);

$bee_settings = \Drupal::config('node.type.' . $node->bundle())->get('bee');

$start_date = $values['start_date'];

$end_date = $values['end_date'];

if ($bee_settings['bookable_type'] == 'daily') {

$start_date = new \DateTime($start_date);

$end_date = new \DateTime($end_date);

}

$date_start_date = $start_date->format('Y-m-d');

$date_end_date = $end_date->format('Y-m-d');

$dates_valid = TRUE;

if ($bee_settings['bookable_type'] == 'hourly') {

// Validate the input dates.

if (!$start_date instanceof DrupalDateTime) {

$form_state->setErrorByName('start_date', $this->t('The start date is not valid.'));

$dates_valid = FALSE;

}

if (!$end_date instanceof DrupalDateTime) {

$form_state->setErrorByName('end_date', $this->t('The end date is not valid.'));

$dates_valid = FALSE;

}

}

if ($dates_valid) {

if ($end_date < $start_date) {

$form_state->setErrorByName('end_date', $this->t('End date must be on or after the start date.'));

return;

}

if ($bee_settings['bookable_type'] == 'hourly') {

if ($node->get('field_use_open_hours')->value) {

$open_hours = $node->get('field_open_hours')->getValue();

$start_date_open_hour = FALSE;

$end_date_open_hour = FALSE;

foreach ($open_hours as $open_hour) {

if ($open_hour['day'] == $start_date->format('N')) {

$starthours = OfficeHoursDateHelper::format($open_hour['starthours'], 'H:i');

$endhours = OfficeHoursDateHelper::format($open_hour['endhours'], 'H:i');

$start_date_open_hour = [

'start' => new DrupalDateTime($date_start_date . ' ' . $starthours),

'end' => new DrupalDateTime($date_start_date . ' ' . $endhours),

];

if ($start_date_open_hour['end'] < $start_date_open_hour['start']) {

$start_date_open_hour['end']->modify('+1 day');

if ($start_date_open_hour['end']->format('Y-m-d') == $date_end_date) {

$end_date_open_hour = $start_date_open_hour;

}

}

}

if ($date_start_date == $date_end_date) {

if ($open_hour['day'] == $end_date->format('N')) {

$starthours = OfficeHoursDateHelper::format($open_hour['starthours'], 'H:i');

$endhours = OfficeHoursDateHelper::format($open_hour['endhours'], 'H:i');

$end_date_open_hour = [

'start' => new DrupalDateTime($date_end_date . ' ' . $starthours),

'end' => new DrupalDateTime($date_end_date . ' ' . $endhours),

];

if ($end_date_open_hour['end'] < $end_date_open_hour['start']) {

$end_date_open_hour['end']->modify('+1 day');

}

}

}

}

if ((!$start_date_open_hour || !$end_date_open_hour) ||

!(($start_date >= $start_date_open_hour['start'] && $start_date <= $start_date_open_hour['end']) &&

($end_date >= $end_date_open_hour['start'] && $end_date <= $end_date_open_hour['end']))) {

$form_state->setError($form, t('Please select start and end times within the opening hours.'));

}

}

}

$available_units = $this->getAvailableUnits($values);

if (empty($available_units)) {

$form_state->setError($form, t('No available units.'));

}

}

}

În codul sursă de mai jos observăm funcția pentru integrarea librăriei fullcalendar în cadrul aplicației dezvoltate. Fullcalendar este implimentat pe pagina de informare a utilizatorului cu privire la locurile libere de parcare în cadrul parcării analizate(vezi figura 3.2).

function fullcalendar_library_library_info_alter(&$libraries, $extension) {

if ($extension == 'fullcalendar_library') {

if (!file_exists(DRUPAL_ROOT . '/libraries/fullcalendar/lib/moment.min.js')) {

unset($libraries['fullcalendar']['js']['/libraries/fullcalendar/lib/moment.min.js']);

$libraries['fullcalendar']['js'][MOMENT_JS_CDN] = ['type' => 'external', 'minified' => TRUE];

}

if (!file_exists(DRUPAL_ROOT . '/libraries/fullcalendar/fullcalendar.min.js')) {

unset($libraries['fullcalendar']['js']['/libraries/fullcalendar/fullcalendar.min.js']);

$libraries['fullcalendar']['js'][FULLCALENDAR_JS_CDN] = ['type' => 'external', 'minified' => TRUE];

}

if (!file_exists(DRUPAL_ROOT . '/libraries/fullcalendar/locale-all.js')) {

unset($libraries['fullcalendar']['js']['/libraries/fullcalendar/locale-all.js']);

$libraries['fullcalendar']['js'][FULLCALENDAR_LOCALE_JS_CDN] = ['type' => 'external', 'minified' => TRUE];

}

if (!file_exists(DRUPAL_ROOT . '/libraries/fullcalendar/fullcalendar.min.css')) {

unset($libraries['fullcalendar']['css']['theme']['/libraries/fullcalendar/fullcalendar.min.css']);

$libraries['fullcalendar']['css']['theme'][FULLCALENDAR_CSS_CDN] = ['type' => 'external', 'minified' => TRUE, 'media' => 'screen']; }}}

Figura 3.2 – Aplicarea librariei fullcalendar

3.3 Testarea Sistemului

Testarea unei aplicații de comerț[4] electronic este definită ca testarea comerțului electronic. Aceasta ajută la evitarea diferitelor erori care pot apărea în timpul procesului de dezvoltare a software-ului și, astfel, să adauge valoare în produs prin asigurarea conformității cu cerințele clienților.

Pentru a dezvolta un site web de comerț electronic, primul lucru pe care trebuie să-l gândiți este designul site-ului, care ar trebui să fie ușor de utilizat, deoarece într-un site de comerț electronic totul se referă la utilizator și dacă site-ul este puțin complicat decât utilizatorul se va abține să-l folosească.

O testare a comerțului electronic necesită cunoașterea testelor bazate pe aplicații web și mobile. Testarea este efectuată în mod continuu pe diferite platforme, browsere diferite și în combinații diferite. Acest lucru se face pentru a vă asigura că site-ul de e-commerce funcționează corect pe toate dispozitivele și este compatibil cu fiecare browser.

Testarea unui site web de comerț electronic vă va ajuta să vă asigurați că fiecare pagină web a site-ului dvs. web este testată suficient de bine și este validată pentru a finaliza toate tranzacțiile de comerț electronic. Acesta va confirma, de asemenea, dacă este gata pentru utilizarea clientului sau nu.

De asemenea, testarea unui site web de comerț electronic este, utilă în verificarea site-ului în termeni de compatibilitate, funcționalitate, utilizare, performanță și securitate. Acestea sunt câțiva dintre cei mai importanți factori pentru orice site web.

Schimbarea site-ului web e-commerce este necesară pentru a face experiența utilizatorului mai rapidă și mai ușoară. Testarea prin regresie este utilizată pentru a vă asigura că încorporarea de noi modificări nu afectează site-ul în moduri negative și nu ajung la erori neintenționate.

Pentru a satisface perfect cerințele și nevoile clientului, fiecare organizație trebuie să se asigure că funcția oferită pe site-urile Web funcționează corespunzător în condiții de încărcare diferite și dacă site-ul web este capabil să suporte sau nu diferite browsere sau platforme. Fiecare proces de testare conține procese și segmente mici în cadrul acestora. Finalizarea tuturor acestor segmente completează întregul proces de testare.

Duрă реrсереrеа sсорului nоstru dе tеstаrе а unui соmроnеnt, rаmîinе а fоlоsi instrumеntul роtrivit din сеlе еnumеrаtе mаi sus. Sistеmul еstе tеstаt рrin Unit-tеstе, utilizînd РHРUNIT 5, рlаtfоrmа dоminаntă ре рlаtfоrmа РHР реntru tеstаrе. In figura 3.3.1 am reprezentat ciclul de testare folosind phpunit.

Figura 3.3.1 – Ciclu de executie a unui test phpunit

4 Descrierea sistemului realizat

Pentru prezentarea produsului finit, către utilizator, este nevoie de elaborarea unei documentații detaliate, care are ca scop, descrierea pas cu pas a funcționalului aplicației. Respectiv, pentru a atinge acest scop, în continuare vor fi descries toate scenariile de folosire a aplicației web.

Primul pas pentru utilizarea sistemului este accesarea paginii de internet a saitului. În rezultat conform figurei 4.1 se va afișa pagina de start a saitului, care include în sine meniul principal de navigare a aplicației, un bloc care indică avantajele rețelei date de parcări și o sectiune ce include în ea parcările disponibile, poziția lor pe harta, și posibilitatea de rezervare la parcare cautată de utilizator.

Figura 4.1 – Pagina Acasa

Pentru a vizualiza informații despre locurile libere de parcare de la o parcare anumită, utilizatorul trebuie să acceseze butonul “Rezervare loc parcare” de la parcare unde ar vrea să-și parcheze automobilul. În rezultat utilizatorul va fi redericționat pe pagina informativă a parcarii, unde poate monitoriza numarul de locuri și orele de parcare libere și ocupate. O analiză detaliată poate fi făcuta analizînd figura 4.2 .

Figura 4.2 – Pagina informații despre loc de parcare

Trebuie să menționăm că deși utilizatorul poate vizualiza informații despre locurile accesibile, el nu poate face o rezervare atâta timp cât nu este logat în sistem. Deci, pentru logare în sistem, în meniul principal în drapta selectăm “Logare” . Conform Figurii 4.3 utilizatorul va avea posibilitatea să se logheze în sistema dacă are un cont deja, sau să-și reseteze parola în caz că a uitato. Dacă utilizatorul înca nu are un cont, accesând butonul “Creare Cont” va fi redericționat pe pagina pentru creare cont.

Figura 4.3 – Pagina de logare

După logare dacă accesam pagina informații despre loc parcare(vezi figura 4.2), observăm că a aparut butonul Adauga rezervare. La accesarea butonului Adaugare rezervare, utilizatorul este redirecționat spre forma de rezervare unde selectăm urmatoarele date(vezi figura 4.4):

data și ora intrării în parcare;

data și ora ieșirii din parcare.

Dacă în parcare intervalul selectat este liber utilizatorul va fi redirecționat spre pagina de achitare a rezervării, în caz contrar va primi la ecran o atenționare precum că în intervalul dat nu exista locuri de parcare libere.

Figura 4.4 – Adăugare rezervare

Dacă intervalul selectat este liber, suntem redirecționati spre pagina de achitare a rezervării(vezi figura 4.5). Aici completăm datele despre rezervare cum ar fi :

Nume;

Prenume;

Oraș;

Adresă;

Număr mașină;

Email.

Figura 4.5 – Informații despre rezervare

În continuare conform figurii 4.6 urmează pagina de verificare a datelor despre rezervare. Aici observăm forma din stinga ce conține informația introdusa la pasul precedent și forma din dreapta ce indică prețul calculate pentru perioada de rezevare selectată anterior.

Figura 4.6 – Verificarea datelor introduse

Următorul pas, acesta fiind și pasul final este achitarea. Pentru achitare selectăm butonul achitare și finalizează rezervare. Drept rezultat se va afișa forma pentru introducerea datelor despre card. Dacă datele introduse sunt valide, rezevarea este finisată cu success și utilizatorul primește un mesaj de notificare la ecran cu numarul comenzii sale. La fel în urma rezervarii vom primi și la email o confirmare cu datele despre rezervare.După navigarea pe aplicația web putem oferi un feedback cu o recenzie sau o sugestie către compania ce administrează parcările. Conform figurii 4.1 selectăm butonul oferiți feedback din partea de jos a aplicație. 7În rezultat vom fi redirecționați pe pagina de feedback(vezi figura 4.7).

Figura 4.7 – Pagina oferiți feedback

Un alt scenariu al aplicației date este vizualizarea evenimentelor rasunatoare ce au loc în preajma parcărilor administrate de aplicația dată.

Partea importantă a sistemului dat este că dispune și de un panou de administrare pentru administrator, unde acesta din urma poate manipula cu locurile de parcare de la fiecare parcare în parte. La fel administratorul are următoarele posibilități:

Creare utilizatori;

Șterge utilizatori;

Bloca utilizatori;

Creare și traducere conținut;

Ștergere conținut;

Adăugare blocuri noi;

Vizualizare date despre rezervari.

Cele menționate mai sus sunt un avantaj enorm în gestiunea unei aplicații informatice, de altfel ele duc la dezvoltarea aplicației și la adaptarea la cerintele clientului.

5 Evaluarea economică a produsului

Analiza din punct de vedere economic a proiectului este importantă în condițiile economiei de piață. Aceasta este necesară pentru a demonstra importanța produsului din toate punctele de vedere și a celui economic care este cel mai important.

Evaluarea economică a produsului cât și analiza riscurilor sunt esențiale în dezvoltarea unor noi produse pe piață. Unul dintre cei mai importanți factori în dezvoltarea de noi produse este investiția, toate acestea avînd ca scop aducerea unui oarecare profit.

Арliсаții соmрlехе саrе оfеră un sресtru lаrg dе sоluții, sunt dеstul dе соstisitоаrе și sunt соnсеntrаtе sрrе соrроrаții сu сарitаl imрunătоr, ре сînd асеаstă арliсаțiе еstе îndrерtаtă sрrе соmраnii сu bugеt rеdus, саrе sunt mult mаi numеrоаsе.

Scopul proiectului este de a deveni lider pe piața locală în domeniul parcărilor cu plată. În urma evaluării economice a produsului se va face cunoștință cu justificarea economică a aplicației în care se va explica planul de elaborare, diverse mijloace utilizate, diverse cercetări de marketing, profit generat de proiect, etc.

La momentul actual aplicația se află la etapa de dezvoltare. Însă indiferent de acest fapt, este posibil de a stabili resurse necesare pentru elaborare a acestei aplicații: timpul necesar, calculatorul personal, conctarea la servicii de internet.

Conform acestor cheltuieli se poate estima cu ușurință costul aplicației, astfel fiind posibil de calculat care ar fi timpul necesar pentru a plasa o reclamă referitor la această aplicație și nu în ultimul rând de a beneficia și de un profit.

Un avantaj în elaborarea acestei aplicații este de a facilita procesul de înregistrare a unui automobil pe teritoriul parcarii Parcare Rapidă. Un lucru important este acela că utilizatorul după procedura de înregistrare, va putea vedea toate înregistrările efectuate de pe pagina parcării unde a efectuat rezervarea.

Figura 5 reprezintă etapele de planificare a timpului:

Figura 5 – Etapele de planificare

5.1 Planul calendaristic

Реntru еlаbоrаrеа aplicației informatice pentru rezervarea locurilor de parcare “Parcare Rapidă”, v-а fi nесеsar de o perioadă de timp mai Îndelungată. Pe parcursul acestei perioade de timp se va coopera periodic cu potențialii utilizatori a aplicației pentru a primi o notă cu privire la functionalitățile aplicației. Un plan calendaristic a unui proiect reprezintă o repartizare în timp a procesului de stabilire a sarcinilor precum și procesul de elaborare a proiectului.

Durata realizării aplicației poate fi și una îndelungată deoarece necesită și de o perfecționare. Asemenea proiecte apar în mare parte într-o stare simplă , însă în perioada dezvoltarii aplicației pot aparea schimbări forțate de logica a sistemului, care în mod normal pot extinde perioada de dezvoltare pîna la stare în care sistemul funcționează în totalitate fără erori , chiar și pină la cîțiva ani.

La crearea și dezvoltarea aplicației pentru rezervarea locurilor de parcare “FastParcking”, au fost respectați următorii pași:

stabilirea temei;

analiza domeniului de studiu;

compararea aplicației cu sisteme similare;

proiectarea și modelarea sistemului;

realizarea funcționalităților sistemului;

testarea aplicației;

fixarea erorilor;

documentarea sistemului;

Proiectarea și modelarea sistemului este etapa unde se construiesc modele cu ajutorul diagramelor UML care redau arhitectura sistemului.

Testarea se referă la testarea aplicației implementate astfel urmarindu-se rezolvarea unor eventuale neajunsuri la așteptările teoretice.

Fixarea erorilor este partea unde are loc fixarea unor neajunsuri, în urma testării sistemului.

Documentarea sistemului cuprinde aspectul general al lucrarii unde se creează cuprinsul. Respectiv pentru parcurgerea acestor pași a fost nevoie de o anumită perioadă de timp care este descrisă conform tabelului 5.1.

Tabelul 5.1 – Planul calendaristic pe termen scurt

Tabelul 5.1 – Continuarea tabelului

Diagrama Gantt reprezintă o diagramă care ilustrează activitățile dintr-un proiect, desfășurate în timp, indicând timpii de începere și respectiv de finalizare, precum și durata acestor activități. Cazurile când se utilizează acest tip de diagramă sunt următoarele:

pentru planificarea sau monitorizarea activităților dintr-un proiect de cercetare;

pentru a prezenta altor persoane planul sau starea unui proiect;

atunci când se cunosc etapele unui proiect sau proces, în privința succesiunii și duratei acestora;

în situația în care nu este necesar să se specifice ce activități sau procese depind de terminarea unora anterioare.

Conform tabelului 5.1 a fost reprezentată diagrama Gantt (figura 5.1) a aplicației informatice pentru rezervarea locurilor de parcare “Parcare Rapidă”.

Fugura 4.1 – Graficul Gantt a planului calendaristic pe termen scurt

5.2 Analiza SWOT

În tabelul 5.2 este reprezentată analiza SWOT a aplicației pentru rezervarea locurilor de parcare”FastParcking”. Punctele forte sunt caracteristici sau competențe distinctive pe care aplicația le posedă la un nivel superior în comparație cu alte sisteme informaționale, îndeosebi concurente, ceea ce îi asigură un anumit avantaj în fața lor.

Punctele slabe reprezintă activități pe care sistemul informațional nu le realizează la nivelul propriu celorlalte sisteme informaționale concurente sau resurse de care are nevoie dar nu le posedă.

Oportunități evaluează factorii atractivi externi ce reprezintă elementele de care echipa de proiect poate profita.

Riscurile includ factori în afara controlului care ar putea impune implementarea proiectului într-o poziție de risc.

Tabelul 5.2 – Analiza SWOT a aplicației Parcare Rapidă

5.3 Calculul indicatorilor economici

În asigurarea rentabilității proiectului se realizează calculele indicatorilor economici care relevă dimensiunea factorilor de producție, respectiv volumul resurselor umane, materiale, al capitalului, investițiilor. Astfel stabilirea unei strategii de utilizare eficiente a cheltuielelor va asigura o creștere semnificativă a profitului acestei platforme.

Toate calculele se vor efectua în valuta națională (MDL). Prețurile materialelor, precum și plățile salariale sunt actuale și se vor estima fără calculul TVA inclus.

5.3.1 Investiții în active materiale și nemateriale pe termen lung

Creșterea economică depinde în mare parte de potențialul tehnic și gradul de utilizare a acestuia. Astfel activele materiale și nemateriale ce participă nemijlocit la procesul asigurării funcționării platformei pe un termen îndelungat sunt specificate conform tabelului 5.3, cu specificarea prețului de achiziție pe unitate la momentul actual, cantitatea necesară și suma finală.

Tabelul 5.3 – Active materiale şi nemateriale pe termen lung

Conform datelor din tabelul 5.3, suma necesară pentru acoperirea tuturor cheltuielelor activelor material, cât și activelor nemateriale pe termen lung, este în valoare de 24820 lei. Suma totală de 24820 lei urmează a fi inclusă în costul de producție și prețul de realizare.

5.3.2 Consumuri directe și indirecte

Consumuri directe de materiale pot fi identificate nemijlocit pentru un anumit produs. Consumuri materiale directe sunt valoarea materialelor consumabile utilizate în procesul de elaborare a proiectului și incluse în costul total. Elemente cu caracter material utilizate în proiect sunt hîrtie A4 și pix, care se rezumă la rechizite de birou, ele fiind specificate în tabelul 5.4

În aceste calcule se includ toate consumurile legate de material, materie primă, materiale auxiliare și cele de bază. Consumurile directe de materiale includ prezența nemijlocită a materialului în produsul finit.

Tabelul 5.4 – Consumuri directe de materiale

Totalul coloanei V reprezintă valoarea totală a consumurilor materiale directe. Pentru realizarea aplicației pentru rezevarea locurilor de parcare online, este necesar de a defini și resursele umane care participă nemijlocit la dezvoltarea și mentenanța aplicației. În continuare se vor calcula sumele necesare per angajat în direcția retriburii muncii, se va indica volumul de lucru, salariu contractual pe unitate de timp, fondul de retribuire a muncii, adaosuri și prime. Toate aceste date au fost repartizate conform tabelului 5.5.

Tabelul 5.5 – Consumuri directe privind retribuirea muncii

În urma datelor obținute, totalul coloanei 7 conform tabelului 5.5, reprezintă fondul de retribuire a muncii (FRM) în valoare de 65700 lei, în bаzа сăruiа sе va саlсula sumа соntribuțiilоr în fоndul sосiаl (FS) care constituie 18% din fоndul dе rеtribuirе а munсii și vаlоаrеа рrimеi dе аsigurаrе mеdiсаlа оbligаtоriе (АM) care constituie 4,5% din fоndul dе rеtribuirе а munсii.

Prin urmare formula de calculare a fondului de asigurări sociale este idicată în formula 5.1.

FАS = FRM × Сfs (%) (5.1)

unde:

FAS – fondul de asigurări sociale;

Cfs – cota contribuțiilor de asigurări sociale de stat obligatorii.

Contribuția la bugetul asigurărilor sociale de stat obligatorii suportată de angajator, constituie 18% din fondul de remunerare amuncii (FRM), conform legii bugetului asigurărilor sociale de stat pentru anul 2019. Respectiv pentru calcularea fondului asigurărilor sociale de stat s-a utilizat formula 5.2.

FAM = FRM × Cam(%) (5.2)

unde:

FAM – fondul asigurărilor sociale de stat;

Cam – cota primei de asigurare obligatorie de asistență medicală.

Cota primei de asigurare obligatorie de asistență medicală suportată de angajator constituie 4,5% din fondul de remunerare a muncii (FRM), conform legii privind fondurile asigurării obligatorii de asistență medicală pentru anul 2019.

Datele pentru fondul de asigurări sociale au fost calculate conform formulei 5.1, iar pentru fondul asigurărilor sociale de stat conform formulei 5.2.

FAS= FRM × Cfs (%) = 65700 lei × 6% = 11826 lei

FAM = FRM × Cam (%) = 65700 lei × 4.5% = 2956 lei

Formula de calculare a fondului total de remunerare a muncii este indicată în formua 4.3.

FRMT = FRM + FAS + FAM (5.3)

unde:

FRMT – fondul de remunerare a muncii total.

Prin utilizarea formulei 4.3 s-au obținut următoarele date ale fondului total de remunerare a muncii:

FRMT = 65700 lei + 11826 lei + 2956 lei = 80482 lei

Impozitul pe venit a programatorului pe perioada de 12 luni și cotelor procentuale necesare, se vor calcula luând în considerație reglementările legislative pentru anul 2019. Аstfеl sunt рrеvăzutе următоаrеlе tахе si sсutiri lа vеnituri реrsоаnе fiziсе:

Impozitul pe venit:

– venituri anuale – se aplică cota de impozitare 12%;

– fondul de pensionare – 6% din venit;

– fondul de asigurare medicală – 4,5% din venit;

– fiecare contribuabil (persoană fizică rezidentă) are dreptul la o scutire personală în sumă de 24 000 lei pe an;

– contribuabilul (persoană fizică rezidentă) are dreptul la o scutire în sumă de 3 000 lei anual pentru fiecare persoană întreținută;

– suma scutirii personale majore –30 000 lei anual.

Sе аdmitе сă sаlаriul brut аl рrоgrаmаtоrului еstе dе 79 200 lеi anual, conform acestor date salariul lunar este în valoare de 6 600 lei. Аstfеl utilizăm соtеlе dе imроzitаrе асtuаlе ре 2019 și vоm саlсulа vеnitul nеt аnuаl și sumа imроzitului ре vеnit trаnsfеrаt lа bugеtul dе stаt.

Luând în considerație salariul brut al programatorului,se va calcula reținerile în fondul social (FS) și contribuțiile la asigurarea medicală (FAS).

FP = 79 200lei × 6% = 4 750 lei

FAM =79 200 lei × 4.5% = 3 564 lei

Venitul impozabil reprezintă venitul brut, obținut de contribuabil din toate sursele într-o anumită perioadă fiscal, cu excepția deducerilor și scutirilor, aferente acestui venit, la care are dreptul contribuabilul, conform legislației fiscal .

VI = VB – FP – FAM – SP – SiP – SM (5.4)

unde:

VI – venitul impozabil;

VB – venitul brut;

FP – fondul de pensionare (sigurări personale);

FAM – fondul de asigurare medicală;

SP – scutirea personală;

SiP – scutirea pentru persoana întreținută;

SM – scutirea personală majoră.

Venitul impozabil se va calcula conform formulei 5.4:

VI = 79 200 lei – 4 750 lei – 3 564 lei – 24 000 lei – 0 – 0 =46 886 lei

Impozitul pe venit este un impozit anual, perceput de către stat asupra venitului persoanelor fizice și persoanelor juridice .

IV = VI – I (5.5)

unde:

I – impozit pe venit

Conform articolului 15 al Codului Fiscal al Republicii Moldova, cota impozitului pe venit constituie 12% din venitul anual impozabil. Astfel, suma impozitului pe venit constituie:

IV =79 200 lei × 12% = 9 504 lei

Se cаlculeаzа sumа venitului net conform formulei 5.6, аplicind cotele de impozitаre în vigoаre:

VN = VB – IV – FP – FAM (5.6)

unde:

VB – venitul brut;

IV – impozit pe venit;

FP – fondul de pensionare (asigurări sociale);

FAM – prima de asigurare medical.

VN = 79 200 lei – 9 504 lei – 4 750 lei – 3 564 lei = 61 382 lei

Consumurile indirecte sunt consumurile ale căror volum nu depinde de volumul de producție. Pentru a asigura condițiile cuvenite la realizarea proiectului se stabilesc consumurile indirecte. Serviciile propriu zise la dezvoltarea proiectului pot fi vizualizate în tabelul 5.6.

Tabelul 5.6 – Consumuri indirecte

Astfel datele indicate și valoarea totală prestabilită va fi inclusă în costurile de producție pentru estimarea sumei totale pe care trebuie producatorul să o investească pentru a obține produsul/serviciul dorit.

5.3.3 Uzura mijloacelor fixe și amortizarea activelor nemateriale pe termen lung

Uzura mijloacelor fixe este pierderea parțială sau totală a proprietăților de consum și a valorii mijloacelor fixe în procesul exploatării sub acțiunea factorilor naturali, progresul tehnico-științific și creșterii productivității muncii în ramurile în care se produc aceste mijloace fixe. La monitorizarea cheltuielilor indirecte este necesar de a include uzura mijloacelor fixe și activelor nemateriale prezente nemijlocit la dezvoltare și menținerea platformei.

Din considerentul că activul are o perioadă determinată de utilizare, se calculează fondul de uzură pentru a acoperi ulterioarele cheltuieli ce vor suverni la posibile defectiuni. Astfel la calculul uzirii mijloacelor fixe se indica fondul de amortizare (lei), valoarea de intrare, durata proiectului și durata de funcționare utilă.

Partea importantă a cheltuielilor indirecte constituie calcularea fondului de uzură și amortizare. Durata utilizării activului se determină după categoria lui. AMTL – 3-5 ani, ANTL – 2-3 ani.

FA = ( : DFU) × (5.7)

unde:

FA – fondul amortizării, lei;

– valoarea de intrare;

DFU – durata de funcționare utilă;

– durata proiectului.

Fondul de amortizare se va calcula conform formulei 5.7:

Аstfеl fоndul dе аmоrtizаrе реntru untitățilе fоlоsitе în саdrul еlаbоrării рrоiесtului sunt:

5.3.4 Costul de producție

Соstul dе рrоduсțiе rерrеzintă tоtаlitаtеа сhеltuiеlilоr, соrеsрunzătоаrе соnsumului dе fасtоri dе рrоduсțiе, ре саrе аgеntii есоnоmiсi lе еfесtuеаză реntru рrоduсеrеа si vânzаrеа dе bunuri mаtеriаlе sаu рrеstаrеа dе sеrviсii.

Costul de producție este forma bănească de exprimare a consumului de factori materiali și umani în producția de bunuri. Include în sine tot ceea ce înseamnă cheltuiala suportată de către producție atât pentru producerea cât și pentru desfacerea lor. Permite aducerea la un numitor comun a consumurilor de factori de producție diferiți și pe această bază devin posibile măsurarea și compararea lor.

Рrеțul dе соst sе саlсulеаză ре о unitаtе. Dасă sе еlаbоrеаză un sitе sаu о арliсаție, аtunсi vа fi рrеțul dе соst аl еlаbоrării, dаr dасă în саdrul рrоiесtului sе рlаnifiсă multiрliсаrеа рrоdusului, аtunсi еstе nеvоiе dе саlсulаt соstul dе еlаbоrаrе аl unеi сорii.

Tabelul 5.7 – Costul de producție

Conform datelor din tabelul 5.7, ponderea cea mai mare în costul de producție o constituie consumurile directe privind retribuirea muncii.

Calculul indicatorilor economico-financiari

Metoda ”bottom-up”

Calculam prețul brut pentru aplicația efectuată:

Preț brut = Preț de cost + Profit;

Preț brut= 86 677,51 lei +63332,49lei=150 000 lei

Taxa pe valoarea adăugată este un impozit indirect suportat de consumatorul final al bunului/serviciului respectiv. TVA este un impozit încasat în cascadă de fiecare agent economic care participă la ciclul economic al realizării unui produs sau prestării unui serviciu ce intră în sfera de impozitare. După exercitarea dreptului de deducere, agenții economici impozabili care au participat la ciclul economic virează soldul TVA la bugetul de stat. În RM estet în vigoare cota standard: 20%.

Calculăm prețul de realizare pentru aplicația efectuata:

Prz = Preț brut + TVA.

Prz= 150 000 lei +30 000 lei = 180 000 lei

Соnсluzii аsuрrа рărții есоnоmiсе

În асеst сарitоl аu fоst еfесtuаtе сеrсеtări аsuрrа tuturоr сhеltuеlilоr nесеsаrе реntru rеаlizаrеа асеstui рrоiесt. Duрă еfесtuаrеа tuturоr саlсulеlоr рutеm dеtеrminа dасă rеаlizаrеа рrоiесtului еstе rеntаbilă și fасtоri саrе miсșоrеаză rеntаbiliаtаtеа lui, infоrmаtiе саrе nе роаtе diсtа strаtеgiа dеzvоltării.

Concluzii

În cocnluzii voi generealiza și voi suma care sunt avantajele unei aplicații web de comert pentru întreprinzător și de rezervare pentru client. Dacă analizăm din punct de vedere al unui client, un sistem de rezervari ne aduce un șir de facilitați, care ne ușureaza viața de zi cu zi.

Platformele online reprezintă o noua tendință de rezervare. Lumea acum este online, în zilele noastre clienții folosesc internetul pentru a descoperi tot ce trebuie ei să știe. Dacă nu aveți o prezență online, probabil vă lipsesc multe oportunități, deci, dacă doriți să profitați de abordarea moderna de rezervare, este necesar să vă integrații platforma de rezervare cu pagina de produse.

Sitemul de rezervare online reduce volumul de muncă și în același timp optimizeaza serviciile pentru client. Aceste platforme ne pot asigura ca rezervările sunt sincronizate, iar disponibilitatea este actualizată cu fiecare procresare a rezervării în timp real. Plațile de asemenea sunt foarte ușurate cu o platformă de rezervări online, deoarece putem solicita clientului să plătească atunci când efectuează rezervarea, astfel crescând în continuu veniturile companiei, dar în același timp nici clientul nici compania nu trebuie să-și faca griji la sosirea la locul rezervat pentru achitare.

Un alt avantaj al platformelor de rezervari online este că acestea lucrează tot timpul, adică 24/7. Aceasta oferă o libertate vizitatorilor potențiali de a rezerva un loc de parcare la orice ora, oricând doresc ei. De asemenea va creste veniturile la maxim, deoarece nu ne vom limita la orele de lucru standarte de lucru. Un studio demonstrează că o platformă de rezervări on-line 24/7 ameliorează considerabil numarul de rezervări .

La fel un sistem de management al rezervărilor online permite obținerea unei statistici mai corecte asupra veniturilor și asupra vizitarilor din partea clienților.

Timpul este problema de baza a societății la moment. Toți mereu se grăbesc, nimic nu reușesc, la orice pas sunt presați de timp. În contextual dat putem afirma că luxul că avem deja rezervat un loc de parcare abia porniți de acasă la un eveniment nu poate fi comparat cu nimic. Desigur informarea oamenilor cu privirea la locurile disponibile de parcare poate rezolva parțial și problema parcărilor neregulamentare în oraș, ceea ce înseamnă că nu doar automobiliștii vor fi satisfăcuți, dar și pietonii care nu vor fi nevoiți în fiecare zi să inconjoare sute de masini pentu a ajunge la locul destinatiei. Pe lingă cele expuse mai sus clientul care are un cont creat va fi inștiințat la dorinta, de evenimentele de mare amploare ce vor avea loc în preajma parcărilor.

Această aplicație implică în sine implimentarea a unei game largi de platforme, și limbaje de programare. Începind cu limbaje modern cum ar fi JavaScript și PHP 7.x și terminând cu limbaje mai putin cunoscute, dar care oferă o performață în dezvoltare majoră, precum twig, gulp, scss.

Bibliоgrаfiе

Parcările în chișinău și parcările în canada, ассеsаt 04.03.2019, [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: https://www.zdg.md/editia-print/social/diaspora/parcarile-canadiene-vs-parcarile-din-chisinau

Urbanism, ассеsаt 04.03.2019, [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: https://victorchironda.eu/tag/urbanism/

Docker, ассеsаt 04.03.2019, [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: https://www.docker.com/

Developer guide drupal commerce, ассеsаt 04.03.2019, [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: https://docs.drupalcommerce.org/commerce2/developer-guide

Dupal 8 , ассеsаt 20.11.2018 , [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: https://www.drupal.org/8

Limbajul de modelare UM, ассеsаt 05.03.2019, [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: stst.elia.pub.ro/news/IS/UML/UML_IS.doc

Twig (template engine), ассеsаt 06.03.2019, [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: https://en.wikipedia.org/wiki/Twig_(template_engine)

СSS, ассеsаt 06.03.2019, [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: httрs://dеvеlореr.mоzillа.оrg/rо/dосs/Wеb/СSS

РHР, ассеsаt 06.03.2019, [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: httр://рhр.рunсtsivirgulа.rо/

JаvаSсriрt, ассеsаt 06.03.2019, [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: httр://еtutоriаlе.rо/аrtiсlеs/1771/1/Tutоriаl-соmрlеt-JаvаSсriрt

MariaDB, ассеsаt 06.03.2019, [Rеsursа еlесtrоniса]. – Rеgim dе ассеs: https://mariadb.com/

Similar Posts