Doc. dr Angelina Njeguš Objektno-orijentisana analiza i Objektno-orijentisana analiza i projektovanje sa UML-om projektovanje sa UML-om Sa elementima Sa elementima IBM-ovog kursa IBM-ovog kursa DEV475 DEV475 Mastering Object-Oriented Analysis and Design with UML Mastering Object-Oriented Analysis and Design with UML Dodatak Dodatak
Doc. dr Angelina Njeguš. Objektno-orijentisana analiza i projektovanje sa UML-om Sa elementima IBM-ovog kursa DEV475 Mastering Object-Oriented Analysis and Design with UML Dodatak. Dodatak: ObjectStore mehanizam. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Doc. dr Angelina Njeguš
Objektno-orijentisana analiza i projektovanje Objektno-orijentisana analiza i projektovanje sa UML-omsa UML-om
Sa elementima Sa elementima IBM-ovog kursaIBM-ovog kursaDEV475DEV475 Mastering Object-Oriented Analysis and Design with UML Mastering Object-Oriented Analysis and Design with UML
DodatakDodatak
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
• Stereotip <<role>> se koristi da prikaže koje klase treba da budu popunjene od strane dizajnera
• Operacije koje su definisane u SampleDBManager su specifične za klase koje su perzistentne
• Svaka operacija perzistentne klase koja ažurira podatke klase treba da bude iskopirana u klasi SampleDBManager
Npr. ukoliko postoji klasa MojaKlasa koja sadrži dve operacija op1() i op2(), onda će SampleDBManager klasa uključiti i operacije: NewMojaKlasa(), UpdateMojaKlasa, DeleteMojaKlasa(), doMojaKlasaOp1() itd.
• “Objekti postaju perzistentni kada su referencirani od strane drugih perzistentnih objekata”
• Klijenti su u interakciji (interfejsu) sa SampleDBManager klasom da bi dobili pristup objektima perzistentne klase (PersistentClass) u bazi podataka;
• klijent može da kreira novu instancu perzistentne klase sa operacijom newClass() ili da poziva naredbu perzistentne klase sa operacijom command();
• Klijent inicijalizuje i gasi bazu podataka ObjectStore kroz klasu SampleDBManager
• U kontekstu ObjectStore baze podataka, perzistentna klasa PersistentClass se smatra “root class”-om
• SampleDBManager obezbeđuje jednu ulaznu tačku u ObjectStore bazu podataka
• Postoji jedna SampleDBManager klasa po instanci ObjectStore baze podataka
SampleDBManager sadrži kod npr. za početak i kraj transakcija
• Klasa Database je ObjectStore klasa koja predstavlja aktuelnu ObjectStore bazu podataka;
pre nego što počnete sa kreiranjem perzisentnih objekata, morate kreirati bazu podataka koja će čuvati objekte; aplikacija može istovremeno da pristupa ka više instanci baze podataka
• Map je perzistentni map container klasa koja skladišti parove ključ/vrednost sa jedinstvenim ključem; ne morate koristiti samo klasu Map kao kolekciju, već možete i bilo koju drugu
• Klasa ObjectStore definiše operacije na sistemskom nivou koje nisu specifične za bilo koju bazu podataka
• Baza podataka Session mora biti kreirana da bi se pristupalo bazi i bilo kojim perzistentnim podacima. Sesija je kontekst u kojem je ObjectStore baza kreirana i otvorena i u kojoj se izvršavaju transakcije
• Svim perzistentnim objektima se mora pristupati unutar transakcije ObjectStore. U sesiji može da se izvršava samo po jedna transakcija
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
• Da bi kreirao novu instancu PersistantClass u bazi podataka, prvo SampleDBManager mora da kreira transakciju i da pozove konstruktor za PersistentClass
• Jednom kada se kreira klasa dodaje se bazi putem root operacije “put()”
• Transakcija se potvrđuje
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
• Da bi se baza ugasila, SampleDBManager mora prvo da zatvori bazu, a zatim da prekine sesiju
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: Registracija na kursPrimer: Registracija na kurs• Spisak studenata registrovanih na kurs sadrži više studenata gde je za svakog studenta
pridružen najmanje jedan raspored, a svaki raspored ima grupu ponuda kursevaUkoliko treba da se implementira prethodni scenario, tada je potrebno nekoliko klasa kolekcija za sve 1-prema-više veze
• Root nije ništa drugo do tačka pristupa bazi podataka, jedan od načina postavljanja upita nad bazom
U ovom primeru možemo izabrati više korenskih klasa: Spisak, Student i RasporedRoot je kolekcija klasa koja podržava ObjectStore upite
• Pregled koraka implementacije ObjectStore mehanizma:Obezbediti pristup bibliotekama klasa neophodnih za impelementiranje ObjectStore pristupaIzabrati root klasu baze podataka
• Jedna od važnijih odluka kod uključivanja ObjectStore mehanizma u vaš dizajn je koju korensku klasu (root) izabrati – u ovom primeru je izabrana klasa Student
Izabrati kontejner klasu koja će služiti kao root baze podataka (koja će sadržati, skladištiti izabrane root klase) – izabrana klasa kontejner je specijalna struktura podataka
• U ovom primeru odabrana je mapa kao kolekcija klase, a jedinstveni ključ pristupa studentima je StudentIDKreirati DBManager (jednog po instanci ObjectStore baze podataka)
• U ovom primeru biće jedan ObjectStore baza, Course Registration Database koja sadrži informacije o studentima i rasporedima za univerzitetu. Stoga, postojaće jedan CourseRegDBManager koji će biti u novom paketu ObjectStore
Dodati operacije DBManager-u kako bi se pristupalo objektima u OODBMS• Kreirati operacije za studente i rasporede (radi pristupa informacijama o studentima i rasporedima)
Kreirati Create/Update dijagrame interakcija koji opisuju:• Inicijalizaciju i prekidanje baze podataka• Pristup perzistentnim klasama: Create, Read, Udate, Delete
• Kreira se paket ObjectStore Support koji sadrži poslovne elemente dizajna
• CourseRegDBManager-u će biti potrebno da elementi dizajna podržavaju ObjectStore mehanizam, te se stoga dodaje relacija zavisnosti između paketa ObjectStore Support i com.odi (odi je skraćenica od naziva kompanije koja je napravila Object Design: Object Design, Inc.)
• S obzirom da će CourseRegDBManager klasi biti potrebno da ima pristup perzistentnim klasama, dodaje se relacija zavisnosti između paketa ObjectStore Support i University Artifacts
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: inicijalizacija baze podataka Primer: inicijalizacija baze podataka ObjectStore pri start-up-u sistemaObjectStore pri start-up-u sistema
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: prikaz zatvaranja bazePrimer: prikaz zatvaranja baze
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: prikaz čuvanja iili ažuriranja Primer: prikaz čuvanja iili ažuriranja Schedule klaseSchedule klase
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: prikaz čitanja info o StudentuPrimer: prikaz čitanja info o Studentu
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: prikaz brisanja StudentaPrimer: prikaz brisanja Studenta
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: online phonebookPrimer: online phonebook
• Kreiranje Java aplikacije online adresara (phonebook) koja omogućava unos telefona, postavljanje upita, ubacivanje, izmenu i brisanje funkcionalnosti
• Aplikacija se pokreće Admin klasom, a sloj podataka se sastoji od četiri klase: Phonebook, PhonebookEntry, PhoneRegion i PhoneRegionList
• Klasa XMLPhoneEntries parsira i prihvata telefone koji su uskladišteni u XML fajl radi batch upload-ovanja
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Razvoj aplikacijeRazvoj aplikacije
• I korak: Obezbediti pristup bibliotekama klasa neophodnih za impelementiranje ObjectStore pristupa
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Razvoj aplikacije - nastavakRazvoj aplikacije - nastavak
• III korak: kreirati ulaznu tačku u OODB (slično definisanju naziva relacione tabele).
U ovom slučaju proveramo da li postoji ulazna tačka “entries”, ukoliko ne postoji kreiramo novu OSHashMap sa nazivom “entries”, u okviru koje ćemo skladištiti objekte PhonebookEntry klase. OSHashMap je u osnovi podklasa java.util.Map sa dodatim funkcionalnostima i perzistentnim mogućnostima
Code: Phonebook Entry Point Transaction t = Transaction.begin(ObjectStore.UPDATE);
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Razvoj aplikacije - nastavakRazvoj aplikacije - nastavak
• Važno je da se adekvatno završi sesija i prekine sa korišćenjem resursa baze podataka pre nego što se aplikacija završi
Ovu metodu bi trebalo eksplicitno pozvati, jer se metoda finalize() ne izvršava na predvidljiv način
Code: Phonebook Cleanup
public void close() { db.close(); session.terminate();
}
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Razvoj aplikacije - nastavakRazvoj aplikacije - nastavak
• IV korak: Kreiranje perzistentne klasePhonebook klasa predstavlja interfejs ka OODBKlase PhoneRegion i PhoneEntry bi trebalo obraditi kako bi bile spremne za skladištenje u bazi podatakaNaredba osjcfp (ObjectStore Java Class Post-processor) uzima Java class fajlove i dodaje dodatne informacije o ovim klasama kako bi podržale OODB –
• ova naredba generiše brojne fajlove koji se smeštaju u odvojene direktorijume (određene sa –dest).
• Naredba takođe treba da zna koji class fajl treba prethodno obraditi (post-process).
• U ovom slučaju obrađuje se fajl PhonebookEntry.class
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Razvoj aplikacije - nastavakRazvoj aplikacije - nastavak
• Database Inserts – jedan ili više objekata se skladišti u OODB; Ubacivanje objekata mora da se izvrši nakon uspostavljanja sesije i kreiranja baze podataka;Novi objekat PhonebookEntry se kreira pre insert-ovanja, nakon čćega se proverava validnost formata, polja i dr.Pre ubacivanja treba započeti transakciju; ukoliko objekat već postoji u bazi sa istim primarnim ključem (phone number), ubacivanje (insert) se prekida (abort); inače ubacuje se u OSHashMap “entries” imenovani ključem tj. brojem telefona (phoneNumber) kao entry; Kada se unosi objekat, unose se i svi njegovi atributi zajedno sa tipom podatka i vrednošćuNakon uspešnog unosa, transakcija se potvrđuje (commit) i zatvara (close)
Code: Phonebook Management of PhonebookEntry Inserts
public void addEntry(String firstName, String lastName, ...) { PhonebookEntry entry = new PhonebookEntry(firstName, lastName, ... ); if ( entry.isValid() ) {
Transaction t = Transaction.begin(ObjectStore.UPDATE); if (entries.get(phoneNumber) != null) {
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Razvoj aplikacije - nastavakRazvoj aplikacije - nastavak
• Izvršavanje upita – u ovom primeru traže se PhonebookEntry objekti čija imena sadrže John (firstName = “John”);Kad se upit izvrši, pomoću Iteratora prolazi se kroz sve rezultate i prihvataju se odgvarajući PhonebookEntry objekti, a zatim poziva metoda toString kako bi se dobio tekstualni prikaz
Code: Simple Queries in the Phonebook Class
Query query = new Query(PhonebookEntry.class,"firstName == \"John\""); Collection queryResults = query.select(entries.values());String[] results = new String[queryResults.size()]; Iterator resultIterator = queryResults.iterator(); int count = 0; while(resultIterator.hasNext()) {
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
• GUI framework obezbeđuje standardni skup UI klasa
• Radi bezbednosti, UI obezbeđuje login ekran koji radi sa poslovnim objektom na server strani; ovaj server objekat će ostati na raspolaganju svim kontrolama u toku trajanja sesije
• Security Manager podsistem uključuje klase koje implementiraju ponašanje bezbednosti
• Secure Interfaces – entiteti koji su bezbedni će realizovati interfejs i obezbediti manji skup ponašanja
Here we are reverse engineering existing components into the Implementation and Design Model (Three reusable components – one is a GUI framework; other two support security on the server)
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
• Stereotip <<role>> se koristi da identifikuje koje klase i role treba da razvije dizajner da bi primenile mehanizam bezbednosti
• Za svaku sesiju aplikacije, mora
postojati klasa čiji objekat realizuje ISecureUser interfejs (npr. UserSecurityContext klasa)
• Ovaj objekat upravlja informacijama o trenutnom korisnikovom pristupu bezbednosnim podacima bez direktne zavisnosti od klasa (ISecureUser klase zavise od interfejsa ISecureData, a ne od aktuelnih bezbednostnih podataka klasa)
• Sistem bezbednosti, preko operacija prikazanih u ISecureUser, omogućava klijentima da postave pristup objektima kada se kreiraju i proveravaju pristup tim objektima kada se oni kasnije koriste
• Postoji jedna instanca SecurityAccess po user login/sesiji po bezbednosnom objektu
This is a secure entry; “Realizes” the ISecureUser Interface.
MainApplicationForm keeps a reference to a ISecureUser obj until the form closes (this is represented by the composition relationship).
The reference to the ISecureUser object actually comes back from the LoginForm,which creates the ISecureUser object upon successful logon (this is represented by the dependency relationship)
The UniqueID class makes sure that all users and all pieces of data from all different applications get their own unique ids.
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: Primer: security mechanismsecurity mechanism::Secure User Set-Up at LoginSecure User Set-Up at Login
• Za svaku sesiju aplikacije, mora da postoji jedan objekat čija klasa realizuje ISecureUser interfejs.
• Ovaj objekat upravlja informacijama o trenutnom korisnikovom pristupu bezbednom podatku.
• LoginForm će (nakon uspešnog logovanja) kreirati instancu ISecureUser
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: Security mechanism: Prikaz kako Primer: Security mechanism: Prikaz kako podforme i kontroler obezbeđuju pristup bezbednoj podforme i kontroler obezbeđuju pristup bezbednoj korisničkoj sesijikorisničkoj sesiji
• Svi unosi koji treba da izvršavaju proveru pristupa moraju da imaju pristup trenutnoj korisnikovoj sesiji (tj. da imaju pristup ka ISecureUser)
• Ovak dijagram pokazuje kako podforma i pridruženi controller obezbeđuju pristup bezbenoj korisnikovoj sesiji.
• Bezbedna korisnička sesija se uspostavlja tokom login-a i održava je MainApplication Form.
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: bezbedni pristup objektaPrimer: bezbedni pristup objekta
• Sve klase koje su mapirane ka mehanizmu analize Security treba da realizuju interfejs ISecureData
• Sve klase koje moraju da verifikuju pristup nekom bezbednom podatku treba to da urade preko interfejsa ISecureUser
Biće jedan objekat čija klasa realizuje interfejs ISecureUser po sesiji
• Kada se prihvataju bezbedni podaci, klijent mora da verifikuje trenutnog korisnika da li ima dozvolu pristupa podacima (preko infomracija o bezbednom pristupu – security access)
• Na dijagramu je prikazano da nakon prihvatanja objekta koji realizuje ISecureData interfejs, Secure Object Client mora da prihvati security access info za secure object za trenutnog usera i da ga uporedi kako bi se osigurao da trenutni korisnik može da gleda/edituje/briše objekat.
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
• Obezediti pristup bibliotekama klasa koje su potrebne za implementaciju mehanizma bezbednosti
Kreirati novi Security paket koji će da sadrži klase koje će da implementiraju mehanizam bezbednosti
• Kreirati glavnu formu aplikacije sa pridruženim login formamaPaket koji sadrži forme zavisi od paketa Security GUI FrameworkKreirati glavne forme aplikacije
• Neka sve bezbedne klase realizuju interfejs ISecureData Paket koji sadrži ključne tipove podatka zavisi od paketa Security Secure InterfaceDodati relacije realizacije
• Obezbediti bezbednu korisničku sesiju pristupa gde je potrebnoPaket koji sadrži kontrolne klase zavisi od paketa Security GUI FrameworkKontrolne klase zahtevaju bezbedni pristup sesiji korisnikaDodati setSession(IsecureIUser) operacije
• Kreirati/ažurirati dijagrame interakcija sa bezbednosnom obradomBezbedni login korisnikaBezbedna sesija korisnikaBezbedan pristup podacima (provera dozvola pristupa)
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Primer: uključivanje mehanizama Primer: uključivanje mehanizama bezbednosti u model registracije kursevabezbednosti u model registracije kurseva
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
• Naredni primeri ukazuju na izmene koje je potrebno uraditi na prethodnim slajdovima kako bi se uključio mehanizam sigurnosti
LoginForm iz security GUI framework će biti zamenjen LoginForm-om koja je identifikovana use case analizomKlasa Schedule mora biti bezbedna tako da će realizovati interfejs ISecureDataKlase kontrole RegistrationController će zahtevati pristup bezbednoj sesiji korisnika, tako da će se dodati operacija setSession(ISecureUser)
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Sadržaj seminarskog rada - nastavakSadržaj seminarskog rada - nastavak
4. Model projektovanja (Design model)4.1. Projektovanje slučajeva korišćenja (Use case design)
4.1.1. Mehanizmi dizajna (prikazati tabelu mapiranja mehanizama analize u mehanizme dizajna i na kraju izbor mehanizama implementacije, npr. kao na slajdu 53, prezentacije OOAD2)4.1.2. Dizajn podsistema (prikazati sadržaj podsistema, zajedno sa njihovim interfejsima – mapirate klase analize u elemente dizajna)
Slike: Dijagram interakcije podsistema (prikažite najmanje jedan dijagram interakcije podsistema po operaciji interfejsa)
prikazati zavisnost podsistema u odnosu na druge spoljne elemente dizajna)4.1.3. Dizajn klasa (akcenat je na metodama klasa, ali i na preciznijem definisanju atributa, tipova podataka, difoltnih vrednosti, asocijacija, multiplikativnosti i sl.)
Slike: Dijagram stanjaSlika: Dijagram klasa
4.1.4. Modeliranje procesa Slika: Dijagram komponenti
4.1.5. Opis distributivnosti sistemaSlika: Dijagram uvođenja (deployment diagram)
Projektovanje informacionih sistema Projektovanje informacionih sistema Doc. dr Angelina Njeguš Doc. dr Angelina Njeguš
Sadržaj seminarskog rada - nastavakSadržaj seminarskog rada - nastavak
4.2. Projektovanje baze podataka (Database design) (koji DBMS se koristi, ukoliko je RDBMS navesti koji objektno-relacioni framework se koristi, prikazati neke ključne stored procedure i trigere ...)Slika: Fizički model baze podataka prikazan u izabranom DBMS-uSlike: Stored procedura “ ... “ Slike: Triger “ ... “ (opciono)
4.3. Projektovanje sloja prezentacije (u zavisnosti od aplikacije prikazati Windows, Web ili GUI za bežične uređaje)
4.4. Projektovanje bezbednosti (opciono, jer je problematika koja se razmatra u okviru drugih predmeta)