Tema 9: Projektovanje sloja podataka informacionih sistema dr Vladislav Miškovic Fakultet za računarstvo i informatiku PROJEKTOVANJE INFORMACIONIH SISTEMA 2018/2019
Sadržaj 1. Uvod 2. Projektovanje sloja podataka 3. Struktura podataka u projektu informacionog sistema 4. Primer elemenata projekta jednostavne ASP.NET aplikacije 5. Brzi razvoj prototipa aplikacije pomoću sistema Visual Studio 2010 2
1. Uvod Modelinformacionog sistema sastoji se od objekata povezanih relacijama asocijacije i nasleđivanja Objektisu povezani sa slučajevima korišćenja, koji predstavljau različite akcije nad objektima [5] objekti koji su potrebni samo u toku izvršavanja slučajeva korišćenja i mogu se svaki put ponovo kreirati su privremeni, tranzijentni objekti objekti koji traju i nakon izvršavanja slučajeva korišćenja su trajni, perzistentni objekti 3
Implementacija slučajeva korišćenja Slučajevi korišćenja (Use Case) mogu se detaljnije opisati pomoći UML dijagrama sekvenci Slučajevi korišćenja mogu predstavljati jednu logičku celinu ili transakciju Podsetnik: osnovne osobine transakcije su nedeljivost (Atomicity) konzistentnost (Consistency) izolovanost (Isolation) i trajnost (Durability) 4
Perzistencija Perzistentnisu objekti koji postoje i nakon izvršavanja programa Objekti koji postoje samo u toku izvršavanja programa su privremeni ili tranzijentniobjekti. Kreiraju se prilikom svakog pokretanja sistema perzistentni su samo objekti, ne i klase. Perzistencija se realizuje pomoću baza podataka, obično relacionih ili objektnih većina objekata entitetskihklasa treba da postoji permanentno i pripadaju perzistenom delu sistema većina graničnihi upravljačkihklasa su tranzijentniobjekti, koji nestaju nakon okončanja aplikacija i ponovo se kreiraju prilikom njihovog pokretanja, pa ih nije potrebno čuvati u perzistentnom sloju 5
Perzistencija Postoje različiti modeli perzistencije podataka, koji obezbeđuju različita svojstva objekata, kao što su[5] ortogonalnost- perzistenciju nezavisnu od tipa podataka tranzitivnost-ako je neki objekt perzistentan, to važi i za sve njegove direktne i indirektne komponente i transparentnost- detalji perzistencije su nevidljivi korisnicima Jedna od tehnologija realizacije perzistencije su relacioni sistemi, koji obezbeđuju samo perzistenciju objekata tipa relacija n-torke ne postoje samostalno, već samo u okviru relacije (tabele) relacioni sistemi obezbeđuju transparentnost, ali ne i tranzitivnost 6
Perzistencija zasnovana na fajlovima U programskim jezicima objekte je potrebno sačuvati na fajlovima i ponovo učitavati u memoriju Transparetnostzapisa omogućava automatizaciju čuvanja i restauracije objekta, bez potrebe poznavanja detalja zapisa na disku Tranzitivnostpodrazumeva poznavanje tipa objekta u perzistentnoj memoriji Čuvanje objekata u sekvencijalnim fajlovima podrazumeva njihovi serijalizaciju 7
2. Projektovanje sloja podataka informacionih sistema 1. Razvoj relacionog modela podataka 2. Objektno-relaciono mapiranje (ORM) 3. Softverski alati za objektno-relaciono mapiranje 8
2.1 Razvoj relacionog modela podataka Klasični informacioni sistemi predstavljaju podatke odvojeno, u relacionim bazamapodataka, koje ne sadrže funkcije koje su sastavni delovi objekata Postoji bitna razlika između objektno-orijentisanog (objekti) i relacionog pogleda na podatke (n-torke) UML dijagram klasa softverskog sistema omogućava automatsko generisanje relacionebaze podataka,koja u perzistentnoj memoriji predstavlja inormacije o objektima iz radne memorije 9
Osnovne funkcije perzistencije (CRUD) Osnovne funkcije perzistencije (CRUD), koje omogućavaju postojanje i upotrebu perzistentnih objekata su: Create - kreiranje objekta Read - pronalaženje objekta (zapisa) na osnovu kriterijuma (ključ) Update - pronalaženje i ažuriranje objekata (zapisa) Delete - uklanjanje perzistentnog objekta (zapis) U praksi se uz funkcije perzistencije na istim objektma izvršavaju i druge poslovne funkcije 10
Odvajanje funkcija perzistencijei poslovne logike U praksi se funkcije (a) perzistencije objekata razdvajaju od poslovnih funkcija same aplikacije uprimeru se to realizuje kreiranjem dva zasebna objekta(b), «entity»voziloi «Table»VoziloTabela, s odgovarajućim funkcijama Vozi() i Sacuvaj() neophodna je i jedna nova upravljačka klasa, «control» MenadzerTransakcija(c) a) b) c) 11
Prilagođavanje objektnog modela Prilagođavanje objektnog modela relacionom modelu vršise 1. Projektovanjemperzistentnog sloja, koji odvaja klase sistema od sloja baze podataka 2. Mapiranjem klasa u relacije klase se preslikavaju u tabele(relacije) atributi se preslikavaju u polja tabele asocijacije i agregacije se preslikavaju u spoljašnje ključeve (FK) Atributi iz klase objekta Ime Prezime studentid Primer objekta Ivan Ivanović 123456 12
Princip mapiranje klasa u relacije Dijagram klasa klase Račun i Stavka Izdvajanje relacija atributi i kardinalnost UML notacija modela podataka klaseiatributiiz dijagrama klasa, bez operacija relacije dodaju se oznake stereotipa «Table»,«PK», «FK»,... a) Dijagram projektnih klasa b) Relacije Račun(racunID, klijentid, DatumRacuna, DatumIsporuke, Kontakt, Status) Stavka(stavkaID, proizvodid, Kolicina, JedMere, JedCena) c) UML model podataka (oznake stereotipa) 13
Primer: Mapiranjarazličitih veza u relacije Veza asocijacijepreslikava se u spoljašnji ključ Tabela Predmet Naziv Opis predmetid (PK) Tabela IzborniPredmet MAT1 Analiza 1 123456 Oznaka (PK) predmetid (FK) I_1 123456 Veza agregacijepreslikava se u spoljašnji ključ koji je deo primarnog ključa Tabela Student Ime Prezime studentid (PK) Tabela Raspored Ivan Ivanović 123456 Semestar (PK) studentid (FK)(PK) Zimski 2017 123456 14
2.2 Objektno-relaciono mapiranje (ORM) Klase i atributi Mapiranje asocijacija Mapiranje nasleđivanja 15
Klase i atributi Svaka perzistentna klasa odgovara šemi relacije [6] tip i stereotip polja određuju svojstva kolona tabele primarni ključ relacione tabele treba da bude polje koje se ne može ažurirati, najbolje da se generiše sistemski (identity, autonumberi sl.) knjigaid Autor brojstrana Cena ISBN Izdavac Naslov nastanju 10001 Artur Klark 363 800 9788652107827 Laguna Susret s Ramom 12 10002 Isak Asimov 282 700 9788677020910 Čarobna knjiga Zadužbina i carstvo 13 10003 Daglas Adams 258 670 9788683591107 Alnari Duga mračna čajanka duše 5 16
Mapiranje asocijacija Važna je multiplikativnosti veza asocijacije Ascocijacije tipa više:višenemaju posebna ograničenja, dok asocijacije tipa 1:višei 1:1zahtevaju takav primarni ključ u kome su jedna ili obe povezane kolone unikatni Asocijacije između klasa načelno odgovaraju asocijativnim tabelama relacionog modela Primarni ključ je kompozitni, sastoji se od primarnih ključeva tabela povezanih klasa Zavisno od multiplikativnosti veze, uključuje se jedan ili dva dodatna primarna ključa [6] 17
Primer: Mapiranje asocijacije više:više[6] Asocijativna tabela primarni ključ knjigaid klijentid 10001 20001 10002 20002 10003 20003 knjigaid Autor brojstrana Cena ISBN Izdavac Naslov nastanju 10001 10002 10003 Artur Klark Isak Asimov Daglas Adams 363 800 9788652107827 Laguna 282 700 9788677020910 Čarobna knjiga 258 670 9788683591107 Alnari Susret s Ramom Zadužbina i carstvo Duga mračna čajanka duše 12 13 5 klijentid Ime Prezime 20001 Petar Petrović 20002 Ana Milanović 20003 Ivan Ivanović 18
Mapiranje nasleđivanja Relacioni model direktno ne podržava nasleđivanje Može da se mapira na više načina [6], npr. a) putem tabele za svaku konkretnu klasu ili b) uvođenjem polja tip(null?) gotovinaid Iznos DatumUplate 200001 300,00 20.11.2017 200002 255,00 29.11.2017 rateid Iznos PrvaRata brojrata 200003 1.800,00 24.11.2017 12 (a) PlacanjeID Tip Iznos Datum PrvaRata brojrata 200001 gotovina 300,00 20.11.2017 200002 gotovina 255,00 29.11.2017 200003 rate 1.800,00 24.11.2017 12 (b) 19
Čuvanje i učitavanje objekata Virtuelni proxy Brokeri i materijalizacija Keširanje 20
2.3 Softverski alati za objektno-relaciono mapiranje Postoje različiti alati otvorenog koda za automatizaciju realizacije perzistencije (frameworks), npr. Hibernate je najpoznatiji okvir otvorenog koda za jezik Java NHibernate je verzija istog alata za.net jezike Entity Framework je najvažniji alat za ORM mapiranje i pristup perzistentnim objektima iz koda aplikacije razvijene u.nettehnologiji. Rad spodacima je na višem nivou apstrakcije, tako da je programski kod.net aplikacija kraći Cayeene je ORM otvorenog koda za aplikacije u jeziku Java fondacije Apache TopLink je ORM alat za jezik Javakompanije Oracle Laravel, CodeIgniteri još neki aplikativni okviri za jezik PHPimaju ORM funkcije 21
3. Strukturapodataka uprojektu informacionog sistema 1. Projekt strukture podataka 2. UML model baze podataka 22
3.1 Projekt strukture podataka Projekt strukture podataka (Data Structure Design) predstavlja deo projekta informacionog sistema Sadržaj projekta definisan je standardom IEEE 1016-2009 (IEEE Recommended Practice for Software Design Descriptions, SDD) i može da ima različite forme U izradi projekata na ovom predmetu koristiće se forma namenjena objektno orijentisanomrazvojusoftvera zasnovanom na UML modelima 23
Projekt strukture podataka u projektu informacionog sistema 1. Uvod 1.1. Cilj razvoja 1.2. Obim sistema 1.3. Rečnik 1.4. Reference 1.5. Pregled sadržaja dokumenta 2. Dijagram isporuke (Deployment Diagram) UML Dijagram realizacije/isporuke 3. Projekt arhitekture sistema (Architectural Design) UML Dijagram klasa/paketa 4. Projekt strukture podataka (Data Structure Design) UML model baze podataka 5. Projekt komponenti sistema - realizacije slučajeva korišćenja (Use Case Realizations) UML dijagram slučajeva korišćenja Slučaj korišćenja 1: Specifikacija + Dijagram(i) sekvenci/komunikacije/aktivnosti... Slučaj korišćenja n: Specifikacija + Dijagram(i) sekvenci/komunikacije/aktivnosti 6. Projekt korisničkog interfejsa (User Interface Design) 7. Ostali elementi sistema (kontrole integritesta, Help System Design) + Izvorni kod 24
3.2 UML model baze podataka 4. Projekt strukture podataka Struktura perzistentog sloja informacionog sistema prikazuje se pomoću UML modela podataka u obliku konceptualnog dijagrama klasa/paketa (primer: model podataka aplikacije e-trgovine) 25
4. Primer modela podataka trivijalne ASP.NET aplikacije 1. Početak: namena i funkcije aplikacije 2. Prikaz arhitekture aplikacije 3. Model baze podataka aplikacije (UML) 26
4.1 Početak: namena i funkcije aplikacije Namena: Veb anketa prikaz osnovnih podataka o nekompitanju (npr. ekskurziji), online glasanjeučesnikai prikaz rezultata ankete Funkcije 1. Prijava- prijava korisnika 2. Potvrda -provera ispravnosti prijave i potvrda 3. Rezime-pregled odgovora na anketu 4. Ažururanje-ažuriranje spiska učesnika 27
4.2 Prikaz arhitekture aplikacije Standardna višeslojna arhitektura aplikacije jedna granična klasa WebAnketaForma jedna entitetska klasa WebAnketa jedna perzistentnaklasa Anketa Detalji UML modela razrađuju se u drugim poglavljima projekta 28
4.3 Model baze podataka aplikacije (UML) Klasa Anketau perzistentnoj memoriji povezana je s entitetskom klasom WebAnketa namespace WebAnketa { public class KlijentOdgovor { public string Ime { get; set; } public string Prezime { get; set; } public string eadresa { get; set; } public string Telefon { get; set; } public bool? Odgovor { get; set; } } } Treba još dodati upravljačku klasu 29
5. Brzi razvoj prototipa aplikacije pomoću sistema Visual Studio 2010 1.Kreiranje SQL baze podataka 2.Kreiranje kataloga proizvoda 30
5.1 Kreiranje SQL baze podataka 1. Kreiranje konekcije 2. Kreiranje nove baze podataka 3. Kreiranje tabela 4. Kreiranje relacija 5. Direktni unos podataka u tabele
5.1.1 Kreiranje konekcije
5.1.2 Kreiranje nove baze podataka
5.1.3 Kreiranje tabela
5.1.4 Kreiranje relacija (1/4)
Kreiranje relacija (2/4)
Kreiranje relacija (3/4)
Kreiranje relacija (4/4)
5.1.5 Direktni unos podataka u tabele
5.2 Kreiranje kataloga proizvoda 1. Lista proizvoda pomoću Grid View kontrole 2. Prikaz slika proizvoda
5.2.1 Lista proizvoda pomoću Grid View kontrole Osnova je GridViewlista proizvoda Tabela Proizvodse proširuje tekstualnim poljem Slika koje čuva putanju slike Kontrola GridViewse dopuni slikama sa foldera dodaje se tekstualna kolona Slika
5.2.2 Prikaz slika proizvoda Kontroli GridView se dodaje polje za prikaz slika s foldera dodaje se tekstualna kolona Slika? funkcijom Edit Columns, dodaje se druga kolona Slika tipa ImageField vrednost svojstva DataImageUrlField se postavlja na naziv originalnog polja iz tabele briše se stara tekst kolona Slika
Literatura 1. Miškovic V., Projektovanje informacionih sistema(predavanja), Univerzitet Singidunum, 2018 2. Sommerville I., Software Engineering, 10th Ed, Pearson Education, 2016 3. Bruegge B., Dutoit A. H., Object-Oriented Software Engineering Using UML, Patterns, and Java, Prentice Hall, 2010 4. Schach S.R., Object-oriented Software Engineering, McGraw-Hill, 2008 5. Alagić S., Software Engineering: Specification, Implementation, Verification, Springer, 2017 6. Wazlawick R. S., Object-oriented Analysis and Design for Information Systems, Elsevier Inc, 2014 7. Unhelkar B., Software Engineering with UML, 1st Ed, Auerbach Publications, 2017 8. Priručnici za programske alate i Veb reference 43
dr Vladislav Miškovic Projektovanje informacionih sistema Tema 9: Projektovanje sloja podataka informacionih sistema Pitanja? 44