Aplicatie Pentru Informatizare Biblioteca Atm

Aplicație pentru informatizare bibliotecă ATM

Cuprins

Abstract

Abrevieri

Listă de figuri

1. Introducere

1.1 Context

1.2 Motivatia si importanta temei

1.3 Rezumatul pe capitole

2 Breviar teoretic

2.1 Tehnologii WEB

2.1.1 Notiuni introductive

2.1.2 Arhitectura client-server

2.1.3 Pagini WEB statice: HTML

2.1.4 Foi de stiluri in cascada

2.1.5 Limbajul PHP

2.2 Baze de date

2.2.1 Notiuni introductive

2.2.2 Limbajul SQL

2.2.3 MySQL

2.2.4 MSSQL

2.3 Acces la distanta

2.3.1 Protocolul SSH

2.3.2 Protocolul FTP

2.4 Concepte POO

2.4.1 Limbajul C#

3. Implementarea proiectului de diploma

3.1 Definirea cerintelor

3.2 Instalarea aplicatiei

3.2.1 Instalarea pe sistemul de operare Windows

3.2.2 Instalarea pe o distributie de linux

3.2.3 Crearea bazei de date a aplicatiei

3.2.3 Migrarea bazei de date de la MSSQL la MySQL

3.3 Structura aplicatiei web

Abrevieri

MSSQL – Microsoft SQL Server

W3C – World Wide Web Consortium

DTD – Document Type Definitions

WEB – World Wide Web

URL – Uniform Resource Locator

SGML – Standard Generalized Markup Language

SQL – Structured Query Language

WYSIWYG – What-You-See-Is-What-You-Get

IETF – Intrenet Engineering Task Force

SGBD – Sistem de Gestine a Bazelor de Date

LAMP – Linux, Apache, MySQL, PHP

RDBMS – Relational database management system

ACID – Atomicity, Consistency, Isolation, Durability

ODBC – Open Database Connectivity

IETF – Internet Engineering Task Force

Listă de figuri

No table of figures entries found.

Introducere

Context

Tehnologia informatiei este strans legata de studiul, proiectarea si dezvoltarea de informatii cu ajutorul sistemelor de calcul. Acest domeniu este in crestere intr-un ritm foarte rapid in ultimii ani, si conform oamenilor de succes si bine cunoscuti din mediul IT, aceasta crestere se asteapta sa ramana stabila. Datorita ei, milioane de locuri de munca au fost creeate in acest domeniu. Cu toate acestea, este foarte important pentru noi sa intelegem cat de importanta este tehnologia informatiei.

Tehnologia informatiei a produs schimbari radicale in randul bibliotecilor, de la modul de lucru, abilitatile si pregatirea bibliotecarilor si pana la repozitionarea si redefinirea rolului pe care trebuie sa si-l asume in noua societate informationala. Cu mai multe decenii inaine de aparitia calculatoarelor si implicit a retelelor de comunicare, Paul Otlet (1868-1944) renumit academician belgian, a fost primul care a avut viziunea unei retele extinse de documente, accesului de la distanta cat si a motoarelor de cautare si a notiunii de hiperlink, pe scurt avea sa insemne mai tarziu World Wide Web.

Otlet nu doar a conceput structura de date cuprinsa in fisiere si disponibila oricui prin acces la distanta dar a si construit o colectie structurata de documente clasificate dupa anumite norme si standarde (Retea Internationala pentru Documentare Universala). Dezvoltarea tehnologii informatice a creeat noi oportinitati pentru dezvoltarea unei adevarate gradini a cunoasterii, in care oricine poate intra si cauta informatiile necesare. Internetul, reteaua de statii par a fi solutia miraculoasa pentru realizarea proiectului lui Otlet

Importanta tehnologiei informatiei in sectorul educational este foarte bine cunoscut. Acesta ajuta studentii cat si profesorii in studierea materialului de curs cu usurinta distribuit in medii virtuale. Studierea materiilor cu ajutorul bibliotecilor virtuale reduce timpul de acces la informatie si sporeste volumul acestora. Introducerea bibliotecilor virtuale din mediul scolar si universitar creeaza oportunitati elevilor si studentilor de a accesa informatiile necesare intr-un mod foarte rapid si usor, avand nevoie doar de un dispozitiv de calcul conectat la reteaua campusului sau la internet, daca biblioteca este publica.

In epoca trecerii de la o cultura a hartiei la o cultura a electronicii s-a dat startul si digitalizarii bibliotecilor, urmata de interconectarea lor in retele nationale si internationale de biblioteci, iar multe biblioteci traditionale au trecut la digitalizarea datelor, facandu-le accesibile prin mediul online. Biblioteca virtuala este o biblioteca alcatuita din colectii de date electronice apartinand bibliotecilor traditionale sau aflate in biblioteci electronice interconectate intre ele prin internediul unei retele ca de exemplu internetul. Este accesibila de la distanta de accea faciliteaza accesul simultan la oricati utilizatori, din orice arie geografica.

Motivatia si importanta temei

Folosirea mediului electronic pentru crearea, stocarea și distribuția fișierelor electronice a căpătat o amploare foarte mare în defavoarea soluției clasice pe suport de hârtie. Digitalizarea informatiilor din biblioteca ofera avantaje clare in fata informatiilor pe suport de hartie. Aceasta aplicatie aduce biblioteca mai aproape de studenti si ofera nu doar acestora cat si persoanelor din intregul campus posibilitatea de a accesa baza de date cu carti a bibliotecii Academiei Tehnicii Militare.

Pe langa simpla accesare a bazei de date cu carti a bibliotecii, aplicatia ofera si alte functii menite sa vina in ajjutorul studentilor:

-Clasificare clara a cartilor, in functie de tipul documentului. Impartirea cartilor in funtie de tipul lor ofera o vedere in ansamblu clara si in acelasi timp, accesul rapid la informatia necesara

-Optiunile avansate de cautare fac posibila verificarea existentei unei carti in biblioteca, verificarea stocului existent pentru respectiva carte, cat si vizualizarea detaliilor precum: titlul complet, autorii, cota, editura, anul aparitiei, ISBN etc.

-Posibilitatea punerii la dispozitie a documentelor aditionale cursurilor pentru fiecare materie studiata si din cadrul Facultatii E cat si din cadrul facultatii M.

-Vizualizarea si cautarea titlurilor documentelor si articolelor publicate de catre profesorii Academiei Tehnica Militarea de-alungul carierei lor, precum si descarcarea publicatiilor unde este cazul.

Scopul prezentei lucrari il consituie prezentarea si documentarea unei solutii tehnice de informatizare a bibliotecii, solutie menita sa cuprinda functii de baza pentru folosirea unei biblioteci cu titlurile indexate virtual cat si garantarea securitatii folosirii ei. Principalul atuu al aplicatiei este usurinta accesarii, fiind o aplicatie web, avand nevoie doar de un browser compatibil cu HTML 4 si o conexiune la reteaua campusului. Utilizatorul acceseaza pagina web, iar serverul isi realizeaza conexiunile cu baza de date, returnand utilizatorului informatiile cerute.

Rezumatul pe capitole

Lucrarea este structurata pe cinci capitole, fiecare din ele acoperind aspecte legate de introducere, breviar teoretic, implementare, concluzii si bibliografie.

Capitolul 1 isi propune sa trateze introducerea temei, punand accent asupra importantei ei in contexul actual, cand tehnologia informatiei avanseaza vizibil. De asemeana acest capitol ofera informatii de baza atat despre tema cat si despre motivatia, importanta si scopul ei.

Capitolul 2 ofera informatii despre notiunile teoretice folosite de aplicatie, pentru a intelege modul in care aceasta functioneaza. Dintre acestea amintim tehnologiile WEB (cuprinzand arhitectura client-server, limbajul HTML, PHP), baze de date ( cuprinzand notiuni despre limbajul SQL, cat si implementarea acesora in aplicatiile Microsoft SQL Server 2008 si MySQL), concepte despre programarea orientata pe obiecte, si metode de acces si control la distanta a unui server.

Capitolul 3 reprezinta nucleul si e alatuit din trei parti:

-In partea I se prezinta instalarea aplicatiei pe o statie avand sistemul de operare Windows si pe o statie in care aveam instalat o distributie Linux. Tot in aceasta parte sunt prezentati pasii necesari creearii si migrarii bazei de date din MSSQL de pe statiile de lucru ale bibliotecii in MySQL pe statia serverului aplicatiei.

-Partea a II-a este cea mai complexa si prezinta in detaliu structura aplicatiei pe clase, diagrame de clase, de secventa, precum si modul de lucru al aplicatiei.

-Partea a III-a este dedicata testartt aplicatiei, notiuni teoretice generale, schema de testare si cazuri de test.

Capitolul 4 stabileste concluziile, principalele aspecte si directii de continuare a cercetarilor asupra dezolvarii aplicatiei. Acest capitol este dedicat in special dezvoltatorilor care vor sa-si aduca contributia la dezvoltarea acestei aplicatii.

Capitolul 5 cuprinde legaturile catre resursele informationale care au contribuit la realizarea acesi lucrari. Pentru fiecare resursa se precizeaza adresa de unde a fost gasit.

Breviar teoretic

Tehnologii WEB

