programski inženiring

40
Programski Programski inženiring inženiring (Software Engeneering) (Software Engeneering)

Upload: nusa

Post on 04-Jan-2016

88 views

Category:

Documents


1 download

DESCRIPTION

Programski inženiring. (Software Engeneering). Dejansko stanje – posledica programskega NEINŽENIRINGA!!!. sprememba. Stopnja napak. Idealna krivulja. Čas. Programsko inženirstvo. Kaj je SWE? (a spet teorija) Zakaj SWE? (kako bi bilo, če bi se temu izognili) SWE da ali ne? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programski inženiring

Programski inženiringProgramski inženiring

(Software Engeneering)(Software Engeneering)

Page 2: Programski inženiring

Programsko Programsko inženirstvoinženirstvo

Kaj je SWE? (a spet teorija)Kaj je SWE? (a spet teorija)Zakaj SWE? (kako bi bilo, če bi se temu izognili)Zakaj SWE? (kako bi bilo, če bi se temu izognili)

SWE da ali ne?SWE da ali ne?

Izhodišče: ali ti je všeč, da je SW tako buggy in hkrati tako Izhodišče: ali ti je všeč, da je SW tako buggy in hkrati tako drag?drag?

Stopnja napak

Čas

Idealna krivulja

Dejansko stanje – posledica programskega

NEINŽENIRINGA!!!sprememba

Page 3: Programski inženiring

33

Programsko inženirstvoProgramsko inženirstvo(software engineering – SWE)(software engineering – SWE)

BoehmBoehm:: SWE je praktična uporaba računalnišSWE je praktična uporaba računalništva, informatike, tva, informatike, managementa in drugih znanosti za analizo, načrtovanje, konstrukcijo managementa in drugih znanosti za analizo, načrtovanje, konstrukcijo in vzdrževanje programske opreme in pridružene dokumentacijein vzdrževanje programske opreme in pridružene dokumentacije

Dennis: Dennis: SWE je uporaba principov, veščin in umetnosti pri SWE je uporaba principov, veščin in umetnosti pri načrtovanju in konstruiranju programov in programskih sistemov.načrtovanju in konstruiranju programov in programskih sistemov.

Parnas: Parnas: SWE je programiranje, če je izpolnjen vsaj en od SWE je programiranje, če je izpolnjen vsaj en od naslednjih dveh pogojev:naslednjih dveh pogojev:– V razvoj programa je vključena več kot ena osebaV razvoj programa je vključena več kot ena oseba– Proizvedena bo več kot ena verzija programaProizvedena bo več kot ena verzija programa

Fairley:Fairley: SWE je tehnološka in managerska disciplina, ki se ukvarja SWE je tehnološka in managerska disciplina, ki se ukvarja s sistematično proizvodnjo in vzdrževanjem programskih izdelkov, ki so s sistematično proizvodnjo in vzdrževanjem programskih izdelkov, ki so razviti in prilagojeni pravočasno in sicer v okviru načrtovanega razviti in prilagojeni pravočasno in sicer v okviru načrtovanega proračuna (stroškov).proračuna (stroškov).

D E F I N I C I J E (opredelitev)

Page 4: Programski inženiring

44

Programsko inženirstvo Programsko inženirstvo (nad.)(nad.)

Pomberger & Blaschek: Pomberger & Blaschek: SWE se praktična uporaba SWE se praktična uporaba znanosti za ekonomično produkcijo in uporabo visoko kakovostne znanosti za ekonomično produkcijo in uporabo visoko kakovostne programske opreme.programske opreme.

‘‘Po domače’: Po domače’: SWE uporaba tehničnih in ne-tehničnih znanj SWE uporaba tehničnih in ne-tehničnih znanj pri razvoju, obratovanju in vzdrževanju programske opreme, s pri razvoju, obratovanju in vzdrževanju programske opreme, s katero so zadovoljni uporabniki in razvijalci.katero so zadovoljni uporabniki in razvijalci.

Okolje programskega inženirstva Okolje programskega inženirstva – sistem računalnikov, podporne programske opreme, pripomočkov, procedur sistem računalnikov, podporne programske opreme, pripomočkov, procedur

in podpornega osebje, ki razvijalcem programske opreme zagotavlja in podpornega osebje, ki razvijalcem programske opreme zagotavlja potrebne pogoje, avtomatizacijo procesov, metodologije in orodja.potrebne pogoje, avtomatizacijo procesov, metodologije in orodja.

D E F I N I C I J E (opredelitev)

Page 5: Programski inženiring

55

Problemi razvoja velikih Problemi razvoja velikih programskih sistemovprogramskih sistemov

