Aplicatie Java de File Sharing

LUCRARE DE LICENȚĂ

Aplicație Java de file-sharing

CUPRINS :

Introducere

Capitolul 1. Studiul și analiza sistemului actual al firmei

1.1. Prezentarea succintă a firmei

1.2. Activitatile desfasurate in unitatea economica

1.3. Studiul sistemului de conducere

1.4. Studiul sistemului condus

1.5. Studiul sistemului informational

1.5.1. Schema fluxului informațional aferent temei

1.5.2. Descrierea circuitului informațional aferent temei

1.5.3. Documente utilizate

1.5.4. Analiza critică a sistemului actual și identificarea neajunsurilor existente

1.5.5. Directii de perfecționare a sistemului actual

Capitolul 2. Tehnologii informatice utilizate.

2.1. Notiuni generale despre programare si limbajele de programare

2.2. Notiuni generale despre limbajul de programare Java

2.3. Elemente Java folosite in dezvoltarea aplicatiei

2.3.1. Fire de executie (Java Threads)

2.3.2. Socketuri Java

2.3.3. Interfețe grafice cu ajutorul Java.Swing

2.4. Medii de dezvoltare integrate

2.5. Java: un limbaj compilat si interpretat

Capitolul 3. Proiectarea de detaliu a aplicației informatice

3.1 Definirea obiectivelor aplicației informatice

3.1.1 Tehnologii utilizate

3.1.2 Privire de ansamblu asupra modelului

3.2 Schema de sistem a aplicației

3.3 Clasele principale ale aplicației

3.3.1 Clasa Log In

3.3.2 Clasa Mesaje

3.3.3 Clasa Client

3.3.4 Clasa Fereastra Principala

3.3.5 Clasa Server

3.4 Secvențe de testare ale aplicației

3.5 Proiectarea interfeței aplicației informatice

3.6 Proiectarea bazei de date

3.7 Propuneri de dotare cu echipamente IT și costuri aferente

Capitolul 4. Prezentarea produsului software

4.1 Cerințele platformei hardware și software ale produsului program

4.2 Descrierea funcțiunilor aplicației

Capitolul 5. Eficiența și utilitatea aplicației informatice

5.1 Condiții privind implementarea aplicației

5.2 Considerații privind eficiența aplicației

Bibliografie

Introducere. Oportunitatea și importanța temei lucrării de licență

În această lucrare de licență voi prezenta detaliat demersul realizări unei aplicații care vine în ajutorul firmelor de orice tip atâta timp cât există cel puțin doi angajați ce lucrează pe calculatoare.

Pentru dezvoltarea aplicației am folosit limbajul de programare Java, deoarece am vrut să aplic și să aprofundez toate cunoștințele acumulate pe parcursul celor trei ani de facultate. De asemenea, un alt considerent pentru alegerea acestui limbaj de programare a fost și popularitatea de care se bucură, el fiind folosit în dezvoltarea aplicațiilor pentru telefoane mobile, calculatoare, tablete, autoturisme, etc. Limbajul Java este folosit in majoritatea echipamentelor informatice aflate pe piață.

Alegerea acestei teme de licență a însemnat pentru mine oportunitatea de a îmi pune la încercare voința, de a îmi cunoaște mai bine înclinația către acest domeniu, în același timp testându-mi capacitatea de a dezvolta produse software prin folosirea limbajului

de programare Java.

Capitolul 1. Studiul si analiza sistemului actual al firmei

1.1 Prezentarea succintă a firmei

S.C. INSTASUPPORT S.R.L. este o firmă înființată în anul 2009 ce oferă servicii complete de suport IT pentru companii mici și mijlocii dar și pentru persoane fizice.

Firma S.C. INSTASUPPORT S.R.L. oferă clienților săi o varietate de servicii, precum:

servicii de helpdesk (suport)

asistență tehnică

administrare și întreținere calculatoare

administrare și întreținere rețele

consultanță IT

service si depanare

Personalul firmei este compus din specialiști IT ce posedă o vastă pregătire în domeniul IT și dețin certificări recunoscute internațional, oferite de Microsoft, Cisco.

Serviciile oferite de firma S.C. INSTASUPPORT S.R.L. se ridica la cele mai înalte standarde, calitatea serviciilor reflectându-se prin numărul tot mai mare de clienți mulțumiți, care au apreciat rapiditatea în identificarea și rezolvarea problemelor, seriozitatea, punctualitatea și costurile mici.

1.2. Activitățile desfășurate în unitatea economică

În anul 2009, obiectivul principal al firmei după înființare a fost stabilirea unui sediu central dotat cu aparatura performantă, de ultimă generație, pentru a facilita deservirea

cât mai rapidă și cât mai eficientă a serviciilor oferite de companie.

Eficiența și performanța economică a societății vor rezulta din analiza indicatorilor de performanță. Pentru a ajunge la aceste rezultate, se vor cerceta primii 4 ani de activitate.

Fig. 1.2.1. Tabel indicatori de performanță

Analiza veniturilor totale

Cifra de afaceri reprezintă suma totală a veniturilor din operațiunile comerciale realizate de firmă, vânzarea de mărfuri și produse, într-o perioadă de timp determinată.

Cifra de afaceri este un indicator important pentru stabilirea locului intreprinderii pe piață și în cadrul sectorului de activitate, dar și pentru stabilirea strategiei de dezvoltare a societății respective.

Figura 1.2.1 Evoluția cifrei de afaceri

Conform graficului 1.2, observăm că cifra de afaceri a cunoscut o creștere aproape constantă până în anul 2011, după care a urmat o perioada de declin până la sfârșitul

perioadei studiate, în 2012.

În perioada 2009-2012 avem o cifră medie de afaceri de 148208,5 RON, cea mai mare valoare a cifrei de afaceri fiind în anul 2011 (176614 RON), iar cea mai mica valoare a cifrei de afaceri fiind în anul 2012 (121320 RON).

Analiza cheltuielilor totale

Mobilul activității economice este profitul, fiind considerat cea de-a patra formă de venit. Profitul se definește ca fiind câștigul realizat în formă bănească dintr-o activitate, acțiune sau operație economică și se determină ca fiind diferența între venituri și cheltuieli.

Figura 1.2.2 Evoluția cheltuielilor totale

Analizând graficul cheltuielilor totale, observăm o ușoară scădere a profitului în perioada 2009-2010, în 2011 profitul atingând cea mai mică valoare (8523 RON), iar în 2012 profitul crescuse până la 15382 RON.

Valoarea mediului a profitului pe perioada înregistrată este de 14982 RON.

Analiza pierderilor totale

Figura 1.2.3 Evoluția pierderilor totale

Urmărind graficul, observăm o creștere a pierderilor totale în perioada 2009-2011,

urmată de o scădere a acestora în ultimul an studiat.

Analiza numărului total de angajați

Figura 1.2.4 Evoluția numărului de angajați

În ciuda scăderii treptate a profitului, numărul de angajați a crescut de la 10 angajați în perioada 2009-2010 la 12 angajați în perioada 2011-2012.

1.3 Studiul sistemului de conducere

Societatea INSTASUPPORT are un sistem de conducere structurat relativ simplu, la conducerea societății aflându-se administratorul firmei. Acesta deține cea mai importantă funcție și are rolul de a asigura o funcționare cât mai eficientă a firmei. Câteva dintre atribuțiunile administratorului ar fi :

Stabilește obiectivele generale de dezvoltare ale firmei, în concordanță cu strategia propusa;

Intocmeste bugetul și rectificările acestuia;

