Aplicatie Mobila Pentru Corelarea Cererii cu Oferta din Domeniul Agricol

Aplicație mobilă pentru corelarea cererii cu oferta din domeniul agricol

DEFINIREA PROBLEMEI (APLICAȚIE, GRUP DE APLICȚII SAU SUBSISTEM)

Datorită dezvoltării tehnologice, omul modern caută soluții cât mai simple și comode pentru finalizarea acțiunilor sale. Acesta se așteaptă ca întreprizând cât mai puține acțiuni să obțină cât mai multe informații, sau cât mai multe beneficii, să existe întotdeauna un rezultat mai mult decât mulțumitor pentru sine, indiferent de condiții.

Această dezvoltare a tehnologiei nu a fost posibilă fără dezvoltarea Internetului. Internetul este principalul element în dezvoltarea tehnologiei, dar și în consumul de tehnologiei de ultimă generație. Practic toate dispozitivele noi sunt construite pentru a se conecta la Internet și prin intermediul acestuia să își ruleze aplicațiile și să își îndeplineasă majoritatea funcțiilor.

Pe langă acest rol, Internetul este un foarte bun promotor. Prin intermediul acestuia se poate promova orice, de la o aplicație, la o platformă sau chiar un stil de viață prin tehnologiei, sau strâns legat de tehnologiei. Și cum consumatorii de Internet sunt principalii utilizatori de tehnologiei, această modalitate este una foarte bună, cu rezultate imediate.

Piața dispozitivelor mobile este într-o continuă creștere, iar cea a smartphone-urilor s-a dezvoltat foarte rapid în ultimii ani. Astfel, s-au dezvoltat foarte rapid și într-un număr foarte mare și aplicațiile mobile disponibile pentru noile dispozitive. Aceste aplicații au rolul de a înlocui majoritatea aplicațiilor și funcțiilor unuil laptop sau PC, tendința fiind ca majoritatea activităților desfășurate pe un PC sau laptop să poată fi realizate și pe un smartphone.

Aplicațiile mobile sunt din mai multe categorii precum jocurile și aplicațiile de divertisment, aplicațiile pentru socializare ( rețele de socializare), aplicațiile pentru sport și sănătate, aplicațiile pentru gestionarea timpului ( agende electronice), aplicații pentru e-commerce. Acestea din urmă sunt un nou tip de aplicații apărute în urma expansiunii rapide și neașteptate a e-commerce-ului in România. E-commerce-ul este transpunerea comerțului tradițional în mediul online. Aplicțiile de e-commerce au fost inițial aplicații Web, ulterior dezvoltându-se și aplicații mobile pentru acestea.

Scopul aplicațiilor de comerț electronic este de a expune produse și de a le vinde, dar cel mai important este acela de a le prezenta cumpărătorului cât mai facil, într-o manieră cât mai simplă și mai atractivă.

Pe piața românească s-au dezvoltat platforme de e-commerce sau de licitații, care sunt o formă a comerțului electronic, acestea sunt www.okazii.ro și www.olx.ro , în trecut existând și www.tocmai.ro care a fuzionat cu www.olx.ro . Aceste platforme sunt universale, nu se adresează niciunui sector anume, putând fi găsite tot felul de anunțuri pentru orice tip de produs sau serviciu.

Având în vedere aceste aspecte ale pieței aplicațiilor mobile din România se dorește realizarea unei aplicații mobile pentru corelarea cererii cu oferta din domeniul agricol.

Prin intermediul acestor platforme de e-commerce, orice utilizator înregistrat în aplicație poate expune produse către vânzare și orice vizitator al site-ului sau aplicației mobile poate vizualiza produsele expuse, își poate alege vânzătorul și poate cumpăra. Problema la aceste platforme este diversitatea prea mare a categoriilor de produse, neexistând un anumit domeniu sau sector asupra căruita să fie focalizată platforma. De aici se naște și problema diversității vânzătorilor și a neîncrederii în aceștia. Iar nu în ultimul rând apare și problema calității produselor expuse către vânzare, unele dintre ele prezentând un grad de uzură.

S-a ales specializarea pe un anumit sector și anume sectorul agricol deoarece potențialul României în agricultură este foarte mare. România era cândva grânarul Europei, apoi a încercat să devină o țară industrială. Nu a reușit, iar acum d.p.d.v. industrial, asistăm la un declin. Reducerea numărului de fabrici și apariția unor noi agenți economici care respectă normele UE de poluare sunt o veste bună pentru agricultură: România are din nou șansa să fructifice suprafețele de teren, clima, solul, și aerul curate pentru a face din nou agricultură și chiar agricultură bio.

În România, populația trăiește în proporție de 45% la sat. Aici sunt vârstnici pensionari, dar și tineri care încă nu au plecat la oraș, sau la muncă în alte țări. Acești oameni trăiesc la limita sărăciei, din agricultura de subzistență. Ei produc pentru gospodăria lor, și ar putea valorifica surplusul dacă ar avea cum să o facă.

Această aplicație se vrea o platformă online care are ca scop sprijinirea populației defavorizate prin sprijinirea muncii și încurajarea calității, corectitudinii și promptitudinii. Scopul nu este acela de a crea un bazar sau un bâlci, ci mai degrabă un parteneriat facilitat de o platformă de legatură între producător, consumator și transportator. Platforma facilitează crearea unor relații de durată, benefice pentru toate părțile.

Cu alte cuvinte, pe această platformă micii agricultori își vor expune produsele și prețurile de vânzare, cumpărătorii pot alege ce produse doresc, astfel piața de zi cu zi se realizează online prin intermediului dispozitivului mobil, iar micii transportatori pot avea comenzi zilnice sau săptămânale, aprovizionând astfel cumpărătorii (locuitori în marile aglomerații urbane, foarte ocupați).

Locuitorii de la oraș se aprovizionează din ce în ce mai mult de la supermarketuri și nu din piețele tradiționale. Din motive de calitate și de volume de asigurat, supermarket-urile nu se pot aproviziona decât de la furnizorii care le pot asigura aceste condiții. De multe ori, marfa vine din import sau de la ferme mari, puteric industrializate.

Și totuși, locuitorii de la oraș și-ar dori calitatea și prospețimea produselor de altă dată, chiar dacă ar plăti mai mult pentru ele. Însă nu au încredere în comercianții din piețe (care de multe ori sunt intermediari care vând chiar marfă de import drept marfă tradițională). Potențialii clienți ai acestor producători sunt clasa medie de la oraș, care lucrează 9-10 ore pe zi, nu au timp dar apreciează calitatea produselor și accesibilitatea lor.

Prin această aplicație mobilă cu rolul de platformă de e-commerce se poate crea o comunitate de producători autohtoni de încredere, cu produse de calitate și cu marea majoritate a cumpărătorilor mulțumiți de tranzacțiile efectuate. Prin aceste caracteristici se rezolvă problemele identificate mai sus referitoare la platformele online prezente în România.

ANALIZA MECANISMULUI ECONOMIC CARE URMEAZĂ A FI INFORMATIZAT PRIN PROIECT

Schimbul Electronic de Date (EDI – Electronic Data Interchange) a apărut prin anii 1960 și poate fi considerat strămoșul Comerțului Electronic (EC – Electronic Commerce). EDI oferă societăților comerciale posibilitatea să schimbe documente de afaceri într – o formă standard, utilizând mijloace electronice pentru prelucrarea și transmiterea acestora. În același timp băncile utilizează rețele dedicate pentru Transferul Electronic de Fonduri (EFT – Electronic Funds Transfer).

Comerțul electronic, e-commerce, apărut prin 1994, este comerțul care se desfășoară prin mijloace electronice, adică prin calculatoare și sisteme de telecomunicații. Cea mai mare parte a acestui comerț desfășurat între cumpărători – persoane și comercianți – companii se desfășoară prin rețeaua publică a Internetului, și de aceea a spune e-commerce echivalează cu a spune comerț pe Internet, sau comerț în timp real (online), dar acest comerț poate avea loc și prin rețele de telecomunicații care nu sunt publice ci aparțin unor sisteme private de plăți și transfer de fonduri.

O altă definiție, mai largă, descrie eComerțul ca fiind constituit din toate plățile în care datele tranzacției (plătitor, destinatar, sumă, etc) sunt transmise electronic, plătitorul și plătitul sunt implicați direct în tranzacție, iar toate informațiile necesare autorizării plății sunt schimbate între cele două părți, electronic.

Se poate spune că recent, odată cu creșterea accesibilității la Internet, comerțul electronic a captat interesul consumatorilor individuali și al societăților comerciale de orice mărime și preocupări.

Ideea de bază este că prin comerțul electronic putem realiza schimbul de idei, de bunuri, de cunoștințe pe lângă simpla vânzare/cumpărare de produse și servicii. Tehnologiile comerțului electronic pot fi utilizate pentru a conduce o afacere utilizând pentru comunicare Internet, Intranet sau alte rețele de calculatoare. În ultimii ani Internetul este din ce în ce mai utilizat pentru Comerțul Electronic.

Altfel spus eComerțul este un comerț rapid, care se desfășoară în timp real, și comod, iar cumpărătorii și comercianții au drept piață, prin Internet, întreaga lume, magazinele fiind deschise „24 din 24”.

Internetul a devenit un canal de comerț cu o putere incontestabilă în a facilita și crește vânzările unei game din ce în ce mai largi de produse și servicii. Într-un raport recent al companiei Ernst&Young (2008), se arată că peste 72% din consumatorii cărora Internetul le este accesibil îl utilizează și pentru cumpărături.

Comerțul electronic depinde puternic de o serie de infrastructuri de bază ale economiei globale, inclusiv de infrastructura rețelelor de comunicații. Cele mai noi realizări tehnologice legate de Internet (rata de transmisie de Gbps, mijloacele sofisticate de asigurarea protecției datelor, creșterea disponibilității și a accesibilității, interfață multimedia evoluată) fac Internetul tot mai atractiv pentru comerțul electronic.

Internetul, intranetul și alte rețele de calculatoare pot reduce substanțial costurile tranzacțiilor și pot facilita noi tipuri de tranzacții comerciale, precum și noi acorduri între cumpărători și vânzători, care să le permită desfășurarea activităților de comerț mult mai ușor.

În ultimul deceniu, Internetul a devenit un instrument extreme de util având un impact major în toate aspectele vieții. La fiecare jumătate de an apar schimbări așa de importante încât este imposibil de prevăzut unde se va ajunge în următorii 10 ani. În present, participăm cu toții la o revoluție care are loc în comerț și telecomunicații.

Extraordinara dezvoltare a interconectivității calculatoarelor în Internet, în toate segmentele societății, a condus la o tendință tot mai evidentă a companiilor de a folosi aceste rețele în aria unui nou tip de comerț, comerțul electronic în Internet, care să apeleze – pe lângă vechile servicii amintite – și altele noi.

Comerțul electronic (EC) este acea manieră de a conduce activitățile de comerț care folosește echipamente electronice pentru a mări aria de acoperire (locul în care se pot folosi de potențiali clienți) și viteza cu care este livrată informația.

În cadrul comerțului electronic distingem următoarele tipuri:

1. Business-to-business (B2B) Model de comerț electronic în care toți participanții sunt companii sau alte organizații (ex rtcoffice.ro)

2. Business-to-consumer (B2C) Model de comerț electronic în care companiile vând la cumpărători individuali – personae fizice (emania.ro, amazon.com)

3. Consumer-to-business (C2B) Persoane fizice (consumatori) care utilizează Internetul pentru a-și vinde produsele sau serviciile firmelor și/sau caută vânzători să liciteze pentru produsele sau serviciile de care au nevoie (telejob.ro, priceline.com).

4. Consumer-to-consumer (C2C) Consumatorii – vând direct la alți consumatori (okazii.ro, olx.ro)

5. Comerț mobil (m-commerce) – Tranzacții și activități de comerț electronic conduse prin mediu electromagnetic (telefonul mobil).