Notiuni introductive

Notiunea spațiului World-Wide Web este reprezentat de conceptul de comunicare, concept pe care se bazeaza orice retea de calcul. Inainte sa definim conceptul World-Wide Web, trebuie sa aducem la cunostinta notiunea de retea de calculatoare si implicit Internetul.

O rețea de calculatoare reprezintă un ansamblu de calculatoare independente cu capabilitati de comunicare intre ele comunice cu ajutorul unor canale de comunicație. Așadar, o retea poate fi privita ca o serie de calculatoare interconectate intre ele.

In particular, Internetul este o rețea de rețele, prin care utilizatorii unui calculator pot accesa orice informatie pusa public din orice retea cu care are legatura. Predecesorul Internetului, ARPAnet (AdvancedResearch Projects Agency network) a aparut la sfârșitul anilor '60 si a fost dezvoltat de Departamentul de Apărare al Statelor Unite ca experiment în plin război rece, după lansarea primului satelit artificial, Sputnik. De la început, utilizarea rețelei în scopuri educationale și pentru cercetari științifice a condus la o oarecare distantare de scopul inițial, si anume, folosirea exclusivă în domeniuk militar

Prima prezentarea in public a rețelei ARPAnet a fost în 1972, și a fost urmata cu un neașteptat succes, în ciuda asteptarilor dezvoltatorilor ei. Acest fap a incurajat activitatea de cercetare, apărând repede noi rețele, iar programatorii au fost încurajați să adauge noi facilități sistemului de operare folosir (Unix) folosit la interconectarea rețelelor. Astfel, avand suportul oferit de sistemul de operare Unix, s-au dezvoltat în această perioadă primele protocoale de comunicație, culminând în 1974 cu suita de protocoale TCP/IP (Transmission Control Protocol/Internet Protocol). Meritul acesteia este acela de de a oferi un standard de comunicare între rețelele de calculatoare, utilizată și în prezent pentru conectarea la Internet.

Unul din elementele fundamentale ale WWW (World Wide Web) este HTML (Hypertext Markup Language), care descrie formatul principal în care paginile (documentele) sunt distribuite utilizatorilor și văzute public pe Web. Cele mai multe din aspectele lui, cum ar fi independentă față de platforma, buna structurare formatării și legăturile exterioare (hypertext), fac din el un foarte bun format pentru pagini WEB caruia i s-au adus imbunatatiri de-alungul anilor, in prezent ajungand la verisunea 5.

Arhitectura client-server

In prezent, pentru a avea acces la WWW, utilizatorii trebuie să folosească un program client – cunoscut sub denumirea de navigator – și, bineînțeles, să cunoască localizarea fizică a documentelor dorite (adresa acestora). Există actualmente o multitudine de navigatoare, alături de bine cunoscutele Netscape Communicator și Internet Explorer – rulând în medii grafice precum Windows, XWindow (Unix) sau Apple – numărându-se multe altele, chiar dacă nu atât de populare: Opera, Lynx sau Links (ultimele două rulând doar în mod text, fiind disponibile mai ales sub Linux). Principalele caracteristici ale navigatoarelor Web grafice sunt:

• posibilitatea de a realiza interogări multiple către serverele Web;

• asigurarea securității transmiterilor de date (e.g.: în cazul comerțului electronic sau pentru accesarea unor informații pe bază de autentificare);

• suport pentru aplicații menite să extindă funcționalitatea na – cunoscut sub denumirea de navigator – și, bineînțeles, să cunoască localizarea fizică a documentelor dorite (adresa acestora). Există actualmente o multitudine de navigatoare, alături de bine cunoscutele Netscape Communicator și Internet Explorer – rulând în medii grafice precum Windows, XWindow (Unix) sau Apple – numărându-se multe altele, chiar dacă nu atât de populare: Opera, Lynx sau Links (ultimele două rulând doar în mod text, fiind disponibile mai ales sub Linux). Principalele caracteristici ale navigatoarelor Web grafice sunt:

• posibilitatea de a realiza interogări multiple către serverele Web;

• asigurarea securității transmiterilor de date (e.g.: în cazul comerțului electronic sau pentru accesarea unor informații pe bază de autentificare);

• suport pentru aplicații menite să extindă funcționalitatea navigatorului. O astfel de extensie este denumită de cele mai multe ori plugin, putând fi configurată și exploatată de către utilizator pentru accesarea unor tipuri speciale de date (e.g.: lumi virtuale modelate în VRML);

• stabilirea de liste de adrese ale unor situri Web favorite și oferirea posibilității de a avea acces la istoricul navigării (mecanismul de history);

• posibilitatea de a folosi mai multe ferestre (independente sau nu) de navigare;

• suportul pentru cadre (frame-uri) sau vederi multiple în interiorul unei aceleiași ferestre;

» posibilitatea configurării de către utilizator a unor caracteristici ale modurilor de afișare, navigare și exploatare (stabilirea preferințelor utilizatorilor);

• asigurarea suportului pentru diverse limbaje de programare folosite la realizarea de documente Web dinamice (Le. Java sau JavaScript), pentru foi de stiluri atașate datelor (în vederea îmbunătățirii modului de afișare) sau pentru stocarea datelor în mai multe limbaje de marcare (HTML, XHTML, limbaje bazate pe XML etc);

• integrarea unor aplicații facilitând accesul la alte servicii Internet (poșta electronică, transferul de fișiere, grupurile de știri) sau Web (precum căutarea de informații, afișarea de noutăți, accesarea în timp-real a programelor de radio sau televiziune etc).[22]

Modul de dialogare între clienți și servere se realizează prin intermediul unei mulțimi de reguli de comunicare prin rețea denumită protocol. In cazul Web-ului, acest protocol este HTTP (HyperText Transfer Protocol). HTTP reprezintă un protocol bazat pe stiva de protocoale TCP/IP. HTTP a început să^ fie proiectat și folosit din anul 1990, dezvoltându-se împreună cu spațiul WWW. In prezent, este utilizată versiunea HTTP/1.1 care oferă funcționalități suplimentare, ca de exemplu suport pentru identificatori uniformi de resurse – URI (Uniform Resource Identifier). Acești identificatori specifică adresele Web ca locație (prin URL – Uniform Resource Locator) sau prin nume (URN- Uniform Resource Name).

Identificatorii uniformi de resurse reprezintă o modalitate flexibilă și eficientă de accesare a oricărei resurse Internet, prin oricare protocol de comunicare. Incorporând suport pentru transferul de poștă electronică, transferul de fișiere sau accesul la grupuri de știri, HTTP este de asemenea utilizat și ca protocol generic pentru comunicarea între agenții-utilizator (navigatoare, roboți Web etc.) și alte sisteme disponibile pe Internet. In acest mod, HTTP permite accesul la resurse disponibile din diverse aplicații.

Figura 2.1.2

Pagini WEB statice: HTML

Tim Berners-Lee a folosit drept model SGML (Standard Generalized Markup Language), un standard internațional nou aparut. SGML are avantajul unei structurări mai bune și platformei independente dar construirea lui a avut mai mult structura semantică a documentului decât modul de formatare. Flexibil, SGML era descris ca o specificare pentru caracterizarea altor tipuri de formate. Utilizatorii isi puteau creea formate noi (DTD-Document Type Definitions),formate compatibile cu orice produs soft SGML prin consultarea mai întâi a definițiilor formatelor noi.

HTML apartine formatului DTD, deci este o aplicație specifica SGML. În anii de debut, HTML a cunoscut o crestere lenta, o posibila cauza fiind lipsa pentru suportul de a descrie publicatiile electronice profesionale; limbajul putea perminte control asupra stilului de scris (Fonturi) dar era imposibila inserarea graficii. În 1933, NCSA a adus imbunatatiri limblajului, permitandu-i inserarea graficii și au pus bazele primului navigator grafic, Mosaic. Mai tarziu au urmat contribuții ad hoc ale diverselor producatori de soft care au adus o parte de adaugari limbajului HTML (adăugări și nu îmbogățiri deoarece unele tăguri nu erau conform principiile generale ale SGML). Pentru a clarifica lucrurile, la prima conferința WWW din Geneva s-a alcatuit un grup (HTML Working Group) avand ca principala misiune formalizarea HTML într-un DTD al SGML, lucru care s-a definit în HTML 2. Actiunea a fost un succes deoarece o data standardizat, limbajul se putea dezvolta controlat, conform cu standardele.

Standardul oficial HTML este W3C (World Wide Web Consortium), care este afiliat la IETF (Intrenet Engineering Task Force). W3C a enunțat versiunile standardului HTML, printre care și urmatoarele versiuni de HTML: 2.0, 3.0, 3.2, 4.0, 4.01 și, cel mai recent, HTML 5. Între timp, autorii de navigatoare, cum ar fi Netscape și Microsoft, au dezvoltat propriile „extensii” alte HTML în afară standarde și le-au încorporat în navigatoarele lor. Specificația HTML 3.0, Enunțată în 1995, a încercat să dezvolte HTML 2.0 prin adăugarea unor noi facilități precum tabelele și un control sporit asupra textului de langa imagini. Deși unele facilitati din HTML 3.0 erau folosite deja de catre dezvoltatorii de navigatoare, multe nu existau inca. In unele cazuri, taguri asemănătoare implementate de dezolvatorii de navigatoare au ajuns mai cunoscute decât tagurile „oficiale”. Specificația HTML 3.0 a expirat, astfel incat nu mai exista un standard oficial.