Identifică oportunități de extindere a numarului de clienti;

Reprezintă firma în relațiile protocolare cu furnizorii, clienții strategici;

Asigură managementul firmei;

Verifică și semnează orice documente care sunt emise de societate

Observăm structura societății conform figurii 1.3.1:

Figura 1.3.1 Organigrama sistemului de conducere

1.4 Studiul sistemului condus

Sistemul condus al societății economice este alcătuit doar din departamentul tehnic.

Directorul tehnic răspunde de coordonarea și buna funcționare a departamentului tehnic care îi este subordonat și urmăreste activitatea personalului din departamentul tehnic.

Personalul din departamentul tehnic se ocupa cu prestarea serviciilor firmei.

1.5 Studiul sistemului informațional

1.5.1 Schema fluxului informațional aferent temei

Prin flux informațional se ințelege circuitul informațiilor între mai multe entități organizaționale sau chiar în interiorul aceleiași organizații.

Figura 1.5.1.1 Fluxul informațional

1.5.2 Descrierea circuitului informațional aferent temei

Circuitul informațional reprezintă calea pe care circulă o informație de la creere până la încetarea existenței sale.

În cadrul societății S.C. INSTASUPPORT S.R.L., circuitul informațional se poate descrie astfel:

Un client nou sau deja înregistrat intra în contact cu un angajat din departamentul tehnic prin telefon sau prin e-mail. Angajatul îi oferă suportul de care are nevoie clientul, găsește o soluție pentru problema acestuia și îl ajuta sa o rezolve. După ce problema clientului a fost rezolvată, angajatul respectiv raportează în sistem statusul solicitării clientului urmând a fi verificată de directorul tehnic ce are în subordine departamentul tehnic.

Fig. 1.5.2.1 Schema circuitului informațional

1.5.3 Documente utilizate

Contractul – un document încheiat în comun acord între două părți, prin care se definește perioada de valabilitate a contractului, scopul, condiții și clauze ale acestuia;

Factura este un document contabil emis de o companie (furnizorul), către o altă companie sau persoană (clientul), document ce conține lista cu produsele vândute sau serviciile prestate clientului de către furnizor. O factură mai conține datele de identificare fiscală a clientului (emitentul), datele furnizorului (persoana fizică sau juridică), cota de TVA, precum și prețul, cantitatea și valoarea fiecărui produs vândut.

Fig. 1.5.3.1 Model de factura

Fișa postului reprezintă anexa la contractul individual de muncă al unui salariat în care sunt cuprinse competențele, responsabilitățile, atribuțiile și sarcinile de serviciu proprii funcției pe care o deține salariatul.

Fig. 1.5.3.2 Fișa postului

1.5.4 Analiza critică a sistemului actual și identificarea neajunsurilor existente

Sistemul actual ce facilitează comunicarea dintre angajații firmei în vederea îmbunătățirii serviciilor oferite clienților prin rezolvarea mai eficientă și mai rapidă a problemelor este ineficient. Comunicarea dintre angajații firmei, la momentul actual, se poate face prin telefon, e-mail sau prin intermediul programelor de mesagerie.

Toate aceste căi de comunicare dintre angajați în vederea soluționării mai rapide a unei probleme sunt ineficiente deoarece, față de un program de comunicare între angajați special realizat pentru a facilita acest lucru, durează prea mult ca informația să ajungă la toți angajații din cadrul departamentului tehnic.

De asemenea, pentru a putea îmbunătăți calitatea convorbirilor cu clienții, angajații din cadrul departamentului tehnic au nevoie de echipamente audio de intrare și ieșire (căsti, microfoane) mai performante, pentru o claritate cât mai bună a convorbirilor.

1.5.5 Direcții de perfecționare a sistemului actual

Deoarece principalul serviciu oferit clienților, și anume suportul tehnic, fie el prin e-mail sau prin convorbire telefonică, trebuie să se desfășoare în condiții de lucru cât mai optime, recomand ca echipamentele firmei să fie cât mai performante, în special echipamentele audio precum căștile și microfoanele. Nu trebuiesc neglijate nici stațiile de lucru, deoarece cu cât sunt mai performante calculatoarele din departamentul tehnic, cu atât le va fi mai ușurată munca si vor putea ajuta mai rapid clienții.

Capitolul 2. Tehnologii informatice utilizate

2.1. Notiuni generale despre programare si limbaje de programare.

Programarea informatică este o activitate informatică de elaborare a produselor-program, a programelor (software) necesare activităților realizate cu ajutorul calculatorului. Programarea informatică conține următoarele subactivități: specificarea, proiectarea, implementarea, documentarea și întreținerea produsule facilitează comunicarea dintre angajații firmei în vederea îmbunătățirii serviciilor oferite clienților prin rezolvarea mai eficientă și mai rapidă a problemelor este ineficient. Comunicarea dintre angajații firmei, la momentul actual, se poate face prin telefon, e-mail sau prin intermediul programelor de mesagerie.

Toate aceste căi de comunicare dintre angajați în vederea soluționării mai rapide a unei probleme sunt ineficiente deoarece, față de un program de comunicare între angajați special realizat pentru a facilita acest lucru, durează prea mult ca informația să ajungă la toți angajații din cadrul departamentului tehnic.

De asemenea, pentru a putea îmbunătăți calitatea convorbirilor cu clienții, angajații din cadrul departamentului tehnic au nevoie de echipamente audio de intrare și ieșire (căsti, microfoane) mai performante, pentru o claritate cât mai bună a convorbirilor.

1.5.5 Direcții de perfecționare a sistemului actual

Deoarece principalul serviciu oferit clienților, și anume suportul tehnic, fie el prin e-mail sau prin convorbire telefonică, trebuie să se desfășoare în condiții de lucru cât mai optime, recomand ca echipamentele firmei să fie cât mai performante, în special echipamentele audio precum căștile și microfoanele. Nu trebuiesc neglijate nici stațiile de lucru, deoarece cu cât sunt mai performante calculatoarele din departamentul tehnic, cu atât le va fi mai ușurată munca si vor putea ajuta mai rapid clienții.

Capitolul 2. Tehnologii informatice utilizate

2.1. Notiuni generale despre programare si limbaje de programare.

Programarea informatică este o activitate informatică de elaborare a produselor-program, a programelor (software) necesare activităților realizate cu ajutorul calculatorului. Programarea informatică conține următoarele subactivități: specificarea, proiectarea, implementarea, documentarea și întreținerea produsului program.

Un limbaj de programare este un set bine definit de expresii și reguli (sau tehnici) valide de formulare a instrucțiunilor pentru un computer. Un limbaj de programare are definite un set de reguli sintactice și semantice. El dă posibilitatea programatorului să specifice în mod exact și amănunțit acțiunile pe care trebuie să le execute calculatorul, în ce ordine și cu ce date.

Categoriile limbajelor de programare:

După paradigma programării

limbaje ezoterice, ex. Brainfuck

limbaje procedurale; ex. C, Java, Perl

limbaje functionale: ex. ML, Haskell

limbaje pentru programarea logică ex. Prolog, DATALOG

limbaje mixte: ex. LISP – oferă un amestec heteroclit și netipizat de programare imperativă și programare functională

După nivelul de abstractizare

limbaje de generația întâia: limbajele cod-mașină (limbaje mașină)

limbaje de generația a doua: limbajele de asamblare

limbaje de generația a treia: limbaje de nivel înalt, cum ar fi C-ul (și toate derivatele sale: C++, Java, …), Pascal, Fortran

