Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 32

Chng 5: Ci t phn mm

CHNG 5

CI T PHN MM
Ci t l mt cng on trong vic pht trin phn mm v n c xem l mt h qu tt yu ca thit k. Tuy vy, phong cch lp trnh v cc c trng ca ngn ng lp trnh c nh hng ln n cht lng ca phn mm. Mt chng trnh c ci t tt em li cho ta thun li trong vic bo tr sau ny. 5.1. PHONG CCH CI T CHNG TRNH Sau khi sinh ra chng trnh ch, chc nng ca mi module phi r rng, khng cn tham kho ti c t thit k - ni cch khc, chng trnh phi d hiu. Phong cch lp trnh bao hm mt trit l v lp trnh nhn mnh ti tnh n gin v r rng. Vit mt chng trnh my tnh l vit mt dy cc cu lnh trong ngn ng hin c. Cch thc mi mnh ny din t trong chng mc no s xc nh ra tnh d hiu ca ton b chng trnh... Cc yu t ca phong cch bao gm ti liu bn trong, phng php khai bo d liu, cch tip cn n vic xy dng cu lnh, cc k thut vo/ra... 5.1.1. Ti liu chng trnh Ti liu chng trnh c hiu l ti liu bn trong ca chng trnh gc. N bt u vi vic chn la cc tn gi nh danh, tip n l v tr v thnh phn ca vic ch thch, v kt lun vi cch t chc trc quan ca chng trnh. Vic la chn cc tn gi nh danh c ngha chnh l iu ch cht cho vic hiu chng trnh. Nhng ngn ng gii hn tn bin hay nhn ch c trong vi k t nn t n mang ngha m h. Nhng ngha thng thng phi c p dng khi tn gi c chn, cc tn gi di khng cn thit i lc c th a ra tim nng li. Cc nghin cu ch ra rng cho d mt chng trnh nh th mt tn gi c ngha cng lm tng tnh d hiu. Theo ngn t ca m hnh c php/ng ngha, tn c ngha lm "n gin ho vic chuyn i t c php chng trnh sang cu trc ng ngha bn trong". Kh nng din t nhng li ch thch theo ngn ng t nhin nh mt phn ca bn in chng trnh gc u c mi ngn ng lp trnh cung cp. Tuy nhin, mt s vn ny sinh: Bao nhiu ch thch l ""? Nn t ch thch vo u? Ch thch c che m lung logic khng? Ch thch c lm lc hng c gi khng? 87

Chng 5: Ci t phn mm

Liu c ch thch "khng bo tr" khng, v do khng tin cy c?

Tuy vy, mt iu l r rng: phn mm phi cha ti liu bn trong. Li ch thch cung cp cho ngi pht trin mt ngha truyn thng vi cc c gi khc v chng trnh gc. Li ch thch c th cung cp mt hng dn r rt, d hiu trong khu bo tr ca cng ngh phn mm. C nhiu hng dn c ngh cho vic vit li ch thch. Cc ch thch m u v ch thch chc nng l hai phm tr i hi cch tip cn c hi khc. Li ch thch m u nn xut hin ngay u ca mi module. nh dng cho li ch thch nh th l: 1. Mt pht biu v mc ch ch r chc nng module. 2. M t giao din bao gm: a) Mu li gi, b) M t v mi i s, c) Danh sch tt c cc module thuc cp. 3. Tho lun v d liu thch hp nh cc bin quan trng v nhng hn ch v gii hn v cch dng chng, v cc thng tin quan trng khc. 4. Lch s pht trin bao gm: a) Tn ngi thit k module (tc gi), b) Tn ngi xt duyt (kim ton) v ngy thng, c) Ngy thng sa i v m t sa i, Cc ch thch m t c nhng vo bn trong thn ca chng trnh gc v c dng m t cho cc hm x l. Li ch thch nn a ra mt iu g ph tr, khng ch l li din gii chng trnh. Bn cnh , li ch thch m t nn: M t cc khi chng trnh, thay v ch thch cho tng dng. Dng dng trng hay tht cp cho li ch thch c th c phn bit vi chng trnh Phi ng n; mt li ch thch khng ng hay gy ra hiu sai th cn ti t hn l khng c ch thch no c. Vi nhng tn gi tng trng ng n v vic ch thch tt, vic lm ti liu bn trong thch hp s c m bo. Khi mt thit k th tc chi tit c biu din bng cch dng mt ngn ng thit k chng trnh th ti liu thit k c th c nhng trc tip vo trong vn bn chng trnh gc nh nhng cu ch thch. K thut ny c bit c ch khi vic lm ti liu c thc hin trong hp ng v gip m bo rng c chng trnh v thit k s c bo tr khi nhng thay i c thc hin cho c hai. Vic vit tht cp chng trnh gc ch ra kt cu v khi logic ca chng trnh sao cho nhng thuc tnh ny l thy c so vi l bn tri. Ging nh vic ch thch, cch tip cn tt nht ti vic tht cp l nn m cho tranh lun. Vic tht cp th cng c th tr nn phc tp khi c s sa i chng trnh v kinh nghim ch ra rng khi tch lu hiu bit th s tng cng c vic l cho khp. C l cch tip cn tt nht l dng b nh dng chng trnh t ng (nh cng c CASE) s t ng vic tht cp cho chng trnh gc. N xo b i gnh nng ca vic lm tht cp cho ngi lp trnh, v c th ci thin khun dng chng trnh vi tng i t n lc. 88

Chng 5: Ci t phn mm 5.1.2. Khai bo d liu phc tp v vic t chc cu trc d liu c xc nh trong bc thit k nhng phong cch khai bo d liu th c thit lp khi chng trnh c sinh ra. Th t khai bo d liu nn c chun ho cho d ngn ng lp trnh khng c yu cu bt buc. iu ny to iu kin thun li cho vic kim th, g ri v bo tr. Thm ch, khi c nhiu nh danh c khai bo trong cu lnh th vic sp xp theo trt t ch ci cho cc tn gi cng c gi tr. Nu thit k c m t trc cu trc d liu phc tp th nn dng ch thch gii thch cc im c th trong ci t ngn ng lp trnh. 5.1.3. Xy dng cu lnh Mc du vic xy dng lung logic phn mm c thit lp thit k nhng vic xy dng cu lnh nm bc lp trnh. Thc t chng minh, vic xy dng cc cu lnh ca chng trnh nn tun theo phong cch lp trnh cu trc. Cc cu lnh nn n gin v trc tip, khng b xon vo nhau m bo hiu qu. Trong th hin chng trnh, cch xy dng cu lnh n v vic tht cp chng trnh minh ho cho c trng logic v chc nng ca giai on ny, v nn tun theo cc ch dn: + Trnh dng cc php kim tra iu kin phc tp, + Kh b cc php kim tra iu kin ph nh, + Trnh lng nhau gia cc iu kin hay chu trnh, + Dng cc du ngoc lm sng t cc biu thc, + Dng cc du cch v cc k hiu d c lm sng t ni dung cu lnh,... 5.1.4. Vo v ra Phong cch vo/ra c thit lp khi phn tch v thit k phn mm nhng cch thc ci t vo/ra li nh hng ln n ngi s dng h thng. Phong cch vo/ra s thay i theo mc tng tc con ngi. Vi vo/ra theo l th cch t chc ci vo logic, kim tra li vo/ra c ngha, phc hi li vo/ra tt v nh dng bo co ra hp l l nhng c trng mong mun. Vi vo/ra tng tc th mt s a vo c hng dn, n gin, vic kim tra li k lng v c th phc hi, s nht qun nh dng vo/ra li l cc mi quan tm ch yu. Khi ci t vo/ra, cn tho mn cc tiu ch c bn sau: + Lm hp l mi ci vo, + Kim tra s tin cy ca cc t hp d liu vo quan trng, + Gi cho nh dng d liu vo n gin, + Dng cc ch bo cui d liu thay v yu cu ngi s dng xc nh s cc khon mc vo, + t nhn cho cc d liu vo, + Gi cc nh dng d liu vo thng nht,... 89

Chng 5: Ci t phn mm 5.2. NN TNG CA NGN NG LP TRNH 5.2.1. Kiu d liu, nh ngha kiu d liu v kim tra kiu d liu Kiu d liu l loi d liu c nh ngha t trc ca ngn ng v mi ngn ng h tr mt s kiu d liu. Tt c cc ngn ng u h tr bin, hng s dng trong d liu s v d liu k t. Kiu d liu c h tr chung l: s nguyn, s thc v xu k t. Mt s t ngn ng h tr cc kiu d liu khc nh: Logical, Boolean, Pointer, Object, Bit, Date,... hoc kiu d liu t nh ngha. Kiu Boolean sinh ra gi tr nh phn True, False da trn so snh logic. Pointer l a ch ca chng trnh khc hoc cu trc d liu m c dng tham chiu n trong chng trnh. Object c xy dng ng gi d liu v phng thc. Kiu d liu Date nh ngha ngy thng nm trong mt khun dng hp l - thay cho vic phi vit cc chng trnh x l kiu Date, ta c th s dng cc th tc c sn ca ngn ng. Cc cu trc d liu nh mng, bng, danh sch tuyn tnh,... l loi th ba ca cu trc d liu ca ngn ng. Cc ngn ng c th h tr hoc khng h tr kiu ny. Tuy nhin, cc kiu d liu n gin nh mng, danh sch tuyn tnh,... thng c hu ht cc ngn ng h tr. Cui cng, kiu d liu t nh ngha l kiu d liu do lp trnh vin nh ngha v ch c gi tr trong mt chng trnh hoc ng dng nht nh. Kiu d liu t nh ngha c th dng nh ngha cc kiu d liu khi ngn ng khng h tr kiu d liu . Kim tra kiu d liu l vic ngn ng kim tra s ph hp ca kiu d liu c nh ngha trong cc php ton hc v cc ton t logic. C bn mc kim tra kiu, t khng kim tra kiu n kim tra cht, mc cht ch ca kim tra ph thuc vo dng ng dng. Ni chung cc tin trnh cng cn s chnh xc, nht qun v n nh th cng i hi mc kim tra kiu cht ch hn. Trong lp trnh hng i tng, kim tra kiu cng quan trng bi tnh a hnh cho php nhiu module thc hin cng chc nng trn nhiu kiu d liu khc nhau, cho nn kim tra kiu cht ch s lm gim kh nng chng trnh gp li. + Khng kim tra kiu (typeless checking) ngha l khng tin hnh s kim tra kiu mt cch tng minh. V d: Trong cc ngn ng khng kiu nh Basic hoc Cobol, cc k t c php gn bi integer, nhng c th gy ra li nu trng ny c tham chiu nh l mt s nguyn. Khng c g bo m vic khng gp li khi ta thao tc trn cc trng khng kiu. Cc ngn ng hoc chng trnh dch c cch x l trng khng kiu khng thng nht. 90

