Professional Documents
Culture Documents
Uvodno predavanje
Siniša Šegvić
Sveučilište u Zagrebu
Fakultet elektrotehnike i računarstva
Zavod za elektroniku, mikroelektroniku
računalne i inteligentne sustave
→ 1/30
SADRŽAJ UVODNOG PREDAVANJA
□ Motivacija za načela i obrasce programskog oblikovanja:
□ problemi vezani uz složenost interakcije među komponentama
□ obuzdavanje složenosti apstrakcijom i organizacijom
□ Oblikovne osnove za ublažavanje interakcijskih problema:
□ ne-funkcionalni zahtjevi: ne odnose se na funkcionalnost sustava
□ utjecaj tih zahtjeva na dinamiku razvoja
□ Uklapanje oblikovanja u razvojne procese:
□ kako i kada planirati organizaciju programa?
□ usporedba "lakih" i "teških" razvojnih modela (metodologija)
□ O predmetu:
□ glavne teme, pretpostavljeno znanje
□ način održavanja nastave, razdioba bodova, literatura
https://ma.ttias.be/system-calls-in-apache-linux-vs-iis-windows/
.[13] .[7]
subversion/libsvn_fs_fs/tree subversion/libsvn_fs_util/fs-util
[2:1] .[13] .[1]
.[8] subversion/libsvn_fs_fs/dag subversion/libsvn_fs/fs-loader
.[18] [2:1] [2:1]
subversion/libsvn_fs_fs/fs_fs .[1]
[2:1] .[19]
subversion/libsvn_fs/access
.[16]
subversion/libsvn_fs_fs/key-gen
[2:1]
.[11]
subversion/libsvn_fs_base/bdb/nodes-table
[2:1]
.[306]
cvsh_src/ext/klt/old/klt/main
cvsh_src/ext/libvs/karla/v1/hr_fer_zemris_mastif_LibVSInterface
cvsh_src/ext/lines/ipp_wphtData
[2:1]
cvsh_src/ext/ipv/ext_ipt
cvsh_src/ext/libvs/karla/hr_fer_zemris_mastif_LibVSInterface
[2:1]
cvsh_src/ext/klt/old/klt/example3
.[2]
cvsh_src/ext/klt/old/klt/example1
.[2]
cvsh_src/ext/klt/old/klt/example4
.[1] .[9]
.[7] cvsh_src/ext/klt/old/klt/base
.[2] cvsh_src/ext/klt/old/klt/klt cvsh_src/ext/klt/old/klt/klt_util
cvsh_src/ext/klt/old/klt/storeFeatures .[5]
[2:1] cvsh_src/ext/klt/old/klt/convolve [2:1] .[14]
.[2] .[5]
[2:1] .[31] .[9]
cvsh_src/ext/klt/old/klt/pnmio cvsh_src/ext/klt/old/klt/error
.[18]
cvsh_src/ext/klt/old/klt/example2
.[2] .[1]
.[4] .[6] cvsh_src/ext/klt/old/klt/pyramid .[3]
cvsh_src/ext/klt/old/klt/selectGoodFeatures [2:1]
cvsh_src/ext/klt/old/klt/example5
.[6]
.[1]
cvsh_src/ext/klt/old/klt/trackFeatures
cvsh_src/ext/klt/old/klt/writeFeatures
.[6]
.[2]
cvsh_src/ext/zhang/ipp_morphRegion
[2:1]
.[1] .[2]
cvsh_src/grid/root/grid_primitives
[2:1]
.[2]
cvsh_src/ext/lines/ipp_extractLines .[1]
.[2]
.[1] [2:1]
cvsh_src/grid/alg/grid_alg_rasterLine
.[2] [2:1]
cvsh_src/ext/lines/ext_lines .[1] cvsh_src/ext/lines/ipp_wpht
.[1]
[2:1] [2:1] .[1]
.[1] .[2]
cvsh_src/grid/root/grid_region
.[3] [2:1]
.[1] cvsh_src/ext/canny/ipp_histeresis .[2]
.[2]
[2:1]
cvsh_src/ext/zhang/ipp_locateCircles .[1]
[2:1]
.[2]
.[3] .[1]
.[1]
.[3] .[2]
.[1] cvsh_src/ipp/ipp_mask
cvsh_src/ipp/ipp_binarize [2:1]
[2:1] cvsh_src/img/access/img_access_dispatch
.[2] .[2]
.[1]
.[6]
.[1]
.[1] .[1]
cvsh_src/ext/zhang/ipp_matchGrid .[1]
[2:1] .[15]
.[1]
cvsh_src/ext/lines/alg_lines cvsh_src/ipp/ipp_histogram
.[1]
[2:1] .[2] .[4]
.[1] cvsh_src/ipp/ipp_regionGrowing
[2:1] .[4] .[2]
.[1] .[2]
.[2]
.[3]
.[4] .[5]
.[2]
cvsh_src/ipp/ipp_projection
.[5] [2:1]
.[3]
cvsh_src/alg/alg_histogram
.[2]
.[7] .[1]
.[1]
.[2] .[2] cvsh_src/img/access/img_access_wrap
.[2]
.[1] cvsh_src/ipp/ipp_range
.[2] [2:1] .[1]
cvsh_src/alg/alg_rescale
.[2] .[2]
.[1] .[3] .[2]
cvsh_src/ext/harris/ipp_grad2ndMoment
.[1] [2:1]
.[2]
cvsh_src/ext/zhang/alg_matchGrid
cvsh_src/img/access/img_access_pix
.[3]
.[1]
.[2] .[3]
.[2]
.[2] cvsh_src/ext/noise/ipp_noiseReplaceUniformMasked
.[1] [2:1] cvsh_src/ext/harris/ipp_harris .[1]
.[1] .[1]
.[1] [2:1]
.[1]
.[9] .[1]
.[1]
.[1] .[2] .[1]
.[1] cvsh_src/ext/noise/ipp_attenuate .[1]
[2:1] .[19]
.[2]
.[2] .[3] .[1] cvsh_src/ext/canny/ipp_convolve
cvsh_src/ext/zhang/avf_workerZhang .[2]
[2:1] .[1]
.[1]
.[1]
cvsh_src/ext/noise/ipp_noiseAdditiveGaussian
[2:1]
.[1] .[1] .[1]
cvsh_src/img/access/img_access_guard
cvsh_src/ext/harris/ipp_nms7x7 .[1]
.[9] [2:1]
cvsh_src/ext/lines/ext_linesPartition .[3] .[2]
.[3] .[4] [2:1] .[2]
.[3]
cvsh_src/ipp/ipp_transform
.[2]
.[2]
.[2] .[3] cvsh_src/ipp/ipp_lincomb
cvsh_src/math/proj2d/math_proj2d_ann .[2]
.[1] [2:1]
[2:1]
.[1]
.[1]
.[1] .[3]
.[2]
.[3]
.[3] .[2]
.[1]
.[1] .[1]
cvsh_src/ext/zhang/ext_zhang
[2:1] .[1]
cvsh_src/win/ann/win_ann_abstract
.[1]
.[1] .[1]
.[1]
.[1]
.[3]
.[3] .[1]
.[4] cvsh_src/ext/harris/ext_harrisUtil .[3] cvsh_src/ext/noise/alg_noiseTS cvsh_src/ipp/ipp_homography .[2]
cvsh_src/ext/harris/alg_harris
[2:1] [2:1] .[1]
.[3] .[1] .[1] .[1]
.[1]
.[2]
.[10] .[4]
cvsh_src/ext/lmdif/lmdif_test
.[1] .[1]
.[1] cvsh_src/util/util_debug
.[2] [2:1] .[1]
cvsh_src/img/access/img_access_comb
.[1] cvsh_src/ext/lmdif/lmdif
.[2] .[1]
cvsh_src/math/proj2d/alg_homography_test .[1] .[2] [2:1]
.[1] .[2]
.[1]
.[1]
.[1]
.[3] .[1]
cvsh_src/lib/grab/vs_grab_macx1394_test
cvsh_src/lib/grab/vs_grab_macx1394 cvsh_src/ipp/ipp_add .[2]
[2:1] [2:1]
cvsh_src/math/proj2d/math_proj2d_homography
.[2] [2:1] .[2]
cvsh_src/lib/grab/vs_grab_linux1394_test .[1]
.[2]
cvsh_src/ipp/ipp_stretch .[2]
[2:1]
.[2]
cvsh_src/lib/grab/vs_grab_linux1394
.[1] [2:1]
cvsh_src/ext/canny/alg_canny .[1]
.[1] cvsh_src/lib/grab/vs_grabUtil
.[2] [2:1] .[2]
.[2]
cvsh_src/ipp/ipp_equalize cvsh_src/ipp/ipp_radial .[2]
[2:1] [2:1]
cvsh_src/ext/klt/ext_klt_view .[1]
[2:1] .[2]
.[1]
.[1]
.[1]
.[8] .[1]
.[6] cvsh_src/alg/alg_average .[1]
.[1] .[60]
.[1] cvsh_src/win/ann/win_ann_util
[2:1]
.[10]
.[5]
.[2]
.[4]
cvsh_src/ipp/ipp_subsample
cvsh_src/ext/steer/alg_steer .[1]
[2:1] .[12]
.[2] .[3]
.[1]
.[3]
.[1]
.[1] .[1]
.[1]
.[4]
cvsh_src/ext/ipv/alg_ipvTriangle cvsh_src/alg/alg_radial
.[2]
.[1]
cvsh_src/img/img_dbg
.[2] [2:1]
.[2]
.[2]
.[1]
.[1]
.[1]
cvsh_src/ext/zhang/avf_workerZhangTest
.[4]
.[1] cvsh_src/img/access/img_access_copy
.[1] [2:1]
.[1] .[1]
.[2]
.[1] .[5]
cvsh_src/alg/alg_decoratorScale
[2:1]
.[2]
.[4]
cvsh_src/math/la/math_la2D
.[2] .[1]
[2:1]
cvsh_src/util/util_time_macx
cvsh_src/ext/sift/ext_sift_avLowe
.[1]
.[1]
.[1]
cvsh_src/win/root/win_test
.[1] .[1] .[1]
.[1]
.[1] cvsh_src/math/la/math_la
.[3] [2:1]
.[1] .[1]
.[2]
.[1] .[2]
.[3] .[4]
.[1] cvsh_src/win/event/win_event
.[1]
.[1] [2:1]
.[5]
cvsh_src/win/event/win_event_abstract
.[2]
.[1]
.[2]
.[4]
cvsh_src/util/util_time
cvsh_src/ext/klt/alg_klt .[1]
.[1]
.[1] .[1]
.[1]
.[2]
.[2] cvsh_src/win/ann/win_ann
[2:1]
.[1]
.[2] .[1] .[2]
cvsh_src/util/util_time_linux
.[2]
.[1]
.[1]
cvsh_src/util/util_time_w32 .[1]
.[3] .[1]
.[1]
cvsh_src/ext/match/alg_match
.[1]
.[3] .[1]
.[1]
.[2]
.[2]
.[1] .[1]
.[1]
cvsh_src/ext/sift/ext_sift_keypoint_util
[2:1]
.[1]
.[2] .[2] .[3]
.[3]
cvsh_src/ext/sift/ext_sift_keypoint
.[1] .[1] cvsh_src/ext/sift/ext_sift_base .[3]
.[2] [2:1]
[2:1]
.[4]
.[3]
cvsh_src/ext/match/ext_match
[2:1]
cvsh_src/alg/alg_grayscale cvsh_src/ext/match/ext_match_sift .[1]
[2:1] .[3]
.[3]
.[2]
.[2] cvsh_src/math/la/math_la_util
[2:1] cvsh_src/grid/draw/grid_draw
[2:1]
cvsh_src/ext/sift/alg_sift .[1]
.[1]
cvsh_src/ext/match/ext_match_fake
[2:1] .[1]
.[5] .[1]
cvsh_src/math/proj2d/math_proj2d_util
.[1] .[1] [2:1]
.[2]
.[3] .[2] .[2] cvsh_src/math/tnt/math_tnt_la
.[1]
[2:1] .[1]
.[2] .[1] cvsh_src/math/tnt/math_tnt
.[2] .[3] [2:1]
.[1]
cvsh_src/win/x/win_x_connection
[2:1]
.[1] .[2]
cvsh_src/grid/draw/grid_draw_x
.[2]
[2:1] cvsh_src/win/x/win_x_renderer
.[1] .[6] [2:1]
.[2] .[2] cvsh_src/vs/vs_base
.[1] [2:1]
.[2]
cvsh_src/img/access/img_access_fill
cvsh_src/win/x/win_x .[5] cvsh_src/win/x/win_x_thread
.[6] [2:1]
[2:1] [2:1] .[1] cvsh_src/win/x/win_x_renderer_imlib
[2:1]
.[1]
.[1]
cvsh_src/ui/ui_report .[1]
[2:1] .[3]
.[5] .[8]
.[1] .[1]
.[2]
.[4]
cvsh_src/lib/grab/vs_grab_linuxV4L .[1] .[1] cvsh_src/vs/vs_file
cvsh_src/win/event/win_event_queue cvsh_src/lib/avi/vs_file_wmv_unix
[2:1] .[3] cvsh_src/lib/avi/vs_file_wmv [2:1]
[2:1] .[1]
cvsh_src/avf/avf_workerPointCam
[2:1] .[1]
.[2] .[1]
.[2]
.[1] .[3]
cvsh_src/lib/avi/vs_file_avi_w32 .[6]
.[1] cvsh_src/img/img_wrap
.[1]
[2:1]
.[1] cvsh_src/lib/avi/util_avi_unix
cvsh_src/alg/alg_nop cvsh_src/img/io/img_io_load_ras
[2:1]
cvsh_src/lib/avi/util_avi_w32
.[1]
cvsh_src/alg/alg_multiplex .[2]
.[1]
cvsh_src/img/img_vectorAbstract
cvsh_src/alg/alg_subsample .[1] .[1]
.[1]
.[2]
.[1] .[1]
.[3]
.[3]
.[1]
.[2]
.[1] .[2]
cvsh_src/ext/ipv/alg_ipvIpt .[1] .[6]
cvsh_src/img/img_vector
.[1]
[2:1] .[1] cvsh_src/util/util_registry
.[1]
[2:1]
.[6]
cvsh_src/alg/alg_base
[2:1] .[4]
.[2] .[1]
.[1]
.[2]
.[1] .[5]
cvsh_src/ext/empty/alg_empty cvsh_src/lib/grab/vs_grab_w32MCI .[28]
.[4] [2:1]
.[3] .[2]
.[3] .[2]
.[1] cvsh_src/avf/avf_worker
[2:1] .[1]
.[3]
cvsh_src/lib/avi/util_avi
.[1] .[6]
cvsh_src/ext/signsHSI/alg_signsGT .[3]
.[1] .[1]
.[2] cvsh_src/img/io/img_io_save_ras
cvsh_src/img/access/img_access_test [2:1]
.[6]
.[2]
cvsh_src/grid/draw/grid_draw_fileEps
cvsh_src/win/w32/win_w32 .[5] cvsh_src/win/w32/win_w32_worker .[5]
.[2] [2:1]
[2:1] [2:1] .[5]
cvsh_src/ccam/pt/ccam_pt_dumb cvsh_src/util/util_endian
.[5] .[5] .[1] cvsh_src/util/util_ras .[1]
[2:1] [2:1]
.[3] .[1] [2:1]
.[2] .[1]
cvsh_src/win/ann/win_ann_dump .[3] .[1]
[2:1]
.[1]
.[1] .[11]
cvsh_src/ccam/pt/ccam_pt_test .[2] cvsh_src/img/io/img_io_save_bmp cvsh_src/util/util_bmp
cvsh_src/avf/avf_workerDllAdapter [2:1] [2:1]
.[6]
.[1]
.[1] .[1]
.[1]
cvsh_src/ccam/par/ccam_par_fixed .[3] .[3] cvsh_src/img/io/img_io_load_bmp
[2:1] cvsh_src/ccam/par/ccam_par
.[1] cvsh_src/img/io/img_io_save_pxm
[2:1]
[2:1]
.[2] cvsh_src/ccam/pt/ccam_pt
.[1] [2:1] .[1]
.[1] .[3]
.[1]
cvsh_src/ext/ipv/ext_ipv_libmastif .[2]
cvsh_src/lib/avi/vd_file_avi cvsh_src/ext/ipv/ext_ipv_libmastif_dummy .[1] .[2]
[2:1]
[2:1] .[3]
.[1]
cvsh_src/grid/draw/grid_draw_rgb .[2] cvsh_src/grid/draw/grid_draw_colours
cvsh_src/ext/ipv/ext_ipv_libmastif_test .[2]
cvsh_src/ext/signsHSI/alg_signsHSI .[3] [2:1] [2:1]
.[1] .[3]
.[5] .[1] .[2] .[4]
cvsh_src/ext/signsHSI/narastanje
cvsh_src/ext/libvs/ext_libvs_test [2:1]
.[9] .[2]
.[3] cvsh_src/vd/vd_file_single .[2]
.[1] [2:1] cvsh_src/ext/signsHSI/nadjiBoju
.[1] [2:1]
cvsh_src/vd/vd_file_srs .[3] cvsh_src/vd/vd_file .[3] .[2]
[2:1] [2:1] .[1] .[1]
cvsh_src/ext/signsHSI/RGBtoHSI
.[4] [2:1]
.[2]
.[5] cvsh_src/util/util_string
.[4] cvsh_src/vd/vd_base .[1] [2:1]
[2:1]
.[2]
.[3] .[1] .[3]
.[4] .[1]
.[1]
.[2] .[2] .[7] .[1]
.[1]
.[1]
.[2] .[4] cvsh_src/cli/cli_wrapAbstract
.[14] cvsh_src/avf/avf_createCcam
[2:1] .[3]
.[1]
.[1] .[1]
.[3] cvsh_src/ccam/pt/ccam_pt_visca .[2]
[2:1] .[1]
.[5] cvsh_src/cli/cli_wrap
[2:1]
cvsh_src/ccam/pt/ccam_pt_mgr
cvsh_src/ext/libvs/ext_libvs_interface_jni [2:1] .[4]
[2:1] .[1]
.[1] cvsh_src/util/util_fs_unix cvsh_src/util/util_fs
.[1]
.[2] [2:1]
.[4] .[2] cvsh_src/ext/rs232/rs232_util
.[1]
cvsh_src/cvsh/cvsh_main cvsh_src/ccam/visca/ccam_visca_directMgr [2:1]
[2:1]
cvsh_src/cli/cli_parser .[1]
[2:1] .[1] .[1]
.[3] .[1] cvsh_src/ccam/visca/ccam_visca_interface
.[1]
cvsh_src/avf/avf_main
.[3] cvsh_src/ext/rs232/w32/rs232_w32_imp
cvsh_src/vs/vs_file_util .[1] [2:1]
.[2] .[6] cvsh_src/ccam/visca/ccam_visca_direct .[1]
.[8] [2:1]
.[2] [2:1]
.[17] cvsh_src/ext/rs232/w32/rs232_w32
.[1] [2:1] .[1]
cvsh_src/cvsh/cvsh_createVS .[2] cvsh_src/ext/rs232/rs232
[2:1] cvsh_src/thr/thr_base cvsh_src/alg/alg_dllStub [2:1]
[2:1] .[3]
.[1] .[9]
.[1] .[2] cvsh_src/ext/rs232/unix/rs232_unix
cvsh_src/util/util_os cvsh_src/avf/avf_workerDllStub [2:1] .[1] cvsh_src/ext/rs232/unix/rs232_unix_low
.[2] cvsh_src/cli/cli_dev .[1]
.[1] [2:1] cvsh_src/ext/rs232/w32/rs232_w32_test [2:1]
[2:1] .[1]
.[2]
cvsh_src/vs/vs_file_single .[3]
.[1]
cvsh_src/thr/thr_base_test [2:1]
.[2]
cvsh_src/ui/ui_cmd
[2:1] cvsh_src/vs/vs_file_txt .[4] cvsh_src/ext/klt/birch/klt_util
.[2] [2:1] cvsh_src/vs/vs_file_many [2:1]
.[3] [2:1] .[8]
.[1] .[10]
cvsh_src/vs/vs_file_dir .[1] .[2] cvsh_src/ext/klt/birch/klt
cvsh_src/util/util_fs_w32 cvsh_src/ext/klt/birch/storeFeatures
.[3] [2:1] cvsh_src/ext/rs232/unix/rs232_unix_test [2:1]
cvsh_src/thr/thr_primitives_unix .[1]
cvsh_src/thr/thr_primitives
.[1]
OpenMP CUDA
CPU GPU
SYNOPSIS
char * gets ( char * s );
DESCRIPTION
Never use this function .
class Image {
// ...
void load ( char const * path );
};
void Image :: load ( char const * path ){
switch ( util :: extension ( path )){
// ...
case " pdf " :{
ImageFmt fmt ;
acmePdfGetFmt ( path , fmt );
this - > reformat ( fmt );
acmePdfLoad ( path , this -> getBuffer ());
}
};
Neki korisnici mogu podnijeti višu cijenu, drugi ne: odjednom imamo
dvije verzije komponente (glavobolja za održavanje)
Rješenje:
□ izdvojiti metodu load u zasebnu komponentu
□ ta komponenta mora ispitati je li acmePdf dostupna (introspekcija)
□ u slučaju nedostupnosti bacamo iznimku
Kalendar nastave:
kraj ožujka: L1 Kontinuirana provjera:
sredina travnja: L2 laboratorij: 10 (A) + 10 (B)
kraj travnja: MI ispiti: 40, 40
sredina svibnja: L3 preduvjet: 40% laboratorija
početak lipnja: L4
Klasični ispit:
sredina lipnja: ZI
preduvjet: 50% laboratorija
početak srpnja: KI