limbaje de generația a patra: limbajele neprocedurale, orientate pe rezolvarea unei anumite clase de probleme: SQL

limbaje de generația a cincea: limbaje utilizate în domenii precum logica fuzzy, inteligența artificială sau și rețelele neuronale: Prolog, LISP

Dupa vechime

Limbaje din secolul trecut; ex. LISP și FORTRAN din anii '50

Limbaje din ultimul deceniu; ex. Haskell, Ruby, Brainfuck

Pentru executarea unui program scris într-un limbaj oarecare, există, în principiu, două abordări: compilare sau interpretare. La compilare, compilatorul transformă programul-sursă în totalitatea sa într-un program echivalent scris în limbaj mașină, care apoi este executat. La interpretare, interpretorul ia prima instrucțiune din programul-sursă, o transformă în limbaj mașină și o execută; apoi trece la instrucțiunea doua și repetă aceleași acțiuni ș.a.m.d.

Unele limbaje se pretează bine la compilare; de exemplu limbajele clasice: Pascal, Fortran, C. Altele sunt cu predilecție interpretate, de ex. BASIC, PHP, SQL. Multe limbaje moderne combină compilarea cu interpretarea: codul sursă este compilat într-un limbaj binar numit bytecode, care la rulare este interpretat de către o mașină virtuală. De remarcat faptul că unele interpretoare de limbaje pot folosi compilatoare așa-numite just-in-time, care transformă codul în limbaj mașină chiar înaintea executări

Lista de limbaje de programare:

Limbaje generale:

Limbaje care pot fi folosite (cel puțin teoretic) la rezolvarea oricărui tip de probleme:

TEO (Basic)

Alen (variantă modificată a limbajului TEO)

BASIC (QuickBasic, GW-BASIC, Visual Basic)

C

C++

C#

Clips

Cobol

Fortran

Haskell

Java

JavaScript

LISP

Pascal (și ObjectPascal, folosit de Borland Delphi)

PHP

Prolog

Python

Ruby

Scriptol

Tcl/TK

XHTML

MATLAB

Borland Delphi

Algol

Simula

Limbaje specifice:

Limbaje cu un scop bine definit – de obicei interacționează cu un anume program sau sistem.

ActionScript – limbajul de scripting folosit de Macromedia Flash

ASP (și ASP.NET) – pentru scripting web

FoxPro (FoxPro, Visual FoxPro)

MIVA SCRIPT

SQL – pentru interacțiunea cu bazele de date relaționale

2.2. Noțiuni generale despre limbajul de programare Java

Java este un limbaj de programare orientat-obiect, puternic tipizat, conceput de către James Gosling la Sun Microsystems (acum filială Oracle) la începutul anilor ʼ90, fiind lansat în 1995. Cele mai multe aplicatii distribuite sunt scrise in Java, iar noile evolutii tehnologice permit utilizarea sa si pe dispozitive mobile gen telefon, agenda electronica, palmtop etc. In felul acesta se creeaza o platforma unica, la nivelul programatorului, deasupra unui mediu eterogen extrem de diversificat. Acesta este utilizat in prezent cu succes si pentru programarea aplicatiilor destinate intranet-urilor.

Limbajul împrumută o mare parte din sintaxă de la C și C++, dar are un model al obiectelor mai simplu și prezintă mai puține facilități de nivel jos. Un program Java compilat, corect scris, poate fi rulat fără modificări pe orice platformă care e instalată o mașină virtuală Java (engleză Java Virtual Machine, prescurtat JVM). Acest nivel de portabilitate (inexistent pentru limbaje mai vechi cum ar fi C) este posibil deoarece sursele Java sunt compilate într-un format standard numit cod de octeți (engleză byte-code) care este intermediar între codul mașină (dependent de tipul calculatorului) și codul sursă.

Mașina virtuală Java este mediul în care se execută programele Java. În prezent, există mai mulți furnizori de JVM, printre care Sun, IBM, Bea, Oracle, FSF. În 2006, Sun a anunțat că face disponibilă varianta sa de JVM ca open-source.

Există 3 platforme Java furnizate de Sun Microsystems:

Java Platform, Micro Edition (Java ME) — pentru hardware cu resurse limitate, gen PDA sau telefoane mobile,

Java Platform, Standard Edition (Java SE) — pentru sisteme gen workstation, este ceea ce se gaseste pe PC-uri,

Java Platform, Enterprise Edition (Java EE) — pentru sisteme de calcul mari, eventual distribuite.

Evoluția limbajului JAVA

In 1991, firma SUN, mergând pe directia dezvoltarii sistemelor deschise de lucru în retea, a creat un proiect de lucru numit Green, care avea drept scop punerea la punct a unor procesoare care să poata rula pe diferite tipuri de aparate si punerea la punct a unui sistem care să poată rula pe platforme diferite. Planul inițial prevedea dezvoltarea proiectului în C++, dar au apărut foarte multe probleme în încercarea de dezvoltare a compilatorului de C++. Ca urmare, James Gosling, membru al grupului Green, a început să lucreze la dezvoltarea unui nou limbaj, numit Oak, care, mai târziu, avea să se numeasca Java. De asemenea grupul Green avea să-și schimbe numele întâi în FirstPerson, apoi în JavaSoft.

Abia dupa ce a fost înființată compania Netscape Communications Corporation, cei de la JavaSoft s-au orientat către Internet si Web, mediul multiplatformă distribuit al rețelei Internet fiind perfect pentru testarea proiectului.

In prezent licența pentru tehnologia Java a fost acordata unor firme precum IBM, Microsoft, Sillicon Graphics, Adobe si Netscape.

Istoricul versiunilor Java:

23 ianuarie 1996, JDK 1.0 – versiunea inițială

19 februarie 1997, JDK 1.1

8 decembrie 1998, J2SE 1.2

8 mai 2000, J2SE 1.3

6 februarie 2002, J2SE 1.4

30 septembrie 2004, J2SE 5.0, numărul de versiune 1.5 este păstrat ca număr intern de versiune

11 decembrie 2006, Java SE 6

14 februarie 2012, Java SE 7

Caracteristicile de bază al limbajului Java

A. Folosirea în medii de rețea distribuite

Java a fost proiectat pentru un mediu complex cum este Internetul și de aceea trebuie să poata rula pe platforme eterogene distribuite. Acest lucru este posibil deoarece:

este neutru din punct de vedere arhiectural = programele pot fi rulate pe orice platformă care are instalat mediul Java

are un grad ridicat de portabilitate = conține obictecte care pot fi folosite pe platforme eterogene si respectă standardele IEEE (Institue of Electrical and Electronics Engineers) pentru structurile de date (folosirea întregilor, a numerelor în virgula mobila, a șirurilor, etc)

este distribuit = poate folosi atât obiecte memorate local cât și obiecte stocate pe calculatoare aflate la distanță

este compatibil cu mediile de lucru în rețea (poate fi utilizat în rețele complexe) și acceptă direct protocoalele de rețea obisnuite cum ar fi FTP si HTTP

B. Asigurarea performanței ridicate

compilatorul și sistemul de execuție ofera o viteza ridicată rulării programelor

are încorporate posibilități de execuție multifilara (rularea simultana a mai multor procese) folosind un sistem de acordare de priorități proceselor ce trebuie executate. Printre procesele care ruleaza în fundal sunt cele de "colectare a gunoiului" și de gestionare a memoriei.

C. Refolosirea codului si fiabilitatea