Chng 5: Ci t phn mm + Mc kim tra kiu tip theo l p kiu t ng (automatic type coercion), trong nhiu kiu d liu c php dng chung, nhng khng phi tt c v c th dn n li chuyn i cc kiu khng tng thch. Mc kim tra kiu ny cn c tn kim tra kiu dng hn hp (mixed mode type checking), nhng kiu d liu khc nhau nhng thuc cng mt phn loi c chuyn sang mt kiu ch i vi ton t kiu hn hp. V d, trong Fortran, trn ln s thc v s nguyn trong ton t ton hc dn n cc kt qu khng th d on c bi v kiu ch (target type) c quyt nh bi vic nh ngha trng kt qu. Nu trng kt qu c nh ngha l thc, kt qu tnh ton l s thc. Nu trng kt qu c nh ngha l integer, tin trnh s lm trn cu tr li (s thc) v a ra kt qu l integer. + Kim tra kiu gi cht (Pseudostrong type checking) l mc th ba ca kim tra kiu, n cho php thao tc cc i tng d liu thuc cng mt kiu d liu, nhng php kim tra kiu ny ch p dng khi chng c nh ngha trong cng mt module. Pascal l ngn ng c kim tra kiu gi cht, n h tr kim tra kiu cht ch trong module, nhng khng h tr cho gia cc module. Cho nn, d liu truyn t mt module sang module khc c th chuyn sang kiu d liu khc m khng b bt li. + mc cao nht ca kim tra kiu ca ngn ng, kim tra kiu cht ch ch cho php thao tc trn nhng i tng d liu c cng kiu xc nh t trc, bt k n nm trong cng hoc khc module. Nu trong module c kiu d liu khng hp l, ng dng s dng v a ra mt thng bo li. Ada l ngn ng cung cp kim tra kiu cht ch. 5.2.2. Chng trnh con S tinh t ca ngn ng th hin mc h tr module ho v qun l b nh. Module ho l cch thc to ra chng trnh con v hm. Cc ngn ng khc nhau cch h tr chng trnh con v d liu ca n. Trc ht, kh nng nh ngha chng trnh con, hm l quan trng c c cc c trng chng trnh mong mun. Th hai, d liu trong cc module c qun l nh th no? D liu c th l cc b hoc tng th. Kh nng c c d liu cc b l quan trng trong vic che giu thng tin v gim thiu vic lin kt. Phm vi d liu tng th cn c gii hn m bo cht lng ca chng trnh trong vic giu thng tin v s lin kt. Trong cc ngn ng, chng trnh con c gi thng qua tn ca n. Tu chn cho x l vic gi bao gm c vic truyn d liu bng bin, bng tn, bng a ch, hoc bng gi tr. Truyn gi tr i hi s nh ngha d liu cc b trong khi truyn d liu bng tn hoc bng a ch c s dng vi hoc d liu cc b hoc d liu tng th. Ni chung, khi s dng chng trnh con, module chnh gi chng trnh con lm nhng vic ca n v tr li kt qu cho module chnh. Kh nng h tr x l chng trnh con i hi mt hoc nhiu hn mt mc vo hoc im thot. X l Exit v Return cng quan trng khi chuyn quyn iu khin gia cc module. Trong cc trng hp, cng nhiu c hi vo v thot khi module xc nh trc, th 91

Chng 5: Ci t phn mm lp trnh vin cng cn s thnh tho, m bo kh nng x l thnh tho, m bo kh nng x l hon ho. Theo cc nh lp trnh cu trc, mt module c thit k tt nn c mt im vo v mt im ra. Module mt vo v mt ra t gy li hn so vi cc module c nhiu mc vo, im ra. 5.2.3. Cu trc iu khin V bn cht, mt chng trnh my tnh l mt bn m ho thut ton. y, cc i tng chu thao tc c m t v kin trc thng qua cu trc d liu cn cc thao tc c m t thng qua cc cu trc iu khin. Nh vy, cu trc iu khin ca ngn ng l yu t quyt nh thao tc g v thao tc nh th no trn d liu m t. Chng cung cp cc kh nng x l: tun t, lp v cch thc la chn cc cu trc d liu. S tun t c hai dng: gia cc dng lnh v trong dng lnh. Lp trnh vin iu khin s tun t gia cc dng lnh (between-command sequencing) nh l mt trt t ca cc lnh, cn s tun t trong dng lnh chnh l th t u tin ca cc php ton -operator precendence- dng trong thao tc d liu, n c cc ngn ng quy nh sn. Vi hai khi lnh A, B tun theo phng thc x l tun t th vi R l s ln thc hin ca khi lnh ta c RA=RB=1. Cu trc tun t trong cc ngn ng lp trnh thng tun theo trt t t tri sang phi v t trn xung di. Cu trc la chn trong ngn ng lp trnh thng c m t di cc t kho If hoc Case. Vi biu thc iu kin la chn E v cc khi lnh la chn A1,A2,...,An, theo k hiu trn ta c 1=RE>=RA1+...+RAn. Cu trc lp trong ngn ng lp trnh c h tr bi cc dng: lp bit trc s ln lp (For), lp vi kim tra iu kin lp trc - lnh canh t trc (While......do), v lp vi kim tra iu kin lp sau (Do.......while). Lp bit trc s ln lp c nh du bi cc biu thc m c u (D) n cui (C). Vi khi lnh A trong thn vng lp, ta c RC=RD=1 v RA=C-D+1 nu C>=D, ngc li th RA=0 nu C<D. Lp vi kim tra iu kin lp trc ng vi biu thc iu kin lp E th lc ny, khi lnh A trong thn vng lp tun theo: 1<=RE=RA+1. Cn lp vi kim tra iu kin lp sau ng vi biu thc iu kin lp E th khi lnh A trong thn vng lp tun theo: 1<=RE=RA. S tng ng ca cc chng trnh trong vic m ho bi cc cu trc iu khin c ch ra nh l Boehm&Jaccopini nh sau: Mi chng trnh P c th hin bng s khi u tn ti mt chng trnh Q tng ng mnh vi n nhng ch dng hai cu trc iu khin m t l cu trc tun t v cu trc lp vi iu kin lp xt trc. Ngoi vic cung cp cc cu trc iu khin, cc ngn ng cn h tr cc phng thc nh: Exits, Return, Fail,... thot khi module hin ti tr v module gi hoc ti module khc. 92

Chng 5: Ci t phn mm Bn cnh cc cu trc iu khin cp trn, quy l mt thuc tnh ca module. Chng xut hin khi module gi chnh chng hoc cc module gi ln nhau. Trong mt s ngn ng lp trnh, s quy khng c h tr mt cch tng minh, nhng n li c coi l sc mnh chnh ca mt s ngn ng khc- v d nh ngn ng Prolog. cc chng trnh s dng quy, i hi kh nng duy tr hng i hoc stack ca chng trnh. 5.2.4. Vo v ra d liu C bn dng thng tin vo/ra (I/O) l: lnh vo/ra c th, hng bn ghi, hng tp hp, v hng mng. Vo/ra hng bn ghi c hoc ghi cc bn ghi vt l, bn ghi ny c th cha ng mt hoc nhiu bn ghi logic. Cc bn ghi (hoc l b trong i s quan h) s nhm cc trng d liu c quan h vi nhau. Vo/ra hng bn ghi i hi ng m file, c ghi cc bn ghi v qun l ngi s dng tt c cc cng vic x l file. V d: Cobol, Fortrans, Assembler, Ada l cc ngn ng hng bn ghi. Hng tp hp gi s rng tt c cc bn ghi (hoc cc b) c coi nh nhau. Ngn ng iu khin mi file v mi tin trnh c ghi theo s la chn m ngi s dng nh ngha. cui th tc, tp cc bn ghi (l kt qu ca th tc) c lu tr trong b nh phc v cho vic in n, hin th. V d SQL l ngn ng hng tp hp. Vo/ra hng mng l c v ghi chui cc trng c gi thit l kiu mng, ngi s dng c nhim v nh ngha v thao tc kiu d liu ca mng. Ngn ng ch n gin c v ghi cho n cui mng d liu. Pascal l ngn ng hng mng. Vo/ra trc tip danh sch (list-directed I/O) l mt bin th ca vo/ra hng mng. Fortrans s dng vo/ra trc tip danh sch nh ngha danh sch cc tn bin, mi tn bin c truy cp trc tip khi chng c c. N c cho n khi danh sch y ri x l cho n khi lnh c c thc hin li. Cc mc d liu khng c nh dng c th, m khun dng ngm ch trong tn bin. 5.2.5. Qun l b nh S tinh t ca ngn ng cn th hin mc lp trnh vin kim sot iu khin vic qun l b nh. Qun l b nh l kh nng chng trnh phn b b nh my tnh khi cn. y l tu chn nhng chng c s dng nhiu khi x l danh sch bin v cc ng dng thi gian thc qun l ti nguyn nhiu ngi s dng. Cc ngn ng c tinh t thp s dng b nh tnh: chng trnh nhn lng b nh ln nht ti thi im khi to. Nu chng trnh cn nhiu b nh hn lng c cp pht th chng trnh s b treo, ngn ng iu khin nhim v (job control language) s cp pht lng b nh thiu chng trnh chy li. Cc ngn ng tinh t hn s dng kh nng cp pht b nh ng, tc l ch cp pht b nh khi no cn thit. 5.2.6. Qun l li Qun l li l mc chng trnh c ci t pht hin v qun l li m khng phi dng chng trnh. Kh nng ny s lm tng phc tp v m rng phm vi hu ch ca ngn ng. V d Cobol cho php ta chn ng li d liu nh 93