Pravilnost oz. nepredvidljiva kakovost končnega produktaPravilnost oz. nepredvidljiva kakovost končnega produkta Učinkovitost oz nizka produktivnost osebja in skupinUčinkovitost oz nizka produktivnost osebja in skupin Obvladovanje kompleksnosti sistemaObvladovanje kompleksnosti sistema Zanesljivost sistemaZanesljivost sistema Fleksibilnost sistemaFleksibilnost sistema Slaba / pomanjkljiva dokumentacijaSlaba / pomanjkljiva dokumentacija Slabo vodenje / organizacija projektovSlabo vodenje / organizacija projektov Predolgi razvojni cikliPredolgi razvojni cikli Pomanjkanje Pomanjkanje kadra za razvoj programske opremekadra za razvoj programske opreme Visoki stroški razvojaVisoki stroški razvoja Visoki stroški vzdrževanjaVisoki stroški vzdrževanja

POSLEDICEPOSLEDICE Astronomska cena programskih rešitevAstronomska cena programskih rešitev Nezadovoljni uporabnikiNezadovoljni uporabniki Nezadovoljni razvijalciNezadovoljni razvijalci

Page 6: Programski inženiring

66

Vzroki za probleme pri Vzroki za probleme pri razvoju SWrazvoju SW

Proces razvoja je v teoriji in praksi še vedno relativno slabo opredeljen Proces razvoja je v teoriji in praksi še vedno relativno slabo opredeljen (?ali pa enostavno ne poznamo teorije?)(?ali pa enostavno ne poznamo teorije?)

Uporaba zastarelih/ lastnih improviziranih metod razvijanja ISUporaba zastarelih/ lastnih improviziranih metod razvijanja IS

Nezadostna uporaba računalniške podpore pri razvijanju ISNezadostna uporaba računalniške podpore pri razvijanju IS

Pomanjkljivo metodološko znanje razvijalcev ISPomanjkljivo metodološko znanje razvijalcev IS

Nezadostno upoštevanje Nezadostno upoštevanje dejstva, da informacijski procesi in sistemi za dejstva, da informacijski procesi in sistemi za različne ravni in načine upravljanja zahtevajo različne metode različne ravni in načine upravljanja zahtevajo različne metode njihovega razvijanjanjihovega razvijanja

Page 7: Programski inženiring

77

Atributi kakovosti SWAtributi kakovosti SW

Atributi kakovosti SW

Pravilnost Prijaznost UčinkovitostMožnost

vzdrževanjaPortabilnost

Primernost Učljivost Berljivost Razširljivost

Možnosttestiranja

Robustnost

Page 8: Programski inženiring

88

Glavni vzroki za (ne)uspeh Glavni vzroki za (ne)uspeh SWSW

Zahteve uporabnikov so napačno ali le delno zbrane;

Zahteve uporabnikov se prepogosto spreminjajo;

Uporabniki niso pripravljeni dajati zadostne resurse projektom IT;

Uporabniki ne želijo sodelovati z razvijalci Uporabniki imajo nerealna pričakovanja Sistem ni več pomoč / benefikacija za

uporabnike; Razvijalci ‘niso kos’ svoji nalogi.

Page 9: Programski inženiring

99

Dobri načrti so delo dobrih Dobri načrti so delo dobrih načrtovalcevnačrtovalcev

Najeti najboljše načrtovalce Načrtovalcem zagotoviti permanentno

izobraževanje in ispopolnjevanje; Podpirati izmenjavo informacij in znanj ter

interakcijo med načrtovalci; Motivirati načrtovalce (odstraniti ovire) in

usmeriti njihove napore v produktivno delo; Ponuditi dobro delovno okolje Uskladiti cilje posameznikov z strategijo in

cilji organizacije Dati poudarek na timskem delu

Page 10: Programski inženiring

1010

Mere za zagotavljanje kakovosti Mere za zagotavljanje kakovosti SWSW

KonstruktivneKonstruktivne– Dosledna uporaba metod v vseh fazah razvojnega procesaDosledna uporaba metod v vseh fazah razvojnega procesa– Uporaba ustreznega razvojnega orodjaUporaba ustreznega razvojnega orodja– Razvoj SW na osnovi visoko kakovostnih pol-produktovRazvoj SW na osnovi visoko kakovostnih pol-produktov– Dosledno pisanje/vzdrževanje razvojne dokumentacijeDosledno pisanje/vzdrževanje razvojne dokumentacije

AnalitičneAnalitične– Statična analiza programaStatična analiza programa– Dinamična analiza programaDinamična analiza programa– Sistematično izbiranje testnih primerovSistematično izbiranje testnih primerov– Konsistentno beleženje rezultatov analizKonsistentno beleženje rezultatov analiz