Java este un limbaj dinamic, lucru asigurat prin întârzierea legării obiectelor si legarea dinamica a claselor în timpul execuției, ceea ce împiedica apariția erorilor în cazul schimbarii mediului de lucru după compilarea programului sursă.

Fiabilitatea este asigurată prin eliminarea pointerilor, prin folosirea verificării dinamice a limitelor si prin gestionarea automată a memoriei,

înlăturându-se posibilitatea fisurilor si violărilor de memorie. O altă cale de evitare a erorilor este verificarea structurilor de date atât la compilare cât si în timpul execuției.

D. Asigurarea securității

Interzice accesul la stiva sistemului, la zona liberă de memorie si la secțiunile protejate de memorie

Verifica validitatea codului semnalând urmatoarele:

     Violările de acces

     Conversiile ilegale de date

    Valori si parametri incorecți

     Modificarea claselor sau folosirea incorectă a acestora

     Depășirea stivei în partea superioară sau inferioară

     Activități suspecte sau neautorizate

Structura limbajului Java

Aplicații si miniaplicații

miniaplicație (applet) = program Java creat pentru a fi folosit în sistemul WWW. Applet-urile necesită un program de vizualizare extern – browser Web sau un program specializat de vizualizare (applet viewer).

aplicatie (app) = program Java care poate fi rulat independent

2.3 Elemente Java folosite în dezvoltarea aplicației

2.3.1 Fire de execuție (Java threads)

Un fir de execuție este o succesiune secvențială de instrucțiuni care se execută în cadrul unui proces.

Firele de execuție fac trecerea de la programarea secvențială la programarea concurentă. Un program secvențial reprezintă modelul clasic de program – are un început, o secvență de execuție a instrucțiunilor sale și un sfârșit. Altfel spus, programul are un singur punct

de execuție. Un program aflat în execuție se numește proces.

Un fir de execuție este similar unui proces secvențial în sensul că are un început, o secvență de execuție și un sfârșit. Diferența dintre un fir de execuție și un proces constă în faptul că un fir de execuție nu poate rula independent ci trebuie să ruleze în cadrul unui proces.

Ca orice alt obiect Java, un fir de execuție este o instanță a unei clase. Firele de execuție definite de o clasă vor avea același cod și prin urmare aceeași secvență de instrucțiuni.

Crearea unei clase care să definească fire de execuție poate fi făcută prin două modalități:

1. Prin extinderea clasei Thread

2. Prin implementarea interfeței Runnable

Orice clasă ale cărei instanțe vor fi executate într-un fir de execuție trebuie declarată ca fiind Runnable. Aceasta este o interfață care conține o singura metodă, și anume run.

Așadar, orice clasă ce descrie fire de execuție va conține o metodă run în care este implementat codul ce va fi executat de firul de execuție.

2.3.2 Socketuri Java

Combinația dintre adresa IP și numărul de port este întrebuințată pentru crearea unui termen abstract, numit socket. Acesta se mai numește si canal de comunicație sau conexiune.

Un client caută serverul, stabilește o conexiune prin care informația poate fi trimisă iar la final se va deconecta, lasând liber socketul pentru o utilizare ulterioară.

Un socket furnizează facilități pentru crearea de fluxuri de intrare și ieșire, care permit datelor să fie schimbate între client și server.

Atunci când se stabilește o conexiune, atât clientul cât și serverul vor avea câte un socket. Comunicarea efectiva se va realiza între socketuri.

2.3.3 Interfețe grafice cu ajutorul Java.Swing

Interfețele grafice (Graphical User Interfaces) reprezintă ferestre ce conțin elemente grafice ce permit interacțiunea dintre aplicație și utilizator. Limbajul java pune la dispoziția programatorului două biblioteci pentru realizarea interfețelor grafice: java.awt și java.swing.

Fig. 2.3.3.1 Ierarhia claselor Swing

În figura 2.3.3.1 este prezentată ierarhia claselor folosite pentru construirea de interfețe grafice în limbajul Java.

Suprafețe de afișare

Crearea obiectelor grafice nu realizează automat si afișarea lor pe ecran. Mai întâi ele trebuie așezate pe o suprafață, care poate fi o fereastra sau suprafața unui applet, si vor deveni vizibile în momentul în care suprafața pe care sunt afișate va fi vizibilă.  O astfel de suprafață pe care se așează obiectele grafice se numește suprafață de afișare sau 

container si reprezintă o instanța a unei clase obținută prin extensia superclasei JContainer.

Swing este un subset JFC (Java Foundation Classes) și constă dintr-o serie de componente vizuale care extind (îmbunătățesc) componentele AWT și furnizează noi facilități precum tabele și arbori. Structura de clase din Swing este asemănătoare cu cea din AWT, în sensul că toate componentele interfeței grafice sunt derivate dintr-un singur părinte numit JComponent (care este derivat din clasa AWT Container).

Pachetul de clase Swing reprezintă soluția furnizată de Sun pentru crearea unor interfețe utilizator grafice complet portabile pe orice platformă.

În Swing, toate numele claselor încep cu litera J, și atunci când este posibil, numele este același cu cel al clasei AWT pe care o înlocuiește.

2.4 Medii de dezvoltare integrate.

Un mediu de dezvoltare (engl. software development environment, sau integrated development environment – mediu integrat de dezvoltare) este un set de programe care ajută programatorul în scrierea programelor. Un mediu de dezvoltare combină toți pașii necesari creării unui program (ex.: editarea codului sursă, compilarea, depanarea, testarea, generarea de documentație) într-un singur soft, care, de regulă, oferă o interfață cu utilizatorul grafică, prietenoasă.

Principalele componente ale unui mediu de dezvoltare sunt editorul de cod sursă și depanatorul. Mediile de dezvoltare apelează compilatoare, sau interpretoare, care pot veni în același pachet cu mediul însuși, sau pot fi instalate separat de către programator.

Printre facilitățile prezente în mediile de dezvoltare mai sofisticate se numără: exploratoare de cod sursă, sisteme de control al versiunilor, designere de interfețe grafice, sau unelte de ingineria programării (ex. generarea de diagrame UML).

De obicei un mediu de dezvoltare este specific unui anumit limbaj de programare, însă există la ora actuală și medii de dezvoltare care pot lucra cu mai multe limbaje, de exemplu Eclipse sau Microsoft Visual Studio.

Pentru Java sunt folosite următoarele:

Jcreator – gratuit

Eclipse – gratuit

NetBeans – gratuit

BEA Workshop – gratuit

BlueJ – gratuit

Codeguide – comercial

DrJava – gratuit

Jbuilder – comercial

Jdeveloper – comercial, platformă multiplă

Kdevelop – gratuit (platformă GNU/Linux, Cygwin)

2.5 Java: Un limbaj compilat și interpretat

In funcție de modul de execuție a aplicațiilor, limbajele de programare se împart in două categorii:

Interpretate: instrucțiunile sunt citite linie cu linie de un program numit interpretor și traduse in instructiuni mașină. Avantajul acestei soluții este simplitatea și faptul că fiind interpretată direct sursa programului obținem portabilitatea. Dezavantajul evident este viteza de execuție redusă. Probabil cel mai cunoscut limbaj interpretat este limbajul Basic.

Compilate: codul sursă al programelor este transformat de compilator într-un cod ce poate fi executat direct de procesor, numit cod mașină. Avantajul este execuția extrem de rapidă, dezavantajul fiind lipsa portabilității, codul compilat într-un format de nivel scăzut nu poate fi rulat decât pe platforma de lucru pe care a fost compilat.