Chng 5: Ci t phn mm trn, chia cho 0, nhng li khng chn c li nh nh ngha d liu khng hp l, c qu cui file,.... Ngc li Smalltalk cho php chn c bt k li no. Tm li, ngn ng lp trnh khc nhau mc chng h tr cc cch khc nhau cho iu khin d liu, x l vo/ra, thao tc ton hc, chng trnh con, v qun l b nh. Ngn ng h tr t l ngn ng n gin. Cu trc ngn ng cng phc tp th phm vi bao qut ca n cng ln. 5.3. CC C TRNG CA NGN NG CI T Cc c trng c nh gi y gm: ng nht (uniformity), sng sa (ambiguity), c ng (compactness), a phng cc b (locality), tuyn tnh (linearity), d lp trnh, dch hiu qu, kh chuyn. Tnh sn c ca cng c tr gip, cc b sinh m v tnh sn dng ca cng c tr gip kim tra cng c thm vo nhm lm tng tnh hp dn ca ngn ng. Tnh ng nht l cch s dng k hiu nht qun trong c ngn ng. Mt v d ca s khng nht qun trong Focus l vic s dng du ngoc n cho tiu bn bo co do ngi s dng to ra v du ngoc kp ca trang bn bo co. Ngn ng khng nht qun cn tr ngi s dng hc v d gy li. Tnh sng sa cp n mc con ngi v chng trnh dch bt ng trong vic dch cc cu lnh ca ngn ng. L tng nht l ngha ca con ngi tng t vi s bin dch ca trnh dch v chng trnh dch ra ging s nhn thc ca con ngi. Tht khng may, tnh sng sa c nhng vn c hu ca mnh, nh cc ng dng tr tu nhn to (ng dng suy lun trong c tin trnh), khi thm lut, c ch mi vo, s thng dch ca d liu, lut c l cng thay i. Tnh c ng ca ngn ng nm s ngn gn. Cc c trng ca chng trnh bao gm s kt cu c cu trc, t kho v vit tt, hm c sn, n gin ho vic lp trnh. Tng phn vi hai ngn ng th h bn SQL v Focus l Cobol, ngn ng th h ba. Thc t cho thy 3 n 5 dng lnh 4GLs tng ng vi 50 n 150 dng lnh trong ngn ng Cobol. Thi gian hc Focus ngn hn Cobol mt phn l bi tnh c ng ca ngn ng. Tnh c ng bao hm tnh cc b trong vic cung cp s phn on t nhin ca m lnh, lm n gin ho vic hc, trc quan ho tng phn ca vn v c th m phng cc gii php. Tnh cc b c cung cp thng qua khi case, hoc nhng c ch phn on (chunks). S phn on c l c thc hin thng qua thc thi on m trong ngn ng Cobol, cu trc case trong ngn ng Focus, hoc nh ngha i tng trong ngn ng Smalltalk. Tnh tuyn tnh cp n mc c th c m mt cch lin tip (tun t). Ngn ng cng tuyn tnh (tun t) th cng d phn on v hiu on m. Tnh tuyn tnh n gin ho vic hiu v bo tr. Trong v d on m Cobol c cht thnh cc on v thc hin.

94

Chng 5: Ci t phn mm Trong la chn ngn ng kh khi bin dch cng ng mt vai tr quan trng. Ni chung, nhiu ngn ng m t, v d nh SQL, ang c xem xt, cn nhc trn c s d dng hn khi dch ra m ng so vi cc ngn ng th tc nh Fortran. Mc d vy, Prolog v cc ngn ng suy din khc tuy n gin trong vic m t v pht trin cc lut n nhng khng tm thng trong vic quyt nh kt hp cc lut to ra cc tri thc ng mi. Tnh hiu qu ca trnh bin dch nm tnh hiu qu ca m assembler nhn c sau khi dch. Tnh hiu qu thay i tu theo ngn ng v nh sn xut. Tnh hiu qu ca trnh bin dch c bit quan trng khi lp trnh mt h thng my bay hay cc ng dng thng tr tng tc vi cc thnh phn h thng nh l mt phn ca h thng ln. Cng vi tnh hiu qu, tnh kh chuyn ca m cng rt quan trng. Tnh kh chuyn l kh nng p ng ca m trn cc c s thc hin khc nhau. Cc c s thc hin bao gm c phn cng, h iu hnh, hay mi trng thc hin phn mm. Khi cc ng dng dng chung v phn tn cng ph bin th s cn thit i vi tnh kh chuyn ca ngn ng s cng tng. L tng nht, chng trnh s thc hin c bt c ni no, trn bt c phn cng hay h iu hnh no. Tm li, nn tng khng ng vai tr chnh phn bit ngn ng th nhng tnh c trng ca ngn ng s tr nn quan trng trong vic la chn ngn ng. 5.4. PHN LP V NH GI V NGN NG CI T 5.4.1. Cc lp ngn ng Hin nay c hng trm ngn ng lp trnh, tuy nhin theo nh gi th ngi ta chia n ra lm bn th h - t th h th nht n th h th bn. + Cc ngn ng th h th nht: l cc chng trnh c vit theo m my hoc hp ng. Cc ngn ng ny ph thuc vo my v c mc tru tng thp. Ta ch nn dng cc ngn ng ny khi cc ngn ng cp cao khng th p ng c hay khng h tr yu cu ca ng dng. + Cc ngn ng th h th hai: c pht trin t cui nhng nm 1950 n u nhng nm 1960, nh FORTRAN, COBOL, ALGOL, BASIC,... N c xem l nn tng cho mi ngn ng lp trnh hin i - th h th ba. Cc ngn ng th h th hai c t trng bi vic s dng rng ri th vin phn mm khng l v n cng c chp nhn rng ri. + Cc ngn ng th h th ba: cn c gi l ngn ng lp trnh hin i hay c cu trc. N c c trng bi kh nng cu trc d liu v th tc mnh. Cc ngn ng thuc th h ny nh: PASCAL, C, ADA, MODULA-2, C++, COBJECTIVE,...

95

Chng 5: Ci t phn mm + Cc ngn ng th h th t: Trng tm ca ngn ng th h th t l nng mc tru tng ca chng trnh ln cao. Cc ngn ng ny cng ging nh mi ngn ng nhn to khc u cha mt c php phn bit biu din iu khin v cu trc d liu, tuy nhin n biu th cc cu trc ny mc tr tng cao hn bng cch xo b yu cu xc nh chi tit thut ton. Mt s ngn ng thuc th h th t nh ngn ng vn p, ngn ng h tr quyt nh, ngn ng lm bn mu,... 5.4.2. So snh, nh gi v mt s ngn ng ci t y, chng ta nh gi mt s ngn ng ph bin c dng trong cc t chc kinh doanh ngy nay nh: SQL, Focus, Basic, Cobol, Fortran, C, Pascal, Ada, Prolog, v Smalltalk. Nhng ngn ng ny i din cho nhng kiu lp trnh ch yu xt trn gm: lp trnh th tc (Basic, Cobol, Fortran, Pascal), hng i tng (Smalltalk, Ada), x l khai bo (SQL, Prolog), cc ngn ng th h th t (Focus), v h chuyn gia (Prolog). 1. SQL- Structured Query Language c xem l chun American National Standards Institute i vi ngn ng hi p c s d liu, SQL l mt ngn ng kh thnh cng. u im ca SQL hu ht khng mang tnh k thut: d dng s dng, gn gng, ng nht, cc b, tuyn tnh, tnh kh chuyn v kh nng t ng ca cc cng c. S n gin ca ngn ng c th hin thi gian hc ngn ng nhanh i vi nhng ngi ln u s dng ngn ng - ngi mi hc c th vit cu hi trong vng t pht. V thi gian tr thnh thnh tho t hn so vi cc ngn ng c s d liu khc. Nhiu mi trng h tr phn tch v thit k trn h c s d liu logic thng qua cc qu trnh chun ho. Cc sn phm ny cng sinh ra lnh SQL nh ngha c s d liu nh l kt qu thit k logic c s d liu. 2. Focus L ngn ng th h bn bao gm mt Database Engine cng ngn ng hi p tng thch vi SQL, b hin th, h h tr ho, thit k, bo tr v cc tin trnh x l thng minh. Focus DB h tr cc m hnh quan h, m hnh phn cp v m hnh mng, cung cp mt giao din vi nhiu khun dng. Cng nh SQL, mt mnh ch yu ca Focus lin quan ti nhng c trng phi k thut ca ngn ng, l tnh c ng, tnh cc b, tnh tuyn tnh, khng b rng buc bi m chuyn i, tnh kh chuyn v tnh sn dng ca cng c CASE cho vic phn tch thit k d liu. i khi Focus c th nhp nhng trong vic bin dch s phn cp d liu hay a kt ni d liu. Hng lot cc version ca Focus h tr cc kh nng a ngi s dng. Focus l mt ngn ng c ngm nh l khng h tr nhng nh ngha ca ngi dng hoc nhng ti nguyn khc ca ngi s dng. 3. Basic - Beginers All purpose Symbolic Interchange Code c nh gi mt ngn ng mnh, c bn, trong ngn ng khng c nhng k thut phc tp nhng c ton b cc thnh phn s ng. Basic l mt ngn ng d 96

Chng 5: Ci t phn mm hc, d vit, c tnh thng nht, cht ch v cc h thng tr gip kim tra t ng tt. Cc c trng ngn ng cn li thay i tu thuc vo cc phin bn Basic khc nhau. Kh nng kh chuyn ca Basic km bi cc lnh vo ra thng phi thay i ph hp vi mi trng. Basic h tr cc thao tc lp trnh chun vi mt s gii hn, cng mt s kiu d liu nhng khng c chc nng kim tra kiu. Cu trc ngn ng bao gm cc php lp, iu kin v x l mng, c/vit cc file. 4. Cobol- Common Business Oriented Language L mt ngn ng c s dng nhiu trong lch s my tnh. Cobol c v nh mt chic xe bus, lp trnh Cobol mt nhiu thi gian, nhng n li ph hp vi mt s vn thng mi. Nh mt ngn ng a mc ch, Cobol cung cp tt c cc chc nng c bn. Cc tin trnh vo/ra ca Cobol rt hiu qu, c tnh thng nht cao v h tr hu ht cc loi d liu. Ngn ng Cobol khng ph hp cho nhng ng dng thi gian thc hay cc ng dng quy. Trong cc c trng phi k thut, Cobol c tnh sn dng cao ca cng c tr gip, b sinh m, v cc chng trnh kim tra. Nh hu ht cc ngn ng thng dng khc Cobol l ngn ng u tin c pht trin h tr t ng. y l ngn ng c tnh t ng cao v c h tr bi nhiu trnh bin dch. Trong cc c trng phi k thut khc, Cobol thng km hn SQL v Focus nhng cng tt hn nhiu cc ngn ng th tc khc. 5. Fortran - Formula Tranlastion L mt ngn ng ca nhng nm 60. im yu ca Fortran l trong lnh vc x l d liu v h tr cu trc file. Fortran khng c tch hp vi cc phn mm DBMS cc gii hn v tun t... V th cc qu trnh vo ra ca Fortran thng b gii hn nhiu so vi cc ngn ng khc. im mnh ca Fortran l tnh hiu qu trong gii thut sinh m thc hin qu trnh x l s. Chng trnh dch ca Fortran thng c h tr bi mt th vin cc chng trnh con cha nhiu thut ton ngn c s dng thng xuyn, cc qu trnh thit k v x l ton hc. Cc chng trnh con ny c thit k d dng nh ngha v s dng cc bin tng th v cc bin cc b. S xo trn cc dng d liu trong Fortran l rt quan trng bi v qu trnh x l s s cho kt qu khc nhau tu thuc vo nh ngha nhng trng d liu c x l. 6. C C l mt ngn ng cp cao c pht trin thc hin cc x l cp thp. Mt chng trnh vit bng C l mt dy cc hm v chng c truy cp n bi mt tn ca chng trong m ca chng trnh. C l mt ngn ng ngn gn, xc tch v kh hiu v th n ch thc s hiu qu cho nhng ngi lp trnh c nhiu k nng v kinh nghim v lp trnh v c th s khng mang li hiu qu cao cho nhng ngi lp trnh vin km. 97