În mai 1996, W3C a lansat specificația HTML 3.2, care era proiectată să reflecte și să standardizeze practicile acceptate pe scara largă. Deci, HTML 3.2 include toate tagurile HTML 3.0 ce erau adoptate de dezvoltatorii de navigatoare precum Netscape și Microsoft plus extensii HTML răspândite. În bilanțul asupra HTML, W3C recomandă ca dezvoltatorii de pagini web să utilizeze standardul HTML 3.2. Versiunile curente ale majorității navigatoarelor ar trebui să suporte toate, sau aproape toate aceste tag-uri.

De asemenea există extensii Netscape și Microsoft care nu sunt incluse in specificația HTML 3.2, ori pentru că sunt mai puțin utilizate, ori au fost standardizate după apariția lui HTML 3.2. Deoarece navigatorul Netscape a fost printre primele care suporta anumite taguri din HTML 3.0, iar Netscape detinea peste 70% din piața de navigatoare, mulți au crezut in mod gresit ca toate tagurile sau facilitatile ca ferestrele fac parte din HTML 3.0 sau HTML 3.2.

Următoarea versiune a HTML-ului dezvoltată de consorțiul W3, denumita Cougar, este standardul HTML 4.0, apărut relativ recent, în 1997, ce aducea suport pentru foi de stiluri interne, suport pentru diferite limbi, evenimente, pentru formule matematice etc. După cum afirma inventatorul Web-ului și directorul W3C, Tim Berners-Lee:

“Cu HTML 4.0, orice aplicație Web va fi independentă de navigator.”

HTML4.0 este disponibil în trei variante:

• HTML 4.0 Strict

• HTML 4.0 Frameset

• HTML 4.0 Transitional

Documentele HTML sunt în format ASCII și drept urmare, ele pot fi create cu orice editor de text. Au fost însă dezvoltate editoare specializate care permit editarea într-un fel de WYSIWYG (What-You-See-Is-What-You-Get) deși nu se poate vorbi de acest lucru atâta vreme cât navigatoarele afișează același document oarecum diferit, în funcție de platforma pe care rulează. Au fost de asemenea dezvoltate aplicatii care permit conversia formatelor HTML a documentelor generate (și formatate) cu alte editoare.