6. E – government Government-to-business (G2B) Model de comerț electronic în care o instituție guvernamentală cumpără sau vinde bunuri, servicii sau informații de la persoanele juridice (e-licitațir.ro).

7. Government-to-consumer (G2C) Acoperă relații govern-cetățeni la nivel de informl electronic în Internet, care să apeleze – pe lângă vechile servicii amintite – și altele noi.

Comerțul electronic (EC) este acea manieră de a conduce activitățile de comerț care folosește echipamente electronice pentru a mări aria de acoperire (locul în care se pot folosi de potențiali clienți) și viteza cu care este livrată informația.

În cadrul comerțului electronic distingem următoarele tipuri:

1. Business-to-business (B2B) Model de comerț electronic în care toți participanții sunt companii sau alte organizații (ex rtcoffice.ro)

2. Business-to-consumer (B2C) Model de comerț electronic în care companiile vând la cumpărători individuali – personae fizice (emania.ro, amazon.com)

3. Consumer-to-business (C2B) Persoane fizice (consumatori) care utilizează Internetul pentru a-și vinde produsele sau serviciile firmelor și/sau caută vânzători să liciteze pentru produsele sau serviciile de care au nevoie (telejob.ro, priceline.com).

4. Consumer-to-consumer (C2C) Consumatorii – vând direct la alți consumatori (okazii.ro, olx.ro)

5. Comerț mobil (m-commerce) – Tranzacții și activități de comerț electronic conduse prin mediu electromagnetic (telefonul mobil).

6. E – government Government-to-business (G2B) Model de comerț electronic în care o instituție guvernamentală cumpără sau vinde bunuri, servicii sau informații de la persoanele juridice (e-licitațir.ro).

7. Government-to-consumer (G2C) Acoperă relații govern-cetățeni la nivel de informare și prestare servicii publice (ex Plătirea taxelor online).

O formă foarte răspândită de e-commerce între consumatori și comercianții cu site pe Internet este aceea în care comerciantul folosește site-ul său doar ca pe un „catalog” de prezentare a produselor (descriere, preț, condiții de plată și livrare, etc), iar cumpărătorul alege, și dă o comandă de cumpărare, însoțită de identificarea și adresa sa, fără însă a și plăti.

Comerciantul îi va confirma primirea comenzii și livra marfa la domiciliu, moment în care va fi și plătit (de regulă cu numerar sau prin ramburs, dar și cu cardul, dacă operatorul care livrează marfa dispune de un terminal de plată POS mobil). În acest caz comanda este electronică și în timp real, iar livrarea și plata se desfășoară ulterior, de regulă în câteva zile (modelul de plată „pizza delivery”).

Comerțul electronic poate fi organizat și sub formă de piețe electroice. Piețele electronice sunt portaluri, adică site-uri de mari dimensiuni, care oferă servicii complexe asemănătoare unor piețe reale – mai mulți comercianți își prezintă produsele și serviciile în cadrul aceluiași site, cumpărătorii pot cerceta mai multe magazine virtuale, pot compara prețurile și pot participa la vânzările de produse prin licitație organizate de diverși vânzători, sau pot cumpăra la prețurile fixe afișate.

În cadrul unei licitații vânzătorul afișează produsul, un preț minim de pornire, și o durată a licitației, iar cumpărătorii declară prețul maxim pe care sunt dispuși să-l ofere, putând să modifice acest preț pe durata licitației întrucât pot vedea în orice moment prețul cel mai mare oferit curent. Vânzătorul alege, la sfârșitul perioadei de licitație, prețul cel mai mare și intră în contact direct cu cumpărătorul care l-a oferit, pentru a a încheia ulterior vânzarea și a stabili detaliile de realizare a acesteia, pe cale electronică, sau altfel.

Plata se poate face prin mijloacele electronice oferite de piața electronică sau prin mijloacele tradiționale existente între băncile celor doi. O piață electronică, procedura de licitație și mijloacele de plată sunt implementate prin aplicațiile specifice ale companiei care deține siteul, sau portalul, ce reprezintă piața electronică.

Aceste piețe electronice sunt deschise oricărui vânzător sau cumpărător, persoană fizică (consumator) sau companie, și oricărui produs sau serviciu, de la cărți vechi și muzică până la avioane cu reacție. Există multe astfel de piețe ca de exemplu eBay, Amazon, Olx, Okazii.

E-commerce-ul a cunoscut o dezvoltare spectaculoasă în ultimii 10 ani, ajungând în Statele Unite de la vânzări de peste 67 miliarde de dolari în 2004 la vânzări de peste 236 miliarde de dolari anul trecut (2014). Acest lucru se poate observa în figura de mai jos, ca rezultat al studiului realizat de statista.com.

Potrivit estimărilor principalilor jucători din mediul online românesc, împreună cu reprezentanții GPeC, retailul online autohton a depășit cifra de 1 miliard de euro în 2014, comparativ cu aprox. 600 milioane euro în 2013. Mai exact, piața de e-tail românească se situează între 1,1 si 1,2 miliarde de euro în anul recent încheiat, cifra vehiculată făcând referire exclusiv la produsele comercializate online (indiferent de natura lor) și nu la servicii, plata facturilor de utilități, bilete de avion, bilete la spectacole, vacanțe și călătorii etc.

Conform ultimului recensământ, România are o populație de 19,7 milioane de locuitori, din care aproape 10 milioane sunt utilizatori de Internet, rata de penetrare a Internetului în țara noastră fiind de 49,76%. Numărul de conexiuni mobile la Internet a crescut vertiginos de la 8,2 milioane în 2013, la 9,6 milioane la nivelul lunii iunie 2014, depășind pragul de 10 milioane în decembrie 2014.

Piața românească de e-tail se situează între 1,1 și 1,2 miliarde euro, aproape dublă ca valoare față de anul 2013 (când era estimată la aprox. 600 milioane euro). Totuși, segmentul e-commerce din totalul retail-ului este încă mic (între 2,2 si 2,5%).

Datorită stilului de viață accelerat al oamenilor, al tehnologiei care permite tot mai multă mobilitate, oamenii încep să mute multe activități pe mobil. Și din punct de vedere business, lucrurile se adaptează sau se mută pe mobil. Google are deja rezulate diferinte la căutări, în funcție de device-ul folosit, iar site-urile de e-commerce au aplicații dedicate pentru dispozitivele mobile. De aceea, majoritatea utilizatorilor au 1-2 dispozitive mobile, acces la internet în cea mai mare parte din timp și deja folosesc foarte mult telefonul mobil în timpul zilei pentru diferite activități.

Google consumer barometer (2014) explică potențialul de creștere mobile vs online:

Din cele 10 milioane de utilizatori de Internet, 7 caută produse și servicii online, iar 78% dintre cumpărători declară că au fost influențați de mediul online în decizia lor.

Toate aceste cifre sunt încurajate de accesul la internet (3g, 4g) care devine din ce în ce mai raspândit în țară, indiferent de altitudine sau îndepărtarea de aglomerările urbane. Dispozitivele mobile sunt nu doar portabile, dar și mai accesibile ca un desktop: costă mai puțin, nu necesită 220V în permanență, au acces mobil la internet, au cameră video încorporată, au aplicații pentru comunicare și marketing.

Potrivit http://refresh.ro zona de e-commerce din România este foarte diversificată, de la florării, la aparate foto, cărți, produse din domeniul fashion, anunțuri, până la electronice sau la piețe online (okazii.ro, olx.ro).

Cele mai importante 2 site-uri de comerț online din România sunt reprezentate de www.okazii.ro și de www.olx.ro .

Aceste platforme sunt structurate asemănător, oferind aceleași facilități. Sunt structurate pe categorii dintre cele mai diverse, utilizatorii oferind spre vânzare autoturisme, imibiliare, electronice și electrocasnice, îmbrăcăminte și cosmetice, casă și grădină, sport, timp liber, artă, agricultură, animale de companie, locuri de muncă. Pe lângă această clasificare există și o subclasificare a fiecărui domeniu, dar și o clasificare teritorială, după județ.

Orice utilizator al platformei își poate înregistra anunțul gratuit pentru o anumită perioadă de timp. Pentru ca anunțul să stea pe site mai mult decât perioada standard, utilizatorul trebuie să aibă un cont și să platească o anumită sumă.

O cumpărătură pe astfel de platforme online se realizează astfel: cumpărătorul accesează site-ul / platforma online prin intermediul unui navigator Web. Odată ajuns pe paginile magazinului virtual al comerciantului, va cerceta produsele prezentate și va selecta unul sau mai multe produse pe care le va pune apoi în coșul, sau căruciorul, virtual de cumpărături (shopping cart). Rolul coșului este de a aduna toate cumpărăturile și de a afișa totalul de plată. După ce cumpărătorul este decis și dorește să își finalizeze comanda, acesta apasă butonul de ”Cumpără”, ceea ce echivalează cu generarea unei comenzi ferme de cumpărare.

Cumpărătorul își va introduce datele de livrare și va alege modalitatea de plată: plata cu cardul sau plata la livrare. Dacă se alege plata la livrare, înainte de a fi procesată comanda și de a fi expediată, vânzătorul va contacta cumpărătorul pentru a confirma cu acesta comanda.

O altă posibilitate este aceea de a contacta direct vânzătorul, prin e-mail sau telefonic, uneori tranzacția realizându-se în urma înțelegerii celor doi, fără a mai fi intermediată de platforma online. În acest caz, platforma are rolul de catalog de prezentare a produselor, nu și de mijloc de intermediere a vânzărilor.

Aplicația

Aplicația mobilă pentru corelarea cererii cu oferta din domeniul agricol dorește să fie o platformă online de vânzare cumpărare a produselor agricole produse de către țăranii autohtoni. S-a ales această focusare pe un singur domeniu pentru a răspunde cât mai bine nevoilor vânzătorilor și a cumpărătorilor, din punctul de vedere al funcționalităților oferite, dar și pentru că este un domeniu caracteristic țării noastre.

Această platformă are ca scop sprijinirea populației defavorizate prin sprijinirea muncii și încurajarea calității, corectitudinii si promptitudinii. Prin aceasta se realizează o legatură de încredere între producător, consumator și transportator, se facilitează crearea unor relații de durată, benefice pentru toate părțile.

Cu alte cuvinte, cu ajutorul acestei aplicații mobile, micii agricultori își vor expune produsele și prețurile de vânzare, cumpărătorii pot alege ce produse doresc, își construiesc un coș de produse, astfel piața de zi cu zi se realizează online prin intermediului dispozitivului mobil, iar micii transportatori pot avea comenzi zilnice sau săptămânale, aprovizionând astfel cumpărătorii (locuitori în marile aglomerații urbane, foarte ocupați).

Având în vedere datele prezentate mai sus referitoare la dezvoltarea tehnologiei, care permite tot mai multă mobilitate, s-a ales realizarea unei aplicații mobile în defavoarea uneia Web, dar și datorită stilului de viață accelerat al oamenilor.

De aceea, potențialii utilizatori au 1-2 dispozitive mobile, acces la internet în cea mai mare parte din timp și deja folosesc foarte mult telefonul mobil în timpul zilei pentru diferite activități. Dispozitivele mobile sunt nu doar portabile, dar și mai accesibile ca un desktop: costă mai puțin, nu necesită 220V în permanență, au acces mobil la internet, au cameră video încorporată, au aplicații pentru comunicare și marketing.

Astfel, pentru un producător ar fi mult mai ușor să realizeze gestiunea și prezentarea produselor (prin intermediul camerei foto), gestiunea comenzilor dar și a relației cu clientii prin intermediul unei aplicații mobile.

Având în vedere aceste aspecte, se urmăresc anumite aspecte de calitate a aplicației si anume:

– aplicația să fie una utilă, să răspundă foarte bine nevoii producătorului de a-și expune produsele, a nevoii cumpărătorilor de a achiziționa produsele dorite dar și a transportatorului de a avea contracte și a-și exercita serviciile.

