You are on page 1of 22

I HC BCH KHOA H NI

B mn: K thut lp trnh

TM HIU V MT S M HNH LP TRNH


Ging vin: V c Vng

Thc hin: Sinh vin: B Mnh SHSV:20111830 Lp CNTT-TT 1.1

H Ni, 1/2013

K THUT LP TRNH

Li ni u.
Bt kz mt ngn ng lp trnh no cng u mang tnh logic cao v tun theo nhng quy chun c bn v ton hc. Tuy vy, mi ngn ng li c nhng phng thc ring thc hin nhng quy chun , c bit l trn cc lnh vc nh hm (function), bin (variable), phng thc (method) v i tng (object). Bn cnh s a dng ca ngn ng lp trnh, cng dn c rt nhiu m hnh lp trnh c ra i, trong ph bin nht c th k n nh: Lp trnh hng i tng (object-oriented programming), lp trnh th tc(procedural programming) v lp trnh cu trc (structured programming). Mi mt m hnh lp trnh li c nhng c trng ring v cch s dng cng nh tnh tru tng ha i vi cc qu trnh xc nh. Cc nhm khc nhau trong cng ngh phn mm xng cc phng php khc nhau, cc ngn ng lp trnh khc nhau tc l cc m hnh lp trnh khc nhau. Mt s ngn ng c thit k h tr mt m hnh c th (Java h tr lp trnh hng i tng trong khi Haskell h tr lp trnh chc nng). Mt s ngn ng khc li h tr nhiu m hnh (nh Python v Common Lisp). Mt s m hnh lp trnh cm cc thao tc m chnh ngn ng c. Chng hn, lp trnh cu trc khng cho php s dng lnh goto. Quan h gia cc m hnh lp trnh v cc ngn ng lp trnh c th phc tp v mt ngn ng c th h tr nhiu m hnh lp trnh. Th d nh C++ c thit k h tr cc phn t ca lp trnh th tc, lp trnh hng i tng v lp trnh tiu bn. Mc d vy, nhng ngi thit k v nhng ngi lp trnh s quyt nh lm th no xy dng mt chng trnh dng cc phn t ca m hnh no . Ngi ta c th vit mt chng trnh hon ton theo kiu lp trnh th tc trong C++, cng c th vit chng trnh hon ton hng i tng, hay vit chng trnh c cc phn t ca c hai m hnh. thi kz u, cng ngh phn mm hon ton da trn nhng thao tc lp trnh bng m nh phn hoc m my, m i din l cc gi tr 0 v 1. iu ny khin cho qu trnh thit k, kim sot s hot ng cng nh sa li i vi mt
1

K THUT LP TRNH

ng dng tr nn v cng rc ri v khng hiu qu. Chng ta coi nhng phng thc lp trnh thi im ny thuc m hnh lp trnh bc thp (low-level programming paradigm). V sau, cng vi s pht trin ca cng ngh, nhng hn ch ca giai on u tin dn c xa b vi s ra i ca cc ngn ng lp trnh th h th 3 l COBOL, Fortran v BASIC, ng thi, mt m hnh lp trnh mi cng xut hin v vn tip tc c s dng hiu qu v ph bin cho n ngy nay, l m hnh lp trnh th tc (procedural paradigm). Dn dn, chng ta chng kin s pht trin mnh m v s lng ca cc m hnh lp trnh, m c bn c th k n cc m hnh sau: Lp trnh cu trc - Structured programming. Lp trnh chc nng - Functional programming. Lp trnh logic - Logical paradigm Lp trnh trc quan - Visual programming. Lp trnh song song - Parallel programming. Lp trnh phn tn - Distributed programming. Lp trnh tng tranh - Concurrent programming. Lp trnh nh hng i tng - Component-oriented programming .

Lp trnh cc - Extreme programming.


.

K THUT LP TRNH

S LC V MT S M HNH LP TRNH PH BIN


