Ohelmen analsont Ohelmen kuvaamnen kaavolla ohelmen mmärtämnen kaavoden avulla kaavoden tuottamnen ohelmasta Erlasa kaavotppeä: ER-kaavot, tlakaavot, UML-kaavot tetohakemsto vuokaavot (tarkemmn) Vuoanals Ohelma-anals Vpalont ER-kaavot N Krasto asakas omstus M N Lanaaa lanaus N Kra TTY Ohelmstoteknkka TTY Ohelmstoteknkka 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ä TTY Ohelmstoteknkka UML-kaavot (luokkakaavo) Kra krottaa ISBN lanaa ( ) Anesto hankntapävä hnta kopomäärä hank ( ) luettelo ( ) lanaa () CD kesto lanaa ( ) Leht vuos numero lanaa ( ) Krasto TTY Ohelmstoteknkka : Lanaaa UML-kaavot (sekvensskaavo) hae(anesto) : Luettelo lanaa(asakas) : Anesto : Asakasrekster tarksta(asakas) TTY Ohelmstoteknkka 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 * TTY Ohelmstoteknkka 6 varsnanen numero = * 6-8-numeronen luku *
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 TTY Ohelmstoteknkka 7 TTY Ohelmstoteknkka 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 TTY Ohelmstoteknkka 9 TTY Ohelmstoteknkka 0 Merknnät: Abstraktt tetovuokaavot Muutos Data Muutos Data Muutos Data Data 6 Data Data Olo Olo Tetovarasto Järestelmän ulkonen olo esm. söte ta tuloste Muutos ta prosess Tetovuo (ta tetovrta) Tetovarasto TTY Ohelmstoteknkka Esmerkk tetovuokaavosta Lanaaa Krastokortt Kran vvakood Kra Lue kortt Merktse lanatuks Asakastetokanta Anestotetokanta Kutt TTY Ohelmstoteknkka
Tetovuokaavon tarkentamnen Tarkennuksen merknnät Sottaa Puheään Äänaallon muuttamnen sgnaalks Valttu numero Näppämstön elektronkka Puheään Valttu numero Elektronnen sgnaal Taauudet Puhelnsotto Puhelun ktkentä Kuultu puhe Elektronnen sgnaal Vastaaa Sgnaaln muuttamnen äänaalloks Kuultu puhe A A V f X f f W Y f X f Y f B f Z Z f f f f f6 Z Z Z f7 B TTY Ohelmstoteknkka TTY Ohelmstoteknkka Vuoanals (flow analss) 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 TTY Ohelmstoteknkka Esmerkk abstraktsta tulknnasta Yhdeksällä aollsuus esm. onko luku 6 aollnen 9:llä? ratkasu: + + + + 6 = 8 on aollnen vodaan soveltaa tarkstuksssa? * 7 + 76 = 6 6 7 7 TTY Ohelmstoteknkka 6 Esmerkkeä vuoanalssta: muutoksa koodn parantamseks Peräkkänen kood: lausekkeen tostuvan evaluonnn elmnont vakoden/vakolausekkeden korvaamnen nden arvolla Slmukat: koodn srtämnen slmukan ulkopuolelle kallden laskutomtusten välttämnen Muta parannuksa: muuttuan korvaamnen tosella kuolleen koodn elmnont Tehokkuus Esmerkk kallden laskutomtusten välttämsestä := ; whle < 00 do a := * ; = + ; od := ; t := ; whle < 00 do a := t; = + ; t := t + ; od TTY Ohelmstoteknkka 7 TTY Ohelmstoteknkka 8
Koodn srtämnen slmukan ulkopuolelle B <- lauseke; Vodaanko srtää? A a B evät rpu slmukkalaskursta B <- lauseke; Ohelma-anals Lähdekoodn a muden dokumentten tarkastelu (vrt. koodanals) Analsonta tapahtuu nelällä tasolla: toteutustaso rakenteellnen taso tomnnallnen taso sovellusalueen taso staattnen anals dnaamnen anals TTY Ohelmstoteknkka 9 TTY Ohelmstoteknkka 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. TTY Ohelmstoteknkka Esmerkkeä ohelmakaavosta Kutsukaavo ta kutsuvttauskaavo (call graph) Yhteenvetokaavo (program mar graph) Alohelmen välnen vuokaavo (nterprocedural flow graph) Rppuvuuskaavo (sstem dependenc graph) TTY Ohelmstoteknkka ( defne ( a ) ( * a a ) ) ( defne ( fun ) ( + ( ) ( ) ) ) Kutsukaavo (kontrolln kulku) ( defne ( a ) ( * a a ) ) ( defne ( fun ) ( + ( ) ( ) ) ) Tetovuon lsäämnen? ( fun ) =? ( fun ) = arg = arg = fun paluuarvo = 9 fun arg = arg = paluuarvo = paluuarvo = TTY Ohelmstoteknkka TTY Ohelmstoteknkka
Tonen esmerkk kutsukaavosta program Sums read ( n ); := ; whle ( <= n ) := 0; 6 (, ); 7 wrte (, ); 8 := + ; 9 end whle 0 end. Sums procedure (, ) ref, := ; whle ( <= ) (, ); ( ); 6 end whle 7 return, 8 procedure ( ) ref 9 (, ); 0 return procedure ( a, b ) ref a; value b a := a + b; return,, TTY Ohelmstoteknkka Sums a a todellset parametrt muodollset parametrt Yhteenvetokaavo parametrltäntä parametren tetovuo TTY Ohelmstoteknkka 6 Sums { U 6 } { U, U, U } { U 6 } { U 6 } Alohelmen a välnen vuokaavo {U 6 } Kättöoukot (use sets): U : rvllä 7 U : rvllä 7 U : rvllä 8 U : rvllä U : rvllä a U 6 : a rvllä { U, U } { U, U, U 6 } { U } { U, U 6 } TTY Ohelmstoteknkka 7 Rppuvuuskaavo := whle <= Ohelmen a lläpto b a evoluuto a := a + b a b TTY Ohelmstoteknkka 8 Vpalont (slcng) 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 Esmerkkohelma () begn () read (, ); () total := 0.0; () := 0.0; () f <= then (6) := ; (8) read ( ); (9) total := * ; (0) end; () wrte ( total, ); () end; Esmerkk () Vpale krteern <, { }> perusteella: () begn () read (, ); () f <= then (8) read ( ); (0) end; () end; TTY Ohelmstoteknkka 9 TTY Ohelmstoteknkka 0
Esmerkkohelma () begn () read (, ); () total := 0.0; ( ) ; () f <= then (6) := ; (8) read ( ); (9) total := * ; (0) end; () wrte ( total, ); () end; Esmerkk () () := 0.0; () begn Vpale krteern <, { }> perusteella: () read (, ); () end; Esmerkkohelma () begn () read (, ); () total := 0.0; () := 0.0; () f <= then (6) := ; (8) read ( ); (9) total := * ; (0) end; () wrte ( total, ); () end; Esmerkk () Vpale krteern <, { total }> perusteella: () begn () read (, ); () total := 0.0; () f <= then (9) total := * ; (0) end; () end; Rv? TTY Ohelmstoteknkka TTY Ohelmstoteknkka 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 TTY Ohelmstoteknkka Vpalonnn aottelu () 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) TTY Ohelmstoteknkka Esmerkkohelma Etenevä vpalont () read ( n ); () := ; () c := 0; () 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 ); Vpalonnn aottelu () 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ä TTY Ohelmstoteknkka TTY Ohelmstoteknkka 6 6
Dnaamnen vpalont (verrattuna staattseen) 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 ); Dnaamsen vpalonnn erlasa määrtelmä 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 TTY Ohelmstoteknkka 7 TTY Ohelmstoteknkka 8 Määrtelmen ero 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 TTY Ohelmstoteknkka 9 7