– aceasta trebuie să fie foarte clară, să funcționeze corect, să nu aiba erori de execuție care ar putea să inducă în eroare utilizatorul, sau mai mult, să îi încurce activitatea.

– aceasta să fie ușor de folosit pentru utilizator și fiabilă pentru dezvoltator

– consumul de resurse să fie cât mai mic deoarece un dispozitiv mobil nu funcționează neîncetat. Acesta are o baterie limitată care în medie durează o zi, de aceea consumul aplicației trebuie să fie moderat, să nu ”omoare” telefonul. În plus, consumul de memorie trebuie să fie și acesta mic deoarece dispozitivele mobile nu dispun de o capacitate de memorie foarte mare.

Din punct de vedere economic, aplicația urmărește:

1.   Crearea unui parteneriat facilitat de o platformă de legatură între producător, consumator și transportator, nu un bazar sau un bâlci.  Acest aspect este într-o strânsă legătură cu obictivul aplicației: de a corela 3 părți importante ale economiei și anume cererea și oferta de produse din domeniul agricol (produse bio)  și transportul acestora de la ofertă la cerere.

2.   Aplicația să fie disponibilă gratuit pentru descărcare din magazinele dispozitivelor mobile. Producătorii să își expună gratuit produsele, însă contra unei sume de bani aceștia se pot promova sau pot apărea primii la rezultatele unei căutări. Transportatorii își pot expune serviciile însă pentru a avea acces la informatii despre tranzacțiile încheiate între producător și cumpărător, aceștia vor trebui să plătească. Toate aceste servicii au rolul de a spori calitatea aplicației, ajutând utilizatorii să își crească afcerea, să o ducă în ce direcție doresc aceștia.

3. Aplicația să nu ofere posibilitatea de fraudă, de înșelăciune utilizatorilor. Securitatea acesteia să fie una sporită astfel încât utilizatorii și afacerile lor să nu aibă de suferit.

Din punct de vedere social, utilizatorii sunt de mai multe tipuri:

producătorii: locuitori din mediul rural care fac agricultură de subzistență, aceștia folosesc aplicatia pentru a-și vinde surplusul de produse (legume, fructe, branză, ouă).

cumpărătorii: locuitorii din mediile urbane foarte aglomerate care folosesc aplicația pentru a se aproviziona cu produse proaspete, bio, de calitate.

transportatorii: micii întreprinzători care sunt la început de afacere și care dețin mașini în acest scop; aceștia folosesc aplicația pentru a-și exercita serviciile de transport. 

DEFINIREA FUNCȚIONALITĂȚILOR PROIECTULUI

Aplicația mobilă se dorește a fi prima platformă online de vânzare – cumpărare dedicată domeniului agricol. Datorită celor 3 tipuri de utilizatori, aceasta va avea 3 interfețe diferite, corespunzătoare ficărui tip de utilizator: cumpărător, vânzător, transportator.

Funcționalitățile multiple vor diferi în funcție de tipul utilizatorului conectat.

Vânzătorul va avea la dispoziție instrumente pentru expunerea produselor,pentru promovarea lor, pentru primirea și gestionarea comenzilor, pentru alegerea transportatorilor și a comunica și a menține relația cu cumpărătorii.

Cumpărătorul va avea la dispoziție produsele sortate pe principalele categorii de produse agricole: fructe, legume, ouă, lactate, carne, produse de panificație și altele. În funcție de categoria aleasă se vor afișa produsele disponibile, acestea având prețul pe kilogram sau pe bucată, perioada de valabilitate al anunțului, localitatea și județul utilizatorului care a postat anunțul și o scurtă descriere a produsului.

Acesta va avea la dispoziție funcționalități pentru alegerea produselor, setarea cantității și adăugarea acestora în coș, trimiterea comenzilor, trimiterea unei cereri de transport.

Transportatorul va avea acces la tranzacțiile încheiate între cumpărător și vânzător pentru a trimite cereri de transport. Acesta va avea la dispoziție și funcționalități pentru a primi cereri de transport, pentru a menține relația cu cumpărătorii și vânzătorii.

Pentru realizarea aplicației mobile se vor utiliza următoarele tehnologii: Java SE ( Standard Edition), Android, arhitectura SOA (Service Oriented Architecture), baza de date MySql, Maven.

Arhitectura aplicației este una simplă fiind compusă dintr-un serviciu web care va expune diferite metode pentru prelucrarea datelor din baza de date. Acest serviciu web se va conecta la baza de date MySql prin intermediul unui connector de bază de date.

Un serviciu web este o metodă de comunicare dintre două dispozitive electronice de pe World Wide Web. Un serviciu web este o funcție software furnizată, la o adresă de rețea pe web sau în cloud, este un serviciu "întotdeauna la dispoziție". Acesta are o interfață descrisă într-un format procesabil pe mașină (în special WSDL). Sistemele interacționează cu serviciul Web într-o manieră proprie, folosind mesaje SOAP, de obicei transmise utilizând HTTP cu serializare XML, dar și alte standarde web.

Pentru a scrie aceste funcții se va folosi Java SE, limbajul Java fiind un limbaj de programare al calculatorului general, simultan, bazat pe clase și orientat pe obiect, conceput pentru a fi cât mai puține dependențe de implementare posibile. Maven este folosit ca unealtă de build și pentru gestiunea modulelor dezvoltate și bibliotecilor utilizate.

Google și Android, au ales să folosească Java ca un pilon cheie în crearea sistemului de operare Android, un sistem de operare open-source dedicat smartphone-urilor. În ciuda faptul că sistemul de operare, construit pe nucleul Linux, a fost scris în mare parte în C, Android SDK folosește Java pentru a proiecta aplicațiile.

Consumatorul serviciului web, cel care se va conecta la serviciul web și va folosi datele prelucrate din baza de date este aplicația mobilă Android. O aplicație mobilă este o un software proiectat pentru a rula pe smartphone-uri, tablete și alte dispozitive mobile. De obicei, acestea sunt disponibile prin intermediul platformelor de distribuire de aplicațiilor, care sunt de obicei deținute de către proprietarul sistemului de operare mobil, cum ar fi: Apple App Store, Google Play, Windows Phone Store.

În continuare voi prezenta principalele funcționalități ale aplicației mobile.

Login / Signin

Această activitate are rolul de a crea conturi de autentificare utilizatorilor aplicației, în funcție de scopul în care folosesc aplicația: ca vânzător, ca si cumpărător sau ca transportator. După realizarea acestui cont se poate realiza autenficarea. Este necesară o singură dată introducerea datelor de login, acestea urmând să fie păstrate până la delogarea explicită a utilizatorului.

Vizualizare produse pe categorii

Această funcționalitate este disponibilă doar utilizatorilor de tip cumpărător. După selectarea unei categorii din cele 7 disponibile: fructe, legume, ouă, lactate, carne, produse de panificație și altele, se vor afișa doar produsele din categoria selectată, de la toți producătorii care au anunț valid în ziua respectivă.

Utilizatorul va putea selecta un produs din listă pentru a vedea mai multe detalii despre acesta și despre vânzător.

Adăugare produse în coșul de cumpărături

Un cumpărător ce a selectat un produs din lista de produse îl poate adăuga în coș, poate selecta cantitatea dorită și își poate continua cumpărăturile.

Plasarea unei comenzi

Prin această activitate de plasare a unei comenzi cumpărătorul își expimă dorința fermă de a primi acel coș de produse, își selectează adresa de livrare și așteaptă să fie contactat de către vânzător. Împreună cu acesta vor stabili modalitatea de plată, de obicei fiind plata la livrare, dar se vor stabili și data livrării ( după o anumită oră, in weekend etc). Pentru livrare, vânzătorul poate propune un transportator, sau se poate face o cerere de transport.

Transportatorii abonați la acest tip de serviciu vor primi cererea urmând să răspundă acesteia și în urma înțelegerii cu vânzătorul și cumpărătorul acesta să onoreze transportul.

Vizualizarea produselor expuse pentru vânzare

Această activitate este specifică utilizatorilor de tip vânzător. Aceștia vor avea o listă asemanătoare cu a cumpărătorilor, structurată pe categorii, însă numai categoriile pentru care acesta are produse expuse și valabile.

În plus, acesta va mai avea și o categorie de anunțuri expirate, care pot fi refolosite.

Adăugrea unui nou produs

Această activitate este specifică utilizatorilor de tip vânzător. Aceștia pot utiliza camera foto integrată cu aplicația pentru a face poze produselor și a le posta direct în aplicație sau pot încărca fotografiile deja existente în dispozitivul mobil. Se vor completa toate detaliile necesare postării produsului și termenul de valabilitate al anunțului.

Primire unei comenzi

Prin intermediul unor notificări de tip pop-up, utilizatorii de tip vânzător vor fi anunțați de către aplicație că au primit o nouă comandă. Comenzile primite vor putea fi văzute toate în aplicție, unde, pe baza datelor completate de către cumpărător, acesta le poate accepta sau refuza.

Dacă vor fi refuzate, cumpărătorii vor fi notificați cu privire la acest lucru dar și cu motivul refuzului.

Dacă vor fi acceptate, vânzătorii vor contacta cumpărătorii și vor stabili detaliile comenzii. La sfârșitul tranzacției urmând ca vânzătorul să seteze comanda ca încheiată.

Cererea de ofertă de transport

Atât vânzătorii cât și cumpărătorii pot genera o cerere de transport, completând datele transportului. Cererea lor poate fi acceptată de către transportatori, caz în care vor primi o notificare și vor fi contactați pentru a stabili toate detaliile de către aceștia.

Primirea unei cereri de transport

Această activitate este specifică utilizatorilor de tip transportator. Toți transportatorii înregistrați în aplicație vor primi aceeași cerere, urmând ca cel căruia îî convin cerințele de transport sau crede că poate negocia cu cel care a generat cererea, să o accepte.

Vizualizarea tuturor cererilor de transport

Acestă activitae este specifică utilizatorilor de tip transportator. Dacă aceștia s-au abonat pentru acestă funcționalitate vor primi o listă de cereri de transport emise de către vânzători și cumpărători, și dacă vor să preia vreo cerere din listă vor accepta acea cerere, urmând ca inițiatorul acesteia să fie notificat de către aplicație și ca transportatorul să îl contacteze pentru a stabili detaliile transportului.

Logout

Această activitate este specifică tuturor tipurilor de utilizatori și este folosită pentru a deloga un utilizator din aplicație.

STABILIREA INTRĂRILOR ÎN CONCORDANȚĂ CU IEȘIRILE

Prin intrările unui sistem informatic se înțelege totalitatea datelor primare necesare obținerii informațiilor de ieșire ale sistemului.

Datele primare reflectă starea și dinamica fenomenelor și proceselor economice din organizația economică care sunt necesare creării, actualizării bazei de date și obținerii situațiilor de ieșire.

Datele primare pot fi externe sau interne organizației economice. La nivelul fiecărui subsistem informatic putem admite că „intrările" acestuia sunt condiționate de „ieșirile" sale, pe două planuri:

pe plan logic, orice „ieșire" este un rezultat al aplicării unuia sau mai multor operatori asupra unui ansamblu de date de intrare. Odată definite „intrările" sistemului și operatorii de transformare, „intrările" vor apărea ca determinate de aceste „ieșiri".

pe plan tehnologic, caracteristicile cerute ieșirilor sistemului (obiectivitate, fiabilitate, precizie) condiționează caracteristicile cerute intrărilor, în particular în ceea ce privește datele elementare.

Din cele de mai sus, rezultă că determinarea intrărilor presupune o analiză ce are ca punct de plecare informațiile de ieșire din subsistem. Determinarea intrărilor sistemului pornind de la ieșirile acestuia se face utilizând tehnica concordanței ieșiri – intrări.

Dezavantajul acestei abordări este că nu întotdeauna putem prevedea toate tipurile de informații de ieșire și deci nu puteam determina toate datele de intrare necesare.