Pentru a asigura fidelitatea și corectitudinea comunicațiilor pe WWW, consorțiul W3 a introdus HTML Validation Service (http://validator.w3.org/), inca valabil, care verifică dacă documentul ales respectă cel putin standardul HTML 4.0. În fapt, Tim Berners-Lee declară că HTML 4.0 n-a fost conceput numai pentru navigatoare ci si pentru aplicații viitoare și produse Web.

Formatul se specifică prin HTML, limbaj care, conform SGML-ului, accepta un tag-uri pentru formatul documentului. Ca și în SGML, tag-urile se indroduc între <și>, putând sa existe si tag-uri de început și de sfârșit. Fișierele HTML sunt documente ASCII obișnuite având de regula extensia .html și sunt alcatuite din doua parti: antetul (head) și corpul (body).

Astfel, o pagină Web tip HTML HTML are urmatoare forma:

<html> <!—tag de inceput –>

<head> <!—marcheaza incepului antetului –>

</head> <!—sfârșitul antetului–>

<body> <!—marcheaza inceputul corpului –>

</body> <!—sfârșitul corpului–>

</html> <!—sfârșitul documentului –>

În cadrul antetului, printre altele, poate sa apara titlul paginii web, specificat de tag-ul <title>:

<title>Academia Tehnica MIlitara</title>

De obicei între <head> și </ head> apar definiții de rutine scrise în limbaje script (ca JavaScript), sau legaturi catre documente pentru stilizare, pentru a fi siguri ca sunt analizate și procesate de navigator .

Foi de stiluri in cascada

Vom prezenta în continuare câteva dintre trăsăturile CSS, scopul lor fiind controlarea mai usoara a formatului elementelor HTML (poziție și apariție în fereastra de afișare și comportament la actiunile produse de utilizator sau navigator). Într-un document HTML putem folosi mai multe foi de stiluri, sau le putem sa le includem recursiv din alt document CSS.

CSS1 oferea un mecanism usor care permite dezvoltatorilor de pagini Web să atașeze acestora stiluri de afișare. Limbajul CSS1 este simplu ușor de înțeles și folosit

CSS 2 este o extensie adusa lui CSS 1 si ofera un plus de facilitari versiunii initiale. La radul sau, ultimul aparut, CSS3 reprezinta o impunatarire ce aduce noi atribute, faciliteaza accesul paginilor web de pe dispozitive mobile si ajuta la dezvoltarea de noi contepte in webdesign.

Extensia CSS se poate aparea in documentul HTML sub 3 forme

-inserție: fiecare tag HTML are atașat un stil de afișare (tip de font, culoare, mărime etc.) , ulterior putându-se modifica într-o manieră dinamică:

Figura 2.1.4.1 CSS prin insertie

-definiție: stilurile se declară între <style> și </style>, în cadrul definirii corpului paginii Web (secțiunea <head>…</head>), pentru fiecare tag în parte:

Figura 2.1.4.2 CSS prin Definitie

-extern: toate stilurile se definesc în exteriorul documentului HTML și anume în cadrul unui fișier .css care este integrat folosint tag-ul <link> în pagina. Astfel, putem folosi acelasi fișier .css pentru mai multe pagini web, nefiind nevoie sa-l rescriem sau sa-l copiem.

Figura 2.1.4.3 CSS prin legatura externa

Câteva elemente de stil:

CSS permite o afișare mai clară, mai flexibilă a informațiilor stocate în cadrul unui document. O parte din noile atribute introduse de CSS sunt următoarele:

-line-height specifică spațiul dintre liniile de text, permițând astfel distanțări sau suprapuneri variabile;

-font-family controlează font-ul încărcat pentru afișarea unui anumit element;

-font-size specifică marimea font-ului (în centimetri, inch, pixeli, procente);

-font-style definește stilul fontului afișat (normal, oblique, italic etc.);

-font-weight specifică cat de gros sa fie fontul (bold, light, medium, extra-bold etc.);

-text-decoration definește elementele decorative adăugate textului (italic, line-through, none, underline);

-position specifică poziția de afișare (absolută sau relativă la alt element) în cadrul paginii.

Din păcate, doar ultima generație de navigatoare suportă definițiile de stiluri conform specificației CSS.

Limbajul PHP

Limbajul PHP este un limbaj de uz general utilizat cel mai frecvent la crearea de pagini web, fiind încorporat de un alt limbaj de programare și anume HTML.

Diferența majoră care se află între limbajul PHP și un simplu script JavaScript constă în faptul că codul php este executat pe server în acest fel generându-se codul HTML care mai apoi este transmis în mod direct către client, acesta din urmă beneficiind de rezultatele obținute fără a cunoaște natura codului sursă.

Principalul avantaj pe care limbajul PHP îl oferă constă în simplitatea acestuia oferind posibilitatea unui utilizator de a lucra cu acesta dar în același timp beneficiază și de prezența unor caracteristici avansate permițându-i dezvoltarea de aplicații complexe. Un alt avantaj pe care limbajul PHP îl oferă constă în faptul că acesta poate lucra pe diferite sisteme de operare dar și pe diferite servere web. Una dintre cele mai importante facilității pe care limbajul php îl are constă în faptul că este permisă conexiunea la baza de date. Prin intermediul lui, utilizatorul poate realiza diferite operații de interogare asupra unei baze de date, acesta putând efectua operații de introduce sau extragere de date.

Utilizând limbajul php puteți realiza diverse prelucrări asupra textului, realizând o formatare a acestuia, asupra imaginilor sau chiar asupra fișierelor în format video. În ultima perioada dezvoltarea limbajului PHP a avansat foarte mult prin apariția de noi versiuni ale acestuia ajungând în acest moment printre cele mai utilizate limbaje de programare web.

Pentru ca este open-source, limbajul PHP s-a bucurat de ascensiune foarte rapida in mediul online, beneficiind de un suport eficient si rapid din partea utilizatorilor, acesta fiind facutorul decisiv la cresterea exploziva a paginilor web bazate pe acest limbaj.

Interpretorul PHP este cel mai popular limbaj tip scripting care se foloseste in acest moment pentru dezolvarea site-urilor Web interactive. Prescurcarea PHP este un acronim de la Hypertext PreProcessor. Diferenta majora fata de alte limbaje de scripting o reprezinta locul de executie al codului, PHP fiind un interpretor server-side (codul este executat pe un server pe care este instalat si configurat interpretorul php). Pentru a putea creea si testa pagini PHP este nevoie de un server de web (de exemplu apache, nginx) si pachetul de instalare PHP.

Limbajul PHP da posibilitatea folosirii elementelor comune specifice limjajelor de programare, iesirea nomala a scriptului devenind intrare pentru codul pentru navigator. De asemenea se pot folosi iesiri suplimentare catre navigator ( de exemplu functia echo permite afisarea directa in pagina rezultata requestului HTTP).

Pe langa modificarea continului unei pagini web, PHP poate manipula si headere-le HTTP ca de exemplu sa adauge campuri suplimentare pentru autentificare (coduri tip token), poate seta Cookie-uri sau sau redirectioneze utilizatorii prin adaugarea campului “Location” in header-ul de raspuns HTTP. Mai mult, cu ajutorul librariilor externe, PHP poate parsa fisiere JSON,XML, poate sa modifice imagini si animanii, fisiere flash sau documente PDF, dar si sa trimita mail-uri, requesturi HTTP si sa se conecteza la baze da date.

Interpretorul PHP parcurge documentul si trimite catre pagina de raspuns tot codul pana secventa de incepere a instructiunilor PHP. In continuare, textul este compilat si executat in PHP pana se intalneste marcajul de inchidere. Astefel ca, intreg textul nu este interpretat ca PHP, ci este furnizat la iesire in forma primita ca intrare de catre interpretor. Exista mai multe marcaje ce indica debutul unui cod tip PHP, dar doar doua din ele sunt folosite mai des. Pentru ca documentul nostru sa respecte specificatiile XML, unica posibilitate de inserare a codului este folosind sablonul de mai jos:

2.1.5.1 Sablon cod PHP ce respecta XML

Urmatoarea posibilitate este de a introduce tag-ul <SCRIPT> intr-o maniera similara introducerii de script-uri JavaScript. Sintaxa este cea de mai jos:

2.1.5.2 Sablon cod PHP exemplul 2

Intrarea si iesirea din modul PHP se face de ori cate ori este nevoie, acest lucru fiind foarte util in cazul lucrului cu documente mari. O structura eficienta pentru realizarea unei aplicatii web bazate pe o baza de date este urmatoarea:

• Partea de conectare la baza de date

• Header(titlu, specificatii stil, set de caractere)

• Meniul (butoanele de navigare)

• Datele de continut

• Footer-ul paginii (partea de jos continand nota de copyright, etc…)

Aceasta structura reprezinta o referinta data de toate paginile site-ului si, in afara de partea de continut, parte care difera de la o pagina la alta, celelalte elemente-modul raman aproape neschimbate. Pentru a avea un cod mai clar si mai bine organizat, elementele comune le putem scrie o data si apoi le includem folosind legatori ori de cate ori este nevoie in loc sa le folosim rescriindu-le pe fiecare din ele de mai multe ori.

PHP-ul se afla in topul celor mai folosite limbaje server-side, potrivit unui studiu efectuat de Netcraft, de asemenea, existand un grafic pe site-ul oficial in care se descrie ascensiunea folosirii limbajului PHP-ului. Popularitatea de care se bucură acest limbaj este datorata urmatoarelor aspecte:

Familiaritatea : sintaxa programulul este o mixtura dintre limbajele Perl sau C;

Simplitatea : nu este necesar sa includem de fiecare data librarii externe, ele fiind automat incluse folosind un fisier din configurare (php.ini)

Eficiența : PHP-ul defineste de mecanisme de alocare speciala a resurselor, optimizate unui mediu multi-user, așa cum este web-ul;

Securitatea : Pachetul PHP pune la dispozitie seturi flexibile si masuri eficiente de siguranta

Flexibilitatea : aparand in necesitatea dezvoltarii mediului web, PHP incearca sa tina pasul cu dezvoltarea noilor tehnologii, el fiind integrat in numeroase servere web existente.

Gratuitatea : este probabil caracteristica de baza a limbajului PHP, datorita licentei open-source cunoscand o ascensiune foarte rapida si o popularitate mare intre dezvoltatorii de solutii web.

2.1.6 Vulnerabilitati WEB. SQL Injection

SQL Injection este un tip de vulnerabilitate web in care un atacator poate manipula si trimite comenzi SQL pentru a primi informatii din baza de date. Acest tip de atac este cauzat de cele mai multe ori cand aplicatia web executa codul primit de utilizator fara sa treca printr-un proces de validare sau codare. Atacul poate acorda accesul la informatii confidentiale ca parola sau hash-ul parolei, numere de carti de credit si alte date de risc financiar si permite atacatorului sa creeze, citeasca, actualizeze, modifica sau sterge toate datele stocate in baza de date respectiva. Multi programatori inca nu sunt familiarizati cu aceasta amenintare. SQL Injection poate fi folosit pentru urmatoarele tipuri de atacuri:

Trecere de autentificare: atacatorul poate sa evite introducerea de utilizatori si parola valida si poate sa capete cel mai inalt privilegiu din retea

Acces la informatii: dupa acces neautorizat in retea, atacatorul capata acces la informatiile confidentiale stocate in baza de date

Compromite disponibilitatea datelor: atacatorul poate folosi acest tip de atac pentru a sterge date esentiale pentru audit sau orice informatii importanta despre baza de date

Executare cod la distanta.

Baze de date

Notiuni introductive

O Bază de date, sau Bancă de date, semnifica o modalitate de stocare a datelor si informatiilor pe dispozitive externe de stocare, cu posibilitatea de extindere si foarte bine organizata. Initial sarcina poate părea usoara, dar in conditiile de lucru cu milioane de elemente, fiecare purtand mari cantități de date ce trebuie accesate simultan de mii de utilizatori de internet la nivel global; și în condițiile care aplicatia trebuie sa ruleze fara oprire soluțiile acceptate nu sunt de loc simple.

De regula o bază de date este stocata într-unul sau mai multe fișiere. Bazele de date sunt manipulate folosind sisteme de gestiune a bazelor de date.

Cel mai intalnit tip de baze de date este cel relațional, in care se folosesc tabele pentru stocarea de date. Pe lânga tabele, o bază de date relațională mai poate cuprinde: utilizatori și grupuri de utilizatori, indecși, proceduri stocate, declanșatori, tipuri de date, mecanisme de securitate și de gestiune a tranzacțiilor etc. Alte categorii de baze de date sunt modelul ierarhic, modelul orientat pe obiecte și, mai nou, modelul XML.

Limbajul SQL

SQL este un limbaj neprocedural. SQL este ceea ce face posibil un sistem de gestiune a bazelor de date relationale SGBDR (Relational Database Management System – RDBMS).Ceea ce diferentiaza un SGBD de un SGBDR este faptul ca ultimul asigura un limbaj de baze de date orientat pe multimi.Pentru majoritatea sistemelor de administrare a bazelor de date relationale, acest limbaj este SQL.

Structured Query Language (SQL – limbajul structurat de interogare) este limbajul styandart de facto folosit pentru manipularea si regasirea datelor din aceste baze de date relationale.Prin SQL, un programator sau un administrator de baze de date poate face urmatoarele lucruri:

• sa modifice structura unei baze de date ;

• sa schimbe valorile de configurare pentru securitatea sistemului;

• sa adauge drepturi utilizatorilor asupra bazelor de date sau tabelelor;

• sa interogheze o baza de date asupra unor informatii;

• sa actualizeze continutul unei baze de date.

SQL a fost dezvoltat pentru a servi bazele de date relationale. Fara o intelegere minima a teoriei bazelor de date relationale, nu veti putea folosi efectiv SQL

MySQL

MySQL este cel mai popular sistem open-source de gestiune a bazelor de date relațional, produs de compania suedeza MySQL AB și distribuit sub Licența Publică Generală GNU. Este o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP).

MYSQL cel mai popular soft ce utilizează bazele de date și care poate fi utilizat prin integrarea acestuia în program PHP. Deobicei noțiunea de baza de date se refera la o grupare de unul sau mai multe tabele ce permit stocarea de date în mod unic, principalul avantaj al acestora constând în faptul că realizează prelucrarea unui volum de informații foarte mare într-un interval de timp relativ scurt.

MYSQL permite inserarea mai multor tipuri de date cum ar fi: numere întregi, caractere, șiruri de caractere, date calendaristice, dar și inserarea de imagini. Folosind MYSQL, se pot crea tabele în baza de date și se pot aplica diferite reguli asupra acestora, se pot modifică datele, se pot sterge tabele, se poate modifica structura tabelelor din baza de date sau se poate sterge baza de date.

Licența GNU GPL interzice încorporarea MySQL în aplicatii comerciale; pentru aceasta facilitate pot achizitiona, contra cost, o licență comercială de la acceasi compania producătoare, MySQL AB.

MySQL este parte componenta a platformelor LAMP si WAMP (Linux-Apache-MySQL-PHP/Perl/Python si Windows-Apache-MySQL-PHP/Perl/Python). Popularitatea sa ca soft web este in stransa legatura de cea a PHP-ului care este deseori combinat cu MySQL și denumit Duo-ul Dinamic.

Pentru administrarea bazelor de date MySQL se poate folosi modulul linie de comanda sau interfata grafica descarcabila, gratuita, scrisa in PHP, PhpMyAdmin. Aceasta vine integrata in solutiile tip WAMP/XAMPP etc.

MySQL poate fi rulat pe majoritatea platformelor software existente: majoritatea distributiilor de linux ( Ubuntu, SuSE, RedHat, Debian), Windows si altele.

MSSQL

Microsoft SQL Server este o aplicatie pentru manipularea de date relaționale (RDBMS) produs al companiei americate Microsoft Corp, T-SQL fiind limbajul principal de interogare.

