Univerza v Ljubljani Fakulteta za elektrotehniko PROCES PISANJA PROGRAMOV Mitja Nemec Univerza v Ljubljani, Fakulteta za elektrotehniko, Tržaška 25, 1000 Ljubljana, SLOVENIJA e-mail: mitjan@fe.uni-lj.si magic(66)
Proces programiranja Proces programiranja sestavlja: Definicija problema Priprava Pisanje Vzdrževanje PROCES PISANJA PROGRAMOV 2
Priprava Pisanje zahtev Izbira orodji Programski jezik Podporna orodja Načrtovanje arhitekture Načrtovanje programa PROCES PISANJA PROGRAMOV 3
Priprava pisanje zahtev Natančnost Natančnost Natančnost Natančnost Natančnost PROCES PISANJA PROGRAMOV 4
Priprava izbira orodji Programski jezik Makroji v urejevalniku besedil, Poslovni program na PC-ju, Procesno kritične aplikacije, Življensko kritične aplikacije Čas razvoja / čas učenja Podporna orodja Orodja za nadzor kode (SVN, GIT, ) Orodja za statično analizo COTS programska oprema (knjižnice, operacijski sistemi, ) PROCES PISANJA PROGRAMOV 5
Priprava - Načrtovanje Od zgoraj navzdol Čim manj medsebojnih povezav komunikacija prikaz zajem signala obdelava zajem ukazov PROCES PISANJA PROGRAMOV 6
Modularnost Priprava - Načrtovanje Skrivanje interne strukture PROCES PISANJA PROGRAMOV 7
Priprava - Načrtovanje PROCES PISANJA PROGRAMOV 8
Priprava - Načrtovanje PROCES PISANJA PROGRAMOV 9
Pisanje programa Detajlni načrt Pisanje Razhroščevanje Testiranje Integracija Ponovno pisanje Optimizacija Pisanje dokumentacije PROCES PISANJA PROGRAMOV 10
Pisanje programa - detajlni načrt Psevdokoda if pogoj naredi nekaj else naredi nekaj drugega PROCES PISANJA PROGRAMOV 11
Pisanje programa - detajlni načrt Diagram poteka PROCES PISANJA PROGRAMOV 12
Pisanje programa - detajlni načrt Diagram stanj Naprava izklopljena Napajanje Inicializacija Preveri stanje Standby Zelena tipka Ce kontaktor ni notri vklopi bootstrap Pogoj 1 = Rudi je v napačnem stanju + Oscilator ne dela + DC-link je prevelik + RMS toka je prevelik + Rudi javlja napako. Pogoj 1 Pogoj 1 + timeout Pogoj 2 = Pogoj 1 + rudi_fault Timeout + Rdeca tipka Pogoj 2 Preveri stanje Rudija OK Cakaj na U_line RMS > OK Kontaktor notri Ali pa Timeout Izklopi bootstrap Timeout + Rdeca tipka+ U_line RMS < Pogoj 2 Sinhroniziraj OK Napaka Rdeca tipka + U_line RMS < + PLL_out Offset tok. sond Pošlji opis Pogoj 3 = Pogoj 2 + Udc < + Udc > Rdeca tipka + U_line RMS < + PLL_out OK Vklop DC Pogoj 3 PROCES PISANJA PROGRAMOV 13 Rdeca tipka + U_line RMS < + PLL_out Bootstrap OK
Pisanje programa - detajlni načrt Blokovna shema AdcResult0 +AdcResult3 +AdcResult6 +AdcResult9 = vsota_u_line_adc u_line.raw u_line.gain fir.input 1 0 u_line.offset IR_in FIR fir PER_pll(); u_line.input = u_line_harm.in ETRA_FIXED_ MACRO (DFT 1,3,5,7,9,) 1,3,5,7,9 1,3,5,7,9 - - u_line_harm.suma u_line_harm.sumb 1 0 error_mean.in REPETITIVE_full u_line_harm.out u_line.first DC_FIXED _MACRO error_mean.mean repetitive.in pll.base repetitive.delay repetitive repetitive.out 1 0 inv_filt.in status_flags.control_on DIFF_second inv_filt IR_in 1 0 inv_filt.out smo sinhronizirani nismo sinhronizirani (status_flags.housekeep = 0, status_flags.control_on = 0) 1 0 status_flags.pll_locked pll.phase PI pll.out pll.out 0 out.harmonic 1 AdcResult5 i_line.gain i_line.input DC_FIXED_ MACRO i_line.dc i_line_mean.mean PID_FIXED _MACRO i_mean_reg.out out.i_mean_reg 0 1 out.duty PWM i_line.offset (kalibracija) 1 status_flags.offset_calib 0 i_mean_reg.ref = 0 status_flags.housekeep i_line_harm.in DFT_FIXED_ MACRO i_line_harm.out i_line_harm.suma i_line_harm.sumb x i_line.first x y i_line.norm AdcResult4 u_dc.gain u_dc.input U_dc_mean.In DC_FIXED_ MACRO u_dc.dc u_dc_mean.mean PID_FIXED u_dc_reg.out _MACRO out.dc_reg 0 1 u_dc.offset u_dc_reg.ref PROCES PISANJA PROGRAMOV 14
Pisanje programa podatkovne strukture Ne pozabi na načrtovanje podatkov Kompleksni podatkovni tipi Kazalci Tabele Skladi Vrste PROCES PISANJA PROGRAMOV 15
Pisanje programa, zahtev - pregledi Pregledi Napake se odkrijejo zgodaj (pregledi zahtev) Več oči več vidi Trening za neizkušene Vzpostavljanje enotnih rešitev PROCES PISANJA PROGRAMOV 16
Ponovno pisanje programa Ponovno pisanje kode Razlogi Predolga funkcija Preveč medsebojnih povezav Pregloboko gnezdenje Uporaba komentarjev za razlago nerazumljive kode Postopna zamenjava kode Shrani delujočo kodo PROCES PISANJA PROGRAMOV 17
Optimizacija programa Optimizacija Razlogi -> nikoli ne optimiraj brez razloga Natančno določi mesto optimizacije Shrani delujočo kodo Postopna zamenjava kode PROCES PISANJA PROGRAMOV 18
Vzdrževanje Osnovni pogoji za uspešno vzdrževanje Dostop do istih orodji Nadzor nad verzijami programa Ustrezen nivo kode Dokumentacija programa Sledenje hroščem PROCES PISANJA PROGRAMOV 19
Zakluček Priprava na delo je pol dela Imej nadzor nad verzijami programa Izvajaj preglede kode ter zahtev Ne optimiraj dokler ni potrebno PROCES PISANJA PROGRAMOV 20