Professional Documents
Culture Documents
1U originalu je termin enterprise koji se koristi da označi svaku vrstu preduzeća (preduzimanja) koje za cilj ima ostvarivanje
profita/vrednosti, ali i da označi organizaciju uspostavljenu sa ciljem realizacije određene vrste preduzeća - kompaniju i sl.
uloge, itd. Poslovne funkcije i poslovni procesi se često mapiraju na aplikacije i podatke koji su
potrebni za njihovo ostvarivanje.
• Arhitektura podataka: Strukture podataka koje koristi poslovanje i/ili aplikacije poslovanja.
Opisi uskladištenih podataka i podataka u kretanju (podataka koji prolaze kroz tokove
podataka). Opisi skladišta podataka, grupa podataka i stavki podataka. Mapiranje tih
artifakata podataka na kvalitete, aplikacije, lokacije, itd.
• Arhitektura aplikacija: Struktura i ponašanje aplikacija koje se koriste u poslovanju. Pri tome
je fokus na načinu njihove međusobne interakcije, interakcije sa korisnicima, podataka koje
konzumiraju i proizvode, a ne na internoj strukturi aplikacija. Aplikacije se obično mapiraju na
poslovne funkcije i na tehnološke platforme.
• Arhitektura aplikacije/komponentna arhitektura: Interna struktura, modularizacija softvera
unutar aplikacije. To je softverska arhitektura najfinije granulacije. Obično je finija od nivoa
modularizacije koji definišu arhitekte rešenja. Ne može se postaviti rigidna granica između
arhitekture aplikacija i komponentne arhitekture.
• Tehnološka/tehnička/infrastrukturna arhitektura: Struktura i ponašanje IT infrastrukture.
Pokriva klijentske i serverske čvorove hardvera, infrastrukturne aplikacije koje se na tim
čvorovima izvršavaju, infrastrukturne servise koji se nude aplikacijama, protokole i mreže koje
povezuju aplikacije i čvorove.
Arhitektura informacionog sistema (Information System Architecture, ISA) bavi se reprezentacijom
strukture komponenti informacionog sistema, njihovim vezama, principima i direktivama sa
primarnim ciljem podrške poslovanju, odnosno funkcionisanju sistema na koji se informacioni sistem
odnosi. ISA obično razlikuje tri aspekta definišući tri "podarhitekture":
• Arhitekturu softvera koja objedinjuje domene arhitekture aplikacija i komponentne
arhitekture definišući softverske elemente informacionog sistema i načine njihovog
povezivanja.
• Arhitekturu podataka koja predstavlja glavne tipove i strukture podataka informacionog
sistema.
• Tehnološku arhitekturu koja definiše glavne tehnologije korišćene u implementaciji
softverske arhitekture i infrastrukturnih elemenata koji omogućuju okruženje za operativni
rad informacionog sistema.
Iako se, po preovlađujućem shvatanju, ne smatra sinonimom za arhitekturu informacionog sistema,
softverska arhitektura u velikoj meri obuhvata arhitekturu informacionog sistema.
Arhitektura softvera predstavlja strukture visokog nivoa softverskog sistema i disciplinu kreiranja
takvih struktura i sistema. Svaka struktura obuhvata softverske elemente, relacije među softverskim
elementima, svojstva softverskih elemenata i svojstva relacija među softverskim elementima.[2]
Oblasti koje su povezane sa arhitekturom softvera ima mnogo, počeviš i od načina opisivanja
softverske arhitekture, preko arhitekturalnih stilova i obrazaca u softveru, do uloge softverske
arhitekture u različitim periodima i pristupima razvoju softvera. Za nas su od posebnog interesa različiti
arhitekturalni stilovi i obrasci koji se danas koriste u razvoju softvera pa ćemo se njima u nastavku
detaljnije pozabaviti.
2U objektno-orijetnisanom programiranju, SOLID je mnemonički akronim za pet principa dizajna koji za cilj imaju da dizajn
softvera učine razumljivijim, fleksibilnijim i pogodnim za održavanje.
implicitnih slojeva razdvajanjem modula izvornog koda u pakete što, nažalost, vodi kolekciji modula
izvornog koda bez jasnih uloga, odgovornosti i međusobnih relacija. Da bi se utvrdile arhitekturalne
karakteristike ovakve “tvorevine” mora se ostvariti uvid u svake komponentu i modul sistema [3]. Bez
jasnog opredeljenja za arhitekturalni stil (pojedinačni ili kombinaciju više njih) aplikacije, praktično je
nemoguće odgovoriti na osnovna pitanja pri uvođenju u produkciju koja se odnose na skalabilnost
arhitekture, performanse aplikacije, pogodnost aplikacije za promene, karakteristike uvođenja
aplikacije u produkciju, responzivnost arhitekture.
Arhitekturalni stilovi i obrasci su nivo apstrakcije softvera koji pomažu da se definišu osnovne
karakteristike i ponašanje aplikacije. Neki arhitekturalni obrasci su pogodni za visoko sklabilne
aplikacije, drugi su prikladni za visoko agline aplikacije. Zbog toga je poznavanje arhitekturalnih
obrazaca (prednosti i nedostaci) izuzetno korisno za razvoj softvera. U nastavku ovoga odeljka biće
prikazani osnovni arhitekturalni stilovi savremenog softvera kako su izloženi u izvoru [3].
U nastavku ovoga odeljka prikazani su arhitekturalni stilovi koji se danas primenjuju. Opis je
strukturiran na sledećinačin: prvo su date osnovne karakteristike stila, zatim je data ilustracija njegove
primene na primeru iz realnog sveta, a na kraju su date specifične karakteristike arhitekture. Pri tome,
ove karakteristike su prikazane tabelom koja sadrži ocenu i analizu karakteristika ove arhitekture.
Ocena je za svaku karakteristiku bazirana na prirodnoj tendenciji arhitekture sagledanoj kroz
sposobnost baziranu na tipičnoj implementaciji obrasca, kao i na saznanjima o svojstvima po kojima
je arhitekturalni obrazac poznat.
3
"organizacije koje dizajniraju sisteme ... ograničene su na pravljenje dizajna koji su kopije komunikacione strukture
tih organizacija." (https://en.wikipedia.org/wiki/Conway%27s_law)
Slika 5 Događajima vođena softverska arhitektura - generalna medijatorska topologija
Uobičajeno je da arhitektura vođena događajima ima od nekoliko desetina do nekoliko stotina redova
čekanja događaja. Obrazac ne specificira implementaciju komponente red čekanja, to može da bude
red poruka, krajnja tačka web servisa ili njihova kombinacija.
U obrascu postoje dva tipa događaja inicijalni događaj i događaj za obradu. Inicijalni događaj je
originalni događaj koji je primio medijator, a događaji za obradu su događaji koje je generisao
medijator (dekompozicijom originalnog događaja na korake) i koje su primile komponente za obradu
događaja.
Komponenta medijator je odgovorna za orkestriranje koraka koji su sadržani u inicijalnom događaju.
Za svaki korak u inicijalnom događaju medijator događaja šalje specifičan događaj obrade (processing
event) kanalu događaja. Taj događaj zatim preuzima i obrađuje obrađivač događaja. Dakle,
MEDIJATOR DOGAĐAJA SAM NE IZVRŠAVA POSLOVNU LOGIKU POTREBNU ZA OBRADU INICIJALNOG
DOGAĐAJA, već ZNA KORAKE POTREBNE ZA OBRADU INICIJALNOG DOGAĐAJA.
Kanale događaja koristi medijator događaja da obrađivačima događaja asinhrono prosleđuje
specifične događaje obrade koji se odnose na svaki korak u inicijalnom događaju. Kanali događaja
mogu da budu redovi poruka ili imenovani kanali poruka (message topics) koji se i najčešće koriste jer
omogućuju da se događaji obrade od strane više obrađivača događaja od kojih svaki radi drugačiju
obradu koja zavisi od primljenog specifičnog događaja obrade.
Komponente obrađivači događaja sadrže poslovnu logiku aplikacije potrebnu za obradu događaja.
Obrađivači događaja su samosadržane, nezavisne i visoko raspregnute arhitekturalne komponente
koje izvršavaju specifičan zadatak u aplikaciji ili sistemu.
Granularnost komponenti obrađivača događaja može biti različita: od vrlo fine (n.pr. sračunavanje
površine kvadrata) do grube (n.pr. obrada zahteva za osiguranje). Pri odlučivanju o ovom aspektu bitno
je da komponenta u potpunosti obavlja jedan poslovni zadatak, odnosno da za obavljanje tog
poslovnog zadatka ne zahteva da drugi obrađivači završe svoje specifične zadatke.
Medijator događaja može se implementirati na različite načine. Najjednostavniji i najčešći način je
putem habova otvorenog koda za integraciju kao što su Spring Integration
(https://spring.io/projects/spring-integration), Apache Camel (camel.apache.org), Mule ESB
(https://www.mulesoft.com/resources/esb/what-mule-esb). U ovim integracijama se tokovi
događaja obično implementiraju putem koda na nekom programskom jeziku kao što je Java koda, ili
DSL-a (domain-specific language). Za sofisticiraniju medijaciju može se koristiti BPEL 4 u sprezi sa BPEL
4
BPEL, Business Process Execution Language (https://en.wikipedia.org/wiki/Business_Process_Execution_Language) je standardizovan
XML-iki jezik koji opisuje podatke i korake potrebne za obradu inicijalnog događaja.
endžinom poput Apache ODE (http://ode.apache.org/). Za velike aplikacije koje zahtevaju
sofisticiraniju orkestraciju (moguće i korake koji uključuju ljudsku interakciju) medijator se može
implementirati korišćenjem alata za upravljanje poslovnim procesom poput jBPM
(https://www.jbpm.org/).
Sledeći primer (slika 6) ilustruje način funkcionisanja medijatorske topologije.
Način rada brokerske topologije biće ilustrovan na istom primeru kao i za medijatorsku topologiju
(osiguranik koji menja adresu). Grafička ilustracija je na slici 8.
Kako nema centralne medijatorske komponente da primi inicijalni događaj, komponenta Customer
Process direktno prima događaj, menja adresu osigunarnika i izdaje događaj koji kaže da je ona
izmenula adresu osiguranika (n.pr., change address događaj).
U ovom primaru su dva obrađivača događaja koje zanima događaj change address: Quote Process i
Claims Process.
Komponenta Quote Process preračunava nove rate osiguranja na bazi promene adrese i publikuje
ostatku sistema događaj koji kaže šta je ona uradila (n.pr., recalc quote događaj). Komponenta Claims
Process prima isti događaj change address, ali u tom slučaju ažurira vanredni zahtev za osiguranje i
sistemu publikuje događaj
update claim. Ove nove događaje zatim preuzimaju obrađivačke komponente i lanac događaja se
nastavlja sve dok ima neobrađenih publikovanih događaja za taj određeni inicijalni događaj.
Slika 8 Ilustracija rada brokerske topologije
2.3.2.3. Specifične karakteristike arhitekture
Događajima vođena arhitektura je relativno složena za implementaciju, pre svega zbog asinhrone
distribuirane prirode.
Pri implementaciji se mora voditi računa o različitim pitanjima distribuirane arhitekture poput
raspoloživosti udaljenih procesa, odsustva responsivnosti, i logike rekonekcije brokera u slučaju otkaza
brokera ili medijatora.
Jedna od stvari koju treba uzeti u razmatranje pri izboru ovog arhitekturalnog obrasca je nedostatak
atomičkih transakcija za pojedinačni poslovni proces. Zbog visoke raspregnutosti i distribuiranosti
obrađivačkih komponenti veoma je teško održavati transakcije nad njima i mora se voditi računa da
se nedeljive transakcije ne distribuiraju na odvojene obrađivače.
Konačno, možda i najteži aspekt ove arhitekture je kreiranje, održavanje i upravljanje ugovorom
obrađivačke komponente. Svaki događaj obično ima specifičan pridruženi ugovor (ugovor sadrži
vrednosti i format podataka koji se prosleđuje obrađivaču događaja) pa je od vitalne važnosti usvajanje
standarda formata podataka (n.pr. XML, JSON, Java Object, itd.) i uspostavljanje prava politike
verzioniranja ugovora od samog početka.
Tabela 2 sadrži ocenu i analizu karakteristika ove arhitekture.
Tabela 2 Evaluacija arhitekture vođene događajima
Kriterijum Ocena Analiza/obrazloženje
Kako je svaka komponenta za obradu procesa jedno-namenska i potpuno
Ukupna agilnost Visoko raspregnuta od drugih komponenti za obradu procesa, promene su generalno
izolovane ja jednu ili mali broj procesorskih komponenti te se mogu brzo realizovati
bez uticaja na druge komponente.
Ukupan obrazac je relativno lako instalirati zbog raspregnute prirode komponenti
Lakoća instaliranja/uvođenja u Visoko za obradu procesa. Lakše je instalirati brokersku topologiju od medijatorske zbog
rad tešnje povezanosti medijatorske komponente sa procesorima događaja što,
generalno, zahteva da se pri promenama zahteva instaliranje i procesorske i
medijatorske komponente.
Testiranje individualnih jedinica nije preterano teško, ali zahteva neku vrstu
Pogodnost za testiranje Nisko specijalizovanog testnog klijenta/alata za generisanje događaja. I asinhrona
priroda arhitekture doprinosi usložnjavanju testiranja.
Kriterijum Ocena Analiza/obrazloženje
Iako infrastruktura poruka doprinosi smanjenju performanse, asinhronost
Performansa Visoko doprinosi njenom povećanju, odnosno pokazuje se da asinhrone operacije
amortizuju cenu rukovanja porukama.
Skalabilnost je prirodna odlika ove arhitekture koja proističe iz visoko raspregnutih
Skalabilnost Visoko procesora događaja. Svaki procesor događaja može nezavisno da skalira čime se
doprinosi fino granulisanoj sklabilnosti.
Razvoj može da bude dosta komplikovan zbog asinhrone pririode obrasca,
Lakoća razvoja Nisko kreiranja ugovora i naprednijeg rukovanja greškama u okviru koda za
neresponzivne procesore događaja i brokere u otkazu.
Jezgro sistema treba da zna koji su plug-in moduli raspoloživi i kako da ih dobije. Uobičajeni način
implementacije ovoga zahteva je neka vrsta registra plug-in komponenti. Registar sadrži informacije o
svakom plug-in modulu (n.pr. ime, ugovor o podacima, detalji protokola za udaljeni pristup u zavisnosti
od načina povezivanja plug-in modula sa jezgrom sistema). Na primer, plug-in za poreski softver koji
5
Produktno-bazirana aplikacija je aplikacija koja je paketirana i stavljena na raspolaganje za preuzimanje u verzijama kao tipičan proizvod
treće strane, ali se i interni softveri često razvijaju i objavljuju kao softverski proizvodi sa verzijama i funkcionalnostima u obliku plug-in
komponenti.
označava visoko rizične poreske stavke može da ima zapis u registru koji sadrži ime servisa
(AuditChecker), ugovor o podacima (ulazni podaci i izlazni podaci) i dogovoreni format (XML). Može
da sadrži i WSDL (Web Services Definition Language) ako se plug-in-u pristupa putem protokola SOAP.
Plug-in moduli mogu se povezati na jezgro različitim načinima kao što su OSGi (Open Service Gateway
Initiative), poruke, web servisi, ili čak direktno putem point-to-point vezivanja (t.j., instanciranja
objekta). Obrazac ne specificira tip konekcije, on samo specificira da plug-in moduli moraju da budu
nezavisni jedan od drugog.
Kontrakti između plug-in modula i jezgra sistema mogu da variraju od standardnih do prilagođenih.
Prilagođeni kontrakti javljaju se u situacijama kada plug-in komponente razvija treća strana gde nema
kontrole nad kontraktom koji plug-in koristi. U takvim slučajevima se obično kreira adapter između
dva kontrakta tako da jezgru ne treba specijalizovani kod za svaki plug-in. Kda se kreira standardan
kontrakt (obično implementacijom putem XML-a ili Java Map-a) važno je kreirati strategiju
verzioniranja od samog početka.
Ono što je posebna prednost arhitekture mikro-jezgra je što se ona može ugrađivati ili koristiti kao
deo drugih arhitekturalnih obrazaca. Na primer može se koristiti višeslojni obrazac a mikroservisni
obrazac može da se iskoristi na nekom sloju, ili se može iskoristiti za implementaciju obrađivača
događaja u okviru obrasca arhitekture vođene događajima. Mikroservisna arhitektura je, takođe,
izuzetno pogodna za evolutivni i inkrementalni pristup razvoju softvera.
Richards [3] kaže da je, možda i najbolji, primer uspešne primene ove arhitekture Eclipse IDE
(https://www.eclipse.org/). Slika 9 prikazuje arhitekturu platforme Eclipse.
6
Business capability je izraz artikulacije kapaciteta, materijala i ekspertize koje orgnizaciji trebaju da bi obavljala svoje osnovne funkcije
(https://searchmicroservices.techtarget.com/definition/business-capability)
3. Proizvodi, ne projekti. Za razliku od konvencionalnog pristupa koji zagovara projektni model
(cilj je da se isporuči komad softvera koji se smatra završenim i da se preda drugoj organizaciji
na održavanje), mikroservisna arhitektura zastupa princip Amazon-a - "you build, you run it" 7.
4. Pametne krajnje tačke, jednostavna komunikacija. Mikroservisna arhitektura zagovara
mehnizam koji složenu logiku komunikacije prebacuje na krajnje tačke koje imaju sopstvenu
domensku logiku i deluju kao filtri u klasičnom Unix smislu: primaju zahtev, primenjuju logiku
na odgovarajući način i proizvode odgovor. Proces se uređuje korišćenjem jednostavnih REST
protokola 8 bez centralizacije. Dva najčešće korišćena protokola su HTTP zahtev-odgovor sa
API-ma resursa i jednostavna razmena poruka (lightweight messaging). Koriste se principi i
protokoli na kojima je izgrađen web. Drugi uobičajeni pristup je razmena poruka preko
jednostavne magistrale. Uloga infrastrukture koja se koristi je pouzdano rutiranje asinhronih
poruka (implementacije poput RabbitMQ ili ZeroMQ) a logika/inteligencija je u servisima koji
proizvode i konzumiraju poruke.
5. Decentralizovano upravljanje programskom podrškom. Razbijanje komponenti monolita na
servise pruža mogućnost izbora načina implementacije svakog servisa. To se odnosi na izbor
programskog jezika, izbor načina i sistema za upravljanje podacima (različiti modeli podataka,
različiti sistemi za upravljanje bazama podataka), itd. Menja se i pristup standardima. Umesto
krutog pridržavanja propisanih standarda, otvara se mogućnost njihove kreativne primene
kroz razvoj dobre prakse koja proističe iz uspešnih implementacija i, posebno, još šire primene
pristupa otvorenog koda. Vredno je pomenuti i kulturu "tolerancije" prema kontraktima
servisa koja zagovara maksimalnu toleranciju pri čitanju podataka od servisa - uzimati samo
potrebne elemente podataka, ignorisati sve što nije neophodno, praviti minimalne
pretpostavke o strukturi.
7
Princip koji zagovara da razvojni tim preuzima punu odgovornost za softver u produkciji.
8
Representational State Transfer (REST) je softverski arhitekturalni stil koji definiše skup ograničenja za kreiranje web servisa
(RESTfull web servisi). Ovi servisi dozvoljavaju zahtevanje i manipulisanje tekstualnim reprezentacijama web resursa korišćenjem
predefinisanog skupa operacija bez stanja. Protokol bez stanja je komunikacioni protokol u kome pošiljalac/primalac ne čuvaju
informaciju jedan od rugom što znači da nisu svesni stanja druge strane.
beztransakcionu koordinaciju među servisima sa eksplicitno artikulisanim stavom da
konzistentnost može da se ostvari samo u konačnom, uz tolerisanje određenog nivoa
nekonzistentnosti do konačnog trenutka koja se otklanja reverznim procesom.
7. Automatizacija infrastrukture. Tehnike automatizacije infrastrukture, koje su doživele
eksplozivan razvoj poslednjih godina, smanjili su operativnu složenost izgradnje, instaliranja i
korišćenja mikroservisa. Tome su posebno doprinele tehnike automatizovane infrastrukture
koje se koriste za kontinualnu isporuku softvera kako je prikazano na slici 11.
9
Mikroservisna arhitektura zagovara integraciju koja verzioniranje koristi samo kada nema drugog rešenja.
(https://martinfowler.com/articles/enterpriseREST.html#versioning)
dobre granularnosti servisne komponente je jedan od ključnih izazova mikroservisne
arhitekture.
• Drugi važan koncept je pojam odvojena instalacija (separately deployed units). To znači da se
svaka komponenta mikroservisne arhitekture instalira kao odvojena jedinica čime se doprinosi
lakšoj instalaciji, povećanoj skalabilnosti, i većem rasprezanju komponente i aplikacije.
• Treći koncept je distribuiranost arhitekture što znači da su sve komponente raspregnute i da
im se pristupa nekim protokolom za udaljeni pristup (n.pr., REST, SOAP, RMI, itd.).
Slika 12 je ilustracija osnovnog obrasca mikroservisne arhitekture.
API REST-bazirana topologija pogodna je za web sajtove koji izlažu male, samosadržane pojedinačne
servise putem nekog API-a. Šematski prikaz topologije dat je na slici 13. Arhitektura se sastoji od servisnih
komponenti vrlo fine granulacije (obično sadrže jedan do dva modula) koje izvršavaju specfične poslovne
funkcije nezavisne od ostalih servisa. Komponentama se pristupa korišćenjem REST-baziranog interfejsa
implementiranog putem odvojenog web-baziranog API sloja. Primeri su neki od pojedinačnih,
jednonamenskih, klaud-baziranih web servisa koje nude Yahoo, Google i Amazon.
Slika 13 API REST-bazirana topologija
Druga topologija, zvana aplikaciono-REST bazirana topologija (ili samo REST-bazirana topologija),
karakteristična je po tome što se klijentski zahtevi ne primaju putem posebnog API sloja, nego putem
ekranskih formi (korisničkog interfejsa) tradicionalnih web-baziranih aplikacija ili aplikacija debelih klijenata
(fat-client). Šema arhitekture prikazana je na slici 14.
10
U matematici, torka je konačna uređena lista (sekvenca) elemenata. n-torka je sekvenca od n elemenata,
gde je n nenegativan ceo broj. Postoji samo jedna 0-torka (prazna torka). n-torka se definiše induktivno
korišćenjem konstrukcije uređenog para. Uređeni par (a, b) je par objekata gde je redosled objekata značajan.
Uređeni parovi su 2-torke, odnosno sekvence dužine 2. Objekti uređenog para mogu da budu drugi uređeni
parovi što omogućuje rekurzivno definisanje uređenih n-torki, n.pr.: (a,b,c) = (a, (b,c)).
Slika 17. Komponenta procesne jedinice
11 Apstraktni standard dizajna za sisteme upravljanja bazama podataka, prvi put predložen 1975. godine
12 Pod terminom domenski auditorijum podrazumevaju se akteri sa određenim nivooom ekspertize u nekom domenu
Slika 22 primer jednostavnog logičkog modela
Logički modeli podataka predstavljaju apstraktnu strukturu informacionog domena. Oni su često
dijagramski i koriste se najčešće u poslovnim procesima koji nastoje da identifikuju i obuhvate stvari
koje su važne za organizaciju i načine na koje su te stvari povezane.
Logički model treba da se zasniva na strukturama identifikovanim konceptualnim modelom, jer logički
model treba da odslikava semantiku informacionog konteksta koju definiše konceptualni model
podataka.
Karakteristike logičkog modela su sledeće:
• Definiše podatke za jedan projekat/problem ali se može integrisati sa drugim logičkim
modelima u opsegu projekta.
• Dizjanira se i razvija nezavisno od SUBP-a.
• Atributima se dodeljuju tipovi podataka, ali bez precizne specifikacije (n.pr., preciznost za
numeričke vrednosti, dužine za stringove).
• Vrši se normalizacija 13 ( obično do 3NF).
13 Normalizacija baze podataka je proces strukturiranja relacione baze podataka u skladu sa serijom tzv. normalnih formi
(ima ih ukupno 6) da bi se redukovala redundancija podataka i unapredio integritet podataka.
• Svi podaci i artifakti opisa organizacije podataka moraju biti u potpunosti definisani (tipovi,
dužine i pretpostavljene vrednosti za atribute/kolone; primarni i strani ključevi, indeksi,
progledi, itd.).
• Iako fizički model opisuje podatke za konkretan problemski zadatak, on se može integrisati sa
drugim fizičkim modelima u okviru zadatka.
Konceptualni model
Kriterijum Logički model podataka Fizički model podataka
podataka
Entiteti (tabele), atributi Tabele, kolone, ključevi, tipovi podataka, pravila
Uključeni Konstrukti podataka visokog
(kolone/polja) i relacije validacije, okidači, uskladištene procedure,
konstrukti nivoa (semantika podataka).
(ključevi) domeni, i ograničenja pristupa.
Netehnička imena koja ne
Definisanija i manje generička imena za tabele i
Imenovanje zahtevaju tehničko Poslovna imena za entitete i
kolone uzrokovana ograničenjima konkretnog
elemenata obrazovanje, razumljiva atribute.
DBMS-a ili kompanijskih standarda.
rukovodećem kadru.
Potpuna nezavisnost od Nezavisnost od tehnologije Zavisnost od tehnologije; uključuje atrefakte za
Tehnološka
svake tehnologije (samo koja se odnosi na platformu dostizanje performansi (primarne ključevi, indeksi,
zavisnost
semantika podataka). i/ili SUBP. ...).
Može da bude denormalizovana radi dostizanja
Može da bude Normalizovano do četvrte performansi u zavisnosti od prirode baze podataka;
Normalizacija
nenormalizovana. normalne forme (4NF). denormalizacija je uobičajena za skladišta
podataka (datawarehouse).
14 To su tri “fundamentalna” modela podataka. Postoje i drugi modeli, kao što su objektni model, NoSQL model, grafovski
model.
preglednog karaktera a za dublje razumevanje koje omogućuje i njegovu praktičnu primenu potrebno
je mnogo više. Sledeća slika ilustruje relacioni model podataka.
15 Dostupno na https://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf
16 Relaciona algebra je proceduralni upitni jezik u kome je redosled izvršavanja operacija važan.
17 Relacioni račun je deklarativni upitni jezik u kome redosled izvršavanja nije važan.
Osnovni princip relacionog modela je Informacioni Princip: sve informacije reprezentuju se
vrednostima podataka u relacijama. Dakle, relaciona baza podataka nije ništa drugo do skup relacionih
varijabli a rezultat svakog upita se predstavlja kao relacija.
Velika prednost relacionog modela je što on omogućuje da se konzistentnost relacione baze obezbedi
putem ograničenja koja se deklarišu kao deo logičke šeme. Na taj način, sistem za upravljanje bazom
void računa o konzistentnosti i aplikacije o tome ne moraju da vode računa.
Generalno, ograničenja se izražavaju relacionim operatorima poređenja, od kojih su najvažnija
ograničenja kandidatski ključ (candidate key, superkey) i strani ključ (foreign key), a teorijski je
dovoljan samo jedan operator ("je podskup od" (⊆).
Relacija je ključni koncept u relacionom modelu podataka pa je za razumevanje relacionog modela
neophodno razumeti nameravani unterpretaciju relacije. Ovde ćemo pokušati da ovu interpretaciju
objasnimo putem formulacije bazirane na teoriji skupova.
Telo relacije se ponekad naziva proširenjem. Ovakav naziv potiče iz činjenice da se relacija ponekad
interpretira kao reprezentacija proširenja 18 nekog predikata što je skup tačnih propozicija (iskaza) koji
se može formirati tako što se svaka slobodna varijabla 19 u tom predikatu zameni imenom (terminom
koji označava nešto).
Postoji jedan-na-jedan korespondencija između slobodnih varijabli predikata i imena atributa u
zaglavlju relacije. Svaka torka tela relacije sadrži vrednosti atributa za instanciranje predikata
supstitucijom tih vrednosti u svaku od njegovih slobodnih varijabli. Rezultat je propozicija koja se
smatra istinitom ako u telu relacije postoji pojava neke torke koja za koju je predikat zadovoljen.
Nasuprot tome, svaka torka čije zaglavlje je saglasno sa relacijom, ali koja se ne pojavljuje u telu smatra
se netačnom. Dakle, važi pretpostavka zatvorenog sveta.
Sledi formalna (matematička) formulacija ovih ideja zasnovana na teoriji skupova.
Osnovni pojmovi u relacionom modelu su imena relacija, imena atributa i atomske vrednosti. Imena
relacija i atributa se predstavljaju stringovima a atomska vrednost sadrži vrednosti koje se dalje ne
mogu "dekomponovati" kao što su brojevi i stringovi.
Definicija 1. Torka je parcijalna funkcija 20 koja preslikava imena atributa na atomske vrednosti.
Definicija 2. Zaglavlje je konačan skup imena atributa.
Definicija 3. Projekcija torke 𝑡𝑡 nad konačnim skupom atributa 𝐴𝐴 je 𝑡𝑡[𝐴𝐴] = {(𝑎𝑎, 𝑣𝑣 )| (𝑎𝑎, 𝑣𝑣 ) ∈ 𝑡𝑡, 𝑎𝑎 ∈ 𝐴𝐴}.
Definicija 4. Relacija je torka (𝐻𝐻, 𝐵𝐵) sa zaglavljem 𝐻𝐻 i telom 𝐵𝐵 koje je skup torki koje sve imaju domen
𝐻𝐻.
Definicija 5. Relacioni univerzum 𝑼𝑼 nad zaglavljem 𝐻𝐻 je neprazan skup relacija sa zaglavljem 𝐻𝐻.
Definicija 6. Relaciona šema (𝐻𝐻, 𝐶𝐶 ) sastoji se od zaglavlja 𝐻𝐻 i predikata 𝐶𝐶 (𝑅𝑅) koji je definisan za sve
relacije 𝑅𝑅 i zaglavlje 𝐻𝐻. Relacija zadovoljava relacionu šemu ako ima zaglavlje 𝐻𝐻 i zadovoljava predikat
𝑅𝑅.
U relacionoj bazi, najjednostavniji i najvažniji tipovi ograničenja relacija su ograničenja ključa. Ovo
ograničenje kaže da u svakoj instanci određene relacione šeme torke mogu da se identifikuju
vrednostime njihovih određenih atributa.
Definicija 7. Superključ je skup atributa koji jednoznačno identifikuje torku. Superključ 𝐾𝐾 važi za
relaciju (𝐻𝐻, 𝐵𝐵) ako su zadovoljeni uslovi
18 Proširenje predikata – funkcija sa vrednošću tačno/netačno – je skup torki vrednosti takvih da kao argumenti zadovoljavaju
predikat (za taj argument predikat se evaluira na vrednost 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡). Takav skup torki je relacija.
19 U matematici i drugim disciplinama koje se bave formalnim jezicima, slobodna varijabla je koncept (simbol) koji specificira
mesto u izrazu na kome se može izvršiti supstitucija (zamenuti vrednost) i nije parametar tog ili bilo kojeg drugog
kontejnerskog izraza.
20 Parcijalna funkcija je binarna relacija nad dva skupa koja svakom elementu prvog skupa pridružuje najviše jedan element
drugog skupa.
• 𝐾𝐾 ⊆ 𝐻𝐻
• Ne postoje dve različite torke 𝑡𝑡1 , 𝑡𝑡2 ∈ 𝐵𝐵 takve da je 𝑡𝑡1 [𝐾𝐾 ] = 𝑡𝑡2 [𝐾𝐾 ].
Superključ važi u relacionom univerzumu 𝑈𝑈, ako važi u svim relacijama u 𝑈𝑈.
Teorema. Superključ 𝐾𝐾 važi u relacionom univerzumu 𝑈𝑈 nad 𝐻𝐻 ako i samo ako u 𝑈𝑈 važi 𝐾𝐾 ⊆ 𝐻𝐻 i 𝐾𝐾 →
𝐻𝐻.
Kandidatski ključ je superključ koji se dalje ne može dekomponovati tako da formira drugi superključ.
Superključ 𝐾𝐾 važi kao kandidatski ključ za relacioni univerzum 𝑈𝑈 ako važi kao superključ za 𝑈𝑈 i nema
pravog podskupa skupa 𝐾𝐾 koji važi kao superključ za 𝑈𝑈.
Funkcionalna zavisnost (functional dependency – FD, piše se kao 𝑋𝑋 → 𝑌𝑌 gde su 𝑋𝑋, 𝑌𝑌 konačni skupovi
imena atributa) je svojstvo da vrednost u torci može da se izvede iz druge vrednosti u toj torci.
Funcionalna zavisnost 𝑋𝑋 → 𝑌𝑌 važi u relaciji (𝐻𝐻, 𝐵𝐵) ako važi:
• 𝑋𝑋, 𝑌𝑌 ⊆ 𝐻𝐻, i
• Za svake dve torke 𝑡𝑡1 , 𝑡𝑡2 ∈ 𝐵𝐵, 𝑡𝑡1 [𝑋𝑋] = 𝑡𝑡2 [𝑋𝑋] ⇒ 𝑡𝑡1 [𝑌𝑌] = 𝑡𝑡2 [𝑌𝑌]
Funkcionalna zavisnost 𝑋𝑋 → 𝑌𝑌 važi u relacionom univerzumu 𝑈𝑈 ako važi za sve relacije u 𝑈𝑈.
Trivijalna funkcionalna zavisnost pod zaglavljem 𝐻𝐻 je funkcionalna zavisnost koja važi u svim
relacionim univerzumima nad 𝐻𝐻.
Teorema: Funkcionalna zavisnost 𝑋𝑋 → 𝑌𝑌 je trivijalna pod zaglavljem 𝐻𝐻 ako i samo ako je 𝑌𝑌 ⊆ 𝑋𝑋 ⊆ 𝐻𝐻.
Zatvaranje podskupa 𝑆𝑆 tačaka u topološkom prostoru 21 sastoji se od svih tačaka iz 𝑆𝑆 zajedno sa svim
tačkama granice (limit point) 22 skupa 𝑆𝑆. Zatvaranje se može ekvivalentno definisati i kao unija skupa i
njegove granice ili kao presek svih zatvorenih skupova koji sadrže dati skup.
Intuitivno, zatvaranje se može zamisliti kao sve tačke koje su u datom skupu ili su mu "blizu".
Tačka koja pripada zatvaranju skupa je tačka zatvaranja tog skupa.
Armstrongovi aksiomi: Zatvaranje skupa funkcionalnih zavisnosti 𝑆𝑆 nad zaglavljem 𝐻𝐻 (označava se sa
𝑆𝑆 + ) je najmanju nadskup od 𝑆𝑆 takav da zadovoljava uslove refleksivnosti, tranzitivnosti i augmentacije:
• 𝑌𝑌 ⊆ 𝑋𝑋 ⊆ 𝐻𝐻 ⇒ 𝑋𝑋 → 𝑌𝑌 ∈ 𝑆𝑆 + (refleksivnost)
• 𝑋𝑋 → 𝑌𝑌 ∈ 𝑆𝑆 + ⋀ 𝑌𝑌 → 𝑍𝑍 ∈ 𝑆𝑆 + ⇒ 𝑋𝑋 → 𝑍𝑍 ∈ 𝑆𝑆 + (tranzitivnost)
• 𝑋𝑋 → 𝑌𝑌 ∈ 𝑆𝑆 + ⋀ 𝑍𝑍 ⊆ 𝐻𝐻 ⇒ (𝑋𝑋 ⋃ 𝑍𝑍) → (𝑌𝑌 ⋃ 𝑍𝑍) ∈ 𝑆𝑆 + (augmentacija)
Teorema. Armstrongovi aksiomi su saglasni i kompletni; za zadato zaglavlje 𝐻𝐻 i skup 𝑆𝑆 funkcionalnih
zavisnosti koji sadrži samo podskup od 𝐻𝐻, 𝑋𝑋 → 𝑌𝑌 ∈ 𝑆𝑆 + ako i samo ako 𝑋𝑋 → 𝑌𝑌 važi u svim relacionim
univerzumima nad 𝐻𝐻 u kojima važe sve funkcionalne zavisnosti u 𝑆𝑆.
Završavanje/kompletiranje (completion) konačnog skupa atributa 𝑋𝑋 pod konačnim skupom
funkcionalnih zavisnosti (označava se sa 𝑋𝑋 + ) je najmanji super skup od 𝑋𝑋 za koji važi:
• 𝑌𝑌 → 𝑍𝑍 ∈ 𝑆𝑆 ⋀ 𝑌𝑌 → 𝑍𝑍 ∈ 𝑆𝑆 + ⇒ 𝑍𝑍 ⊆ 𝑋𝑋 +
Kompletiranje skupa atributa može da se koristi za određivanje da li je konkretna zavisnost u
zatvaranju skupa funkcionalnih zavisnosti na osnovu sledeće teoreme.
Teorema. Ako je zadat skup 𝑆𝑆 funkcionalnih zavisnosti, 𝑋𝑋 → 𝑌𝑌 ∈ 𝑆𝑆 + ako i samo ako je 𝑋𝑋 → 𝑌𝑌 ⊆ 𝑋𝑋 + .
21 Topološki prostor može se definisati kao skup tačaka zajedno sa skupom susedstva svake tačke u kome je zadovoljen skup
aksioma koji povezuju tačke i susedstva.
22 Granična tačka skup 𝑆𝑆 u topološkom prostoru 𝑋𝑋 je tačka 𝑥𝑥 koja se može "aproksimirati" tačkama iz skupa 𝑆𝑆 tako da svako
susedstvo od 𝑥𝑥 u odnosu na topologiju nad 𝑋𝑋 takođe sadrži tačku is skupa 𝑆𝑆 različitu od same tačke 𝑥𝑥 . Granična tačka skupa
ne mora sama da bude element tog skupa.
Nesvodljivo pokrivanje skupa 𝑆𝑆 funkcionalnih zavisnosti je skup funkcionalnih zavisnosti 𝑇𝑇 takav da
važi:
• 𝑆𝑆 + = 𝑇𝑇 + ,
• Ne postoji 𝑈𝑈 ⊂ 𝑇𝑇 takvo da je 𝑆𝑆 + = 𝑈𝑈 + ,
• 𝑋𝑋 → 𝑌𝑌 ∈ 𝑇𝑇 ⇒ 𝑌𝑌 je singltonski skup, i
• 𝑋𝑋 → 𝑌𝑌 ∈ 𝑇𝑇 ∧ 𝑍𝑍 ⊂ 𝑋𝑋 ⇒ 𝑍𝑍 → 𝑌𝑌 ∉ 𝑆𝑆 +
2.4.5.2. Hijerarhijski model
Hijerarhijski model podataka je najstariji. Kao osnovnu strukturu podataka koristi strukturu stabla.
Podaci se skladište kao zapisi (record) koji su međusobno povezani linkovima. Zapis je kolekcija polja
od kojih svako sadrži samo jednu vrednost. Tip zapisa definiše polja u zapisu. Smatra se prvim
modelom podataka koji je IBM kreirao 1960-tih godina.
Hijerarhijski model podataka ima ograničenje da svaki naslednički (dete) zapis ima samo jedan
predački (roditelj) zapis, dok jedan roditeljski čvor može da ima više nasledničkih čvorova.
Sledeća slika [11] ilustruje hijerarhijski model podataka:
24 Data Base Task Group (DBTG) bila je radna grupa osnovana 1965. godine inicijalno pod imenom List Processing Task
Force koje je izmenjeno u DBTG 1967. godine.
25 Rekord je osnovna struktura podataka koja predstavlja kolekciju obično fiksnog broja polja moguće i različitih tipova
Danas postoje još mnogi logički modeli podataka i sa njima povezani modeli baza podataka. U osnovi,
oni predstavljaju hibride navedenih osnovnih modela, posebno relacionog i mrežnog modela. Među
njima se ističu grafovski modeli koji se koriste za reprezentaciju semantike podataka. O njima će još
biti reči u nastavku knjige.
Različito tumačenje termina IA je posledica činjenice da se termin koristi u oblastima koje objedinjuju
više, najčešće raznorodnih oblasti. Ipak, postoji definicija koja je, po mišljenju autora ove knjige,
prihvatljiva kao polazna osnova za dalje prilagođavanje specifičnim potrebama. Definiciju je
formulisao Endru Dilon u [13] i ona glasi:
“IA je termin koji se koristi da opiše proces dizajna, implementacije i evaluacije informacionih prostora
koju su personalno i socijalno prihvatljivi za njihove nameravane interesente.”
U istom izvoru razlikuju se dve “vrste” informacione arhitekture: mala IA i velika IA.
29 What is IA?, The Information Architecture Institute, dostupno na: https://www.iainstitute.org/what-is-ia, pristup:
30.01.2021
Pod terminom mala IA autor podrazumeva primenu informacione nauke u veb dizajnu što se odnosi
na pitanja klasifikacije i traženja informacija. Ovaj pogled smatra WWW razlogom postojanja IA i svoj
auditorijum nalazi u onima koji se bave bibliotekarskom naukom i/ili onima koji imaju izričito
interesovanje za organizaciju.
Termin velika IA se, pak, koristi da označi nešto mnogo ambicioznije. Ovde je stanovište da
informacioni prostori zahtevaju dizajn na više nivoa i da je korisničko iskustvo života u takvom prostoru
zadatak (i rezultat) rada onoga koji se bavi informacionom arhitekturom.
Mi ćemo se ovde baviti malom IA jer je ona jedan od temelja Veb informacionih sistema. U nastavku
će posebno poglavlje biti posvećeno temi informacione arhitekture za Veb.
Još jedna krakateristika koja će se moći zapaziti i iz narednih izlaganja je o TCP/IP modelu da u praksi
nije uvek moguće protokole komunikacije klasifikovati u disjunktne slojeve referentnog modela. Ima
protokola koji su diskutabilni iz aspekta pripadnosti slojevima kao što je, na primer, ARP (Address
Resolution Protocol) protokol.
Pa da opišemo TCP/IP model po slojevima.
Ako se gleda iz aspekta pošiljaoca, prvi sloj je Aplikacioni sloj. Ako se pak gleda iz aspekta primaoca,
prvi sloj je Sloj mrežnog pristupa. U nastavku ćemo stvar gledati iz aspekta primaoca.
2.6.1.1. Sloj pristupa mreži (Network Access Layer)
Ovaj sloj se mapira na slojeve link podataka i fizički sloj u OSI modelu. On se bavi hardverskim
adresiranjem i protokoli u njemu omogućuju fizički prenos podataka. Na ovom sloju su, na primer,
protokoli ARP, NDP, OSPF, L2TP, PPP, MAC (Ethernet, Wi-Fi, …). Za prvi pomenuti protokol iz ovoga sloja,
ARP protokol, postoji neslaganje da li je protokol sloja Internet ili sloja mrežnog pristupa. Prihvaćeno
je da je to protokol koji se nalazi u Internet sloju ali je enkapsuliran 30 protokolima sloja mrežnog
pristupa.
2.6.1.2. Internet sloj
Ovaj sloj se mapira na Mrežni sloj OSI modela. On definiše protokole koji su odgovorni za logički prenos
podataka kroz celu mrežu. Najvažnij protokoli ovoga sloja su:
30 https://en.wikipedia.org/wiki/Encapsulation_(networking)
1. IP – Internet Protocol koji je odgovoran za isporuku paketa od izvorišnog hosta do
odredišnog hosta a na osnovu IP adresa 31 u zaglavljima paketa.
2. ICMP – Internet Control Message Protocol koji je enkapsuliran u IP datagrame i
odgovoran je za obaveštavanje hostova o problemima sa mrežom.
3. ARP – Address Resolution Protocol koji ima zadatak da odredi hardversku adresu hosta
iz poznate IP adrese. Ima više vrsta ovoga protokola: Reverse ARP, Proxy ARP,
Gratuitous ARP i Inverse ARP. Enkapsuliran je u protokolima mrežnog pristupa (n.pr u
Ethernet frejmu).
2.6.1.3. Host-to-Host sloj
Ovo je sloj koji odgovara transportnom sloju OSI modela. Odgovoran je za komunikaciju sa-kraja-na-
kraj i isporuku podataka bez greške. Cilj ovoga sloja je da sakrije složenost rada sa podacima od
Aplikativnog nivoa. Na ovom sloju su dva glavna protokola:
1. Transmission Control Protocol (TCP) – je konkecijski-orijentisan protokol koji je
odgovoran za pouzdanu komunikaciju bez grešaka između krajnjih sistema. Obavlja
sekvencioniranje i segmentiranje podataka koji se prenose mrežom. Poseduje
sposobnost potvrđivanja i kontroliše tok podataka (kuda će se podaci kretati po mreži).
U pitanju je vrlo složen protokol, sa velikim mogućnostima ali i “skup” (zahteva velike
resurse) za korišćenje .
2. User Datagram Protocol (UDP) – je bezkonekcijski protokol koji nema mogućnosti kao
TCP i pogodan je za primene koje ne zahtevaju pouzdan transport. Ne zahteva velike
resurse.
2.6.1.4. Aplikacijski sloj
Oavj sloj obavlja funkcije softverskih slojeva OSI modela. Odgovoran je za komunikaciju od-čvora-do-
čvora i upravlja specifikacijama korisničkog interfejsa. Neki protokoli ovoga sloja su 32: HTTP, HTTPS,
FTP, TFTP, Telnet, SSH, SMTP, SNMP, NTP, DNS, DHCP, NFS, X Window, LPD. U kontekstu Veb
informacionih sistema od njih su sigurno najznačajnija prva dva, HTTP i HTTPS.
31 Postoje dve verzije IP-a: IPv4 (32-bitska adresa) i IPv6 (128-bitska adresa).
32 https://www.geeksforgeeks.org/protocols-application-layer/
Literatura uz Poglavlje 2
1. O’Brien J.A., Marakas G.M. (2015) Introduction to information systems, Fifteenth Edition.
McGraw Hill
2. Clements P., Bachmann F., ; Bass L., Garlan D., Ivers J., Little R., Merson P., Nord R., Stafford
J. (2010) Documenting Software Architectures: Views and Beyond, Second Edition. Boston:
Addison-Wesley. ISBN 978-0-321-55268-6.
3. Richards M. (2015) Software Architecture Patterns, O’Reilly Media, Inc.
4. Lewis J., Fowler M. (2014), Microservices a definition of this new architectural term,
dostupno na https://martinfowler.com/articles/microservices.html, pristup: 6. januar, 2019.
5. Enterprise and Solution Architecture Reference Model Version 3.0 (2010), British Computer
Society, 2010, dostupno na https://www.bcs.org/upload/pdf/reference-model-enterprise-
solution-architecture.pdf, pristup: 2. februar, 2019.
6. Data (computing), Wikipedia, dostupno na :
https://en.wikipedia.org/wiki/Data_(computing), pristup: 20. januar, 2021.
7. Data Definition & Meaning, Webopedia, dostupno na :
https://www.webopedia.com/definitions/data/, pristup: 20. januar, 2021.
8. Data architecture, Wikipedia, dostupno na: https://en.wikipedia.org/wiki/Data_architecture,
pristup: 2. februar, 2019.
9. Data Structure, Wikipedia, dostupno na: https://en.wikipedia.org/wiki/Data_structure,
pristup: 20. januar, 2021.
10. ANSI-SPARC Architecture, Wikipedia, dostupno na: https://en.wikipedia.org/wiki/ANSI-
SPARC_Architecture, pristup: 20. januar, 2021.
11. Difference between Hierarchical, Network and relational Data Model, GeeksforGeeks,
dostupno na https://www.geeksforgeeks.org/difference-between-hierarchical-network-and-
relational-data-model/?ref=rp, pristupljeno: 29. januar, 2021
12. Information architecture, Wikipedia, dostupno na:
https://en.wikipedia.org/wiki/Information_architecture, pristup 31. januar, 2021
13. Dillon, A (2002). "Information Architecture in JASIST: Just where did we come
from?". Journal of the American Society for Information Science and Technology. 53 (10):
821–23. doi:10.1002/asi.10090