Pretvarjanje postopka v program in obratno

 

Uvod

Kot smo se seznanili v poglavju o postopkih, je dan postopek je mogoče opisati na različne načine in z različnimi sredstvi; uporabimo lahko govorni opis (ustno), besedni opis v naravnem jeziku, razne slikovne opise, tabelarične opise, ... , pa konec koncev tudi programski jezik (kodo). Slednji opis je primeren v situaciji, ko želimo postopek dejansko implementirati za izvajanje v/na računalniškem sistemu.

Bistveno pri opisovanju postopkov je, da je postopek spisan na tak način, da ga je možno enolično interpretirati. Ta zahteva v splošnem ni tako enostavna in zahteva formalizacijo opisovanja postopka.

Kaj pa je formalizacija ?

Vzemimo za primer diagrame poteka: diagrami poteka 'predpisujeje' osnovne gradnike, s katerimi opisujemo postopek. Vsak od teh gradnikov ima natanko določen pomen in s tem situacijo v kateri ga uporabimo. Npr. pravokotnik uporabimo, če želimo nekaj sešteti, romb v primeru, da se odločamo med različnimi izvajalnimi potmi, ... . Določen je tudi način povezovanja teh gradnikov, ki določa hkrati tudi zaporedje izvajanja gradnikom. Če povzamemo, definirana je oblika (izgled, sintaksa,..) gradnikov, hkrati pa smo oblikam določili pomen (kaj naredijo, semantika). Nabor osnovnih gradnikov je omejen in predstavlja abecedo (nabor gradnikov s katerimi lahko opišemo vse možne primere).

Abeceda, semantika in sintaksa definirajo jezik. Tudi programski jezik je zgolj jezik. Torej je postopek pretvorbe dejansko postopek prevajanja. Pri tem je potrebno poznati zgolj formalizem obeh jezikov, tako kot npr.pri prevajanju med naravnimi jeziki.

V primeru, da želimo postopek preveriti, običajno potrebujemo testne podatke. Postopek, izveden nad ustrezno množico podatkov pa ni nič drugega kot program (N.Wirth). Se pravi, da s pisanjem postopka in njegovim preverjanjem, dejansko programiramo. Za programerje (koderje) računalniškov programov potem ostale le še vprašanje, ali je rezultat programiranja, potem tudi s strojem izvedljiv.

Zakaj postopke opisujemo na različne načine

Naštejmo nekaj najpogostejših razlogov.
Nekateri opisi so za opis na določenih področjih dela in življenja neprimerni ali vsaj manj primerni:
Nekateri opisi so bolj pregledni, jasni, enostavni kot drugi

Nekateri ljudje ne poznajo določenih formalizmov

...

 

Kje pride prav poznavanje večih načinov predstavitve

V nadaljnem besedilu je podanih le nekaj najbolj značilnih situacij:
Načrtovanje programov

Tako kot večina preostalih postopkov, tudi realizacija programa zahteva načrtovanje. Redki so tisti programerji, ki si načrt za izvedbo končnega produkta uspejo narediti v svoji glavi, in nato končno rešitev samostojno direktno implementirati v ustrezno programsko kodo. Pri kompleksnejših problemih, ki jih razrešuje večja skupina ljudi, pa brez načrta realizacije z usklajevanjem dela skupine ne gre nikakor. Načrt v obliki programske kode je sicer možno naredi (pseudoprogramiranje), vendar je ponavadi dokaj kompleksen in nepregleden. Ponavadi v tem primeru uporabljemo opise, ki imajo močno vizualno komponento (grafične predstavitve)

Dokumentacija programov in programske kode
Dokumentiranje programov in programske kode je namenjena načrtovalcem, realizatorjem, koderjem, implementatorjem, vzdrževalcem, ..programov. Uporablja se v vseh fazah življenskega cikla programske opreme, od prvih začetkov njenega načrtovanja, do vseh faz vzdrževanja in nadgrajevanja. Več o tovrstni dokumentaciji zveste v poglavju o razvoju programske opreme. Načrtovalec ponavadi ne producira programske kode, ampak načrt poda v bolj splošni obliki. Tipično gre za grafične predstavitve. Samo kodo producira koder na podlagi dane mu specifikacije, ki je ponavadi prototipna (se pravi pseudokodna ali grafična). Prototipno specifikacijo mora znati brati, da bo lahko kodiral zahtevano. Prav tako vzdrževalec verjetno ne bral kode, da bo vedel, kako ustrezno servisirati kodo, temveč se bo zanesel na splošnejše opise. Izdelovalec dokumentacije pa je tako tisti, ki mora poznati in v dokumentacijo integerirati vse zahtevane načine predstavitev.
Razhroščevanje in optimiranje programov

Sama programska koda je redko lepo pregledna in na prvi pogled jasna. Pri razhroščevanju si zato pomagamo z dokumentacijo, ki na ponavadi omogoča lokalizacijo iskane napake in pa podaja opis, kako bi neka koda dejansko morala delovati. Podobno je tudi pri optimiranju kode, kjer za razliko od prvega primera že imamo pravilno delujočo kodo. Tako ponavadi izkoriščamo, da nek način predstavitve včasih odkrije pomankljivosti, ki z drugačnim načinom predstavitve niso očitne

Predstavite delovanja in uporabe programov

Predstavitev delovanja je lahko namenjen profesionalcem (programerjem) v veliki večini primerov pa predstavitev podajamo precej bolj laični publiki. Njim je potrebno predstavitev prikazati tako, da jim bo razumljiva. Zaporedje ukazov kode jih verjetno ne prepričalo, da naj, npr. kupijo našo kodo. Tudi v tem primeru ponavadi predstavitev izvedemo z vizualnim prikazom grafičnih oblik. Predstavitev uporabe programov je lahko pseudokodna, v naravnem jeziku, predstavljena kot sekvenca akcij za dosego cilja. Redkeje se v prvem in drugem primeru uporabljajo diagrami aktivnosti.

Tranformacija zahtev naročnika v programsko kodo

Bodite prepričani, da naročnik programske opreme o kodiranju v splošnem ne ve veliko. Ve pa, kaj od programske opreme, ki jo naroča, zahteva. Pred naročanjem bo izdelal specifikacijo zahtev, ki bo vplivala na relizacijo programa. Tudi to specifikacijo lahko štejemo za opis postopka, ki ga bo potrebno pretvoriti v programsko kodo.

 

 

 

Kako pretvarjamo ?

Recimo, da se omejimo na opise pretvorb s področja s katerim se ukvarjamo: opisovanja postopkov, katerih končni cilj realizacije je računalniški program. Tipičen postopek' je sestavljen iz sekvenc, vejitev in ponavljanj. Pretvorbo izvedemo tako, da vsak konstrukt postopka identificiramo (prepoznamo) in ga pretvorimo oz. prevedemo v ustrezen element oz. množico elementov ciljnega opisa. Prepoznavo in pretvorbo ponavljamo toliko časa, dokler ne opišemo vseh konstruktov prvotnega opisa:

Kaj pa primeri pretvorb ...

Kot je bilo omenjeno, pretvorba med opisi postopkov zahteva poznavanje 'abecede' obeh načinov opisovanja. Poglavja o programiranju vsebujejo razlago delovanja posameznih konstruktov programskega jezika javanske platforme. Opis njihovega delovanja je podan tudi v grafični obliki s pomočjo diagramov poteka. Te opise lahko direktno izkoristimo za pretvorbo.