OrganizacijskeOrganizacijske– Nenehno (permanentno) izobraževanje razvijalcevNenehno (permanentno) izobraževanje razvijalcev– Institucionalizacija zagotavljanja kakovosti (uvedba standardov ISO, ANSI, Institucionalizacija zagotavljanja kakovosti (uvedba standardov ISO, ANSI,

IEEE…)IEEE…)

Page 11: Programski inženiring

1111

Večplastnost programskega Večplastnost programskega inženirstvainženirstva

Orodja

Metode

Usmerjenost na procese

Usmerjenost na kakovost

Page 12: Programski inženiring

1212

Življenjski cikel programske Življenjski cikel programske opremeopreme

(SDLC - System Development Life Cycle)(SDLC - System Development Life Cycle)

Page 13: Programski inženiring

1313

Življenjski cikelŽivljenjski cikel prične se z zasnovo in konča z vzdrževanjem pri prične se z zasnovo in konča z vzdrževanjem pri

uporabnikuuporabniku razvojni proces razvojni proces razčlenimorazčlenimo na zaporedje medsebojno na zaporedje medsebojno

odvisnih aktivnosti, ki temeljijo na začetnih potrebah po odvisnih aktivnosti, ki temeljijo na začetnih potrebah po izdelavi uporabnega produktaizdelavi uporabnega produkta

zakaj “cikel" - vsak razviti produkt generira nove potrebezakaj “cikel" - vsak razviti produkt generira nove potrebe

Definicija (standard ANSI/IEEE Std 792-1983):– življenjski cikel programske opreme = nabor diskretnih

aktivnosti v času razvoja programske opreme in programskih sistemov

– faza življenjskega cikla = čas izvajanja posameznih aktivnosti (tudi sama aktivnost)

Page 14: Programski inženiring

1414

Faze življenjskega cikla programske opreme

ProblemProblem

Analiza zahtev

Specifikacija (opredelitev)

sistema

Načrtovanje sistema in komponent

Implementacija intestiranje komponent

Testiranje sistema

Delovanje invzdrževanje

Page 15: Programski inženiring

1515

Faze življenjskega ciklaFaze življenjskega cikla1. analiza zahtev1. analiza zahtev

vključuje:vključuje:analiziranje programskega problema analiziranje programskega problema (funkcionalen opis) in (funkcionalen opis) in specifikacijspecifikacijee želenega obnašanja grajenegaželenega obnašanja grajenega sistema (funkcionalne zahteve in specifikacije) sistema (funkcionalne zahteve in specifikacije) rezultat:rezultat:Software Requirements SpecificationsSoftware Requirements Specifications oz. oz. Specifikacije Zahtev Specifikacije Zahtev PProgramske rogramske OOpremepreme

SZPO opisujeSZPO opisuje: : funkcionalne zahteve, znafunkcionalne zahteve, značčilnosti strojnega okolja, obliko ilnosti strojnega okolja, obliko uporabniških vmesnikov in performanuporabniških vmesnikov in performanččne cilje oz. zahtevane zmogljivostine cilje oz. zahtevane zmogljivosti

Page 16: Programski inženiring

1616

Faze življenjskega ciklaFaze življenjskega cikla1. analiza zahtev (nad.)1. analiza zahtev (nad.)

aaktivnosti faze ktivnosti faze analize loanalize loččimo v imo v 22 skupini: skupini: analizanalizaa problema problema

– rrezultat ezultat = = popolno razumevanje problemskega podropopolno razumevanje problemskega področčjajaopis produktaopis produkta

– rezultat = rezultat = skladen in kompleten dokument programskih specifikacijskladen in kompleten dokument programskih specifikacijaktivnosti obeh skupin ne izvajamo zaporedno, temveaktivnosti obeh skupin ne izvajamo zaporedno, temvečč so soččasnoasno

v tej fazi v tej fazi odgovorimo na vprašanje: odgovorimo na vprašanje: KAJKAJ POTREBUJEMOPOTREBUJEMO oz.oz. kaj naj bi grajeni programski sistem zagotavljal kaj naj bi grajeni programski sistem zagotavljal

Page 17: Programski inženiring

1717

Faze življenjskega ciklaFaze življenjskega cikla2. načrtovanje2. načrtovanje

vključuje:vključuje:preliminarno načrtovanjepreliminarno načrtovanje – – dekompozicijdekompozicijaa (razčenitev) (razčenitev) programskega programskega sistema v njegove dejanske konsistentne komponentesistema v njegove dejanske konsistentne komponente in in interaktivninteraktivna a razgradrazgradnjanja te tehh komponent v vedno manjše podkomponente, dokler niso dovolj komponent v vedno manjše podkomponente, dokler niso dovolj majhne, da jih lahko ljudje brez težav razumejomajhne, da jih lahko ljudje brez težav razumejovvsak modul je dokumentiransak modul je dokumentiran - - opisani opisani so so vhodi, izhodi in funkcije. vhodi, izhodi in funkcije. podrobno načrtovanje podrobno načrtovanje – za vsak modul – za vsak modul definiramo in dokumentiramo definiramo in dokumentiramo algoritme algoritme podrobno načrtovanje podrobno načrtovanje – za vsak modul – za vsak modul definiramo in dokumentiramo definiramo in dokumentiramo algoritme algoritme rezultati:rezultati:

– modularnmodularnaa razgradnj razgradnjaa– definicijdefinicijaa strukture podatkov strukture podatkov– definicijdefinicijaa formata datotek formata datotek– opis pomembnejših algoritmovopis pomembnejših algoritmov

v tej fazi odgovorimo na vprašanje: v tej fazi odgovorimo na vprašanje: KAKAKO KO oz.oz. ka kako bomo zadovoljili identificirane zahteve oz. obnašanje sistemako bomo zadovoljili identificirane zahteve oz. obnašanje sistema

Page 18: Programski inženiring

1818

Faze življenjskega ciklaFaze življenjskega cikla2. načrtovanje (nad.)2. načrtovanje (nad.)

rezultat:rezultat:– modularnmodularnaa razgradnj razgradnjaa– definicijdefinicijaa strukture podatkov strukture podatkov– definicijdefinicijaa formata datotek formata datotek– opis pomembnejših algoritmovopis pomembnejših algoritmov

v tej fazi odgovorimo na vprašanje: v tej fazi odgovorimo na vprašanje: KAKAKO KO

oz.oz. ka kako bomo zadovoljili identificirane zahteve oz. ko bomo zadovoljili identificirane zahteve oz. obnašanje sistemaobnašanje sistema

Page 19: Programski inženiring

1919

Faze življenjskega ciklaFaze življenjskega cikla3. implementacija3. implementacija

iizvedemo kodiranjezvedemo kodiranjetransformacijtransformacijaa algoritmov v ra algoritmov v raččunalniku razumljiv jezikunalniku razumljiv jeziktestiramo in testiramo in ččistimo napake istimo napake vsakega modula, specificiranega pri vsakega modula, specificiranega pri nanaččrtovanjurtovanju

Page 20: Programski inženiring

2020

Faze življenjskega ciklaFaze življenjskega cikla4. testiranje in integracija4. testiranje in integracija

testiranje posameznih modulovtestiranje posameznih modulovosredotoosredotoččimo na del programa, da lažje ugotovimo in odimo na del programa, da lažje ugotovimo in odsstranimo napaketranimo napakekkontroliramo tudi obnašanje modula glede na podane specifikacijeontroliramo tudi obnašanje modula glede na podane specifikacije ((funkcionalno testiranjefunkcionalno testiranje))integracijsko testiranjeintegracijsko testiranježe stestirane module že stestirane module integriramo oz. povežemo integriramo oz. povežemo ((združimozdružimo) ) v enotno v enotno programsko strukturo ter jih testiramo programsko strukturo ter jih testiramo ((testiranje programskih komponent)testiranje programskih komponent)sistemsko testiranjesistemsko testiranjepreverimo, preverimo, ali ali se celoten programski sistem, postavljen v dolose celoten programski sistem, postavljen v določčeno strojno eno strojno okolje, obnaša ustrezno podanim specifikacijam zahtev programske opremeokolje, obnaša ustrezno podanim specifikacijam zahtev programske opreme

Page 21: Programski inženiring

2121

Faze življenjskega ciklaFaze življenjskega cikla5. prenos v ciljno okolje / uporaba5. prenos v ciljno okolje / uporaba

izroizročičimo programsko mo programsko in in pripadajopripadajoččo strojno opremoo strojno opremo začne se uporaba sistemazačne se uporaba sistema

6. vzdrževanje6. vzdrževanje

7. umik iz uporabe

neprestano iskanje napak in njihovo odstranjevanjeneprestano iskanje napak in njihovo odstranjevanje razširitev sistemarazširitev sistema

Page 22: Programski inženiring

2222

Modeli življenjskega Modeli življenjskega ciklacikla

Klasični pristopi:Klasični pristopi: SLAM-DUNK modelSLAM-DUNK model BAROBAROČČNI modelNI model KASKADNI modelKASKADNI model KASKADNI model, razširjen s prototipno komponentoKASKADNI model, razširjen s prototipno komponento SPIRALNI modelSPIRALNI model

Objektni pristopi:Objektni pristopi: Unified ProcessUnified Process

Page 23: Programski inženiring

2323

Slam- dunk modelSlam- dunk model