Aplicatia companiei Microsoft suporta interogarile SQL (Structured Query Language), cel mai răspândit limbaj specific pentru bazede date. Reprezinta o aplicatie pentru întreprinderi – poate gestiona cantitati de date foarte mari.

Nucleul lui Microsoft SQL Server provine de la Sybase SQL Server și a reprezentat debutul companiei Microsoft pe piata aplicatiilor de baze de date pentru intreprinderi, fiind in concurenta cu Oracle, IBM și Sybase. Microsoft, Sybase si Ashton-Tate si-au unit fortele pentru a dezvolta prima versiune numita SQL Server 4.2 pentru Win OS/2. Urmatorul pas al companiei Microsoft a fost negocierea pentru drepturi de exclusivitate la toate versiunile aplicatiei SQL Server adaptate pentru sistemele de operare proprietare Microsoft.Ulterior, Sybase și-a redenumit softul în Adaptive Server Enterprise, pentru a evita confuzia cu Microsoft SQL Server.

Microsoft SQL Sever foloseste o varianta particulara de SQL , T-SQL (Transact-SQL), o adaptare a lui SQL-92 (standardul ISO pentru SQL) cu unele imbunatairi. Transact-SQL vine cu noi concepte precum procedurile stocate si pentru tranzactii. Standardele SQL necesita ACID (Atomicity, Consistency, Isolation, Durability); acesta este un acronim pentru cele 4 conditii pentru orice tranzactie. Microsoft SQL Server suporta Open Database Connectivity (ODBC).

SQL Server 7.0 a fost prima aplicatie tip server de baze de date bazat pe interfata grafica (GUI). O variantă de SQL Server 2000 comerciala a fost prima care a debutat pe o arhitectura Intel

Figura 2.2.4.1 Evolutia versiunior de MSSQL Server

Acces la distanta

Protocolul SSH

Secure Shell (SSH) este un protocol de comunicatie ce foloseste informatii criptate, pentru o comunicatie securizata, acces la distanta, si alte servicii de comunicatie securizate intre doua calculatoare din retea. Se conecteaza pe un canal securizat pe o retea nesigura, unul ruland un server de SSH si pe celalat un client de SSH. In prezent exista doua versiuni de SSH: SSH-1, respectiv SSH-2.

Cea mai cunoscuta utilizare a aplicatiei o reprezinta accesul si controlul la distanta pentru statii bazate pe UNIX, dar poate fi folosit in maniera similara si pe windows. A fost conceput ca o alternativa securizata la protocalele nesigure ca telnet, Berkeley rsh si rexec care transmit informatii in clar pe retea si poate fi vulnerabila la interceptari. Protocolul SSH oferta garantia unei conexiuni securizate si a unei transimii corecte de date pe o retea nesigura precum internetul.

SSH foloseste metode de criptografie asimetrica pentru a valida statia la care se conecteaza si pentru a garanta accesul unui utilizator, daca este cazul. Exista mai multe metode de a folosi SSH, una din ele este sa genereze automat o pereche de chei: cheie privata si cheie publica, apoi sa foloseasca parola ceruta pentru accesul la server.

Figura 2.3.1.1 Autentificarea SSH

O alta ultilizare a SSH o reprezinta folosirea a perechii de chei private si publice predefinite pentru a garanta accesul la server fara a mai fi necesara introducerea unei parole pentru autentificare. In acest scenariu, oricine poate genera o pereche de chei criptografice, cheia publica fiind instalata pe fiecare din calculatoarele client, iar cheia privata pentru cheia publica fiind instalata pe statia unde garantam accesul utilizatorilor. Cat timp autentificarea este bazata pe cheia privata, aceasta nu ajunge niciodata pe retea, garantand evitarea interceptarii ei. Folosind SSH, doar se verifica daca respectiva cheie privata se potriveste cu cheia publica transmisa de utilizator. In toate versiunile de SSH este foarte importanta verificarea autentificatii cheii publica inainte de a o accepta. Acceptarea cheii publica fara a o valida in prealabil autorizeaza persoana atacatoare in locul utilizatorului de drept.

Versiunea 1.x

In 1995, Tatu Ylönen, un cercetator de la Universitatea de Tehnologie din Helsinki, Finlanda, a conceput prima data design-ul protocolului SSH (numit acum SSH-1) dupa un atac de interceptare a parolelor in campusul facultatii. Obiectivul SSH a fost de a evita transmiterea in clar a parolelor in retea, precum TELNET si protocoalele rsh, care nu ofereau nici mecanisme solide de autentificare si nici nu garantau securitatea. Ylönen a lansat ideea in mod gratuit in iulie 1995, si aplicatia a devenit rapid populara in randul utilizatorilor. Spre sfarsitul lui 1995, numarul utilizatoror ce foloseau SSH depasea cifra de 20.000.

In Decembri 1995, Ylönen a fondat “SSH Communications Security” pentru vanzarea si dezvoltarea SSH. Varianta originala a lui SSH-1 a devenit parte integrata din diverse aplicatii gratite precum, GNU libgmp. Se estimeaza ca in jurul anului 2000 peste 2 milioane de utilizatori foloseau SSH.

Versiunea 2.x

"Secsh" a fost numele oficial dat de IETF grupului care au dezvoltat versiunea a 2a a protocolului SSH. In 2006, a fost adoptata ca standard o versiune imbunatatita. Aceasta versiune este incompatibila cu SSH-1, datorita securitatii sporite, si multiplelor imbunatatiri aduse. Securitatea mai puternica se datoreza folosirii algoritmului Diffie-Helman pentru schimbul de chei pe o retea nesecurizata. Din noile avantaje alea SSH-2 amintim deschiderea unui numar mare de conexiuni peste o singura sesiunea SSH activa. Datorita superioritatii si avantajelor SSH-2 fata de SSH-1, multe aplicatii nu mai ofera suport pentru SSH-1, fiind adaptate numai pentru SSH-2.

Protocolul FTP

Protocolul de trasfer de fisiere (FTP) este un protocol standar de trasfer de fisiere de pe o statie de lucru catre alta statie de lucru bazat pe o retea sub o arhitectura TCP, de exemplu internetul.

FTP este construit pe o arhitectura client-server ce foloseste conexiuni diferite intre client si server pentru control si pentru transfer de date. Utilizatorii FTP se pot conecta folosind un nume si o parola, conexiunea fiind in text clar pe retea, dar se pot conecta si anonim, data serverul permite aceasta facilitate. Pentru o conexiune securizata si pentru un trasfer criptat de date, FTP este deseori securizat folosint protocoale SSL/TLS (FTPS). SSH File Transfer Protocol (SFTP) este deasemenea folosit uneori dar tehnologia este diferita.

Primele aplicatii ce foloseau protocolul FTP au aparut in mediul sistemelor de operare pe baza de linie de comanda, inaintea existentei sistemelor de operare cu interfata grafica, dar inca este folosit pe majoritatea sistemelor cu Unix Linux si Windows. Multi clienti FTP au fost dezvoltati pentru aplicatii destinate folosirii pe desktopu-uri, servere, dispozitive mobile si hardware, dar a fost implementat si in aplicatii de productie, precum editoarele WEB.

FTP poate rula un mod activ sau pasiv, depinde cum este realizata conexiunea. In ambele cazuri, clientul FTP realizeaza o conexiune intr-un port oarecare N catre portul 21 al serverului FTP. In modul activ, clientul asteapta pachete pe portul N+1 de la server (clientul trimite comanda PORT N+1 catre server, care este informat pe ce port sa trimita pachetele).

In situatia in care suntem in spatele unui firewall sau nu putem primi conexiuni direct, se foloseste modul pasiv al conexiunii. In acest mod, clientul transmite serverului comanda PASV pe linia de comenzi si primeste de la server o adresa IP si un port, pe care clientul le foloseste pentru a deschide o conexiune de pe un port oarecare catre adresa IP si portul furnizat de server. Ambele moduri au fost adaptate in anul 1998 pentru a suporta IPv6. Actualizarile ulterioare au fost aduse modului pasiv, transormandu-l intr-un mod pasiv avansat.

Figura 2.3.2.1 Conectearea prin FTP in mod pasiv

Serverul raspunde folosind un cod de trei cifre in ASCII, eventual folosind si un mesaj. De exemplu "200" (sau "200 OK") inseamna ca ultima comanda a fost executata cu succes. Numarul reprezinta starea cererii iar textul reprezinta mesajul citibil de catre utilizator (exemplu: <Need account for storing file>). In cazul unui transfer in curs, el poate fi oprit folosint mecanismele de control specificii conexiunii TCP.

2.3.3 Aplicatia PuTTY

Putty este o aplicatie gratuita open-source pentru conectarea la distanta pe o statie de lucru folosind protocoale precum SCP, SSH, Telnet, rlogin si conexiune RAW dar si pentru conexiune cu interfata seriala. Programul a fost scris initial pentru Microsoft Windows dar a fost portat si pe alte sisteme de operare.

Concepte POO

Programarea orientată pe obiecte (Object Oriented Programming (OOP)) este o paradigmă de programare, bazata pe concepte noi, superioare de programare precum incapsularea (contopirea datelor cu codul), mostenirea (transmiterea datelor de la o clasa la alta), polimorfismul, care permite abstractizări ce permit o descriere conceptuală mai simplă a soluției, si abstractizarea.

