Skip to content
This repository has been archived by the owner on Jul 10, 2023. It is now read-only.

Nacrt projektnog zadatka

Luka Simić edited this page Mar 25, 2022 · 1 revision

Uvod

Rezime

Projekat Blurr je deo praktične nastave na predmetu Principi softverskog inženjerstva. Namenjen je mladim ljudima koji imaju potrebu da objavljuju i pregledaju slike svojih prijatelja ili drugih poznatih ličnosti, ali sa značajno drugačijim sistemom upravljanja dostupnosti sadržaja objava.

Namena dokumenta i ciljne grupe

Ovaj dokument definiše namenu projekta, osnovne funkcionalnosti, kategorije korisnika aplikacije i druge zahteve. Dokument je namenjen svim članovima projektnog tima i asistentima na predmetu kao klijentima aplikacije koja se izrađuje.

Opis problema

U današnje vreme nije potrebno pominjati kakav uticaj imaju društvene mreže na život prevenstveno mladih ljudi, ali i ostatka populacije. Kao jedna od lidera u oblasti pojavljuje se društvena mreža Instagram, čija je popularnost među mladim ljudima dostigla vrhunac u poslednjih nekoliko godina, koja nam je pokazala potrebu mladih za objavljivanjem i pregledom slika kao glavne vrste sadržaja.

Projekat Blurr bavi se razvijanje slične platforme za deljenje slika, ali sa zanimljivim načinom deljenja. Naime, nakon otpremanja slike i postavljanja opisa od korisnika se traži da unese šifru slike. Slike u objavama će korisnicima koji ih prvi put vide biti zamagljene (blur efekat) i za odmagljivanje njihovog sadržaja će biti potrebna šifra. Poenta ovog sistema je unošenje zanimljivih društvenih dinamika kada jedna grupa ima pristup ekskluzivnom sadržaju. Kako bi se unelo još više misterije u objave, biće prikazano koji korisnici su otključali sliku i komentari korisnika nakon otključavanja slike će biti cenzurisani (zamenjeni zvezdicama) dok se slika ne otključa.

Kategorije korisnika

U sistemu se vodi računa o tri kategorije korisnika: gost (neregistrovani korisnik), registrovani korisnik i administrator.

Gost

Gost u aplikaciji ima mogućnost da pregleda pojedinačne objave korisnika, ali nema mogućnost da prati druge korisnike, pravi svoje objave niti interaguje sa objavama registrovanih korisnika (uključujući i otključavanje). U slučaju da pokuša da otključa sliku, ili pristupi glavnoj strani gde se nalazi izlistavanje objava zapraćenih korisnika, prikazuje mu se forma za prijavljivanje na sistem.

Registrovani korisnik

Registrovani korisnik ima većinu mogućnosti aplikacije: pravljenje objava, sviđanje objava, otključavanje slika, praćenje korisnika i pregled objava zapraćenih korisnika.

Administrator

Kako na ovakvim mrežama ima velika mogućnost zloupotrebe, određeni korisnici imaju ulogu administratora. Pri objavljivanju svake objave ona se ubacuje u red objava za kontrolu, a korisnici sa ulogom administratora onda mogu da kroz taj red prolaze i odlučuju da li objava krši pravila sajta.

Opis proizvoda

U ovom odeljku opisana je arhitektura sistema na najvišem nivou i sumirane su glavne karakteristike sa stanovišta pogodnosti za korisnike.

Pregled arhitekture sistema

Korisnici pristupaju sajtu preko frontend dela aplikacije pisanog koristeći biblioteku React i jezik TypeScript. Planirano je da frontend i backend delovi budu odvojene celine, odnosno da frontend deo može da se pokreće na taj način da svoje naknadne zahteve podataka za prikaz šalje serveru koji može i ne mora biti pravi (mock-ovanje je uzeto u obzir) kako bi se na taj način olakšalo testiranje aplikacije. Server iz kojeg frontend deo aplikacije zahteva podatke je realizovan korišćenjem tehnologije Ruby on Rails dok se podaci čuvaju u PostgreSQL bazi podataka. Podrazumeva se korišćenje standardnih tehnologija poput Fetch API. Takođe je plan da aplikacija bude zapakovana kao Docker kontejner (frontend i backend deo zajedno) i da se pokreće na Azure platformi u oblaku.