najbanalnejši in najpogosteje uporabljen modelnajbanalnejši in najpogosteje uporabljen model izrazito izrazito negativennegativen primer primer na zana začčetku se zaetku se začčne tudi kodiranjene tudi kodiranje filozofija uporabnika metodefilozofija uporabnika metode:: preprosteje je kodirati, odkrivati in popravljati preprosteje je kodirati, odkrivati in popravljati

napake kot pa izgubljati napake kot pa izgubljati ččas z "znanostjo"as z "znanostjo" - - psihološko ozadjepsihološko ozadje obobččutek, da lahko brez natanutek, da lahko brez natanččne razgradnje pristopimo k realizaciji, saj ne razgradnje pristopimo k realizaciji, saj

imamo "vse v glavi"imamo "vse v glavi" ttakšne projekte imenujemo tudi "kmalu bo gotovo", zanje pa je znaakšne projekte imenujemo tudi "kmalu bo gotovo", zanje pa je značčilno, da ilno, da

vedno vedno zamujajozamujajo ali pa nikoli niso gotovi ali pa nikoli niso gotovi

Page 24: Programski inženiring

2424

Baročni modelBaročni model

vnaša disciplino v prej opisan "slam-dunk" modelvnaša disciplino v prej opisan "slam-dunk" model bbistvo modelaistvo modela: : predhodna faza predhodna faza se se konkončča pred naslednjo fazo a pred naslednjo fazo - t- ta model a model

lahko imenujemo tudi "lahko imenujemo tudi "etapni modeletapni model"" barobaroččni model uzakonjuje ni model uzakonjuje pretirano disciplinopretirano disciplino zahteve zahteve so so vedno spreminjajovedno spreminjajoččee => =>paradoks, faza analizeparadoks, faza analize se se nikoli ne nikoli ne

konkonččaa vv realni okvir lahko ta proces spravimo le tako, da se fazi analize in realni okvir lahko ta proces spravimo le tako, da se fazi analize in

snovanja delno prekrivatasnovanja delno prekrivata barobaroččni model enostavno ne delujeni model enostavno ne deluje,, ker razvoj programske opreme ni ker razvoj programske opreme ni

deterministideterminističčen procesen proces tata model model je je prispeval k razvoju realnejšega "kaskadnega" modelaprispeval k razvoju realnejšega "kaskadnega" modela

Page 25: Programski inženiring

2525

Kaskadni modelKaskadni model

Analiza (KAJ?)

Načrtovanje (KAKO?)

Implementacija (NAREDI)

Testiranje (PREIZKUSI)

Prenos v ciljno okolje

Uporaba in vzdrževanje

Pomanjkljivost: predolg čas porabljen od začetka do implementacije.

Rešitev – uporaba prototipov

Page 26: Programski inženiring

2626

PrototipiranjePrototipiranjeCilji prototipiranja:Cilji prototipiranja:

– oddaljiti se od stroge zaporednostioddaljiti se od stroge zaporednosti– pospešiti odzivni časpospešiti odzivni čas– zmanjšati tveganje za stranko in razvijalcazmanjšati tveganje za stranko in razvijalca– cenenost in hitrostcenenost in hitrost– nepopolno, vendar da nazorne rezultatenepopolno, vendar da nazorne rezultate

PrototipPrototip - delna implementacija sistema, narejena s - delna implementacija sistema, narejena s primarnim namenom, da omogoči uporabniku, stranki ali primarnim namenom, da omogoči uporabniku, stranki ali razvijalcu čim lažjo razvijalcu čim lažjo seznanitev s problemom ali njegovo seznanitev s problemom ali njegovo rešitvijorešitvijo.. (A. Davis (A. Davis))

Page 27: Programski inženiring

2727

Metodi prototipiranjaMetodi prototipiranjametoda zavračanjametoda zavračanja ( (throw-awaythrow-away))

–ustrezna za raziskovalne in eksperimentalne prototipeustrezna za raziskovalne in eksperimentalne prototipe–zgradimo hiter in robustenzgradimo hiter in robusten ((quick-and-dirtyquick-and-dirty) prototip) prototip, ki ga , ki ga predstavimo predstavimo uporabnikom z namenom, da skupaj z njimi:uporabnikom z namenom, da skupaj z njimi:

ugotovimougotovimo izvedljivost želja izvedljivost želja (zahtev)(zahtev) potrdimo potrebnost oz. nujnost posameznih funkcijpotrdimo potrebnost oz. nujnost posameznih funkcij odkrijemo manjkajočeodkrijemo manjkajoče ( (nepodanenepodane)) zahteve zahteve raraziščemo možnosti razvoja ustreznega uporabniškega vmesnika.ziščemo možnosti razvoja ustreznega uporabniškega vmesnika.