Chng 5: Ci t phn mm 7. Pascal Pascal l mt ngn ng c thit k rt r rng v c dng lm ti liu ging dy cho sinh vin ca ngnh khoa hc my tnh. Mt chng trnh vit bng Pascal thng c mt khun dng rt thoi mi v Pascal li c cu trc c php t nhin cho nn Pascal tr thnh ngn ng rt d c. Trong thi im hin ti Pascal c cung cp nhng tin trnh iu khin thi gian thc. Tuy nhin Pascal chun khng cung cp nhng th vin thng thng bi v hi ngi ta u cho rng tt c cc module chng trnh c vit thnh mt chng trnh c ngha l m ca chng trnh nm trong khun kh mt chng trnh n. Trong Pascal c mt s iu khin nh thc hin cc tin trnh ngt. Tin trnh vo ra c gii hn hn so vi mt s ngn ng, khng h tr truy cp ngu nhin v rt hn ch trong vic x l xu. 8. Prolog - Programming in Logic L mt ngn ng c pht trin ring cho lnh vc tr tu nhn to. Prolog c pht trin bi mt trng i hc Marseiller t rt sm (nhng nm 70) nhng c pht trin rng ri M bi David Warren. Prolog l mt ngn ng hng mc ch, mt ngn ng c t vi cu trc l nhng mnh v cc lut. Prolog mnh l nhng thnh phn c th ca thng tin thc. Prolog lut c nh ngha t mnh c gi nh to thng tin. 9. Smalltalk Smalltalk c pht trin nh l mi trng iu hnh v ngn ng lp trnh vo nhng nm 70 ti trung tm nghin cu Xerox Palo Alto bi nhm Learning Research. l mt ngn ng hng i tng, coi mi th nh l i tng, thm ch i vi th hin, cc s nguyn. Smalltalk c ti u mc cao v do vy, c s dng thit k cc ng dng c hiu qu. Smalltalk c y cc chc nng, l ngn ng lp trnh c th lm c mi vic khng hn ch. im yu ch yu ca Smalltalk l khng h tr cc i tng lin tc nh l file. Nhng nu file c coi l mt i tng, th n c th c x l trong Smalltalk . im mnh ca Smalltalk l n c s dng trong cc qu trnh x l hng s kin nh trong iu khin tin trnh, vic iu khin h thng iu ho nhit , hoc l s thng bo kp thi nhu cu sn xut. Cc ng dng loi ny s dng cc thng ip khng lin tc t mi trng bn ngoi iu khin qu trnh x l thc hin bi ng dng. 10. Ada Ada, ngn ng lp trnh chnh thc ca B Quc phng M vi hng trm nghn ngi s dng, c mt li t duy khc v cch lp trnh so vi cc ngn ng khc. Ada c thit k bi mt hi ng v khng to thnh mt ngn ng hon thin nhng n li tt hn tt c. Phin bn hin hnh ca Ada l da trn i tng 98

Chng 5: Ci t phn mm hn l hng i tng. Trong cc ng dng da trn cc i tng, cc chng trnh cng hot ng trn mt tp hp cc i tng, mi tp hp i din mt th hin ca mt vi kiu i tng. Tt c cc kiu i tng l thnh phn ca m hnh phn cp cc kiu m chng c kt ni thng qua qu trnh x l hn l vic k tha cc quan h. Cc lp thng kh phn bit vi cc kiu bi v khng c cc i tng nht qun nh l file v n khng h tr k tha. Khi nim file trong Ada ging nh trong Smalltalk c nh ngha l mt kiu trong cu trc ca ngn ng v mi qu trnh x l hin trn cc kiu. Ging nh Smalltalk, sc mnh ca Ada l kh nng ca n trong vic h tr x l hng s kin nh tn la dn ng trong h thng phng th quc gia. Phin bn tng lai ca Ada c th p ng cu trc tha k v x l a lp v s lin kt ng cc i tng, x l thng ip thc nht qun v cc i tng nht qun cung cp cc cu trc d liu a dng. Vi s m rng ny ngn ng Ada thch hp vi cc ng dng o. Mt s lu tng t v s khc nhau trong t duy hng i tng nh ch ra trong phn Smalltalk: thit k hng i tng v pht trin chng trnh khc nhau v c bn hn l s pht trin cc ng dng th tc thng thng vi cc ngn ng nh l Cobol. 5.4.3. Chn ngn ng cho ng dng Khi lm vic trn ng dng ta khng c s la chn v ngn ng. Nhng nu ban u chn sai ngn ng th chng ta phi lin tc sa i yu cu ph hp vi nhng gii hn ca ngn ng. Vic la chn ngn ng lp trnh phi xem ngn ng lp trnh c ph hp vi kiu ng dng hay khng v xem n c ph hp vi vic dng pht trin ng dng. Da vo cc nh gi 5.4.2, ta c bng thng k v vic la chn ngn ng lp trnh da trn cc tiu ch ca ng dng nh sau Kiu ng SQL Focus Basic Cobol Fortran C Pascal Prolog Ada Smalltalk dng L X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X

Trc X tuyn Thi gian thc Hi p X CSDL H tr X quytnh Hchuyn gia EIS

99

Chng 5: Ci t phn mm 5.5. HIU QU CA CHNG TRNH V TM QUAN TRNG Trc ht, tnh hiu qu n l mt yu cu hon thin v n c thit lp trong phn tch yu cu phn mm. Th hai l n c thit k tt, sau mi n tnh hiu qu ca chng trnh i i vi tnh n gin ca chng trnh. Cn lu rng khng c b qua tnh r rng, d c hay ng n c c s ci thin v ngha v tnh hiu qu. C hai l do c bn nghin cu v vic tng hiu sut ca chng trnh. Th nht l tm quan trng mang tnh bn cht ca n trong nhiu ng dng: chi ph v thi gian v b nh. L do th hai l vn gio dc - y l mt mnh t tt o to. Trong gii hn y, chng ta ch bn lun v cc vn cho vic tng tnh hiu qu thc t - c th o c - ca chng trnh. 5.6. MT S VN TRONG CI TIN HIU SUT Nh cp trn, ta s quan tm n cc vn gim thi gian chy v chi ph b nh cho chng trnh. minh ho cho cc lun c c nu v cc vn trn, y, ta s ch ra cc vn quan tm thng qua cc bi ton v d minh ho. 5.6.1. Tc x l Trong hu ht cc trng hp, tc ca chng trnh l quan trng nh cc ng dng thi gian thc, ng dng v x l trn cc c s d liu ln,... mt ng dng c tc nhanh, ngi lp trnh chng phi quan tm n nhiu yu t nh: thut ton s dng, la chn cu trc d liu, tinh ch m cho chng trnh,... 5.6.1.1. Thut ton s dng 1. Xc nh li bi ton Yu cu: Trc khi bt tay vo gii bi ton, hy tm hiu k cc yu cu m bi ton t ra v tn dng mi iu bit t bi ton. Bi ton minh ho: Cho mt mng s nguyn gm 1.000.000 phn t; cc gi tr nm trong khong t 0..10 mt cch ngu nhin. Hy sp xp c mt mng c th t gim dn.

Gii bi ton tng qut: l mt bi ton sp xp; dng mt on chng trnh sp xp c sn ca h thng hay s dng mt thut ton sp xp c sn nh Insert Sort hay Quick - Sort chng hn. Chi ph v phc tp l o(n2) hay o(nlogn). Tuy nhin, ta b qua mt tnh cht ca bi ton l cc gi tr ch nm trong khong 0..10. Sau khi nghin cu bi ton ta quyt nh s dng thut ton m cho vic sp xp bi ton. + Khi to 10 bin nguyn vi gi tr 0. 100

Chng 5: Ci t phn mm + Vci mi gi tr i trong mng, tng bin th i ln mt n v + Thc hin ri gi tr cho mng ng vi s ln l gi tr ca bin th i; Nh th, chi ph v phc tp ca bi ton l o(n). 2. Sc mnh ca thut ton Yu cu: Vic nghin cu thut ton gip ch rt nhiu cho cc nh lp trnh. Cc thut ton c nh hng quan trng n cc h thng phn mm v c bit chng tng nhanh tc vn hnh. Bi ton minh ho: Quay mng mt chiu cha N phn t v bn tri I mt v tr. Vi N = 8; I = 3 ta c mng ABCDEFGH s quay thnh DEFGHABC.

Thut ton 1: Ta c th gii bi ton bng cch sao I phn t u tin ca mng sang mt mng on; dch chuyn N - I phn t cn li ca mng v bn tri I v tr; sau sao I phn t u tin t mng tm v cui mng. Trong trng hp N v I ln, nh th vic cn mng tm kh tn b nh; xt trong trng hp b nh ca my khng di do th gii quyt nh th no? Thut ton 2: Ta cng c th vit 1 th tc con quay mng X sang bn tri mt v tr (nh th s gii quyt c vn tn b nh v ch cn dng mt bin ph) v sau thc hin th tc trn I ln. Tuy nhin, th tc trn tn thi gian t l vi N v nh th chng trnh s t l vi thi gian I*N; do vy khi N v I ln th y l iu khng th thc hin c. Thut ton 3: rng: khi quay mng X gm N phn t v I v tr, (gi s quay sang tri), lc ny phn t X[i+1] s l phn t X'[1] (k hiu X'[i] l phn t th i ca mng X sau khi quay); X[2i+1] s l phn t X'[i+1],....v c th tip tc. Do ta c thut ton sau: + Dch chuyn X[1] n 1 bin tm T + Dch chuyn X[i+1] v X[1]; + Dch chuyn X[2+i+1] v X[i+1],.... ...... + Qu trnh c th tip tc; ch s c tnh theo module ca N tc khi vt qu N s chia ly d cho N. + Qu trnh lp cho n khi gp phn t X[1] v lc ny dng gi tr t bin T v qu trnh chm dt. V d: Vi trng hp N = 8, I = 3 mng X = ABCDEFGH ta c nh sau: X = ABCDEFGH; N = 8; I = 3; T = A + Dch chuyn X[i+1]: X[4] X[1] + Dch chuyn X[2i+1]: X[7] X[4] + Dch chuyn X[3i+1]: X[10] X[2] X[7] + Dch chuyn X[4i+1]: X[13] X[5] X[10] X[2] .... Qu trnh c tm tt nh sau: T = A; N = 8; I = 3; X = ABCDEFGH 4 1..........DBCDEFGH 101

