Documente Academic
Documente Profesional
Documente Cultură
Coordonator tiinic:
C. U. D. I.
C
Oana Andreea
Ianuarie 2014
Cuprins
Cuprins
Generaliti
1.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Gestiunea informatic . . . . . . . . . . . . . . . . . . . . . . . .
2
2
2
Concept ARHA/SM
2.1 Cerine preliminare . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Concluzii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Proiectarea de nivel nalt . . . . . . . . . . . . . . . . . . . . . .
3
4
8
9
Tehnologia de proiectare
3.1 Concepte generale . . . . . . . . . . . . .
3.2 Dezavantajul SaaS . . . . . . . . . . . . .
3.3 Tehnologia de stocare . . . . . . . . . . .
3.3.1 Fiiere plane . . . . . . . . . . . .
3.3.2 RDBMS . . . . . . . . . . . . . .
3.3.3 Proiectarea i modelarea RDBMS
3.3.4 Produse soware RDBMS . . . .
3.3.5 Concepte NoSQL . . . . . . . . .
3.3.6 Teorema CAP . . . . . . . . . . .
3.3.7 ORM-ul i Consideraii nale . .
3.4 Limbajul de programare . . . . . . . . . .
3.4.1 Tehnologii server-side . . . . . .
3.4.2 Tehnologii client-side . . . . . .
3.5 Infrastructura . . . . . . . . . . . . . . .
Anexe
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
11
12
13
15
16
17
19
21
22
23
23
27
28
30
Bibliograe
31
1
1.1
Generaliti
Introducere
1.2
Gestiunea informatic
Concept ARHA/SM
2.1
Cerine preliminare
O simpl cutare Google pe termenul birocraie excesiv a returnat, la data scrierii acestui
document, aproximativ 150.000 rezultate
2.2
Concluzii
Dei realizarea unui sistem informatic implic mai multe etape teoretice, precum:
Stabilirea cerinelor
Analiza i realizarea de specicaii
Proiectarea
Implementarea
Testarea funcional pe uniti
User Acceptance Testing
majoritatea analitilor de sistem au tendina de a parcurge parial acest ux,
dac nu doar una singur scierea de cod lucru explicat prin tendina de
supra-atribuire a sarcinilor de lucru i nedistribuia corect a membrilor ntro echip, dar nu rar si din cauza ntrzierilor sau nepredrii din partea clientului
a cerinelor produsului.
Dar tot att de adevrat este i faptul c parcurgerea acestor etape poate duce
la rezultate superioare i la eliminarea unor erori de proiectare i programare
nc din fazele iniiale ale proiectului. Ceea ce este mai duntor este faptul c
de obicei se renun la etapele de analiz i proiectare ale produsului, care sunt
etape cheie n dezvoltarea aplicaiei, ele furniznd o schematizare i o vedere de
ansamblu, care duc la o nelegere mai profund a problemei abordate.
Proiectarea unei aplicaii soware complexe, de dimensiuni mari, dezvoltat
n cadrul unei echipe de soware, nu se face trecnd direct la implementarea
programului, ci trebuie s urmeze etapele enumerate mai sus. Dup cum se
observ, proiectarea nu se termin odat cu implementarea, pentru c sistemul
8
creat trebuie testat si apoi instalat. Dup instalarea produsului soware acesta
trebuie ntreinut, operaie care trebuie realizat continuu.
Ceea ce s-a descris mai sus constituie unul din cele trei cicluri ale metodologiilor utilizate n analiza si proiectarea sistemului, i anume ciclul de via al unui
sistem informatic o metodologie comun de dezvoltare a sistemelor, caracterizat prin mai multe faze care marcheaz evoluia eforturilor de analiz i
proiectare a sistemelor (Hoer), i care constituie obiectul de studiu al ingineriei
programrii (este un domeniu care ncearc o abordare sistematic a dezvoltrii,
operrii, ntreinerii si retragerii unui program de pe pia).
n cazul de fa, s-a preferat o analiz a sistemelor deja existente, precum i un
studiu asupra utilizatorilor acestor sisteme i agregarea neajunsurilor raportate
pe parcursul exploatrii acestor sisteme ntr-o form simplicat, prin elaboarea
cerinelor capitolului anterior.
2.3
Modulul furnizori lucreaz mpreun cu modulul inventar i modulul hardware i urmrete att administrarea furnizorilor de servicii i produse, ct
i plasarea de comenzi noi n cazul unor praguri ajustabile, e din inventar,
e prin declanarea unor evenimente observate de senzori (spre exemplu,
creterea excesiv a temperaturii n camera frigoric poate solicita n mod
automat o investigaie), precum i sugera pli automate, prin intermediul
modulului bancar
Modulul clieni este un modul similar cu cel de furnizori, dar mai simplicat
Modulul rapoarte depinde de majoritatea celorlalte module i permite
generarea de rapoarte n funcie de date individuale sau agregate
Modulul de securitate este implementat n toate modulele existente,
prin solicitarea i autenticarea jetoanelor unice oferite de modulul de
securitate; modulele pot oferi securitate mai granular dect cea implicit
- la nivel de modul. Acest modul ofer utilizatorilor i jetoanele unice,
n funcie de conrmarea autenticitii lor (spre exemplu prin perechi de
tip user-parol, sau n colaborare cu modulul hardware, prin citirea unui
smartcard, sau mpreun cu modulul angajai, prin citirea cardului de
access i unui cod PIN, etc)
Modulul angajai i bunuri urmrete buna desurare a unor operaii precum deplasarea vehiculelor, pontarea angajailor, plata salariilor, accesul
n incint (n colaborare cu modulul hardware).
Modulul bancar permite efectuarea de diferite pli ctre diferite bnci
Modulul backup efectueaz copii de siguran ale datelor, ns, datorit
infrastructurii server care va implementat pentru stocarea datelor
(server multiple cu baze de date hot-standby, precum i sisteme de stocare
RAID10) nu va utilizat dect n situaii excepionale (spre exemplu, n
cazul n care clientul prefer lucrul oine i ARHA/SM nu este oferit ca
SaaS, ci ca main virtual).
Aceste module vor funciona corelat, prin schimbul de mesaje de tip JSON
ntre ele, i n funcie de observaiile empirice cute n producie, vor putea
distribuite pe diverse servere (evident, mai puin modulul hardware, care va cu
siguran modulul cu distribuia cea mai mare ntre clieni, anume de 1:1, pentru
a putea utiliza imprimantele termice i/sau casele de marcat).
Mesajele vor putea emise nu doar de ctre modulele existente pe servere,
ci n timp, i de alte module dezvoltate n mod independent de ctre clieni sau
furnizate la cerere.
10
Tehnologia de proiectare
3.1
Concepte generale
3.2
Dezavantajul SaaS
Soware as a service
11
3.3
Tehnologia de stocare
+ Stocare /
+ Facturi /
factura -01
factura -02
factura -05
+ Furnizori /
furnizor -01
furnizor -02
+ Angajati /
angajat -01
+ Bilant /
+ Venituri /
2014 -01 -01
2014 -01 -02
2014 -01 -03
+ Cheltuieli /
2014 -01 -01
2014 -01 -03
n aceste iere se stocheaz cel mai adesea date sub form tabular sau
de forma variabil=valoare. Putem de exemplu, rezuma toi furnizorii ntrun singur ier ca apoi s enumerm caracteristicile specice ecruia (nume,
cod CAEN, adres, telefon primar) n acest ier. Datele vor introduse cu
un furnizor pe rnd (separte prin caracterul ascii \n, cunoscut ca separator
de linie, cod 0x0A) i valorile dintre diferite cmpuri pot separate printr-o
multitudine de caractere, spre exemplu, caracterul tab (\t, cod 0x09), virgule
sau alte simboluri speciale - cu condiia ca acest caracter de separare s nu e
folosit n datele propriu-zise, sau s e implementat un sistem de escaping spre exemplu, cel din standardul C prevede ca introducerea caracterului ascii
0x0A se face cu codul \n, al caracterului tab, cu codul \t, iar al caracterului \,
folosit n scopul special de a aa caractere neprintabile, cu codul \\. Fiierele
de acest tip prezint ntotdeauna riscul ca utilizatorii s le modice manual,
precum i s le defecteze iremediabil prin introducerea caracterelor de escape.
13
14
3.3.2 RDBMS
Bazele de date ofer un mod de acces la date simplicat, conform unor reguli
descrise de programatorii aplicaiei precum i metode de introducere i modicare. Bazele de date sunt o urmare logic a informatizrii diferitelor aspecte din
toate domeniile, istoria lor oferind o serie de pai tot mai mari, de la cabinetele
de are.
Bazele de date relaionale sunt o subgrup a bazelor de date, care prevd un
set de reguli descrise de Edgar Codd. n esen, ele sunt simple tabele ntre care
pot exista diferite legturi. Sistemele de gestiune ale bazelor de date relaionale
nu sunt un concept nou. Apar din 1974, din eforturile IBM depuse pentru
System R, primul prototip RDBMS. Aceste pachete soware au ajuns deosebit
de complexe i cu performane ridicate, tehnologiile aferente ind un subiect
dezbtut att n cercurile academice ct i n grupurile de cercetare private - o
serie de subiecte sunt utilizarea modelelor i obiectelor, conceptul de tranzacii
atomice (un grup de tranzacii e are succes integral la introducere e toate
tranzaciile eueaz), tehnici de control pentru accesul concurent, modicarea
limbajului de interogare, mbuntiri referitoare la tehnicile de stocare sub RAID
(acces paralel la uniti de disc).
Sistemele RDBMS se pot clasica n
Stocare n memorie cu backup pe discuri, pentru acces mult mai rapid
(spre exemplu, SAP HANA).
Orientat pe eveniment care ofer suport programatic pentru declanarea
anumitor condiii n date sau relaii: introducerea unui rnd, scderea
totalului de coloane n tabela extern sub un numar dat, etc. Sunt
cunoscute cu denumirea de triggers
Fermele de date i bazele de date de tip cloud exist n alt locaie, de
obicei subcontractat de la o companie care se ocup doar de baze de date,
i uneori pot paratajate i cu ali clieni pentru data mining sau marketing
Bazele de date distribuite sunt stocate pe mai multe sisteme de calcul
Bazele de date integrate (embedded) fac parte comun cu aplicaia, r a
necesar un pachet soware daemon, ind distribuite de obicei ca biblioteci
statice - spre exemplu sqlite3.
textbf Bazele de baze de date sau bazele de date federate constau n sisteme
RDBMS distincte integrate transparent de un sistem central, numit sistem
de management federat (FDBMS)
15
16
comparativ cu:
1
2
18
poate vizualizat ca un document zic, pe care pot scrise date arbitrare (numele coloanelor, subtabele sau valori pentru coloane). Spre exemplu, n problema
anterioar a ierelor plane, se creaz cte un document pe furnizor, o coloan
n ecare document numit Telefon care va conine perechi de tipul: Telefon
primar - pentru toi furnizorii, Telefon pentru comand produs x - pentru al
doilea furnizor i Telefon suport tehnic pentru al treilea furnizor.
Problema datelor parial suprapuse este acum rezolvat mult mai elegant,
ntruct aceste numere de telefon au elemente n comun (modul de utilizare),
dar au i date asociate (cnd este necesar apelarea lor) care nu pot stocate
ntr-o structur ca un ier simplu. Orice sistem DBMS pe baz de document
are un limbaj de interogare care descrie un view, anume un mod de acces la
date. Spre exemplu, n unele sisteme pe baz de document, putem crea un view
pentru aarea telefoanelor unui furnizor, dar i unul pentru aarea agendei
telefonice a companiei. Nu va exista diferen n implementare: aceluiai view
i va solicitat s emit coloana cu telefoane pentru un furnizor dat, sau pentru
toi furnizorii.
Unele implementri, precum CouchDB ofer funcii de partiionare sau
replicare att n regim Master-Slave ct i n regim Master-Master[1]. Aici se
nate o problem interesant, specic nu doar acestui pachet, ci a oricrui
DBMS care favorizeaz partiionarea n detrimentul integritii: ce se ntmpl
dac, prin absurd, doi utilizatori conectai la servere diferite (dar temporar
necorelate), vor modica n acelai moment aceleai date? Problema nu este
deosebit de comun, ntruct, n general ambele servere vor asocia datelor
momentul modicrii (iar un sistem de tip NoSQL n general pstreaz i
informaia istoric), iar ansa ca ambii utilizatori s introduc datele n acelai
moment, pentru rezoluii de milisecund este de 1/100 (dac considerm c cei
doi utilizatori se coordoneaz i au un timp de reacie de 10ms, ambele cazuri
destul de improbabile); pentru a preveni ns acest gen de probleme pentru
datele generate automat, sistemele de tip NoSQL confer mereu i o modalitate
de arbitraj care informeaz aplicaia asupra conictelor i i permit s declare o
singur intrare ca ind cea mai recent.
DBMS cu perei KV sunt un concept deosebit de simplu: un server stocheaz
diferite de date prin introducerea lor - la introducerea oricreia i se aloc un
index, adresarea acestora cndu-se prin furnizarea cheii obinute anterior, de
obicei dat de o funcie hash sau a unei valori unice, aleatoare. Aplicaia care
folosete sistemul decide care este modul de utilizare al acestor valori.
ntruct majoritatea relaiilor, cnd sunt necesare, sunt implementate n
aplicaie, se pot genera sute de interogri, ns DBMS pe baz de cheie i valoare
(numite n continuare KV din eng., key-value store) rspund la acestea mult mai
20
rapid dect ar dura o operaiune de tipul scanare integral tabel ntr-un RDBMS.
Acest sistem este avantajos pentru structuri ierarhice: execuia operaiunii fulltable scan i returnarea datelor, pentru construirea unui arbore devine imposibil
dup stocarea unui anumit volum de date pe RDBMS, astfel nct este necesar
parcurgerea ntregii structuri prin interogri repetate. ntruct DBMS KV sunt
adesea stocate complet n memorie, accesul la date este mult mai rapid pentru
un set similar de date, comparativ cu RDBMS.
Sistemele DBMS KV exceleaz la partiionare orizontal: cnd un sistem
ncepe s e utilizat la maxim, un al doilea poate congurat s preia jumtate
din interogri prin partiionarea datelor, dup cheie, pe jumtate: spre exemplu,
cheile cu prex ntre 0 i 7 vor preluate de sistemul vechi, iar cele ntre 8 i 15
de al doilea server (considernd c toate cheile sunt notate, spre exemplu cu 32
de simboluri hexazecimale) Partiionarea de acest tip este de obicei folosit cnd
este vorba de sute de milioane de intrri, dar avantajul este acum evident: cnd
returnarea sau introducerea datelor este lent, datele sunt din nou repartiionate.
DBMS de tip graf stocheaz date mpreun cu relaiile pe care le descriu.
Datele sunt de obicei noduri, ntr-o form similar cu documentele: spre exemplu
furnizorii, angajaii i clienii. Exploatarea implic construcia de legturi ntre
acetia i descrierea acestor legturi, spre exemplu data i casierul care a efectuat
o vnzare, precum i realizarea de observaii i deducerea unor relaii indirecte,
spre exemplu, numrul de produse reclamate defecte de ctre clientul x n funcie
de numrul de achiziii de submodule folosite n acel produs cumprate de la
furnizorul y.
3.3.6
Teorema CAP
clieni i mpreun cu aceasta, a tabelei de vnzri ctre un client (pe cheia unui
client anume), se obine o referin ctre un obiect de tip Client pe care ni-l putem
imagina cu variabilele-membru de tip: String nume; Date data_nasterii;
Integer suma_facturi, de unde primele dou variabile vor extrase din prima
tabel i coloanele cu acelai nume, iar cea de-a treia variabil va o funcie
agregat de tip SELECT SUM(total_factura) FROM facturi WHERE cumparator=17.
Exemple de sisteme de mapare ctre RDBMS sau ORM sunt, n funcie de
limbajul de programare, alese doar pentru faptul c suport RDBMSurile alese
(MySQL, PostgresQL, Oracle, IBM DB2, MSSQL)
C++: WtDBO, QxOrm, LitesQL
Java: Foarte numeroase, ntruct Java are drivere native pentru foarte
multe RDBMS: CAyenne, Hibernate, Ibatis, JDO, JOOQ
.NET: iBatis, NHibernate, Persistor.NET, SubSonic
PHP: CakePHP, CodeIgniter (acestea dou oferind funcii i de MVC, ind
mai degrab un cadru de dezvoltare rapid al aplicaiilor comparativ cu un
ORM, dar putnd folosite exclusiv ca ORM), PHPixie, Torpor, Zend, PDO
Python: Django, sQLObject, web2py
3.4
Limbajul de programare
hp://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites
24
26
3.5
Infrastructura
29
Anexe
30
Bibliograe
[1] J. Chris Anderson, Jan Lehnardt, Noah Slater, CouchDB: e Denitive Guide.
OReilly Media, ianuarie 2010, ISBN: 978-0-596-15589-6
[2] Eric Brewer, CAP Twelver Years Later: How the Rules Have Changed.
hp://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-havechanged, original n publicaia Computing Now (www.computer.org), 30
mai 2012
[3] Kevin Tatroe, Peter MacIntyre, Rasmus Lerdorf, Programming PHP. OReilly
Media, martie 2002. ISBN: 978-1-56592-610-3
Pe coperta patru este ataat o anex care reprezint multitudinea de tabele i
relaiile dintre acestea utilizate n proiectarea ARHA/SM.
Cheile externe cele mai des folosite sunt
id_client - cheie extern cu tabelul clienti care descrie un rnd aferent
din acesta
id_furnizor - cheie extern cu tabelul furnizori care descrie un rnd
aferent din acesta
id_anjagat - cheie extern cu tabelul angajat care descrie un rnd
aferent din acesta: angajatul care efectueaz o aciune - pontarea n
sistem, deplasarea cu un vehicul, propunerea unei tranzacii, modicri
de inventar
id_produs - cheie utilizat spre tabelul produse care descrie produsul
respectiv
id_factura - cheie spre tabelul facturi, care desemneaz detaliile
generale ale unei facturi
n continuare, prezentm i o scurt explicaie asupra unor tabele:
tranzactii - descrie tranzaciile care au fost propuse spre efectuare cu
bncile
banci - bncile cu care exist legturi contractuale, necesar pentru a
distribui tranzaciile
tranzactii_interne - descrie toate activitile nanciare care au avut
loc n companie, dar care nu necesit neaprat o rezolvare cu banca (spre
exemplu, vnzarea de produse sau achiziia de carburant)
31
angajati
facturi
facturi_produse - o tabel normalizat ntre produse i facturi care
conine listele de produse facturate pe ecare factur individual, conform
cheilor externe
venituri - totalitatea intrrilor n bilan din diferite surse
utilizatori - elemente de securitate
pontaj - momentele cnd utilizatorii au folosit cardurile de access sau alte
sisteme de pontare
repere_gps - date din teren, trimise de pe vehiculele aate n deplasri
bunuri - bunurile din proprietatea companiei
istorie_bunuri - date istorice asupra bunurilor (spre exemplu, reparaii
efectuate asupra vehiculelor)
detalii_contact - informatii de contact despre diverse persoane de
interes
32