Un alt punct de vedere este acela de a stabili intrările sistemului fără a cunoaște în detaliu ieșirile informaționale ale sistemului. Intrările informaționale trebuie să reflecte cât mai fidel obiectul sistemului real, în acest fel existând posibilitatea obținerii oricărui tip de informație de ieșire.

Dezavantajul acestei abordări este dat de faptul că există posibilitatea ca anumite date de intrare să nu fie niciodată necesare în obținerea unor informații de ieșire. Definirea intrărilor trebuie să includă toate elementele necesare proiectării ulterioare a documentelor de intrare și să ofere soluții pentru preluarea datelor în sistemul informatic.

Proiectarea intrărilor se concentrează asupra conținutului acestora și are în vedere ca toate intrările să fie în disponibile, corecte, precise și în structura necesară, la momentul în care sunt cerute de procesul de prelucrare.

Întrebările care stau la baza proiectării intrărilor sunt:

este fiecare intrare efectiv disponibilă atunci cand este necesară pentru calcule?

este fiecare intrare disponibilă corect, iar dacă nu, ce tipuri de erori apar de obicei?

Este fiecare intrare disponibilă în structura cerută?

Proiectarea intrărilor (crearea unei liste de intrări) de ghidează după aceleași principii ca și întreaga proiectare, și anume:

economicitatea: nu se cer mai multe intrări decât sunt absolut necesare

simplitatea: intrările simple sunt mai bune decât cele complexe

black – box: nu trebuie să știm cu precizie cum arată intrările, ce coduri sau ce valori se folosesc în realitate

Proiectarea ieșirilor este mai importantă decât proiectarea intrărilor pentru specificațiilor logice deoarece tehnica de proiectare este în esență top-down, sau bazată pe obiective. În acest caz, obiectivele sunt reprezentate de ieșirile dorite.

Proiectarea bazată pe ieșiri impune mai întâi cercetarea ieșirilor cerute și apoi, pornind de la ieșiri, se determină intrările necesare. Ieșirile sunt formate, în general, din diferite tipuri de date, indicatori, rapoarte, fișiere, grafice, tabele, formulare (în alb, completate parțial sau total), ecrane etc.

Asigurarea calității datelor de intrare în sistem presupune efectuarea unor verificări privind: ordinul de mărime al codurilor, credibilitatea valorilor (încadrarea într-un interval), respectarea formatului, evitarea introducerii de erori, acccesul, autoritatea utilizatorilor etc.

Pentru datele care ies din sistem, verificările se referă la: controlul destinației, controlul fișierelor, asigurarea dublurii și a unor proceduri de salvare a sistemului în diverse situații.

Pentru stabilirea intrărilor în concordanță cu ieșirile aplicației mobile se folosesc ambele metode, atât cea care presupune o analiză ce are ca punct de plecare informațiile de ieșire și determinarea intrărilor sistemului pornește de la ieșirile acestuia, dar și metoda care stabilește intrările sistemului fără a cunoaște în detaliu ieșirile informaționale ale acestuia.

Prima metodă se folosește în introducerea intrărilor pentru a obține baza de date cu județele din România, dar și cu localitățile arondate acestora. Pentru acestea, pe lângă id-uri pentru ambele entități și denumirile județelor și localităților se introduc și id-uri de legătură între ele.

Alte situații în care intrările se introduc pentru a obține anumite ieșiri sunt date de crearea tipurilor de utilizator (vânzător, cumpărător, transportator), crearea tipurilor de categorii pentru produsele agricole (fructe, legume, produse de panificație, ouă, carne, lactate, altele). Pentru a obține entitățile utilizator și produs se folosește aceeași metodă.

Pentru entitatea comandă se folosește însă cea de-a doua metodă care stabilește însă intrările sistemului fără a cunoaște în detaliu ieșirile. Se cunoaște numai parțial cum va arăta comanda la ieșire deoarece, pe lângă cantitatea care este variabilă, și detaliile impuse de către cumpărător, nu se cunoaște dacă șa ieșire aceasta va fi acceptată sau refuzată.

Pentru cererea de comandă se folosește aceeași metodă, și aceasta la sfârșit putând fi acceptată sau refuzată.

ANALIZA ȘI PROIECTAREA STRUCTURILOR DE DATE

Structurile de date sunt colecții de date între care s-au stabilit o serie de relații pe baza cărora se identifică componentele sistemului. Mulțimea de date asociată structurii poate conține date de același tip sau de mai multe tipuri.

Componentele structurii pot fi localizate fie prin nume identificator, fie prin poziția ocupată în structură.

Accesul componentelor structurii se poate face atât secvențial, dacă localizarea se face prin parcurgerea componentelor aflate înaintea sa în ordinea specificată, cât și acces direct, dacă o componentă poate fi selectată fără a ține seama de celelalte componente.

Astfel, o structură de date este o metodă sistematică de stocare a informațiilor și datelor într-un calculator, în așa fel încât ele să poată fi folosite în mod eficient. O bună alegere a structurii de date permite și implementarea unui algoritm eficient.

Dacă structura de date este bine concepută, atunci, o varietate de operații de bază se pot realiza utilizându-se puține resurse (de exemplu memoria necesară și timpul de execuție). Structurile de date se implementează utilizând tipuri de date, referințe și operații asupra acestora, toate facilitate de către un limbaj de programare.

Majoritatea limbajelor de programare facilitează reutilizarea structurilor de date și în alte aplicații, prin ascunderea detaliilor de implementare. De exemplu, limbajele de programare orientate pe obiecte C++ și Java utilizează în acest scop așa-numitele clase.

Elementele fundamentale pentru construirea structurilor de date sunt vectorii, înregistrările, structurile de tip uniune (union), și referințele. Datorită faptului că structurile de date au o importanță atât de mare, multe dintre ele sunt incluse în bibliotecile standard ale multor limbaje de programare și medii de dezvoltare, cum ar fi Standard Template Library pentru C++, și Java Collections Framework.

Aplicația mobilă are ca structure de date atât colecții, cât și clase și enum-uri.

Colecțiile

Cele mai importante colecții ale aplicației sunt reprezentate prin intermediul unor liste ArrayList. Acestea reprezintă lista produselor agricole dintr-o anumită categorie, lista produselor din coșul unui cumpărător, lista pozelor pentru un anumit produs agricol, lista produselor favorite pentru un cumpărător, lista comenzilor unui cumpărător.

Din perspectiva vânzătorului există liste de produse ale acestuia pe care le oferă către vânzare, liste de comenzi primite, listă de comenzi expirate. Structurile de date reprezentate de colecții de date (liste) atât pentru cumpărător cât și pentru vânzător diferă foarte puțin, prin câteva elemente sau tipuri de date ale listelor.

Pentru transportator există liste ale cererilor de transport directe către el, o listă a comenzilor de transport onorate și o listă a tranzacților încheiate între vânzător și cumpărător.

Tot în categoria colecțiilor se încadrează și HashMap-urile. Se folosește o astfel de colecție pentru a crea un manager de sesiune și a păstrea autentificarea utiliatorului. Astfel de fiecare dată când acesta închide și redeschide aplicația, nu va trebui să se autentifice. Se rețin astfel în această mapă cheie – valoare următoarele atribute:

protected static final String IS_LOGIN ="IsLoggedIn";

protected static final String KEY_NAME = "username";

protected static final String PASSWORD = "password";

protected static final String ID_USER_ROLE = "idUserRole";

HashMap<String, String> user = new HashMap<String, String>();

user.put(Utils.KEY_NAME, pref.getString(Utils.KEY_NAME, null));

user.put(Utils.PASSWORD, pref.getString(Utils.PASSWORD, null));

user.put(Utils.ID_USER_ROLE, pref.getString(Utils.ID_USER_ROLE,null));

Aceste atribute sunt folosite în toată aplicația pentru a ține cont de utilizatorul autentificat la un moment dat.

Clasele

Aceste structuri de date sunt folosite pentru a crea entitățile (obiectele) pe care se bazează aplicația mobile și cu ajutorul cărora este aceasta construită. Obiectul este cea mai mica unitate din structura aplicției mobile.

Prima clasă a acesteia este cea de utilizator: User. Aceasta are următoarele atribute:

User

Long id;

String username;

String password;

String email;

UserRole userRole; //acest atribut este de tipul UserRole – un

// enum al cărui rol va fi explicat în secțiune de Enum-uri

Detail detail; //acest atribuit nu are un tip de dată primr ci

//tot o structură de date, o clasă.

Pentru a stabili detaliile despre un utilizator la înregistrarea acestuia în aplicație, se vor salva numite atribute, printre care și județul și localitatea de proveniență ale acestuia. Pentru a reprezenta aceste trei entități există clasele Detail, County și Locality.

Detail

Long id;

String firstName;

String lastName;

String phoneNumber;

County county;

Locality locality;

County

Long id;

String code;

String description;

Toate tipurile de date ale acestor atribute sunt simple.

Locality

Long id;

County county; // o localitate aparține de un județ

String code;

String description;

Pentru a reprezenta un produs agricol se folosește clasa ProductItem. Structura acesteia este următoarea:

ProductItem

Bitmap[] bytePhotos; //vectorul de fotografii atașat unui produs

String name;

String description;

Float price;

Timestamp dateFrom; //data intrării în vigoare a anunțului

Timestamp dateTo; //data expirării anunțului

User seller; //acest atribut are este reprezentat de o structură

//de date, o clasă. Este nevoie de utilizatorul care a

//postat anunțul pentru a ști date despre județul de

//provenineță al produsului, numărul de telefon al vânzătorului.

ProductCategory productCategory; //acest atribut este de tip enum

//și are rolul de a ține informații despre categoria de

//produse din care face parte produsul respectiv

Pentru reprezentarea o comandă se folosește clasa Order.

Order

Long id;

User fromUser; //utilizatorul care plasează comanda

User toUser; //utilizatorul care deține produsele comandate

ArrayList<ProductItem> products; //lista de produse comandate

Timestamp orderDate;

String code; //codul este unic

Float total;

OrderDetail details; // detaliile despre comandă

Detaliile comenzii se referă la opțiunile cumpărătorului despre adresa de livrare, intervalul orar de livrare, data livrării și o bifă dacă solicită o ofertă de transport sau nu.

OrderDetail

Long id;

Order order;

String address;

Timestamp dateToSend;

String hourIntervalToSend;

Boolean needsTransport;//dacă se dorește transport și se bifează

//acest lucru se generează automat cererea de transport

RequestTransport

Long id;

OrderDetail order; //pentru a accesa cerințele aferente comezii

User transportUser;//dacă un transportator acceptă transportul

//acestei comenzi atunci i se asignează automat acestuia

Enum-uri

Pentru situațiile în care o variabilă trebuie să aibă valori limitate la o anumită multime, aceasta se definește în specificațiile soluției. Cu ajutorul enum-urilor se definește un set predefinit de valori, restricționându-se valorile variabilei la elementele acestui set.

În aplicația mobilă sunt folosite următoarele enum-uri:

public enum UserRole {

PRODUCER("Producător", 1),

BUYER("Cumpărător", 2),

TRANSPORTER("Transportator", 3); }

public enum ProductCategory {

VEGETABLES(0),

FRUITS(1),

EGGS(2),

MEAT(3),

BREAD(4),

MILK(5),

OTHERS(6); }

STABILIREA NECESARULUI DE RESURSE SOFTWARE ȘI HARDWARE

Determinarea necesarul hardware și software din sistem este o etapă importantă în proiectarea soluției software prin care se specifica minimul de componente hardware și software necesare pentru a implementa și a rula aplicația.

Resurse hardware

Datorită arhitecturii client – server cu o conexiune continuă a aplicației, sunt necesare următoarele componente hardware:

dispozitiv mobil: Samsung Galaxy S4 (Size 5.0 inches;Resolution 1080 x 1920 pixels; OS Android v4.2.2 (Jelly Bean), upgradable to v5.0 (Lollipop); CPU Quad-core 1.6 GHz; Internal memory 2 GB RAM; Camera 13 MP) pe care rulează Android v4.2.2.