Razlozi iz kojih se odlučujemo za gorenavedene tehnologije jesu:

  • React je moderna i popularna tehnologija sa deklarativnim umesto imperativnim načinom razvijanja aplikacija
  • TypeScript unosi fleksibilan sistem tipova u jezik JavaScript, time ograničavajući načine na koje programer može da pogreši i olakšavajući dokumentaciju i razumevanje koda
  • Ruby on Rails je novija tehnologija od tehnologije predavane na predmetu (jezik PHP) u kojoj je mnoštvo popularnih sajtova napravljeno danas, koju članovi tima nisu imali mnogo šanse da do sada upoznaju
  • PostgreSQL je open-source i besplatan softver za upravljanje bazama podataka sa dosta korisnih mogućnosti, dobrim performansama i lakom integracijom
  • Docker je najpopularnija i najrazvijenija tehnologija za kontejnerizaciju aplikacija koja se izučava na predmetu ovog semestra i lako se pokreće na bilo kom serveru (potrebno je samo instalirati Docker)
  • Azure platforma u oblaku je jedna od nekoliko najpopularnijih i za nju imamo kredite preko studentskog naloga.

Pregled karakteristika

Korist za korisnika Karakteristika koja obezbeđuje korist
Povezivanje ljudi sa drugim ljudima Pošto pravimo društvenu mrežu, njen cilj je da ljudi međusobno preko svojih objava
Razvija sposobnost prepoznavanja mesta, predmeta ili sl. na fotografijama Zamućenost slika u početku interakcije
Interesantne društvene dinamike Slike su iza ključa, može se videti ko je otključao sliku, ne mogu se videti komentari
Sigurnost od nepoželjnog sadržaja Administrator ima jednostavnu mogućnost da ukloni slike koje krše pravila sajta pri pregledu

Funkcionalni zahtevi