Chng 5: Ci t phn mm 7 4..........DBCGEFGH (10)2 7 . .DBCGEFBH 5 2..........DECGEFBH 8 5..........DECGHFBH (11)3 8...DECGHFBC 6 3(11)....DEFGHFBC (9)1 6 ....DEFGHABC T => Dng y l thut ton c chi ph vng nh khng ln v thi gian chy chp nhn c. 3. Cc k thut thit k thut ton v tinh ch thut ton. Yu cu: Thc hin theo cc nguyn tc sau: Lu tr cc trng thi cn thit trnh tnh li, Tin x l thng tin a vo cc cu trc d liu, S dng cc thut ton thch hp, Ch ra c cn di ca thut ton, S dng cc kt qu c tch lu,... Bi ton minh ho: Cho vector X cha N s thc X[1], X[2], ...,X[N]. Gi vector con ca X l vector m phn t ca n l cc phn t lin tip trong X. Tng ca mt vector c tnh l tng cc phn t ca vector . Tnh tng ln nht trong cc vector con, tc tm L,U1..N tng X[i], iL..U l ln nht. n gin, vect con c tng ln nht c gi tt l vect ln nht. V d, nu vect u vo c dng: 3 1 -41 59 26 53 58 97 -93 3 84

3 7 Lc ny, kt qu ca bi ton l tng ca vect X[3..7]. Bi ton rt n gin khi tt c cc s l s dng - khi kt qu chnh l bn thn vect X. Vn s phc tp hn khi c thm cc s m. Chng ta nhn xt rng nu tt c u l s m th kt qu l bng 0 ( chnh l tng ca vect rng).

Thut ton 1: Mt chng trnh c th vit ngay c l xt tt c cc cp s nguyn L v U tho mn 1<= L<= U<= N; i vi mi cp nh vy ta tnh tng ca vect con X[L..U] v so snh tng ny vi gi tr ln nht hin c. Ta c gi m cho thut ton 1 nh sau: MaxSoFar := 0; For L := 1 to N do For U := L to N do Begin Sum := 0; 102

Chng 5: Ci t phn mm For I := L to U do Sum := Sum + X[I]; /* Sum cha tng ca X[L..U] */ MaxSoFar := Max(MaxSoFar, Sum); End; Chng trnh ny ngn v d hiu, tuy nhin iu khng may l n chy rt chm. phc tp ca chng trnh l o(n3).

Thut ton 2: i vi thut ton 1, a s ngi lp trnh cho rng c th vit chng trnh chy nhanh hn. C hai cch nh vy. Cc cch ny u c phc tp o(n2). Thut ton th nht tnh nhanh cc tng ca vect con bng cch s dng h thc: Tng ca X[L..U] = Tng ca X[L..U-1] + X[U]; Ta c thut ton 2 nh sau: MaxSoFar := 0.0; For L := 1 to N do Begin Sum := 0.0; For U := L to N do Begin Sum := Sum + X[U]; /* Sum cha tng ca X[L..U] */ MaxSoFar := Max(MaxSoFar, Sum); End; End; Cc lnh trong vng lp th nht thc hin N ln. Vi mi ln thc hin cc lnh trong vng lp th nht, cc lnh trong vng lp th hai thc hin nhiu nht l N ln. Vy ta c phc tp l o(n2). Thut ton 3: Thut ton chia tr: " gii bi ton kch thc N, chng ta gii mt cch quy hai bi ton con kch thc khong N/2, kt hp li gii ca chng to ra li gii ca ton b bi ton". Trong trng hp ny bi ton ca ta l x l vect di N, do mt cch t nhin l chia vect ny thnh hai vect con c di gn bng nhau. Chng ta gi hai vect ny l A v B. A B

Sau , bng quy chng ta tm vect con ln nht trong A v B gi l MA v MB. MA MB

rng kt qu bi ton l gi tr ln nht trong hai tng ca vect MA v MB. Kt qu ca bi ton c th l tng ca vect MC cha ng thi cc thnh phn ca A v B. Ta gi l vect con nh vy l vect vt bin. MC 103

Chng 5: Ci t phn mm

Nh vy thut ton chi tr s tnh MA,MB bng quy v tnh MC bng phng php khc, kt qu bi ton ny l gi tr ln nht trong ba tng ca ba vect ny. Cc m t trn l gn vit chng trnh. Chng ta cn phi m t cch qun l cc vect nh v cch tnh vect MC. Phn u tin rt d: i vi vect ch cha mt phn t, vect con ln nht hoc l chnh n hoc l vect rng trong trng hp phn t ca vect l s m, v vect con ln nht ca vect rng cng l vect rng. tnh MC, chng ta nhn xt rng thnh phn ca vect MC nm trong vect A l vect con ln nht trong tt c cc vect con ca vect A, bt u t bin ca A v B. Tng t nh th i vi thnh phn ca vect MC nm trong vect B. Kt hp tt c cc yu t ny, chng ta c thut ton 3, c gi bi lnh: Answer := MaxSum(1,N); Recursive Function MaxSum(L,U) Begin if L > U then return 0; /* vect rng */ if L = U then return Max(0.0, X[L]); /* vect mt phn t */ M := (L+U) div 2 /* A l vect X[L..M], B l vect X[M+1..U]*/ /* Tm gi tr ln nht ca tng cc thnh phn bn tri (trong vect A) ca vect vt bin */ Sum := 0; MaxToLeft := 0; For I := M downto L do Begin Sum := Sum + X[I] MaxToLeft := Max(MaxToLeft, Sum) End; /* Tm gi tr ln nht ca tng cc thnh phn bn phi (trong vect B) ca vect vt bin */ Sum := 0; MaxToRight := 0; for I := M +1 to U do Begin Sum := Sum + X[I] MaxToRight := Max(MaxToRight, Sum) End; MaxCrossing := MaxToLeft + MaxToRight; MaxInA := MaxSum(L,M); MaxInB := MaxSum(M+1,U); Return Max(MaxCrossing, MaxInA, MaxInB); End;

104

Chng 5: Ci t phn mm Thut ton thc hin o(n) cng vic trong mi mc quy, v c tt c l o(logn)mc quy. Nn chng trnh ny gii quyt bi ton vi phc tp o(nlogn). Thut ton 4: Thut ton qut: Gi s rng chng ta gii bi ton cho vect X[1..I-1]; lm th no m rng kt qu ny cho bi ton vi vect X[1..I]? L lun tng t nh trong thut ton "chia tr": tng ln nht trong vect X[1..I-1] (gi l MaxSoFar), hoc tng ln nht trong tt c cc tng ca vect con kt thc ti I (gi l MaxEndingHere). MaxSoFar MaxEndingHere