mașină de calcul: notebook Lenovo Y5070 (Processor: Intel Core i7-4720HQ Processor (2.60GHz 1600MHz 6MB); Graphics: NVIDIA GeForce GTX 860M 2GB; Memory 8.0GB DDR3L 1600 MHz; Intel® Dual Band Wireless-AC 3160) pe care rulează sistemul de operare Windows 7

Componentele software:

sistemul de operare Android v4.2.2 pentru dispozitivul mobil

sistemul de operare Windows 7 Professional N 64-bit pentru mașina de calcul

SQLite 3.8.9: baza de date locală a aplicației mobile

Android Studio 1.1.0: mediul de dezvoltare oficial pentru aplicația mobilă

SDK Tools 24.0.0 kitul de dezvoltare Android pentru programatori (include API 21 Platform)

kSOAP2 3.4.0 librărie pentru trimiterea și primirea mesajelor către și de la serviciul web

JDK 1.8.0 : kitul de dezvoltare Java pentru programatori, care compilează și rulează aplicațiile cu JRE 1.8.0

Apache Maven 3.3.1 pentru pentru gestiunea modulelor dezvoltate și bibliotecilor utilizate

Eclipse Java EE IDE for Web Developers Version: Luna Service Release 2 (4.4.2) pentru dezvoltarea serviciului web

Apache Tomcat v8 serverul de aplicație – o implementare software open source a tehnologiei JavaServer, cu ajutorul acestuia se rulează serviciul web și se expun metodele ce urmează a fi accesate de către aplicația mobilă.

Apache Axis – o implementare a protocolului SOAP; pe baza acestui motor este dezvoltat serviciul web.

Mysql-connector-java-5.1.24 oferă conectivitate pentru aplicațiile client dezvoltate cu tehnologia Java, printr-un driver JDBC numit MySQL Connector/J. Acesta a fost folosit pentru a asigura conexiunea dintre serviciul web și serverul bazei de date, și astfel a beneficia de informațiile stocate în baza de date de tip MySql. Accesul la informațiile stocate se face prin intermediul serverului MySql.

ANALIZA ȘI PROIECTAREA CODURILOR

(ASPECTE ALE VALIDĂRII DATEOR)

Analiza și proiectarea codurilor

Prin operația de codificare se înțelege generarea unor grupuri de simboluri și atribuirea lor atributelor unor înregistrări. Codul este o combinație de simboluri asociate unei caracteristici date din cadrul unei colecții date.

Astfel codul este unic, fiecărui element din mulțimea codificată atribuindu-i-se un cod unic. Odată codificate, elementele din mulțime trebuie să rămână neschimbate. Se permit însă inserări și extensii ale codurilor.

Sistemul informatic dezvoltat folosește o serie de coduri pentru reprezentarea datelor și informațiilor.

Codificarea prin true sau false se face în definirea structurii de date reprezentată de clasa OrderDetail, unde needsTransport este o variabilă codificată prin intermediul celor două coduri pentru adevărat sau fals și reprezintă informația despre necesitatea unei cereri de transport sau nu.

Crearea unor mulțimi codificate se realizează prin definirea enum-urilor UserRole și ProductCategory.

Cele două au un număr diferit de elemente (coduri), iar lungimea codificărilor este variabilă. Semnificația codurilor este dedusă din denumirea lor, în cazul rolurilor utilizatorilor fiind chiar explicit precizată. Unicitatea codurilor este asigurată prin natura structurii de date (Enum) dar și prin precizarea explcită a unui număr, asignat codului.

Tot prin natura structurii de date (Enum) mulțimile codificate pot fi ușor extinse. Modificarea lor este posibilă, însă acest lucru va dăuna implementării dacă această etapă s-a început anterior modificării, de aceea nu se recomandă.

public enum UserRole {

PRODUCER("Producător", 1),

BUYER("Cumpărător", 2),

TRANSPORTER("Transportator", 3); }

public enum ProductCategory {

VEGETABLES(0), // LEGUME

FRUITS(1), //FRUCTE

EGGS(2), //OUĂ

MEAT(3), //CARNE

BREAD(4), //PANIFICAȚIE

MILK(5), //LACTATE

OTHERS(6);//ALTELE

}

Aceste codificări au fost necesare pentru ca la crearea unui utilizator nou să se poată defini această entitate și să se precizeze tipul acestuia: Vânzător, Cumpărător sau Transportator. Un alt motiv al codificării este utilizarea repetitivă a acestor trei valori, dar și pentru că acest tip de dată este o dată de intrare și se dorește evitarea erorilor de introducere a datelor din partea utilizatorilor aplicației.

În cazul categoriilor de produse – ProductCategory, s-a ales această codificare pentru a nu se folosi de o tabelă în baza de date locală SQLite, deoarece accesul la datele stocate ar fi durat mai mult timp decât utilizarea instantă a acestei structuri de date (enum). În plus ar fi costat mult mai multe operații. Numărul relativ mic de coduri din mulțime fost un element în plus pentru realizarea acestei codificări.

Validarea datelor

Arhitectura client – server a soluției este o arhitectură pe două nivele, în care la primul nivel (clientul) se realizează interfața cu utilizatorul și logica principală a aplicației iar la al doi-lea nivel (serverul) se realizează accesul la baza de date și prelucrarea datelor introduse de utilizator prin interfață.

Pentru ca prelucrarea datelor să nu genereze erori sau să se desfășoare în condiții normale și să se obțină rezultatul dorit, la nivelul clientului se realizează validarea datelor.

Astfel utilizatorul nu va putea trece mai departe către prelucrarea datelor dacă nu introduce datele în formatul cerut.

Pentru crearea contului de utilizator este necesară completarea următoarelor date: username, password, nume, prenume, telefon, e-mail, județ, localitate, tip utilizator.

Acestea sunt supuse unor validări, iar dacă toate condițiile sunt îndeplinite, se poate acționa butonul de creare cont utilizator:

Username-ul trebuie să aibă o lungime de de minim 3 caractere și să nu conțină spații goale

Parola trebuie să conțină cel puțin 6 caractere

Numele trebuie să aibă o lungime de de minim 3 caractere

Prenumele trebuie să aibă o lungime de de minim 3 caractere

Numărul de telefon trebuie să aibă o lungime de 10 caractere și acestea să fie toate cifre.

Adresa de e-mail trebuie să fie validă ( să aiba caracterul ”@”, caracterul ”.” și să se termine într-o literă)

Județul și localitatea nu pot fi completate ci se vor selecta dintr-o listă predefinită, tocmai pentru a evita erorile de introducere date.

Pentru autentificare se validează username-ul și parola întroduse asemănător creării contului de utilizator. Astfel, username-ul nu trebuie să fie gol, să conțină spații goale sau să aibă mai puțin de 3 caractere, iar parola trebuie să aibă cel puțin 6 caractere. Dacă toate aceste validări sunt îndeplinite se poate acționa butonul de autentificare.

Pentru completarea unei comenzi se vor valida datele introduse pentru cantitate, aceasta neputând fi mai mică de 0 (dacă este 0, produsul nu se ia în considerare la plasarea comenzii), dar nici mai mare de 100 pentru a evita valorile aberante.

Pentru adăugarea unui produs de către vânzător există o serie de validări:

Pentru cantitatea disponibilă dintr-un anumit produs, aceasta se va introduce într-un câmp numeric ( acceptă doar cifre) care va avea ca valoare minimă 0 și valoare maximă 1000.

Pentru denumirea produsului, aceasta trebuie să aibă minim 3 caractere, minim 3 litere și maxim 50 caractere

Pentru descrierea produsului, acesta trebuie să aibă minim 10 caractere și maxim 200.

Pentru data de postarea a produsului și data de expirare a anunțului se va folosi un date picker, iar valorile acestora nu trebuie să fie goale (null).

Datorită prelucrărilor datelor ce au loc pe client după introducerea acestora de către utilizator, se realizează validarea lor și pe server, pentru ca cererile din baza de date să întoarcă rezultatele dorite și corecte.

ANALIZA ȘI PROIECTAREA FORMATELOR DE INTRARE – IEȘIRE

Formatele de intrare – ieșire se proiectează pe baza datelor de intrare/ieșire. Prin format se înțelege modul în care vor fi reprezentate extern (pe ecranul dispozitivului mobil) câmpurile pentru citirea datelor de intrare și cele pentru afișarea rezultatelor.

De asemenea, formatele de intrare / ieșire sunt parte integrantă din interfața aplicației informatice cu utilizatorul, în proiectarea căreia trebuie să fie luate în calcul și elemente de estetică.

Proiectarea formatelor de intrare

Formatele de intrare se vor constitui în ferestrele aplicației mobile, cu ajutorul cărora se care vor prelua datele introsude de către utilizator prin interfața aplicației mobile, se vor prelucra și vor fi trimise la server pentru a se stoca în baza de date sau a se realiza businessul soluției.

Aceste ferestre conțin:

– câmpuri editabile pentru introducerea informațiilor de tip String

– câmpuri editabile speciale pentru introducerea unei parole

– câmpuri numerice pentru introducerea informațiilor de tip numeric

– câmpuri de selecție a unei valori dintr-o listă de valori predefinită ( de exemplu selectarea județului, a localității, a tipului de utilizator)

– câmpuri pentru bifarea unei proprietăți (checkbox);de exemplu pentru a selecta sau nu dacă se solicită transport

– câmpuri speciale pentru selectarea datei (date picker)

Aceste câmpuri au validări specifice atributelor pe care le reprezintă și care se așteaptă a fi introduse. Despre aceste validări s-a discutat mai sus la validarea datelor.

Un câmp special îl reprezintă imaginea (ImageView –ul) care va prelua rezultatul acțiunii de fotografiere a unui produs agricol, sau care va prelua imaginea selectată de către utilizator, imagine stocată în dispozitivul mobil. Deoarece imaginea este preluată din dispozitivul mobil, sau este pe loc obținută prin intermediul camerei foto a dispozitivului mobil, aceasta se află într-un format acceptat de aplicație pentru a fi prelucrată și trimisă către server. Totuși există posibilitatea ca transformarea să nu se poată realiza, caz în care imaginea (ImageView –ul) rămâne goală (gol).

Proiectarea formatelor de ieșire

Formatele de ieșire se vor constitui tot în ferestrele aplicației mobile, acestea având rolul de a evindeția rezultatele prelucrărilor de pe server (datele de ieșire), de a prezenta rezultatele cererilor de regăsire din baza de date. Acestea trebuie să fie sugestive, să fie prezentate într-o formă simplă, inteligibilă care să asigure și faciliteze utilizarea informațiilor ce le reprezintă.

Datele de ieșire sunt atât date simple cât și complexe. Datele simple sunt reprezentate de: Stringuri în diverse formate (dată, nume/prenume, username, parolă) și numere, date numerice. Valorile acestor date sunt prezentate utilizatorului prin intermediul unor câmpuri needitabile.

Datele complexe sunt reprezentate de obiecte, instanțe ale unor clase (județ, localitate) și elemente ale unor enum-uri (tip de utilizator). Și valorile acestora sunt prezentate tot prin niște câmpuri needitabile.

Alte date complexe sunt pozele care vin de pe server în urma cererilor de regăsire ale unor produse agricole. Acestea vin sub formă de vector de bytes și vor fi transformate in Bitmap pentru a putea fi prezentate cu ajutorul imaginilor (ImageView).

Aceste poze vin ca o colecție de mai multe poze atașate aceluiași produs. Prezentarea lor se va face prin intermediul unei galerii de imagini (listă de ImageView-uri).

Formatul datelor de ieșire pentru lista de poze (galerie de imagini)

Pentru afișarea produselor intr-o anumită categorie, în urma cererii de regăsire din baza de date va fi întoarsă de la server o listă de produse. Aceste produse vor fi afișate sub formă de listă verticală, fiecare element al unui produs fiind afișat sub formă de String într-un câmp needitabil, sau sub formă de imagine (ImageView).