–po pridobitvi vsega potrebnega znanja o problemu in o rešitvah prototip po pridobitvi vsega potrebnega znanja o problemu in o rešitvah prototip zavržemo in začnemo razvijati sistemzavržemo in začnemo razvijati sistem

razvojna metodarazvojna metoda ((evolutionaryevolutionary))–ustrezna za razvojne prototipeustrezna za razvojne prototipe–sistematičen pristop pri izgradnji, prototip preraste v sam sistemsistematičen pristop pri izgradnji, prototip preraste v sam sistem

Page 28: Programski inženiring

2828

Spiralni modelSpiralni modeldoloči cilje,alternative,omejitve

ovrednoti alternative, identificiraj in zmanjšaj tveganja

razvoj&verifikacija izdelka

načrtovanje naslednje faze

analiza tv

eganja

podrobnonačrtovanje

test &instalacija

načrt zahtev

načrt razvoja

načrt izvedbe

p r o t o t i p i

zahtevesistemsko

implement

načrtovanje

principi

Page 29: Programski inženiring

2929

Analiza spiralnega modelaAnaliza spiralnega modela

– omogoča boljšo oceno tveganjaomogoča boljšo oceno tveganja– mešanica čistega strukturiranega in fleksibilnega mešanica čistega strukturiranega in fleksibilnega

prototipnega modelaprototipnega modela– podpira hitre odzive in zagotavlja kakovostpodpira hitre odzive in zagotavlja kakovost

Page 30: Programski inženiring

3030

Preverjanje rezultatovPreverjanje rezultatovVALIDACIJAVALIDACIJA preverjanje ustreznosti programskega izdelkapreverjanje ustreznosti programskega izdelka AAli gradim li gradim pravi produktpravi produkt??

VERIFIKACIJAVERIFIKACIJA preverjanje pravilnosti programskega izdelkapreverjanje pravilnosti programskega izdelka AAli gradim li gradim produkt pravilnoprodukt pravilno??

Dokaz pomena sprotnega preverjanjaRazmerje stroškov za odpravljanje napake, ki je odkrita

v fazi analize zahtev : v fazi vzdrževanja = 1 : 200

Značilno za XP (eXtreme programming)

Page 31: Programski inženiring

3131

Dva inženirska pristopaDva inženirska pristopa

RAZVOJNO INŽENIRSTVO•proizvede nov sistem in izhaja iz začetnih postavk ter danosti

OBRNJENO INŽENIRSTVO•izhaja iz sistema, ki obstaja in deluje•proces razstavitve in analize obstoječega fizičnega podatkovnega in procesnega modela IS in njegova vnovična obnovljena ali spremenjena izgradnja•vzroki: uvedba sodobnejše tehnologije ali spremenjene zahteve uporabnikov•uporaba: za vzdrževanje, izboljševanje, spreminjanje ali ažuriranje informacijskega sistema ali za celotno zamenjavo z novim sistemom

Page 32: Programski inženiring

3232

Vidiki razvoja programskih rešitevVidiki razvoja programskih rešitev

PProcesni vidikrocesni vidik => Diagram toka podatkov (DFD) => Diagram toka podatkov (DFD)oopisuje transformacije nad podatkipisuje transformacije nad podatkipoenostavljena notacijapoenostavljena notacija: : Vhod --> Proces --> IzhodVhod --> Proces --> Izhodoobravnava procesno obnašanje sistema - kako sistem pretvori vhode v izhodebravnava procesno obnašanje sistema - kako sistem pretvori vhode v izhode

Podatkovni (informacijskiPodatkovni (informacijski)) vidik vidik => Entitetno relacijski diagrami (ERD) in => Entitetno relacijski diagrami (ERD) in podatkovni slovarjipodatkovni slovarjioopisuje obliko informacij, ki jih mora sistem procesiratipisuje obliko informacij, ki jih mora sistem procesiratinakazuje medsebojne relacije med informacijskimi enotaminakazuje medsebojne relacije med informacijskimi enotaminnanaša se na strukturo in uporabo podatkov v sistemuanaša se na strukturo in uporabo podatkov v sistemu

DDogodkovni vidikogodkovni vidikoopisuje obnašanje sistema v realnem časupisuje obnašanje sistema v realnem časunnanaša se na dinamično obnašanje sistemaanaša se na dinamično obnašanje sistema => => kako si dogodki sledijo v kako si dogodki sledijo v časovnem zaporedju časovnem zaporedju kontrolnkontrolnii diagram diagramii in in diagramdiagramii prehajanja stanj prehajanja stanj

Page 33: Programski inženiring

3333

Orodja CASEOrodja CASE

Computer Aided Software EngineeringComputer Aided Software Engineering CASE CASE - - tehnologija avtomatizacije razvoja in vdrževanja tehnologija avtomatizacije razvoja in vdrževanja

