270 likes | 518 Views
Razvoj softvera. Software evolution. Sanja Petrovi ć 1110/2012. Uvod u razvoj softvera. Ovde ćemo govoriti zašto je razvoj softvera bitan deo softverskog inženjerstva i objasniti procese razvoja softvera
E N D
Razvojsoftvera Software evolution SanjaPetrović 1110/2012
Uvod u razvojsoftvera • Ovde ćemo govoriti zašto je razvoj softvera bitan deo softverskog inženjerstva i objasniti procese razvoja softvera • Bitno je napomenuti da razvoj softvera ne prestaje nakon njegove isporuke već se on nastavlja tokom čitavog životnog ciklusa softvera • Razvoj softvera je veoma bitan jer kompanije ulažu velike količine novca u njiž s obzirom da uglavnom dosta zavise od tog softvera • Takodje mnogo više novca se ulaže u održavanje tog softvera nego u sam razvoj softvera
Razvojsoftveramože bitipokrenutusledizmeneposlovnihzahteva, prilikompojavegrešaka u radusoftverailipromenomsistemanakojem se radi • Kvalitetniikorisnisoftveriuglavnomimaju dug život. Sistemiobicnokoštajudostanovca pa kompanijeteže ka tome da ihšto duže koristekako bi se ulaganjaisplatila
O razvojusoftvera treba da razmišljamokaospiralnomprocesukojipodrazumevazahteve, dizajn, implementacijeitestiranjakoji se dešavajutokomživotnogvekasistema. • Počinjemotakošto pravimoprvoizdanjesistema. • Kada je jednomisporučen, izmene isporučenogizdanjakaoirazvojdrugogizdanjakreću istovremeno. • Potrebazarazvojemmože da se javiipre negošto se sistemisporučišto može dovesti do toga da nekakasnijaizdanjasoftverabudu u fazirazvojaipre negošto je tekuća verzijaobjavljena.
Ovaj model razvojasoftverapodrazumeva da je jednaorganizacijaodgovornaizapočetnirazvojsoftverakaoizakasnijirazvoj • Kupac softveramože napravitidogovorsa nekomdrugomkompanijomkojaće kasnijevršitiodržavanjeirazvojsistema, u ovomslučajuoni bi prekinulitajspiralniproces • Procesmenjanjasoftveranakonisporuke se čestonaziva “održavanjesoftvera”
RajlichiBannett (2000) uvodenovipoglednaodvijanjerazvojasoftvera. U ovommodelu, onipraverazlikuizmeđu razvojaiservisiranja. • Razvoj je fazakojapodrazumevaznačajnepromenekojemogu da se obavenasoftveru. • Servisiranjeje faza u kojoj se vrše neke male, suštinskepromene. • Prilikomrazvoja, softver se uspešno koristiipostojikonstantantokizvršavanja promena na na njemu
Procesrazvojasoftvera • Procesrazvojasoftveradostazavisi od vrstesoftverakoji se održava, procesakoji je korišćen zarazvoj tog softveraiod veštine ljudikojisuuključeniu procesrazvijanja • Predlozipromenasistemasuputokaz u razvojusistema u svimorganizacijama • Procesuočavanjapromenairazvojasistema je cikličan inastavlja se krozživotniveksistema • Arthur (1988) – proces razvoja softvera
Velika razlikaje ta da prvistadijumimplementacijepromena na softverumože da dovede do proučavanjaprograma, pogotovuakoprvobitnirazvijaocsistemanijeodgovoranzaimplementacijupromena • Razumevanjeprograma je neophodno da bi bilisigurni da implementiranapromenaneće prouzrokovatinoveproblemekada se uključiu sistem • Tokomprocesarazvoja, zahtevi se analiziraju do detaljai nekada jepotrebnorazgovaratisaklijentom pre negosto se promene implementiraju
Zahtevizapromenama se nekadodnosenasistemskeproblemekoje je potrebnohitnoresavati. U ovimslučajevimamožda nećemobiti u mogućnostida pratimoprocesformalneanalizepromena • Opasnost je ta što zahtevi, dizajnsoftveraikod ne ostaju u skladu • Ovde se uvek birabrže iefektivnijerešenjenegonajboljemoguće svedok je sistem u kritičnojfazi • Ovoubrazavaprocesstarenjasoftveratako da kasnijepromenepostajusvekomplikovanijeiodržavanjesistemapostajeskuplje
Agilnemetodeiprocesise mogukoristitizarazvojprograma • Problemise mogujaviti u situacijamakada se vršipredajasoftvera od timakojinapraviosoftvertimukojiučestvujeu kasnijemrazvoju tog softvera • stvaralačkitimkoristiagilnipristup,a razvojnitimne • zaizradusoftvera sekoristipristupzasnovannaplaniranju, a za kasniji razvoj agilne metode
Dinamikarazvojaprograma • Dinamikarazvojaprograma je studija o promenamasistema • Lehman iBeladysusprovelinekolikoempirijskistudija o promenisistemasaciljem da što više uzmu u obzirkarakteristikerazvojasoftvera • Iz ovih studija potekli su „Lehmanovizakoni“
Prvizakonkaže da je održavanjesistemaneizbežan proces • Drugizakonkaže da ako je sistempromenjen, njegovastruktura je degradirana • Trećizakon je najzanimljiviji. Predlaže da velikisistemiimajusopstvenudinamikukoja je osnovana u ranojfazirazvoja • Lehmanovčetvrtizakongovori o tome dapromenaresursailipromenaosobljaimaminimalanefekatnadugoročan razvojsistema • Lehmanovpetizakongovori da što se više funkcionalnostidodajeviše je iproblemakojinastajuikoji se morajurešiti • Seštiisedmizakonsusličniiu suštinikažu da će korisnicisoftverabitijakonesrećnisvedok je softver u fazirazvojaidok se dodajunovefunkcionalnosti
Održavanjesoftvera • Održavanjesoftverapodrazumevapromenesistemanakonnjegovogisporučivanja. • Promenenasoftverumogubitipromenekojesu se pojavile u koduprilikomkodiranja, maloveća promenabi bilapromena u dizajnu, promeneradiispravljanjagrešaka u specifikacijiilipromeneusledubacivanjanovihzahteva • Promene se implementirajumenjajućipostojećisistemigde je to potrebno, dodavanjenovihkomponenata u sistem
Postoje tri različitatipaodržavanjasistema: • Popravkegrešaka- jeftinezakorekciju • Adaptacijanaokruženje- kada ne postojiskladsasistemskimokruženjemkaošto je hardver • Dodavanjefunkcionalnosti- kadadođe do promena u sistemskimzahtevima • Softverskegreškesučestapojavajerkorisnicičestokoristesofvernanekineočekivaninačin. Promenasistemakakobi seolakšaorad nanjimaje najboljinačin zarešavanjeovihproblema.
Rad tokomrazvojasoftverana tome da softveručinimolakšimzarazumevanjeimenjanjenajverovatnijedovodi do kasnijegsmanjenjatroškovaprilikomrazvoja • To je razlogzarefaktorisanje u agilnomrazvoju. • Bezrefaktorisanjakodpostajesveviše i više komplikovaniskupzapromene • U razvojuzasnovanomnaplaniranjurealnost je da je dodatnoulaganje u poboljšanjekodavrloretkoprilikomrazvoja
Obično je mnogoskupljedodavatifunkcionalnostikada je sistemvećisporučen: • Stabilnosttima • Loša praksarazvoja • Starostprogramaistruktura • Veštine osoblja
Prognozeodržavanja • Što suprogramikompleksniji to je skupljekasnijeodržavanjesistema • Kako bi se smanjilitroskoviodržavanjatreba se truditi da kompleksnedeloveprogramazamenimomanjekompleksnimalternativama • Nakonšto sistempustimo u korišćenje, možemoiskoristiti to da pogledamorezultateradakako bi predvideliprocesodržavanjasistema
Softverskireinženjering • Mnogisistemi, pogotovustarijisistemi, suteškizarazumevanjeimenjanje • Kako bi učinilida starijisoftveribudulakšizaodržavanje, možemose bavitireinženjeringomovihsistemainatajnačin unapreditinjihovustrukturuirazumljivost • Reinženjeringmože obuhvatitipreuređivanjedokumentacije, refaktorisanjearhitekturesistema, prevođenjeprogramanamoderneprogramskejezikeimodifikacijui ažuriranjestruktureivrednostisistemskihpodataka
Prednostireinženjeringau odnosunazamenusoftvera: • Smanjenaopasnost • Smanjenitroškovi • Ulaz u procesuglavnomobuhvatanekistarisoftver, dokizlazizprocesaobuhvataistitajsoftversamopoboljšan
Osnovnikoraci u reinženjeringu: • Prevođenjeizvornogkoda • Prepravljanjesoftvera • Unapređivanjeprogramskestrukture • Rekonstruisanjepodataka • Programskireinženjeringne morasadržatisveprethodnonavedenekorake • Problem kodsoftverskogreinženjeringaje tajšto postojegranice u tome kolikomožemoda unapredimosistemkoristeći inženjering
Preventivnoodržavanjesistemarefaktorisanjem • Refaktorisanje je procesuvođenjapoboljšanja u sistemradiusporavanjadegradacijeprilikompromena. To podrazumevamodifikovanjeprogramakako bi se unapredilanjegovastruktura, kako bi se smanjilanjegovakompleksnostilikako bi gaučinilijednostavnijimzarazumevanje • Refaktorisanjenanekinačin smanjujeprobleme u budućimizmenama • Refaktorisanje je kontinuiranprocesunapređivanjazavremerazvojasoftvera • Refaktorisanje je sastavnideoagilnihmetodaaline zavisi od drugihagilnihmetodaimože se primenitibilogde
Primerikoda “kojismrdi” a koji se može unapreditirefaktorisanjem: • Ponavljajućikod • Dugačkimetodi • Switch-case naredba • Lanciporuka (data clumping) • Spekulativnouopštavanje
Upravljanjezastarelimsistemom • Mnogefirmeimajujošuvekzastarelesistemezakojeimajuograničene budžetezaodržavanjeiunapređivanjesistema. • Postoje4 strategijskemogućnosti za unapređenje ovih sistema: • Uništitisistemkompletno • Ostavitisistemneizmenjenikrenutisaregularnimodržavanjem • Rekonstruisanjesistemakako bi se unapredilonjegovoodržavanje • Zamenitideoiliceostarisistemnovimsistemom
KadaprocenjujemostarisistemmoramogaposmatratiizposlovneitehničkeperspektiveKadaprocenjujemostarisistemmoramogaposmatratiizposlovneitehničkeperspektive • Tada kombinujemoposlovnevrednostiikvalitetsistemakako bi lakše odlučilišta da radimosazastarelimsistemom • Loškvalitet, niskaposlovnavrednost • Loškvalitet, visokaposlovnavrednost • Visokkvalitet, niskaposlovnavrednost • Visokkvalitet, visokaposlovnavrednost
Kako bi proceniliposlovnuvrednostsistemaneophodno je odreditiakteresistema, kaostosukrajnjikorisniciinjihovimenadžeriipostavitiimserijupitanja o sistemu • Koliko je sistemkoristan • Kojeposlovneprocesesoftverpodrzava • Pouzdanostsistema • Rezultatiradasistema
Kako bi procenilitehničkikvalitetaplikativnogsistemamoramoproučitinizfaktorakoji se prvenstvenoodnosenapouzdanost, kompleksnostodržavanjasistemakaoinanjegovudokumentaciju • Podacikojimogubitikorisni u procenikvaliteta: • Brojzahtevazaizmenusistema • Brojkorisnickihinterfejsa • Kolicinapodatakakojekoristisistem