Analsontteknkota a -menetelmä Kuvausteknkota ER-kaavot tlakaavot UML-kaavot Tetohakemsto Vuokaavot a vuoanals Ohelma-anals rppuvuusanals rstvttauslstaukset kutsuvttauskaavot Vpalont (slcng) ER-kaavot N Krasto asakas omstus M Lanaaa lanaus N N Kra Kra varataan Merktse varatuks E varauksa Merktse saapuneeks Postettu Tlakaavot Kra lanataan Merktse lanatuks Huonokuntonen Posta Lanaushllssä Palautustskllä Ota kästeltäväks On varauksa Ilmota saapumsesta Lanassa Merktse lanatuks Varattuen hllssä UML-kaavot (luokkakaavo) Kra krottaa ISBN Anesto hankntapävä hnta kopomäärä hank ( ) luettelo ( ) CD kesto Leht vuos numero Krasto : Lanaaa UML-kaavot (sekvensskaavo) hae(anesto) : Luettelo lanaa(asakas) : Anesto : Asakasrekster tarksta(asakas) Tetohakemsto Ssältö: nm tetoalkon, tetovaraston ta ulkosen olon pääasallnen nm alas kättökohta a tapa tetoalkota kättävät prosesst kättötapa (sötteenä, tulosteena, tetovarastona) ssällön kuvaus (kätett notaato) lsätetoa Nm Puhelnnumero Alas Kättökohta a -tapa AssessAganstSet-up (tuloste) DalPhone (söte) Kuvaus puhelnnumero = ( suuntanumero ) + varsnanen numero suuntanumero = * nollalla alkava --numeronen luku * varsnanen numero = * 6-8-numeronen luku * 6
Teto- a kontrollvuo Vuokaavot flow graph ltt kääntääteknkkaan kätetään esm. optmonnssa flow chart (kulkukaavo) kontrolln kulku estetään algortmn tasolla flow dagram abstraktmp ests kun edellset kätetään ohelmen suunnttelussa (takasnmallnnuksessa) Teto a kontroll vodaan esttää samassa kaavossa Kääntän lttvät vuokaavot Peruslohko (basc block) koostuu peräkkässtä ohelman lausesta Kontrollvuo e saa haarautua kesken peruslohkon Peruslohkon vo alottaa: ohelman (lauselstan). lause hpn kohteena oleva lause hppkäskn älkeen tuleva lause 7 8 Peruslohkot Algortmn esttämnen (kulkukaavo) prod := 0; := ; do begn prod := prod + a [ ] * b [ ]; := + ; end whle <= 0 Optmont t f E S S t S S S E f S; S f E then S else S do S whle E 9 0 Vuoanals (flow analss) Esmerkk abstraktsta tulknnasta Ohelman aoakasten omnasuuksen tutkmnen aamatta ohelmaa kätetään ksnkertastettua, smbolsta versota ohelman datasta Vahtoehtosa termeä: smbolnen aamnen (smbolc eecuton) abstrakt tulknta (abstract nterpretaton) Tarkotus: optmont ohelmen todstamnen nvarantten (psväsvättämen) generont ohelman luotettavuuden parantamnen Yhdeksällä aollsuus esm. onko luku 6 aollnen 9:llä? ratkasu: + + + + 6 = 8 on aollnen vodaan soveltaa tarkstuksssa * 7 + 76 =? = 6 6 7 7
Esmerkkeä vuoanalssta: muutoksa koodn parantamseks Esmerkk kallden laskutomtusten välttämsestä Peräkkänen kood: lausekkeen tostuvan evaluonnn elmnont vakoden korvaamnen nden arvolla Slmukat: koodn srtämnen slmukan ulkopuolelle kallden laskutomtusten välttämnen Muta parannuksa: muuttuan korvaamnen kuolleen koodn elmnont Tehokkuus := ; whle < 00 do a := * ; = + ; od := ; t := ; whle < 00 do a := t; = + ; t := t + ; od B <- lauseke; Koodn srtämnen slmukan ulkopuolelle Vodaanko srtää? B <- lauseke; Merknnät: Abstraktt tetovuokaavot Data Muutos Data Muutos Data Muutos Data Data Olo Olo Tetovarasto Järestelmän ulkonen olo esm. söte ta tuloste Data 6 Muutos ta prosess A a B evät rpu slmukkalaskursta Tetovuo (ta tetovrta) Tetovarasto 6 Esmerkk tetovuokaavosta Lanaaa Krastokortt Kran vvakood Kra Lue kortt Asakastedot Kran tedot Merktse lanatuks Eräpävä Kutt Puheään Valttu numero Sottaa Äänaallon muuttamnen sgnaalks Näppämstön elektronkka Tetovuokaavon tarkentamnen Puheään Valttu numero Elektronnen sgnaal Taauudet Asakastetokanta Anestotetokanta Puhelnsotto Puhelun ktkentä Kuultu puhe Elektronnen sgnaal Vastaaa Sgnaaln muuttamnen äänaalloks Kuultu puhe 7 8
Tarkennuksen merknnät Ohelma-anals A A V f X f f W Y f F Z B Z f f6 Z Z f7 B Lähdekoodn a muden dokumentten tarkastelu (vrt. koodanals) Analsonta tapahtuu nelällä tasolla: toteutustaso rakenteellnen taso staattnen anals X Y f f f f f Z tomnnallnen taso sovellusalueen taso dnaamnen anals 9 0 Esmerkkeä ohelmaanalssta Staattnen anals Nätä sen alohelman runko, ota kutsutaan tetstä lauseesta. Nätä sen tpn esttel, ota kätetään tetn muuttuan esttelssä. Ets kakk muuttuat, otka ovat näkvä tetssä alohelmassa a otka ovat tettä tppä. Dnaamnen anals Ets kakk lauseet, otka suortetaan tetn muuttuan arvon tuottamseks. Ets kakk lauseet, otka kättävät tetn muuttuan arvoa. Ets kakk muuttuat, oden arvoa kätetään laskettaessa tetn muuttuan arvo. Kohdeelementt Lähdeelementt tedosto tedosto tedosto Koodelementten suhteta Suhde ssällttää ssältää määrttelee kutsuu vttaa (lukee) vttaa (krottaa) tedosto muuttua muuttua muuttua Kuvaus tedoston ssällttämnen (nclude) toseen tedostoon n määrttel tedostossa muuttuan määrttel tedostossa staattnen n kutsu muuttuan arvon lukemnen n ssällä muuttuan arvon pävttämnen n ssällä Esmerkkeä ohelmakaavosta Kutsukaavo ta kutsuvttauskaavo (call graph) Yhteenvetokaavo (program summar graph) Alohelmen välnen vuokaavo (nterprocedural flow graph) Rppuvuuskaavo (sstem dependenc graph) ( defne ( a ) ( * a a ) ) ( defne ( fun ) ( + ( ) ( ) ) )? ( fun ) = Kutsukaavo (kontrolln kulku) fun
( defne ( a ) ( * a a ) ) ( defne ( fun ) ( + ( ) ( ) ) )? ( fun ) = paluuarvo = 9 arg = arg = fun arg = arg = paluuarvo = Tetovuon lsäämnen paluuarvo = Tonen esmerkk kutsukaavosta program Sums read ( n ); := ; whle ( <= n ) sum := 0; 6 Acc ( sum, ); 7 wrte ( sum, ); 8 := + ; 9 end whle 0 end. Sums procedure Acc (, ) ref, := ; whle ( <= ) (, ); ( ); 6 end whle 7 return sum, Acc 8 procedure ( ) ref 9 (, ); 0 return procedure ( a, b ) ref a; value b a := a + b; return,, 6 Sums sum Acc a Yhteenvetokaavo todellset parametrt Sums Acc { U 6 sum { U, U, U { U 6 { U 6 Alohelmen a välnen vuokaavo sum a muodollset parametrt parametrltäntä parametren tetovuo 7 { U 6 Kättöoukot (use sets): U : sum rvllä 7 U : rvllä 7 U : rvllä 8 U : rvllä U : rvllä a U 6 : a rvllä { U, U sum { U, U, U 6 { U { U 8, U 6 Rppuvuuskaavo Acc := whle <= Vpalont Ohelmen mmärtämnen Vrheden etsntä Ohelmen rnnakkastamnen Vpaleen laskenta perustuu ohelman teto- a kontrollvuohon vpaleen lauseet evät välttämättä peräkkäsä Vpale määrät ohelmakohdan (rvn) a tarkasteltaven muuttuen perusteella Alkuperänen määrtelmä: vpale ssältää lauseet, otka vovat vakuttaa tetn muuttuan arvoon tetssä ohelmakohdassa vpaleen aamnen tuottaa tälle muuttualle samat arvot kun alkuperäsen ohelman aamnenkn seuraus Ohelmen a lläpto b a evoluuto a := a + b a b 9 0
Esmerkkohelma Esmerkk () Esmerkkohelma Esmerkk () () begn () read (, ); () total := 0.0; () sum := 0.0; () f <= then (6) sum := ; (8) read ( ); (9) total := * ; (0) end; () wrte ( total, sum ); () end; Vpale krteern <, { > perusteella: () begn () read (, ); () f <= then (8) read ( ); (0) end; () end; () begn () read (, ); () total := 0.0; () sum := 0.0; () f <= then (6) sum := ; (8) read ( ); (9) total := * ; (0) end; () wrte ( total, sum ); () end; Vpale krteern <, { > perusteella: () begn () read (, ); () end; Esmerkkohelma () begn () read (, ); () total := 0.0; () sum := 0.0; () f <= then (6) sum := ; (8) read ( ); (9) total := * ; (0) end; () wrte ( total, sum ); () end; Esmerkk () Vpale krteern <, { total > perusteella: () begn () read (, ); () total := 0.0; () f <= then (9) total := * ; (0) end; () end; Rv? Esmerkkohelma begn () read ( ); () f ( < 0 ) then () := f ( ); () := g ( ); else () f ( = 0 ) then (6) := f ( ); (7) := g ( ); else (8) := f ( ); (9) := g ( ); end f; end f; (0) wrte ( ); () wrte ( ); end; Vpalont a ohelman rppuvuuskaavo 8 9 datarppuvuudet kontrollrppuvuudet 6 7 0 Vpale krteern <0, { > perusteella Vpalonnn aottelu () Etenevä vpalont Alkuperänen el takautuva (backward) vpale ssältää sellaset lauseet, otka vakuttavat muuttuan arvoon Etenevä (forward) vpale ssältää sellaset lauseet, ohn muuttua vakuttaa (ossa vtataan muuttuaan) Esmerkkohelma () read ( n ); () := ; () c := 0; () whle <= ( n dv ) do () f ( n mod ) = 0 then (6) wrte ( ); (7) c := c + ; (8) f; (9) := + ; (0) od; () wrte ( c ); Etenevä vpale krteern <, { c > perusteella: () c := 0; (7) c := c + ; () wrte ( c ); 6 6
Vpalonnn aottelu () Dnaamnen vpalont (verrattuna staattseen) Alkuperänen el staattnen vpalont perustuu käännösakaseen ohelman tarkasteluun Dnaamnen vpalont otetaan mukaan van ne lauseet, otka tulee suortettua vpale ssältää lauseet, otka vakuttavat muuttuan arvoon tetllä ohelman suortuskerralla dnaamselle vpalonnlle on heman erlasa määrtelmä Esmerkkohelma () read ( n ); () := ; () c := 0; () whle <= ( n dv ) do () f ( n mod ) = 0 then (6) wrte ( ); (7) c := c + ; (8) f; (9) := + ; (0) od; () wrte ( c ); Staattnen vpale krteern <, { c > perusteella: kakk muut rvt pats rv 6 Dnaamnen vpale krteern <, { c > perusteella sötearvolla n = : () c := 0; () wrte ( c ); 7 8 Dnaamsen vpalonnn erlasa määrtelmä Määrtelmen ero Määrtelmä : osa-ohelma, oka laskee tarkasteltaven muuttuen arvot tetllä suortuskerralla Määrtelmä : kokoelma lauseta, otka vakuttavat tarkasteltaven muuttuen arvohn tetllä suortuskerralla e välttämättä aettava osa-ohelma Esmerkkohelma () := 0; () whle < 0 do () f = 0 then () h := 0; () := + ; (6) od; (7) wrte ( h ); Dnaamnen vpale krteern < 7, { h > perusteella:. määrtelmän mukaan: kakk rvt. määrtelmän mukaan: kakk muut rvt pats rv 9 0 7