PROIECTAREA BAZEI DE DATE

Baza de date MySql este componenta soluției care stochează date folosite de către aplicația mobilă despre utilizatori, produsele agricole, comenzile elefectuate etc. Fără aceste date stocate, aplicația nu ar putea funcționa.

Prin proiectarea bazei de date se înțelege proiectarea unei scheme logice care are rolul de a înlătura apariția unor anomalii în lucrul cu baza de date și de a asigura facilități sporite și performanțe sporite la exploatarea ei. Anomaliile care apar în lucrul cu bazele de date sunt anomalii de actualizare a datelor și au legătură cu dependențele care există între atribute. Aceste anomalii pot fi datele duplicate sau pierderile de informații.

Pentru a evita aceste anomalii se aplică un proces de normalizare. Acest proces constă în aplicarea uneui set de reguli predefinite asupra unei aranjări a datelor cu scopul reducerii structurii complexe și transformării lor în structuri mai mici și stabile ce vor facilita manipularea și întreținerea datelor.

În urma acestui proces de normalizare se obține o bază de date bine proiectată. O bază de date proiectată corespunzător furnizează acces la informații precise, actualizate, pentru atingerea scopurilor utilizării unei baze de date.

Pentru a proiecta baza de date se parcurg următorii pași:

Găsirea și organizarea informațiilor necesare

Scopul acestui pas este de a strânge informații despre ceea ce se dorește a fi stocat în baza de date, și anume: numele și prenumele clienților, adresa acestora, numărul de telefon, numele și prenumele vânzătorilor, adresa acestora, numărul de telefon, numele și prenumele cumpărătorilor, adresa acestora, numărul de telefon, numărul de telefon, numele și prenumele transportatorilor, adresa acestora, comenzi, produse agricole, poze ale produselor agricole, denumirea produselor, descrierea, prețul lor, cereri de transport etc.

Împărțirea informațiilor în tabele

În acest pas se identifică entitățile necesare și toate informațiile mai sus găsite se împart în tabelele corespunzătoare. Astfel cele mai importante tabele ale aplicației sunt: USER, PRODUCT, COUNTY, LOCALITY, PHOTO, ORDER, ORDER_DETAIL, REQUEST_TRANSPORT,USER_DETAIL.

Această listă se poate rafina, se pot adăuga noi tabele până se reprezintă în baza de date toate entitățile care participă la procesele aplicației.

Transformarea elementelor de informații în coloane    

În această etapă se stabilește ce informații se stochează în fiecare tabelă, fiecare infromație devenind un atribut al tabelei și o coloană în tabel.

Se stochează cele mai mici părți logice din informații, astfel, numele utilizatorului va fi îmărțit în nume și prenume.

Specificarea cheilor primare

În această etapă se identifică cheile primare pentru fiecare tabelă. Fiecare tabel trebui să includă o coloană sau un set de coloane care identifică, în mod unic, fiecare rând stocat în tabel. De obicei, se utilizează un număr unic de identificare, un ID care este ales cheia primară a tabelului.

Configurarea relațiilor dintre tabele

La acest pas se stabilesc relațiile dintre tabele și modul în care se leagă unele de altele, pentru ca informațiile să fie asociate util.

Se stabilesc relații ”1 la mai mulți” între tabelele COUNTY – LOCALITY, PRODUCT – PHOTO, USER – ORDER, USER – PRODUCT.

Se stabilesc relații ”1 la 1” între tabelele USER – DETAILS, ORDER – ORDER_DETAILS, REQUEST_TRANSPORT – ORDER.

Se stabilesc relații ”mai mulți la mai mulți” între tabelele ORDER – PRODUCT. Această relație este spartă în două relații ”1 la mai mulți” și se crează tabela de legatură ASOC_PRODUCT_ORDER.

În urma proiectării au rezultat tabele împreună cu atributele lor și tipurile de date:

Schema conceptuală a bazei de date

Schema conceptuală a bazei de date care evidențiează tabelele folosite și relațiile dintre acestea, este următoarea:

ELABORAREA ALGORITMILOR

Ce este un algoritm?

Cuvântul ”algoritm” provine de la numele matematicianului persn Al-Khawarizmi și care atât în matematică cât și în informatică înseamnă o metodă sau o procedură de calcul, alcătuită dintr-o înșiruire de pași elementari ce sunt necesari pentru rezolvarea unei probleme sau a unei categorii de probleme.

Elaborarea algoritmilor presupune găsirea unei metodei care va fi folosită în rezolvarea problemei. Pentru a se elabora algoritmii ce vor fi folosiți în dezvoltarea unui produs software este necesară identificarea prelucrărilor care se fac asupra datelor de intrare pentru a se obține datele de ieșire. Deoarece pentru a se obține rezultatele dorite trebuie să se definească logic o secvență de operații pe care să le poată executa calculatorul, este considerată cea mai importantă ș dificilă etapă.

Pentru elaborarea algoritmilor se parcurg următoarele etape:

specificarea problemei;

descrierea metodei alese pentru rezolvarea problemei;

proiectarea propriu-zisă;

verificarea algoritmilor obținuți.

Proiectarea presupune descompunerea problemei în subprobleme, obținându-se astfel un program principal și o serie de subprograme. Atât programul principal cât și subprogramele sunt descriși, dar și variabilele folosite și semnificația lor.

Pentru elaborarea algoritmilor aplicației mobile ”eBăcănie” se foloște proiectarea modulară. Cu alte cuvinte, proiectarea unui algoritm pentru rezolvarea unei probleme se face prin realizarea unor module, progrmarea modulară bazându-se pe descompunerea problemei în subprobleme, pe proiectarea și programarea separată a subprogramelor corespunzătoare.

Un modul este o unitate structurală de sine stătătoare, un program, un subprogram sau o unitate de program, acesta putând să fie conținut într-un alt modul, astfel un modul poate fi format din mai multe submodule.

Modulele sunt considerate relativ independente, însă acestea au posibilitatea de a comunica între ele. Fiecare modul are un rol bine stabilit și îndeplinește o anumită sarcină sau o anumită parte din întreg programul. Aceasta fiind și criteriul după care se constuiesc modulele.

Soluția dezvoltată este proiectată în trei module principale și un modul de administrare, acestea fiind structurate la rândul lor în submodule. Cele trei module corespund celor trei tipuri de utilizatori pe care le poate avea aplicația și anume: PRODUCĂTOR, CUMPĂRĂTOR, TRANSPORTATOR.

Astfel modulul ”Producător” conține toate prelucrările necesare desfășurării activității unui utilizator de tip ”Producător” și anume: adăugare anunț, gestionare anunțuri, filtrare anunțuri în funcție de categoria produsului din anunț, primire comandă, acceptare comandă, istoric comenzi, cerere ofertă transport.

Modulul ”Cumpărător” conține prelucrări necesare pentru realizarea activităților de căutare a unor produse, vizualizare anunțuri în funcție de categoria produsului selectată, plasare comandă, istoric comenzi, cerere ofertă transport.

Modulul ”Transportator” conține prelucrări necesare pentru realizarea activităților transportatorilor înregistrați în aplicație, și anume: primire cereri de transport, acceptare cereri de transport, trimitere oferte de transport, vizualizare tranzacții încheiate între cumpărător și producător.

Modulul de ”Administrare” conține operații generale regăsite în fiecare din cele trei module, cum ar fi autentificare în aplicație (conectare), înregistrare în aplicație, deconectare.

Pentru a se autentificare în aplicație sau a se conecta, un utilizator va trebui să întroducă un username și o parolă. Acesta își va stabili username-ul și parola la înregistrarea în aplicație.

Algoritmul folosit pentru criptarea parolei și verificarea acesteia, conținut în modulul de ”Administrare” este prezentat mai jos. Parola este o considerată o dată cu caracter sensibil, de aceea aceasta nu se poate stoca în baza de date înainte de a fi criptată. Pentru criptarea parolei de folosește un algoritm de criptare pus la dispoziție de o librărie specifică limbajului Java, limbaj de programare folosit în dezvoltarea aplicației mobile, și anume BCrypt.

Inițial, parola introdusă de utilizator la crearea contului acestuia se trimite la server împreună cu celelalte date și înaintea introducerii acesteia în baza de date, se criptează cu ajutorul librăriei BCrypt și a metodei acesteia ”hashpw” astfel:

String passwordHashed = BCrypt.hashpw(password, BCrypt.gensalt());

Această prelucrare este ireversibilă, astfel procesul invers de decriptare pe baza hash-ului obținut nefiind posibil. În urma acestei prelucrări se stochează în baza de date parola utilizatorului, aceasta neputând fi citită în forma ei reală.

Pentru autentificare și verificarea introducerii corecte a parolei, parola introdusă spre verificare de către utilizator se trimite de la aplicația mobilă la server unde se criptează, apoi se aduce din baza de date parola criptată pentru username-ul dorit, iar cele două parole criptate se compară pentru a se stabili dacă sunt identice sau diferă.

Boolean Ok = BCrypt.checkpw(password, user.getPassword());

Algoritmul de creare cont utilizator:

introducere date cont utilizator în aplicația mobilă

trimitere date la serviciu Web

criptare parolă

intrducere date în baza de date

Algoritm autentificare (conectare) utilizator în aplicație:

introducere username și parolă în aplicația mobilă

trimitere date la serviciul Web

aducere date din baza de date pentru username-ul primit de la aplicația mobilă

dacă există date pentru acest username:

criptare parolă primită de la aplicația mobilă

compararea parolei din baza de date cu cea criptată anterior

daca cele două sunt identice se trimite răspuns pozitiv

altfel se trimite răspuns negativ

altfel se trimite răspuns negativ.

Elaborarea celorlalți algoritmi se face pentru fiecare modul în parte, în funcție de operațiile necesare și specifice.

ELABORAREA SPECIFICAȚIILOR DE PROGRAMARE

Specificațiile de programare sunt texte elaborate pe baza definirii problemei rezolvate prin implementarea soluției software. Specificațiile de programare stabilesc datele de intrare, algoritmii deprelucrare, parametrii date de intrare în module, parametri care se constituie în rezultate intermediare.

De asemenea sunt descrise și formatele rezultatelor, condițiile de obținere a fiecărei structuri de rezultat intermediar.

Specificațiile reprezintă o descriere funcțională detaliată ce respectă cerințele, însă acestea nu indică modul de implementare.

Rolul specificațiilor de programare este acela de a ușura înțelegerea cerințelor dar și de a urmări îndeplinirea acestora în timpul activităților de proiectare. Se ușurează astfel munca de proiectare și se înlătură eventualele greșeli, repetări sau omisiuni ale unor funcții. Un alt rol al specificațiilor este acela că pe baza lor se pot crea planuri de testare a aplicației.

Pentru o bună implementare software a cerințelor soluției se stabilesc de la început tipurile de date, limbajele de programare și SGBD-urile folosite.

Aplicația mobilă are ca structure de date atât colecții, cât și clase și enum-uri. Se folosesc tipuri de date simple cum ar fi: String, Integer, Double,Float, Long; primitive int, char, colecții: ArrayList, HashMap, List, dar și vectori String[ ], Integer[ ]. Tipurile speciale folosite sunt Bitmap pentru a stoca fotografiile.

Clasele folosite sunt: User, Detail, County, Locality, ProducItem, Order, OrderDetails, Product, Announcement, CategoryItem, OrderItem, SessionManager, DBHelper. Enum-urile folosite sunt: UserRole, ProductCategory, Per.

Pentru codificarea acestei soluții software se utilizează limbajul de programare Java, mai exact Java SE (Standard Edition). Partea de aplicație mobilă a soluției software este construită cu ajutorul platformei Android. Aceasta este consumatorul serviciului web, cel care se va conecta la serviciul web și va folosi datele prelucrate din baza de date.