Ispod su izlistane osnovne funkcije koje aplikacija treba da pruži korisnicima i kojim kategorijama korisnika je ta funkcija namenjena. Podebljanim slovima označene su obavezne funkcionalnosti, dok su kurzivom označene funkcionalnosti koje ćemo dodati ukoliko stignemo.

  1. Objave
    Objave su osnovna jedinica sadržaja na sajtu. Svaka objava sadrži sliku koja je na početku interakcije zamagljena i opcionalni natpis ispod slike. Svaki korisnik ima dozvolu za pregled objave.
    1. Pravljenje
      Pri pravljenju objave od korisnika se traži slika koja se objavljuje, šifra za otključavanje slike, nivo zamagljenja i opcionalni natpis ispod slike. Dozvolu za pravljenje objave imaju samo registrovani korisnici.
    2. Brisanje
      Korisnik ima opciju da neku svoju objavu obriše, čime se ona trajno briše iz baze podataka. Dozvolu za brisanje neke objave imaju registrovani korisnik čija je to objava kao i administrator prilikom kontrole objava.
    3. Sviđanje
      Korisnik ima opciju da označi da mu se neka objava sviđa. Dozvolu za sviđanje ima registrovani korisnik.
    4. Izmena natpisa slike
      Nakon pravljenja objave, korisnik može izmeniti sadržaj objave. Dozvolu za menjanje sadržaja ima samo registrovani korisnik koji je objavu napravio.
    5. Zaključavanje slike
      Odmah nakon pravljenja slike, ona se zaključava. Korisnicima se prikazuje zamagljena slika kada je prvi put gledaju.
      1. Ključ za otključavanje
        Da bi se slika odmaglila, korisnik treba da unese ključ za otključavanje slike. Nakon otključavanja, korisniku se prikazuje originalna slika bez zamagljenja. Dozvolu za otključavanje imaju samo registrovani korisnici.
      2. Korisnici koji su otključali
        Korisnici koji nisu otključali sliku mogu da vide koji je korisnici jesu otključali. Dozvolu za pregledanje korisnika koji su otključali imaju registrovani korisnici. Gosti mogu da vide samo broj korisnika koji su otključali.
  2. Heštegovi
    1. Dodavanje u objavu
      Korisnik ima opciju da pri pravljenju objave doda neku oznaku (hešteg, hashtag) u nju koristeći #naziv u sadržaju objave.
    2. Pregled objava sa heštegom
      Korisnici mogu da izlistaju sve objave sa određenim heštegom. Dozvolu za ovo imaju svi korisnici.
    3. Praćenje heštega
      Korisnik može da "zaprati" hešteg, i u tom slučaju će se na njegovom izlistavanju objava pojaviti i objave sa tim heštegom, pored objava korisnika koje prati.
  3. Komentari
    1. Pravljenje
      Na svaku objavu je moguće dodati komentare, i oni se pojavljuju ispod objave. Dozvolu za pravljenje komentara imaju svi registrovani korisnici.
    2. Sviđanje
      Kao i objave, korisnici mogu da označe da im se sviđaju komentari. Dozvolu za sviđanje imaju registrovani korisnici.
    3. Odgovaranje
      Na komentare je moguće odgovarati, ali samo do jednog nivoa dubine, odnosno nije moguće odgovarati na odgovore.
    4. Cenzurisanje
      Ukoliko korisnik koji je otključao sliku doda novi komentar ili odgovor, njegov komentar ili odgovor se korisnicima koji nisu otključali sliku prikazuje kao zvezdice.
  4. Korisnici
    1. Registracija
      Korisnik može da napravi nalog koristeći korisničko ime, šifru, ime i prezime. Nakon pravljenja naloga dobija dozvole registrovani korisnik. Dozvolu za registraciju imaju samo gosti (registrovani korisnici bivaju preusmereni na glavnu stranu).
    2. Prijavljivanje (login)
      Ukoliko gost već ima nalog na sajtu, može umesto registracije da se prijavi pomoću svog korisničkog imena i lozinke kako bi dobio dozvole registrovanog korisnika. Dozvolu za prijavljivanje imaju samo gosti (kao pri registraciji).
    3. Praćenje
      Korisnik može da prati nekog drugog korisnika. U tom slučaju se tom korisniku prikazuju objave drugog korisnika u njegovoj listi objava. Dozvolu za praćenje imaju samo registrovani korisnici.
    4. Profil
      Svaki registrovani korisnik na sajtu ima svoj profil koji može da se pregleda. Dozvolu za pregledanje profila imaju svi korisnici sajta. Na profilu se prikazuju korisničko ime, ime i prezime, broj korisnika koji prate tog korisnika, broj korisnika koje taj korisnik prati i objave tog korisnika.
    5. Pretraga
      Korisnik može da pretražuje druge korisnike u formi za pretragu na sajtu. Predlozi za pretragu mu izlaze pri traženju, i kad izabere predloženog korisnika sajt ga vodi na korisnikov profil. Dozvolu za pretragu korisnika imaju svi korisnici sajta.
    6. Blokiranje
      Korisnik može blokirati drugog korisnika, i u tom slučaju se od tog korisnika sakrivaju sve objave i komentari korisnika koga je blokirao.
    7. Zamagljivanje profilne slike
      Dok korisnik ne zaprati nekog drugog korisnika, profilna slika tog korisnika će biti zamagljena.
  5. Kontrola
    Svaka objava na sajtu se, nakon svog pravljenja, šalje u red objava za pregled kako bi administrator za svaku odredio da li krši pravila sajta ili ne. Pristup ovim funkcionalnostima ima samo administrator.
    1. Izbacivanje iz reda za pregled
      Ukoliko administrator utvrdi da objava ne krši pravila sajta, može je izbaciti iz reda za pregled, kako bi nastavio sa pregledanjem drugih objava.
    2. Brisanje
      Ukoliko administrator utvrdi da objava krši pravila sajta, može je obrisati, i time se ona implicitno izbacuje iz reda za pregled.
      1. Brisanje korisnika
        Administrator ima opciju pored brisanja objave da obriše i korisnika koji je tu objavu napravio, ukoliko je učio značajnu količinu nepoželjnog sadržaja od tog korisnika.
  6. Izlistavanje objava
    Svaki registrovani korisnik ima mogućnost da izlista skorašnje objave od korisnika koje prati. (Način na koji se ova lista generiše može se menjati kako se projekat bude razvijao, na primer, moguće je dodati sponzorisane objave ili objave koje su prijatelji otključali.)