Programarea orientată pe obiect (OOP) reprezinta o etapa majora in evolutia tehnicilor de programare, spre o mai buna abstractizare în implementarea aplicatiilor. POO a aparut in necesitatea adaptarii problemei mai natural limbaului natural. Astfel partile componente ale programului se apropie mai mult de felul nostru de gandire decat de cel al sistemelor de calcul. Până la apariția POO, aplicatiile erau implementate în limbaje de programare procedurale (C sau Pascal) ori in limbaje ce nu permiteau nici gruparea instructiunilor in unitati separate (funcții sau proceduri) cum este cazul limbajului asembler. Cu alte cuvinte, o problemă de baza trebuia imparita în repetate rânduri astfel încât sa fie alcatuita din elemente mici, implementabile usor in limbajul de programare.

O alta problemă a programării clasice era diferentierea dintre cod si subrutinele de prelucrare a datelor, ingreunand procesul de dezvoltare sau impiedicand extinderea acelui program. Astfel s-a ajuns la concluzia ca aceste două entități (date și subrutine) trebuiesc grupate într-un anumit mod, astfel încât subrutinele să "cunoasca" permament datele ce le prelucrează și, mai mult decât atât, sa poata sa formeze un modul, adică o unitate care diferentiaza implementarea de interfață, ceea ce ofera posibilitatea refolosirii codului. A apărut astfel conceptul de clasă. Clasa realizează de fapt ceea ce s-a prezentat anterior: contopirea datelor și unitatilor de prelucrare a acestora într-un modul, unindu-le astfel într-o entitate mult mai naturală. Deși tehnica se numește "Programare Orientată Obiectual", conceptul de bază al ei este Clasa. Clasa, pe lângă faptul că abstractizează foarte mult analiza si sinteza problemei, are proprietatea de generalitate, ea desemnând o mulțime de obiecte care împart o serie de proprietăți.

Principii de bază

Abstractizarea – programul poate ignora unele caracteristici ale informației manipulate, adică poate sa se concentrezi doar asupra esențialului. Acel obiect poate executa acțiuni, isi poate modifica starea și de asemenea poate comunica cu alte obiecte fără a dezvălui modul in care au fost implementate respectivele faculitati.

Încapsularea – reprezinta contopirea datelor cu codul, putand ascunde informatii, acestea fiind posibil accesate doar prin intermediul unor functii puse la dispozitie de dezvoltatorul aplicatiei, functii de SET si GET. Prin intermediul acesor functii se realizeaza o interfata de comunicare catre alte obiecte.

Figura 2.4.1 Conceptul de obiect

Polimorfismul – reprezinta procedura de a interpreta fiecare obiect diferit in functie de tipul lor. Mai exact, se pot redefini metode pentru clase derivate. Ca exemplu aveam o clasă Figura_geometrica si putem defini o metodă arie. Din acea clasa daca dezvoltam Cerc si Dreptunghi, metoda arie poate fi redefinita pentru fiecare clasa in parte.

Moștenirea – permite si sta la baza polimorfismul și încapsularea, definind si creeand noi clase specializate plecând de la clasa de baza deja definite – acestea pot mosteni datele si metodele initiale, fără a fi nevoie de a-l redefini. Mostenirea permite construirea unor noi clase ce pastreaza caracteristicile și comportartamentul, deci datele și funcțiile membru, clasele definite initial, clase ce se numesc clase de bază, fiind posibilă redefinirea sau adăugarea datelor si functiilor noi. Se utilizează ideea: ”Anumite obiecte sunt similare, dar în același timp diferite”. O clasă moștenitoare care are una sau mai multe clase de bază se numește clasă derivată. Esența moștenirii constă în posibilitatea refolosirii lucrurilor deja implementate.

Ideea de POO este de a dezvolta aplicatiile ca un set de obiecte, unități individuale de cod ce comunica unele cu altele, în locul simplelor liste de instrucțiuni sau de apeluri de functii si proceduri precum programarea procedurală.

Obiectele POO reprezinta de regula obiete din viața de zi cu zi, astfel încât aplicatiile dezvoltate prin paradigma POO sunt mult mai ușor de înțeles, de depanat și de dezvoltat decât aplicatiile procedurale. Aceasta este adevărată mai ales în cazul proiectelor software complexe și de mari dimensiuni cu o echipa numeroasa , care se gestionează cu ajutorul ingineriei programării.

Limbajul C#

Sintaxa C# este foarte expresiva, dar este, de asemenea, simplu și ușor de învățat, fiind foarte usor recunoscuta de catre dezolvatorii de C, C++ sau Java.. Programatorii ce cunosc cel putin unul din aceste limbaje se poate adapta foarte rapid mediului C# simplu si usor de invatat. C# simplifică mult din complexitatea C++ și oferă caracteristici puternice, cum ar fi tipuri de valoare nulă, enumerările, delegați, expresii lambda și acces direct la memorie pe care nu se găsesc în Java. C# suporta metode și tipuri generice, care oferă siguranță sporită și performanță.

Ca un limbaj orientat-obiect, C# suporta conceptele de încapsulare, moștenire, și polimorfism. Toate variabilele și metodele, inclusiv metoda Main, punctul de intrare aplicației, sunt încapsulate în definiții de clasă. O clasă poate moșteni direct de la o clasă părinte, dar se pot implementa oricate interfețe. Metode ce suprascrie metode virtuale într-o clasă părinte cere cuvântul cheie de „overide” ca o modalitate de a evita redefinirea accidentala. În plus față de aceste principii orientate-obiect de bază, C# simplifica procesul de programare prin mai multe tehnici inovatoare, inclusiv următoarele:

-Semnături metoda încapsulate numite de delegați, ce permit notificări de evenimente în condiții de siguranță..

-Proprietati, care servesc drept accessori pentru variabile membru private.

-Atribute, care oferă metadate declarative .

-Comentarii XML Inline in documentatie.

-Language-Integrated Query (LINQ).

Procesul de constructie al unui program C# este simplu comparativ cu C și C++ și mai flexibil decât în Java. Nu există fișiere antet separate, și nici o cerință ca metodele și tipurile de date sa fie declarată într-o anumită ordine. Un fisier sursă C# poate defini orice număr de clase, structs, interfețe, și evenimente.

Figura 2.4.1.1 Etapele rularii unui proiect c#

3. Implementarea proiectului de diploma

3.1 Definirea cerintelor

Proiectul constă în dezvoltarea unei aplicații de tip Web ce oferă o alternativa online la biblioteca , sa vina ca o completare la modul de lucru cu cartile si documentele din bibilioteca si trebuie sa asigure urmatoarele facilitati:

Modul de cautare carti, ce asigura afiseara pe categorii a cartilor aflate in cadrul bibliotecii, categorii precum: suport de curs,carti socio-umate, carti tehnice dar si cartile editurii Academiei Tehnice Militare. De asemenea modulul trebuie sa ofere detalii despre orice carte din stoc, sa afiseze disponibilitatea ei si sa aiba o functie de cautare eficienta, putand cauta si in functie de autori, titlu, cota, isbm. Administrand o baza de date cu tabelul cu carti de peste 25.000 de intrari e necesara o administrare eficienta si rapida pentru functii de filtrare si cautare.

Modul dedicat materialelor studentilor, acesita putand sa puna la dispozitia celorlalti diferite documente (carti,caiete scanate, rezolvari de probleme) pentru materiile de studiu din facultate. Pentru a garanta accesul la upload-ul de documentele trebuie ca studentul sa se autentifice pe o pagina separata cu un nume si o parola prestabilita la biblioteca.

Modul de acces la publicatii, reprezinta accesul la titlurile si documentele publicate de profesorii academiei de-alungul carierelor acesora, cu optiuni avansate de cautare si ordonare, precum si de introducere publicatii de catre un utlizator cu drepturi speciale.

Aplicatia trebuie sa aiba un design placut, intuitiv, facandu-l usor de folosit.

Aplicatia trebuie sa functioneze rapid si eficient, garantand conexiuni multiple in acelasi timp.

Trebuie sa ofere confidentialitatea datelor, sa ofere un nivel de baza de securitate.

3.2 Instalarea aplicatiei

Ceritele de sistem pentru rularea aplicatiei includ un server de web avand biblioteca PHP instalata si un server de MySQL in care se stocheaza baza de date a aplicatiei. Aceasta face ca aplicatia sa poata functiona atat pe sisteme bazate pe distributii de linux cat si pe statii de calcul avand instalat sistemul de operare Windows. Pentru simplificarea instalarii programelor pentru asigurarea functionarii proiectului vine ajutor pachetul XAMPP, ce cuprinde un set de programe necesare creeari unui server web avand incluse bibliotecile necesare. XAMPP este sub licenta GNU General Public Licence. De asemeana, programul ofera versiuni si pentru alte sisteme de operare precum MacOS, Solaris si unele distributii de linux.

3.2.1 Instalarea pe sistemul de operare Windows