Limbajul Java combină soluțiile amintite mai sus, programele Java fiind atât interpretate cât și compilate. Așadar vom avea la dispoziție un compilator responsabil cu transformarea surselor programului în așa numitul cod de octeți, precum și un interpretor ce va executa respectivul cod de octeți.

Codul de octeți este diferit de codul mașină. Codul mașină este reprezentat de o succesiune de 0 si 1; codurile de octeți sunt seturi de instrucțiuni care seamană cu codul scris în limbaj de asamblare. Codul mașină este executat direct de către procesor și poate fi folosit numai pe platforma pe care a fost creat; codul de octeți este interpretat de mediul Java și de aceea poate fi rulat pe orice platformă care foloseste mediul de execuție Java.

Pentru ca un cod de octeți să poată fi executat pe un anumit calculator, pe acesta trebuie să fie instalată o masina virtuala Java. Prin masina virtuala Java (JVM) vom intelege mediul de executie al aplicatiilor Java.

Mașina Virtuală Java reprezintă un calculator abstract. Ca și calculatoarele reale, aceasta dispune de un set de instrucțiuni, un set de regiștri și utilizează diferite zone de memorie.

Partea dificilă a creării codului binar Java este compilarea codului sursă pentru o mașina care nu există fizic. Această mașina este numita mașina virtuala Java deoarece există doar în memorie. Apoi, interpretorul Java traduce instrucțiunile cod-mașină Java în mulțimi de instrucțiuni care pot fi înțelese de mașina reală (fizică).

Cele mai importante părți ale unei astfel de mașini care necesită simularea unui calculator real sunt :

– o mulțime de regiștri;

– o stivă;

– un mediu de execuție

– un ansamblu pentru eliberarea memoriei;

– o tabelă (engl. pool) de literali constanți;

– un spațiu de memorie a unei metode;

– o mulțime de instrucțiuni;

Capitolul 3. Proiectarea de detaliu a aplicației informatice

3.1 Definirea obiectivelor aplicației informatice

Acest document reprezintă evaluarea arhitecturii sistemului necesară creării și implementării aplicației de mesagerie.

3.1.1 Tehnologii utilizate

Limbajul de programare:

Java este un limbaj de programare modern, orientat pe obiecte.

Avantaje ale limbajului de programare:

Este independent din punct de vedere al unei platforme.

Orientat pe obiecte.

Execuție multifilară

Pentru acest proiect vom folosi socketuri TCP/IP pentru comunicările server-client si client-client și va fi dezvoltată o interfață grafică (GUI) cât mai ușor de folosit. Pentru acest lucru, vom folosi clasele deja existente ale limbajului de programare Java.

Pachetul Java.net al limbajului Java oferă o clasă numită Socket, ce implementează o parte dintr-o conexiune cu două sensuri dintre un program Java și alt program aflat în rețea.

Pentru interfața grafică voi folosi java.awt, java.swing dar și alte pachete ce vor implementa obiectele grafice necesare.

Alte pachete folosite: java.util, java.io.File/Reader/Writer, java.Thread

Dezvoltarea aplicației într-un mediu de dezvoltare specific Java

Atât Eclipse cât și NetBeans sunt excelente medii de dezvoltare pentru programarea în Java, sunt gratuite, însă NetBeans este mai user-friendly, astfel că interfața grafică, partea de client și partea de server le voi dezvolta folosind NetBeans 7.1.1.

3.1.2 Privire de ansamblu asupra modelului

Fig. 3.2.1 Diagrama secvenței de transfer a unui fișier

3.2 Schema de sistem a aplicației

Diagrama UML

Unified Modeling Language (prescurtat UML) este un limbaj standard pentru descrierea de modele și specificații pentru software. Limbajul a fost creat de către consorțiul Object Management Group (OMG) care a mai produs printre altele și limbajul de programare CORBA. UML a fost la bază dezvoltat pentru reprezentarea complexității programelor orientate pe obiect, al căror fundament este structurarea programelor pe clase, și instanțele acestora (numite și obiecte). Cu toate acestea, datorită eficienței și clarității în reprezentarea unor elemente abstracte, UML este utilizat dincolo de domeniul IT. Așa se face că există aplicații ale UML-ului pentru management de proiecte, pentru business Process Design etc.

Diagrama secvenței de transfer a unui fișier

Fig. 3.2.2 Diagrama secvenței de LogIn

Diagrama secvenței de LogIn

Fig. 3.2.2 Diagrama secvenței de LogIn

Diagrama secvenței de LogOff

Fig. 3.2.3 Diagrama secvenței de LogOff

Diagrama secvenței de căutare a unui fișier

Fig. 3.2.4 Diagarma secvenței de căutare a unui fișier

Diagrama secvenței de afișare a fișierelor unui user

Fig. 3.2.5 Diagrama secvenței de afișare a fișierelor unui user

Diagrama UML a aplicației

Fig. 3.2.6 Diagrama UML a aplicației

3.3 Clasele principale ale aplicatiei

Fiecare clasă conține metodele și atributele proprii, ce alcătuiesc o clasă funcțională. Metodele și atributele private și auxiliare vor fi omise din descriere iar atributele inițializate pot suferi modificări.

Mai jos urmează o scurtă descriere a claselor, rolul acestora și felul implementării lor.

Interfața grafică a clientului: Afișează o interfață grafică pentru o utilizare mai ușoară, afișează informații despre starea curentă a sistemului și reîmprospătează informația de la server. Comunicarea cu restul clienților cu ajutorul serverului va fi realizată prin rularea unui thread din cadrul interfeței grafice.

3.3.1 Clasa LogIn

Clasa LogIn reprezintă implementarea funcțională unei ferestre de tip pop-up, ce apare atunci când programul este inițializat de un client.

LogIn-ul trebuie să trimită o cerere de autentificare către server printr-un mesaj de autentificare.

LogIn-ul va avea event listeners pentru mouse si tastatură.

3.3.2 Clasa Mesaje

Implementează un mesaj standard în sistem. Aceeași clasă va fi folosită pentru comunicarea client-server sau client-client.

Notă : Atributele pot fi adăugate sau șterse din această clasă în momentul implementării din cauza problemelor ce pot apărea în timpul optimizării.

3.3.3 Clasa Client

Un obiect de tip client va face parte din programul principal și va rula simultan într-un thread. Clientul va avea alocat un numar de port pentru comunicarea client-client, numărul portului serverului pentru comunicarea client-server și un queue pentru primirea cererilor altor useri.

Clientul va avea o buclă principală pentru a asculta cererile, va folosi socketuri TCP/IP și va avea comunicări multiplexate.

Clientul va putea controla trimiterea de fișiere.

3.3.4 Clasa Fereastra Principală (Main Window)

Fereastra Principală a aplicației va fi implementată în conformitate cu specificațiile tehnice necesare sistemului.

Fereastra Principală va avea event listeners pentru mouse și tastatură.

3.3.5 Clasa Server

Serverul comunică cu clienții prin mesaje.

La fel ca în cazul clasei Client, serverul va avea o buclă principală ce ascultă cererile, va folosi socketuri TCP/IP și va avea comunicare multiplexată.

Serverul va avea de asemenea o listă de utilizatori și parolele acestora. Acestea vor exista într-un document situat în același folder ca și aplicația.

3.4 Secvențe de testare ale aplicației

Testarea ar trebui făcuta ținând cont de diferitele posibile utilizări ale sistemului. Trebuie testate atât folosirea corectă a sistemului cât și o folosire incorectă a acestuia.