Datorită arhitecturii soluției software, comunicarea dintre client (aplicația mobilă) și server (serviciul Web) se realizează prin intermediul limbajului XML.

Pentru construirea, accesarea și manipularea bazei de date necesare pentru construcția acestei soluții software se folosește MySQL. Acesta este cel mai folosit sistem open source de management al bazelor de date relaționale (RDBMS) și funcționează sub forma unui server ce furnizează accesul în cadrul mai multor baze de date utilizatorilor multipli, este dezvoltat, distribuit și menținut de Oracle.

Deoarece plaforma Android pune la dispoziție o librărie care implementează un motor de bază de date tranzacțional, fără să presupună conectarea la vreun server, fără configrări suplimentare, librăria SQLite, se vor stoca pe dispozitivul mobil anumite informații despre utilizator, pentru o accesare mai rapidă și facilă a acestor date.

SCRIEREA PROGRAMELOR

În urma elaborării algoritmilor dar și a specificațiilor de programare se va codifica aplicația software, cu alte cuvinte se vor scrie programele care integrate vor constitui în final sistemul informatic aflat în dezvoltare.

Deoarece s-a realizat o proiectare detaliată a fiecărui modul în parte, și se știe pentru fiecare ce funcționalități trebuiesc implementate, scrierea codului se va realiza modular, pentru fiecare modul în parte. Acest lucru înseamnă transpunerea tuturor specificațiilor de programare într-unul sau mai multe limbaje de programare.

La finalul codificării modulelor, acestea sunt integrate în produsul final.

Limbaje de programare

Pentru codificarea acestei soluții software s-a utilizat limbajul de programare Java, mai exact Java SE (Standard Edition). Limbajul Java este un limbaj de programare al calculatorului general, simultan, bazat pe clase și orientat pe obiect, conceput pentru a cât mai puține dependențe de implementare posibile.

Acest limbaj a fost creat pentru a permite dezvoltatorilor de aplicații să fie "scris o dată, să funcționeaze oriunde" (write once, run anywhere – WORA), ceea ce înseamnă că un cod care rulează pe o platformă nu trebuie să fie recompilat pentru a rula pe alta.

Aplicațiile Java sunt, în mod normal compilate într-un cod de baiți (bytecode), care poate rula pe orice mașină virtuală Java , indiferent de arhitectura calculatorului. Java este, din 2012, unul dintre cele mai populare limbaje de programare, fiind folosit în special pentru aplicații web client-server și atingând 10 milioane de utilizatori. Limbajul are derivată o mare parte din sintaxa sa din C și C + +, dar are mai puține defecte decât oricare dintre ele.

Google și Android, au ales să folosească Java ca un pilon cheie în crearea sistemului de operare Android, un sistem de operare open-source dedicat smartphone-urilor. În ciuda faptul că sistemul de operare, construit pe nucleul Linux, a fost scris în mare parte în C, Android SDK folosește Java pentru a proiecta aplicațiile.

Astfel, partea de aplicație mobilă a soluției software este construită cu ajutorul platformei Android. Aceasta este consumatorul serviciului web, cel care se va conecta la serviciul web și va folosi datele prelucrate din baza de date.

O aplicație mobilă este o un software proiectat pentru a rula pe smartphone-uri, tablete și alte dispozitive mobile. De obicei, acestea sunt disponibile prin intermediul platformelor de distribuire de aplicațiilor, care sunt de obicei deținute de către proprietarul sistemului de operare mobil, cum ar fi: Apple App Store, Google Play, Windows Phone Store.

Datorită arhitecturii soluției software, comunicarea dintre client (aplicația mobilă) și server (serviciul Web) se realizează prin intermediul limbajului XML.

XML (eXtensible Markup Language) este un limbaj care definește o serie de reguli pentru reprezentarea documentelor într-un format care poate fi citit foarte ușor atât de om cât și de calculator. Scopul creării acestui limbaj (XML) a fost acela de a fi un standard de interschimbare a datelor, scopul proiectării lui este acela de a accentua simplitatea, generalitatea si utilizabilitatea pe internet.

XML este un limbaj autodescriptiv, acesta poate încorpora atât date cât și metadate, în acest mod se poate face schimb de informații între aplicații, fără ca acestea să cunoască detalii de implementare sau de structurare a datelor, fiind suficientă o singură legătură între cele două – canalul de transmitere a mesajului XML. Astfel se asigură o independență a datelor de aplicație, prin intermediul limbajului XML.

Structura unui document XML este ierarhică, cu un singur element radăcină, acesta având în interior unul sau mai multe seturi de alte elemente. Fiecare element este definit prin două tag-uri: tag-ul de început și tag-ul de sfârșit. Un exemplu simplu de fișier xml este prezentat mai jos :

<?xml version="1.0" encoding="UTF-8"?>

<breakfast_menu>

<food>

<name>Belgian Waffles</name>

<price>$5.95</price>

<description>

Two of our famous Belgian Waffles with plenty of real maple syrup

</description>

<calories>650</calories>

</food>

</breakfast_menu>

SGBD-uri

O bază de date este o colecție de date corelate din punct de vedere logic, ce surprind un aspect al lumii reale, având ca utilizator țintă un anumit grup de oameni. Un sistem de baze de date este utilizat în gestiunea unei activități cu suportul calculatorului.

Sistemele de gestiune a bazelor de date sunt într-o continuă evoluție pentru a putea răspunde tuturor cerințelor utilizatorilor. Sistemele de gestiune a bazelor de date admit ca și categorii de limbaje conceptuale: LDD – Data Description Language și LMD – Data Manipulation Language. LDD este cel care definește datele într-un mod conceptual, ceea ce oferă independența datelor față de modul de stocare, iar LMD oferă posibilitatea de a insera, șterge, modifica și interoga datele.

Cel mai utilizat limbaj pentru sistemele de baze de date relaționale îl reprezintă limbajul SQL ( Structured Query Language), ce cuprinde cele două limbaje conceptuale amintite mai sus. Operațiile efectuate asupra înregistrărilor din baza de date relațională sunt posibile prin instrucțiuni SQL.

Comenzile SQL pot fi trimise de către utilizatori în timp real ( de la un calculator) și sunt prelucrate direct sau pot fi înglobate în limbaje de programare de nivel înalt precum C,C++,Java și transmise SGBD-ului în momentul executării lor. Acestea din urmă sunt susținute de diferite meniuri, butoane ce ajută utilizatorii să acceseze datele rezultate din efectuarea acestor instrucțiuni.

Avantajele utilizării sistemelor de baze de date:

–  Compactitatea ( față de spațiul necesar stocării tuturor documentelor scrise);

–  Viteză mare de regăsire și actualizare a informațiilor;

–  Reducerea redundanței datelor memorate ( aceasta se explică prin posibilitatea partajării datelor între mai mulți utilizatori, excluzând astfel învechita variantă conform căreia fiecare aplicație trebuia să conțină propriile seturi de date);

–  Interschimb rapid între diferite organizații, prin introducerea unor standarde privind modul de stocare;

–  Utilizarea drepturilor de acces stabilite în funcție de rolul angajatului și necesitatea acestuia de a le avea la dispoziție;

–  Independența datelor față de suportul hardware. Datele sunt “imune” la schimbarea suportului de memorare fizic.

MySQL este cel mai folosit sistem open source de management al bazelor de date relaționale (RDBMS). Acesta funcționează sub forma unui server ce furnizează accesul în cadrul mai multor baze de date utilizatorilor multipli, este dezvoltat, distribuit și menținut de Oracle.

Având în vedere toate aceste avantaje ale folosirii unui SGBD, dar și popularitatea și larga utilizare a MySQL – ului, s-a decis utilizarea lui pentru construirea, accesarea și manipularea bazei de date necesare pentru construcția acestei soluții software.

Deoarece plaforma Android pune la dispoziție o librărie care implementează un motor de bază de date tranzacțional, fără să presupună conectarea la vreun server, fără configrări suplimentare, librăria SQLite, se vor stoca pe dispozitivul mobil anumite informații despre utilizator, pentru o accesare mai rapidă și facilă a acestor date.

SQLite este o librărie open-source, este gratuită, și are încorporat un motor de bază de date. Spre deosebire de majoritatea celorlalte baze de date, SQLite nu se bazează pe un server, ci acesta scrie și citește datele direct din/în fișiere pe disc. Astfel, baza de date SQL definită este stocată într-un singur fișier pe disc, cu toate tabelele, relațiile dintre acestea, indecșii, trigger-ii și view-urile aferente bazei de date.

Datorită acestor specificații și facilități oferite de Android prin SQLite, dar și a faptului că această librărie are dimensiuni reduse, se utilizează și această bază de date pentru codificarea aplicației software ”eBăcănie”.

TESTAREA ȘI IMPLEMENTAREA PROIECTULUI

Implementarea proiectului

Implementarea este o etapă importantă în dezvoltarea unui produs software și reprezintă realizarea unui algoritm sub formă de program.

Pentru a se transforma algoritmii concepuți în etapele anterioare în program se utilizează o anumită codificare. Implementarea codului reprezintă tocmai această transformare a algoritmului, folosindu-se text după un anumit format și cu o anumită sintaxă. Acest cod depinde foarte mult de limbajele de programare alese, prezentate în etapa anterioară.

Principalul rol al codului este de a specifica operațiile ce vor fi realizate de către sistemul de calcul pentru care a fost creat. Acesta poate fi cosiderat ca o modalitate prin care un programator specifică sistemului de calcul ce și cum are de făcut pentru a manipula anumite date.

În urma scrierii codului sursă, acesta este convertit în cod binar (cod mașină), acesta putând fi citit și executat de calculator. Acest proces se numește compilare.

Pentru implementarea proiectului s-au folosit limbajele de programare Java și XML, dar și Android, prezentate mai sus. Deoarece se folosește un limbaj avansat și orientat obiect, codul sursă este sutructurat în 35 clase pentru partea mobilă și 20 clase pentru implementarea serviciului Web.

Implementarea codului pentru partea mobilă presupune și o serie de resurse grafice, dar și de fișiere xml cu layout-uri și meniuri (30). Clasele implementare reprezintă atât obiecte (entități), dar și implementări (activități) ale ecranelor aplicației mobile, specifice Android-ului.

Pentru implementarea serviciului Web s-au folosit atât interfețe și implementările lor, dar și clase care reprezintă entități.

Prin urmare, etapa de implementare a unui produs software reprezintă etapa de scriere efectivă a codului sursă. Codul reprezintă atât un limbaj de comunicare între programator și calculator, cât și unul folosit între mai mulți programatori. De aceea, acesta trebuie scris și organizat astfel încât să poată fi înțeles și modificat sau utilizat de către un programator ce ulterior îl va citi.

Testarea proiectului

Prin activitatea de testare se observă comportarea programului în urma excuției acestuia cu date de test. Se urmărește în primul rând corectitudinea rezultatelor obținute în urma execuției programului cu datele de test, dar și îndeplinirea caracteristicilor de calitate software: utilitate,robustețe, fiabilitate, performanță, siguranță în funcționare. În plus se urmărește și gradul de satisfacție al utiliatorului vis-à-vis de rezultatele obținute, dar și de forma lor de prezentare și de timpul necesar pentru execuție.

Pentru a se realiza testarea este nevoie de o serie de date de test. Acestea sunt date de intrare alese pentru variabilele de intrare pe care le așteaptă aplicația software, și pentru care se cunosc rezultatele, putându-se astfel compara, în urma efectuării testelor.

Scopul acestor teste este de a se urmări corectitudinea programului, însă corectitudinea rezultatelor obținute în urma testelor nu demonstrează și corectitudinea programului în general.

Scopul acestor execuții este observarea (depistarea) erorilor făcute în diferite etape ale dezvoltării produsului software și în urma corecțiilor(eliminării) erorilor se mărește certitudinea corectitudinii acestuia. Activitatea care urmărește descoperirea cauzelor erorilor și înlăturarea lor se numește depanare.