programske opreme oz. sistemovprogramske opreme oz. sistemov

Osnovna idejaOsnovna ideja: : s povezovanjem in avtomatizacijo vseh faz s povezovanjem in avtomatizacijo vseh faz življenjskega cikla programskih sistemov zagotoviti popolnoma življenjskega cikla programskih sistemov zagotoviti popolnoma integrirana orodjaintegrirana orodja, ki bodo , ki bodo zmanjšala trud, potreben za zmanjšala trud, potreben za razvoj in vzdrževanje programske opremerazvoj in vzdrževanje programske opreme

Page 34: Programski inženiring

3434

Pridobitve CASEPridobitve CASE praktičnost strukturnih in objektnih tehnik praktičnost strukturnih in objektnih tehnik vsiljuje programsko/informacijsko inženirstvo vsiljuje programsko/informacijsko inženirstvo izboljšana kvaliteta programske opreme (avtomatske izboljšana kvaliteta programske opreme (avtomatske

kontrole, preverjanja) kontrole, preverjanja) praktičnost prototipiranja praktičnost prototipiranja lažje, enostavnejše vzdrževanje lažje, enostavnejše vzdrževanje skrajšan čas razvoja skrajšan čas razvoja razvijalci se lahko osredotočijo na kreativni del razvoja razvijalci se lahko osredotočijo na kreativni del razvoja ponovna uporaba programskih komponentponovna uporaba programskih komponent

Page 35: Programski inženiring

3535

Funkcije CASEFunkcije CASE DDiagramska orodjaiagramska orodja // risanje diagramov, // risanje diagramov, kreiranje grafičnih specifikacijkreiranje grafičnih specifikacij

Oblikovalniki Oblikovalniki // za kreiranje obrazcev, poročil, specifikacij, preprostih // za kreiranje obrazcev, poročil, specifikacij, preprostih prototipovprototipov

Podatkovni slovarjiPodatkovni slovarji

PPreverjanje specifikacijreverjanje specifikacij // // avtomatsko odkrivanje nepopolnih, avtomatsko odkrivanje nepopolnih, sintaktično nepravilnih in nekonsistentnih specifikacij sintaktično nepravilnih in nekonsistentnih specifikacij

GGeneratorji kodeeneratorji kode // // generiranje izvedljive kode avtomatično (direktno) iz generiranje izvedljive kode avtomatično (direktno) iz grafičnih specifikacij sistema grafičnih specifikacij sistema

GGeneratorji dokumentacijeeneratorji dokumentacije // // za pridobivanje tehnične in za pridobivanje tehnične in uporabniške dokumentacije, ki jo zahtevajo uporabniške dokumentacije, ki jo zahtevajo razvojne razvojne tehniketehnike

Page 36: Programski inženiring

3636

CASE repozitorijCASE repozitorij

mehanizem za hranjenje in organizacijo mehanizem za hranjenje in organizacijo vsehvseh informacij o programskem sistemu: informacij o programskem sistemu:

informacije oinformacije o problemu, ki ga rešujemoproblemu, ki ga rešujemo inf. o inf. o problemskem področju oz. domeniproblemskem področju oz. domeni inf. o inf. o procesu, ki ga uporabljamoprocesu, ki ga uporabljamo podatkovne podatkovne in procesni in procesni modelmodelii prototipprototipii resursresursii projekta in zgodovin projekta in zgodovinaa, , organizacijski kontekst ... organizacijski kontekst ... omogoča omogoča praktično uporabo praktično uporabo konceptkonceptaa ponovne uporabnosti (reusability) ponovne uporabnosti (reusability) => =>

dvig produktivnostidvig produktivnosti // // ne gre le za ponovno uporabo izvorne kode modulov, temveč ne gre le za ponovno uporabo izvorne kode modulov, temveč tudi projektnih planov, prototipnih modelov, specifikacijtudi projektnih planov, prototipnih modelov, specifikacij, .., ..

Page 37: Programski inženiring

3737

Cilji CASECilji CASESSpremenipremenititi način gradnje programskih sistemov način gradnje programskih sistemovZagotoviti:Zagotoviti:1. 1. Interaktivno razvojno okoljeInteraktivno razvojno okolje ////hitri odzivni čashitri odzivni časii, namenskimi , namenskimi

resursi in zgodnjresursi in zgodnjee preverjanje preverjanje//iskanjeiskanje/ / izločanje napak izločanje napak

2. 2. AvtomatizacijoAvtomatizacijo mnogih mnogih opravilopravil razvoja in vzdrževanja razvoja in vzdrževanja 3. 3. Vizualno programiranjeVizualno programiranje // // zmogljiv uporabniškzmogljiv uporabniškii vmesnika vmesnika

Končni cilj CASE tehnologije:

s pomočjo integriranih programskih orodij avtomatizirati celoten življenjski cikel programske opreme

Page 38: Programski inženiring

3838

Kategorije CASEKategorije CASE

UUpper CASE (front-end CASE) pper CASE (front-end CASE) – zgodnje faze življenjskega cikla (analiza in zgodnje faze življenjskega cikla (analiza in

načrtovanje) načrtovanje) LLower CASE (back-end CASE) ower CASE (back-end CASE)

– kasnejše faze življenjskega cikla (implementacija in kasnejše faze življenjskega cikla (implementacija in vzdrževanje) vzdrževanje)

IIntegrirana (integrated) CASEntegrirana (integrated) CASE

Page 39: Programski inženiring

3939

Nekatera orodja CASENekatera orodja CASE POSE (Picture Oriented Software Engineering) POSE (Picture Oriented Software Engineering) PowerDesignerPowerDesigner Oracle Designer Oracle Designer Rational ROSE Rational ROSE Popkin System Architect Popkin System Architect CA CoolCA Cool Case StudioCase Studio DBDesignerDBDesigner

Integracija CASE in RADIntegracija CASE in RAD Microsoft Visual Studio (Enterprise)Microsoft Visual Studio (Enterprise) IBM VisualAgeIBM VisualAge Borland Enterprise StudioBorland Enterprise Studio

Rapid Application Development

Page 40: Programski inženiring

4040

Mal’ za šalo, mal’ za resMal’ za šalo, mal’ za res

alias alias ‘Življenje nekega programa’‘Življenje nekega programa’1.1. Programer je napisal in oddal program, za katerega verjame, da je brez napak.Programer je napisal in oddal program, za katerega verjame, da je brez napak.2.2. Program je testiran, najdenih 20 napak.Program je testiran, najdenih 20 napak.3.3. Programer popravi 10 napak in pojasni ekipi za testiranje, da preostalih 10 napak Programer popravi 10 napak in pojasni ekipi za testiranje, da preostalih 10 napak

niso pravi ‘hrošči’. niso pravi ‘hrošči’. 4.4. Ekipa za testiranje ugotovi, da 5 popravkov ne deluje in odkrije 15 novih hroščev.Ekipa za testiranje ugotovi, da 5 popravkov ne deluje in odkrije 15 novih hroščev.5.5. Dokler ne ponorijo v prodaji in marketingu, se ponavlja naslednja zgodba:Dokler ne ponorijo v prodaji in marketingu, se ponavlja naslednja zgodba:

1.1. Preberi točko 3. Preberi točko 3. 2.2. Preberi točko 4.Preberi točko 4.

6.6. Zaradi pritiska s strani komercialistov in marketinga (najava novega produkta se Zaradi pritiska s strani komercialistov in marketinga (najava novega produkta se je zanašala na veliko preoptimističen terminski načrt projekta), program dajo v je zanašala na veliko preoptimističen terminski načrt projekta), program dajo v uporabo.uporabo.

7.7. Uporabniki najdejo 137 novih hroščev.Uporabniki najdejo 137 novih hroščev.8.8. Originalnega programerja (po tem ko je dobil plačilo za svojo ‘umetnijo’) ni nikjer.Originalnega programerja (po tem ko je dobil plačilo za svojo ‘umetnijo’) ni nikjer.9.9. Na novo zbrana programerska ekipa odpravi skoraj vseh 137 hroščev, vendar Na novo zbrana programerska ekipa odpravi skoraj vseh 137 hroščev, vendar

najde 468 novih. najde 468 novih. 10.10. Originalni programer pošlje (slabo plačani) ekipi za testiranje kartici iz Originalni programer pošlje (slabo plačani) ekipi za testiranje kartici iz

Dominikanske Republike in Jamajke. Celotna ekipa za testiranje da odpoved.Dominikanske Republike in Jamajke. Celotna ekipa za testiranje da odpoved.11.11. S strani konkurenčen firme pride do sovražnega prevzema podjetja. Novi lastniki S strani konkurenčen firme pride do sovražnega prevzema podjetja. Novi lastniki

poberejo ves profit od zadnje verzije programa, ki je imela 783 hroščev. poberejo ves profit od zadnje verzije programa, ki je imela 783 hroščev. 12.12. Novi CIO pride v nadzorni odbor. Najame programerja, ki naj ponovno naredi Novi CIO pride v nadzorni odbor. Najame programerja, ki naj ponovno naredi

(zlepi) program iz ostankov starega.(zlepi) program iz ostankov starega.13.13. Programer napiše in odda program, za katerega verjame, da je brez napak.Programer napiše in odda program, za katerega verjame, da je brez napak.14.14. Vrni se na točko 2.Vrni se na točko 2.