Pretpostavke i ograničenja

Dodavanje i sakrivanje nove slike, kao i pregled i otključavanje objave treba da bude što lakše jer su to glavne funkcionalnosti sajta. Sajt treba da striktno onemogući pregledanje originalne slike bez znanja šifre, osim ukoliko korisnik nije administrator koji trenutno pregleda objave. Takođe treba da bude responzivan, kako bi korisnici mobilnih uređaja mogli što lakše da mu pristupaju (očekuje se da korisnici mobilnih uređaja budu primarni korisnici). Sajt neće voditi računa o slučajevima gde korisnici otkrivaju drugim korisnicima šifru objava kroz komentare ili druge metode, jer je otkrivanje takođe deo pomenute društvene dinamike.

Kvalitet

Tokom izrade projekta biće dodavani jedinični testovi funkcionalnosti za frontend i backend deo odvojeno (više detalja u odeljku o arhitekturi). Uz jedinične testove biće ubačena i kontinualna integracija kako bismo sigurno znali da se prilikom razvoja nove funkcionalnosti nije desila regresija. U poslednjoj fazi projekta biće dodati integracioni testovi korišćenjem alata predviđenim postavkom te faze.

Nefunkcionalni zahtevi

Na serveru mora da bude instaliran Docker kako bi serverska aplikacija mogla da se pokreće. Korisnički deo aplikacije mora da funkcioniše u najnovijim verzijama Google Chrome, Firefox i Safari pretraživača za računare i mobilne uređaje.

Zahtevi za korisničkom dokumentacijom

Od korisničke dokumentacije potrebna su pravila sajta (i za korisnika i za administratora) i politika privatnosti. Većina funkcionalnosti treba da bude intuitivna kroz sam interfejs i nema veliku potrebu za dokumentacijom.

Plan i prioriteti

Kao što piše u odeljku sa funkcionalnim zahtevima, funkcionalnosti za prvu verziju aplikacije (MVP) jesu:

  1. Registracija i prijava korisnika
  2. Pravljenje, brisanje, sviđanje objava
  3. Zaključavanje i otključavanje objave
  4. Izlistavanje korisnika koji su otključali objavu
  5. Pravljenje, sviđanje i odgovaranje na komentare
  6. Cenzurisanje komentara korisnika koji su otključali objavu
  7. Praćenje korisnika i izlistavanje objava praćenih korisnika
  8. Pregledanje profila korisnika
  9. Kontrola objava, izbacivanje iz reda za pregled

Za sledeću verziju aplikacije razmatraju se sledeće funkcionalnosti:

  1. Izmena natpisa slike
  2. Heštegovi
  3. Pretraga korisnika
  4. Blokiranje korisnika
  5. Brisanje korisnika

Planovi nakon toga nisu na vidiku, ali jedna od razmatranih mogućnosti je jednostavna Android aplikacija za sajt.

Clone this wiki locally