dr Vladislav Mikovic Fakultet za raunarstvo i informatiku PROJEKTOVANJE INFORMACIONIH SISTEMA 2013/2014 1 Sadraj predavanja 1. Uvod 2. Objektno orijentisane metodologije razvoja 3. RUP metodologija 4. Ostale objektno orijentisane metodologije 4. Ostale objektno orijentisane metodologije 5. Primer 2 1. Uvod Metodologija razvoja OO Metodologija Metodologija razvoja Metodologija razvoja (system development methodology) je standardizovani proces razvoja, koji definie skup aktivnosti, metoda, iskustava, preporuka i automatizovanih alata koji se koriste za razvoj i neprekidno usavravanje informacionog sistema klasine metodologije: SSAD klasine metodologije: SSAD novije metodologije: spiralna, iterativna, inkrementalna, kombinovane metodologije objektno orijentisame: RUP, XP Drugi naziv za metodologiju razvoja je proces razvoja sistema 4 Objektno orijentisana metodologija razvoja Objektno orijentisana metodologija razvoja (object oriented system development methodology) uzima objekte kao osnovu (1) posmatra se i analizira budui sistemi definiu zahtevi, kao u drugimnainima razvoja sistema (2) identifikuju se objekti u sistemu i njihove meusobne relacije (3) vri se kodiranje sistema Objektno modeliranje je donekle slino tradicionalnim Objektno modeliranje je donekle slino tradicionalnim pristupu projektovanju sistema, jer prati sekvencijalni proces projektovanja, ali sa razliitim pristupom Osnovni koraci za projektovanje sistema korienjem objektnog modeliranja su: (1) Analiza sistema (2) Dizajn sistema (3) Dizajn objekata (4) Implementacija 5 2. Objektno orijentisane metodologije razvoja 1. Objektno orijentisana analiza i projektovanje 2. Objedinjeni proces razvoja (UP) 2.1 Objektno orijentisana analiza (OOA) i projektovanje (OOP) Analiza je proces usmeren na ispitivanje problema i zahteva, a ne na njihovo reavanje pronalaze se i opisuju objekti iz domena problema, npr. koncepti- objekti Plane, Flight u Pilot objekti Plane, Flight u Pilot Projektovanje je proces kreiranja konceptualnog reenja koje zadovoljava zahteve, a ne njegove implementacije definiu se softverski objekti i nain njihove saradnje radi zadovoljenja zahteva, npr. softverski objekt Plane ima atribut tailNumber i metod getFlightHistory 2.3 Objedinjeni proces razvoja (Unified Process, UP) Proces razvoja softvera je pristup izgradnji, isporuci i odravanju softvera proces razvoja predstavlja parcijalno ureeni niz koraka usmerenih ka cilju cilj je efikasna i predvidiva isporuka softverskog sistema, koji zadovoljava zahteve poslovanja zadovoljava zahteve poslovanja Objedinjeni proces (Unified Process, UP) je proces razvoja objektno orijentisanih sistema cilj objedinjenog procesa je omoguavanje izrade visokokvalitetnog softvera, koji zadovoljava korisnike zahteve za predvidivo vreme i budet za kompleksne sisteme, objedinjeni proces predvia iterativni razvoj, koji se sastoji od niza ciklusa, od kojih svaki rezultuje izvrnom verzijom sistema Faze objedinjenog procesa Inception Elaboration Construction Transition vreme Objedinjeni proces organizuje rad i iteracije u etiri osnovne vremenske faze: 1. Inception - poetna faza, definisanje obima projekta 2. Elaboration - faza razrade, planiranje, izrada specifikacija i osnovna arhitektura 3. Construction - faza izgradnje sistema 4. Transition - faza prenosa sistema krajnjim korisnicima Iteracije i preseci (milestones) Preliminarna Iteracija Iteracija 1 Iteracija 2 Inception Elaboration Construction Transition Kontrolna taka/presek Verzija Konana verzija Svaka faza i iteracija nosi odreeni rizik i vremenski zavrava u nekoj kontrolnoj taki Pregled projekta u kontrolnoj ili presenoj taki ocenjuje stepen zadovoljenja korisnikih zahteva i potrebu za eventualnim prestrukturiranjem projekta Svaka iteracija proizvodi novu verziju, stabilni izvrni podskup konanog sistema Kontrolna taka/presek Verzija Konana verzija Discipline objedinjenog procesa Poslovno modeliranje (Business Modeling) Implementation Analiza i projektovanje (Analysis&Design) Faze procesa razvoja Discipline procesa razvoja Specifikacija zahteva (Requirements) Elaboration Transition Inception Construction Management Environment Implementation Test Preliminarne Iteracije Iter. #1 Iteracije Iter. #2 Iter. #n Iter. #n+1 Iter. #n+2 Iter. #m Iter. #m+1 Deployment Configuration Menagment Pomone discipline predmet Projektovanje informacionih sistema Discipline i faze Sve iteracije podrazumevaju vremenski promenljiv rad na veini disciplina prve iteracije se preteno bave zahtevima i projektovanjem, a naredne u sve manjoj meri Aktivnosti i rezultati nisu obavezni u svakom projektu, osim Aktivnosti i rezultati nisu obavezni u svakom projektu, osim kda rezultati razvoja se odreuju prema konkretnim potrebama projekta 1. Poetna faza (Inception):ta treba razviti Odgovara na vei broj pitanja/dilema: vizija poslovnog reenja ocena izvedivosti projekta odluka o samostalnom razvoju ili kupovini gruba procena trokova gruba procena trokova odluka o nastavku projekta razvoja Poetna faza obuhvata rad na ustanovljavanju poetnih optih ciljevi projekta, odreivanju izvedivosti i odluivanje o daljem radu na razradi projekta Rezultati poetne faze Definisani opti ciljevi i ogranienja projekta Opis funkcionalnih i nefunkcionalnih zahteva - Use Case model Dopunske specifikacije - opis ostalih zahteva Renik - najvaniji pojmovi iz razmatrane problematike Lista rizika i plan upravljanja rizicima (poslovni, tehniki i planski rizici, postupci prevazilaenja) postupci prevazilaenja) Prototipovi i ogledni projekti (proof-of-concepts) Plan iteracija, za naredne faze i plan razvoja po fazama - procena trajanja faze razrade i potrebnih resursa (softverski alati, ljudi, obuka i dr.) Opis toka projekta po fazama objedinjenog procesa Svi rezultati se delimino realizuju i dopunjavaju u narednim iteracijama Dijagrami sluajeva korienja (Use-Case) Pomau u reavanju osnovnog problema u procesu projektovanja sistema: izvlaenju tanih i neophodnih projektnih zahteva od uesnika u razvoju i njihovo predstavljanje na nain razumljiv onima koji ih verifikuju i odobravaju odobravaju podaci i modeli procesa, prototipovi, specifikacije zahteva razumljivi projektantima, ali ne i korisnicima dolazi do nerazumevanja, usporavnja razvoja i prekoraenja trokova Najtei pojedinani deo procesa razvoja softvera je precizno definisanje onog to treba uraditi 2. Faza razrade (Elaboration):kako razviti sistem Detaljna razrada korisnikih zahteva (najvei deo, oko 80%) Odreivanje izvrne i stabilne arhitekture definisanje, implementacija i testiranje interfejsa glavnih komponenti identifikacija zavisnosti spoljnih komponenti i sistema delimina implementacija kljunih komponenti delimina implementacija koda (oko 10%) delimina implementacija koda (oko 10%) Arhitektura sa kljunim sluajevima korienja manji deo sluajeva korienja nosi 80% arhitekture projektovanje, implementacija i testiranje vanih sluajeva korienja Verifikacija arhitekture testovi optereenja, za proveru ponaanje sistema kada je na granici resursa ili ih mora konkurentno obezbediti testovi punjenja, performanse i skalabilnost Stalna procena poslovnih sluajeva korienja, rizika i plana razvoja 3. Faza izgradnje (Construction): izrada sistema Zavretak modela zahteva i projekta Projektovanje, implementacija i testiranje komponenti prototip sistema za prikaz korisniku inkrementalno ukljuivanje izvrne arhitekture radi zavretka sistema Razvija se dnevno ili nedeljno (automatizovano) Testiranje svake verzije Testiranje svake verzije Automatsko regresivno testiranje (potvrda se da su ostali delovi sistema ostali stabilni posle zavretka iteracije) Test punjenja i stresa kako bi se osigurao integritet arhitekture Isporuka funkcionalnog softvera (beta verzija) dokumentaciju uvoenja reenja u sistem, korisnika dokumentacija i materijali za obuku Izrada opisa verzije 4. Faza prenosa (Transition): isporuka sistema Potvrda da realizovani sistem zadovoljava traene funkcionalnosti i performanse Uvoenje inkrementalne programski korektne verzije Auriranje korisnikih prirunika i dokumentacije uvoenja Auriranje verzije Voenje analize projekta u toku perioda zatija Voenje analize projekta u toku perioda zatija 3. RUP metodologija Specijalizacija UP procesa ... Ima sopstvene licencirane razvojne alate 4. Ostale objektno orijentisane metodologije 1. Agilne metodologije 2. Ekstremno programiranje (XP) 3. SCRUM 4. MSF 4. MSF 4.1 Agilne metodologije Problemi u razvoju softvera korienjem strogih metodologija, (npr. metod vodopada), krajem 20. veka prouzrokuju pojavu manje strogih metodologija (lightweight, agile) Osnovna ideja je da manje projekte (i timove) treba manje optereivati brirokratijom, ve treba nai razuman kompromis optereivati brirokratijom, ve treba nai razuman kompromis Principi: isporuka onoga to korisnik trai to ea isporuka rezultata (iterativni i inkrementalni pristup) najjednostavnije mogue reenje prilagoavanje dobroj praksi (iskustvo) vrednovanje individualnih mogunosti meusobna saradnja celog razvojnog tima 21 4.2 Ekstremno programiranje (XP) Agilna metodologija, podrazumeva i prihvata stalne promene sistema kao injenicu Realizuje se kroz male ili srednje razvojne timove, koji rade u tesnoj saradnji s korisnikom Ne koristi se precizno planiranje, ve se tei brzim, opipljivim rezultatima, koji se odmah predoavaju korisniku Ne koristi se precizno planiranje, ve se tei brzim, opipljivim rezultatima, koji se odmah predoavaju korisniku Elementi metodologije ekstremnog programiranja Planiranje korisnik pie scenario razvojni tim procenjuje trajanje i trokove korisnik donosi odluku o sledeem koraku jedna razvojna iteracija - nekoliko scenarija, razvoj od nekoliko nedelja jedna razvojna iteracija - nekoliko scenarija, razvoj od nekoliko nedelja Analiza sistem se posmatra kao skup korisnikih scenarija jedan scenario - jedan sluaj korienja (kao UML Use Case, ali neformalno) Elementi metodologije ekstremnog programiranja Testiranje testovi se piu pre programiranja sistema svaki scenario je jedan skup testova svi testovi se moraju izvravati sve vreme Kodiranje potuju se standardi kodiranja potuju se standardi kodiranja dobar stil i dokumentacija koda kodiraju se najjednostavnije celine koje mogu da funkcioniu Programiranje u parovima sav kod se pie u parovima neprekidna komunikacija, programiranje i analiza koda zamena uloga, vie puta u toku dana 4.3 Scrum Naziv po ragbi formaciji od osam igraa, koji kao grupa (jedinstvena celina) pomeraju loptu po terenu u zajednikom cilju Iterativna metodologija, koja podrazumeva da nisu svi zahtevi odmah jasni i poznati, ve se iskustveno otkrivaju u toku odmah jasni i poznati, ve se iskustveno otkrivaju u toku razvoja Agilna metodologija, bliska XP, podrazumeva dnevne sastanke na kojima programeri iznose probleme koji utiu na napredovanje, koje razreava tzv. Scrum Master Povratna veza prema svim uesnicima preko dnevnika mesenih zadataka Backlog Nije pogodna za velike projekte 25 Scrum Obuhvata upravljanje zahtevima, formiranje iteracija (planiranje sprinta), kontrole implementacije i isporuke klijentu isporuke klijentu empirijski metod i tehnike menadment drugih projekta Dnevni sastanci, 30-dnevne iteracije 1. ta je uraeno jue? 2. ta e se raditi danas? 3. Kakve se danas prepreke oekuju? 26 4.4 Microsoft Framework (MSF) Principi, modeli, discipline, koncepti i preporuke za isporuku IT reenja kompanije Microsoft Opti principi visokog nivoa, samo okvir (framework) doputa izbor metodologije doputa izbor metodologije (klasine ili agilne) koncentrie se na rezultate Modeli model organizovanja (team) uloge lanova tima (menadment, arhitektura, razvoj, testiranje, isporuka, podrka) model upravljanja (governance) faze procesa razvoja (vizija, planiranje, razvoj, verifikacija i isporuka) 27 Literatura 1. Mikovic V., Projektovanje informacionih sistema (predavanja), Univerzitet Sinergija, 2013 2. Kroll P., P. Kruchten, Rational Unified Process Made Easy A Practitioners Guide to RUP, John Waley, 2003 3. Kurbel K. E., The Making of Information Systems: Software Engineering and Management in a Globalized World, Springer, 2008 4. Sommerville I., Software Engineering, 9thEd, Addison Wesley, 2011 4. Sommerville I., Software Engineering, 9thEd, Addison Wesley, 2011 5. Pressman C., Software Engineering: A Practitioners Approach, 5thEd, McGrow-Hill, 2001 6. IBM Rational Product Training: DEV475 Mastering Object-Oriented Analysis and Design with UML 7. Prirunici za programske alate i Web reference 28 dr Vladislav Mikovic Projektovanje informacionih sistema Tema 11: OO metodologija razvoja softvera (RUP) Pitanja? 29