Ministerul Educatiei al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea Calculatoare, Informatica și Microelectronică Proiect de an Disciplina: Ingineria Programarii Tema: Aplicatie android “Apartment rent” A efectuat: st. A verificat : prof.unive. Chisinau-2022 1 Cuprins Introducere...................................................................................................................... 3 Capitolul 1 ...................................................................................................................... 4 1.1 Domeniul eventual al implementării softului .................................................... 4 Acces imobil ........................................................................................................... 4 www.999.md .......................................................................................................... 5 Airbnb..................................................................................................................... 6 1.2 Cerințele specializate pentru softul elaborat ........................................................ 7 Capitolul 2 ...................................................................................................................... 8 2.1 Instrumentele utilizate pentru dezvoltarea softului .............................................. 8 Android Strudio ...................................................................................................... 8 Cerințe de sistem .................................................................................................... 9 SQlite .................................................................................................................... 10 Caracteristicile SQLite ......................................................................................... 10 Limbajul de programare Java ............................................................................... 13 2.2 Arhitectura softului ............................................................................................ 14 Cum arata aplicatia ............................................................................................... 15 Capitolul 3 .................................................................................................................... 18 3.1 Descrierea componentelor functionale si nonfunctionale: ................................. 18 3.2 Testarea softului ................................................................................................. 18 Concluzia ...................................................................................................................... 21 2 Introducere Tehnologia este definită ca un proces cuprinzător bazat pe aplicarea științei și cunoștințelor în multe domenii ale vieții într-o manieră ordonată și atentă pentru a atinge scopurile importante și valoroase pentru indivizi și comunități. ehnologia s-a răspândit în toată lumea și oamenii o folosesc tot timpul. Nu se mai limitează la muncă și în societățile dezvoltate, ci orice persoană, indiferent de nivelul său cultural sau social, sau de vârsta lui, poate folosi un telefon mobil, de exemplu, pentru a face poze, a le trimite și a le primi. Tehnologia ne ajută să păstrăm legătura cu oamenii care sunt departe de noi. Folosim telefoane și computere pentru a vorbi cu ei și chiar pentru a le vedea. Biroul nostru de lucru zilnic este, de asemenea, bazat pe tehnologie. Oamenii nu mai folosesc pix și hârtie pentru a-și finaliza munca. Ne păstrăm sănătatea mergând la săli de sport. Există aparate în sala de sport care ne ajută să ne reducem greutatea și să ne menținem în formă. Ajungem să păstrăm o mulțime de informații într-un dispozitiv mic și să le folosim când ne place. De asemenea, mașinile au devenit mai bune odată cu utilizarea tehnologiei. Tehnologia nu poate fi adecvată în anumite sarcini și are influențe negative. Toată lumea determină și decide cum să folosească această tehnologie într-un mod negativ sau pozitiv. Aceeași tehnologie poate fi folosită de două persoane într-un mod diferit. Creare a diferitor obiecte tehnologice fizice( calculatorul, roboti, telefoane, si alte gadjeturi) sigur ca este o performanta extraordinara, dar functionarea lor nu ar fi perfecta fara o baza buna, adica fara un soft, ce reprezinta la fel o tehnologie informationala: softurile, aplicatiile, web siturile toate au facut o extrema remarcabila in viata sociala a omului. La moment print citeva clicuri poti gasi ce ai nevoie, poti ajunge unde ai nevoie, de comunicare cu orice persoana de pe globul pamintesc pot sa nu comentez, este un progress extraordinar! Deci sa punctam, progresul tehnologic informational a facut ca viata sociala sa dezvolte, comunicarea intre persoane s-a schimbat, este un impact si asupra economie, printr-un clic poti achita tot ce ai nevoie, poti trimite bani in orice punct a lumii, ce influentiana macro economia, si cresterea valutei, medicina tot nu a ramas in urma, acum printro aplicatie poti avea grija de sanatatatea ta, si in cazul unui accident datorita unui soft este chemata abulanta sau alt ajutor necesar. Din acesta perspectiva uluitoare, a fost creat si softul meu, pentru comoditate oamenilor, tematica aplicatiei android se bazeaza pe faptul, ca sa-ti poti gasi un apartment sau o camera pe o perioada care o vreai tu, dece anume aplicatia asta e diferita de cel pe piata? Deorece pentru inceput softul va verifica veridicitatea documentelor, si pozelor apartamentelor cu relitatea, deorece pe fiecare platforma de 3 arendare a apartamentului, sunt escrocherii, si sigur stind undeva afara ai dori rapid si fara problem sa iti gaseste un locusor de suflet. Capitolul 1 1.1 Domeniul eventual al implementării softului Sa incepem cu faptul ca piata imobiliara la momnetul actul (anii 2020-2021-2022), creste in continui, nu vorbesc doar de preturi, dar si de vasta alegerea apaaruta, de catogorii in care se clasifaca apartmantele si casele la moment. În anul 2021 in Chisinau, prețurile imobiliarelor au crescut semnificativ. Potrivit agenților imobiliari, creșterea a fost de aproximativ 20% -30%. Se observă că acest lucru s-a întâmplat din mai multe motive – inflația, de circa 15% in anul 2021, o scădere a ofertelor de pe piață și o creștere a numărului de credite ipotecare. Prețurile terenurilor cresc și ele rapid. Datorita acestui fapt, multi oameni se gindesc ca investirea intru imobil, cum ar fi cumararea lui, sau cumpararea si efectiv darea in chirie este o investitie buna in ziua de miine. Sa nu uitam de faptul ca apratmentele sau alt imobil intodeauna o sa fie in cerere, deorece putem observa cum timp de citiva ani consectivi lumea din suburbiile indepartate se trag mai mult spre orase, fii din motive a unui trai stabil, lucru, invatamint etc., dar se observa aceste migrari care la rindul sau ridica cererea in partea pietii imobile. Din aceste considerenta se creeaza si cererea unor softuri, care sa reprezinte totate cerintele posibile pe piata imobiliara. Sigur ca infara de softul creeat, deja exista pe piata unele exemplare cum ar fi: Acces imobil Este o aplicatie, bazata pe teriotoriul Republicii Moldova, care ofera clientilor gasirea apartamntelor pentru chirie sau cumparare. Este o pagina web, dar nu un soft, dar este unul detul de comod in utilizare. Un alt plus ar fi, este verificata veridicitatea contentului plasat, daca apartamntul coincide cu documentele stipulate, si daca fotografiile sunt la fel, cum arata apartmantul in real. Dar am gasit unele minusuri, cum ar fi: este un blog adaugat care inunda cu informatii care unor nu le este utila, sau necesara la moment. Este o pagina web, dupa care se acunde o companie imobiliara, si in cazul folosirii pagiinii web, in viitor o sa trebuiasa sa va confruntati cu agenti imobiliare si chiar sa achitati pentru serviciile oferite a acestor. Plus la asta daca doriti o cherie pe un termen scurt, 2-3 zile, sau doar o camera pentru o noapte, n-o sa va fie de folos acesta pagina web. Deci este o deosebire din ceea ce vedem, si ce va putea oferi softul elaborat. 4 Img.1 Pagina web Acces Imobil www.999.md Este o pagina web, dar are si un soft aparte elaborat pentru dispozitive android si Ios. Ce este de mentionat, nu este un soft doar pentru imobiliare, este mai mult o tabla de anunturi, in format electronic. Img. 2 Soft-ul www.999.md 5 Din perspectiva utilizatorului am gasit doar un plus, multi utilizatori cunosc de acesta pagina si publica in fiecare zi anunturi noi, din care poti gasi ceva interesant, dar, trebuie sa monitorizezi pagina ore intregi, poate chiar si zile. Cred ca ati inteles ca minusuri am gasit mult mai multe, in primul rind cum am si zis de acesta pagina se poate folosi fiecare, deci la capitolul imobiliar petem gasi multi iscrocheri, care pot sa va minta de bani. Navigare incomoda, unele anunturi sunt vechi, si doar iti pierzi timp cautind stapinul acelui anunt. Airbnb Img. 3 Soft-ul Airbnb Acest soft este un bun exemplar, si un model de la care a ainceput implementarea softului “Rent Apartemnt”, este o aplicatie pentru orice fel de dispozitive, care ofera in chirierea apartmentelor din orice punct al lumii, inclusiv in Republica Moldova, pe o perioada de la citeva zile, pina la citeva luni. Este foarte comod in utilizare, suportul clintelor este la maxim, fiecare problema este rezolvata. Este totul verificat, documentele, imaginele chiar si starea financiara a persoanei care ofera apartamentul sau in cherie. 6 Din minusuri, cum am observat este o aplicatie pentru inchirierea apartamentelor sau camerilor pentru o durata, maxim pina la 4 luni. Aici nu sunt apartamnte pentru inchiriere. Nu stiu daca pot numi si acesta un minus, dar foarte putine persoane de pe teritoriul republicii moldova cunosc despre acesta aplicatie, mai mult este folosit de turisti, si de persoanele care vin aici in privinta lucrului pe citeva saptamini. Deci aici sunt unele exemple, a paginilor web si a aplicatiilor, care la moment sunt de baza in Republica Moldova, care fac parte din domeniul in care intra softul elaborat: “Apartement Rent”. 1.2 Cerințele specializate pentru softul elaborat Cerințele de care a fost conduși in elaborarea softului „Apartment Rent” sunt: Sa fie un soft, accesibil, la intelesul fiecarui utilizator. In cadrul inregistratii utilatorului, pentru plasarea imobiliarului sau, sa fie verificate toate datele necesare pentru excluderea escrocheriilor. Softul sa ofere informatii la capitolul apartamntelor existent la moment, cit pentru cumparare -vinzare atit cit si pentru inchiriere sau oferirea chiriei. Sa fie o diferenta vasta de preturi, pentru placul fiecarui client. Implimentatrea aparte a departamentului „ Suport client”, pentru cei care ofera serviciile, si pentru cei care le cumpara. Sa aiba un miniu simplu. Compartiment clar pentru plasarea imobiliarului. Care este clar stipulat, si se catalogheaza in categoriile adaugate. 7 Capitolul 2 2.1 Instrumentele utilizate pentru dezvoltarea softului Pentru dezvoltatrea unui soft, trebuie alese intrumente verificate care permit un lucru usor dar cu succes. Am folosit platforma Android studio si pentruformarea unei baze de date complexe am utilizat Sqlite database. Sa nu uitam si despre limbajul utilizat in creearea acestui soft, am utilizat limbajul Java. Android Strudio Android Studio este mediul de dezvoltare integrat (IDE) oficial pentru sistemul de operare Android de la Google, construit pe software-ul IntelliJ IDEA al JetBrains și conceput special pentru dezvoltarea Android.Este disponibil pentru descărcare pe sistemele de operare bazate pe Windows, macOS și Linux sau ca serviciu pe bază de abonament în 2020. Este un înlocuitor pentru Eclipse Android Development Tools (EADT) ca IDE principal pentru dezvoltarea de aplicații Android native. O caracteristică specifică, si de fololos a Android Studio este absența posibilității de a dezactiva funcția de salvare automată. Următoarele caracteristici sunt furnizate în versiunea stabilă actuală: Gradle-based suport de construcție. Refactorizare specifică Android și remedieri rapide. Instrumente Lint pentru a detecta performanța, gradul de utilizare, compatibilitatea versiunilor și alte probleme. Capacitățile de integrare și semnare a aplicațiilor ProGuard. Template-based wizards pentru a crea modele și componente Android comune. Un editor bogat de aspect care permite utilizatorilor să traga și să plaseze componentele UI, opțiune de previzualizare a machetelor pe mai multe configurații de ecran. Suport pentru crearea de aplicații Android Wear. Suport încorporat pentru Google Cloud Platform, permițând integrarea cu Firebase Cloud Messaging (anterior „Google Cloud Messaging”) și Google App Engine Dispozitiv virtual Android (Emulator) pentru a rula și a depana aplicații în studioul Android. Android Studio acceptă toate aceleași limbaje de programare ale IntelliJ (și CLion), de ex. Java, C++ și multe altele cu extensii, cum ar fi Go; și Android Studio 3.0 sau o versiune ulterioară acceptă Kotlin și „toate caracteristicile limbajului Java 7 și un 8 subset de caracteristici ale limbajului Java 8 care variază în funcție de versiunea platformei.Proiectele externe backport unele caracteristici Java 9. În timp ce IntelliJ afirmă că Android Studio acceptă toate versiunile Java lansate și Java 12, nu este clar la ce nivel Android Studio acceptă versiunile Java până la Java 12 (documentația menționează suport parțial pentru Java 8). Cel puțin unele funcții de limbaj noi până la Java 12 sunt utilizabile în Android. Odată ce o aplicație a fost compilată cu Android Studio, aceasta poate fi publicată în Magazinul Google Play. Aplicația trebuie să fie în conformitate cu politica de conținut pentru dezvoltatori Google Play Store. Cerințe de sistem Cerinte de baza ale platformei Android Studio Dincolo de cerințele de bază ale aplicației Android Studio, Emulatorul Android are cerințe suplimentare care sunt descrise mai jos: SDK Tools 26.1.1 sau o versiune mai actuală; Procesor cu arhitectura 64-bit; Windows: CPU cu suport UG (unrestricted guest); HAXM 6.2.1 sau o versiune mai actuală (este recomandat HAXM 7.2.0 sau o versiune mai actuală). Utilizarea accelerației hardware are cerințe suplimentare pentru Windows și Linux: Intel procesor în cazul sistemelor de operare Windows sau Linux: Intel procesor cu sprijin pentru Intel VT-x, Intel EM64T (Intel 64), și funcționalitatea Execute Disable (XD) Bit; AMD procesor în cazul sistemei de operare Linux: AMD procesor cu sprijin pentru AMD Virtualization (AMD-V) și Supplemental Streaming SIMD Extensions 3 (SSSE3); 9 AMD procesor în cazul sistemei de operare Windows: Android Studio 3.2 sau o versiune mai actuală și Windows 10 April 2018 release sau o versiune mai ctuală pentru funcționalitatea Windows Hypervisor Platform (WHPX). Pentru a lucra cu Android 8.1 (API level 27) și cu imagini de sistem mai superioare, camera web atașată trebuie să aibă rezoluția de 720p. SQlite SQLite este un sistem de gestionare a bazelor de date relaționale (RDBMS) conținut într-o bibliotecă C. Spre deosebire de multe alte sisteme de gestionare a bazelor de date, SQLite nu este un motor de baze de date client-server. Mai degrabă, este încorporat în programul final. SQLite urmează în general sintaxa PostgreSQL. SQLite folosește o sintaxă SQL tastată dinamic și slab, care nu garantează integritatea domeniului. Aceasta înseamnă că se poate, de exemplu, introduce un șir într-o coloană definită ca un întreg. SQLite va încerca să convertească datele între formate acolo unde este cazul, șirul „123” întrun număr întreg în acest caz, dar nu garantează astfel de conversii și va stoca datele așa cum sunt dacă o astfel de conversie nu este posibilă. SQLite este o alegere populară ca software de bază de date încorporat pentru stocarea locală/client în aplicații software, cum ar fi browserele web. Este, fără îndoială, cel mai răspândit motor de baze de date, deoarece este folosit astăzi de mai multe browsere, sisteme de operare și sisteme încorporate (cum ar fi telefoanele mobile), printre altele. SQLite are legături la multe limbaje de programare. Caracteristicile SQLite Aratăm în continuare unele din caracteristicile SQLite-ului care sunt neobișnuite și care fac SQLite diferit de multe alte motoare de baze de date SQL: Zero-Configurare SQLite nu are nevoie de "instalare" înainte de a fi folosit. Nu există procedura de "setup". Nu există nici un proces server care necesită pornire, oprire sau configurare. Nu este nevoie de un administrator pentru a crea o nouă instanță de bază de date sau pentru a atribui permisiuni de acces utilizatorilor. SQLite nu folosește fișiere de configurare. Nu trebuie făcut nimic pentru a atenționa sistemul că SQLite rulează. Nici o acțiune nu este necesară pentru a recupera ceva după o cădere de sistem sau după o pană de curent. Nu este nimic de rezolvat. Fără server 10 Majoritatea motoarelor de baze de date SQL sunt implementate că un proces server separat. Programe care doresc acces la bază de date comunică cu serverul folosind un fel de comunicare interprocese (tipic TCP/IP) pentru a trimite cereri către server și să primească înapoi rezultate. SQLite nu lucrează așa. Cu SQLite, procesul ce dorește să acceseze bază de date citește și scrie direct din fișierele bază de date de pe disc. Nu există nici un proces server intermediar. Sunt avantaje și dezavantaje în a lucra fără server. Marele avantaj este acela că nu există un proces server de instalat, setat, configurat, inițializat, administrat și reparat. Acesta este unul din motivele pentru care SQLite este un motor de baze de date "zeroconfigurare". Programe care folosesc SQLite nu necesită suport administarativ pentru a pregăti motorul de baze de date înainte că acesta să fie rulat. Orice program care este capabil să acceseze discul este capabil să folosească o bază de date SQLite. Pe de altă parte, un motor de baze de date care folosește un server poate oferi o protecție îmbunătățită în aplicații client - pointeri rătăciți în un client nu pot corupe memoria pe server. Și deoarece un server este un proces unic persistent, el este capabil să controleze accesul la bază de date cu o mai mare precizie, permițând o blocare rafinată și concurență îmbunătățită. Un singur fișier bază de data O bază de date SQLite este un singur fișier disc (ordinar) care poate fi plasat (localizat) oriunde în ierarhia directoarelor. Dacă SQLite poate citi fișierul disc atunci poate citi orice din bază de date. Dacă fișierul disc și directorul său sunt writeable (permit scrierea în ele), atunci SQLite poate schimbă orice în bază de date. Fișierele bază de date pot fi ușor copiate pe memory stick-uri USB sau trimise prin e-mail pentru a partajare. Compact Când este optimizată pentru mărime, inreaga librărie SQLite cu toate opțiunile activate este mai mică de 225KiO. Opțiunile nenecesare pot fi dezactivate în timpul compilarii pentru a reduce mai mult mărimea librării până sub 170KiO. Alocarea tipului de date evident SQLite relaxează această restricție folosind modul de atribuire a tipului de date evident. În acest mod, tipul de date este o proprietate a valorii însăși, nu a coloanei în care valoarea este stocată. SQLite, astfel, permite utilizatorului să stocheze orice valoare de orice tip în orice coloană necontând tipul declarat al acelei coloane. Înregistrări de lungime variabilă 11 SQLite, în contrast, folosește numai cantitatea de spațiu pe disc necesară să stocheze informația în o linie. Dacă stochezi un singur caracter în o coloană VARCHAR(100), atunci un singur octet de spațiu pe disc este folosit. Folosirea înregistrărilor de lungime variabila are un număr de avantaje. Se concretizează, evident, în fișiere bază de date mai mici. De asemenea face bazele de date să ruleze mai rapid, de vreme ce este mai puțină informație să fie mișcată de pe și pe disc. Și, această metodă face posibilă lui SQLite să folosească atribuirea tipului de date evident în locul metodei de alocare statică. Cod sursă lizibil Codul sursă a SQLite este proiectat pentru a fi lizibil și accesibil unui programator mediu. Toate procedurile și structurile de date și multe variabile automate sunt comentate cu grijă cu informații utile despre ceea ce fac. Comentariile elevate sunt omise. Declarațiile SQL compilează în cod mașină virtuală Folosirea unei mașini virtuale în SQLite a fost de un mare folos dezvoltării librăriei. Mașină virtuală oferă o crispă, o bine definită uniune între front-end-ul SQLite (partea care parsează declarațiile SQL și generează cod mașină virtuală) și back-end-ul acestuia (partea care execută codul virtual mașină și calculează un rezultat). Mașină virtuală permite dezvoltatorilor să vadă clar și în o manieră ușor de citit ceea ce SQLite încearcă să facă cu fiecare declarație pe care o compilează, care este de un ajutor de neimaginat în debugging. Depinzînd de cum este compilat, SQLite de asemenea are capacitatea de a urmării execuția codului mașină virtual - printand fiecare din instrucțiunile mașinii virtuale și rezultatele lor în timpul execuției. Domeniul public Codul sursă pentru SQLite este în domeniul public. Nu există nici o pretenție de drept de autor pe nici o parte din codul sursă de bază. Toți contribuabilii la core-ul SQLite au semnat cum că nu au nici un interes de drept de autor asupra codului. Această înseamnă că oricine este capabil să facă orice vrea cu codul sursă SQLite (legal). Extensiile de limbaj SQL SQLite oferă un număr de îmbunătățiri limbajului SQL ce nu le găsești în mod obișnuit în alte motoare de baze de date. Cuvântul rezervat EXPLAIN și alocarea tipului de date evident sunt specificate mai sus. SQLite de asemenea oferă declarații că REPLACE și clauza ON CONFLICT care permite control asupra rezolvării conflictelor. SQLite suportă ATTACH și DETACH, comenzi care permit ca mai 12 multe baze de date independente să fie folosite în același query! SQLite definește API-uri care permit utilizatorului să adauge noi funcții SQL secvențe cumulate. Limbajul de programare Java Java este un limbaj de programare de nivel înalt, bazat pe clasă, orientat pe obiecte, care este proiectat să aibă cât mai puține dependențe de implementare. Este un limbaj de programare de uz general destinat să permită programatorilor să scrie o dată, să ruleze oriunde (WORA), ceea ce înseamnă că codul Java compilat poate rula pe toate platformele care acceptă Java fără a fi nevoie de recompilare. Aplicațiile Java sunt de obicei compilate în bytecode care poate rula pe orice mașină virtuală Java (JVM), indiferent de arhitectura computerului subiacent. Sintaxa Java este similară cu C și C++, dar are mai puține facilități de nivel scăzut decât oricare dintre ele. Runtime Java oferă capabilități dinamice (cum ar fi reflecția și modificarea codului de rulare) care de obicei nu sunt disponibile în limbajele compilate tradiționale. Începând cu 2019, Java a fost unul dintre cele mai populare limbaje de programare utilizate conform GitHub, în special pentru aplicațiile web client-server, cu 9 milioane de dezvoltatori raportați. Un obiectiv de design al Java este portabilitatea, ceea ce înseamnă că programele scrise pentru platforma Java trebuie să ruleze în mod similar pe orice combinație de hardware și sistem de operare cu suport adecvat pentru timpul de rulare. Acest lucru se realizează prin compilarea codului limbajului Java într-o reprezentare intermediară numită bytecode Java, în loc să fie direct la codul mașinii specific arhitecturii. Instrucțiunile Java bytecode sunt analoge cu codul mașină, dar sunt destinate să fie executate de o mașină virtuală (VM) scrisă special pentru hardware-ul gazdă. Utilizatorii finali folosesc de obicei un Java Runtime Environment (JRE) instalat pe dispozitivul lor pentru aplicații Java independente sau un browser web pentru appleturi Java. Limbajul Java este un pilon cheie în Android, un sistem de operare mobil open source. Deși Android, construit pe nucleul Linux, este scris în mare parte în C, Android SDK folosește limbajul Java ca bază pentru aplicațiile Android, dar nu folosește niciunul dintre GUI standard, SE, ME sau alte standarde Java stabilite. Limbajul bytecode suportat de Android SDK este incompatibil cu bytecode Java și rulează pe propria sa mașină virtuală, optimizată pentru dispozitive cu memorie redusă, cum ar fi smartphone-urile și tabletele. În funcție de versiunea Android, bytecode este fie interpretat de mașina virtuală Dalvik, fie compilat în cod nativ de Android Runtime. Android nu oferă întreaga bibliotecă standard Java SE, deși Android SDK include o implementare independentă a unui subset mare al acestuia. 13 2.2 Arhitectura softului O aplicație Android tipică conține mai multe componente ale aplicației, inclusiv activități, fragmente, servicii, furnizori de conținut și receptoare de transmisie. Declarați majoritatea acestor componente ale aplicației în manifestul aplicației. Sistemul de operare Android utilizează apoi acest fișier pentru a decide cum să vă integreze aplicația în experiența generală a utilizatorului a dispozitivului. Având în vedere că o aplicație Android tipică poate conține mai multe componente și că utilizatorii interacționează adesea cu mai multe aplicații într-o perioadă scurtă de timp, aplicațiile trebuie să se adapteze la diferite tipuri de fluxuri de lucru și sarcini conduse de utilizator.Pe măsură ce aplicațiile Android cresc în dimensiune, este important să definiți o arhitectură care să permită aplicației să se scaleze, să mărească robustețea aplicației și să facă aplicația mai ușor de testat. O arhitectură de aplicație definește granițele dintre părțile aplicației și responsabilitățile pe care ar trebui să le aibă fiecare parte. Pentru a răspunde nevoilor menționate mai sus, ar trebui să vă proiectați arhitectura aplicației pentru a urma câteva principii specifice. Cel mai important principiu de urmat este separarea preocupărilor. Este o greșeală comună să scrieți tot codul într-o activitate sau un fragment. Aceste clase bazate pe interfața de utilizare ar trebui să conțină doar logică care se ocupă de interacțiunile cu interfața de utilizare și cu sistemul de operare. Păstrând aceste clase cât mai slabe posibil, puteți evita multe probleme legate de ciclul de viață al componentelor și puteți îmbunătăți testabilitatea acestor clase. Rețineți că nu dețineți implementări ale Activity și Fragment; mai degrabă, acestea sunt doar clase de adeziv care reprezintă contractul dintre sistemul de operare Android și aplicația dvs. Sistemul de operare le poate distruge în orice moment, pe baza interacțiunilor utilizatorului sau din cauza condițiilor sistemului, cum ar fi memoria scăzută. Pentru a oferi o experiență de utilizator satisfăcătoare și o experiență de întreținere a aplicațiilor mai ușor de gestionat, cel mai bine este să minimizați dependența dvs. de acestea. Un alt principiu important este că ar trebui să vă conduceți UI din modele de date, de preferință modele persistente. Modelele de date reprezintă datele unei aplicații. Sunt independente de elementele UI și de alte componente din aplicația dvs. Aceasta înseamnă că nu sunt legate de interfața de utilizare și de ciclul de viață al componentei aplicației, dar vor fi în continuare distruse atunci când sistemul de operare decide să elimine procesul aplicației din memorie. 14 Cum arata aplicatia Deci softul contine trei pagini principale: Prima apagina este acea de logare, unde este cerut inregistratrarea emailui si a parolei utilizatorului 15 Dupa aceea este pagina Meniului Principal: Aici utilizatorul poate sa observe casuta de cautare a locului unde se afla. Dup ace elege locatia, utilizatorul allege, pentru cine este rezervat/ cumparat acest apartament (acest pas a fost pus, deoarece cind cineva isi plaseaza imobiliarul, allege cui vrea s ail ofere in inchierere) Si dupa alege, doar o camera, un apartment intreg, vrea sa procure. Sigur trebuia sa fie adaugate si compartimentul case, dar este o idee de viitor Pentru plasarea a imobiliarului sau este nevoie de apasare pe butonul> Post your property. Unde se va deschide pagina a doua, intre care trebuie sa alegi ce vrei sa oferi. Camera sau apartment. Dupa asta va apare un meniu unde va trebui de adaugat toata informatia necesara, despre apartamntul oferit, plus fotografiile corespunzatoare. 16 Elaborarea componentelor a inceput, disiagnul aplicatiei, adica prima pagina a fost create, pagina de logare. Am inceput cu disgnul acestei, plasarii componentelor cum miar placea, adica a casutelor pentru inscrirea informatiei, + butoenele necesare. Disignul aplicatiei era cea mai usoara parte, a elaborarii acestui soft, Deoarece platforma Android strudio, ne ofera toate intrumentele necesare, pentru a modifica instantaneu vizualul aplicatiei, fara a mai fi necesare alte platforme. Dupa aranjare vizuala a paginii, am decurs la programarea acestora, la unirea lor prin cod, adica functionalul. Deoarece a fost o prima experienta de crerea unui soft Android, a fost observat ca SQLite pentru crerea acestui soft a fost o alegere foarte bune, deoarece Andoid Studio la fel are toate repositoriile necesare, daca tebuie adaugata o baza de date. Facind comparative cu aplicatia web pe care am realizat la fel cu o baza date, pot sa remarc, ca a fost mult mai greu cind foloseam MYSQL, deoarece elaborarea paginii web era pe o platforma, baza de date a fost create pe o plaforma aparte, toate trebuiau cumva fi unite la sfirsit, cee ace ia timp din lucru unui inginer la elaborarea unui soft. 17 Capitolul 3 3.1 Descrierea componentelor functionale si nonfunctionale: Sa incepem cu componentele functionale, cum a fost mentionat si mai sus, partea de logare este una functionala. Plus partea cu plasarea apartmentului sau a camerei dorite spre darea in exploatare, care a luat cel mai mult timp, pentru stabilirea functionalului acesteia. Partea care nu este functionala, este casuta de cautare de pe pagina principal, deoarece prin cod a fost scris sa fie gasit pina cind doar un oras, deorece nu am gasit o metoda clara cum sa unesc softul creat cu o harta, sau alt soft, care va putea cauta toate locatiele necesare. Din perspectica inginerului care a creat acest soft as dori sa adaug, ca idea care era la baza acestui soft, nu s-a realizat pina la cap. Pentru a avea un soft ideal, ar trebui la pagina principala sa fie o casuta aparte pentru apartamente care se vind, sau case. Plus partea nefunctionala mai este” Suport client”, la moment este adaugat doar un nr gen de contact, se preconize de la inceput sa fie un buton care te arunca automat intrun chat cu persoana de la serviu tehnic. Nu este functionala si partea cu schimbarea limbii pentru aplicatie, softul este doar in limba engleza, poate fi neclar pentru utilizator, utilizarea unor pagini. 3.2 Testarea softului Testarea aplicațiilor mobile este un proces prin care software-ul aplicației dezvoltat pentru dispozitivele mobile portabile este testat pentru funcționalitatea, gradul de utilizare și consistența acestuia. Testarea aplicațiilor mobile poate fi un tip de testare automată sau manuala. Provocări cheie pentru testarea aplicațiilor mobile: Trebuie să poată fi descărcată: aplicația trebuie să poată fi obținută pentru o anumită platformă, în general dintr-un magazin de aplicații. Diversitate în platforme/OS-uri mobile: Există diferite sisteme de operare pentru mobil pe piață. Cele mai importante sunt Android, iOS și Windows Phone. Fiecare sistem de operare are propriile sale limitări. Disponibilitatea dispozitivelor: Accesul la setul potrivit de dispozitive atunci când există o listă în continuă creștere de dispozitive și versiuni de sistem de operare este o provocare constantă de testare a aplicațiilor mobile. Accesul la dispozitive poate deveni și mai dificil dacă testerii sunt răspândiți în locații diferite. 18 Scriptare: varietatea de dispozitive face executarea unui script de testare (scripting) o provocare cheie. Deoarece dispozitivele diferă în ceea ce privește apăsarea tastelor, metodele de introducere, structura meniului și proprietățile de afișare, un singur script nu funcționează pe fiecare dispozitiv. Metoda de testare: Există două modalități principale de testare a aplicațiilor mobile: testarea pe dispozitive reale sau testarea pe emulatoare. Emulatorii ratează adesea probleme care pot fi detectate doar prin testarea pe dispozitive reale, dar din cauza multitudinii de dispozitive diferite de pe piață, dispozitivele reale pot fi costisitoare de cumpărat și consumatoare de timp pentru a fi utilizate pentru testare. Compatibilitate: Este necesar să se testeze compatibilitatea; asigurând că aplicația funcționează în mod consecvent chiar și cu proprietăți diferite ale dispozitivului, cum ar fi diferite dimensiuni și rezoluții ale ecranului. Tipurile de testari a aplicatiilor mobile: Testarea funcțională asigură că aplicația funcționează conform cerințelor. Cele mai multe dintre testele efectuate pentru aceasta sunt conduse de interfața cu utilizatorul și fluxul de apeluri. Testele de laborator, de obicei efectuate de operatori de rețea, se realizează prin simularea întregii rețele wireless. Acest test este efectuat pentru a afla eventualele erori atunci când o aplicație mobilă utilizează voce și/sau conexiune de date pentru a îndeplini anumite funcții. Testarea performanței este efectuată pentru a verifica performanța și comportamentul aplicației în anumite condiții precum baterie scăzută, acoperire proastă a rețelei, memorie disponibilă scăzută, acces simultan la serverul aplicației de către mai mulți utilizatori și alte condiții. Testarea pierderilor de memorie: pierderile de memorie se întâmplă atunci când un program de calculator sau o aplicație nu este în măsură să gestioneze memoria care îi este alocată, ceea ce duce la performanța slabă a aplicației și la încetinirea generală a sistemului. Testare întreruperi: o aplicație în timp ce funcționează se poate confrunta cu mai multe întreruperi, cum ar fi apelurile primite sau întreruperea acoperirii rețelei și recuperare. Testarea de utilizare este efectuată pentru a verifica dacă aplicația își atinge obiectivele și obține un răspuns favorabil din partea utilizatorilor. Acest lucru este important, deoarece capacitatea de utilizare a unei aplicații este cheia succesului comercial. 19 Testarea instalării: Anumite aplicații mobile vin preinstalate pe dispozitiv, în timp ce altele trebuie să fie instalate de magazin. Testarea instalării verifică că procesul de instalare decurge fără probleme, fără ca utilizatorul să fie nevoit să se confrunte cu vreo dificultate. Testare de certificare: pentru a obține un certificat de conformitate, fiecare dispozitiv mobil trebuie testat conform regulilor stabilite de diferite platforme mobile. Testare de securitate: verifică vulnerabilitățile la hacking, politicile de autentificare și autorizare, securitatea datelor, gestionarea sesiunilor și alte standarde de securitate. Testarea locației: conectivitatea se modifică în funcție de rețea și locație, dar nu puteți imita acele condiții fluctuante într-un laborator. Doar în țară testerii neautomatizați pot efectua teste cuprinzătoare de utilizare și funcționalitate. Testare software învechită: nu toată lumea își actualizează în mod regulat sistemul de operare. Unii utilizatori de Android ar putea să nu aibă nici măcar acces la cea mai nouă versiune. Testerii profesioniști pot testa software-ul învechit. Testarea încărcării: atunci când mulți utilizatori încearcă să descarce, să încarce și să utilizeze simultan o aplicație sau un joc, pot apărea timpi de încărcare lenți sau blocări, ceea ce determină mulți clienți să abandoneze aplicația, jocul sau site-ul dvs. Testarea umană în țară efectuată manual este cea mai eficientă modalitate de a testa sarcina. Testare cutie neagră: în cazul în care aplicația este testată fără să se uite la codul și logica aplicațiilor. Testerul are date de testare specifice de introdus și ieșirea corespunzătoare pe care aplicația ar trebui să le producă și introduce datele de testare în căutarea programului pentru a scoate date în concordanță cu ceea ce se aștepta testatorul. Testare crowdsourced: În ultimii ani, testarea crowdsourced a devenit populară, deoarece companiile pot testa aplicațiile mobile mai rapid și mai ieftin folosind o comunitate globală de testeri. Datorită diversității tot mai mari de dispozitive și sisteme de operare, precum și nevoilor de localizare, este dificil să testați aplicațiile mobile cuprinzătoare cu echipe interne mici de testare. O comunitate globală de testeri oferă acces ușor la diferite dispozitive și platforme. O echipă distribuită la nivel global îl poate testa și în mai multe locații și în diferite condiții de rețea. În cele din urmă, problemele de localizare pot fi testate prin angajarea de testeri în zonele geografice necesare. Deoarece utilizatorii reali care folosesc dispozitive reale testează aplicația 20 Testarea softului elaborate, era fectuata manual, la fiecare component in parte de la inceput, si tot asa cu cit se adaugau mai multe componente si legaturi intre aceste componente. Dupa elaborarea acestui soft, il putem evalua ca unul ne finisat, cred ca in cazul testarii din partea unui utilizator, se vor gasi mai multe baguri. Concluzia In concluzi pot spune, ca dupa elaborarea unui soft, care a durat un curs intreg a disciplinii Ingeneria Programarii, putem constata ca fiecare proiect fie cel soft, sau hard incepe cu pasi mici, de la inceput invatam cum arata si se creiaza un soft a unui calculator de buzunar, pentru a elabora un proiect mai vast la sfirsitul programului de studio. Am realizat ca sunt multe nuante, legate de cod, care trebuie fi stiute pentru a crea o aplicatie Android, am invata lucru pe o platforma noua, Android Studio, este cea mai buna alegere, daca doreste sa lucrez in domeniul dezvoltarii aplicatiilor mobile, pentru un incepator. Si alegerea folosirii SQLite, a usurat mult lucru la elaborarea softului. Ce la fel arata ca lumea tehnologiilor informationale se dezvolta pe z ice trece, pentru a usura viata inginerilor, care se ocupa de crerea aplicatiilor. Dupa implimentarea idee de proiect, in decursul elaborarii acestei idei, iti dai seama cit e de greu sa intercalezi, sis a faci unirele logice intre componentele functionaluilui. Iti dai seam ace trebuie sa fie exclus sau a daugat deja in momentul implimentarii, deci un sfat bun ar fi elaborarea unei sheme cit mai exacte, a bezei de date a palicatiei, deorece daca este o baza de date utila, care exclude toate conexiunele nelogice intre componente, si dupa care te poti ghida, atuci exact ajungi la rezultatul final dorit. Deoarece acesta a fost si greseala mea, la implimentarea unei baza de date, am folosite prea multa informatie, care nu este utila, si am creat componente putine. Partea cea mai grea, din perspectiva unui inginer, care a creat acest soft, este testarea acestuia, deoarece, cred ca o privire rece, din partea unui utilizator ar fi mai efectiva in gasirea bagurilor in aplicatie. Si testarea ar fi una din cele mai importante parti din crearea unui soft, care in viitor se va folosi de o parte buna de oameni. Cred ca acesta incercarea de creea de sinestatator un proiect soft, este un inceput bun de ati testa cunostintele si abilitatile intr-un domeniu nou invatat, in rezultat iesi cu anumite puncta care trebuie sa le perfectezi in cunostintele tale, ca sa poti progresa in acest domeniu, si deoarece e deabia inceputul progresului tehnologic, in fiecare zi o sa avem ce invata, pentru a fi cei mai buni in domeniu. 21 Bibliografie ✅ Android Studio Tutorial - Android Material Design UI no75 - YouTube Куда летят цены на землю и недвижимость в Молдове - YouTube Java (programming language) - Wikipedia Guide to app architecture | Android Developers (google.cn) Software architecture - Wikipedia Testarea aplicatiilor web (scrigroup.com) 22