170 likes | 384 Views
Prof. dr Angelina Njeguš Vanredni profesor Univerziteta Singidunum anjegus@singidunum.ac.rs Beograd, 2008/2009. Objektno-orijentisana analiza i projektovanje sa UML-om DEV475 Mastering Object-Oriented Analysis and Design with UML - Volume 2, Modul 8.
E N D
Prof. dr Angelina Njeguš Vanredni profesor Univerziteta Singidunum anjegus@singidunum.ac.rs Beograd, 2008/2009. Objektno-orijentisana analiza i projektovanje sa UML-omDEV475 Mastering Object-Oriented Analysis and Design with UML - Volume 2, Modul 8
Modul 8:Identifikovanje mehanizama dizajna • Ciljevi: • Definisati svrhu identifikovanja mehanizama dizajna i objasniti u kom životnom ciklusu se izvršavaju • Objasniti šta su mehanizmi dizajna i implementacije i kako se preslikavaju iz mehanizama analize • Objasniti neke ključne mehanizme koji će se koristiti u studiji slučaja
Pregled koraka Identifikovanje mehanizama dizajna • U koraku Identifikovanje mehanizama dizajna, prerađuju se mehanizmi analize u mehanizme dizajna u zavisnosti od ograničenja implementacije • Rezultat: • Elementi modela dizajna • Klase • Paketi • Podsistemi • Dokument o arhitekturi softvera
Mehanizmi dizajna: dizajn paterni • Mehanizmi analize nam omogućavaju da sagledamo zahteve sistema bez ulaženja u detalje • Paterni analize/dizajna – obezbeđuju rešenja za ciljni tehnički problem • Framework – definiše generalni pristup rešavanja problema; obezbeđuje skeleton rešenja čiji detalji mogu biti paterni analize/dizajna; nudi nepotpun šablon za razvoj aplikacija u određenom domenu • Dizajn paterni (Design Pattern) su obično nezavisni od programskih jezika i opisuju opštu strukturu komponenata koji rešavaju generalne probleme dizajna u određenom kontekstu.
Primeri paterna • Mehanizmi dizajna su često sačinjeni od jednog ili više dizajn paterna.
Od mehanizama analize do mehanizama dizajna • Mehanizmi analize se tokom faze analize koriste kako bi se umanjila složenost analize i poboljšala konzistentnost modela • Koraci su: • Prikupiti sve mehanizme analize u listu • Nacrtati mapu klijent klasa ka mehanizmima analize • Identifikovati karakteristike mehanizama analize • Modelovanje mehanizama pomoću dijagrama klasa i dijagrama sekvenci – kada su jednom identifikovani i imenovani mehanizmi, sledeći korak je njihovo modelovanje kroz aspekt strukture (dijagram klasa) i ponašanja (kolaboracija klasa – dijagram sekvenci). Neke od ovih klasa ne pružaju direktno funkcionalnost aplikacije, već samo služe da ih podrže.
Dokumentovanje mehanizama - Primer • Mehanizmi se posmatraju i dokumentuju kroz aspekte strukture (dijagrami klasa) i ponašanja (dijagram sekvenci) • Na primeru Sistema registrovanja na kurs, izabrani su sledeći mahanizmi analize: • Perzistentnost – podrazumeva da element bude postojan, tj. da postoji i posle završetka rada aplikacije koja ga je kreirala • Distribucija – podrazumeva distribuciju elemenata kroz postojeće čvorove sistema • Bezbednost – podrazumeva kontrolu pristupa elementima • Interfejs ka legacy sistemima – podrazumeva pristup nasleđenim sistemima kroz postojeći interfejs.
Mehanizmi dizajna: Perzistentnost: RDBMS: JDBC • Za sve klase čije instance moraju da budu perzistentne, neophodno je identifikovati sledeće karakteristike perzistentnosti: • Granularnost – koji je opseg perzistentnog objekta • Obim – koliko objekata mora da bude perzistentno • Trajanje – koliko dugo se mora čuvati perzitentni objekat • Mehanizmi pristupa – kako se objekat identifikuje i preuzima • Učestalost pristupa (kreiranje/brisanje, ažuriranje, čitanje) • Pouzdanost – mogu li objekti preživeti pad procesa, procesora ili celog sistema?
Primer: Perzistentnost: RDBMS: JDBC • Na slici se prikazuje patern koga koristi perzitentni mehanizam, odabran za RDBMS klase, u ovom primeru: JDBC • Za JDBC, klijent radi sa DBClass za čitanje i pisanje perzistentnih podataka • DBClass je odgovorna za pristupanje JDBC bazi podataka koja koristi klasu DriverManager. Jednom kada se otvori Connection baze podatka, DBClass može da kreira SQL iskaze koji će se slati RDBMS i izvršavati preko klase Statement. Rezultat SQL upita se vraća u objekat ResultSet • DBClass je odgovorna za pravljenje druge perzistentne instance klase • PersistentClassList se koristi za vraćanje skupa perzistentnih objekata kao rezultat upita (npr., DBClass.read()) Napomena: JDBC je standardni Java API za rad sa SQL bazama podataka
Objašnjenje:Izvršavanje SQL upita upotrebom JDBCa • Koraci izvršavanja upita nad bazom podataka: • JDBC Driver puni DriverManager – ovo je neophodno zbog prevođenja naredbi koje izdaje program u naredbe specifirane od strane vendora baze podataka. • Java aplikacija dobija konekciju sa bazom podataka preko Connection objekta, preciznije korišćenjem metode DriverManager.getConnection(). • SQL upit se kreira korišćenjem Statement objekta, odnosno Connection.createStatement() metode. Vraća se objekat Statement i tada je sve spremno za postavljanje upita nad bazom. • SQL upit se izvršava u određenoj bazi podataka pozivajući, pri tome jedan od metoda objekta Statement, bilo Statement.executeQuery() ili Statement.executeUpdate(), specificirajući SQL iskaz kao String parametar. • U ovom slučaju, s obzirom da se korišćen metod executeQuery() objekta Statement, biće vraćen ResultSet koji će obezbediti i rezultate SQL upita.
Objašnjenje: Primer upita • Ova klasa puni drajver baze podataka, kreira konekciju ka bazi podataka, kreira iskaz i na kraju izvršava upit nad bazom podataka. • JDBC Driver, COM.ibm.db2.jdbc.app.DB2Driver koji se koristi u ovom primeru, je klasa koja implementira interfejs JDBC Drivera. • JDBC Driver uzima poruke prosleđenih u JDBC API i konvertuje ih u protokol određene baze podataka.
Primer: Perzistentnost: RDBMS: JDBC • Pre nego što se pristupi perzistentnoj klasi mora da se izvrši inicijalizacija • Da bi inicijalizovali konkeciju za bazom podataka, DBClass mora da puni odgovarajući drajver pozivanjem operacije DriverManager getConnection() sa URL, user i password-om • getConnection() pokušava da uspostavi konekciju za zadatom URL bazom podataka • DriverManager pokušava da selektuje odgovarajući drajver iz skupa registrovanih JDBC drajvera • Parametri: • url – koristi se za lociranje servera baze podataka. Oblik: jdbc:subprotocol:subname • User – korisnik baze podataka u čiju korist se kreira konekcija • Password – korisnikova šifra
Primer: Perzistentnost: RDBMS: JDBC: Create • Da bi kreirali novu klasu, perzistentni klijent pita DBClass da kreira novu klasu • DBClass kreira novu instancu PersistentClass sa difoltnim vrednostima • DBClass zatim kreira novi Statement koristeći operaciju Connection klase createStatement() • Statement se izvršava i podaci se ubacuju u bazu podataka
Primer: Perzistentnost: RDBMS: JDBC: Read • Za čitanje, DBClass kreira novi iskaz (statement) koristeći operaciju klase Connection: createStatement() • Statement se izvršava i podaci se smeštaju u objekat ResultSet. • DBClass kreira novu instancu PersistentClass i snabdeva je sa prikupljenim podacima • Podaci se vraćaju kao kolekcija objekata, instanca klase PersistentClassList
Primer: Perzistentnost: RDBMS: JDBC: Update • Za ažuriranje klase, perzistentni klijent poziva DBClass za ažuriranje (update) • DBClass prihvata podatke iz datog objekta PersistentClass i kreira novi statement koristeći operaciju createStatement(). Jednom kada je kreiran iskaz, izvršava se update i ažurira se baza podatka sa novim podacima iz klase
Mehanizmi dizajna i implementacije • Mehanizmi dizajna nisu usko vezani za konkretnu implementaciju, za razliku od mehanizama implementacije koji ukazuju na konkrente mehanizme implementacije, odnosno ukazuju na konkretnu tehnologiju, jezik implementacije, vendore itd.