Testări suplimentare trebuiesc făcute pentru utilizări improbabile, cum ar defecțiuni aleatoare cauzate de client sau opriri neanunțate ale serverului

Scenarii de test

Testul 1: Log-in

Serverul este online, interfața grafică a clientului este pornită, fereastra de pop-up pentru log-in apare și se trimit datele de log-in (username și parolă).

Rezultatul dorit: Serverul recunoaște userul, îl adaugă în lista de useri aflați online și retrimite lista tuturor celorlalți clienți (actualizarea listei). Dispare fereastra de pop-up de pe ecranul userului, bara de status îl indică ca fiind online și se populează lista de useri online. Ceilalți utilizatori din sistem vor primi noua listă de utilizatori de la server după ce aceasta se reactualizează.

Testul 2: Log-off

Utilizatorul face click pe butonul de log-off.

Rezultatul dorit: Serverul primește cererea de log-off, retrimite noua listă de utilizatori online către restul utilizatorilor conectați încă la server. Utilizatorului delogat îi sunt oprite transferurile de fișiere (dacă erau în curs de trimitere / primire), iar bara de status a acestuia indică acum că este offline.

Testul 3: Trimiterea unui fișier

Utilizatorul va selecta un fișier din computer pe care să îl trimită altui utilizator online.

Rezultatul dorit: Serverul va trimite port-ul de ascultare al clientului astfel încât o conexiune peer-to-peer va fi realizată între clienți. Clientul este responsabil cu trimiterea fișierului iar interfața grafică va afișa statusul transferului fișierului în procente (%)

Testul 4: Primirea unui fișier

Utilizatorul va accepta transferul unui fișier de la un alt utilizator online

Rezultatul dorit: Serverul va creea o conexiune peer-to-peer între utilizatorul ce trimite și cel ce primește fișierul. Clientul este responsabil cu trimiterea fișierului iar interfața grafică va afișa statusul transferului fișierului în procente (%).

Testul 5: Căutarea în fișierele unui utilizator

Utilizatorul va scrie denumirea fișierului în căsuța de search și va face clic pe butonul de search

Rezultatul dorit: În urma căutarii printre fișierele unui utilizator, va fi afișată o lista cu fișierele ce conțin numele introdus în căsuța de căutare

Testul 6: Adăugarea unui fișier în lista de share

Utilizatorul va face clic pe butonul de share

Rezultatul dorit: Se va deschide o fereastră de tip pop-up cu funcție de căutare, iar în aceasta utilizatorul va selecta fișierul dorit urmând ca respectivul fișier să fie adăugat în lista de fișiere share-uite

Testul 7: Vizualizarea fișierelor share-uite ale unui utilizator

Un utilizator online va face clic pe un alt utilizator online din listă, cerând astfel automat sistemului să afișeze cu o listă cu fișierele share-uite ale acelui utilizator

Rezultatul dorit: Va fi afișată o listă cu fișierele share-uite ale utilizatorului respectiv

3.5 Proiectarea interfeței aplicației

Interfața grafică cu utilizatorul (GUI – Graphical User Interface) este un termen cu înțeles larg care se referă la toate tipurile de comunicare vizuală dintre un program și

utilizatorii săi.

Biblioteca de clase din cadrul limbajului Java care oferă servicii grafice se numește java.awt, AWT fiind prescurtarea de la Abstract Window Toolkit și este pachetul care care a avut de suferit cele mai multe modificări în trecerea de la o versiune JDK la alta. 

În principiu, crearea unei aplicatii grafice presupune urmatoarele lucruri:

Crearea unei suprafețe de afișare (o fereastră) pe care vor fi așezate obiectele grafice care servesc la comunicarea cu utilizatorul (butoane, controale de editare, texte, etc);

Crearea și așezarea obiectelor grafice pe suprafața de afișare în pozițiile corespunzatoare;

Definirea unor acțiuni care trebuie să se execute în momentul în care utilizatorul interacționează cu obiectele grafice ale aplicației;

"Ascultarea" evenimentelor generate de obiecte în momentul interacțiunii cu utilizatorul și executarea acțiunilor corespunzătoare așa cum au fost ele definite.

Deoarece interfața grafică este singurul mod prin care un utilizator poate folosi o aplicație informatică, am ales un design cât mai simplist si mai ușor de utilizat, făcând mai ușoară interacționarea utilizatorilor cu aceasta.

Fereastra principală:

Fig. 3.5.1 Fereastra principală a aplicației

În fereastra principală se regăsesc toate comenzile și acțiunile ce pot fi folosite de un utilizator al aplicației. De asemenea, tot in fereastra principală a aplicației sunt afișate si date despre starea curentă a sistemului, cum ar fi numărul de useri aflați online, numărul de fișiere uploadate, etc.

Tot în fereastra principală avem si căsuța de login, în care utilizatorul va introduce datele personale în vederea conectării la server și folosirii aplicației.

Fig. 3.5.2 Fereastra principală cu datele utilizatorului

În urma realizării conexiunii utilizatorului cu serverul, fereastra principala se va reactualiza, afișând utilizatorii online, fișierele uploadate pe server, date despre fișiere, etc.

În momentul în care utilizatorul va face clic pe unul dintre userii online, el va putea să vadă fișierele utilizatorului respectiv și după caz, să le descarce. Datele despre procesul de descărcare vor fi afișate in partea de jos a ferestrei principale.

Fig. 3.5.3 Procesul de download în fereastra principală

3.6 Proiectarea bazei de date

Programul Microsoft Access 2010

Baza de date a sistemului va fi realizată folosind programul Microsoft Access, ediția 2010. Microsoft Access este un program folosit pentru crearea și administrarea unei baze de date relaționale, produs de Microsoft, care face parte din suita Microsoft Office.

Conceptul original de Access a fost pentru utilizatorii finali să poată să "acceseze" date din orice sursă.

Alte caracteristici includ: importul și exportul de date de mai multe formate, cum ar fi Excel , Outlook , ASCII , dBase , Paradox , FoxPro , SQL Server , Oracle , ODBC , etc. De asemenea, Access are și posibilitatea de a folosi baze de date externe, neînglobate, în formatele: Microsoft Excel, Liste SharePoint, text, XML, Microsoft Outlook, HTML, Outlook dBase,Paradox, Lotus 1-2-3, Oracle, MySQL, etc.

Schema conceptuala a bazei de date

Fig. 3.5.1 Diagrama entitate-asociere

După cum se poate observa și in figura de mai sus, baza de date este alcătuita din 6 tabele:

Angajați

Clienți

Documente

Departamente

Echipamente

Servicii

Identificarea atributelor tabelelor

Tabela Angajați

Tabela Clienți

Tabela Departamente

Tabela Documente

Tabela Echipamente

Tabela Servicii

Identificarea cheilor primare

Rapoarte

Raportul „Clienți” îi da utilizatorului posibilitatea de a vedea toți clienții actuali ai firmei

Fig. 3.5.2 Raportul clienților

Raportul „Servicii” îi dă utilizatorului posibilitatea de a vedea lista serviciilor oferite de firmă, ordonate crescător dupa codul serviciului.

Fig. 3.5.3 Raportul serviciilor

3.7 Propuneri de dotare cu echipamente IT și costuri aferente

Ținând cont de activitatea desfășurata de firmă, este esențial ca echipamentul deținut de firma pe care să fie cât mai performant în vederea soluționării mai rapide a cererilor și problemelor clienților, astfe încât aceștia vor fi cât mai satisfăcuți de serviciile oferite de firmă. În prezent, firma deține 9 puncte de lucru dotate cu sisteme PC + monitoare, având următoarele configurații:

Procesor Intel Pentium G630

HDD WesternDigital capacitate 500 GB

Memorie RAM 2 GB

Placă video integrată Intel HD Graphics

Placă de bază Gigabyte GA-H61M

Placă de rețea 100 mbps

Carcasa ATX Middle Tower

Monitor LED Samsung 21.5”

Pe viitor, se urmărește îmbunătațirea stațiilor de lucru, urmând a fi upgradate la următoarea posibilă configurație:

Procesor Intel i5 4670

HDD Seagate 1 TB

Memorie RAM 4 GB

Placă video integrată HD 4600

Placă de bază Gigabyte GA-B85M-D2V

Placă de rețea 1000 mpbs

Carcasă ATX Middle Tower

Costul unui sistem având aceste specificații se ridică la aproximativ 2000 RON, ceea ce înseamnă o investiție de aproximativ 18000 RON.

Capitolul 4. Prezentarea produsului software

4.1 Cerințele platformei hardware și software ale produsului program

Obiectivul:

Dezvoltarea unei aplicații de file-sharing ce permite utilizatorilor să transmită fișiere locale printr-o rețea de calculatoare.

Scopuri și funcții:

Un utilizator, la rularea aplicației, va fi capabil să se conecteze la un server ce permite trimiterea de fișiere altor utilizatori.

Va fi necesară o procedură de log-in, ce va cere utilizatorului un username și o parolă unice.

După procedura de login și conectarea la server, utilizatorul va primi de la server o listă cu utilizatorii conectați.

Va fi posibilă transmiterea de fișiere între utilizatorii conectați la server.

Va exista și o opțiune de log-off astfel încât serverul să știe de acest lucru, anunțând ceilalți utilizatori logați despre modificarea din lista de utilizatori activi.

Contextul software:

Orice utilizator va avea ca spațiu disponibil doar spațiul accesibil de pe sistemul propriu.

În cazul în care mai mulți utilizatori trimit același fișier, redundanța este asigurată. Dacă computerul unui utilizator întâmpina o problemă de orice natură și se închide, pierzând astfel conexiunea cu serverul, trimiterea fișierului va fi în continuare posibilă, preluându-l de la un utilizator ce deține fișierul respectiv.

Aplicația poate fi instalată pe orice sistem de operare, însa cel mai recomandat este folosirea ei pe Windows 7, Windows 8, Windows 8.1 sau Linux

Contextul hardware

Din punct de vedere al arhitecturii sistemului, acesta va fi alcătuit din computere ce sunt conectate la server prin interfața de client. Toate computerele trebuie să facă parte din aceeași rețea LAN.

Pentru o performanță cât mai ridicată și o securitate cât mai bună, serverul va rula pe un sistem dedicat (în acest caz, pe o mașină virtuală).

Computerele trebuie să aibe în permanență un minim de memorie disponibil pentru a putea permite aplicației să salveze informații despre statusul curent la momentul închiderii acesteia. Necesarul minim de memorie poate varia în funcție de numărul de utilizatori aflați

online și de numărul de fișiere trimise.

Un exemplu de configurare a unui sistem pe care aplicația ar rula fără probleme:

Procesor Intel i5 4670

HDD Seagate 1 TB

Memorie RAM 4 GB

Placă video integrată HD 4600

Placă de bază Gigabyte GA-B85M-D2V

Placă de rețea 1000 mpbs

Carcasă ATX Middle Tower

Cerințe non-funcționale

Cerințe pentru interfața grafică a utilizatorilor (GUI – Graphical User Interface)

Cerințe de performanță și siguranță

Sistemul trebuie să aibă un timp cât mai rapid de răspuns

Sistemul trebuie să fie sigur iar orice defecțiune cauzată de condiții externe (precum o cădere de curent) trebuie să fie prevenită astfel încât condiția optimă de rulare a sistemului să fie cât mai puțin afectată

Sistemul trebuie să aibe cel puțin un server și doi clienți

Numărul maxim de clienți depinde de arhitectura rețelei la care sunt conectați

Cerințe de administrare a sistemului

Administrarea sistemului se va realiza doar la nivel de server

Serverul va avea anumite comenzi administrative și setări interne

Setările serverului pot fi schimbate doar prin accesarea mașinii pe care rulează serverul

Cerințe pentru training-ul utilizatorilor

Documentație pentru interfața clientului va fi furnizată, cuprinzând toate funcțiile majore ale sistemului

Constrângeri majore:

Aplicația va fi dezvoltată sa ruleze pe Linux. Serverul este necesar să ruleze pe Linux din cauza preluării de IP si securitatii oferite de sistemul Linux.

Aplicația va depinde în totalitate de un server dedicat. Fără un server, aplicația practic este nefolosibilă, conexiunea dintre utilizatori făcându-se prin intermediul unui server care sa faca posibila coexistenta clientilor in acelasi mediu dedicat.

Utilizatorii sunt capabili să trimită fișiere doar dacă sunt conectați la aceeași rețea de tip LAN sau în cazul în care există un sistem de routare care să includă în rețea și utilizatorii respectivi.

4.2 Descrierea funcțiunilor aplicației

Aplicația informatică are ca obiectiv realizarea transferului de fișiere dintre doi sau mai mulți utilizatori, cu condiția ca aceștia să fie conectați la sistem și să se afle în aceeași rețea LAN de calculatoare.

Prin folosirea acestei aplicații, utilizatorii vor avea acces la următoarele funcții ale programului:

Funcția de înregistrare în baza de date a aplicației informatice, fiecare utilizator putând să-și creeze un cont cu care să se logheze pe server, având astfel acces la aplicație si respectiv la fișierele celorlalți utilizatori.

Fig. 4.2.1 Fereastra de înregistrare în sistem

Funcția de vizualizare a celorlalți utilizatori ce sunt conectați la serverul aplicației în momentul respectiv.

Fig. 4.2.2 Lista de utilizatori online

Funcția de căutare a unui fișier, atât în lista de fișiere uploadate de către un singur utilizator, însă este posibilă și vizualizarea simultană a tuturor fișierelor uploadate de toți utilizatorii ce sunt la momentul respectiv conectați. De asemenea, în urma efectuării unei căutari, utilizatorului îi vor fi returnate și date despre fișier, cum ar fi mărimea și utilizatorul de la care provine.

Fig. 4.2.3 Funcția de căutare a unui fișier

Funcția de descărcare a unui fișier sau a mai multor fișiere de la unul sau mai mulți utilizatori. La descărcarea unui fișier, utilizatorul ce îl descarcă va putea vedea statusul descărcarii.

Fig. 4.2.4 Descărcarea unui fișier

Funcția de share-uire a unui fișier din computerul utilizatorului.

Fig. 4.2.5 Butonul de share a unui fișier

Funcția de logoff a unui utilizator conectat la program. Un utilizator poate folosi această funcție când dorește să se deconecteze de la aplicație.

Fig. 4.2.6 Butonul de Logoff

Capitolul 5. Eficiența și utilitatea aplicației informatice

5.1 Condiții privind implementarea aplicației

Profilul utilizatorului

Obișnuit. Un utilizator obișnuit va putea:

Să se conecteze la server și să facă log-in cu un nume de utilizator definit în mod unic și o parolă;

Să vadă ceilalți utilizatori conectați la server;

Să trimită sau să primească mesaje de la alți utilizatori;

Să trimită sau să primească fișiere de la alți utilizatori;