1. Functional programming.
c im: Nguyn l{ v { tng: Ton hc v l thuyt v hm. Cc gi tr c to l khng th bin i. Tru tng ha mt biu thc thnh mt hm v ngc li, mt hm c th c tnh ton nh mt biu thc. Hm l lp gi tr u tin. Hm l nhng gi tr hon chnh, tng t nh s, danh sch... Thch hp vi nhng tnh ton theo yu cu. M ra nhng kh nng mi.

Functional Programming l th loi lu i nht trong ba paradigm lp trnh chnh. Ngn ng FP u tin l IFP, c pht minh vo nm 1955, mt nm trc khi c Fortran. Sau , LISP ra i nm 1958, mt nm trc khi c COBOL. C Fortran v COBOL u l nhng ngn ng imperative (hay cn gi l procedural). Chng c bit thnh cng khi c ng dng vo tnh ton khoa hc v nghip v, v tr thnh paradigm thng tr trong sut 30 u ca k nguyn thng tin. Vo nhng nm 1970, Object-Oriented paradigm bt u pht trin. Cng vi s trng thnh ca cc ngn ng lp trnh hng i tng, OO tr thnh paradigm c s dng ph bin nht cho n ngy hm nay. T nhng nm 1950, mc d vn pht trin mnh m v lin tc vi cc i din nh SML, OCaml, APL v Clean, th FP vn ch c s dng cho mc ch hc thut v nghin cu l ch yu. Imperative t c thnh cng bc u nh vo nhng ch th n gin. OO thnh cng nh vo kh nng m hnh ha cc bi ton phc tp. Cn FP c kh nng g, ti sao d ra i sm nhng li khng mang li thnh cng nh mong i?

K THUT LP TRNH

FP xem chng trnh l mt tp hp cc hm nhn vo i s v tr v gi tr. Khng ging nh Imperative, FP khng to ra hiu ng ph v s dng qui thay cho vng lp. Hm trong FP rt ging vi hm trong ton hc v n khng lm thay i trng thi ca chng trnh. Mt i lng khi c gn gi tr th khng bao gi thay i gi tr . Hm khng sa i gi tr ca i s c truyn vo, v gi tr do hm tr v hon ton l mt gi tr mi. V mt k thut ci t bn di, khi gi tr c gn vo mt vng nh th c nh du l s dng v khng ghi ln na. to ra kt qu tr v, cc hm sao chp gi tr ri chnh sa trn cc bn sao , khng lm nh hng n gi tr ban u, ri tr v bn sao c chnh sa. Cc i lng khng cn c hm no tham chiu n s t ng b hy gii phng b nh (y l { tng ca b thu gom rc trong Java v.NET). C s ton hc cho FP rt tng minh, cung cp gii php logic v ngn gn cho cc vn tnh ton. Tuy nhin, do n khng linh hot thay i trng thi v chuyn s dng qui khin ngi ta a chung cc paradigm khc hn x l cc thao tc tnh ton thng dng.

K THUT LP TRNH

2. Logical paradigm
Trong lp trnh logic, ta c th s dng cc v t nh ngha cc khi nim ca tt c cc mn khoa hc khc. V d nh ngha mt s nguyn t: S nguyn t N l mt s nguyn ln hn 1, ch chia ht cho 1 v chnh n. xt xem s N c phi l s nguyn t hay khng, ngi ta thng s dng du hiu nhn bit: S nguyn t l mt s nguyn dng, khng chia ht cho mi s nguyn t nh hn n v 2 l s nguyn t nh nht. Du hiu ny c th m t bng cc v t nh sau: - 2 l mt s nguyn t. - N l mt s nguyn t nu N>0, M l s nguyn t no , M<N v N khng chia ht cho M. Khi m t bi ton di dng logic v t, ta c th yu cu h thng tm kim cc li gii lin quan n cc khai bo . Bi ton cn gii c xem l mc tiu m h thng phi chng minh trn c s cc tri thc c khai bo. Nh th, ton b cc k{ hiu ca ngn ng lp trnh suy v mt cng thc c bit: - Pht sinh t mt yu cu. - Nhm chng minh mt mc tiu. tr li cho cu hi h thng xem n nh l mt ch v c chng minh ch bng cch to nhng suy din trn c s cc tri thc khai bo. Mt ngn ng logic c th c dng trong giai on c t yu cu ca quy trnh xy dng mt sn phm phn mm. Hn th na, logic v t cho php biu din hu ht cc khi nim v cc nh l{ trong cc b mn khoa hc.

K THUT LP TRNH

3. Visual programming
Nh chng ta bit, mi loi my tnh (s dng loi CPU Central Processing Unit xc nh) ch c th hiu v thc hin trc tip c cc lnh cng nh chng trnh theo mt loi ngn ng dnh ring c gi l ngn ng my. Tuy nhin, nu trin khai cc ng dng trong thc t m phi vit chng trnh trc tip bng ngn ng my th s rt phc tp, i hi thi gian v cng sc rt ln, nhiu khi khng th thc hin c. V vy, ngi ta tm cch xy dng mt ngn ng lp trnh ring gn vi cc ngn ng t nhin, thun li cho vic trin khai cc ng dng. Khi thc hin cc chng trnh bng ngn ng ny phi qua mt bc dch chng trnh sang ngn ng my n c th thc hin. T trc n nay c rt nhiu ngn ng lp trnh c ra i v phc v c lc cho vic trin khai cc ng dng trn my tnh. Trong giai on u, cc ngn ng lp trnh tuy d s dng hn ngn ngmy nhng rt kh vi cc lp trnh vin v cha mnh d dng trin khai cc thut ton. Chng trnh cha c tnh cu trc cht ch v mt d liu cng nh t chc chng trnh. V vy, vic trin khai cc ng dng trong thc t bng cc ngn ng lp trnh ny l rt kh khn. Giai on 2 l thi kz ca cc ngn ng lp trnh c cu trc. Cc ngn ng lp trnh ny c c im l c tnh cu trc cht ch v mt d liu v t chc chng trnh. Mt lot cc ngn ng lp trnh c cu trc ra i v dc s dng rng ri nh : PASCAL, C, BASIC... Giai on 3 l thi kz ca lp trnh hng i tng v phng php lp trnh c bc bin i mnh. Trong cc ngn ng lp trnh c cu trc th mt ng dng bao gm hai thnh phn ring l d liu v chng trnh. Tuy chng c quan h cht ch nhng l hai i tng ring bit. Trong phng php lp trnh hng i tng th mi mt i tng lp trnh s bao hm c d liu v phng thc hnh ng trn d liu . V vy, vic lp trnh s n gin v mang tnh k tha cao, tit kim c thi gian lp trnh. Tuy nhin, vi cc phng php lp trnh trn u i hi lp trnh vin phi nh rt nhiu cu lnh vi mi lnh c mt c php v tc dng ring, khi vit chng trnh phi t lp ni cc lnh c mt chng trnh gii quyt tng bi ton ring bit. Trong xu hng pht trin mnh m hin nay ca tin hc, s ngi s dng my tnh tng ln rt nhanh v my tnh c s dng trong hu ht cc lnh vc ca i sng nn i hi cc ngn ng lp trnh cng phi n
6

K THUT LP TRNH

gin, d s dng v mang tnh i chng cao. Chnh v vy phng php lp trnh trc quan ra i. c im ca cc ngn ng lp trnh trc quan l d s dng, trin khai cc ng dng mt cch nhanh chng. c im: Cho php xy dng chng trnh theo hng s kin (Event-Driven Programming, ngha l mt chng trnh ng dng c vit theo kiu ny p ng da theo tnh hung xy ra lc thc hin chng trnh. Tnh hung ny bao gm ngi s dng n mt phm tng ng, chn la mt nt lnh hoc gi mt lnh t mt ng dng khc chy song song cng lc. Ngi lp trnh trc tip to ra cc khung giao din (interface), ng dng thng qua cc thao tc trn mn hnh da vo cc i tng (ojbect) nh hp hi thoi hoc nt iu khin (control button), nhng i tng ny mang cc thuc tnh (properties) ring bit nh: mu sc, Font ch.. m ta ch cn chn la trn mt danh sch cho sn. Khi dng cc ngn ng lp trnh trc quan ta rt t khi phi t vit cc lnh, t chc chng trnh... mt cch rc ri m ch cn khai bo vic g cn lm khi mt tnh hung xut hin. My tnh s da vo phn thit k v khai bo ca lp trnh vin t ng to lp chng trnh.

K THUT LP TRNH

4. Parallel programming.
Tnh ton song song (Parallel Computing) l vic chia mt cng vic ra thnh cc cng vic nh v cho cc cng vic ny thc hin ng thi vi nhau bi cc h thng c nhiu b vi x l{ (multiprocessor) hay b vi x l{ a nhn (multicore) nhm gim thi gian thc hin cng vic xung. Vic lp trnh tch ra cc cng vic nh v sp xp x l{ song song th c gi l lp trnh song song. S lng transistor trong b vi x l s tng ln gp i sau mi 24 thng. Gordon Moore - sng lp vin ca tp on Intel. Cng vi nh lut Moore, cc my tnh hin nay c trang b cc b vi x l{ a nhn mnh m. Tuy nhin, tn dng c sc mnh i hi cc lp trnh vin phi tn dng c ht cc nhn trong b vi x l{. V vy, thay v lp trnh tun t nh trc y ch s dng mt nhn ca b vi x l{ th ngi lp trnh vin ngy nay phi dng k thut lp trnh song song tn dng hiu sut ca b vi x l{ a nhn. Vic lp trnh song song khng phi lc no cng mang li hiu sut cao cho chng trnh. i vi cc cng vic ch tn t hiu sut th vic dng lp trnh song song s khng mang li kt qu nh mong i do khong thi gian khi to v qun l{ cc tin trnh song song gy nn. Trong qu trnh lp trnh song song, lp trnh vin kh trnh khi vic cc tin trnh cng s dng chung mt d liu iu ny s gy ra xung t d liu hoc lm d liu b sai lch do lp trnh vin cn phi ch { v p dng cc k thut lp trnh gii quyt vn ny. B vi x l{ c nhiu nhn s tng tc chng trnh song song tuy nhin khng c ngha l n s tng ln 100% trn mt nhn (core) c thm vo. Thm ch chng trnh song song khng h tng hiu sut ln trong mt s trng hp. V vy lp trnh vin phi bit quyt nh khi no s dng lp trnh song song bng cch s dng cc cng c o lng xc nh c tc thc thi ca chng trnh.
8

K THUT LP TRNH

Lp trnh song song l mt cng vic rt phc tp so vi lp trnh tun t thng thng, ngi pht trin phi thc hin mt qu trnh song song ha, bin i cc chng trnh tun t thnh chng trnh song song c kh nng tn dng ti a sc mnh ca h thng. Qu trnh song song ha gm ba giai on bc chnh : Phn chia chng trnh thnh cc cng vic con (Sub-task decomposition). Phn tch s ph thuc (Dependence analysic). nh thi cc cng vic (Task scheduling).

Ni mt cnh d hiu th lp trnh song song l lp trnh chy c a lung vi cc dng CPU a nhn hin nay ( core i3, core i5, core i7,)

5. Concurrent programming
Lp trnh tng tranh l mt trong nhng k thut quan trng v cng l mt thch thc. Mt mt, n em li kh nng s dng hiu qu cho nhng h thng song song v phn tn. Mt khc, nhng ri ro trong vic tng tc gia cc tin trnh thc hin ng thi c th gy ra nhng li phn mm khng d dng tm ra. Trong lp trnh tng tranh, mt s dng lnh c th c thc hin ng thi. Mi dng lnh l mt chng trnh tun t, ngoi tr mt thc t l cc dng lnh c th giao tip v gy tr ngi ln nhau. Mi mt dng lnh l mt lung ( thread ), cc chng trnh tun t cn gi l chng trnh n lung, cn chng trnh vit theo phng php tng tranh l chng trnh a lung.

K THUT LP TRNH

c im: Ngi dng c th tng tc vi cc ng dng khi tin trnh ang thc thi. Nhng tin trnh chy thi gian di lm tr hon cc tin trnh ngn. Cc chng trnh phc tp c thc hin tt hn trn cc b x l{ a lung. Nhng tin trnh i hi iu kin tin quyt c th tm dng v i n khi p ng c tip tc x l{.

6. Distributed programming.
Lp trnh phn tn l mt dng ca lp trnh song song (tnh ton song song). Lp trnh song song to ra mi lin h gia my tnh v cc n v tnh ton, khin chng hot ng ng thi i vi mt vn c th (d bo thi tit chng hn). Cc n v tnh ton c th t rt gn nhau hoc tch ri nhau. Khi cc n v tnh ton c t tch ri, ta gi l lp trnh phn tn. Vi m hnh lp trnh ny, cc n v tnh ton thng rt khc nhau, cng nh s khc nhau gia cc h iu hnh v thit lp mng my tnh. Nhng yu t khin cho vic lp trnh cc tnh ton ca my tnh tr nn tng i phc tp v kh khn. Lp trnh mng phn tn, thng c 2 khi nim chnh: peer to peer v client server... peer to peer l lp trnh ngang hng gia 2 my tnh... cn lp trnh client - server l lp trnh cho php n my client kt ni ti m my server - y cng l m hnh chng ta s gp nhiu trong thc t C th chia lp trnh mng thnh 3 cp , cn c theo mc thn thin vi developer v kh nng trin khai:

10

K THUT LP TRNH

Mc thp nht l lp trnh s dng socket - c th truyn tng byte, tng stream ln trn mng, ng dng ny thng gp trong cc ng dng mng c nh (vd: trong 2 my tnh, trong 1 mng LAN...). Mc cao hn l lp trnh s dng, trin khai ng dng theo m hnh dch v (service) - qun l mng theo m hnh: kt ni, to tham chiu client trn server v tr v, gi hm v truyn d liu thng qua proxy ca i tng tr v t server (vd: RMI trn Java hay Remoting trn.NET...), m hnh ny thng gp trong cc ng dng mng c trung bnh v ln, i hi tnh performance cao (vd: cc ng dng mng i hi kt ni nhiu - lin tc v s dng din rng nh cc dch v chat, game online...), u im chnh ca m hnh ny l tnh performance cao, bo mt, nhng nhc im l tnh a nn (multiplatform) v tnh kh chuyn cha cao (server v client phi cng 1 cng ngh pht trin.) Mc cao nht l trin khai ng dng theo m hnh trin khai trn web, in hnh nht ta c th thy l cc web application v web service, mi nht gi c cng ngh WCF ca M$ (tng hp tt c trong 1)... m hnh ny cho php trin khai trn din rng, phc v lng khch hng ln... nhng cng c nhc im l tnh performance cha cao, b lai, n c kh nng mm do (flexibility) cao (server v client khng cn s dng chung mt cng ngh). Chng ta thng thy nhng ng dng loi ny trong cc ng dng c cung cp t mt nh cung cp no (vd: cc s liu chng khon, thi tit ).

11

K THUT LP TRNH

12

K THUT LP TRNH

7. Extreme programming.
Extreme Programing l ni ting nht ca phng thc Agile (Agile Method). N c hnh thnh bi mt tp cc thc nghim (practice) n gin nhng ph thuc ln nhau. Nhng practice ny lm vic vi nhau hnh thnh mt dng tng qut hn cc thnh phn ca n. Khch hng l thnh vin ca nhm pht trin (Customer team member) Chng ta mong mun khch hng v nhm pht trin lm vic chung vi nhau h hiu cc vn ca nhau v cng gii quyt cc vn . Vy ai l khch hng ? Khch hng ca mt nhm XP l mt hoc mt nhm ngi nh ngha v xc nh u tin ca chc nng h thng (hay sn phm). i khi khch hng l nhm nh phn tch nghip v hoc chuyn gia marketing lm vic cng mt cng ty phn mm vi nhm pht trin. i khi khch hng l mt i din ca ngi dng. i khi khch hng cng chnh l ngi tr tin. Nhng trong mt d n XP, bt k khch hng l ai th h cng l mt thnh vin ca nhm pht trin. Tnh hung tt nht l khch hng lm vic vi nhm pht trin trong cng mt phng. Hoc ch t l lm vic ni no cch 100 feet so vi phng lm vic ca nhm pht trin. Khong cch cng xa th cng kh tha mn iu kin "Customer team member". Nu khch hng lm vic trong mt ta nh khc hoc mt quc gia khc th cng kh m yu cu h tham gia cng vi nhm. Chng ta s lm g nu khch hng khng th gn nhm pht trin ? Li khuyn ca ti l hy tm ai sn lng lm vic chung v c th ng vai tr ca mt khch hng thc th. Cu chu n ng i ng ( ser Stories) ln k hoch cho mt d n, chng ta phi bit v yu cu, nhng chng ta khng nn bit nhiu lm. Vi mc ch lp k hoch, chng ta ch cn bit v yu cu c lng chng. Bn c th ngh rng c th c lng, bn cn bit tt c cc chi tit, nhng iu ny thng khng ng. Bn cn bit rng thc t c nhng <i>chi tit</i> , v bn phi bit rng cc chi tit v cng hn tp, nhng bn khng cn ti cc c t ca chng.
13

K THUT LP TRNH

c t chi tit ca mt yu cu th lun thay i theo thi gian, c bit l khi khch hng bt u nhn thy h thng vn hnh nh th no. Khng c cch xc nh yu cu no tt hn cch quan st h thng c p dng vo thc t nh th no. V vy, thu thp c t chi tit yu cu qu sm trc khi ci t h thng l qu vi v v ung ph. Khi p dng XP, chng ta s cm nhn c chi tit ca yu cu qua cc cuc trao i (ni chuyn) vi khch hng, nhng chng ta s khng thu thp cc chi tit . Khch hng s vit vi ch ( c thng lng vi chng ta) ln mt tm giy ghi ch (index card). T card ny s nhc chng ta nh v cuc trao i ny. Cng vo khong thi gian ny, nhm pht trin s vit ln t card cc c lng. H c lng da trn cm gic v cc chi tit nhn c trong cuc i thoi User Story l du hiu ghi nh cuc i thoi v yu cu. N l cng c lp k hach m khch hng dng ln lch trnh ci t cc yu cu da trn c s mc u tin v chi ph c lng. Chu k ngn (Short C cles) Mt d n XP s giao sn phm d dang (hay d n ang thc hin, cng dch t ch working project) mi 2 tun. Mi bc lp 2 tun ny sn xut ra mt phn mm d dang p ng mt s yu cu no ca khch hng. Ti thi im cui ca bc lp, h thng c demo cho khch hng xem v nhn phn hi ca h. K hoch b c lp: Mi bc lp thng ko di 2 tun. N i din cho mt ln giao hng th, c th s c hoc khng c thm vo sn phm chnh thc. N l mt tp cc user story c chn bi khch hng da trn chi ph do nhm pht trin a ra. Nhm pht trin a ra chi ph cho mt bc lp bng cch o chi ph ca cc bc lp h lm trc . Khch hng chn ty { s lng story cho bc lp sao cho tng chi ph c lng khng vt qu ngn sch. Mi khi mt bc lp c khi ng, khch hng ng { khng thay i nh ngha ca story v u tin. Trong sut thi gian ny, nh pht trin t do ct cc story thnh cc nhim v (task) v t do ci t cc task ny ty theo thun li v mt k thut v kinh doanh.
14

K THUT LP TRNH

K hach pht hnh: Nhm XP thng to k hoch pht hnh tng ng vi mi 6 bc lp. Mt bn pht hnh thng l thnh qu ca 3 thng lm vic. N i din cho 1 ln giao hng chnh v thng s c a vo sn phm. Mt bn pht hnh cng bao gm mt tp cc story c phn u tin bi khch hng da trn ngn sch m nhm pht trin a ra. Nhm pht trin xy dng ngn sch cho 1 bn pht hnh bng cch o chi ph tiu tn ca nhng phin bn pht hnh trc. Khch hng c th chn s lng bt kz cc story cho 1 bn pht hnh sao cho tng cc chi ph c lng khng vt qu ngn sch. Khch hng cng xc nh trnh t cc story c ci t trong 1 bn pht hnh. Nu mun, nhm pht trin cng c th a ra vi bc lp u tin v xc nh xem story no s c ci t trong bc lp no. Cc bn pht hnh khng c nh, khch hng c th thay i ni dung bt kz lc no. H c th hy hoc vit mt story mi hoc thay i u tin ca cc story. Cc ch ng trnh kim tra s tha mn u cu ca sn phm (Acceptance Test) Chi tit v user story c thu thp trong dng thc ca cc acceptance test c c t bi khch hng. Cc acceptance test ca 1 story c vit ngay trc hoc cng lc vi vic ci t story . Chng c vit theo mt ngn ng kch bn bt kz no cho php chng chy t ng v c th lp li. Ngn ng ca acceptance test c pht trin v tin ha cng vi h thng. Khch hng c th thu nhm pht trin to mt h thng thc thi kch bn n gin hoc c th h c b phn kim sot cht lng ( A) ring pht trin n. Nhiu khch hng nh A pht trin cng c cho vic kim tra tha mn ca sn phm v trc vit cc acceptance test. Mi khi mt acceptace test thnh cng, n c thm vo nhm ca nhng acceptance test thnh cng trc , v khng bao gi c php tht bi. Nhm acceptance test tng trng ln v s c chy nhiu ln trong ngy, hoc chy mi khi build h thng. Nu nh cc acceptance test tht bi th build ny c bo co l hng. Nh vy mi khi mt yu cu c gi l ci t xong th n s khng bao gi b v. H thng chuyn t trng thi c sang trng thi
15

K THUT LP TRNH

mi m khng bao gi c php khng lm vic (ngha l phi tha mn cc yu cu c ln mi) lu hn vi gi. Lp trnh theo cp (Pair Programming) M ngun sn phm c vit bi cc cp lp trnh vin lm vic vi nhau trn cng mt my tnh. Mt thnh vin ca 1 cp s gi bn phm v nh code. Thnh vin cn li ca cp s quan st code c nh v tm kim li v ci tin m. C 2 tng tc vi nhau mt cch lin tc v c 2 cng bn rn cho cng vic vit phn mm. Vai tr c thay i thng xuyn. Ngi gi phm s mt mi v dn n d sai lm. Ngi cn li (trong 1 cp) s nhn li bn phm v iu khin n. Bn phm c hon i nhiu ln gia 2 ngi trong 1 gi. M ngun kt qu c thit k v c vit bi c 2 ngi. Cng sc ca c hai l nh nhau. Mi quan h theo cp s c thay i t nht 1 ln trong ngy mi lp trnh vin c lm vic t nht vi 2 ngi trong ngy. Xuyn sut 1 bc lp ca XP, mi thnh vin ca nhm pht trin phi lm vic vi mi thnh vin khc trong nhm. V h ch lm nhng cng vic ca trong ni dung ca bc lp m thi. iu ny tng cng s tri rng kin thc cho ton nhm. Trong khi k thut c trng vn cn nguyn vn v cc cng vic yu cu k thut c trng vn thng c giao cho cc chuyn gia th cc chuyn gia ny lm vic vi hu ht cc thnh vin cn li trong nhm . iu ny s tri rng kin thc cho ton nhm cc thnh vin khc c th thay th cho chuyn gia trong cc trng hp khn cp. Nghin cu ca Laurie Williams v Nosek ch ra rng lm vic theo cp khng nhng khng gim hiu nng ca i ng lp trnh m n cn gia gim ng k t l sai st. Pht trin theo nh h ng test ( est riven evelopment) Tt c cc m ngun sn phm c vit lm cho cc unit test thnh cng. u tin, chng ta vit 1 unit test tht bi (fail, chy sai) bi v chc nng d nh test vn cha tn ti. Sau chng ta vit m ci test ny thnh cng (pass).
16

K THUT LP TRNH

Thi gian lp li gia vit test ri vit code xy ra rt nhanh, trong khong mt vi pht. Cc b test v m cng tng trng, trong b test lun dn trc m mt khong cch rt ngn. Kt qu l cc b test pht trin cng lc vi m sn phm. Nhng b test ny cho php cc lp trnh vin kim tra chng trnh (ang pht trin) c chy hay khng. Nu mt cp no thc hin mt thay i nh, h c th chy li cc b test chc chn rng ho khng lm hng cc on m khc. iu ny lm cho cng vic refactoring v cng thun tin. Khi bn vit m cc b test thnh cng, th m c gi l m kh kim (hay m c th test, testable code). Ngoi ra, cn c 1 mc tiu rt quan trng l bn c th tch bch cc module sao cho chng c th c test mt cch c lp. Nh vy, bn thit k theo hng ny cho kt qu l m ngun t b trng lp nht. Cc nguyn l{ thit k OO ng vai tr l cng c mnh m gip bn trnh c m trng lp. S hu tp th (Collective Ownership) Mt cp c quyn check out v chnh sa, ci tin mt module bt kz. Khng mt lp trnh vin no chu trch nhim c nhn vi mt module bt kz hoc mt k thut bt kz. Mi ngi cng lm vic vi GUI(*). Mi ngi cng lm vic vi middle ware. Mi ngi cng lm vic vi database. Khng ai c nhiu quyn lc hn ngi khc v mt k thut hay mt module no . in ny khng c ngha l XP phn i chuyn vin. Nu bn c k nng v lp trnh GUI, hn bn thch cc nhim v lin quan n GUI, nhng bn s c yu cu bt cp vi cc nhim v middle ware v database. Nu bn quyt nh hc mt chuyn mn th hai, bn c th ng k{ cc nhim v v lm vic vi chuyn gia chuyn mn . H s dy bn v bn s khng b "giam gi" trong chuyn mn ca mnh. ch hp lin tc (Continous Intergation) Cc lp trnh vin check in m v tch hp nhiu ln trong ngy. ui lut rt n gin, ngi u tin s check in, nhng ngi sau th merge. XP s dng cng c qun l{ m (source control) cho php nhiu ngi check out mt lc. iu ny c ngha l cc lp trnh vin c php check out bt kz
17

K THUT LP TRNH

mt module no vo bt kz thi im no . Khi anh ta check in module ( c chnh sa), anh ta phi chun b merge vi cc thay i do mt lp trnh vin bt kz trc thc hin. trnh phi merge qu nhiu trong 1 lc, cc thnh vin nn check in thng xuyn. Mt cp s lm mt nhim v trong khong 1 hay 2 gi. H to cc b test v m sn phm.Vo mt thi im thch hp, c th l trc khi nhim v c hon thnh, h s quyt nh check in cc on m. Trc tin, h phi lm cho cc b test u thnh cng. Sau , h mi tch hp phn code mi vo phn c. Nu cn th merge chng li. Hoc nu cn, h s hi { kin lp trnh vin check in trc . Mt khi cc thay i c tch hp, h build li h thng. H chy li tt c cc test trong h thng, bao gm c acceptance test. Nu h lm hng bt c th g, h phi sa ngay. Nu cc test u thnh cng, khi ny h mi c gi l hon thnh xong mt check in. Nh vy nhm XP s build h thng nhiu ln trong ngy. H build ton h thng t u n cui. Nu kt qu cui cng ca h thng l 1 CD th h s to mt CD. Nu kt qu ca h thng l 1 web site,, h s ci t web site , c th l trn 1 web server dnh ring cho test. Ch bn (Sustainable Pace) Mt d n phn mm khng phi l mt cuc chy nc rt, m n l mt cuc chy marathon. Nhm no va ri vch xut pht chy tht nhanh th s tiu tn ht nng lng trc khi h v n ch. hon tt c nhanh th team cng phi kim sot c tc , h phi duy tr nng lng v s tnh to. H phi chy vi nhp va phi v vng chc. ui lut ca XP l nhm khng c php lm vic qu gi (overtime). Ngoi l duy nht l vo tun cui cng ca mt phin bn pht hnh. Nu team ang phi trong tnh hung hon tt nhanh chng kp tin pht hnh th c th overtime.

18

K THUT LP TRNH

Kt lun
Vi lng kin thc v cng hn ch cng nh cha c nhiu thi gian tm hiu chuyn su, bo co ny khng hy vng mang n nhng g mi m m n gin ch l s tng hp, lc dch v chnh sa li cc bi vit c trn internet, sch in v mt s ti liu khc. Sai st v mt ni dung cng nh khim khuyt trong cch trnh by chc chn khng th trnh khi, rt mong nhn c s thng cm v gip ca thy bo co c hon thin hn! Em xin chn thnh cm n!

19

K THUT LP TRNH

i li u tham kho
What Is a Programming Paradigm? - Troy Holmes. http:// wikipedia.com http://congdongcviet.com v mt s trang web khc c lin quan!

20

K THUT LP TRNH

21

You might also like