• Like
  • Save
Modeli Softverskog Procesa Razvoja- Softversko inzenjerstvo, Tatjana Dimitrijevic
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Modeli Softverskog Procesa Razvoja- Softversko inzenjerstvo, Tatjana Dimitrijevic

  • 3,825 views
Published

Pretmet: Softversko inzenjerstvo; Tema: Modeli razvoja softverskog procesa; Student: Tatjana Dimitrijevic- Seminarski rad

Pretmet: Softversko inzenjerstvo; Tema: Modeli razvoja softverskog procesa; Student: Tatjana Dimitrijevic- Seminarski rad

Published in Education , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,825
On SlideShare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
63
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Softversko inženjerstvo Pancevo, Mart, 2010.god Mentor: Student prof. dr.Mirsad Niković Tatjana Dimitrijević br.ind 2296 / 06 INTERNACIONALI UNIVERZITET U NOVOM PAZARU FAKULTET ZA INFORMATIKU I INFORMACIONE TEHNOLOGIJE Modeli softverskog procesa
  • 2. Softversko inženjerstvo
    • Softversko inženjerstvo je računarska disciplina koja se bavi razvojem složenih aplikacija
    • Ono se bavi ne samo tehničkim aspektima izgradnje softverskog sistema, već i manadžerskim problemima poput organizacije programerskog tima, terminskim planiranjem, finansijama …
    • Softversko inženjerstvo je inženjerska disciplina koja vodi brigu o svim aspektima proizvodnje softvera od specifikacije sistema do implementacije sistema i održavanja (Sommerville, 2001.).
    • Mož emo prometiti da se javljaju dva ključna pojma:
      • I nženjerska disciplina
      • Svi aspekti proizvodnje softvera
  • 3. Životni ciklus razvoja softvera
  • 4. Softversko inženjerstvo
    • Softversko inženjerstvo obuhvata važna područja kao što su:
      • vođenje poslovanja i IT,
      • razvoj softverskih metodoligija i okvira,
      • troškovi razvoja
      • trajanje razvoja,
      • rizici u razvoju softvera,
      • ugrađivanje kvaliteta razmišljanje u procesu razvoja softvera,
      • Testiranje,
      • upravljanje razvojnih timova,
      • project management,
      • p rojekt izvještavanje,
      • p rojekt brzine razvoja projekta,
      • k omunikacija svih učesnika
  • 5. Softversk i proizvod
    • Softverski proizvod (aplikacija) stvoren po principima softverskog inženjerstva može biti razvijen kao:
      • Generički proizvod
      • Naručeni proizvod troškovi razvoja
    • Za razvoj softvera karakteristične su određene temeljne aktivnosti:
      • Specifikacija potreba (identifikacija, transformacija potreba u zahteve, analiza, određivanje prioriteta …)
      • Dizajniranje problema (oblikovanje problema grafičkom notacijom, oblikovanje procesa, analiza …)
      • Implementacija (kodiranje, testiranje, uvođenje u rad, dokumentiranje, edukacija …)
      • Validacija (testiranje softverskog sistema, procena kvaliteta …)
      • Evolucija (održavanje sistema, reinženjering …)
  • 6. Softversk i proizvod
      • A ktivnosti razvoj a softvera
  • 7. Principi i modeli razvoja softvera
    • Model razvoja se odabira u zavisnosti od prirode projekta i aplikacije, tehničke orijentacije ljudi koji će učestvovati u razvoju, metoda i alata koji će se upotrebljavati pri razvoju, načina kontrole i samih proizvoda koji se zahtevaju
    • Razvojni principi su takvi opšte važeći osnovni principi koji određuju način izvršenja rada i omogućuju uopštavanje određenih specifičnosti i zakonitosti objektivne stvarnosti
    • Osnovni principi načina izvršenja rada su:
      • princip modelovanja,
      • princip iteracija,
      • princip simulacije,
      • princip dokumentovanja.
  • 8. Principi i modeli razvoja softvera
    • Modeli su apstrakcije koje pomažu u procesu razvoja softvera
    • Model softvera predstavlja komponente razvoja softvera i razvijen je na osnovu ideja konstruktora i njegove predstavke šta je najznačajnije u tom razvoju
    • Model može predstavljati:
      • model procesa razvoja,
      • model softvera ili
      • model načina upravljanja softverom.
    • Primarni cilj kreiranja modela je da se obezbede softverski p roizvodi koji odgovaraju zahtevima korisnika
  • 9. Na j češći modeli razvoja softvera
    • Preskriptivni modeli razvoja
    • Model vodopada ,
    • Inkrementalni modeli razvoja:
    •  Inkrementalni model,
    • RAD model,
    • Razvojni modeli:
    • Model prototipskog razvoja,
    •  Spiralni model,
    •  Istovremeni model razvoja (Concurrent Development)
    • Specijalizovani modeli:
    •  Model zasnovan na komponentama,
    • Model zasnovan na formalnim metodama,
    • Model unificiranog procesa razvoja (Unified Process)
    • Modeli agilnog razvoja :
    • Extreme Programming (XP)
    • Adaptive Software Development (ASD)
    • Dynamic Systems Development Method (DSDM)
    •  Scrum
    •  Feature Driven Development (FDD)
    • Agile Modeling (AM)
  • 10. Model vodopada definisanje strategije projektovanje aplikativno modeliranje implementacija odr ž avanje analiza
  • 11. Model vodopada
    • Faze i aktivnosti razvoja prema ovom modelu su sledeće:
      • Analiza i definisanje zahteva sistema
      • Analiza i definisanje zahteva softveru
      • Projektovanje ili dizajn softvera
      • Kodiranje
      • Testiranje
      • Održavanje
      • Primena ovog modela se predlaže u sledećim situacijama:
      • zadovolji posebne zahteve korisnika
      • kada korisnik jednoznačno može definisati svoje zamisli i potrebe u odnosu na softver
      • postoji dovoljno vremena i strpljenja kod korisnika za dugi period razvoja
      • visoki razvojni troškovi i saobrazno potrebna finansijska sredstva nisu ograničavajući faktor razvoja
  • 12. Model vodopada - slabosti
    • nedostatak povratne sprege izmenu koraka koji nisu sukcesivni i ne odvijaju se u sekvencijalnom redosledu.
    • realni projekti veoma retko prate modelom definisani sekvencijalni tok, a iteracije uvek izazivaju ili se kod njih javljaju problemi u primeni modela,
    •  uvek je teško za korisnika da u početku rada na razvoju softvera navede eksplicitno sve svoje zahteve
    •  kupac mora biti veoma strpljiv i istrajan , jer će mu radne verzije programa biti dostupne tek na kraju aktivnosti razvoja softvera,
    • greške koje se ne otklone u fazi testiranja programa , mogu imati stravično distorziono dejstvo na projekat razvoja.
  • 13. V model
    • V model (nemačko Ministarstvo odbrane , 1992.) je modifikovani kaskadni model koji pokazuje odnos testiranja i faza analize i projektovanja, čineći eksplicitnim neke povratne sprege koje su skrivene u kaskadnom modelu
  • 14. V model
    • V model se prvenstveno bavi aktivnostima i ispravnim radom sistema, za razliku od kaskadnog modela koji je usredsređen na dokumente i međuproizvode
    • V model se koristi na sledeći način:
      • Testiranje delova , testiranje sistema pri integraciji i testiranje sistema bave se ispravnošću programa i mogu se koristiti za verifikovanje dizajna programa.
      • Završni test služi za validaciju zahteva, tj. proveru da li su svi zahtevi potpuno implementirani.
      • Ako se pronađu problemi tokom verifikacije ili validacije, aktivnosti sa leve strane V modela mogu se ponoviti radi popravke i poboljšanja zahteva, dizajna ili koda , pre nego što se ponove testiranja na desnoj strani modela
  • 15. Inkremetalni model
    • U ovom modelu razvoja se prvobitno potpuno razvija inicijalni podskup funkcija softvera , a zatim se sukcesivnim koracima razvijaju, kao nadgradnja prethodnog koraka, stalno novije i komplikovanije verzije
    • Inkrementalni razvoj
    • Iterativni razvoj
  • 16. Inkremetalni model
    • Inkrementalni razvoj podrazumeva da se sistem u skladu sa specifikacijom zahteva deli na podsisteme prema funkcijama. Verzije se definišu kao funkcionalni podsistemi, tako da se svakoj novoj verziji priključuju nove funkcije
    • Sistem se nadograđuje do potpune funkcionalnosti.
    • Prednost ovakvog razvoja je u tome da se dodaci odnosno nove funkcije lakše razumeju i testiraju
    • Korišćenje mogućnosti da se stalno dodaju nove funkcionalnosti softverskom proizvodu , daje mogućnost ugradnje bogatog korisničkog iskustva u redefinisani proizvod na manje skup način
  • 17. Inkremetalni model - logaritam
  • 18. Model prototipskog razvoja
    • Model prototipskog razvoja se koristi da bi se za potrebe korisnika razvio inicijalni model budućeg softvera koji simulira njegove stvarne funkcije sa ciljem da korisnik da svoje mišljenje i odluči koji i kakvi su njegovi zahtevi
    • prototip može biti takođe iskorišćen kao koncept unutar
    • omogućuje da se brzo izgrade primitivne verzije softvera
    PROTOTIPSKI ZAHTEVI PROTOTIPSKI PROJEKAT PROTOTIPSKI SISTEM TEST LISTA REVIZIJA LISTA REVIZIJA LISTA REVIZIJA ZAHTEVI SISTEMA (nekada neformalni ili nekompletni) revizija prototipa pogled korisnika ili naručioca ISPORUČENI SISTEM
  • 19. Model prototipskog razvoja
    • Model prototipskog razvoja se najčešće upotrebljava i daje solidne rezultate u situacijama:
      • kada su od strane korisnika samo uopšteno definisani ciljevi razvoja softverskog proizvoda, ali ne i detalji u pogledu ulaza, procedura i izlaza,
      •  kada je moguće simulirati rad softvera da bi korisnik mogao videti kako će budući softverski proizvod funkcionisati i
      • kada same razvojne organizacije žele proveriti efikasnost algoritama ili adaptibilnost sistema
    • Model uobičajeno može imati tri oblika:
      • prototip u obliku papira koji opisuje vezu čoveka i mašine na način da korisniku omogući razumevanje tog odnosa,
      • radni prototip koji implementira neke od funkcija postavljenih kao zahtevi softverskom proizvodu ili
      • realni program koji izvršava deo ili celinu zahtevanih funkcija
  • 20. Model prototipskog razvoja - nedostaci
    • Korisnik uočava radnu verziju softvera neznajući na koji su način delovi softvera međusobno povezani, neznajući da u brzini realizacije nisu razmatrani aspekti kvaliteta ili održavanja u dužem vremenskom periodu
    • Kada dođe do informacija da je potrebno izvršiti "remont" ili dalju dogradnju još ne uvedenog softverskog proizvoda, korisnik se oseća prevarenim i insistira da se putem izvesnih intervencija brzo realizuje njemu potreban proizvod. Upravljanje razvojem softvera u ovakvim situacijama postaje nekontrolisano.
    •  Projektant često čini kompromise u implementaciji sa ciljem da izgrađeni prototip što pre stavi u funkciju.
    • Neadekvatan operativni sistem ili programski jezik se jednostavno upotrebljavaju samo zato što su raspoloživi ili poznati; neefikasan algoritam se primenjuje samo da bi se demonstrirala sposobnost softvera.
    • Nakon izvesnog vremena, zaboravlja se na način odabira i njihove uzroke, pa manje idealna rešenja ili bolje rečeno manje kvalitetna rešenja ostaju inte gralni deo konačnog softverskog rešenja.
  • 21. Spiralni model start Određivanje ciljeva, varijanti i ograničenja Ocenjivanje varijanti i rizika Plan Razvoj i testiranje Varijante 2 Varijante 1 Varijante 3 Varijante 4 Organičenja 4 Organičenja 3 Organičenja 2 Organičenja 1 Analiza rizika 4 Analiza rizika 3 Analiza rizika 2 Analiza rizika 1 Prototip 3 Prototip 4 Prototip 2 Prototip 1 Plan integracije i testiranje Plan implementacije Plan razvoja Pricipi rada Zahtevi, plan razvoja Zahtevi prema softveru Validacija zahteva Dizajn softvera Validacija i verifikacija dizajna Detaljni dizajn Kodiranje Testiranje
  • 22. Spiralni model
    • Model se predstavlja spiralom na kojoj su definisane četiri faze razvoja:
      • planiranje – faza koju čine aktivnosti odrenivanja ciljeva, alternativa i ograničenja,
      • analiza rizika – faza koju čine aktivnosti analize alternativa i identifikovanja rizika,
      • inženjering – faza razvoja novih nivoa proizvoda i
      • razvoj i ocenjivanje – faza procene rezultata inženjeringa.
    • Posmatranjem spirale, svakom iteracijom se progresivno razvijaju kompletnije i potpunije verzije softvera. Tokom prvog ciklusa kretanja spiralom, prikupljaju se zahtevi i planira projekat razvoja, da bi se izvršila analiza rizika inicijalnih zahteva
    • Zahtevi I plan razvoja
    1. Opis funkcionisanja sistema na visokom nivou apstrakcije 2. Definisanje skupa zahteva 3. Generisanje dizajna sistema 4. Testiranje Validacija i verifikacija dizajna Validacija zahteva Dokument “ Principi rada ” Testiranje
  • 23. Model zasnovan na komponentama
    • Osnovni pristup u ovom modelu je konfigurisati i specijalizovati već postojeće komponente softvera u novi aplikativni sistem
    • Višestruko korišćenje softvera je proces uključivanja u novi proizvod pojedinih komponenti:
      • prethodno testiranog koda,
      • prethodno proverenog dizajna,
      •  pretnodno razvijene i korišćene specifikacije zahteva i
      • prethodno korišćenih procedura za testiranje
    • Koristi koje sobom donosi ponovno korišćenje komponenti razvijenog softvera su sledeće:
      • podiže robustnost softvera,
      •  povećava produktivnost izrade softvera,
      • povećava kvalitet softvera,
      • smanjuje troškove razvoja softvera,
      • štedi odnosno skraćuje vreme izrade,
      • zadovoljava ciljeve softverskog inženjeringa,
      •  širi korišćenje softvera,
      •  obezbenuje adekvatnu dokumentaciju,
      •  olakšava održavanje softvera,
      •  modelira sistem za lakše razumevanje i dr.
  • 24. Model unificiranog procesa razvoja
    • Ovaj model opisuje proces razvoja korišćenjem UML - objedinjenog jezika za modelovanje u objektno-orijentisanom razvoju
    • Prema autorima, model se može opisati kao proces klasificiranja iteracija, koje se mogu podeliti u 4 grupe:
      • u prvoj grupi se nalaze početne iteracije interakcija sa stekholderima, tj. značajnim učesnicima u razvoju softvera,
      • drugu grupu sačinjavaju razranene iteracije želja i potreba korisnika,
      • iteracije konstruisanja inicijalnih operacionih mogućnosti sačinjavaju treću grupu i
      • prelazne iteracije kompletiranja proizvoda su četvrta, konačna iteracija razvoja softvera prema ovom modelu.
  • 25. Agilni modeli razvoja
    • Agilne metode (Agile Alliance, 2001.) su nastale kao otpor mnogim ranijim modelima razvojnog procesa koji su pokušavali da nametnu neki oblik discipline vezane za osmišljavanje softvera, dokumentovanje, razvoj i testiranje.
    • Ideja je da se naglasi uloga fleksibilnosti u spretnom brzom razvoju softvera
    • Dominantna ideja je da timovi mogu biti efikasniji u realizaciji promena ako su u stanju da smanje vreme i troškove razmene
    4 p rincip a agilnog razvoja Za uspešnost projekta najvažniji su kvalitet ljudi koji na njemu rade i kvalitet njihove saradnje. Postupci i alati imaju sporedni značaj. Bolje je uložiti vreme u izradu softvera koji radi, nego u izradu sveobuhvatne dokumentacije. Zajednički rad sa naručiocem je vrlo važan, jer se tako naručilac uključuje u ključne aspekte razvoja. Umesto planiranja i praćenja plana, važnije je odgovarati na promene , jer se ne mogu svi zahtevi predvideti na početku razvoja.
  • 26. Kombinovani model
    • u mnogim situacijama modeli se mogu kombin ovati tako da se postignu prednosti od svih na samo jednom projektu.
    • Spiralni model je i sam primer dobre kombinacije dva modela, ali i drugi modeli mogu poslužiti kao osnova na koju će se integrisati neki modeli.
  • 27. Extreme programming (XP)
    • Ekstremno programiranje , XP (eXtreme Programming), (Beck, 1999.) predstavlja skup tehnika za omogućavanje kreativnosti projektnog tima uz minimizovanje prekomernog administriranja
      • Zasnovana je na jednostavnosti, komunikaciji, feedbacku i hrabrosti.
      • Timovi koriste jednostavnu formu planiranja i praćenja kako bi odlučili šta sledeće da rade.
      • Timovi kreiraju softver u seriji malih , potpuno integrisanih izdanja koja su prošla sve testove koje je korisnik definisao.
    Karakteristike agilnosti Jednostavnost Odvažnost Povratna sprega Komunikacija
  • 28. Faktori XP-a
    • Faktori XP-a
    Faktori XP-a Igra planiranja . Generišu se mape svih budućih verzija (šta sadrže i rokovi isporuke). Male verzije . Funkcije su dekomponovane na male delove koji se isporučuju, a zatim proširuju. Koriste se inkrementalni i iterativni ciklusi. Metafora. Pojektni tim se usaglašava oko zajedničke vizije rada sistema. Jednostavan dizajn.Tretiraju se samo aktuelne potrebe. Testovi pre kodiranja . Funkcionalne testove definiše naručilac, a izvršava tim. Testove delova realizuje tim radi verifikacije. Prerađivanje koda. Promena zahteva primorava tim da preispita postojeća rešenja. Ovo je najveći problem. Kolektivna svojina. Svaki učesnik može da izmeni bilo koji deo sistema, dok je on u fazi razvoja. Neprekidna integracija. Rade se dnevne ili satne isporuke. Naglasak na malim inkrementima poboljšanja. Održiv korak. Umorni ljudi više greše. Sugeriše se 40 sati nedeljno rada. Ako to nije dovoljno, nešto nije u redu (rokovi ili resursi). Naručilac raspoloživ na terenu. Standardi kodiranja. Insistira se na njima zbog boljeg razumevanja u timu. Programiranje u paru.
  • 29. Pregled i evaluacija softverskog proizvoda
  • 30. Pregled i evaluacija softverskog proizvoda
    • U kritičnim tačakama projekta, procenjuje se sveukupni napredak ka postizanju zacrtanih ciljeva i zadovoljavanje zahteva zainteresovanih strana
    • Slično tome, procenjuje se delotvornost celokupnog procesa do zacrtanog datuma, uključenog osoblja kao i alata i metoda koje se preduzimaju tokom razvoja
      • Utvrđivanje ispunjenja zahteva
      • Razmatranje i vrednovanje performansi
      • Zaključenje projekta
      • Utvrđivanje zaključivanja projekta
      • Aktivnosti pri zaključivanju
      • Merenje softverskog inženjerstva
      • Uspostavljanje i održavanje posvećenosti merenju
      • Planiranje procesa merenja
      • Sprovođenje procesa merenja
      • Evaluacija merenja
  • 31. Izazovi pri izradi softvera Svaki problem se može rešiti na više načina. Oni se razlikuju po efikasnosti, preciznosti, mogućnosti modifikovanja, korisnosti, razumljivosti i drugim osobinama. Stoga pisanje softvera zahteva znanje, ali I domišljatost i veštinu . Haker Softverski inženjer Ume da napiše kod koji nešto radi . Ume da proizvede sveobuhvatan stabilan i razumljiv kod koji se lako održava i koji efikasno radi ono zbog čega je napravljen. Taj kod predstavlja visoko kvalitetan softver .
  • 32. Hvala na pa žnji 