Nu chng ta tnh MaxEndingHere bng cch tng t nh trong thut ton 3, th ta ch c mt thut ton bnh phng (c phc tp o(n2). lm nhanh hn, chng ta nhn xt iu nh sau: vect con ln nht kt thc ti v tr I l vect con ln nht kt thc ti v tr I-1 c b sung thm phn t X[I] cui hoc l vect rng trong trng hp tng ca vect nhn c l s m. Ta c thut ton 4 nh sau: MaxSoFar = 0; MaxEndingHere = 0; For I := 1 to N do Begin /* Bt bin: MaxEndingHere v MaxSoFar l ng i vi X[1..I-1]*/ MaxEndingHere := Max(MaxEndingHere + X[I],0); MaxSoFar := Max(MaxSoFar, MaxEndingHere); End; Chng trnh ny c thi gian chy l o(n). V vy thut ton ny c gi l thut ton tuyn tnh. Nh vy, khi xy dng ng dng, vic s dng cc thut ton ph hp lm gim thi gian chy chng trnh mt cch ng k. 5.6.1.2. La chn cu trc d liu Song song vi thut ton, vic chn la cu trc d liu nh hng ln n hiu sut chng trnh v n tc ng n bn thn thut ton bi cu trc d liu gn b mt thit vi thut ton. Vic chn ng n cu trc d liu lm gim khng gian b nh, gim thi gian chy, tng tnh chuyn c v d bo tr, c bit l cc cu trc d liu cao cp, mc du chng khng thng c dng nhng khi cn thit th khng th thiu chng c. Ta s gp li vic chn la cu trc d liu trong phn 5.6.2. sau, trong phn xt v khng gian b nh chng trnh. 5.6.1.3. Tinh ch m 105

Chng 5: Ci t phn mm Thng thng, tng tnh hiu qu ca chng trnh, ngi ta thng bn v cc tip cn bc cao nh: nh ngha bi ton, cu trc h thng, thit k thut ton v chn cu trc d liu. Tuy nhin, cc tip cn bc thp nh tinh ch m m n thng c thc hin nhng phn tn km ca chng trnh ci tin hiu sut. Mc d y l phng php khng phi lc no cng cn thit nhng i lc n to ra khc bit ln trong hiu sut ca chng trnh. Cc phng php thng dng ca tinh ch m. + Tnh trc cc gi tr, + Thay tng ng, + Dng bin trung gian thch hp, khng tnh li cc hng trong vng lp. Bi ton: Cho mt chui gm 1 triu k t. Hy phn loi mi k t theo 4 kiu sau: kiu ch in, kiu ch hoa, kiu s hay l cc kiu "khc".

Li gii m ta thng lm: l thc hin cc so snh i vi mi k t. Nh vy, trong bng m ASCII, xc nh mi k t thuc loi no phi mt rt nhiu ln so snh; v y chnh l im "nng" ca chng trnh. Tinh ch m: y, nu ta xem mi k t nh l mt ch s ca mng m thnh phn ca n l cc kiu k t. Nh vy, kiu k t C l mng [C] v xc nh kiu ca mt k t, ta ch cn truy cp n mt mng n gin thay v phi thc hin cc chui so snh phc tp.

Nh vy, khi thc hin tinh ch m, cn xc nh u l im "nng" ca chng trnh v hy tp trung vo im nng. Hn na, ta bit rt nhiu phng php ci tin hiu sut ca chng trnh v hy dng n phng php ny sau cng v i khi, phng php ny cn c dng lm gim khng gian chim bi chng trnh. 5.6.2. Khng gian b nh Trong nhng ngy u ca k thut my tnh, cc nh lp trnh b hn ch bi nhng b nh nh; Ngy nay vn ny khng cn l im "nng" na. Tuy vy, khi thit k chng trnh khng phi lc no ta cng c b nh s dng bi nhiu l do khc nhau.
5.6.2.1. Khng gian d liu

Nguyn tc lm gim khng gian lu tr d liu. + m bo tnh n gin, + Trong mt s trng hp ng lu tr, hy tnh li khi cn thit, + c bit, vic nghin cu k cc cu trc d liu, (thng l cu trc d liu tha tht) s lm gim nhiu khng gian cn thit lu tr cc thng tin cho trc, + Nn d liu sau gii nn khi dng, + S dng cc nguyn tc cp pht b nh: chng hn nh cp pht b nh ng,... 106

Chng 5: Ci t phn mm

Xt bi ton: Trn mt bn cha 2.000 im (bng qun s) c nh s t 1 n 2.000. Mt v tr trn bng c xc nh bng cp ta (x,y) vi x l s nguyn nm trong khong 1...200; y l s nguyn nm trong khong 1...150. Chng trnh dng cp (x,y) xc nh im no (nu c) c chn trong 2000 im cho.

Khng gian lu tr 1: Mt cch hin nhin lu tr bn trn l dng mng 2 chiu 200 x 150 s nguyn; ng vi mi x.y s cha mt gi tr trong khong t 1...2.000 hay s cha gi tr 0. ... 6 5 4 3 2 1 17 1 98 2 3 4 5 6 7 162 8 ... 53 8 96 5 1121

Vic dng bng ny, thi gian truy cp nhanh; nhng n chim n 200 x 150 = 30.000 nh; v gi s lu tr d liu ( y l 1...2.000) cn 2 byte th ta cn 60.000B b nh. Tuy nhin, trong mng trn th a s l gi tr 0 (gi tr khng dng). Do vy, nu ta dng ci no ch lu tr cc gi tr cn thit ( y l 2.000 gi tr) th vic chim b nh s gim ng k.

Khng gian lu tr 2: Thay v dng mt mng 2 chiu trn, ta s dng 3 mng 1 chiu nh sau: Value Row FirstCol 17 3 1 1 1 Mng value dng cha cc gi tr ( y l 1...2.000) theo tng ct, nh vy cn 2.000 nh; Mng Row l mng cha hng tng ng vi gi tr mng value; nh th cn 2.000 nh. Mng FirstCol l mng cha s ct hin c - tng ng vi gi tr mng value; nh th cn 200 nh; thm 1 nh u tin nh du, nn tng cng cn 201 . 538 6 4 2 1080 127 6 3 98 2 6 4 15 139 .... 199 1800 12 ... ... 1999 2001 200 201 437 112 832 68

107

Chng 5: Ci t phn mm Cc im trong ct I c biu din bng cc phn t trong mng Row v Value gia cc v tr FirstinCol [I] v FirstinCol [I+1]-1. y, FirstinCol [201] c xc nh (mc d chng ta ch c 200 ct) biu thc I+1 hp l. Theo hnh trn, chng ta c 3 im trong ct th nht im 17 v tr (1,3), im 538 v tr (1,6,), im 1053 v tr (1,127). C hai im trong ct 2 (im 98 v tr (2,2), im 15 v tr (2,139)), ct 3 khng c im no, v c 2 im trong ct 200. xc nh im no (trong s 2000 im) c lu gi ti v tr (I,J), chng ta dng gii m sau: For K := FirstinCol[I] to FirstinCol[I+1] do If Row[K] = J then /* Tm thy v tr */ Return Value[K] /* Khng c im no ti v tr (I,J) */ Else Return 0; Phng php ny dng t khng gian hn nhiu so vi phng php trc . y chng ta dng hai mng 2000 phn t v mt mng 201 phn t (nh vy tt c l 4201 t 16 bit thay v 30000 t trong phng php trc ). Mc d n hi chm hn (mt ln truy nhp phi mt 150 ln so snh trong trng hp ti nht, nhng trung bnh ch cn 6 ln), nhng chng trnh chy tt v ngi dng khng gp phi vn g. Li gii ny minh ho mt s im tng qut v cu trc d liu. Vn y rt c in: vic biu din tha tht (tc l mng trong hu ht cc phn t c cng mt gi tr, thng l gi tr 0). Li gii trn c tng rt n gin v d ci t bng mng. Ch rng y khng c mng LastinCol i cng vi mng FirstinCol, bi v chng ta s dng mt iu l im cui cng trong mt ct chnh l im ng trc im u tin ca ct tip theo. ay l mt v d tm thng ca nguyn tc tnh li thay v lu tr. Tng t, chng ta khng c mng Col i cng vi mng Row v chng ta ch truy nhp mng Row thng qua mng FirstinCol, do chng ta lun bit ct hin thi l ct no. Nhiu k thut s dng cu trc d liu khc cng c th lm gim khng gian. Trong thc t, chng ta tit kim khng gian bng cch thay th mng 3 chiu thnh mng 2 chiu. Nu chng ta s dng mt kho c lu tr nh l ch s ca mng, th chng ta khng cn phi lu tr bn thn kho ny; thay vo , chng ta ch cn lu tr cc thuc tnh thch hp ca n, chng hn nh s ln xut hin ca n. Thm vo , cc ng dng ca k thut nh ch s bng kho c vn dng. Trong v d v ma trn tha tht trn y, vic nh ch s bng kho thng qua mng FirstinCol cho php chng ta gii quyt vn m khng cn dng n mng Col. 5.6.2.2. Khng gian chng trnh Trong mt s chng trnh, i lc th kch thc ca chnh bn thn n l vn . Hy nh ngha cc chng trnh con hay s dng cc b thng dch chuyn dng lm cho chng trnh n gin, trong sng hn lm cho n r rng hn v d bo tr. 108

Chng 5: Ci t phn mm

5.6.3. La chn h thng v phn cng Nn la chn cc ngn ng lp trnh ph hp vi ng dng ca bn. i lc cn hy thay th cc chng trnh con vit trn ngn ng khc c tc ln hn. Trong xu th pht trin ca phn cng hin nay, cn phi tn dng th mnh ca phn cng c hiu sut ca chng trnh cao, mc d iu ny lm hn ch tnh ph cp ca n nhng hin nay yu cu v phn cng cao l chp nhn c. 5.7. CNG C TR GIP V PHN LOI Mi ngi u bit s t v cc kh khn ca vic pht trin phn mm. Vic cung cp cho cc k s phn mm cc cng c tr gip, n cung cp kh nng t ng pht trin chng trnh l rt hiu qu v mt chi ph. Trong thi i nhiu my mc nh hin nay, nhng tr gip pht trin thng c sn: mi trng CASE, sinh m v nhng tr gip kim tra nh g ri, cc chng trnh bin dch tng, mi trng thc hin theo kiu ca s v c tc pht trin m hot ng. Bt k ngn ng no u c s tr gip t ng, Nh th, mt mi trng pht trin phn mm l mt b cc cng c phn cng v phn mm chng c kt li tr gip cho vic sn sinh ra mt h thng phn mm trong mt min ng dng chuyn bit. 5.7.1. Cng c CASE CASE c cc loi ICASE, Upper CASE v Lower CASE. ICASE ngha l "Intergrated" CASE hay l CASE tch hp, "Upper" ngha l cng c tng hay ch l thit k logic, "Lower" ngha l cng c ch h tr lp trnh. Trong nhng cng c trn, ti liu ny tp trung vo cc cng c CASE h tr ti thiu mt giai on phn tch v c th h tr cc giai on khc; chng c gi chung l "CASE". Chng ta cng xc nh nhng giai on hin nay ang c h tr (d nhin l cc giai on ny c th thay i khi pht hnh). Mi trng CASE chun bao gm mt kho cha, cc cng c ho, phn mm son tho vn bn, phn mm giao din kho cha, phn mm nh gi, v giao din ngi s dng. Cng c x l ho

Giao din ngi sdng

Qun l kho cha

Kho cha

Cng c x l vn bn Phn mm phn tch thng minh 109

Chng 5: Ci t phn mm

Mt kho cha l mt t in d liu h tr nh ngha v cc kiu i tng khc nhau v quan h gia cc i tng . Cc cng c ho h tr cho vic pht trin dng s v nh gi s hon chnh ca s da vo cc lut c xc nh trc. Phn mm vn bn cho php nh dng tn, ni dung, v chi tit cc phn t trong kho cha. Phn mm giao din l b bin dch xc nh dng d liu c dng ( ho hoc vn bn). Phn mm nh gi l tr tu ca CASE. Phn mm ny phn tch cc u vo ca s hoc kho cha v xc nh xem chng c c php hon chnh hay khng (v d c tho mn cc nh ngha ca kiu d liu thnh phn khng), v chng c tng thch vi cc i tng ang tn ti khc trong ng dng hay khng. Giao din ngi dng cung cp cc mn hnh v cc bo co x l tng tc v gin tip. CASE l tng phi cung cp y h tr t ng cho ton b chu k tn ti ca d n, bt u bng vic phn tch mc x nghip, duy tr cng vic v kt thc. CASE l tng do tr thnh tiu im cho mi cng vic nm trong cng ngh phn mm, v cng vic ca k s h thng tp trung vo kha cnh logic ca thit k. Cng c CASE l tng cng c th cung cp v mt k thut, d liu v thc hin thit k ca t chc, lp d n v kim tra nhm lm vic trong cc ng dng, chun ho d liu, s xy dng c s d liu, xy dng m n gin bng ngn ng ngi s dng la chn, t ng kim tra m sinh ra phng cc li logic v nh gi s hon chnh v ng n trong qu trnh lm vic mt cch thng minh. Cng c CASE thc hin s tin tin phi nhn ra cc thnh phn c trong kho cha s dng li vic phn tch, thit k v m ngun. Kho cha ca CASE xc nh ng thi ci g c h tr v trong phm vi no , c th l h tr c bao nhiu. Kho cha l mt siu t in c th nhp v lu tr siu d liu. Chng hn, mt phn t d liu trong mt ng dng l d liu, v cc thuc tnh ca n to thnh d liu trao i c th lu tr trong t in. Cc thuc tnh ca mt phn t bao gm kiu d liu, kch thc, dung lng, tn sut thay i v tiu chun son tho. Mt kho cha CASE hot ng nh l mt h qun tr c s d liu phc v cho hot ng k s, cung cp kh nng m rng lu gi d liu trao i, v duy tr tt c cc thnh phn v mi lin h qua li gia chng. S thng minh trong CASE th hin hai dng chnh: thng minh ca giao din v thng minh ca bn thn sn phm CASE. Giao din phi cung cp c kiu thao tc cho ngi mi tp s v cho ngi c kinh nghim. N phi cho php kh nng mt cng vic c lu gi v tip tc li. Cng c ny c th c thay i theo yu cu c nhn ca ngi s dng. V d, nu ti mun in mu vng trn nn xanh, ti s gi mt lc dng d liu, v ti phi c php thay i gi tr ngm nh dng cc thut ng v dng ca mnh. Cc dng bin i cc gi tr a vo phi c phn nh thng qua cc tp s . iu ny c ngha l nu ngi dng a cc thc th v cc thuc tnh vo mt 110

Chng 5: Ci t phn mm kho cha, khi anh ta di chuyn trin khai mt lc ho quan h thc th, thng tin trong kho cha phi c phn nh trn lc . Tr tu ca sn phm CASE bao gm vic phn tch bn trong v gia cc kiu lc v u vo kho cha. Trong trng hp l tng, yu cu ca ng dng A nu xung t vi mc tiu ca x nghip Z, s phi c bt c bo xem kin ca ngi qun l. CASE l tng phi cho php ngi s dng phn tch v tch hp cc ng dng khc nhau mt cch d dng. V d, mt cng ty c th mun t liu ho tt c ng dng s dng v bt u qun l in t chng. Khi ngi s dng xc nh mt ng dng mi c th mun tch hp n vi mt ng dng c, h phi c php to ra mt nh ngha th ba lm sng t s chng cho, d tha, khng chc chn v cc vn khc m cp tch hp gp phi. Theo quy lut 40-20-40 ca vic trin khai h thng, 40% thi gian ca d n c dng phn tch v thit k, 20% dnh cho lp trnh v 40% cn li chy th. Hng hin ti ca cc nh bn sn phm l gim bt m, do gim i 20% thi gian pht trin. Nhng CASE l tng s cn c th gim c 40% thi gian chy th. Cc cng c kim tra CASE khng cn thit bng cc vn khc (chng hn cho sn phm lm vic t do li). Trong mt s sn phm thp k 90, cc nh sn xut s cung cp h tr kim tra trong cc mi trng CASE ca h. Mt cch l tng, nhng h tr nh vy s bao gm c th nghim hp en v hp trng cng vi can thip ca con ngi, nhng khng bt buc. Th nghim hp en dng cho kim tra s kim tra chnh xc ca u ra da trn u vo; trong khi th nghim hp trng dng cho cc s logic trong chng trnh. Phn mm thng minh s phn tch kiu thc hin v xc nh chin lc th nghim thch hp nht. Thm vo , n s pht trin d liu th nghim da trn cc yu cu logic, dn dt th nghim v duy tr cc kt qu th nghim. Cc kt qu th nghim s c tng hp thng qua chy th, cc giai on th nghim, phin bn phn mm, v ngay c cc mi trng phn cng. Khi li c tm ra, phn mm ny s quay li chnh tm ngun gc li - c kh nng l thng qua cc module. Khi phn mm to nn li phi c kh nng sa chng; nhng nu gy ra li l mt ngi hay l mt li logic, phn mm phi thng bo cho k s h thng yu cu sa li. Cc sn phm trong tng lai ny s thc s khc phc 40% thi gian ca d n do chng thng minh xc nh cc thnh phn c th s dng li c ca ng dng. Vic s dng li thit k s tit kim c nhiu nht nhng cng l vic kh khn nht. u tin, cc module m s c s dng li, sau n lt thit k, cui cng l phn tch logic cng c dng li. Vic tm ra m c th s dng li c cc cng c CASE cung cp vo gia nhng nm 90, cc phn khc s c cung cp vo th k ny. Vic miu t tnh cht ca CASE l tng tp trung vo vic xem CASE c th lm g tt hn hin ti. Vi vn ny, chng ta s nghin cu CASE mi khi n h tr mt phng php lun v pht trin trong cc chng sau. Mc d CASE v tr tu nhn to ang cn rt non tr, nhng s pht trin c m t trn hin ti c th 111

Chng 5: Ci t phn mm thc hin c vi hin trng k thut cng ngh th gii. Kho cha CASE s tr thnh mt trung tm cho mi cng vic hot ng trong cc t chc h thng thng tin. Tr tu ca CASE s l chnh tr tu ca con ngi. Cc cp t hp CASE c th phn loi. Ti mc thp nht ca ph tch hp l cc cng c n. Khi cc cng c ring l cung cp cc tin ch v truyn d liu mc tch hp c i cht ci thin. Cc cng c nh vy sn xut cc u ra theo dng chun c th tng thch vi cc cng c khc c th c format ny. Trong mt s trng hp, cc ngi xy dng cc cng c CASE hon chnh lm vic vi nhau thng qua "cu ni" gia cc tools. Single- source intergration xut hin khi cc nh sn xut cng c CASE n l tch hp mt s lng cng c khc nhau v bn chng nh l mt gi phn mm. Mc tch hp cao nht c (IPSE) Intergrated Project Support Environment. Cc chun cho mi khi cu thnh c m t trn c to. Cc nh sn xut cng c CASE s dng cc chun IPSE ny xy dng cc cng c tng thch vi cc nh sn xut khc theo chun. 5.7.2. Phn loi cc cng c CASE 5.7.2.1. Cc cng c lp k hoch h thng tc nghip Bng cch m hnh ho cc yu cu thng tin chin lc ca t chc, cng c lp k hoch h thng tc nghip (Business System Planning Tools) cung cp mt siu m hnh m t h thng thng tin c trng s c suy ra. Cc thng tin tc nghip c m hnh ho khi n chuyn t cc thc th c t chc khc nhau trong cng ty. Mc ch chnh ca cc cng c trong phn loi l gip hiu bit c thng tin di chuyn gia cc n v t chc nh th no. Cc cng c nh vy cung cp ni dung quan trng khi cc chin lc h thng thng tin c cu trc v khi cc h thng v phng php hin ti khng hp vi yu cu ca t chc. 5.7.2.2 Cc cng c qun l d n Nhiu nh qun l d n phn mm ang tip tc nh gi, iu khin v theo di cc d n phn mm theo cch trc y lm t 1950. Ma mai thay, c mt dy rng cc cng c qun l d n CASE c tc ng su sc ln cht lng ca qun l d n cho cc c gng pht trin phn mm c ln v nh. Hin nay, phn ln cc cng c qun l d n CASE nh hng vo mt phn c trng ca qun l d n hn l cung cp h tr ton b cho hot ng qun l. Bng cch s dng mt tp hp cng c CASE c chn lc, qun tr d n c th to ra cc nh gi hiu qu v gi thnh, ngun lc, v thi gian ca d n phn mm, xc nh cc cu trc cng vic v thi biu lm vic ng thi theo di d n. Hn na ngi qun l c th s dng cc cng c thu thp cc metrics m cui cng cung cp cc ch nh v cht lng v hiu qu pht trin phn mm. 112

Chng 5: Ci t phn mm Cng c lp k hoch d n: Cc cng c trong lp ny tp trung vo hai mng chnh: nh lng gi, ngun lc d n v lp biu d n. Cc cng c nh lng gi thnh cho php qun tr d n c lng c ca d n bng cch dng cc o gin tip (s dng m v s cc chc nng) v m t ton b cc c tnh d n (v d phc tp, kinh nghim ca i ng). Cc cng c ny tip theo c lng ngun lc, thi gian d n v gi s lng ngi. Nhiu cng c trong s cho php m phng tnh hung qun tr c th nh thi gian hon thnh v kim tra gi thnh v kh nng thc hin. Cc cng c lp biu d n cho php nh qun l xc nh mi nhim v, to mng cc cng vic, biu din s ph thuc cng vic. Phn ln cc cng c s dng phng php lp on gng xc nh thi lng hon thnh d n. Cc cng c theo di cc yu cu: Khi h thng c pht trin ln dn th rt c nguy c ri vo tnh trng v, h thng hon thin khng p ng hon ton cc yu cu ca khch hng. Mc ch ca cc cng c theo di yu cu l cung cp mt cch tip cn h thng phn tch cc yu cu, bt u vi cc quy trnh gi thu -RFP (Request For Proposal)- ca khch hng hoc cc c t. Cng c theo di yu cu c trng bao gm cc nh lng text giao tc ngi-my, cng vi h thng qun l c s d liu lu tr v phn loi cc yu cu h thng m chuyn n t cc RFP hoc cc c t. Phn tch vin phn loi cc yu cu c biu din bi cc cu v a chng vo c s d liu. Cc cng c qun l v o: Cc o phn mm ci thin kh nng ca nh qun l iu khin v phi hp qu trnh x l sn xut phn mm v kh nng ca cc cng tc vin ci thin cht lng phn mm. Cc cng c nh gi hoc o hin nay tp trung vo cc c trng x l v ch to. Cc cng c nh hng qun l thu thp cc o c trng d n. Cc cng c nh lng k thut xc nh cc o k thut. Cung cp cc im quan trng nht v cht lng thit k hoc m. Cc cng c qun l h tr cho nh qun l h thng thng tin cho php u tin cc d n c s cnh tranh v cc ngun ti nguyn hu hn. Do s dng cc yu cu, u tin, cc rng buc c t trong cc t chc v cc li, ri ro ca k thut v nghip v, nhng cng c ny s dng cc kin thc chuyn gia a ra cc gi quyt nh cho nh qun l. 5.6.2.3. Cc cng c h tr Cc cng c t liu ho cho php cn b pht trin ng dng t ng ho cp nht ti liu v in cc bo co v ng dng. 5.6.2.4. Cc cng c phn tch v thit k Cc cng c phn tch v thit k cho php cc k s phn mm to cc m hnh ca h thng. N bao gm biu din cho d liu, lung iu khin, ni dung d liu (thng qua cc inh ngha t in cc yu cu), qu trnh x l, cc c t iu khin, v cc biu din m hnh ho khc. Cc cng c phn tch v thit k h tr c vic to m hnh cng nh nh gi cht lng. Bng qu trnh kim tra tnh chc chn v gi tr ca m hnh, cc cng c 113

Chng 5: Ci t phn mm phn tch v thit k cung cp cho cng ngh phn mm kh nng gim ti thiu cc li c kh nng lan truyn ti chng trnh ng dng. Cng c SA/SD: Phn ln cc cng c phn tch v thit k s dng phng php phn tch v thit k cu trc. N cho php to cc m hnh ca h thng phc tp dn, bt u t mc yu cu v kt thc vi s kin trc. Cng c PRO/SIM: Cc cng ty to mu v m phng (Prototyping and simulation) cho kh nng d on trc dng iu ca h thng. Mt khc, n cho php khch hng trong thi gian ngn nht c th quan st c m hnh. Nhiu cng c dng ny cho php sn sinh m. Cc cng c pht trin v thit k giao din: Cc nghin cu cng nghip cho thy rng 50-80% m ca cc ng dng tng tc l dnh cho qun l giao din. Cc cng c pht trin v thit k giao din thc s l tp hp cc cng c to cc n v chng trnh nh menu, button, windows,...Tuy nhin, cc cng c trn ang c thay th bi cc cng c to mu giao din cho php to cc mn hnh theo chun mt cch nhanh chng. 5.7.2.5.Cc cng c lp trnh Cc cng c lp trnh bao gm b dch, son tho, g li cho php dng phn ln cc ngn ng lp trnh truyn thng. Cc cng c ny c lin quan nhiu ti mi trng lp trnh hng i tng, ngn ng th h bn, sn sinh chng trnh. Cc cng c m ho truyn thng: c thi cc cng c m ho quy c l: Complier, Editor, Debugger. Pressman ni v vn ny nh sau: "Khi trong tay bn ch c ci ba, th mi vn s ging nh ci inh". Hu nh sut 30 nm, lp trnh vin ch c cc cng c trn trong tay nn mi vn v cng ngh phn mm u quy v vn m ho. Cc cng c m ho th h 4: H thng hi p c s d liu, sinh m v ngn ng th h 4 lm thay i cch lp trnh. Ngn ng th h th 4

Bin dch 4GL M chng trnh thc hin Cc cng c lc ny c phn lm mt s loi, v d nh: Th vin m o B sinh ng dng Son tho mn hnh Son tho bo co Son tho menu Module sinh m COBOL

T in d liu

114

Chng 5: Ci t phn mm

o B sinh m Module sinh m Module sinh m Ngn ng c t th tc Module sinh m COBOL PL/1 C M c thc hin

Module sinh m

Cc cng c lp trnh hng i tng: Lp trnh hng i tng l mt trong cc cng ngh "nng nht" trong cng ngh phn mm. V l do ny, cc nh ch to CASE ang cung cp t cc cng c pht trin phn mm hng i tng ti th trng. Cc ngn ng ph bin hin nay l C++, Eiffel, Smalltalk, Objective-C. Mi trng hng i tng c trng thng kt hp vi cc cung cp giao din th h 3 (menu, mouse, multitasking,...) cng vi cc chc nng c bit nh "browser" - mt chc nng cho php k s phn mm kim tra tt c cc i tng c cha trong th vin. 5.7.2.6. Cc cng c tch hp v kim tra C ba hng cng c kim tra c s dng nhiu nht. Nhiu cng c phi tri ht 2 hoc 3 phn loi ni trn. Cc cng c phn tch tnh: Cc cng c kim tra tnh gip cc k s phn mm trong vic rt ra cc trng hp kim tra. Ba kiu khc nhau ca cc cng c kim tra tnh c dng trong cng nghip: cc cng c kim tra da trn m, cc ngn ng kim tra c t v cc cng c kim tra da trn yu cu. Code-Based testing tools nhn m ngun nh l u vo v tin hnh mt s phn tch. Cn c vo m t ca u vo chng trnh v thit k th tc nh l ch dn cc cng c kim tra tnh suy ra cc trng hp kim tra s dng ng dn, cc kim tra iu kin v cc tiu chun lung d liu. Requirements-based testing tools phn tch cc yu cu ngi dng v khuyn mt s trng hp kim tra (hoc lp kim tra) m s th cc yu cu. thc hin tt th cc cng c trong phn hng ny phi truy nhp ti cc c t hnh thc ca phn mm. 115

Chng 5: Ci t phn mm Specialized testing languages cho php cc k s phn mm vit cc c t kim tra chi tit m m t mi trng hp kim tra v logic cho s thc hin n. Trong phn ln cc trng hp, cc cng c kim tra tnh s t liu ho v phn loi cc php kim tra. V n s so snh kt qu thc vi kt qu d tnh. Cc cng c phn tch ng: Cc cng c kim tra ng tng tc vi qu trnh thc hin chng trnh, kim tra ng th, kim tra xc nhn v gi tr cc bin, cc cng c ng c th l loi can thip hoc khng can thip. Cng c can thip (intrusive) thay i phn mm kim tra. Cng c khng can thip (nointrusive) s dng mt x l phn cng tch ri chy song song vi x l cha c chng trnh ang kim tra. Phn ln cc cng c thuc phn loi phn tch ng to cc bo co ch r s lng cc khi, cu lnh c thc hin v cc thi gian thc hin trung bnh cho cc khi lnh. Cng c kim tra ng c th c dng ni tip vi cng c kim tra tnh. Cc kim tra tnh to ra cc trng hp test sau c qun l bi cc cng c ng. Cng c qun l test: Cng c qun l test dng iu khin v phi hp cc kim tra phn mm cho mi bc kim tra chnh. Cc cng c trong phn loi ny qun l v phi hp cc kim tra regression. Tin hnh cc so snh output thc v biu kin. Nhiu cng c qun l test cng phc v nh l cc b iu khin test. Mt b iu khin test c mt hoc nhiu trng hp test t file test, nh dng cc d liu test ph hp nhu cu phn mm, sau gi phn mm test. Cui cng, nh qun l test i khi lm vic vi cng c theo di yu cu cung cp cc phn tch coverage yu cu cho kim tra. 5.7.2.7. Cc cng c to mu To mu c dng rng ri nh l s tin ho ca cng ngh phn mm. Cc cng c to mu c phn b theo hnh sau: Mu trn giy Son tho mn hnh PRO/SIM tools CASE c cng c to mu CASE c kh nng sinh m 100% Mc p dng mu trong qu trnh pht trin phn mm ng dng

0%

Mc thp nht, cc cng c to "mu trn giy". Cng c chy trn my c th to cc hnh nh thc dng minh ho cc chc nng, dng iu h thng. Cc hnh nh ny khng th thc hin c. Trong mt s trng hp, b v mn hnh c th sinh ra cc m to mn hnh. Cc cng c CASE phc tp hn cho php to cc thit k d liu, c mn hnh hin th v bo biu. 5.7.2.8. Cc cng c bo tr 116

Chng 5: Ci t phn mm

Cc cng c bo tr c th c phn li theo cc chc nng sau: + Thit k ngc vi cc cng c c trng. + Cc cng c phn tch v cu trc li m. + Cc cng c kin to li h thng trc tuyn. Cc cng c thit k ngc: Cc cng c thit k ngc tin hnh to li cc phn tch ban u trn c s cc chng trnh tn ti. Cc cng c ny cng c th phn ra loi tnh v ng. Mt cng c thit k ngc dng m ngun nh u vo v phn tch ly ra kin trc chng trnh, cu trc iu khin, lung logic, cu trc d liu, lung d liu. Cc cng c thit k ph thuc (Dependency analysis tools) tin hnh phn ln cc chc nng trn, ngoi ra n cn xy dng s graphic biu din s ph thuc ch s lin kt gia cc cu trc d liu, khi chng trnh, v cc c tnh khc ca chng trnh. Cc cng c thit k ngc quan st phn mm khi n chy v s dng cc thng tin nhn c xy dng m hnh dng iu ca chng trnh. Mc d chng t c dng nhng cn thit cho vic bo tr cc chng trnh thi gian thc hoc c nhng trong h thng khc. Cc cng c thit k: Cc cng c thit k li c th chia lm hai nhm: cng c cu trc li m, cng c thit k li d liu. Cc cng c cu trc m li nhn m ngun phi cu trc nh l u vo, to thit k ngc, sau cu trc li m mi. Mc d cc cng c nh vy c th hu ch, chng ch tp trung trong vic thit k th tc ca chng trnh. Cc cng c thit k li d liu lm vic ti cc kia ca thit k. Cc cng c nh vy truy nhp nh ngha d liu hoc c s d liu c m t trong ngn ng lp trnh hoc ngn ng m t c s d liu. Sau n chuyn sang dng biu din graphic c th phn tch c bi k s phn mm. Tng tc vi cc cng c thit k li, k s phn mm c th thay i cu trc ca c s d liu, chun ho d liu, sau t ng sinh m mi. Cc cng c c th s dng h chuyn gia. 5.7.3. Mt s cng c c cung cp t ng cho vic sinh m Cc tin ch CASE c xy dng trn vic sinh m hay cc giao din phc v cho sinh m, cho php trn ln cc m khc nhau ph hp vi mi trng pht trin v ngn ng sinh ra. Mt s CASE thng dng hin nay nh: Sn phm ADW-Construction Workbench ca Knowledgeware Inc., Atlanta, CA Cdevelopment Environment, OOSD/C++ ca S/Cubed Inc. K thut Xy dng cc m gi bng cc modul, n dng cho vic sinh m cho MsDOS, MVS Sinh m Cobol cho cc Mainframe, AS/400, OS/2. Sinh m C cho MsDOS, 117

Chng 5: Ci t phn mm Stamford, CT OS/2

Sinh m Cobol gn vi SQL, sinh m C Instruments Cho MVS, MsDOS, OS/2. Giao din cho Telon v sinh ra cc m khc. Sn phm K thut NeXTStep 3.0 ca NeXT Mi trng c s d liu hng i Computer tng Redwood City, CA ObjectMaker ca Mark V Sinh m C hay C++ cho MsDOS, VMS, Systems Unix, AIX Software Through Pictures ca Sinh m C hay C++ cho Unix, AIX Intergrated Development IEW ca Dallas, TX Texas Systems Architect ca Popkin Software & System Inc. New York, NY Teamwork,Ensemble ca Cadre Technologies Providence, RI. Visible Analyst Workbench ca Visible Systems Corp. Newton, MA. Sinh m C cho MsDOS, OS/2 Sinh m C hay C++ cho Unix, OS/2, AIX Sinh m C cho MsDOS

Nhng tin ch trn cung cp mt cch t ng bao gm cc tin ch sinh m, chng trnh bin dch ln dn v mi trng to ra chng trnh. Ton b chng chnh l tin ch Lower CASE hay Back-End CASE. Cu hi 1. Th no l mt phong cch ci t chng trnh tt. 2. Ti liu trong ca chng trnh em li nhng li ch g? 3. Cc nn tng ca mt ngn ng c th lp trnh c? Hy ch r s tng ng gia bn thit k v ci t m bo c s ng n ca chng trnh. 4. Vi h s thit k h thng trong chng 4, bn chn cng c ci c th no, v sao? 5. Trong ci c ng dng, nng cao hiu sut ca h thng, bn lm g? Hy nu v phn tch s ci tin .

118

You might also like