Să facă log-out și să oprească conexiunea cu serverul;

Cazuri de utilizare

Log-in

Pentru a folosi aplicația, toți utilizatorii trebuie să se logheze folosind o metodă clasică de autentificare, inserând un username și o parolă valide.

Precondiții:

Aplicația trebuie să fie în funcțiune

Utilizatorul trebuie să fie înregistrat în sistem

Scenariu principal:

Utilizatorul trimite cererea de log-in către server

Serverul recunoaște utilizatorul

Serverul preia drepturile asociate utilizatorului

Serverul permite utilizatorului acces la program

Alternative:

Serverul nu recunoaște utilizatorul și afișează acestuia un mesaj de eroare

Postcondiție:

Utilizatorul poate accesa programul

Log-off

Acțiunea de log-off poate fi inițiată de către administrator sau de către utilizator.

Precondiții:

Utilizatorul trebuie să fie logat (vezi Log-in)

Scenariu principal:

Utilizatorul trimite cererea de log-off către server prin apăsarea butonului de log-off

Procesul de log-off se termină

Postcondiție:

Utilizatorul nu mai poate accesa serverul

Vizualizarea listei de utilizatori online:

Precondiții:

Utilizatorul trebuie să fie logat (vezi Log-in)

Postcondiții:

În urma logării cu succes, programul va afișa lista cu utilizatorii online

Utilizatorul curent logat este adăugat de sistem în lista utilizatorilor online

Trimiterea unui fișier altui utilizator

Precondiții:

Utilizatorul trebuie să fie logat (vezi Log-in)

Scenariu principal:

Utilizatorul trimite o cerere sistemului pentru fișierul selectat

Serverul face aranjamentele tehnice astfel încât sistemul utilizatorului destinatar și fișierul ce urmează a fi trimis să facă schimb de informații direct (peer-to-peer)

Utilizatorului îi apare un status bar ce afișează numele fișierului și statusul curent al transferului în procente

Postcondiții:

Status bar-ul ajunge la 100%

Fișierul a fost transferat cu succes in directorul selectat de utilizator

Oprire/Exit

Precondiții:

Utilizatorul trebuie să fie delogat de la sistem (vezi Log-off)

Scenariu principal:

Utilizatorul va închide aplicația

Scenariu alternativ:

Utilizatorul încă este logat

Un mesaj pentru delogare va fi afișat

Utilizatorul se va deloga și programul se va închide

Postcondiții:

Utilizatorul nu mai are acces la aplicație

5.2 Considerații privind eficiența aplicației informatice

În urma studiului realizat, am concluzionat că implementarea aplicației informatice în firma descrisă va aduce numeroase beneficii. Prin folosirea aplicației, se va spori eficiența comunicării dintre angajați prin simplu fapt că transferul de fișiere dintre aceștia va fi facilitat de utilizarea aplicației, lucru ce va reduce din timpul de lucru si creșterea calității serviciilor. De asemenea, solicitările primite de la clienți vor fi rezolvate mai rapid, atrăgând astfel o creștere a numărului de clienți satisfăcuți de serviciile firmei, lucru ce va duce si la o creștere a profitului firmei.

Bibliografie

Articole

Johnson, R. A. (2014). Java database connectivity using SQLite: A tutorial. International Journal of Information, Business and Management, 6(3), 207-217. Retrieved from http://search.proquest.com/docview/1530089313?accountid=35090

DINA, R., & ALECU, F. (2014). Declarative programming in java. Oeconomics of Knowledge, 6(1), 2-9. Retrieved fromhttp://search.proquest.com/docview/1529281930?accountid=35090 

Seymour, T., Hussain, J. Z., & Reynolds, S. (2014). How to create an app. International Journal of Management & Information Systems (Online), 18(2), 123. Retrieved from http://search.proquest.com/docview/1516951175?accountid=35090

O'REILLY: The efficient way to develop, debug, and deploy java code; O'reilly releases "NetBeans: The definitive guide". (2002, Nov 12). M2 Presswire Retrieved from http://search.proquest.com/docview/445884559?accountid=35090

Hayes, B. (1997). The java programming language / the java tutorial / the java language specification / the java virtual machine specification / and others. American Scientist, 85(4), 389-390. Retrieved from http://search.proquest.com/docview/215263785?accountid=35090

Cheung, J Y – Basics of computer networking

http://search.proquest.com/pqcentral/docview/1022702429/AAEA4678F3CA46F2PQ/70?accountid=35090

Cărți

Java – de la 0 la expert, Ediția a II-a, autori Ștefan Tanasă, Ștefan Andrei, Cristian Olaru, editura POLIROM

Curs practic de Java, autor Cristian Frasinaru, ediția 2005, editura Matrixrom

Cornelia Botezatu Proiectarea sistemelor informatice. Metode sistemice.

Editura ProUniversitaria, Buc, 2007

Ionel Iacob ORACLE 10g – Proiectarea și realizarea aplicațiilor cu

baze de date utilizând limbajul SQL*PLUS, Ed. ProUniversitaria 2009

Alte resurse

Java Threads, 2nd Edition, Scott Oaks and Henry Wong (O'Reilly & Associates, January 1999):

http://www.oreilly.com/catalog/jthreads2

Java Collections : http://docs.oracle.com/javase/tutorial/

Wikipedia – www.wikipedia.com

Bibliografie

Articole

Johnson, R. A. (2014). Java database connectivity using SQLite: A tutorial. International Journal of Information, Business and Management, 6(3), 207-217. Retrieved from http://search.proquest.com/docview/1530089313?accountid=35090

DINA, R., & ALECU, F. (2014). Declarative programming in java. Oeconomics of Knowledge, 6(1), 2-9. Retrieved fromhttp://search.proquest.com/docview/1529281930?accountid=35090 

Seymour, T., Hussain, J. Z., & Reynolds, S. (2014). How to create an app. International Journal of Management & Information Systems (Online), 18(2), 123. Retrieved from http://search.proquest.com/docview/1516951175?accountid=35090

O'REILLY: The efficient way to develop, debug, and deploy java code; O'reilly releases "NetBeans: The definitive guide". (2002, Nov 12). M2 Presswire Retrieved from http://search.proquest.com/docview/445884559?accountid=35090

Hayes, B. (1997). The java programming language / the java tutorial / the java language specification / the java virtual machine specification / and others. American Scientist, 85(4), 389-390. Retrieved from http://search.proquest.com/docview/215263785?accountid=35090

Cheung, J Y – Basics of computer networking

http://search.proquest.com/pqcentral/docview/1022702429/AAEA4678F3CA46F2PQ/70?accountid=35090

Cărți

Java – de la 0 la expert, Ediția a II-a, autori Ștefan Tanasă, Ștefan Andrei, Cristian Olaru, editura POLIROM

Curs practic de Java, autor Cristian Frasinaru, ediția 2005, editura Matrixrom

Cornelia Botezatu Proiectarea sistemelor informatice. Metode sistemice.

Editura ProUniversitaria, Buc, 2007

Ionel Iacob ORACLE 10g – Proiectarea și realizarea aplicațiilor cu

baze de date utilizând limbajul SQL*PLUS, Ed. ProUniversitaria 2009

Alte resurse

Java Threads, 2nd Edition, Scott Oaks and Henry Wong (O'Reilly & Associates, January 1999):

http://www.oreilly.com/catalog/jthreads2

Java Collections : http://docs.oracle.com/javase/tutorial/

Wikipedia – www.wikipedia.com

Similar Posts