Pentru sistemul de operare Windows, pachetul XAMPP este suficient pentru a asigura functionalitatea aplicatiei, deci descarcam pachetul cu versiunea 1.8.3 de pe pagina oficiala (https://www.apachefriends.org/ro/index.html) si il instalam bifand ca optiuni de instalare din categoria Server, Apache, MySQL si FileZilla Server, din categoria Program Languages: PHP si phpMyAdmin. Programul Apache e esential pentru rularea unei aplicatii web, el fiind cel care creeaza serverul web, accesibil prin protocolul HTTP. MySQL reprezinta suportul pentru baza de date si FileZilla asigura creeare unui server de FTP, ce permite transferul de fisiere la distanta, de pe o statie pe alta. PhpMyAdmin este o librarie scrisa in limbajul PHP, pentru a oferi o interfata grafica, usor de utilizat pentru manipularea bazei de date printr-un set de functii de baza ca: creeare baza de date, creeare tabel, modificare structura tabel, import baza de date din fisier, export baza de date in fisier, consola pentru comenzi SQL etc.

Figura 3.2.1.1 Instalare XAMPP

Dupa instalare programul va deschide navigatorul cu adresa implicita locala (http://127.0.0.1 sau http://localhost , localhost fiind similar cu 127.0.0.1).

Figura 3.2.1.2 Instalare cu succes XAMPP

In urmatorul pas copiem arhiva aplicatiei de proiect in folderul “htdocs” din locatia de instalare a programului XAMPP, urmand s-o dezarhivam folosind un utilitar specializat (WinZip, WinRAR etc.). Inainte de acest pas e nevoie sa stergem toate fisierele si folderele din folderul “htdocs”, documente ce nu mai sunt necesare, ele doar confirmand functionarea in parametri normali a serverului Apache impreuna cu PHP.

3.2.2 Instalarea pe o distributie de linux

Pentru instalarea aplicatiei pe un server ce ruleaza linux s-a ales o statie pe care este instalata distributia OpenSuSE versiunea 12.3. Pe server va fi instalata versiunea 1.8.0 a programului XAMPP, versiune ce nu necesita o interfata grafica KDE sau GNOME. Este necesar acest aspect intrucat controlul serverului linux il avem de la distanta, prin SSH, folosind utilitarul menionat in breviarul teoretic, PuTTY.

Incepem prin a ne conecta la statia linux introducand adresa IP a serverului si alegem protocolul SSH. Dupa introducerea credentialelor corecte trecem in modul superuser folosind comanda su si introducem parola de root.

Acum avem acces si drepturi totale asupra sistemului, drepturi necesare pentru pornirea serviciilor de web pe care le vom instala. Pachetul XAMPP il vom descarca intr-o locatie noua, si pentru asta creeam un folder nou opt in directorul radacina. Din acest folder descarcam pachetul XAMPP folosind comanda wget http://ftp.jaist.ac.jp/pub/sourceforge/x/project/xa/xampp/XAMPP%20Linux/1.8.0/xampp-linux-1.8.0.tar.gz

Executam comanda unzip xampp-linux-1.8.0.tar.gz pentru a dezarhiva pachetul XAMPP descarcat in acelasi folder. Navigam in folderul nou lampp si intram in folderul htdocs. Acest folder va fi facut public de catre serverul web si vol descarca aplicatia proiectului de diploma in acel folder. Dupa copierea de pe un dispozitiv extern de stocare sau descarcare de pe retea vom avea fisierele din proiect introduse in folderul htdocs.

Iesim in directorul radacina /opt si aici acordam acces deplin fisierelor parte din XAMPP prin comanda chmod 755 * . Motivul acordarii accesului o reprezinta functiile de citire si scriere de fisiere pe care le apeleaza unele functii din proiect.

In continuare configuram serverul Apache cu librariile PHP, editand fisierele httpd.conf si php.ini. In fisierul http.conf putem sa configuram portul de pe care sa asculte cererile HTTP, dar si daca dorim sa facem serverul public pe internet, in cazul in care avem un IP public.

Din php.ini modificam paramametri referilor la dimensiunea maxima la fisierelor transmise prin cereri POST. Cautam randul “upload_max_filesize” si ii atribuim o valoarea mai mare decat a fisierului SQL.

Acelasi lucru il facem si pentru parametrul “post_max_size” caruia ii atribuim de asemenea o valoare mai mare decat a fisierului cu baza de date

Pornim aplicatia XAMPP prin comanda ./lampp start care v-a pune in executie serverele de web, baza de date si trasfer de fisiere. Pentru a opri aplicatia executam ./lampp stop, iar pentru a reporni numa modificarea unor setari ./lampp restart.

3.2.3 Crearea bazei de date a aplicatiei

Dupa cum s-a precizat anterior, pachetul XAMPP vine cu utilitarul phpMyAdmin ce ofera facilitatea de a efectua operatiuni de baza asupra unui server MySQL. Din aceast utilitar vom creea baza de date cu numele “biblioteca” in care vom stoca dinamic toate informatiile de care o sa avem nevoie in proiect. Pentru asta intram in panoul de control al XAMPP si alegem butonul de “Admin” din cadrul modului MySQL. Se va deschide pagina phpMyAdmin si din Eticheta “Databases” scriem numele bazei de date (biblioteca) si dam Create

Figura 3.2.3.1 Crearea unei baze de date

3.2.3 Migrarea bazei de date de la MSSQL la MySQL

Acest pas asigura transferul bazei de date de pe statiile de lucru ale bibliotecii pe serverul unde e instalat serverul de web. Intrucat statiile de lucru ale bibliotecii functioneaza doar in intervalul orar al personalului angajat, este necesara o copie a bazei de date de pe acea statie pe un server de unde poate fi accesata oricand. O solutie fiabila si accesibila o reprezinta baza de date MySQL, usor integrata cu solutiile web existente. Pentru realizarea conversiei bazei de date s-a folosit un utilitar scris in C#, “MSSQL to MySQL Tool”. Acest program se conecteaza la adresa unde este instalat Microsoft SQL Server 2008 folosind credentialele furnizate si extrage de acolo tabelele dorite exportandu-le in format .SQL. Acest format e permis la importul bazei de date din phpMyAdmin. Dupa introducerea credentialelor, utilitarul incearca sa se conecteze la baza de date si returneaza un mesaj daca aceasta conexiune a fost cu succes sau nu. Daca a reusit, apar in lista toata tabelele bazei de date si le selectam pe toate pentru a le exporta, lucru ce se executa din butonul “Export Data”.

3.2.3.1 Convertorul din MSSQL in MySQL

Salvam fisierul adaugandu-i nume si extensia .SQL la final. Daca fisierul depaseste 8 MB, este nevoie sa se modifice setarile PHP, asfel incat sa permita requesturi POST mai mari de 8MB, precum si setarea de dimensiune maxima a fisierelor. Pentru asta deschidem panoul de control XAMPP si din butonul de config alegem sa editam fisierul PHP.ini, unde se afla setarile specifice lui PHP.

Cautam randul “upload_max_filesize” si ii atribuim o valoarea mai mare decat a fisierului SQL.

Acelasi lucru il facem si pentru parametrul “post_max_size” caruia ii atribuim de asemenea o valoare mai mare decat a fisierului cu baza de date

Salvam si repornim serviciul de Apache apoi intram in phpMyAdmin si selectam eticheta Import. La fisierul de import alegem fisierul pe care l-a exporat utilitarul de conversie MSSQL to MySQL, la setul de caractere alegem utf-8, bifam optiunea “Do not use AUTO_INCREMENT for zero values” si apoi apasam declansatorul “GO”. Dupa cateva minute va aparea un mesaj de confirmare cum ca s-au executat un numar de randuri (queriuri SQL). Din aces moment s-au creeat sau actualizat tabelele din biblioteca ce contin detaliile cartilor( tabelele “autori”, “carti”, “categorii”, “edituri”, “legautorcarte”,
“letcatcatscarte”) , studentilor inregistrati (tabel “cititori” ), operatorilor bibliotecii (tabel “operators”) si operatiunilor(tabelele “fise”, “operatiuni”).

Pentru a finaliza structura bazei de date sunt necesare construirea a inca 3 tabele, pentru functiile de “documente studenti”, “publicatii” si utilizatori cu drepturi speciale (ex. Administrator). Cream tabela “materii” in care avem numele materiilor din facultate si anul in care se studiaza, tabela documente, in care se precizeaza documentele partajate pentru o anumita materie, si tabela de administratori in care sunt specificati userii cu drepturi speciale.

Tabela de administratori are urmatoarea structura:

Tabelele de materii si documente au urmatoarele structuri:

Pentru tabela de publicatii este nevoie de diacritice si s-a folosit urmatorul set de caractere “utf8_romanian_ci” in detrimentul lui “latin1_swedish_ci”.

3.3 Structura aplicatiei web

Proiectul e structurat pe 5 subfoldere, pe langa fisierele apelate in mod direct prin legaturi tip hyperlink.

Documents: aici sunt continute toate documentele urcate de studenti pentru toate materiile in scopul partajarii lor.

Inc: acest folder cuprinde elementele grafice si de paginile CSS ale proiectului, precum si sablonul grafic pentru paginile aplicatiei. Se gasesc 2 foldere: css si images cu mai multe subfoldere, si 4 fisiere PHP pentru layout.

Models: cuprinde 7 fisiere PHP in care se gasesc 7 clase:

Accounts extinsa din User

Books extinsa din User

Materii extinsa din User

MySession

MysqliDb

Publicatii extinsa din User

User extinsa din MysqliDb

Public_html: aici sunt cuprinse fisiere PHP ce sunt include in mod dinamic in interiorul altor documente.

Publicatii: folder pentru stocarea fisierelor din cadrul publicatiilor

3.3.1 Diagrame de clasa

Diagramele de clasa, una din cele mai folosite diagrame in sistemele orientate-obiect, modeleaza vocabularul unui sistem. Vizualizarea static a unui sistem include cerintele functionale ale acestuia – serviciile pe care un sistem trebuie sa le ofere unui utilizator.

O diagrama de clasa prezinta un set de clase, interfete, si colaborari si relatiile dintre ele. Diagramele de clasa implica o descriere geneala a sistemului, de exemplu architectura sistemului si aspect detaliate ( atribute si operatii din interiorul unei clase). Cel mai des intalnite elemente unei diagrame de clasa sunt:

Clase

Interfete

Relatii de dependenta, generalizare si asociere

Notatii si constrangeri

3.3.2 Clasa MySQLiDb

Clasa MSQLiDb este o clasa ce cuprinde functii ce usureaza accesul si manipularea bazelor de date MySQL. La baza ei stau trei autori: Jeffery Way, Josh si Alexander V. Butenko. A ajuns la versiunea 2 si este sub licenta publica GNU Public License (http://opensource.org/licenses/gpl-3.0.html). Clasa cuprinde constructor prin care se conecteaza direct la MySQL si functii de faciliteaza manipularea usoara a bazei de date. Dar principala caracteristica a acestei clase o reprezinta protectia impotriva atacurilor SQL Injected, evitand introducerea de caractere interzise in sintaxa de comenzi SQL. Dintre functiile incluse mentionam:

__construct : constructor in care se conecteaza la baza de date pe adresa IP si portul specificat in parametri impreuna cu credentialele

getInstance: functie statica ce permite accesul la obiect

reset: reseteaza starea dupa executie

rawQuery: executa ceretea dupa pregatire

query: executa primele n linii din script, n primit ca parametru

get: alternativa la select

insert: functie de asigura inserarea de date

update: permite actualizarea datelor

delete: posibilitate de a sterge date

escape: parsare caractere speciale din limbajul SQL

ping: testeaza conexiunea in caz nefavorabil;

3.3.3 Clasa Access

Clasa Acces este mostenita din clasa User si permite validarea unui utilizator cu parola, verificand parametri primiti cu cei din baza de date. Daca datele sunt corecte, se returneaza randul respectiv din baza de date, iar daca sunt gresite returneaza null. Pentru acest lucru se folosesc 2 clase: getNume si getNumeAdmin, una pentru verificarea in tabelul bazei de date cu studenti si cea de-a doua pentru verificarea in tabelul cu utilizatori cu dreptul speciale (administratori).

3.3.4 Clasa Books

Clasa Books, mostenita din clasa User cuprinde functionalitatile necesare cautarii si afisarii detaliilor cartilor. De asemenea contine si functii pentru filtrarea cartilor in functie de categorii prestabilite: cursuri, carti socio-umane, carti ale editurii Academiei Tehnice Militare, carti tehnice.

Variabilele private sunt folosite pentru a stoca rezultatul apelarii bazei de date si pentru a calcula alti parametri necesari ca de exemplu numarul de pagini. Functiile curs, editura, tehnica si socio filtreaza si returneaza lista cu carti in functie de tipul documentelor. Pentru cautare avem functiile author, cota, ISBN, title si smart, in functie de tipul de cautare. Cu ajutorul functiei smart, este efectuata cautarea in toate campurile, returnand uniunea de rezultate.

3.3.5 Clasa Materii

Clasa Materii este o extensia la clasa User si asigura functionarea distributiei de documente pentru cursuri. Clasa cuprinde functii pentru accesarea si manipularea tabelelor materii si documente. Tabela materii indexeaza materiile introduse de administrator in functie de an. In tabela documente se introduc numele fisierelor urcate impreuna cu identificatorul materiei si numele celui ce-a urcat documentul.

Materiile sunt structurate in functie de anii in care se studiaza, aplicatia cerand la inceput anul de studiu apoi afiseaza materiile aflate in baza de date ce corespund cu anul selectat.

Pentru fiecare materie se cauta in tabelul documente din baza de date pentru fisiere PDF urcate de studenti. Daca se gasesc se afiseaza numele lor, impreuna cu numele studentului care le-au urcat pe server. Din pagina cu materiile disponibile putem adauga materii daca avem drept de administrator. Altfel putem doar vizualiza si accesa. Dupa accesare se deschide pagina cu documentele urcate pentru aceasta materie. Pentru a urca un document trebuie sa ne autentificam cu un cont de student sau admistrator, altfel putem doar vizualiza si descarca documentele.

Urcarea documentelor impune anumite restrictii precum tipul si dimensiunea fisierului, putand fi urcate numai fisiere tip PDF cu dimensiune limitata la 80MB. Pentru stergerea documentelor sunt impuse din nou restrictii, utilizatorii fara drepturi de administrare putand sa-si sterga doar documentele urcate de ei. In caz ca avem de administrare, din acceasi pagina putem sterge orice document sau intreaga materie impreuna cu toate documentele.

3.3.6 Clasa MySession

In aceasta clasa definim sesiunea impreuna cu paramatrii ei. Clasa nu are legaturi cu celelalte clase, instantierea ei facanduse din fiecare pagina unde este nevoie de autentificare.

3.3.7 Clasa Publicatii

Clasa Publicatii cuprinde functii pentru managementul publicatiilor, functii precum adaugarea de publicatii, afisare dupa titlu, an in oridine crescatoare sau descrescatoare, cautare avansata si sortarea rezultatelor cautarii.

Functiile de cautare in publicatii ne permin optiuni avansate, menite sa usureze accesul la informatiile cautate. Astfel, in campurile de cautare se pot introduce urmatoarele caractere speciale:

ghilimele: “cuv_cheie1 cuv_cheie2”: functia v-a cauta sintagma intreaga in campurile de cautare specificate (an, autor, titlu sau toate)

spatiul: in caz ca intalneste caracterul de spatiere, functia v-a cauta si v-a returna rezultate pentru fiecare cuvant cheie si v-a reuni rezultatele

caracterul and “&”: campul introdus este impartit in cuvinte cheie la intalnirea caracterului & si functia v-a returna rezultatele comune dintre fiecare cuvant chie introdus. Practic, se la intalnirea caracterului spatiu se va face reuniuniunea dintre rezultate, la intalnirea caracterului and se v-a face intersectie.

3.4 Testearea aplicatiei

3.4.1 Notiuni generale

Testarea software determină dacă un sistem software este gata de livrare și estimează nivelul de performanță al acestuia. Testarea furnizează o baza pentru interacțiunea cu persoanele implicate în proiect. Creșterea complexității sistemelor software a dus la o creștere a bugetului alocat acestei faze din procesul de dezvoltare al unui proiect (între 30 si 50%). O mare parte a efortului necesar realizării sistemelor software este alocată dezvoltării modelelor de testare și a aplicațiilor de testare automată.

Testarea este procesul execuției programului cu scopul de a pune în evidență erorile. Detectarea erorilor este scopul principal al testării. În același timp, prezintă interes atât dezvoltarea unor seturi de date de test adecvate care sa conducă la activarea erorilor precum și modalitățile de alocare a timpului necesar testării, în special în sistemele de mare complexitate.

Metodele de testare dinamică presupun executarea programului folosind așa numitele date de test. Datele de test se construiesc conform cerințelor funcționale specificate, iar rezultatele furnizate de program se compară cu cele prezentate în specificații.

Metodele de testare statică cuprind verificarea programului, analiza anomaliilor, inspecția codului. Verificarea programului necesită specificarea precondițiilor la intrare și a postcondițiilor la iesire. Analiza anomaliilor caută eventuale comportări anormale ale programului (spre exemplu, porțiuni de cod care nu sunt executate niciodata). Scopul testării statice este de a analiza sistemul software și de a deduce operatiile sale curente ca o consecință logică a deciziilor de proiectare.

Aceasta modalitate de testare nu necesită execuția programului. Urmatoarele metode de testare vor fi puse in aplicare dupa terminarea și în timpul dezvoltării programului software:

3.4.2 Schema de testare

Etapele schemei de testare

• Se selectează ce trebuie măsurat (cuantificat) de testul respectiv. Înainte de realizarea testului, trebuie identificate scopurile acestuia. Scopurile pot fi diferite (spre exemplu, testarea fiabilității, testarea completitudinii cerințelor).

• Se decide cum se face testarea a ceea ce trebuie testat. După ce s-a stabilit ce este de testat, trebuie decis cum se realizează testele relevante.

• Se dezvoltă cazurile de test. Pentru tipurile de testare deja acceptate, trebuie creată o colecție de cazuri de test (situații de test) pentru antrenarea sistemului supus testarii.

• Se determină rezultatele asteptate ale testului respectiv.

• Se execută cazurile de test.

• Se compară rezultatele obținute cu cele așteptate

3.4.3 Cazuri de testare

Similar Posts