Implementarea produsului software se realizează pe module, la finalul fiecărui modul testându-se funcționalitatea acestuia dar și corectitudinea rezultatelor obținute și a modulului recent implementat.

Primul modul implementat și testat este cel de administrare, unde se testează crearea conturilor de utilizatori dar și conectarea utilizatorilor în aplicație, deconctarea, modificarea datelor personale.

Al doi-lea modul dezvoltat este modulul producătorului. Aici se testează adăugarea unui produs, adăugarea unui anunț, ștergerea unui anunț, primirea unei comenzi, acceptarea unei comenzi, cererea unei oferte de transport, acceptarea unei oferte de transport. Pentu fiecare din aceste activități se introduc seturi de date de intrare și se urmărește corectitudinea fluxului.

Al trei-lea modul dezvoltat este modulul cumpărătorului. Aici se testează afișarea produselor după categoria produsului din care face parte, plasarea unei comenzi, istoricul comenzilor, cererea unei oferte de transport, acceptarea unei oferte de transport. Pentu fiecare din aceste activități se introduc seturi de date de intrare și se urmărește corectitudinea fluxului.

Cel de-al patru-lea modul este modulul transoprtatorului. Pentru acesta se testează primirea unei cereri de transport, trimiterea unei oferte de transport, acceptarea unei cereri de transport. Aceste cereri se testează cu ajutorul seturilor de date de test.

La finalul implementării celor patru module, acestea se integrează și se testează. Testarea de integrare urmărește funcționarea produsuui software realizat în asamblu. Aceasta se realizează după ce fiecare din cele patru module a fost testat și corectat. În ipoteza că aceste module sunt corecte, este necesară și verificarea comportării globale a programului.

Carateristicile de calitate software urmărite prin implementarea produsului dar și în testarea acestuia sunt:

– oferirea tuturor deținătorilor de dispozitive mobile posibilitatea de a folosi aplicația, indiferent de sistemul de operare al dispozitivului mobil. Aplicația va fi dezvoltată inițial pentru utilizatorii de Android, urmând ca ulterior să fie dezvoltată și pentru cei de windows Phone și iOS;

– aplicația să fie una utilă, să răspundă foarte bine nevoii producătorului de a-și expune produsele, a nevoii cumpărătorilor de a achiziționa produsele dorite dar și a transportatorului de a avea contracte și a-și exercita serviciile;

– aplicația să fie foarte clară, să funcționeze corect, să nu aiba erori de execuție care ar putea să inducă în eroare utilizatorul, sau mai mult, să îi încurce activitatea;

– aplicația ar trebui să fie ușor de folosit pentru utilizator și fiabilă pentru dezvoltator.

Printr-o serie de teste aplicate soluției software integrate cu toate modulele se urmărește ca:

– consumul de resurse să fie cât mai mic deoarece un dispozitiv mobil nu functioneaza neîncetat. Acesta are o baterie limitată care în medie durează o zi, de aceea consumul aplicației trebuie să fie moderat, să nusuprasolicite telefonul. În plus, consumul de memorie trebuie să fie și acesta mic deoarece dispozitivele mobile nu dispun de o capacitate de memorie foarte mare;

– realizarea calculelor si a majorității operațiilor să se realizeze pe server și nu pe client (dispozitivul mobil) pentru a mări viteza de calcul și a micșora timpul de răspuns

– testarea aplicației să fie cât mai complexă, să acopere cât mai multe posibilități de utilizare pentru ca aceasta să nu provoace neplăceri utilizatorilor

Pentru a se testa cele menționate mai sus se va proceda asfel:

– se vor crea un număr cât mai mare de utilizatori și vor fi conectați la aplicație in același timp pentru a măsura scalabilitatea aplicației d.p.d.v al numărului de conexiuni simultane;

– se vor trimite cereri la server ( se vor realiza tranzacții cu ajtorul aplicației) pentru a măsura timpul de răspuns.  Sistemul va trebui să realizeze tranzațiile cerute și să trimită răspuns într-un timp cât mai scurt;

– se vor trimite diferite volume de cereri la server pentru a măsura performanța d.p.d.v. al puterii de procesare. Aplicația trebuie să suporte un anumit număr de tranzacții pe secundă, de asemenea, aceasta trebuie să satisfacă un vârf ce cereri și nu un volum mediu.

ACTIVITĂȚI DE ÎNTREȚINERE A FUNCȚIONĂRII PROIECTULUI

Ultima etapă a unei aplicații software, și poate cea mai importantă, după etapa de proiectare, este întreținerea constantă a acesteia (mentenanța). 

Această întreținere a aplicației software dezvoltate se realizează deoarece nu există un sistem software dezvoltat perfect, dar și pentru că, de obicei, după lansarea acestuia urmează o serie de îmbunătățiri generate din feedback-ul utilizatorilor, dar și din folosirea acestuia electivă, în producție.

Astfel, după lansarea platformei online ”eBăcănie”, se va primi constant feedback de la utilizatori și se va urmări modificarea acesteia pentru a mulțumi majoritatea utilizatorilor, se vor adăuga noi funcționalități sugerate de aceștia pentru a le ușura experiența folosirii plaformei de e-commerce, dar se vor corecta și diversele erori apărute ”în producție”.

Se poate spune că mentenanța sau întreținerea sistemului informațional nou include activități regrupate în trei etape principale:

– corectoare – tratarea erorilor detectate în timpul punerii în funcțiune a aplicației;

– adaptivă – modificarea aplicației într-un anumit punct;

– perfectivă – ameliorarea funcțiilor sistemului implantat, prin dezvoltarea unei anumite părți sau a unui anumit modul, la cererea utilizatorilor.

MANUALUL DE PREZENTARE ȘI UTILIZARE A PRODUSULUI INFORMATIC

Platforma de e-commerce ”eBăcănie” este o aplicație ușor de folosit, intuitivă, creată pentru a fi atât pe înțelesul utilizatorilor mai puțini experimentați, dar și pentru a acoperi nevoile celor mai pretențioși.

Se vor prezent în continuare o serie de capturi de ecran pentru a explica modul de funcționare al acestei aplicații software.

Autentificare

Înregistrare utilizator nou

PRODUCĂTOR

2.1 Meniu

2.2 Alegere categorii produse ce vor apărea pe ecran

2.3 Ecran principal

2.4 Adăugare produs

CUMPĂRĂTOR

Ecran principal

3.2 Filtrare produse după o anumită categorie

3.3 Selectare produs și adăugare în coșul de cumpărărturi

Dacă se dă click pe un produs din lista de produse, se va deschide o nouă fereastră cu detalii doar despre acel produs. În partea de sus este galeria foto cu pozele produsului, sub este prețul produsului, numele acestuia, data de când și până când este valabil anunțul, numele vânzătorului, numărul de telefon la care poate fi contactat acesta și o scurta descriere.

3.4 Vizualizare cos de cumpărături și plasare comandă

BIBLIOGRAFIE

Buyer Guide to Electronic Commerce. Glossary of Terms.

Dicționar Explicativ al Limbii Române – Definiția Comerțului

Ghibuțiu, A. (coordonator), Pencea S. Și Boureanu M., Comerțul electronic – mijloc de integrare în economia globală. Oportunități și provocări pentru România, Academia Română, Institutul de Economie Mondială, București, 2002

The Economist, May 15-21, 2004, A perfect market, A survey of e-commerce.

http://www.statista.com/statistics/273424/retail-e-commerce-sales-in-the-united-states/

In 2014, romanii au cumparat online produse de peste 1 miliard de euro!

http://refresh.ro

www.olx.ro

http://carment.ase.ro/ec/s2.html

http://www.asecib.ase.ro/Paun/cap5-ads-intern.PDF

http://ro.wikipedia.org/wiki/Structur%C4%83_de_date

http://teachercolecadm.wikispaces.com/file/view/Modulul+XI+-+Suport+de+curs.pdf

https://support.office.com/ro-ro/article/No%C8%9Biuni-de-baz%C4%83-despre-proiectarea-bazelor-de-date-1eade2bf-e3a0-41b5-aee6-d2331f158280?ui=ro-RO&rs=ro-RO&ad=RO

http://www.scritub.com/stiinta/informatica/SISTEME-INFORMATIONALE1853202410.php

statista.com

https://www.consumerbarometer.com/en/insights/?countryCode=RO

www.okazii.ro

Algoritmi fundamentali – O perspectivă c++, edit Libris, Cluj – Napoca, 1995, Răzvan Andonie, Ilie Gârbacea

https://www.sqlite.org/about.html

http://www.mysql.com/about/

http://en.wikipedia.org/wiki/Android_%28operating_system%29

https://en.wikipedia.org/wiki/Java_%28programming_language%29

http://en.wikipedia.org/wiki/Mobile_app

D. Chappell and T.Jewell, Java Web Services, O`Reilly , 2002

P. Pocatilu, Programarea dispozitivelor mobile, București, Editura ASE, 2012.

http://vega.unitbv.ro/~romanca/psci/2-PSCI-Proiectare-4spp.pdf

Implementarea, testarea, verificarea și validarea produselor software, FACULTATEA DE ELECTRONICA, TELECOMUNICATII SI TEHNOLOGIA INFORMATIEI, Coordonator, Conf. Dr. Ing. Ștefan Stăncescu, Lecu Radu Șerban Tică Andra Maria Vidrașcu Mihai (2011).

http://vega.unitbv.ro/~romanca/psci/2-PSCI-Proiectare-4spp.pdf

Similar Posts

  • Portal Web Pentru Conferinta

    Cuprins CAP1. INTRODUCERE 1.1 Importanța promovării evenimentelor online 1.2 Importanța domeniului în care am ales tema 1.3 Obiective CAP2. TEHNOLOGII UTILIZATE ÎN APLICAȚIE 2.1 HTML5 2.2 CSS 2.3 Baza de date ca și fișier XML 2.4 MYSQL 2.5 JAVASCRIPT 2.6 JQUERY 2.7 AJAX 2.8 PHP 2.9 Propel ORM 2.10 MODEL-VIEW-CONTROLLER (MVC) 2.11 FOUNDATION CAP3. ASPECTE…

  • Aplicatie Web Responsiva

    Cuprins Introducere Completeza si capitol !!CAPITOL I. Despre responsivitate și ERP I.1 Despre responsivitate I.1.1 Avantajele unui design responsiv I.2 Enterprise resource planning ( ERP ) I.2.1 Caracteristici II. Tehnologii utilizate II. 1 PHP II.1.1 Tipuri de date interne II. 2 Zend Framework 2 II. 3 JavaScript II. 3. 1 Tipuri de date II. 4…

  • Laborator Virtual In Cloud

    LABORATOR VIRTUAL IN CLOUD CUPRINS Introducere Capitolul 1 1. Cloud Computing 1.1 Ce este cloud computing 1.2 Caracteristicile cloud computing 1.3 Modele de servicii cloud 1.4 Modele de deployment Capitolul 2 2. Platforme Cloud Computing 2.1 Amazon cloud computing 2.2 Google cloud computing 2.3 Microsoft Windows Azure și serviciile online 2.4 Platforme software Open-source pentru…

  • Proiectarea Retelei de Calculatoare

    1. Studiul și analiza sistemului existent 1.1.Prezentarea succintă a unității economico-sociale Firma Syscom a fost înființată în anul 1991 și are un capital integral românesc fiind specializată în sisteme de măsurare și automatizări industriale. Compania reprezintă un sistem de servicii "la cheie" având peste 800 de clienți în România, Orientul Mijlociu și Asia Centrală. Multe…

  • Aspecte Teoretice

    Introducere Societatea informațională secolului XXI impune un ritm alert în preluarea, stocarea și utilizarea informației. Astfel, instrumentele folosite în aceste procese trebuie să respecte cele mai înalte standarde în ceea ce privește calitatea informației oferite și, în același timp, în cantitatea acesteia, furnizată în cel mai scurt timp cu putință. În lucrarea de față, este…