Cong Nghe Phan Mem

You might also like

You are on page 1of 154

Muc luc

CHNG 1 AI CNG V CNG NGH PHN MM ............................... 5


I. KHAI QUAT V LCH S LP TRNH .................................................................................... 5
I.1.
Lp trnh tuyn tnh........................................................................................... 5
I.2.
Lp trnh co cu truc ......................................................................................... 6
I.3.
Lp trnh nh hng i tng (HT).......................................................... 6
I.4.
Lp trnh trc quan............................................................................................ 7
I.5.
Nhng t tng cach mang trong lp trnh ....................................................... 7
II. CAC PHNG DIN CUA CNG NGH PHN MM
8
II.1.
Cng ngh phn mm la g?.............................................................................. 8
II.2.
Nhng yu t cht lng bn ngoai va bn trong ............................................. 8
II.3.
San phm phn mm la g ? .............................................................................. 9
III. NHNG NI DUNG C BAN CUA CNPM........................................................................... 11
III.1.
Tng quan v cng ngh phn mm ............................................................... 11
III.2.
Chu ky sng cua phn mm ............................................................................ 12
CHNG 2 THIT K PHN MM ................................................................ 18
I. NN TANG CUA THIT K PHN MM .............................................................................. 18
II. PHNG PHAP LP TRNH CU TRUC ............................................................................... 20
II.1.
Khai nim v lp trnh cu truc ....................................................................... 22
II.2.
Nhng y tng c ban lp trnh cu truc ......................................................... 22
II.3.
Cac cu truc iu khin chun ........................................................................ 25
II.4.
Mt s v du vit chng trnh theo s khi .............................................. 28
III. CU TRUC TI THIU
29
III.1.
Cac cu truc lng nhau.................................................................................... 31
IV. LP TRNH N TH
32
IV.1.
Khai nim v n th ...................................................................................... 32
IV.2.
Mi lin h gia cac n th ........................................................................... 33
IV.2.1.
Phn loai n th ................................................................................... 33
IV.2.2.
T chc mt chng trnh co cu truc n th .......................................... 33
V. PHAT TRIN CHNG TRNH BNG TINH CH TNG BC ............................................... 35
V.1.
Ni dung phng phap .................................................................................... 35
V.2.
V du minh hoa................................................................................................ 36
V.2.1.
V du 1 ........................................................................................................ 36
V.2.2.
Bai toan 8 qun hu ................................................................................... 38
TS. PHAN HUY KHANH bin soan

ii

Cng ngh Phn mm


V.3.
Sa i chng trnh ....................................................................................... 42
VI. PHU LUC - N V TRONG TURBO PASCAL ...................................................................... 50
VI.1.
Gii thiu Unit ................................................................................................ 50
VI.2.
Cu truc cua Unit ............................................................................................ 50
VI.3.
Cach s dung Unit........................................................................................... 52
VI.4.
V du v Unit................................................................................................... 53
VI.5.
Bai tp ............................................................................................................. 55

CHNG 3 HP THC HOA PHN MM..................................................... 57


I. XAC MINH VA HP THC HOA PHN MM ........................................................................ 57
II. CHNG MINH S UNG N CUA CHNG TRNH ............................................................ 58
II.1.
Suy lun Toan hoc .......................................................................................... 59
II.1.1.
Cac quy tc suy lun Toan hoc .................................................................. 59
II.1.2.
Khai nim v chng minh tnh ung n cua chng trnh ....................... 60
II.1.3.
Tin va quy tc suy din ........................................................................ 61
II.1.4.
Quy tc iu kin if B then P ..................................................................... 62
II.1.5.
Quy tc iu kin if B then P else Q .......................................................... 63
II.1.6.
Quy tc vong lp while .............................................................................. 63
II.1.7.
Cac quy tc khac ........................................................................................ 64
II.2.
Phng phap cua C.A.R. Hoare ...................................................................... 66
II.2.1.
Phat biu .................................................................................................... 66
II.2.2.
Chng minh tnh ung n tng phn cua Div .......................................... 66
II.3.
Chng minh dng............................................................................................ 69
II.3.1.
Chng minh dng cua mt chng trnh.................................................... 69
II.3.2.
Chng minh dng cua Div ......................................................................... 70
II.3.3.
anh gia mt chng trnh lp .................................................................. 71
III. XY DNG CHNG TRNH ............................................................................................. 72
III.1.
M u ............................................................................................................ 72
III.2.
Bai toan c tam tai .......................................................................................... 73
III.2.1.
Li giai th nht ......................................................................................... 74
III.2.2.
Li giai th hai........................................................................................... 75
III.2.3.
Chng minh tnh ung n cua chng trnh (I) ....................................... 76
III.3.
In ra mt danh sach theo th t ngc ............................................................ 80
III.3.1.
TILDA1 .................................................................................................... 81
IV. CAC TIN VA QUY TC SUY DIN ................................................................................ 82
IV.1.
iu kin trc yu nht va iu kin sau manh nht cua mt day lnh........ 82
IV.1.1.
Ham fppre .................................................................................................. 83
IV.1.2.
Ham fppost ................................................................................................. 83
IV.1.3.
S dung iu kin trc yu nht va iu kin sau manh nht chng
minh tnh ung n cua chng trnh ............................................................................ 84

TS. PHAN HUY KHANH bin soan

ii

Muc luc
IV.2.
Cac tin gan ................................................................................................ 86
IV.2.1.
iu kin trc yu nht va iu kin sau manh nht cua lnh gan ......... 86
IV.2.2.
Quy tc tnh toan iu kin sau manh nht cua mt phep gan .................. 87
V. BAI TP ........................................................................................................................... 89
CHNG 4 TH NGHIM CHNG TRNH ............................................... 90
I. KHAO SAT PHN MM ..................................................................................................... 90
II. CAC PHNG PHAP TH NGHIM ..................................................................................... 92
II.1.
nh ngha va muc ch th nghim ............................................................... 92
II.2.
Th nghim trong chu ky sng cua phn mm ............................................... 94
II.2.1.
Th nghim n th.................................................................................... 94
II.2.2.
Th nghim tch hp................................................................................... 95
II.2.3.
Th nghim h thng.................................................................................. 96
II.2.4.
Th nghim hi quy.................................................................................... 97
II.3.
Dn dt cac th nghim................................................................................... 97
II.4.
Thit k cac phep th pha huy (Defect Testing) ............................................. 98
II.4.1.
Cac phng phap da trn chng trnh ................................................... 98
II.4.2.
Cac phng phap da trn c ta ............................................................ 100
II.4.3.
Kt lun .................................................................................................... 101
II.4.4.
Cac tiu chun kt thuc th nghim ......................................................... 101
II.5.
Cac phep th nghim thng k...................................................................... 102
II.5.1.
II.5.2.

M u ................................................................................................... 102
c lng n nh cua mt phn mm ............................................... 104

CHNG 5 C TA PHN MM ................................................................... 105


I. M U C TA PHN MM .......................................................................................... 105
I.1.
Khai nim v c ta ...................................................................................... 105
I.1.1.
c ta la g ?............................................................................................ 105
I.1.2.
Cac phng phap c ta .......................................................................... 105
I.1.3.
Cac th du minh hoa ................................................................................. 106
I.2.
c ta va lp trnh ......................................................................................... 107
II. C TA CU TRUC D LIU .......................................................................................... 109
II.1.
Khai nim v Cu truc d liu c s vect ................................................... 109
II.1.1.
Dn nhp.................................................................................................. 109
II.1.2.
c ta hnh thc ....................................................................................... 110
II.2.
Truy nhp mt phn t cua vect.................................................................. 110
II.3.
Cac thut toan x ly vect............................................................................. 111
II.3.1.
Truy tm tun t mt phn t cua vect (sequential search).................... 111
II.3.2.
Tm kim nh phn (Binary search) ......................................................... 113
III. C TA AI S : M HNH HOA PHAT TRIN PHN MM ................................................. 117
III.1.
M u .......................................................................................................... 117
III.2.
Phn loai cac phep toan................................................................................. 119
III.3.
Hang va bin ................................................................................................. 120
III.4.
Phep th cac hang.......................................................................................... 120
TS. PHAN HUY KHANH bin soan

iii

iv

Cng ngh Phn mm


III.5.
Cac thuc tnh cua c ta .............................................................................. 122
III.5.1.
M hnh lp trnh (trin khai) .................................................................. 122
III.5.2.
M hnh c bit ...................................................................................... 123
III.5.3.
M hnh ng d ...................................................................................... 123
III.6.
Phep chng minh trong c ta ai s ............................................................ 123
III.6.1.
Ly thuyttng ng............................................................................... 124
III.6.2.
Khai nim v ly thuyt quy nap ................................................................ 125
III.6.3.
Chng minh t ng bi vit lai ............................................................... 126
III.6.4.
Phn cp trong c ta ai s ................................................................... 128
IV. C TA HAY CACH CU TH HOA S TRU TNG .......................................................... 129
IV.1.
c ta phep thay i b nh ......................................................................... 129
IV.2.
Ham ............................................................................................................... 131
IV.3.
Hp thc hoa va phuc hi ............................................................................. 134
IV.4.
Bt u trin khai thc tin ........................................................................... 137
IV.5.
Phep hp thanh (cu tao)............................................................................... 140
IV.6.
Trin khai th hai .......................................................................................... 141
IV.7.
Trin khai thc hin ln th ba ..................................................................... 146
IV.8.
c ta lam g ? .............................................................................................. 149

TS. PHAN HUY KHANH bin soan

iv

ai cng v cng ngh phn mm

CHNG 1

ai cng v cng ngh phn mm


I. Khai quat v lch s lp trnh
Lp trnh (programming), hay lp chng trnh cho may tnh in t (MTT)
la mt nganh con rt mi me. MTT u tin lp trnh c mi ch xut hin
cach y hn bn mi nm 1. Sut hn bn thp ky qua, lp trnh khng ngng
c cai tin va phat trin, cang ngay cang hng v nhu cu cua ngi lp trnh.
Lp trnh la mt cng vic nng nhoc, nng sut thp so vi cac hoat ng tr
tu khac. V du nu mt san phm phn mm khoang 2000 3000 dong lnh oi
hoi 3 ngi lp trnh chnh trong vong 6 thang th nng sut mi ngi ch dao
ng trong khoang t 5 n 6 lnh mi ngay (?!).
Chnh v cac san phm phn mm khi tung ra th trng cha thc s hoan
hao ngay nn ngi ta thng dung meo thng mai bng cach gan cho san phm
mt cai ui phin ban (version) noi rng phin ban ra sau a khc phuc c
nhng khim khuyt cua phin ban trc o.
V du 1 :
H iu hanh MSDOS a co cac phin ban 1.0, 3.3, 5.0, 6.0, 7.0 v.v...
Microsoft Windows a co cac phin ban 1.0, 2.0, 3.0, 3.1, 3.11.
Nay la Windows 95, 97, 98 v.v...
Turbo Psacal cua hang Borland Inc. a co cac phin ban 5.0, 6.0, 7.0, 8.0 v.v...

I.1.

Lp trnh tuyn tnh

Vi nhng MTT u tin, ngi ta s dung ngn ng may (machine


language) hay ngn ng bc thp (low level) lp trnh va dung cac khoa c kh
nap chng trnh vao may. Theo a phat trin cua cac thit b phn cng, cac
ngn ng bc cao (high level) vi cac dong lnh ta ting Anh bt u c s
dung. May se dch chng trnh o sang ngn ng may trc khi thc hin.
Vi nhng ngn ng lp trnh ban u, chng trnh vit ra gm nhng dong
lnh co khuynh hng ni nhau theo day dai, kho hiu v mt logic. Ngi ta s

ENIAC (Electronic Numerical Integrator and Computer) la chic MTT u tin ra i nm


1945 tai trng ai hoc Tng hp Pensylvania, nc My.

TS. PHAN HUY KHANH bin soan

Cng ngh Phn mm

dung cac lnh nhay (goto) iu khin chng trnh mt cach tuy tin. Chng
trnh la mt m ri rm khng khac g mon m si (spaghetti) cua nc Y.
Cac ngn ng lp trnh tuyn tnh khng kim soat c nhng s thay i
cua d liu. Moi d liu s dung trong chng trnh u co tnh toan cuc va co th
b thay i vao bt c luc nao. Vao giai oan nay, ngi ta xem vic lp trnh nh
mt hoat ng ngh thut nhum mau sc tai ngh ca nhn hn la khoa hoc, vi
thut ng the art of programming.

I.2.

Lp trnh co cu truc

Vao cui nhng nm 1960 va u 1970, khuynh hng lp trnh cu truc


(structured programming) ra i. Theo phng phap nay, mt chng trnh co cu
truc c t chc theo cac phep toan ma no phai thc hin. Chng trnh bao gm
nhiu thu tuc, hay ham, ring re. Cac thu tuc hay ham nay c lp vi nhau, co d
liu ring, giai quyt nhng vn ring, nhng co th trao i qua lai vi nhau
bng cac tham bin.
Lp trnh cu truc lam cho vic kim soat chng trnh d dang hn, va do vy,
giai quyt bai toan d dang hn. Tnh hiu qua cua lp trnh cu truc th hin
kha nng tru tng hoa. Trong mt chng trnh co cu truc, ngi ta ch quan
tm v mt chc nng : mt thu tuc hay ham nao o co thc hin c cng vic
a cho hay khng ? Con vic thc hin nh th nao la khng quan trong, chung
nao con u tin cy.
Mc du ky thut thit k va lp trnh cu truc c s dung rng rai nhng
vn bc l nhng khim khuyt. Khi phc tap tng ln th s phu thuc cua
chng trnh vao kiu d liu ma no x ly cung tng theo. Cu truc d liu trong
mt chng trnh co vai tro quan trong cung nh cac phep toan thc hin trn
chung. Mt khi co s thay i trn mt kiu d liu th mt thu tuc nao o tac
ng ln kiu d liu nay cung phai thay i theo.
Khim khuyt trn cung anh hng n tnh hp tac gia cac thanh vin lp
trnh. Mt chng trnh co cu truc c giao cho nhiu ngi th khi co s thay
i v cu truc d liu cua mt ngi se anh hng n cng vic cua nhng ngi
khac.

I.3.

Lp trnh nh hng i tng (HT)

Lp trnh HT (oriented-object programming) c xy dng trn nn tang


cua lp trnh cu truc va tru tng hoa d liu (data abstraction).
Chng trnh HT c thit k xung quanh d liu ma no thao tac ch
khng ban thn cac thao tac. Tnh HT lam ro mi quan h gia d liu va thao
tac trn d liu.

ai cng v cng ngh phn mm

Tru tng hoa d liu la lam cho vic s dung cac cu truc d liu tr nn c
lp i vi vic cai t cu th. V du s du chm ng (floating point number) a
c tru tng hoa trong moi ngn ng lp trnh. NSD thao tac trn cac s du
chm ng ma khng quan tm n cach biu din nh phn trong may cua chung
nh th nao.
Lp trnh HT lin kt cac cu truc d liu vi cac phep toan. Mt cu truc
nao o th tng ng, ta co nhng phep toan nao o. V du : mt ban ghi v nhn
s co th c oc, cp nht s thay i va c ct gi, con mt s phc th c
dung trong tnh toan. Khng th vit s phc ln tp nh mt ban ghi nhn s,
cung khng th cng tr nhn chia hai ban ghi nhn s vi nhau nh cach cua s
phc.
Lp trnh HT a vao nhiu thut ng va khai nim mi, chng han khai
nim lp (class), khai nim k tha (inheritence).
u im cua lp trnh HT la lam cho vic phat trin phn mm nhanh
chong hn vi kha nng dung lai cac chng trnh cu. Mt lp mi c xem nh
lp suy din, co th c k tha cu truc d liu va cac phng phap cua lp gc
hoc lp c s.
Mt trong nhng ngn ng lp trnh HT c noi n la SMALLTALK, c
phat trin nm 1980 tai Xerox Palo Alto Recearch Center (PARC). Hin nay,
nhiu ngn ng lp trnh thng dung cung c trang b thm kha nng HT,
nh la C++, Delphi, v.v...

I.4.

Lp trnh trc quan

Lp trnh trc quan (visual programming) c phat trin trn nn tang cua
lp trnh HT. Khi thit k chng trnh, ngi lp trnh nhn thy ngay kt
qua qua tng thao tac va giao din ngi dung (user interface) khi chng trnh
c thc hin. Ngi lp trnh co th d dang chnh sa v mau sc, kch thc,
hnh dang va cac x ly thch hp ln cac i tng co mt trong giao din.
Cac ngn ng lp trnh trc quan thng dung hin nay thng c phat trin
trong mi trng Microsoft Windows, nh Visual Basic, Visual C++, Visual
Foxpro, Java. v.v...

I.5.

Nhng t tng cach mang trong lp trnh

Lp trnh la mt trong nhng lnh vc kho nht cua toan hoc ng dung. Ngi
ta coi lp trnh la mt khoa hoc nhm xut nhng nguyn ly va phng phap
nng cao nng sut lao ng cua lp trnh vin. Nng sut y c hiu la
tnh ung n cua chng trnh, tnh d oc, d sa, tn dung ht kha nng cua
thit b ma khng phu thuc vao thit b.
TS. PHAN HUY KHANH bin soan

Cng ngh Phn mm

Thc cht cua qua trnh lp trnh la ngi ta khng lp trnh trn mt ngn
ng cu th ma lp trnh hng ti no. Chng trnh phai c vit di dang cac
thao tac co cu truc trn cac i tng co cu truc va cac mnh nhm khng
nh tnh ung n cua kt qua.
Nhng t tng cach mang trong lp trnh th hin hai im sau :
Chng trnh va lp trnh vin tr thanh i tng nghin cu cua ly
thuyt lp trnh.
Lam th nao lam chu c s phc tap cua hoat ng lp trnh ?

II. Cac phng din cua cng ngh phn mm


II.1.

Cng ngh phn mm la g?

Theo t in Computer Dictionary cua Microsoft Press (1994), Software


Engineering : The design and development of sofware (computer program), from
concept through execution and documentation.
T in Larousse (1996) nh ngha chi tit hn : Cng ngh phn mm la tp
hp cac phng phap, m hnh, ky thut, cng cu va thu tuc lin quan n cac giai
oan xy dng mt san phm phn mm. Cac giai oan o la : c ta (specifiction),
thit k (design), lp trnh (programming), th nghim (testing), sa sai
(debugging), cai t (setup) em vao ng dung (application), bao tr
(maintenance) va lp h s (documentation).
Muc ch chnh cua cng ngh phn mm la san xut ra nhng phn mm
co cht lng. Cht lng phn mm khng la mt khai nim n gian, bao gm
nhiu yu t. Chng han chng trnh chay nhanh, d s dung, co tnh cu truc,
d oc d hiu, v.v...
Ngi ta thng anh gia theo hai kiu cht lng : nhng yu t cht lng
bn ngoai va nhng yu t cht lng bn trong.

II.2.

Nhng yu t cht lng bn ngoai va bn trong

Nhng yu t cht lng bn ngoai ngi dung co th nhn bit c, nh tc


nhanh, chay n nh, tnh d s dung, d thch nghi vi nhng thay i (tnh
m rng), tnh cng thai hoc (ergonomy, human factor), v.v...
Nhng yu t cht lng bn ngoai cua mt san phm phn mm la :
Tnh ung n

Kha nng thc hin chnh xac cng vic t ra.

Tnh bn vng

Co th hoat ng trong nhng iu kin bt thng.

Tnh co th m rng

Kha nng d sa i thch nghi vi nhng thay i mi

ai cng v cng ngh phn mm

Tnh s dung lai

Kha nng s dung lai toan b hay mt phn cua h thng


cho nhng ng dung mi.

Tnh tng thch

Co th d dang kt hp vi cac san phm phn mm khac.

Cac cht lng khac

Hiu qua i vi ngun tai nguyn cua MTT nh b x ly,


b nh..., d chuyn i (khng phu thuc vao cu hnh
phn cng), d kim chng va an toan (c bao v quyn
truy nhp), d s dung, v.v...

Nhng yu t cht lng bn trong la la tnh n th, tnh d oc, d hiu ma


ch nhng ngi lam Tin hoc chuyn nghip mi bit c. Yu t cht lng bn
ngoai la muc ch cui cung nhng yu t cht lng bn trong lai la mu cht
at c nhng yu t cht lng bn ngoai.

II.3.

San phm phn mm la g ?

Mc du ngi ta khng nh ngha nhng khai nim san phm phn mm c


hiu nh la mt h thng chng trnh thc hin mt nhim vu tng i c lp
nhm phuc vu cho mt ng dung cu th trong cuc sng cua con ngi (va co th
c thng mai hoa). V du cac san phm phn mm :
H iu hanh : MS DOS, OS/2, Unix, MAC OS...
H iu hanh mang may tnh : Unix, Novell Netware, Windows NT... va cac
ng dung trn mang LAN, WAN, Internet/Intranet (cac Browsers, cac dch
vu khai thac Internet...).
Cac ngn ng lp trnh (chng trnh dch) : Turbo Pascal, Turbo C, C++...
H quan tr c s d liu : Microsoft Foxpro, Microsoft Access, Oracle,
Paradox...
Microsoft Windows va cac ng dung trn Windows.
Cac tro chi (games).
Cac phn mm tr giup thit k (CAD, Designers...), tr giup giang day...
Cac h chuyn gia, tr tu nhn tao, ngi may, v.v...
Cac chng trnh phong chng virus, v.v...
Di y la bang tom tt qua trnh tin hoa cua san phm phn mm :
Thi ky u tin
1950 1960

X ly theo l (Batch processing)


Phn mm c vit theo n t hang

Thi ky th hai
1960 1970

a ngi dung (Multiusers)


Thi gian thc (Real time)
C s d liu (Database)
Phn mm san phm

TS. PHAN HUY KHANH bin soan

10

Cng ngh Phn mm

Thi ky th ba
1970 1990

H thng x ly phn b (Distributed processing system)


Thng minh (Intelligence)
Phn cng gia thanh ha
Hiu qua tiu thu

Thi ky th t
1990 tr i

H thng ban (Desktop Personal Notebook computers)


Lp trnh hng i tng (Object oriented programming)
Lp trnh trc quan (Visual programming)
H chuyn gia (Expert system)
Mang thng tin toan cu (Worldwide communication network)
X ly song song (Paralell processing)
...

Sau y la mt tranh vui v qua trnh tao ra mt san phm phn mm a kha
quen thuc i vi nhung ngi lam Tin hoc t hn 20 nm nay (theo J.
CLAVIER, Diriger un projet informatique, Edition J. C. I. Inc, Canada 1993) :

1. Ngi t hang
V du : Cng ty Cng vin

2. Thit k cua chu tr tai

3. San phm cua ngi lp trnh

4. Sau khi sa sai vi


nhiu sang kin cai tin

5. Trin khai cho khach hang

6. c m cua ngi s dung !

Hnh 1.1. Qua trnh tao ra mt san phm phn mm

ai cng v cng ngh phn mm

11

III. Nhng ni dung c ban cua CNPM


III.1.

Tng quan v cng ngh phn mm

Cng ngh phn mm c trng bi tp hp cac phng phap phat trin mt


chng trnh (phn mm noi chung). S phat trin mt chng trnh, hay tin
trnh phn mm (software process), khng ch nm ch lp trnh theo ngha hep
ma con la vic trin khai cac giai oan dn n lp trnh. Tp hp cac giai oan
nay c goi la chu ky sng (hay vong i) cua phn mm (life cycle).
Vi mt d an Tin hoc ln, nhiu ngi lp trnh tham gia c chia thanh
nhom, mi nhom phu trach giai quyt mt phn cua d an. Ngi phu trach d an
co nhim vu phn b cng vic cho tng nhom, am bao mi lin lac gia cac
nhom, kim tra tin trnh phat trin cua d an, cht lng cua san phm phn
mm khi hoan tt.
Tin trnh phat trin phn mm gm 3 giai oan chnh la xac nh, phat trin
va bao tr, khng phu thuc vao min ap dung, ln va phc tap cua d an
phat trin, cung nh m hnh c la chon.
Giai oan xac nh :
Giai oan nay tra li cu hoi la cai g ? (What?) va khi nao (When?) v d liu
(thng tin) cn x ly, muc ch chc nng va mi trng phat trin. Gm 3 bc :
- Phn tch h thng.
- Lp k hoach d an phn mm.
- Phn tch yu cu thc tin.
Giai oan phat trin :
Giai oan nay tra li cu hoi lam nh th nao ? (How?). Gm 3 bc :
- Thit k phn mm : S dung cac cng cu c ta va lp trnh cu truc.
- Chon cng cu hoc cac ngn ng lp trnh tin hanh vit chng trnh.
- Kim th (phat hin sai sot, nhm ln...).
Giai oan bao tr :
Giai oan nay tp trung vao cac thay i (Modify). Co 3 kiu thay i :
- Sa i : Du phn mm co cht lng tt, vn tn tai nhng khim khuyt t
vic s dung cua khach hang (ngi s dung). Bao tr sa i lam thay i phn
mm, khc phuc khim khuyt.
- Thch nghi : Nhm lam phn mm thch nghi vi mi trng phn cng, nh
CPU, OS, cac thit b ngoai vi.

TS. PHAN HUY KHANH bin soan

11

12

Cng ngh Phn mm

- Nng cao : Khach hang tm ra nhng chc nng phu cua phn mm. Bao tr
hoan thin m rng phn mm ra ngoai nhng chc nng vn co.

III.2.

Chu ky sng cua phn mm

Co nhiu m hnh khac nhau th hin mt chu ky sng (life cycle). Sau y
la mt chu ky sng kiu c in theo m hnh thac nc (waterfall model) gm
cac giai oan nh sau :
Tm hiu va phn tch cac yu cu (RAD Requirements analysis and
definition)
Thit k h thng va phn mm (SSD System and software design)
Cai t va kim th tng phn (IUT Inplementtation and Unit testing)
Tch hp va kim th h thng (IST Integrgion and system testing)
Tm hiu va phn tch
cac yu cu
Thit k h thng
va phn mm
Cai t va kim th
tng phn
Tch hp va kim th
h thng
Hnh 1.2. M hnh thac nc
Du rng m hnh thac nc trn y co ch li trong vic quan ly
(management), lp k hoach va lp bao cao tin phat trin phn mm nhng
ch thch hp vi mt lp h thng phn mm nao o ma thi, khng phu hp vi
cac hoat ng a ch ra trong m hnh.
Tin trnh phn mm gm cac hoat ng phc tap va bin ng ma khng th
biu din trn mt m hnh n gian. Nhng m hnh tt v tin trnh phn mm
vn con la chng chu nghin cu. Hin nay, cac m hnh tng quat khac nhau
hay tnh thc dung cua s phat trin phn mm, gn bo cht che vi nhau.
M hnh thac nc nguyn thuy (original) la mt trong nhng m hnh tng
quat mang tnh thc dung su sc.
Sau y la mt s tip cn :

ai cng v cng ngh phn mm

13

1. Tip cn thac nc (the waterfall approach) : Bao gm cac giai oan c ta yu


cu, thit k phn mm, cai t, kim th, v.v..., sau mi giai oan la s kt
thuc (signed-off) va tip tuc giai oan tip theo.
2. Lp trnh thm do (exloratory programming) : Cho phep tng nhanh qua trnh
dn n tnh thoa ang cua h thng. Lp trnh thm do thng c ap
dung trong lnh vc tr tu nhn tao, khi NSD khng th nh hnh c cac
c ta yu cu. NSD quan tm n tnh thoa ang cua kt qua hn la tnh
chnh xac.
3. Ban mu (prototyping) : Tng t tip cn lp trnh thm do. Pha u tin bao
gm phat trin mt chng trnh cho phep th nghim. Tuy nhin, muc ch
cua phat trin la thit lp cac yu cu h thng. Sau o la s cai t lai phn
mm a n h thng cht lng - san phm.
Bt u
Tp hp
yu cu va
lam mn

Kt thuc
San phm
Lam mn
ban mu

thit k
nhanh
xy dng
ban mu

anh gia
cua khach hang
v ban mu
Hnh 1.3. Tip cn kiu ban mu
4. Bin oi hnh thc (formal transformation) : La s bin i cac c ta hnh
thc (formal specification) cua h thng phn mm ang xet thanh mt
chng trnh kha thi nhng bao toan c tnh chnh xac (correctness preserving transformations).
5. Lp rap h thng t cac thanh phn dung lai c (system assembly from
reusable components). Ky thut nay cho phep xy dng h thng t cac thanh
phn a co. Tin trnh phat trin h thng la s lp rap hn la s sang tao.
Hin nay, cac tip cn 1, 2, 3 c ng dung nhiu trong thc tin.
Trn thc t, cac giai oan phat trin phn mm khng phai ri ring ma la gi
ln nhau (overlap) va thng tin c cung cp ln nhau.
Trong khi thit k, nhng vn va cac yu cu gn bo vi nhau, trong khi lp
trnh, nhng vn thit k c tm thy, v.v... Luc nay, tin trnh phn mm
khng n gian la mt m hnh tuyn tnh ma bao gm mt day cac tng tac cua
cac hoat ng phat trin.
TS. PHAN HUY KHANH bin soan

13

14

Cng ngh Phn mm

Tuy nhin, mt m hnh cha cac vong lp se lam kho khn cho vic quan ly va
bao cao. Co nhiu dang m hnh trong tin trnh phn mm. Sau y la mt s m
hnh :
1. M hnh thac nc cai tin
Tm hiu va phn tch
cac yu cu
Thit k h thng
va phn mm
Cai t va kim th
tng phn
Tch hp va kim th
h thng
Khai thac va
bao tr
Hnh 1.4. M hnh thac nc cai tin
1. Tm hiu va phn tch cac yu cu: NSD h thng va ngi phat trin h thng
ban bac, trao i (consultation) vi nhau thit lp muc ch, rang buc va
cac dch vu cua h thng phn mm, lnh hi c nhng oi hoi cua bai toan.
2. Thit k h thng va phn mm : Tin trnh thit k h thng phn chia cac yu
cu thanh cac h thng phn cng, phn mm va thit lp mt kin truc h
thng toan b (overall system architecture). Vic thit k phn mm bao gm
vic th hin cac chc nng h thng phn mm (software system functions)
bin i thanh cac chng trnh kha thi.
3. Cai t va kim th tng phn : Trong giai oan nay, cac n v chng trnh
hay tp hp cac chng trnh c kim th ln lt sao cho thoa man cac c
ta tng ng.
4. Tch hp va kim th h thng : Cac n v chng trnh c tch hp va kim
th nh la mt h thng y u am bao cac yu cu t ra ban u. Sau
giai oan nay, h thng phn mm c giao cho khach hang.
5. Khai thac va bao tr (operation and maintenance) : y la mt pha dai nht
cua chu ky sng. H thng c cai t va a vao s dung thc t. Vic bao tr
bao gm vic khc phuc nhng sai sot xay ra a khng xut hin trong cac giao
oan trc o cua chu ky sng. Vic ti u hoa cac dch vu cua h thng c
xem nh la nhng yu cu mi c phat hin.

ai cng v cng ngh phn mm

15

2. M hnh xon c
Phat trin trn tnh u vit cua vong i c in va ban mu, b sung nhung
yu t con thiu va thm cac yu t mi, phn tch rui ro.

K hoach :
Tp hp yu cu ban u va
k hoach d an

Phn tch rui ro :


Da trn yu cu ban u
Da trn phan ng cua
khach hang
Quyt nh tip tuc
hay khng ?

K hoach
da trn y kin
cua khach hang

Hng ti
h thng hoan chnh
anh gia cua khach hang :
Khng nh kt qua cua cng ngh

Ban mu ban u
Ban mu tng tip theo
...

Hnh 1.5. M hnh xon c


u im :
Cac phin ban (hay san phm) c hoan thin dn theo chiu xoay c t trong
ra ngoai.
Nhc im :
Kho anh gia chnh xac, nht la khi gp rui ro, kho kim soat. Do o kho
thuyt phuc c cac khach hang ln
M hnh nauy con mi, cha c kim nghim nhiu trong thc tin.
3. Ky thut th h 4 (4th Generation Technology)
Bao gm cac cng cu phn mm trn c s t ng san sinh ma chng trnh
gc theo nhu cu cua ngi phat trin :
Ngn ng phi thu tuc2 (non procedural language) truy cp c s d liu.
B sinh bao cao.
B thao tac d liu.

la ngn ng lp trnh khng tun theo cach goi thu tuc hay goi chng trnh con
thng thng, khng s dung cac cu truc iu khin, tun t, ma da trn tp
hp cac yu t va quan h dn v kt qua yu cu. V du ngn ng vn tin
SQL thuc loai nay.

TS. PHAN HUY KHANH bin soan

15

16

Cng ngh Phn mm


B tng tac va thit k man hnh.
B sinh chng trnh.
Bang tnh.
Cng cu hoa.
Tp hp
yu cu
Chin lc
thit k
Cai t s
dung 4 GL
Kim th

Hnh 1.6. Ky thut th h 4


u im :
Thng c s dung xy dng cac h thng tin va tng lai la cac ng dung
ky ngh phat trin phn mm thi gian thc.

Nhu
cu
phn
mm

Nhu cu trung bnh

Cac PM s dung ky thut 4 GT


(lp ch hng)

Cac phng phap truyn thng


1970

1980

1990

Hnh 1.7. Nhu cu phn mm

2000

ai cng v cng ngh phn mm

17

5. Tch hp cac ky thut


Nhm tng cng tnh ti u trong phat trin phn mm, ngi ta co xu hng
tch hp cac ky thut c in, xoay tron c va 46T a nu.
Tp hp, hiu cac yu cu ban u
Phn tch yu cu

Lam ban mu

4 GT

M hnh xoay tron c

Thit k
Ban mu vong th n
4 GT

Ma hoa
4 GT

M hnh vong th n
Kim th
H thng hoat ng
Bao tr

Hnh 1.8. Tch hp cac ky thut

TS. PHAN HUY KHANH bin soan

17

CHNG 2

Thit k phn mm
I. Nn tang cua thit k phn mm

TS. PHAN HUY KHANH bin soan

18

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

19

TS. PHAN HUY KHANH bin soan

19

20

II. Phng phap lp trnh cu truc

Cng ngh Phn mm

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

21

TS. PHAN HUY KHANH bin soan

21

22

II.1.

Cng ngh Phn mm

Khai nim v lp trnh cu truc

Lp trnh cu truc (Structured Programming) la trng phai lp trnh xut


hin vao nhng nm 70 va c duy tr phat trin t o n nay. Lp trnh cu
truc phan anh quan nim : lp trnh la cng vic sang tao nhng co tnh khoa hoc
va co phng phap, khng phai la ngu hng ca nhn.
Tnh logic va trong sang cua chng trnh am bao tin cy, d hiu, d sa
va d tha k chng trnh.

II.2.

Nhng y tng c ban lp trnh cu truc

a) Chng trnh la mt h thng phn cp t trn xung


Trong lp trnh cu truc, chng trnh la mt h thng phn cp t trn xung,
trong o cac thanh phn tng tac vi nhau ti thiu. Vn cn giai quyt bao
gm cac vn nho hn, mi vn o lai bao gm cac vn nho hn na, v.v...
cho n mc cui cung la nhng cng vic n gian va d giai quyt hoc a giai
quyt ri.
vn
vic 1

vic 1.1

vic 1.2.1

vic 1.2

vic 1.2.2

vic 2

vic 3

...

vic 1.2.3

Hnh 2.1. Chng trnh la mt h thng phn cp

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

23

V du 2 :
Phn tch bai toan cng hai phn s a v bai toan tm c s chung ln
nht.
cng hai phn s, trc tin cn c lc chung, tip o quy ng mu s
ly mu s chung. Cui cung tin hanh cng hai t s cua hai phn s a co chung
mu s. Vic c lc phn s c a v tm c s chung ln nht cua t s va
mu s (s dung thut toan Euclide).
quy ng mu s, cn tm bi s chung nho nht. Vic tm bi s chung nho
nht cua hai s lai c a v tm c s chung ln nht cua chung :
BSCNN(b, d) = b * d / SCLN(b,d).
a
+ c
b d
LPS(a/b)
LPS(c/d)

QMS(a/b, c/d)

a/M + b/M

BSCNN(b, d)

SCLN(a/b)
SCLN(c/d)

SCLN(b, d)

Hnh 2.2. Phn tch bai toan cng hai phn s


Nh vy, chng trnh la mt h thng gm nhiu thanh phn phn cp, mi
thanh phn co nhim vu giai quyt mt vn s cp va co tnh c lp cao. Cac
thanh phn nn tng tac vi nhau ti thiu. Gia hai thanh phn trong h thng
ch nn co ti a mt ng tng tac la ng trao i thng tin d quan ly va
d kim soat.

Gia chng trnh chnh va chng trnh con co ng giao tip la vic truyn
tham bin. Khng c goi chng trnh con theo kiu vt cp.

TS. PHAN HUY KHANH bin soan

23

24

Cng ngh Phn mm


Hnh 2.3. A goi B, B goi C, nhng A khng goi c C

Han ch dung bin toan cuc (global variables) trong chng trnh con v se tao
thm nhng ng giao tip kho quan ly. Chng han, mt chng trnh con
nao o lam thay i mt bin toan cuc th mt ni khac, trong mt chng
trnh con khac hoc ngay trong chng trnh chnh, cung se kho nhn bit s
thay i nay.

b) Khng s dung lnh nhay goto


Lnh goto (jump statement) dung chuyn iu khin n mt im khac
trong chng trnh. Lnh goto lam kho quan ly va kho kim soat chng trnh nn
kho oc, kho sa sai (ri rm nh mon m si Spaghetti cua Y).
Cac chng trnh vit trn ngn ng aassembly hoc trn cac ngn ng bc cao
nh Fortran, Algol, Cobol... thng s dung lnh goto.
V du 3 :
Chng trnh Algol sau y s dung lnh goto iu khin vong lp tnh tng
cac phn t cua mang a gm N s thc :
S := 0; I := 0;
Start : S := S + a[I]; I := I + 1;
if I <= N then goto Start;
...

c) Chng trnh co tnh cu truc


Chng trnh ch s dung cac cu truc iu kin chun, d hiu, d th hin
thut toan. Cu truc cua chng trnh phan anh c cu truc cua vn va cach
giai quyt vn (lam nh th nao ?). Phng phap hay c s dung thit k
chng trnh la phn tch t trn xung (Top-Down Analysis) va tng hp t di
ln (Bottom up Synthesis).
Ni dung phng phap phn tch t trn xung la nhn nhn xem xet tng quat
toan b vn , xut phat t muc tiu (nh) i xung cac thanh phn trong h
thng, chia cac thanh phn thanh cac thanh phn nho hn theo mt cu truc phn
cp cht che.
Ni dung phng phap tng hp t di ln la xut phat t cac vn cu th
va cach giai quyt cu th, sau o tch hp chung lai thanh vn ln hn va cach
giai tng quat hn, hng t di ln trn nhn c vn cn phai giai quyt
ban u
Cach thit k nay gy kho khn v kho kim soat va d lac hng, kho ap ng
y u cac yu cu cua vn .

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

II.3.

25

Cac cu truc iu khin chun

Trong chng trnh, ch nn s dung 7 cu truc iu khin sau y vi quy c


S la mt lnh (Statement) va C la mt biu thc iu kin (Condition) nao o :
Stt Cu truc iu khin
1

Lu tng ng

Tun t

c coi nh la mt lnh
ghep (khi), thc hin
tun t cac lnh S1, S2,
..., Sn.

S1

(Sequential)
begin

...

S1
...

M ta

Sn

Sn
end
2

Re nhanh
C?
True
S

(Branching)
a) Re nhanh thiu
if C then S
3

b) Re nhanh u
if C then S1
else S2

C1 : S1
C2 : S2
...
Cn : Sn
endcase

TS. PHAN HUY KHANH bin soan

False
S2

False C1 ?

...

S2

Nu khng, nu C2 ung
th thc hin S2, v.v...

...

True

False Cn ?

Nu C sai th thc hin


S2.

S1
True

False C2 ?
...

Nu C ung th thc hin


lnh S1.

Nu C1 ung th thc
hin S1.

True

Sn

Cui cung, nu Cn ung


th thc hin Sn.
Nu khng th thi.

Cu truc lp
(Iteration)
Kim tra iu kin
trc khi thc hin
vong lp :

Nu C khng thoa man


(False) th khng lam g
ca.

S1

La chon
(Selection)
case

True

Nu C thoa man (True)


th thc hin S.

False

False
C?

Khi C con ung th con


thc hin S.
Khi C sai th dng.

True
S

25

26

Cng ngh Phn mm


while C do S

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

Stt Cu truc iu khin

27

Lu tng ng

6 Lp vi kim tra
iu kin sau khi
thc hin xong thn
vong lp :

Con thc hin S khi C con


cha thoa man (sai).
t nht lp c mt ln.

False

do S until C

M ta

C?
True

Dng khi C ung.

7 Lp ht trc s ln (for)
i = <Gt_u>
i <Gt_Cui >

i = <Gt_u>
False
i <Gt_Cui >

True

False

True

i = i + Succ (i)

i = i + Pred (i)

for I Gt_u to Gt_Cui do S

for I Gt_u downto Gt_Cui do S

Ngoai cac cu truc lp hay gp thng thng trn y, ngi ta con s dung cac
cu truc lp co thoat (loop exit) nh sau :
{ s dung khoa key anh du li thoat,
key khng xut hin trong S va trong C }

S1
True
C

key := False
While not key do begin

False
S2

TS. PHAN HUY KHANH bin soan

S1
if C then key := True else S2
End

27

28

Cng ngh Phn mm

II.4.

Mt s v du vit chng trnh theo s khi

V du 4 :
{ Vong lp nay dung Repeat }
Repeat

S
True
C1

False

False

C2

True

S
Until C1 or not C2
Chu y :Co iu kin cui vong lp co th dung
Repeat

V du 5 :
True

{ Vong lp nay dung While }

C1

While C1 do

False
C2

False

True
S1

S2

if C2 then S1 else S2
Chu y :Co iu kin trc vong lp co th dung
While

V du 6 :
{ y la cu truc loop-exit, co th dung While

S1

nh sau :}
False

C1

True
C2

key := False
False

True
S2

While not key do begin


S1
if not C1 then key := True
else if C2 then S2
End

Cu truc loop-exit trn y co th dung Repeat nh sau :


key := False
Repeat
S1
if C1 then key := True
else if C2 then S2
Until key

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

29

V du 7 :

C1

True

False
S1
C2

True

{ Trng hp Loop-exit m rng.


Dung khoa key anh du li thoat nh
sau :}
key := False
Repeat
If C1 then key := True
Else begin

False
S2
C2

S1
If C2 then key := True
Else begin

True

False

S2
If C3 then key := True
Else begin

S3
C4

True

False

S3
If C4 then key := True

S4

Else S4
End
End
End
Until key

III. Cu truc ti thiu


Cac cu truc iu khin chun la kt qua cua nhng c gng ln trong cuc
cach mang v lp trnh nhng nm 60. Nhng nha tin hoc co tn tui a ong gop
cng sc la Bohm C. va Jacopini G., Dijkstra E.W. va Warier, v.v...
am bao tnh trong sang, n gian va t nhin, ngi ta khuyn rng ch
nn xy dng chng trnh vi 3 cu truc iu khin c ban la tun t, re nhanh
va lp.
Tuy nhin, Bohm va Jacopini a chng minh c rng ch cn ti thiu hai
cu truc tun t va lp la u.
nh ly Bohm va Jacopini 1986
Vi moi chng trnh vit di dang s khi P (Flowchart), u tn tai mt
chng trnh Q tng ng vi P theo ngha sau :
TS. PHAN HUY KHANH bin soan

29

30

Cng ngh Phn mm


Vi moi d liu vao X thuc min xac nh X, ta co P(x) = Q(x) : P va Q bin
i nhng cai vao ging nhau thanh cac ra ging nhau.
Cac thao tac trn cac bin cua Q la ging nh cua P.
Cac bin cua Q cung la cac bin cua P, co th Q cha thm mt s bin logic.
Q s dung hai cu truc iu khin duy nht la tun t va vong lp while
(SW: Sequence &While).
S chuyn cu truc nh sau :
Case

For

Loop Exit

Repeat

If

Tun t

While

Hnh 2.4. Chuyn v cu truc tun t va lp while (SW)


Sau y la cach chuyn i cua cac cu truc Case, If, For, Repeat va Loop
Exit :
1. Case if
Case C of
C1 : S1
...
Cn : Sn
End {Case}

If C = C1 then S1

else if C = C1 then S2
else if . . .
...
else if C = Cn then Sn

2. if SW
Dung hai bin phu kiu logic thc hin vong lp While ung mt ln :
Var p, q : Boolean
If C then S

p := C
While p do begin

If C then S1 else S2

S ; p := not p
End

p := C ; q := p

While p do begin
S1 ; p := not p

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

31

End;
While not q do begin
S2 ; q := not q
End
3. Repeat SW

Repeat S until C

S ; While not C do S

4. For SW
For I:= Gtu to GtCui

I := Gtu

do S

While i <= GtCui do


begin
S ; I := Succ (I)
End

For I:= Gtu downto

I := Gtu

GtCui
do S

While i >= GtCui do


begin
S ; I := Pred (I)
End

III.1. Cac cu truc lng nhau


Ban thn lnh S trong mi cu truc iu khin c ban lai co th la mt cu truc
iu khin khac.
V du 8 : Vi cu
truc
iu
k in

If C then S1 else S2
Tai S1 va S2, ta co th t cac cu truc iu khin khac, chng han th S1 bi :
While C1 do S3
va th S2 bi :
Repeat S4 until C2
Ta co :
If C then
While C1 do S3
Else Repeat S4 until C2

TS. PHAN HUY KHANH bin soan

31

32

Cng ngh Phn mm


n lt S3 va S4 lai co th thay th bi cac cu truc khac, v.v...

Vi cacc phep th nh vy, cu truc cua chng trnh ngay cang phc tap va
dn n kho hiu va d sai sot. Chnh v vy ma ngi ta chu trong trin khai
chng trnh t trn xung va vit cac cu truc theo tng khi.
Cac khi co th thut voa, thut ra phan anh tnh cu truc va mc lng
nhau cua cac cu truc.
Nguyn tc : Cu truc con c vit lot vao trong (thut vao) cu truc cha. im
vao va im ra cua mi cu truc phai nm trn cung mt hang doc.

IV. Lp trnh n th
IV.1. Khai nim v n th
Y tng c ban cua lp trnh cu truc la phn ra vn ln thanh cac vn
nho hn cho n khi nhn c cac vn tng i n gian, mi vn nay
c giai quyt bi mt n th chng trnh (module). Mi n th co cac tnh
cht nh sau :

a) Tnh n thun

Ch giai quyt nhng i tng d liu co lin h vi nhau trong pham vi cua vn .

Co mt li vao va mt li ra, bn trong ch dung nhng cu truc iu khin chun.

Hoat ng ch phu thuc vao d liu a vao ch khng phu thuc vao tnh trang
trc o cua no. Mi n th la mt ham d liu vao, kt qua tin oan c.

b) Tnh chuyn bit

Ch thc hin mt chc nng, nhim vu nht nh.

Khng qua dai hoc qua ngn (ly tng la mi n th co t 60 n 70


dong lnh va nm tron trong mt trang A4).

Ch c khi ng bng cach goi.

c) Tnh c lp

La mt n v bin dch. Co th vit va chay th c lp.

Cac ngn ng lp trnh bc cao nh Pascal (ky thut dung Unit), C, C++
(include cac tp chng trnh ) va hu h cac cng cu lp trnh thng gp hin
nay u cho phep lp trnh theo n th.

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

33

IV.2. Mi lin h gia cac n th


Cac n th ni kt vi nhau thanh chng trnh, t chc phn cp dang cy
(tree).
A

Hnh 2.5. Mi lin h gia cac n th

IV.2.1.Phn loai n th
Co 4 loai n th :

a) n th iu khin
n th iu khin (Director Module) co chc nng goi cac n th khac x ly.

b) n th x ly
n th x ly (Pcocessing Module) chuyn trach mt nhim vu nao o trn
vung d liu c lp. n th x ly c n th iu khin goi ti va sau khi thc
hin xong chc nng, n th x ly tra quyn iu khin tr lai cho n th iu
khin.

c) n th vao/ra
n th vao/ra (IO Module) chuyn trach vao/ra d liu, co s kim tra va x ly
sai sot. n th cung do n th iu khin goi ti ging nh hoat ng cua n
th x ly.

d) n th chng trnh con


(Subroutine Module) nhm giai quyt mt nhim vu tron ven nhng co quan
h vi cac n th khac. n th chng trnh con c goi thc hin nhiu ln
trong chng trnh.

IV.2.2. T chc mt chng trnh co cu truc n th


Cu truc chng trnh gm :

TS. PHAN HUY KHANH bin soan

- Cu truc ni tai cua cac n th.


- Mi lin h gia cac n th.

33

34

Cng ngh Phn mm


Cac n th c t chc phn cp dang cy nhng phai thoa man tnh cuc b

tham chiu (locality of Reference) : ch co n th mc cao hn (cha) mi co quyn


tham chiu (goi) n n th mc thp hn k o (con).
Nhng cu truc cy thoa man tnh cuc b tham chiu c goi la cu truc cy
thun tuy (Pure tree Structure).
V du 9 :
D ch phuc vu B, ch co B mi co
quyn iu khin D, C khng th
goi D.

Gia B va D ch co mt ng
tng tac duy nht la trao i
tham bin.

Hnh 2.6. Cu truc cy thun tuy

a) c im cua cu truc cy thun tuy


Mi n th ch c quyn iu khin n th con trc tip, giam c tnh
phc tap cua chng trnh.
Cac nhanh hoan toan tach bit nhau nn co tnh tng tac ti thiu.
Ngoai l : Nu mt cng vic nao o cn thc hin nhiu ln, nhiu ch trong
chng trnh th nn t chc thanh mt n th chng trnh con va ve
ring, khng ve vao cu truc cy.
Nh vy, cac n th chng trnh con ch ong vai tro th vin, mt s m
rng cua ngn ng lp trnh. Trng hp n th chng trnh con phc tap th co
th t chc theo cu truc cy thun tuy.
Nh vy toan b chng trnh la mt tp hp cac cu truc cy thun tuy.
V du 10 :
F

F1

F2

F3

G1

Cac n th chng trnh con

Hnh 2.7. Cu truc cy thun tuy cua chng trnh va chng trnh con

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

35

b) Th nghim chng trnh trn cu truc cy thun tuy


Qua trnh th nghim mt chng trnh :
Th nghim cac n th chng trnh con trc.
Th nghim cac n th trong chng trnh chnh, t di ln va ring tng
nhanh.
Cn phn bit :
Cac n th x ly phu thuc vao ng canh (context) nao, la con cua n th
nao ?
Cac n th chng trnh con c lp vi ng canh.
th nghim chng trnh cho trong hnh ve trong v du trn :
Th F va G trc (sau khi a th F1, F2, F3 va G1).
Th D va E ri th B.
Th C.
Th ca chng trnh.

V. Phat trin chng trnh bng tinh ch tng bc


V.1.

Ni dung phng phap

Nguyn ly phat trin CHTR bng tinh ch tng bc (hay thit k t trn
xung) do Niclaus Wirth (tac gia cua ngn ng lp trnh Pascal) xut vao nm
1971, trong bai bao cua mnh "Program Development by Stepwise Refinement".
Ban u, CHTR la nhng cu c vit bng ngn ng t nhin (chng han
ting Vit) th hin s phn tch tng th cua ngi lp trnh.
Sau o, tai mi bc, mi cu c phn tch chi tit hn thanh nhng cu
khac. Co ngha a phn tch mt cng vic thanh nhng cng vic be hn.
- Mi cu c goi la mt c ta (Specification).
- Mi bc phn tch c goi la a tinh ch (refine) cu (cng vic) o.
S tinh ch c hng v pha ngn ng lp trnh se dung. Ngha la cang
bc sau, nhng cu ch trn ngn ng t nhin cang n gian d hiu hn va
c thay th bng cac cu lnh cua ngn ng lp trnh. Nu cu con to ra phc
tap, co th coi o la mt CHTR con va tip tuc tinh ch no.

TS. PHAN HUY KHANH bin soan

35

36

Cng ngh Phn mm

Trong qua trnh tinh ch, cn a ra cac cu truc d liu tng ng vi tng
bc. Nh vy s tinh ch cac c ta CHTR va d liu la song song.
Phng phap tinh ch tng bc th hin t duy giai quyt vn t trn
xung, trong o s phat trin cua cac bc la hng v ngn ng lp trnh se s
dung. ay cua s i xung trong hoat ng phn tch la cac cu lnh va cac m ta
d liu vit bng ngn ng lp trnh.
Y ngha :
Vic lp trnh co s nh hng va co s ngn np trn giy nhap,
tranh mo mm th nghim mang tnh trc giac.

V.2.

V du minh hoa

V.2.1. V du 1
Nhp vao day cac ky hiu lin tip t ban phm cho n khi k t du chm (.)
c go. In ra s lng tng ch s t 0..9 a oc.
Chng han, nu nhp vao day :
Kiki1t2047655kp412.
th in ra :
s ch s 0 a oc = 1,
s ch s 1 a oc = 2,
s ch s 2 a oc = 2
...
1. Phac thao li giai
Cn in ra 10 gia tr ng vi cac ch s t 0..9. Co th dung 10 bin n ZERO,
MOT, HAI, BA... nhng tt nht nn dung mt mang co 10 phn t :
S ['0'] cha k t '0' a oc;
S ['1'] cha k t '1' a oc;
v.v...
Ta m ta nh sau :
Type day = array ['0'..'9'] of integer;
var s = day;
c: Char; {ky t c oc }
T o li giai co th c vit nh sau :
Repeat
oc_mt_k_t; {la ky t c }
if k_t_la_ch_s then m_ch_s_o;
{v du, nu oc '2' th tng s ['2'] ln 1}
Until c = du chm;

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

37

for c := '0' to '9' do


writeln('s cac ch s',c,'a oc =',s [c]:2);
Ta tinh ch bc k_t_la_ch_s bng cach chuyn ra dang biu thc Pascal
nh sau :
('0' < c) and (c < = '9')
Vic oc_mt_k_t c vit nh sau : Read (c);
Du chm co th dung hng :
Const du chm '=';
Ta thy trc luc m, cac phn t cua mang s phai bng 0. Ta co :
for c := '0' to '9' do s [c] := 0;
By gi ta co chng trnh hoan chnh nh sau :
Program m ch s;
Const du chm = '.';
Type day = array ['0'..'9'] of integer;
Var s: day;
c: char;
begin
for c := '0' to '9' do s [c] := 0;
writeln ('Hay go vao cac k t');
writeln ('va kt thuc bng du chm (.) :');
Repeat
Read (c);
if ('0' < = c) and (c < = '9') then
s [c] := s [c] + 1;
Until c = du chm;
for c := '0' to '9' do
writeln ('S cac ch s', c, ' a oc =', s [c] : 2)
Readln
end.
Cho chay chng trnh ta c kt qua nh sau :
Hay go vao cac k t
va kt thuc bng du chm (.) :
ytr7657g858450020820.
S cac ch s 0_a oc = 4
S cac ch s 1_a oc = 0
S cac ch s 2_a oc = 2
S cac ch s 3_a oc = 0
S cac ch s 4_a oc = 1
S cac ch s 5_a oc = 3
TS. PHAN HUY KHANH bin soan

37

38

Cng ngh Phn mm


S cac ch s 6_a oc = 1
S cac ch s 7_a oc = 2
S cac ch s 8_a oc = 3
S cac ch s 9_a oc = 0

V.2.2. Bai toan 8 qun hu


Hay t 8 qun hu ln ban c vua (co 8 x 8 ) sao cho khng co qun nao n
c qun nao ? Mt qun hu co th n c bt c qun nao nm trn cung ct,
cung hang hay cung ng cheo thun nghch vi no.
Bai toan nay do Call Friedrich Gauss a ra vao nm 1850 nhng khng co li
giai hoan toan theo phng phap giai tch. Ly do la loai bai toan nay khng phu
hp vi cac phng phap giai tch ma phai tm cach khac giai trn MTT, co
th th i th lai nhiu ln.
Niclaus Wirth trnh bay phng phap th-sai (trial-and-error) nh sau :
t mt qun hu vao ct 1 (trn mt hang tuy y);
t tip mt qun hu th hai sao cho 2 qun khng n nhau;
Tip tuc t qun th 3, v.v...
Li giai co dang mt vong lp nh sau :
Xet-ct-u;
Repeat
Th_ct;
if an_toan then begin
t_qun_hu_vao;
Xet_ct_k_tip;
end
else Quay_lai;
until a_xong_vi_ct_cui or a_quay_lai_qua_ct_u;
Cac cng vic c tinh ch dn dn bng cach chon cac vic n gian, co cach
giai ngay tin hanh trc nh sau :
Goi ban c vua 8 8 gm cac (i, j) ct j, hang i vi j=1..8 va i=1..8, ta co :
Xet_ct_u : Bt u vi ct j=1.
Xet_ct_k_tip : Tc la chuyn qua xet ct k tip va chun b xet hang u
tin :
j:= j+1; i:= 0;
a_xong_vi_ct_cui : Luc nay a xong ca 8 ct, qun hu cui cung a c
t vao ban c : thanh cng, ta co biu thc :
j > 8

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

39

a_quay_lai_qua_ct_u: Tc la a lui qua ct u tin : tnh trang b tc


xay ra : khng tm ra li giai !
j < 1
Th_ct : Tm xem co th t qun hu tai hang nao ct ang xet. Bc
Th_ct se co dang :
repeat
Xet_mt_hang ; {la hang th i }
Kim_tra_an_toan ; {khi t qun hu vao hang nay }
Until An_toan or a_xet_n_hang_cui;
Luc u I=0, vic Xet_mt_hang tc : i:= i+1
T o ta co ngay a_xet_n_hang_cui tc la : i = 8
Luc nay ngi ta tm cach biu din d liu tng ng v cac cng vic a co ve
mn ri. Theo li khuyn cua Niclaus Wirth, s biu din d liu cang tr hoan
lu cang tt (n khi khng th tr hoan c na) !
V ban c co 8 x 8 nn co th ngh ngay n vic s dung mt ma trn Boolean
hai chiu biu din :
Var B : array [1..8, 1..8] of Boolean;
B [i, j] co gia tr true nu co qun hu hang i, ct j.
Tuy nhin, cach biu din nay gy kho khn cho vic kim tra hai ng cheo
co 2 qun hu nao n nhau khng theo lut c vua ?
By gi ta dung 3 day Boolean a, b, c vi :
a [i] = true

nu khng tn tai qun hu nao nm trn hang i.

b [k] = true nu khng tn tai qun hu nao nm trn ng cheo thun th


k.
c [l] = true
l.

nu khng tn tai qun hu nao nm trn ng cheo nghch th

Vi mi (i, j) hang i ct j, ta co quan h nh sau :


ng cheo thun th k thoa man i + j = k;
ng cheo nghch th l thoa man i - j = l;
V vy, nu : 1 i, j 8

th :

2 k 16 va : -7 l 7.

Ta co cac mang a , b , c nh sau :


var

a : array [1..8] of boolean;


b : array [2..16] of boolean;
c : array [-7..7] of boolean;

TS. PHAN HUY KHANH bin soan

39

40

Cng ngh Phn mm

biu din s kin t qun hu tai ct j vao hang i, ta dung day nguyn x
sao cho x [j] = i nu nh co mt qun hu (i, j) :
var x : array [1..8] of integer;
Vic t qun hu vao (i, j) se lam cho :
a [i] = b [i+j] = c [i-j] = false
Kim_tra_an_toan : Cho n luc nay, cha co hai qun hu nao trong s nhng
qun a t ln ban c co th n ln nhau. iu kin An_toan t qun hu vao
(i, j) la :
a [i] = b [i+j] = c [i-j] = true;
Bng cach s dung mt bin logic :
Var Antoan: Boolean;
Vic Kim_tra_an_toan c dch ra Pascal nh sau :
An toan := a [i] and b [i + j] and c [i - j];
b[2] = b[i+j] c[-6] = c[i-j]
1
...
8
a[i], i = 1
2
...

8
Hnh 2.8. Ban c vua cho bai toan tam qun hu
t qun hu vao (i, j) t_qun_hu_vao se la :
x[j]:= i;
a [i]:= false;
b [i+j]:= false;
c [i-j]:= false;
Tip tuc tinh ch bc phc tap nht la Quay_lai :
Quay_lai : la quay lai mt ct trc ct ang xet t lai qun hu cho ct
o khi tnh th hin trang la b tc.
Bc Quay_lai co dang :
Xet_lai_ct_trc;
if not a_quay_lai_qua_ct_u then begin
Bo_qun_hu__ct_o; {tc ct trc ct ang xet, (i, j) }
if ang__hang_cui_cung then begin

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

41

Xet_lai_ct_trc ;
if not a_quay_lai_qua_ct_u then
Bo_qun_hu__ct_o
end
end;
D dang ta thy Xet_lai_ct_trc tc la :
j = j - 1;
Con a_quay_lai_qua_ct_u th a xet trc y, tc la :
j < 1;
Thao tac Bo_qun_hu__ct_o se co dang:
i:= x [j]; a [i]:= true; b[i+j]:= true; c[i-j]:= true;
Chng trnh hoan chnh nh sau :
Program TamQunHau;
Uses Crt;
Const Hau='Q ';ov='#';
Var x: array[1..8] of Integer;
a: array[1..8] of Boolean;
b: array[2..16] of Boolean;
c: array[-7..7] of Boolean;
i,j: Integer;
antoan: Boolean;
Begin
for i:=1 to 8 do a[i]:=true;
for i:=2 to 16 do b[i]:=true;
for i:=-7 to 7 do c[i]:=true;
j:=1; i:=0;
repeat
repeat
i:=i+1;
antoan:=a[i] and b[i+j] and c[i-j];
until antoan or (i=8);
if antoan then begin
x[j]:=i;
a[i]:=false; b[i+j]:=false; c[i-j]:=false;
j:= j+1; i:= 0
end else begin
j:=j-1;
if j>=1 then begin
i:=x[j];
a[i]:=true; b[i+j]:=true; c[i-j]:=true;
if i=8 then begin
TS. PHAN HUY KHANH bin soan

41

42

Cng ngh Phn mm


j:=j-1;
if j>=1 then begin
i:=x[j];
a[i]:=true; b[i+j]:=true; c[i-j]:=true
end
end
end
end
until (j>8) or (j<1);
if j<1 then writeln('Khong co loi giai!')
else
for i:=1 to 8 do begin
for j:=1 to 8 do
if x[j]=i then write(Hau) else write(ov);
writeln
end;
readln
end.
Kt qua chay chng trnh nh sau :
Turbo Pascal

Version 7.0

Q
#
#
#
#
#
#
#

#
Q
#
#
#
#
#
#

V.3.

#
#
#
#
Q
#
#
#

#
#
#
#
#
#
#
Q

#
#
#
#
#
Q
#
#

#
#
Q
#
#
#
#
#

#
#
#
#
#
#
Q
#

Copyright (c) 1983,92 Borland International

#
#
#
Q
#
#
#
#

Sa i chng trnh

Chng trnh vit xong chay tt cha co ngha qua trnh lp trnh a xong. Do
nhu cu, co th cn sa i lai theo mt cach nao o cho phu hp. Nh phng
phap tinh ch tng bc ma ngi lp trnh co th d dang nhn thy nhng ch
cn chnh sa trong chng trnh. y la kha nng duy tr (Maintainability) cua
phng phap.
Mt c tnh khac cua phng phap tinh ch tng bc la tnh ph cp
(portability)) cua chng trnh : ta d dang chuyn i sang mt mi trng khac,
tc la chuyn sang mt ngn ng lp trnh khac, hoc mt h thng may tnh
khac. minh hoa, ta xet bai toan 8 qun hu tng quat nh sau :
Tm tt ca cac phng an co th t 8 qun hu ln ban c sao cho khng co hai
qun nao n ln nhau.
T tinh ch ln 1 trong muc trc, ta cn co hai sa i nh sau :

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

43

Khi a n ct cui cung va t qun hu cui cung vao ban c, ta in li giai


ra nhng cha kt thuc chng trnh ngay ma tip tuc quay tr lai tm
li giai khac.
Chng trnh ngng khi s quay lai a qua ct u.

TS. PHAN HUY KHANH bin soan

43

44

Cng ngh Phn mm


Li giai co dang phac thao nh sau :
Xet_ct_u;
repeat
Th_ct ;
if An_toan then begin
t_qun_hu_vao ;
Xet_ct_k ;
if Ct_k_vt_qua_ct_cui_cung then begin
In_ra_li_giai;
Quay_lai
end
end else Quay_lai
Until a_quay_lai_qua_ct_u;

T y, vi cac bc lam mn a giai quyt muc trc, ta co th vit lai thanh


chng trnh hoan chnh.
Bai toan ma i tun
Cho ban c n n va mt qun ma ang toa x0, y0. Hay tm cach cho qun ma
i theo lut c vua qua ht tt ca cac cua ban c, mi i qua ung mt ln ?
Cach giai quyt qun ma i qua ht n2 1 cua ban c la tai mi ma qun
ma ang ng, hay xac nh xem co th thc hin mt nc i k tip na hay
khng ? Nh vy thut toan tm nc i k tip co th vit thanh thu tuc
quy dang phac thao nh sau :
Procedure Th_nc_i_ k;
Begin
Khi ng_ nc_ i_ co_ th
Repeat
Chon_mt_nc_i
if OK then begin
Thc_hin_nc_i
if Cha_ht_nc then begin
Th_nc_i_k;
if NotOK then Xoa_nc_trc
end else Thanh_cng
end
Until i_c or (Ht_nc_i);
Kt_thuc
End;

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

45

By gi ta cn tm cu truc d liu biu din ban c n n , mi co toa


(i, j), vi 1 i,j n. D dang ta tm c m ta nh sau :
Type Idx = 1..n;
Var H: Array[Idx, Idx] of Integer;
Trong m ta trn, thay v s dung gia tr kiu Bollean anh du o a
c i qua cha, ta a vao gia tr kiu Integer do theo qua trnh di chuyn
cua qun ma theo quy c nh sau :
H[x, y] = 0

<x, y> cha c qun ma i qua

H[x, y] = i

<x, y> a c qun ma i qua nc th i, 1 i n2

ch mt nc i co thanh cng hay khng, ta s dung bin Bollean q vi


quy c nh sau :
q = true

nc i thanh cng

q = false

khng co nc i

Ta thy iu kin Cha_ht_nc c biu din bi biu thc : i n2


Gia s goi u, v la toa nc i k tip cua qun ma theo lut c vua th iu
kin OK phai thoa man :
mi <u, v> phai thuc vao ban c, ngha la 1 u n va 1 v n.
Qun ma cha i qua <u, v>, ngha la H[u, v] = 0.
Bng cach xy dng tp hp :
Var s: set of Idx;
biu thc iu kin OK by gi co th vit :
(u in s) and (v in s) and H[u, v]=0
ghi nhn nc i hp l Thc_hin_nc_i, ta s dung phep gan :
H[u, v] := i;
T o, vic Xoa_nc_trc co th s dung phep gan :
H[u, v] := 0
ghi nhn kt qua li goi quy, ta s dung bin Bollean q1 cho biu thc
iu kin i_c. Nh vy, Thanh_cng se la :
q1 := true
va Kt_thuc se la :
q := q1
By gi ta co li giai mn hn nh sau :
Procedure Try(i:Integer; x, y : Idx; Var q: Boolean);
TS. PHAN HUY KHANH bin soan

45

46

Cng ngh Phn mm


Var

u, v:Integer;
q1: Boolean;

Begin
Khi ng_nc_i_co_th
Repeat
Chon mt_nc_i
if (u in s) and (v in s) and H[u, v]=0 then begin
H[u, v] := i;
if n < sqr(n) then begin
Try(i+1, u, v, q1);
if not q1 then H[u, v] := 0
end else q1:= true
end
Until q1 or (Ht_nc_i);
q := q1
End;
Cho n luc nay, ta cha xet n lut i cua qun ma, ngha la chng trnh
xy dng trn c lp vi lut c vua vi chu y giam nhe nhung chi tit cha cn
thit khi phat trin chng trnh.
Nh vy ta vn con hai vic cha giai quyt la : Khi ng_nc_i_co_th va
Chon mt_nc_i.
Cho trc mt toa bt ky <x, y> cua qun ma trn ban c, ta co th co tam
<u, v> c anh s t 1..8 (theo chiu ngc kim ng h) ma qun ma co th
nhay n nh hnh di y :

x
Hnh 2.9. Cac v tr khac nhau cua qun ma
co c <u, v>, t <x, y>, ta cn xac nh gia tr chnh lch theo toa . Ta
se dung hai mang mt chiu a va b, mi mang se co kch thc 8 phn t, lu
gi 8 gia tr chnh lch theo toa <x, y>, vi quy c chiu i va mang du
+, chiu i va mang du . Ta co khai bao nh sau :
Var a, b: Array[1..8] of integer;

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

47

Chng han nu cho <x, y> = <x0, y0> vi iu kin n2 x0, y0 3 th ta co th


co 8 cp gia tr nh sau :
a[1]:=
a[2]:=
a[3]:=
a[4]:=
a[5]:=
a[6]:=
a[7]:=
a[8]:=

2;
1;
-1;
-2;
-2;
-1;
1;
2;

b[1]:=
b[2]:=
b[3]:=
b[4]:=
b[5]:=
b[6]:=
b[7]:=
b[8]:=

1;
2;
2;
1;
-1;
-2;
-2;
-1;

By gi, anh s cac nc i co th, ta s dung mt bin k nguyn, k se nhn


gia tr trong pham vi 1..8. Nh vy, u thu tuc, vic Khi ng_nc_i_co_th
tng ng vi lnh gan :
k:= 0;
Vic Chon mt_nc_i tng ng vi cac lnh gan :
k:= k + 1;
q1:= false;
u:= x + a[k]; v:= y + b[k];
Con biu thc iu kin Ht_nc_i se tng ng vi : k = 8
Thu tuc quy c bt u bi toa <x0, y0> = <1,1>, k t nc i k=2, cac
cua ban c u co th la ch cua qun ma vi khi ng :
for i:=1 to n do for j:=1 to n do H[i, j]:= 0;
Li goi thu tuc nh sau :
H[1, 1]:= 1; Try(2, 1, 1, q);
Cui cung la mt thay i nho bng cach thm bin nguyn nsq tnh
sqr(n) ngoai thu tuc. Chu y rng n 5. Sau y la chng trnh hoan chnh :
Chng trnh ma i tun :
PROGRAM KnightsTour;
Uses CRT, Dos;
Const NMax=50;
Type Idx = 1..Nmax;
Var i, j: Idx;
N, Nsq: integer;
q: Boolean;
s: set of Idx;
H: Array[Idx, Idx] of Integer;
a, b: Array[1..8] of integer;
gio, phut, giay, hund : Word; { tnh thi gian }
Procedure Try(i:Integer; x, y : Idx; Var q: Boolean);
TS. PHAN HUY KHANH bin soan

47

48

Cng ngh Phn mm


Var k, u, v:Integer; q1: Boolean;
Begin
k:= 0;
Repeat
k:= k + 1; q1:= false; u:= x + a[k]; v:= y + b[k];
if (u in s) and (v in s) and (H[u, v]=0) then begin
H[u, v] := i;
if i < Nsq then begin
Try(i+1, u, v, q1);
if not q1 then H[u, v] := 0
end else q1:= true
end
Until q1 or (k=8);
q := q1
End { Try };
Begin { KnightsTour main }
ClrScr;
a[1]:= 2;
b[1]:= 1;
a[2]:= 1;
b[2]:= 2;
a[3]:= -1; b[3]:= 2;
a[4]:= -2; b[4]:= 1;
a[5]:= -2; b[5]:= -1;
a[6]:= -1; b[6]:= -2;
a[7]:= 1;
b[7]:= -2;
a[8]:= 2;
b[8]:= -1;
Write('Cho N = '); Readln(N);
While (N>1) and (N<Nmax) do begin
{ Gi bt u tnh }
GetTime(gio, phut, giay, hund);
Writeln(Bt u =, gio:2,':', phut:2,':', giay:2,':',
hund);
nsq:= sqr(N);
s:=[1..n];
for i:=1 to n do for j:=1 to n do H[i, j]:= 0;
H[1, 1]:= 1; Try(2, 1, 1, q);
if q then
for i:=1 to N do begin
for j:=1 to N do
write(h[i, j]:5);
Writeln
end
else Writeln('Khng co li giai !');
{ Gi bt u tnh }
GetTime(gio, phut, giay, hund);
Writeln(Kt thuc=, gio:2,':', phut:2,':', giay:2,':',
hund);
Write('Cho N = '); Readln(N);
End {While}
End.

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

49

Sau y la kt qua vi N = 5 :
Cho N = 5
Bt u = 5:59:57:30
1

15 10 21

14 9

20 5

19 2

16

22 11

13 24 17 4

25 18 3

12 23

Kt thuc = 5:59:57:36
Kt qua vi N = 6 :
Cho N = 6
Bt u = 6: 0:40:80
1

16 7

26 11 14

34 25 12 15 6
17 2

33 8

27

13 10

32 35 24 21 28 5
23 18 3

30 9

20

36 31 22 19 4

29

Kt thuc = 6: 0:41:79

TS. PHAN HUY KHANH bin soan

49

50

Cng ngh Phn mm

VI. Phu luc - n v trong Turbo Pascal


n v (Unit) trong Turbo Pascal th hin tnh cu truc trong lp trnh : cho
phep chia chng trnh ln thanh mt h thng phn cp gm mt chng trnh
chnh va nhiu n v chng trnh con.

VI.1. Gii thiu Unit


Unit la tp hp khai bao cac hng, cac kiu d liu, cac bin, cac thu tuc va
ham co quan h vi nhau a vao s dung trong chng trnh chnh.
Mi n v, c ct gi trn thiet b nh phu (a t) di dang mt tp
chng trnh Pascal *.PAS va c dch (compile) ring re. Kt qua dch la mt tp
mi co phn m rng la *.TPU.
goi cac Unit, trong phn u chng trnh s dung lnh :
USES <tn Unit>
trong phn u chng trnh.
Th vin cac chng trnh mu Turbo Pascal co 8 Unit chun nh sau :
System

cha cac ham va thu tuc th vin thng dung mc h thng : x ly


tp, x ly chui, tnh cac ham toan hoc. System c goi mc
nhin ma khng cn khai bao : USES System

Dos

cung cp cac chc nng cua h iu hanh MS-DOS

Crt

iu khin cac thit b vao (ban phm) va ra (man hnh) : Goto


XY, Clrscr...

Graph

cung cp cacc kha nng hoa (graphics) cho cac loai man hnh
khac nhau : Hercule, CGA, EGA, VGA...

Turbo3

tng thch vi cac chng trnh Turbo Pascal V3.0 a co.

Graph3

thc hin cac chng trnh con hoa theo kiu con rua (tortoise)
cua Turbo Pascal V3.0

VI.2. Cu truc cua Unit


Unit do NSD tao ra. Mi Unit c t trong mt tp chng trnh, gm nhng
thanh phn nh sau :

a) Phn tn cua Unit (Unit Heading)


Unit <tn Unit>

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

51

b) Phn giao tip (Interface Section)


Interface
{ Cac khai bao sau y khng bt buc phai co }
Uses <Ds cac Units dung cho Unit nay>
Const <Ds cac hng>
Type <Ds cac m ta kiu>
Var <Ds cac khai bao bin>
<Ds cac phn u cua cac thu tuc va ham>
Cac khai bao Const, Type va Var sau Interface cho Unit cung dung c tai ni
s dung n v nay. Ta noi chung la thy c (Visible).
Danh sach cac tn thu tuc va ham c cac Unit khac dung n se c khai
bao y u trong phn tip theo :

c) Phn hin thc (Implementation Section)


Implementation
{ Cac khai bao sau y khng bt buc phai co }
Uses <Ds cac Uses s dung n>
Label <Ds cac nhan>
Const <Ds cac hng>
Type <Ds cac m ta kiu>
Var <Ds cac khai bao bin>
<Cac m ta ham va/hoc thu tuc>
Cac m ta ham va/hoc thu tuc trong phn nay gm co :
Cac ham va /hoc thu tuc a m ta phn giao tip.
Cac ham va/hoc thu tuc ni b dung ring trong phn hin thc (khng khai
bao trong phn giao tip).
Cac m ta nhan, hng, kiu d liu, bin va cac ham, thu tuc ni b trong phn
hin thc cua mt Unit la khng dung c tai ni s dung Unit nay. Ta goi chung
la b du (Hidden).

d) Phn khi ng (Initialization section)


Begin
<Cac lnh Pascal>
TS. PHAN HUY KHANH bin soan

Phn nay co th vng mt nhng


end. phai co mt !
51

52

Cng ngh Phn mm


end.

Khi ni s dung mt Unit co phn khi ng Initialization th phn khi ng


cua Unit nay se c goi chay trc khi thn cua ni s dung chay.
Nu co mt ni s dung nhiu Unit th phn khi ng cua cac Unit o se c
chay theo th t xut hin cua tn cua cac Unit trong khai bao Uses cua ni goi.
Thng th trong phn khi ng cua mt n v, ngi ta lam cac ng tac
chun b nh khi gan cho cac bin, m cac tp, thng bao ch chay chng
trnh...

VI.3. Cach s dung Unit


a) Mt chng trnh hay mt Unit co th s dung nhiu Unit khac
S dung mt Unit co ngha la c quyn s dung cac hng, kiu d liu, bin,
cac ham va/hoc thu tuc a c khai bao trong phn giao tip Interface cua Unit
o.
V du : s dung cac Units co tn ln lt la U1, U2, ..., Un, dung mnh
Uses t sau khai bao Program trong chng trnh :
Uses U1, U2, . . .,Un ;

b) Khi co mt sa i nao o trong phn Interface cua mt Unit


Khi o, nhng (tp) chng trnh hay (tp) Unit o cn c dch (Compile) lai.
Khi trong mt Unit ch co s sa i phn Implementation hay phn
Initialization th khng cn dch lai nhng (tp) chng trnh hay (tp) Unit s
dung Unit o.
V du 11 :
Gia s chng trnh P goi U1 va U1 s dung U2 :
Program P ;
Uses U1 ;
Const
a = b;
Begin
writeln (a);
end.
P.PAS

Unit U1 ;
Interface
Uses U2 ;

Const b = c;
Implementation
end.
U1.PAS

Unit U2 ;
Interface

Const c = 10;
Implementation
end.

U2.PAS

Nu trong U2, i c=5 chng han th cn phai dch lai U2.PAS va U1.PAS (v
U1 s dung U2) va dch lai P.PAS.

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

53

c) Trung tn hng, bin, kiu d liu va tn CT con (ham, thu tuc)


phn bit, ngi ta t trc tn trung o tn Unit co cha tn nay va cach
mt du chm (.). Ring chng trnh chnh (khai bao Program) th khng cn.
V du 12 :
Gia s chng trnh P s dung cac Unit U1 va U2.
Nu trong P, trong Interface cua U1 va U2 u co khai bao bin i th phn
bit i nao la cua P, i nao la cua U1 va U2 ngi ta vit :
i

{i cua P}

U1.i

{i cua U1}

U2.i

{i cua U2}

VI.4. V du v Unit
Vit chng trnh tnh nhiu ln din tch hnh tron vi ban knh nhp vao t
ban phm, cho n khi ban knh nhp vao la 0 th dng.
Goi chng trnh chnh la HINHTRON va Unit s dung tnh din tch hnh
tron la DTHTRON, ta co :
Program HINHTRON ; {Tp HINHTRON.PAS}
Uses Crt, DTHTRON ;
Var bk : Real ;
Begin
Write (S Pi = , Pi) ; {hng Pi khai bao trong Unit DTHTRON}
Repeat
Write (ban knh =) ; Readln (bk) ;
if bk > 0 then
Writeln (Din tch = , Dientich (bk) ) ;
Until bk = 0
End. {HINHTRON}
Unit DTHTRON ; {Tp DTHTRON.PAS}
Interface
Const Pi = 3.1415926535 ; {1/ = 0.318309886}
Function Dientich (R : Real) : Real;
Implementation
Function Dientich;
Begin
Dientich := Pi * Sqr (R)
End;
Begin {phn khi ng Inilialization}
TS. PHAN HUY KHANH bin soan

53

54

Cng ngh Phn mm


Writeln (trong chng trnh chnh se s dung Unit DTHTRON !)
End.

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

55

VI.5. Bai tp
1. S dung cac cu lnh Pascal vit chng trnh theo s khi di y bng
cach ch s dung cac cu truc iu khin c ban. Sau o hay i v dang chng
trnh ch s dung ba cu truc iu khin la tun t, iu kin if then else va
lp While.
1.

2.
True

C1

False

C1
True

False

S2

S1

S1
True

C2

False

False
C3
True

C2

False

True

3.

4.
True

C1

False

S1

True

C2

False

S1

True

C1

False

S2
S2
C2

True

False

5.

6.
S1

S1
C1

True

C1

False

False
C2

True

S2

S3

S2
C3

S3
True

False

C2

False

True

True

S4

C3

False

C4

False

TS. PHAN HUY KHANH bin soan

True

55

56

Cng ngh Phn mm

7.

8.
S1

S1
True

C1

S2

False
S2
C2

S3
True

False

True

S3
C3

C1

False
S4

True
C2

False
S4

False
True

S5

S6

2. X ly chui (string) : Vit chng trnh oc mt cu (kt thuc bi Enter ) sau


o tin hanh cac cng vic :
Thng k s t, s ky t trong cu.
Tach cu ra thanh cac t cach nhau bi du cach (space). In ra cac t nay.
Nen cu (bo cac du cach gia cac t). In kt qua.
Thay th nhng xut hin cua cu con S1 thanh cu con S2 va in kt qua.
(S1 va S2 la cac cu con nhp vao)
Yu cu s dung Unit cho mi vic. Chng trnh chnh dung menu goi.
3. Vit chng trnh x ly ma trn vung A cp n x n di dang menu, gm cac
vic sau :
oc vao ma trn vung cp n x n.
Tnh nh thc cua ma trn.
Kim tra tnh i xng qua ng cheo chnh cua ma trn.
Xac nh xem ma trn co dang tam giac trn khng ?
(cac phn t pha di ng cheo chnh u = 0)
Xac nh xem ma trn co dang tam giac di khng ?
(cac phn t pha trn ng cheo chnh u = 0)
Yu cu dung Unit. Bn vic sau cung ch co hiu lc khi ma trn a c oc.

Nn tang cua thit k phn mm

Phng phap lp trnh cu truc

57

CHNG 3

Hp thc hoa phn mm


I. Xac minh va hp thc hoa phn mm
Ngi ta thng phn bit 2 yu t trong hoat ng san xut phn mm :
1. Xy dng c ta, lp trnh va lp h s (vit cac hng dn s dung v.v ...)
Yu t nay tao nn giai oan phat trin chng trnh.
2. Xac minh (hay kim tra) va hp thc hoa cac san phm phn mm la vic so
sanh cac san phm phn mm o vi cac c ta cua chung sao cho co quan
h thoa man.
Ngi ta dung thut ng xac minh (verification) khi so sanh mt san phm vi
mt c ta cht che (rigourous). Khi c ta la khng hnh thc (informal), ngi ta
dung thut ng hp tha hoa (validation).
Giai oan xac minh va hp thc hoa, goi tt la giai oan V & V (Verification
and Validation) bao gi cung co mt trong moi d an Tin hoc.
S khac nhau c ban gia V & V c Boehm B.W. (1979) tom tt nh sau :
Validation :

Are we building the right product?

Verification : Are we building the product right?


Static
verification

Requirement
verification

High-level
design

Prototype

Formal
verification

Detailed
design

Program

Dynamic
verification

Hnh 3.1. Ky thut tnh va ky thut ng cua qua trnh V&V


TS. PHAN HUY KHANH bin soan

57

58

Cng ngh Phn mm

thc hin qua trnh V&V, ngi ta s dung cac ky thut tnh (static
techniques) va ng (dynamic techniques) kim tra h thng.
Ky thut tnh nhm phn tch biu din h thng qua vic phn tch yu cu,
phn tch thit k va hin th (listing) chng trnh. Ky thut ng la vic th
nghim(testing) chng trnh
Ky thut tnh bao gm vic thanh tra (inspection) chng trnh, phn tch va
xac minh hnh thc (formal verification) hay chng minh s ung n (prouving)
cua chng trnh.

II. Chng minh s ung n cua chng trnh


Phng phap chng minh la s dung cac nh ly minh hoa tnh ung n
cua san phm cn xac minh. Phng phap nay khng co kha nng hp thc hoa
cac c ta phi hnh thc, bi v khng th chng minh mt cach toan hoc cac tnh
cht khng c nh ngha cht che. Ngi ta phn bit cac phep chng minh
hnh thc, c din ta trong ly thuyt logic, va cac chng minh phi hnh thc
nhng cht che, nh trong cac cun sach v Toan hoc.
Moi phep chng minh hnh thc tnh ung n cua chng trnh c xy
dng mt cach tng minh t cac tin va cac quy tc suy din logic. Thc tin
cho thy khng th xy dng mt phep chng minh nh vy ma khng s dung
n nhung cng cu nh la cac cng cu chng minh nh ly.
Nhng phep chng minh hnh thc cho cac chng trnh c hang ngan dong
lnh a c thc hin. Chung cho phep khng nh tnh c ph phan cua
chng trnh.
Trong phep chng minh khng hnh thc, ngi ta nh ngha kin truc tng
quan cua phep chng minh, x ly nhng im kho khn, lai cho ngi oc s
chm soc chi tit n cac im khac.
V du chng minh khng hnh thc s ung n cua mt chng trnh,
ngi ta co th din ta cac tt bin cua vong lp va cua thu tuc quy. Mt phep
chng minh phi hnh thc khng cn thit phai s dung cac cng cu, vn la
ngi oc se t kim chng thng qua cac cuc trao i, thao lun (chng han t
chc thanh tra cn c trn vic xac minh).
Ngi ta con co th th chng minh phi hnh thc cac tnh cht a phat biu t
nhiu co tnh cht che (chng han cp n vn hp thc hoa), khai nim
chng minh tnh ung n theo ngha Toan hoc c thay th bi khai nim bin
lun (reasonig - argumentation) nhm thuyt phuc cac chuyn gia Tin hoc.

59

Error! Reference source not found.

II.1.

Suy lun Toan hoc

Trong lnh vc suy lun Toan hoc, ngi ta thng t ra hai vn :


1. Khi nao th mt suy lun la ung ?
2. Co th s dung nhung phng phap nao xy dng cac suy lun Toan hoc ?
Suy lun Toan hoc la mt hnh thc t duy ma t mt hay nhiu mnh logic
a co (phan oan) rut ra c mt mnh logic mi. Kt qua cua mt suy lun
nao o phai la ung hoc la sai. Trong Toan hoc, nh ly la mt phat biu co th
chng minh c la ung. Ngi ta hay gp m hnh chng minh mt nh ly
Toan hoc (la ung) nh sau :
Mnh

nh ly

H qua

nh , tin

Hnh 3.2. Chng minh mt nh ly Toan hoc

II.1.1. Cac quy tc suy lun Toan hoc


trnh bay cac quy tc suy lun Toan hoc, chung ta nhc lai cac phep toan
logic sau :
not
(khng)
and

(va)

or

(hoc)

implicate (keo theo)


equivalence
Chu y :

(tng ng)

a b tng ng vi a b, hay if a then b else true


a b co ngha (a b) (b a).

Th t u tin cua cac phep toan logic la , , , , . Bang logic nh sau :


a

ab

ab

ab

ab

0
0
1
1

0
1
0
1

1
1
0
0

0
0
0
1

0
1
1
1

1
1
0
1

1
0
0
1

chng minh mt nh ly, ngi ta s dung mt s tin va quy tc suy


lun, hay la cac hng ung. Bang di y trnh bay cac quy tc suy lun c s
dung trong chng minh tnh ung n cua chng trnh.
TS. PHAN HUY KHANH bin soan

59

60

Cng ngh Phn mm

Stt

Quy tc suy

Tn goi

V du

lun

p
p q

Lut khng nh Nhac cua Trnh Cng Sn hay. Vy nhac


cua Trnh Cng Sn hay hoc ca s Khanh
Ly hat hay.

pq
p

nc. Vy tri nng han.

Lut tach ri Nu cm chn th cn tt la.


(Modus Ponens) Cm a chn.

pq

Lut phu nh Nu mt tri nh u th bong ngn nht.


(Modus Tollens) Bong khng ngn nht.

p
pq
qr
p r
6

Thang nay tri nng han va sng a th can

pq
p
q
q

Lut rut gon

pq
p
q

Vy cn tt la.

Vy mt tri khng nh u

Tam oan lun Nu tri ma th ng HP b ngp.


Nu ng HP b ngp th phai xung xe dt
gia nh
b. Vy tri ma th phai xung xe dt b.

Tam oan lun Cu Ty thuc bai hoc la cu Ty ham chi .


Ma Cu Ty khng thuc bai.
chuyn
Vy cu Ty ham chi.

Trong bang trn, du c oc la vy th. Mi lut (c s cua phep suy lun),


chng han lut tach ri (Modus Ponens), co th vit di dang hng ung :
(p (p q)) q

II.1.2. Khai nim v chng minh tnh ung n cua chng trnh
Mt chng trnh P xac nh mt thut toan cho phep nhn vao mt tp hp d
liu L a ra mt tp hp kt qua R. Noi cach khac, vi moi d L, chng trnh
P xac nh hoc mt day hu han cac phep tnh cho ra mt kt qua P(d) R,
hoc mt day v han cac phep tnh : chng trnh b qun vi d liu d.
Mt khac, P c vit tnh mt ham f nao o t D L vao R. P ung nu va
ch nu P tnh ung ham f, ngha la nu d D, P(d) xac nh (P khng qun vi
d liu vao d) va bng f(d).
Thng thng, kim tra tnh ung n cua chng trnh, ngi ta dung
phng phap th (test) : ngi ta chon mt day cac d liu mu d1, d2, ..., dn, ri
cho P chay ln lt vi mi d liu kim tra rng P(d1) = f(d1), P(d2) = f(d2), ...,
P(dn) = f(dn).

Error! Reference source not found.

61

Tnh khng y u cua phng phap nay th hin ch khng th th ht moi


d liu cua D, du D hu han : co th xay ra P cho kt qua ung vi moi d liu
mu di a chon nhng vi mt d liu d di i, P cho mt kt qua sai.
Hn na, phng phap th khng bao gi chng minh c mt chng trnh
la ung n, ch co th chng minh c la khng ung, nu vi mt gia tr di nao
o a chon, th P(d1) f(d1).
V mt ly thuyt, phng phap chng minh tnh ung n cua chng trnh
mang tnh Toan hoc bng cach chng minh mt nh ly tng ng : d D, P(d)
= f(d).

II.1.3. Tin va quy tc suy din


Mt cach tng quat, cac phat biu cn chng minh co dang E{P}S, trong o E
va S la cac iu kin, P la day cac lnh (hay la mt chng trnh) theo ngha rng :
nu E ung trc khi thc hin P th nu P dng, S ung sau khi thc hin P.
Ngi ta goi E la iu kin trc (precondition) va S la iu kin sau
(postcondition) cua chng trnh P.
Cac iu kin trc E va iu kin sau S c xy dng t cac biu thc logic
co th nhn gia tr ung (1) hoc sai (0), chung la mi lin h gia cac bin cua
chng trnh (v du cac bin a, b, c, p, q, r trong cac biu thc a = bq + r, q 0, b2
4ac > 0, v.v...) cung cac phep toan logic (nu co).
Tnh cht :
Vi moi chng trnh P va moi iu kin C, ta u co :
false {P} C va C {P} true
Vic chng minh nu mt chng trnh P dng th P se cho kt qua ung c
goi la chng minh tnh ung n tng phn.
Trong cac chng minh tnh ung n tng phn, cac tin va nh ly se la cac
phat biu co dang E {P} S. Sau y la danh sach cac tin va cac quy tc suy din
cho phep chng minh cac nh ly dang E {P} S.
chng minh cac quan h gia cac iu kin (v du E1 ~ E2, E1 E2, v.v...),
ngi ta s dung cac tnh cht cua ai s Boole va min xac nh cac bin chng
trnh (s nguyn trong trng hp Div).

TS. PHAN HUY KHANH bin soan

61

62

Cng ngh Phn mm

a) Tin v phep gan


Cho phep gan x := <bt> va mt iu kin sau S, ta co tin :
E {x := <bt> } S
trong o E nhn c t S bng phep th cac bin x bi biu thc <bt>. E la iu
kin yu nht phai lam thoa man cac bin trc khi thc hin phep gan sao cho S
la ung sau o.
V du 1
(xy 0) { z := x*y } (z 0)
(q + 1 0) { q := q + 1 } (q 0)
( (x+y)2 = y) { x := x + y } (x2 = y)
Chu y quan trong :
Nh quy tc trn y, ngi ta co th chng minh iu kin trc cua mt lnh
gan, bng cach s dung mt iu kin sau, nhng ngc lai la khng th. Bi vy,
chng minh tnh ung n cua chng trnh, ngi ta xut phat t im kt
thuc (iu kin sau) tin hanh ngc ln im bt u (iu kin trc).

b) Quy tc ; hay t hp cac lnh va lnh ghep


Goi E, F, S la cac iu kin, P va Q la cac day lnh, ta co :
E {P} F
F {Q} S

E {P} S
E { begin P end } S

E {P ; Q} S
V du 13 :
Chng minh

(x=1) { y:= 2; Z:= x + y} (Z=3)

La ung n vi khng nh u
Va khng nh cui

E (x = 1)

S (z = 3)

Gia s S ung, tc z = 3, khi o nhn c x + y = 3, ta co :


(x+y=3) { Z:= x + y} (Z=3)

(1)

Do y c gan gia tr 2, nn nhn c gia tr cua x la 1, tc la :


(x=1) { y:= 2} (x+y=3)
(2)
Vy theo quy tc ;, t (1) va (2) ta co P kt thuc th S ung (pcm).

II.1.4. Quy tc iu kin if B then P


E B {P} S
E B S
E { if B then P } S

63

Error! Reference source not found.


Chu y :

B phai c xem nh mt iu kin sao cho co th ng dung mt trong nhng


quy tc c trnh bay y. iu nay co ngha rng vic tnh B khng lam thay
i cac gia tr cua cac bin cua chng trnh.
V du 2 :
Chng minh : E{if x>y then y:=x} (y x), vi E la iu kin u nao o.
Khi E ung va x > y ung (iu kin B) th y co gia tr x, vy y x (S) , ta co :
E (x>y) { y:= x } (y x)

(1)

Khi E ung va x > y sai (B) co ngha x y, vy y x (S), tc la :


E (x y) (y x)

(2)

Vy t (1) va (2) ta co nhn c pcm.

II.1.5. Quy tc iu kin if B then P else Q


E B {P} S
E B {Q} S
E { if B then P else Q } S
V du 3 :
Chng minh : E {if x < 0 then abs:= -x els abs:= x}(abs = |x|)
vi E la iu kin u nao o.
Vy chng trnh la ung vi iu kin u E va iu kin sau abs = |x|.
Khi E ung va x < 0 ung (B) th abs co gia tr x, tc abs = x = |x| va iu
kin sau S ung, ta co :
E x < 0 { abs:= -x }(abs = |x|)

(1)

Khi E ung va co x < 0 sai (B) th x 0, khi o abs co gia tr x tc abs = x =


|x| va iu kin sau S ung, tc la :
E x < 0 { abs:= x }(abs = |x|)

(2)

Vy t (1) va (2) ta co nhn c pcm.

II.1.6. Quy tc vong lp while


EB{P}E
E { while B do P } E B
y, E va B la nhung iu kin. Ring iu kin E c goi la bt bin cua
vong lp.

TS. PHAN HUY KHANH bin soan

63

64

Cng ngh Phn mm

Mt trong nhng kho khn cua vic chng minh tnh ung n cua chng
trnh la tm c bt bin cho mi vong lp (ngha la mt bt bin cho phep chng
minh ung cai yu cu). Thc t khng tn tai mt phng phap co tnh h thng
va tng quan tm ra nhng bt bin nh vy.
V du 4 :
S dung bt bin cua vong lp, chng minh oan chng trnh tnh fac = n!, vi
n sau y :
i := 1; fac := 1;
while i < n do begin
i := i + 1;
fac := fac * i
end;
Goi P {begin i:= i + 1; fac := fac * i end }
Gia s iu kin E (fac = i!) (i n), ta cn chng minh E la bt bin cua
vong lp.
Ta se chng minh bng quy nap :
E ung trc khi vao vong lp, v i = 1, fac = 1 = 1! Va 1 n.
Gia s E ung vi i < n sau khi thc hin vong lp va sau o, while con c
thc thi mt ln na. Trc ht i c tng thm 1 (vi lnh gan i:= i + 1) va do
vy vn con i n. Do gia thit quy nap fac = (i 1) ! trc khi vao vong lp nn fac
se co gia tr la :
fac = (i 1)! * i = i!
T o E qua tht la bt bin cua vong lp va mnh :
(E (i < n)) {P} E ung.
T o suy ra khng nh :
E { while i < n do P } E (i n) cung ung.
V vong lp kt thuc sau khi lp n 1 ln, khi o i = n va fac = n!.

II.1.7. Cac quy tc khac


Quy tc iu kin trc :

Quy tc va :

E {P} S
E E

E {P} S
E {P} S

E {P} S

E {P} S S

65

Error! Reference source not found.

Quy tc iu kin sau :

Quy tc hoc :

E {P} S

E {P} S

S S

E {P} S

E {P} S

E E {P} S S

V du5
:
Chng minh chng trnh con P tnh tch hai s nguyn m va n la ung :
P function product(m, n: Integer): Integer;
begin
{P1 } if n < 0 then a:= n else a:= n;
{P2 } k:= 0; x:= 0;
{P3 } while k < a do begin
x:= x + m;
k:= k + 1
end;
{P4 } if n < 0 then product:= x
else product:= x
end;
Ta se chng minh rng sau khi thc hin P th ham tra v gia tr la mn.
Ta chia P gm bn oan CT la {P1; P2; P3; P4} nh trn.
Goi E la iu kin u E m, n nguyn va S1 E (a = |n|).
Khi o co th ch ra E {P1} S1 la ung.
Goi S2 S1 (k = 0) (x = 0). D dang kim tra rng S1 {P2} S2 la ung.
Ta cung thy iu kin (x = mk) (k a) la mt bt bin trong vong lp P3
tng t vi ly lun quy nap trong vong lp tnh n!. Vong lp nay kt thuc sau a
bc lp khi k = a, tc x = ma tai im nay.
Goi S3 (x = ma) (a = [n]). T o suy ra S2 {P3} S3 la ung.
Cui cung co th ch ra P4 la ung vi iu kin u S3 va iu kin cui S, vi
S product = mn. Vy S3 {S4} S ung va ham tra v gia tr la mn.
T cac mnh E {P1} S1, S1 {P2} S2, S2 {P3} S3 va S3 {S4} S la ung, theo
quy tc hp thanh, ta co P cung ung, tc E { P } S ung.
Ngoai ra do ca P1, P2, P3 va P4 u dng nn P cung dng

TS. PHAN HUY KHANH bin soan

(qed)

65

66

Cng ngh Phn mm

II.2.

Phng phap cua C.A.R. Hoare

II.2.1. Phat biu


Sau y la mt v du s dung phng phap cua C.A.R. Hoare :
Div : r:=a; q:= 0;
while r >= b do begin
r:= r - b;
q:= q + 1;
end;

a, b, q, r la cac bin nguyn, a va b c khi gan gia tr u ln lt la A va B. Vi


A N va B N+, ham Div tnh thng q va s d r cua phep chia A cho B. Nh
vy vi ham Div ta co :
D = N N+, R = N N va f la ham xac nh trn N N+ vao trong N N, ngha la
t cp (A, B) N N+, xac nh cp (q, r) N N sao cho A = Bq + r va r < B.
By gi cn chng minh Div tnh ung ham f theo hai bc nh sau :
1. Chng minh tnh ung n tng phn : nu Div dng th Div se cho kt qua
ung.
2. Chng minh tnh dng : Div dng vi moi d liu thuc N N+.
Trong trng hp Div, ta cn chng minh phat biu sau :
Nu trc khi thc hin lnh u tin cua Div, a va b c gan gia tr u A

N va B N+. Sau khi thc hin, q va r thoa man cac iu kin A = Bq + r, r < B, r
0, q 0. Ta co :
(a=A) (b=B) (A0) (B>0) {Div} (A=Bq+r) (q0) (r0) (r<B).

II.2.2. Chng minh tnh ung n tng phn cua Div


Ta cn chng minh :
(a=A) (b=B) (A0) (B>0) {Div} (A=Bq+r) (q0) (r0) (r<B)
d theo doi, ta t tn cac iu kin nh sau :
P1 = (a=A) (b=B)
P2 = (A0) (B>0)
Q1 = (A=Bq+r) (q0) (r0) (r<B)
Chu y rng :
P1 P2

P1 (a0) (b>0) va

P1 (a=bq+r) (q0) (r0) (r<b)

Q1

67

Error! Reference source not found.


Theo cac quy tc iu kin trc va iu kin sau, ch cn chng minh :
(I)

P1 (a0) (b>0) {Div} P1 (a=bq+r) (q0) (r0) (r<b)

Ta se chng minh hai giai oan :


1. P1 {Div} P1
2. (a0) (b>0) {Div} (a=bq+r) (q0) (r0) (r<b)
P1 {Div} P1
Trc ht cn ch ra P1 la bt bin cua vong lp. Theo quy tc gan, ta co :
P1 { q :=q + 1 } P1
P1 { r := r b } P1
nh vy, theo quy tc t hp :
P1 { r := r b ; q := q + 1 } P1, nhng :
P1 (rb) P1
Theo quy tc iu kin trc :
P1 (rb) { r := r b ; q :=q + 1 } P1
Theo quy tc vong lp :
(1) P1 { while rb do begin r := r b ; q :=q + 1 end } P1 (r<b)
Ap dung ln na quy tc gan va quy tc t hp, ta co :
(2) P1 { r := a ; q := 0 } P1
T (1) va (2), theo quy tc t hp, ta co :
P1 {Div} P1 (r<b)
Cui cung, theo quy tc iu kin sau :
P1 {Div} P1 (pcm)

(a0) (b>0) {Div} (a=bq+r) (q0) (r0) (r<b)


t :
P3 = (a=bq+r) (q0) (r0)
P4 = (a=b(q+1)+r) (q+10) (r0)

bng cach thay q trong P3 bi q+1

P5 = (a=b(q+1)+rb) (q+10) (rb 0) bng cach thay r trong P4 bi rb


(2.1.) Ta xem rng P3 la mt bt bin cua vong lp. Theo quy tc gan :
P4 { q := q + 1 } P3
va P5 { r := r b } P4
T o theo quy tc t hp :
(3) P5 { r := r b ; q := q + 1 } P3
TS. PHAN HUY KHANH bin soan

67

68

Cng ngh Phn mm


Xet iu kin trc, ta co :
(i) P5 ~ (a=bq+r) (q 1) (rb)
(ii) V rng :
(q0)

(q 1)

(r0) (rb) (rb),


P3 (rb)

va
ta co :

(a=bq+r) (q 1) (rb)

Theo quy tc iu kin trc, phat biu (3) se la :


P3 (rb) { r := r b ; q := q + 1 } P3
Theo quy tc vong lp dn n :
(4) P3 { while rb do begin r := r b ; q := q + 1 end } P3 (r<b)
(2.2.) By gi s dung bt bin vong lp nh la iu kin sau cho nhng lnh u
tin cua day. Ta co quy tc gan :
(a=b.0+r) (00) (r0) { q := 0 } P3
va (a=b.0+r) (00) (r0) ~ (a=r) (r0)
Ap dung cho ln na quy tc gan :
(a=a) (a0) { r := a } (a=r) (r0)

va :

(a=a) (a0) ~ (a0)


Theo quy tc t hp, ta co :
(5) (a0) { r := a ; q := 0 } P3
Quy tc t hp ap dung cho (4) va (5) cho ta :
(a0) {Div} P3 (r<b)
Quy tc iu kin sau dn n kt lun :
(a0) (b>0) {Div} P3 (r<b)
T
va
a chng minh, suy ra (I) theo quy tc va, ng thi kt thuc vic
chng minh tnh ung n tng phn cua Div.

69

Error! Reference source not found.

II.3.

Chng minh dng

II.3.1. Chng minh dng cua mt chng trnh


Mt chng trnh khng la quy, khng cha lnh goto se ch co th mt day
v han tnh toan nu no thc hin v han ln thn mt vong lp. Vic chng minh
mt chng trnh nh vy dng vi moi d liu d D dn n vic chng minh
rng mi vong lp cua chng trnh ch co th thc hin mt s hu han ln
dD.
Cho vong lp :
while B do P
vi x1, x2, ..., xn la cac bin cua chng trnh. Goi WE la tp hp cac gia tr cua
vect :
w = < x1, x2, ..., xn >
sao cho cac bin thoa man iu kin E.
Gia thit rng iu kin E la bt bin vi vong lp ang xet va thoa man trc
khi thc hin vong lp nay.
Nu w = w1 WE B trc khi thc hin vong lp, khi o w = w2 WE sau khi
thc hin thn vong lp P.
Nu w2 WE B, vong lp dng ; nu khng w = w3 WE, sau khi thc hin
P, v.v...
Nh vy chng minh vong lp dng, ch cn ch ra rng moi day w1, w2, w3,
... a xy dng la hu han.
Phng phap chng minh la nh ngha mt ham m t WE B vao N sao cho
co th ch ra rng :
E B (m(w) = m0) { P } B (m(w) < m0)

m0 N

Chu y :
Phat biu trn co ngha rng nu w = wi trc khi thc hin P, th sau khi thc
hin P, hoc vong lp dng, hoc m(wi+1) < m(wi).
Trong trng hp nay (a chng minh c P dng), ta co th khng nh rng
vi moi day w1, w2, w3, ..., day m(w1), m(w)2, m(w)3 ... giam dn thc s trong N, la
hu han.
iu o chng minh rng day w1, w2, w3, ... la hu han, va vong lp dng.

TS. PHAN HUY KHANH bin soan

69

70

Cng ngh Phn mm

II.3.2. Chng minh dng cua Div


Div ch cha mt vong lp :
while r b do begin r := r b ; q := q +1 end
Vong lp nay lun lun dng.
iu kin { b=B } la mt bt bin cua vong lp nay, c thoa man trc khi
thc th vong lp (xem chng minh ung tng phn muc ).
Tng t nh vy i vi iu kin (r 0) (xem

).

Ta xet tp hp W1 = W(b = B) (r 0) (r b) va ham m : W1 N sao cho m(w) = r.


Chu y :
Vic chon ham nay dn vic chng minh dng n vic chng minh rng bin r
nhn cac gia tr giam ngt va lin tuc.
t :
P6 = (b=B) (r0) (rb)
Tip theo, ta con phai chng minh rng :
(1) P6 (r=m0) { r := r b ; q := q + 1 } (r<b) (r<m0)

m0 N

Theo quy tc gan :


(rb < m0) { r := r b ; q := q + 1 } (r<m0)

m0 N

ap dung cac quy tc iu kin trc va iu kin sau, ta co :


(2) P6 (r=m0) (rb<m0) {r := rb ; q := q+1} (r<b) (r<m0) m0 N
Mt khac :
(b=B) (r=m0) (rb<m0) ~ (b=B) (r=m0) (m0B<m0)
hay :
(b=B) (r=m0) (rb<m0) ~ (b=B) (r=m0) (>0)
iu kin B>0 lun lun ung v rng (A, B) D = N N+, nh vy :
(b=B) (r=m0) (rb<m0) ~ (b=B) (r=m0)
T o dn n (1) xut phat t (2). Vic chng minh Div dng a xong.
Chu y :
chng minh Div dng vi d D, noi chung khng ap dung c cho
dL.
V du nu L = Z Z, Div co th qun vi B = 0.

71

Error! Reference source not found.

II.3.3. anh gia mt chng trnh lp


anh gia mt chng trnh P la xac nh thi gian va kch thc b nh cn
thit thc hin chng trnh P :

mt ham TP : L R {+} sao cho, d L, TP(d) la thi gian thc


hin P i vi d liu d (TP(d) = + nu chng trnh qun).

mt ham NP : L N {+} sao cho, d L, NP(d) la s n v b nh


cn thit thc hin P i vi d liu d (NP(d) co th v han nu
chng trnh qun).

y, ta ch quan tm n vic xac nh thi gian thc hin chng trnh gm


cac lnh c s nh lnh gan (quy tc ;), lnh iu kin va vong lp while.
Ta se goi fP la ham ring phn (partial function) cua L trong tp hp cac kt
qua R, c tnh bi chng trnh P, va W la tp hp Wtrue cac gia tr co th cua
cac bin trong P.
Ham fP co th m rng thanh mt ham W W. Tng t, nu P la mt day cac
lnh cua P, ham fPdc tnh bi P co th c nh ngha nh la mt ham cua
W W.
V du 14 :
Trong trng hp Div, nu L = D, W = N N + N N = tp hp cac gia tr co
th cua a, b, r, q.
fDiv (a, b, r, q) = (a, b, thng cua a va b, phn d cua a chia cho b).
Nu xet lnh q := q + 1 cua Div :
fq := q+1 (a, b, r, q) = (a, b, q+1, r).
Thi gian thc hin mt chng trnh co th c nh ngha nh sau :
1. Mi lnh c s va mi iu kin co mt thi gian thc hin c lp vi gia tr
cua cac bin. Nh vy, w W :
Vi moi phep gan x := y,

Tx := y (w)

Vi moi iu kin B,

= constant. Ta vit TB.

TB (w)

= constant. Ta vit Tx := y.

2. TP ; Q (w) = TP (w) + TQ (fp(w))


3. Tif B then P (w) = if B then (TB + TP(w)) else TB
Tif B then P else Q (w) = if B then (TB + TP(w)) else (TB+ TQ(w))
4. Twhile B do P (w) = (n(w) + 1) TB +

n(w) 1

T (f
P

i
P ( w) )

i= 0

TS. PHAN HUY KHANH bin soan

71

72

Cng ngh Phn mm


trong o, n la ham W N { + }, sao cho n(w) la s ln thc hin thn

vong lp P vi gia tr u w cua cac bin.


anh gia thi gian thc hin cua Div :
S ln lp cua Div la gia tr cui cua bin q, gia s la

A ,
B

phn nguyn cua A

chia cho B, trong o, A va B la cac d liu cua Div.


Mt khac, thi gian thc hin thn vong lp c lp vi cac d liu va bng :

Tr := r b + Tq := q + 1
Ta co :

TDiv (A, B) = Tr := a + Tq := 0 + ( A + 1) Tr b +
B

A
B

(Tr := r b + Tq := q + 1)

Nh vy, TDiv (A, B) co dang K1 A + K2, trong o K1 va K2 c lp vi cac d


B

liu A va B.
TDiv (A, B) la bc (order) cua

A .
B

Chu y : Ngi ta thng quan tm n bc cua ham TP thay v ban thn ham TP,
v TP phu thuc vao phn cng va phn mm s dung thc thi chng
trnh P. Nh vy ch cn xac nh s ln thc hin day cac lnh hay thc
hin nht cua chng trnh. iu nay co th nhn c bng cach m s
ln lp trong mi vong lp.

III. Xy dng chng trnh


III.1. M u
Trong muc trc, ta thy vic chng minh tnh ung n cua mt chng trnh,
du ch la mt chng trnh rt ngn va n gian, rt kho khn va mt moi.
khc phuc, ngi ta a ra mt phng phap hiu qua hn la va thit k va
chng minh tnh ung n cua chng trnh.
V du, c ta mt bt bin cho mt vong lp trc khi vit, kim tra tnh dng
cua vong lp nay vi iu kin sau, ri vit thn cua vong lp sao cho gi c bt
bin va ch thc hin mt s hu han ln. tnh SCLN cua hai s nguyn
dng, ta s dung cac tnh cht s hoc nh sau :
Nu a = b
Nu a < b

SCLN(a, b) = a = b
SCLN(a, b) = SCLN(a, b a)

Nu a > b

SCLN(a, b) = SCLN(a b, b)

Error! Reference source not found.

73

Gia s a va b la hai bin cua chng trnh nhn gia tr hai d liu ln lt A va
B. Sau khi gan, iu kin SCLN(a, b) = SCLN(A, B) thoa man.
Nu thn chng trnh cha mt vong lp cua bt bin SCLN(a, b) =
SCLN(A, B) vi iu kin kim tra dng la a = b, th ta co :
SCLN(a, b) = a = b = SCLN(A, B)
sau khi thc hin vong lp nay. Kt qua tm c la mt trong hai bin a va b.
Cn xac nh thn cua vong lp nay sao cho, mt mt, bt bin c thoa man,
mt khac, vong lp ch thc hin mt s hu han ln. Theo tnh cht cua SCLN,
nu a b, lnh :
if a > b then a := a b else b := b a
lam cho iu kin SCLN(a, b) = SCLN(A, B) tr nn bt bin. Ch con phai
chng minh rng vong lp a vit ch thc hin mt s hu han ln.
Ta thy quan h :

(a > 0) (b >0)

la bt bin trong vong lp (iu kin cua vong lp la a b, lnh b := b a ch c


thc hin nu b > a).
Vy max(a, b) cung la bt bin. Hn na max(a, b) giam ngt mi ln thc hin
thn vong lp, va vong lp lun lun dng.
Nh vy ta a vit va chng minh khng hnh thc chng trnh sau y :
P : while a <> b do
if a > b then a := a b else b := b a ;
ketqua := a ;

III.2. Bai toan c tam tai


Cho trc :
1. Mt mang cac hon bi anh s t 1 n N, mi hon bi mang mt mau hoc
xanh, hoc trng, hoc o.
2. Cac v t B(i), W(i) va R(i) la ung nu va ch nu hon bi th i (1 i N) la
xanh, trng va o tng ng.
3. Cp hoan v (i, j) t hon bi th i thanh j, hon bi th j thanh i, i, j
1..N, khng loai tr trng hp i = j.
Ta cn sp xp cac hon bi theo th t xanh, trng, o, mi v t B, W va R ch
c tnh n mt1 ln cho mi hon bi a cho. Hn na, cac hoan v phai cang t
cang tt.

TS. PHAN HUY KHANH bin soan

73

74

Cng ngh Phn mm

III.2.1. Li giai th nht


Ta se s dung mt vong lp while vi bt bin nh hnh di y va iu kin
kim tra dng la vung X rng.
1

bi xanh bi trng

bi o

Phn
cha x ly

Cn co 3 ch s b, w va r phn cach 4 vung cua mang. Ta thc hin phep


chon nh sau : cac ch s b va w ng ngay sau cac vung B va W tng ng cua cac
vin bi. Ch s r la cua vin bi ng ngay trc vung R.
Ta co : Pb, w, r = (1 < b B()) (b < w W()) (r < N R())
iu kin sau cua chng trnh nh sau :
1

r w

hay co th vit : Pb, w, r (w = r + 1). Chng trnh se co dang nh sau :


{ Khi gan : Pb, w, r true }
while (vung_X_khng_rng) do
{ Thn vong lp cua bt bin Pb, w, r }
Sau khi thc hin chng trnh nay, ta kim tra c rng : Pb, w, r
(vung_X_rng)
va mang cac vin bi a c sp xp.
Chng trnh sau y cha bin n nhn gia tr N :

(I)

w:= 1; b := 1; r := n;
while w <= r do
if W(w) then w:= w+1
else if B(w) then
begin HoanV(b, w); b:= b+1; w:= w+1 end
else
begin HoanV(r, w); r:= r-1 end

Ta nhn thy rng chng trnh nay thoa man cac v t B, W va R.


Phn tch :
S ln lp

=N

75

Error! Reference source not found.


S ln hoan v = ne1 = #B + #R (#B va #R ln lt la s vin bi xanh va o)

Kt qua nay cha la ti u, ta co th lam giam s ln hoan v cac vin bi o nh


sau :

(Ibis)

w:= 1; b := 1; r := n;
while w <= r do
if W(w) then w:= w+1
else if B(w) then
begin HoanV(b, w); b:= b+1; w:= w+1 end
else
begin while R(r) and w < r then r:= r-1;
HoanV(r, w); r:= r-1
end

III.2.2. Li giai th hai


Ta s dung bt bin biu din nh sau :
1

T o a n chng trnh (tam thi chp nhn vic chng minh khng hnh
thc) :

(II)

w:= 1; b := 1; r := n;
while r <= n do
if R(r) then r:= r-1
else if W(r) then
begin HoanV(w, r); w:= w+1; r:= r-1 end
else
begin HoanV(w, r); r:= r-1;
HoanV(b, w); b:= b+1; w:= w+1
end

Phn tch :
S ln lp

=N

S ln hoan v

= ne2 = #W + 2#B

So sanh vi chng trnh (I), ta co : ne2 ne1 = #B + #W #R


Chng trnh (I) se hiu qua hn (II), nu nh t ra na s vin bi la o.

Bai tp :
T bt bin trn y, ta co th nhn c chng trnh nh sau :
TS. PHAN HUY KHANH bin soan

75

76

Cng ngh Phn mm

(IIbis)

w:= 1; b := 1; r := n;
while r <= n do
if R(r) then r:= r-1
else if W(r) then
begin HoanV(w, r); w:= w+1; r:= r+1 end
else
begin HoanV(b, r); b:= b+1;
HoanV(w, r); w:= w+1; r:= r+1
end

Chng trnh trn la sai. Hay tm mt cach phn b ban u cua mang hai
vin bi thy sai.

III.2.3. Chng minh tnh ung n cua chng trnh (I)


a) Cac nh ngha va ky hiu
Ta a xy dng chng trnh (I) bng cach s dung bt bin :
Pb, w, r = (1 < b B()) (b < w W()) (r < N R())
chng minh tnh ung n cua chng trnh nay, ta s dung ky hiu n
gian hoa :
x < y A() la ky hiu vit tt cua iu kin :

{
hay :

A(x) A(x+1) . . . A(y)


true

nu x y
nu khng

(x y) A(x) . . . A(y)

By gi ta xem xet cac iu kin c trng cua bai toan .


a. Cac iu kin (1) va (2) c biu din bi :
E1 = (1 N) (B() W() R())
b. nh ngha (3) cua hoan v (i, j) a n tin sau y :
Cho iu kin sau S, ta co :
E (1 i N) (1 j N) { hoan v (i, j) } S
nu E nhn c t S bng cach thay th :
moi v t B(bt), W(bt), R(bt), trong o bt co gia tr i, bi B(j), W(j), R(j)
va moi v t B(bt), W(bt), R(bt), trong o bt co gia tr j, bi B(i), W(i),
R(i).
c. iu kin sau cua chng trnh (sp xp mang) c biu din bi :
S1 = (1 b N+1)

(b1 r N) (1 < b B())

(b < r W()) (r < N R())


Bt bin cua vong lp ta va s dung khng hn la Pb, w, r nhng :

77

Error! Reference source not found.


Qb, w, r = E1 (1 b N) (w1 r N) Pb, w, r

Gia s A1 la vong lp while cua chng trnh (I) va A2 la thn cua vong lp nay.

b) Chng minh tnh ung n tng phn


B : x y A() tng ng vi (x y1 A()) (x y A(y))
Chng minh :
x y A()
~ (x y) A(x) ... A(y) theo nh ngha
~ ((x < y) A(x) ... A(y)) ((x = y) A(y))
~ ((x < y) A(x) ... A(y1)) ((x < y) A(y)) ((x = y) A(y))
~ x y1 A()) (x y A(y)) pcm
() Chng minh cua bt bin Qb, w, r trong A2
Ta kim tra rng E1 (1 i N) (1 j N) { hoan v (i, j) } E1
(i) Trng hp W(w)
Ro rang ta co : Qb, w+1, r { w := w+1 } Qb, w, r
Va lai :

Qb, w, r (w r) W(w) ~ E1 (1 b w) (w r N) Pb, w, r W(w)

va :

Pb, w, r W(w) Pb, w+1, r

nh vy : Qb, w, r (w r) W(w) Qb, w+1, r


iu nay chng minh :

Qb, w, r (w r) W(w) { w := w+1 } Qb, w, r

(ii) Trng hp B(w)


Ro rang ta co :

Qb+1, w+1, r { b := b+1 ; w := w+1 } Qb, w, r

Va lai :
Pb+1, w+1, r = (1 < b+1 B()) (b+1 < w+1 W())
(r < N R())
T o theo b :
Pb+1, w+1, r ~ (1 < b+1 B()) (b+1 < w W())
(r < N R()) ((b 1) B(b)) ((w b+1) W())
Ap dung tin nh ngha bi phep hoan v cho Qb+1, w+1, r :
F { hoan v(b, w) } Qb+1, w+1, r
vi :
TS. PHAN HUY KHANH bin soan

77

78

Cng ngh Phn mm


F = E1 (1 b+1 w+1) (w r N)
(1 < b B()) (b+1 < w W())
(r < N R()) ((b 1) B(w))
((w b+1) W(b)) (1 b N) (1 w N)
Nhng :
(b+1 < w W()) ((w b+1) W(b)) ~ (b < w W())
Nh vy :
F ~ E1 (1 b w) (w r N) B(w) Pb, w, r
T o suy ra :
Qb, w, r (w r) W(w) B(w) F
iu nay chng minh :
Qb, w, r (w r) W(w) B(w) { hoanv(b, w) ; b := b+1 ; w := w+1 } Qb, w, r
(iii) Trng hp R(w)
Ta co :
Qb, w, r 1 { r := r 1 } Qb, w, r
Mt khac theo b :
Pb, w, r 1 ~ Pb, w, r ((r N) R(r))
Ap dung tin nh ngha bi phep hoan v cho Qb, w, r 1 :
G { hoanv(r, w) } Qb, w, r 1

vi :
G = E1 (1 b w) (w1 r1 N) Pb, w, r ((r N) R(w))
(1 r N) (1 w N)
Thc t ta co :
Pb, w, r (b w) (w r) (1w N) (1 r N)
{ hoanv(r, w) } Pb, w, r (b w) (w r)
Ta co :
G ~ E1 (1 b w) (w r N) R(w) Pb, w, r
Va lai :
E1 W(w) B(w) (1 w N) R(w)

79

Error! Reference source not found.


Nh vy :
Qb, w, r (w r) W(w) B(w) G
iu nay chng minh :
Qb, w, r (w r) W(w) B(w) { hoanv(r, w) ; r := r 1 } Qb, w, r
T 3 kt qua trn ta suy ra :
Qb, w, r (w r) { A2 } Qb, w, r
() Chng minh tnh ung n cua chng trnh (I)
Ta a co :
Qb, w, r { A2 } Qb, w, r (w > r)
(i) iu kin sau
Ta co :
Qb, w, r (w > r) (1 b w) (w=r+1) (r N) Pb, w, r
va :

Pb, w, r (w=r+1) (1 < b B()) (b < r W()) (r < R())


Nh vy :
Qb, w, r (w > r) S1
trong o :
Qb, w, r { A1 } S1
(ii)

Khi gan

Ta co :
E1 (0 n N) (n < N R()) { w := 1; b := 1; r := n } Qb, w, r
va lai :
(n=N) (0 n N) (n < N R()),
do o :
E1 (n=N) { chng trnh (I) } S1
Nh vy ta a chng minh xong tnh ung n tng phn.

c) Chng minh dng


Chng trnh (I) ch co mt vong lp A1 va thn cua vong lp la A2.
Gia s : WQ

bwr

(w r) = X1 va ham m : X1 N sao cho m(x) = r w.

TS. PHAN HUY KHANH bin soan

79

80

Cng ngh Phn mm

Chu y : Vic chng minh dng la ch ra rng kch thc cua vung cha x ly r
w giam dn mi ln thc hin A2.
chng minh vic dng cua A1, ch cn ch ra rng :
Qb, w, r (w r) (r w = m0) { A2 } (w > r) (r w < m0)

m0 N

Chu y rng :
(r w = m0) { w:= w+1 }

(r w = m01)

trng hp cua W(w) va B(w)

:= r 1 } (r w = m01) trng hp cua R(w)


va (r w = m0) { r
Ta chng minh c rng :
Qb, w, r (w r) (r w = m0) { A2 } (r w = m01)

m0 N

T o chng trnh (I) dng.

d) Chng minh chng trnh (I) thoa man iu kin cua bai toan
By gi ch con phai chng minh rng iu kin mi v t B, W va R ch c
xet tnh nhiu nht mt ln cho mi vin bi cha xut hin trong S1 cung thoa
man.
Tht vy, trn, ta a suy ra c rng A2 c thc hin ung N ln (gia tr
cua r w giam 1 mi ln, giam t N1 n 0). Mt khac, vic thc hin A2 xet tnh
(nhiu nht mt ln) cac v t lin quan n ch mt vin bi. Trong qua trnh sp
xp, mau cua N vin bi la hoan toan xac nh va v co N ln thc hin, mi thc
hin cua A2 ch lin quan n 1 vin bi phn bit.

III.3. In ra mt danh sach theo th t ngc


Gia s ta co mt danh sach tuyn tnh gm cac phn t co cu truc va mt con
tro ch n phn t u tin cua danh sach nh sau :
const n = ...

{ dai ln nht cua danh sach }

type KiuPhnT = ...

{ kiu cua cac phn t trong danh sach }

KiuConTro = 0..n;
{ kiu cua con tro, 0 la gia tr nil }
PhnT = record
NiDung: KiuPhnT;
TipTheo: KiuConTro; {tro n phn t tip theo }
end;
Danhsach = array[1..n] of PhnT;
var Ds : Danhsach;
Pu : KiuConTro;
sach }

{ danh sach cac phn t }


{ con tro ch n phn t u tin cua danh

81

Error! Reference source not found.

Gia thit rng danh sach cha t nht mt phn t (u danh sach Pu
nil). Bai toan t ra la in ni dung danh sach theo th t ngc lai. V du, nu ta
co :
Pu

x1

x2

x3

x4

nil

th chng trnh se in ra nh sau : x4, x3, x2, x1.


Ta se a ra ba li giai TILDA1, TILDA2 va TILDA3 cho danh sach co dai n
phn t. i vi mi li giai, ta se phn tch thi gian va b nh cn thit thc
hin chng trnh.
Ca ba li giai u s dung vong lp vi bt bin co dang sau :
Pu

k+1

...

...

(cac trng ni dung cac ban ghi k+1, ..., n c in theo chiu ngc lai)
Mi bc cua vong lp la tm phn t k va vit ni dung (k). Ba chng trnh
phn bit nhau c ban cach tip cn n k.

III.3.1.TILDA1
Ta s dung mt danh sach con tro, u tin danh sach trang thai rng, sau o
hoat ng vi hai thao tac nh sau :
put(expr) t vao nh danh sach gia tr cua biu thc expr.
get(x)

nu danh sach khac rng, ly gia tr nh danh sach gan cho


bin x, nu khng, thao tac khng xac nh.

Chng trnh TILDA1 gm hai vong lp :


(a) Vong lp th nht :
Pu

k
...

k+1

n
...

(Danhsach = ...
1 2
k 1 k )

(b) Vong lp th hai :

TS. PHAN HUY KHANH bin soan

81

82

Cng ngh Phn mm


Pu

k+1

...

n
...

(Danhsach = 12 ... k)
(cac trng ni dung cac
ban ghi k+1, ..., n a
c in theo chiu ngc
lai)

Mi bc cua vong lp la tm phn t k va vit ni dung (k). Ba chng trnh


phn bit nhau c ban cach tip cn n k.

IV. Cac tin va quy tc suy din


Muc nay se nghin cu cac vn sau :

Khai nim v iu kin trc yu nht va iu kin sau manh nht cua
mt day lnh.
Cac kiu tin gan khac nhau.

Cac tin va quy tc suy din cho mt s cu truc ngn ng lp trnh


(khi, thu tuc).

IV.1.

Phn tch chng trnh.

iu kin trc yu nht va iu kin sau manh nht cua mt


day lnh

Trong muc trc, ta a ky hiu :


WE tp hp cac gia tr cac bin cua mt chng trnh thoa man iu kin
E,
fP

la ham tnh c bi day cac lnh P cua mt chng trnh.

Nu fP c nh ngha cho moi gia tr cua WE , P khng qun va khng thc


hin cac phep tnh v nh (v du chia cho 0) nu iu kin trc E thoa man. Tnh
cht nay c ky hiu la termEP.
By gi ta xet phat biu E {P} S. Ta co cac tnh cht sau y :
(i)

E {P} S la true nu va ch nu fP (WE) WS


(ii)

Nu termEP th :

E {P} S la true nu va ch nu WE fP1 (WS)


V du 15 :
(1)

Cho phat biu (q > 0) { q := q+1 } (q > 0), trong o q la bin duy nht cua
chng trnh. Ta co :
WE = WS =N+ , fq := q+1(N+) = N+ {1} N+ ,

83

Error! Reference source not found.


va
(2)

N+ f1q: := q+1(N+) = N

Cho phat biu (q 0) (y 0) { q := q div y } (q 0) (y 0), trong o q va


y la cac bin duy nht cua chng trnh. Ta co :
WE = WS =N N ,
nhng

fq := q div y (N N) = N N+ WS ,

f1q: := q div y (N N) = N N+ WE

Trong trng hp WE = fP1 (WS), E la iu kin trc yu nht (la plus faible
precondition) phai c thoa man trc khi thc hin P cho S c thoa man
sau o.
Thc t, nu E {P} S va termE P th WE fP1 (WS) = WE va nh vy E E.
Mt khac, nu fP(WE) = WS , S la iu kin sau manh nht (la plus forte
postcondition) phai c thoa man sau khi thc hin P nu E la ung trc.
Thc t, nu E {P} S th fP(WE) = WS WS , nh vy S S.
Ta ky hiu hai ham fppre va fppost nh sau :
vi mt day lnh va vi mt iu kin sau, fppre tra v iu kin trc yu
nht tng ng
vi mt iu kin trc va mt day lnh, fppost tra v iu kin sau sau manh
nht tng ng.
Chu y rng cac ham fppre(P, S) va fppost(E, P) c nh ngha gn nh tng
ng.
By gi ta se trnh bay cac tnh cht cua cac ham fppre va fppost.

IV.1.1. Ham fppre


Vi moi iu kin S va day lnh P, pfpost(pfpre(P, S), P) S
Chng minh :
t E ~ pfpre(P, S).
Ta co WE = fP1 (WS), t o suy ra fP(WE) = fP(fP1 (WS)) WS
Hay co th noi E ~ pfpre(P, S), t o suy ra pfpost(E, P) S pcm

IV.1.2. Ham fppost


Vi moi iu kin E va day lnh P, E pfpre(P, pfpost(E, P)).
Chng minh :
t S ~ pfpost(E, P).
Ta co WS = fP(WE), t o suy ra fP1 (WS)= fP1 (fP(WE)) WE
TS. PHAN HUY KHANH bin soan

83

84

Cng ngh Phn mm


Hay co th noi S ~ pfpost(E, P), t o suy ra E pfpre(P, S) pcm

Bai tp :
1. Cho iu kin E va mt day lnh P, nhng iu kin nao lam thoa man fP sao cho :
E ~ pfpre(P, pfpost(E, P)) ?

IV.1.3. S dung iu kin trc yu nht va iu kin sau manh nht


chng minh tnh ung n cua chng trnh
a) Trng hp iu kin trc yu nht
Sau khi nh ngha ham pfpre, vi moi iu kin E va S, va moi day lnh P, ta
co :
( E {P} S termEP ) ~ ( E pfpre(P, S) )
c bit :
termEP ~ ( E pfpre(P, true) )
iu nay co ngha rng tp hp cac gia tr cua pfpre(P, true) la min xac nh
cua ham fP (ngha la tp hp cac gia tr sao cho chng trnh P a ra mt kt
qua).
Kha nng biu din pfpre(P, S), P va S, cho phep chng minh tnh ung
n (CMT) toan cuc cua chng trnh.
Mt h thng CMT toan cuc s dung iu kin trc yu nht bao gm :
(a) Vi mi lnh s cp, cac tin cho iu kin trc yu nht ng vi mt
iu kin sau a cho. i vi phep gan, cac tin a cho muc I noi chung
se thay th vai tro nay.
(b) Cac quy tc suy din cho phep xy dng iu kin trc yu nht cua mt
lnh khng s cp P, xut phat t cac iu kin trc yu nht cua cac lnh
trong P.
V du 16 :
Gia s cn xac nh : pfpre(if B then P else Q, S)
Nu B cho mt kt qua, ta co :
pfpre(if B then P else Q, S)
~ (B pfpre(P, S) (B pfpre(Q, S))
Nhng vic tnh B cho mt kt qua nu va ch nu pfpre(if B then ,
true) la ung.

Nh vy trong trng hp tng quat :

Error! Reference source not found.

85

pfpre(if B then P else Q, S)


~if pfpre(if B then , true)
then (B pfpre(P, S) (B pfpre(Q, S)) else false
Khng co quy tc n gian cho vong lp while.
phc tap cua cac quy tc a ra xac nh dkt cua mt vong lp while co
th c minh hoa nh sau :
Vn dng cua vong lp while tru tng khng la quyt nh c.
V vy, iu kin
pfpre(while B do P, true)
khng tnh c cho moi B, moi P.

Vic giai quyt mt s bai toan ni ting a v vic chng minh mt chng trnh
la dng. V du, ngi ta khng bit nu :

pfpre(while n<>1 do
n:=if not odd(n) then n div 2 else 3*n+1, true)~(n >= 1)
y la s gia nh (conjecture) cua Collatz.
Chu y : Cac tin va cac quy tc suy din xet muc I cho phep chng minh tnh
ung n cua cac phat biu E {P} S, trong o E pfpre(P, S). V du, ta a
chng minh tnh ung n tng phn rng :
(a 0) {Div} (a = bq + r) (q 0) (0 r < b)

b) Trng hp iu kin sau manh nht


Theo nh ngha cua pfpost, ta co : E {P} S ~ (pfpost(E, P) S)
Nh vy, mt h thng chng minh tnh ung n da trn vic tnh toan cac
iu kin sau manh nht cho phep chng minh tnh ung n tng phn.
i vi lnh iu kin, quy tc suy din c cho bi tnh cht :
pfpost(E, if B then P else Q)
~ pfpost(E B, P) pfpost(E B,Q)
vi gia tr rng B lun lun cho mt kt qua.
Trong trng hp tng quat :
pfpost(E, if B then P else Q)
~ pfpost(E (if pfpre(if B then, true) then B else false), P)
pfpost(E (if pfpre(if B then, true) then B else
false), Q)

TS. PHAN HUY KHANH bin soan

85

86

Cng ngh Phn mm

IV.2. Cac tin gan


IV.2.1. iu kin trc yu nht va iu kin sau manh nht cua lnh gan
iu kin trc E c tnh toan theo quy tc a trnh bay muc I tao ra
cac tin gan la iu kin trc yu nht cua mt lnh gan x := <bt> va cua mt
iu kin sau S, khi ai lng termE(x := <bt>) co gia tr true. Trong trng hp
nay, tin c ky hiu bi :
pfpre(x := <biu thc>, S) { x := <bt> } S
Trong trng hp tng quat, ta co :
pfpre(x := <bt>, S) ~ if pfpre(x := <bt>, true) then S(x <bt>) else false.
iu kin pfpre(x := <bt>, true) th hin :
x va cac toan hang cua <bt> c nh ngha :
ch s cua mang nm gia cn di va cn trn, cac con tro ch n cac bin
khac nil, v.v...,
moi phep toan thc thi u cho kt qua :
co s tng thch v kiu cua cac toan hang, khng co phep chia cho 0, v.v...
y ta khng thy s vi pham v tnh hp thc cua cac tin a nu trong
muc I v tnh ung n tng phn : nu termE(x := <bt>) co gia tr false, phat biu
E { x := <bt> } S la true. Ngi ta co th cung c iu kin trc cua cac tin nay
bi cac iu kin do pfpre(x := <bt>, true) a n.
V du, nu m va n ln lt la cn di va cn trn cua mang a, thay v :
(y > 0) { x := a[j] } (y > 0) va
(a[j] = y) { x := a[j] } (x = y)
Ta co th vit : (m j n) (y > 0) { x := a[j] } (y > 0)
if (m j n) then (a[j] = y) else false

{ x := a[j] }

(x = y)

Theo mnh III.1.1, nu E (x := <bt>) S la mt tin , S khng nht thit la


iu kin sau manh nht ng vi E. Nh vy cac tin gan noi chung khng th
ky hiu :
E (x := <bt>) pfpost(E, x := <bt>)
1
Chng han ta co tin : (
x 0) { x := 1 x } (x 0)
Ta co :

1
(
x 0) ~ (x > 0), nhngpfpost(x > 0, x := 1 x) ~ (x > 0)

By gi ta se xet cac quy tc xy dng cac tin t iu kin trc v iu


kin sau. Cac tin nay se lun lun c ky hiu bi :
E (x := <bt>) pfpost(E, x := <bt>)
nhng khng th ky hiu bi : pfpre(x := <bt>, S) { x := <bt> } S

87

Error! Reference source not found.

IV.2.2. Quy tc tnh toan iu kin sau manh nht cua mt phep gan
Vi lnh gan x := <bt>, ch co bin x b thay i. Nh vy, fx := <bt> la mt ham t
tp hp W cac gia tr cua cac bin cua chng trnh vao chnh no, t ng nht
cac thanh phn, tr bin x.
Ta ky hiu

x fx := <bt> la phep chiu cua fx := <bt> vao thanh phn nay.

V du, vi lnh q := q+1 cua chng trnh Div muc I, ta co :


fq := q+1 (a, b, q, r) = (a, b, q+1, r)va

q fq := q+1 (a, b, q, r) = q+1

Tng t, quy tc iu kin trc v tin gan a cho muc I co th vit :


E ~ S(x x fx := <bt>)
By gi ta se nh ngha hai quy tc tnh toan iu kin sau manh nht cua
mt lnh gan.

a) Trng hp c bit
Nu ham thu hep fx := <bt> vao WE la toan cuc va n anh, se tn tai ham ngc
f1x := <bt>
Trong trng hp nay, co th s dung quy tc sau y tnh pfpost :
pfpost(E, x := <bt>) ~ E(x xf1x := <bt>)
ngha l1 ta nhn c iu kin sau manh nht cua mt iu kin trc E va mt
phep gan x := <bt> bi vic thay th nhng ni x xut hin trong iu kin E bi
ham ngc cua fx := <bt>.
T quy tc tnh pfpost, ta co tin gan t iu kin trc va iu kin sau
nh sau :
E { x := <bt> } E(x xf1x := <bt>)
S tn tai ham ngc cua f1 x := <bt> cho phep tm c gia tr cua x trc khi
thc hin phep gan, t cac gia tr cac bin sau khi gan.
Chu y :

pfpost(q 0, q := q+1) ~ (q1 0)


q
pfpost(q 0, q := q2) ~ ( 0)
2
pfpost(q = 0, q := q+a) ~ (qa = 0)

Ta nhn c cac tin sau y :


(q 0) { q := q+1 } (q1 0)
x
(q 0) { q := q2 } ( 0)
2
(q = 0) { q := q+a } (qa = 0)
Quy tc trn khng dung c cho cac phep gan nh q := 0, hoc q := q div 2.

TS. PHAN HUY KHANH bin soan

87

88

Cng ngh Phn mm


Ta co th dung quy tc chng minh chng trnh theo chiu bt u kt

thuc.
V du, chng minh (x > 0) { x := x2 } (x > 0) :
Xet quy tc t iu kin sau v iu kin trc :
(2x > 0) { x := x2 } (x > 0)
S dung quy tc iu kin trc, ta nhn c kt qua v :
(2x > 0) (x > 0)
Xet quy tc t iu kin trc v iu kin sau :
x
(x > 0) { x := x2 } ( > 0)
2
x
S dung quy tc iu kin sau, ta nhn c kt qua v : ( > 0) (x > 0)
2
Chu y : Cac tin gan a a ra trong cac v du trn co th nhn c t iu
kin sau bi tin gan muc I. Trong cac v du nay, ham fx := <bt> : W
W la n anh.
V du sau y ch ra rng nu ham fx := <bt> : W W khng la n anh,
ngi ta khng con co tnh cht nay.
V du 17 :
Ham fx := x div 2 la toan th, nhng khng n anh. Thu hep cua no vao Wx = 2y la
n anh.
Ap dung quy tc tnh pfpost, ta co tin : (x = 2y) { x := x div 2 } (2x = 2y)
tng ng vi : (x = 2y) { x := x div 2 } (x = y)
Tuy nhin, xut phat t iu kin sau (2x = 2y) va s dung tin gan muc I,
ta co tin :
x
(2 2 = 2y) { x := x div 2 } (2x = 2y)
tng ng vi :

x
(2 2 = 2y) { x := x div 2 } (x = y)

b) Trng hp tng quat


Nu khng tn tai ham ngc cua fx := <bt>, se khng th tm c gia tr ban
u cua x, xut phat t gia tr cac bin sau khi thc hin phep gan.

89

Error! Reference source not found.

V. Bai tp
Bai 1 : S dung cac quy tc trn y, chng minh cac tnh cht sau :
1. Nu E {P} S va E {P} S la cac nh ly, th E E {P} S S va E E {P} S S
cung la cac nh ly.
2. Nu E {P} F va G {Q} S la cac nh ly va nu F G, th E {P ; Q} S la mt nh
ly.
3. S dung quy tc ;, chng minh rng : (y = 2) { x := y+1 ; z :=x+y } (z = 5)
4. S dung quy tc iu kin trc, chng minh rng : (q 0) { q := q + 1 } (q 0)
5. Phep th s dung trong quy tc trn y co th c vit E = S (x <bt>). Trong
iu kin c bit cua mt biu thc iu kin trc, phep th nay c nh
ngha bi :
S (x if a then e1 else e2)

(a S (x e1)) (a S (x e2))

S dung quy tc trn y chng minh :


(z 0) { z := if b > 0 then z + b else z b } (z 0)
Bai 2 : Chng minh Div dng :
Bng cach s dung ham m(w) =
chia

A
B

q, trong o

A
B

la phn nguyn cua phep

A
.
B

Chng minh sau khi ra khoi vong lp, m(w) = 0.


Bai 3 : T chng trnh P trong muc II.2.1, hay :
1. Chng minh hnh thc chng trnh P.
2. Cho bit s ln ti a thc hin vong lp cua P.
3. S dung chng trnh Div cua muc trc suy din t P mt chng trnh
tnh SCLN cua hai s nguyn dng A va B bi vic tnh s d lin tip.
Bai 4 : T chng trnh (Ibis) trong muc II.2.2, hay :
1. Chng minh rng chng trnh (Ibis) thoa man cac rang buc cua bai toan.
2. Chng minh rng chng trnh (Ibis) khng con thoa man nu thay th vong lp
trong cung bi :
while R(r) and (w<=r) do r:=r-1;
if w<r then begin hoanv(r, w); r:=r-1 end;
Chng minh rng chng trnh nay co th dn n tnh R(0).

TS. PHAN HUY KHANH bin soan

89

CHNG 4

Th nghim chng trnh


Nh a trnh bay trong chng trc, ngi ta thng s dung cac ky thut
tnh (static techniques) va ky thut ng (dynamic techniques) trong qua trnh
V&V kim tra tnh ung n cua mt san phm phn mm.
Chng nay se trnh bay mt phng phap tnh la khao sat (inspection) chng
trnh, vi vai tro nh la mt phep chng minh phi hnh thc va, mt phng phap
ng la th nghim(testing) chng trnh.

I. Khao sat
Khao sat (hay thanh tra) la nhung cuc hop nhm muc ch xac minh mt san
phm. Phn ln cac phng phap san xut phn mm u n nh trc nhng
cuc hop nh vy. Tuy theo ban cht cua san phm cn khao sat, ngi ta noi v
khao sat thit k toan th (global design), khao sat thit k chi tit (detailed
design), va khao sat ma ngun.
Mt kch ban mu (typical scenario) cho mt khao sat ma ngun nh sau :
1. Cn n 4 ngi gm mt chu tch, mt ngi lp trnh, mt ngi thit k va
mt khao sat (u la nhung chuyn gia v Tin hoc, ring khao sat phai co kin
thc chuyn mn v lnh vc ng dung cua san phm).
2. Cac thanh vin nhn chng trnh ngun va cac c ta trc cuc hop t ngay
oc va chun b.
3. Cuc hop keo dai khoang 1 gi 30 n khoang 2 gi.
4. Trong qua trnh hop khao sat :
Ngi lp trnh oc va giai thch chng trnh cua mnh, co th oc tng dong
lnh mt va tra li cac cu hoi c t ra.
Chng trnh c phn tch cn c trn mt danh sach cac li sai (errors)
thng dung do khao sat cung cp.
5. Cuc hop khng sa li tm thy ma ch ghi nhn qua bin ban ma thi. Chnh
ngi lp trnh se t sa li sau khi hop xong.
6. Nu khi khao sat tm thy trong chng trnh, nhiu khim khuyt (failures),
hoc nhiu li trm trong th phai tip tuc khao sat ln sau, sau khi sa li.

TS. PHAN HUY KHANH bin soan

90

91

Th nghim chng trnh

Mt s kch ban coi trong vic tm li sai va khuyn khch vic chay demo trc
tip ma chng trnh (hand made) ngun : khao sat mang n cuc hop cach tin
hanh va cac d liu lin quan moi ngi tin hanh th nghim. Ngi ta con goi
cach th nghim nh vy la walk throughs (chay sut).
Mt s kch ban lai coi trong vic chng minh khng hnh thc : khao sat
ngh xac minh cac tnh cht cho phep th nghim tnh ung n cua san phm.
Ngi ta noi y la vic khao sat cn c trn vic xac minh.
Vic kim lai (review) khac vi khao sat v rng vic kim lai khng oi hoi
phai hop : San phm c giao cho nhng ngi khng tham gia vao vic lp
trnh, ho co nhng khuynh hng anh gia c lp.
Co th noi phng phap khao sat co hiu qua ang k : nhng s liu tm thy
trong cac vn ban ghi nhn khoang 50% sai sot c phat hin khi khao sat.
Nhng con s di y (ly t tap ch IEEE3 nm 1992 cua Dyer M. t bai bao
Verification Based Inspection") cho thy cac sai s tm thy khi phat trin d an
5 phn mm cua hang IBM :
D an

Khao sat

Khao sat

Khao sat ma Th nghim Th nghim

thit k toan b

thit k chi tit

n v

h thng

50

25

25

1
2

13

49

17

17

20

27

10

20

23

20

26

22

18

36

10

18

24

24

24

Mt phng phap khac, goi la phng phap phong sach (Clean-room


Methodology), thay v th nghim (testing), khuyn khch vic khao sat
(inspection) bng cach xac minh (verification) trong qua trnh san xut phn mm.
S phat trin phn la lin tip lam mn (raffinement) san phm. Mi giai oan,
ngi ta tin hanh chng minh tnh ung n (prouving) mt cach cht che, ng
thi vi cac cuc khao sat, sao cho san phm phn mm khng cha sai sot.
Vic th nghim ch c tin hanh khi xac minh hu nghim (a posteriori)
nh cac phng phap thng k, nhm at c muc ch t ra luc u. Phng
phap phong sach do H.Mills xy dng tai IBM, a c ap dung san xut cac
phn mm c ln.

IEEE, oc la eye-triple-ee, tn vit tt cua Institute of Elechtrric and Engineers.

TS. PHAN HUY KHANH bin soan

91

92

Cng ngh Phn mm

II. Cac phng phap th nghim


Phng phap th nghim la cho chay chng trnh t mt s d liu th c
chon trc. Phep th nghim dung cho ca hai qua trnh xac minh va hp thc hoa
V&V, vi iu kin rng chng trnh la chay c.
Vic th nghim phn bit :
1. Cac phep chng minh tnh ung n hay khao sat ma ngun ma khng chay
chng trnh, vi quy trnh walkthroughs bng cach chay demo (hand-made).
2. Chay chng trnh debugger tm sa li.
Cac th nghim va chay debugger thng do cac nhom cng tac khac nhau am
nhim.
nng cao hiu qua, ngi ta thng phn cng nh sau : nhom th nghim
la nhom khng lp trnh, con nhom chay debugger la nhom tham gia lp trnh ra
san phm. Qua trnh debugger gm nhiu giai oan :
1. Tm thy li sai (Locate error)
2. Tm cach khc phuc li sai (Design error repair)
3. Khc phuc li sai (Error repair)
4. Th nghim lai chng trnh (Re-teat program)
Tm thy
li sai

Tm cach
khc phuc li sai

Khc phuc
li sai

Th nghim
lai chng
trnh

Hnh 4.1. Qua trnh debugger


Vi nhng phng phap lp trnh truyn thng, qua trnh V & V la khao sat va
th nghim chng trnh. Thc t, vic th nghim chim mt phn ang k trong
qua trnh san xut phn mm, chim khoang t 30% n 50%, tuy theo ban cht
cua d an Tin hoc.

II.1.

nh ngha va muc ch th nghim

Ngi ta a ra nhung nh ngha sau y :


Mt th nghim la cho chay (run) hay thc hin (execution) mt chng trnh
t nhung d liu c la chon c bit, nhm xac minh kt qua nhn c
sau khi chay la ung n.
Mt tp d liu th la tp hp hu han cac d liu trong o mi d liu phuc
vu cho mt th nghim.

Th nghim chng trnh

93

Mi phep th nghim ch ra hoat ng t vic thit k cac tp d liu th, tin


hanh th nghim va anh gia kt qua n cac giai oan khac nhau trong chu ky
sng cua phn mm.
Ngi th nghim (hay nhom th nghim) co kin thc chuyn mn Tin hoc co
nhim vu tin hanh phep th nghim.
Mt khim khuyt (failure) xay ra khi chng trnh thc hin cho ra kt qua
khng tng hp vi c ta cua chng trnh.
Mt li sai (error) la mt phn chng trnh (lnh) a gy ra khim khuyt.
Ngi th nghim co nhim vu :
1. Tao ra tp d liu th.
2. Trin khai cac phep th.
3. Lp bao cao v kt qua th nghim va lu gi.
Muc ch th nghim la :
1. Chng minh rng chng trnh la ung n
khng nh tnh ung n cua chng trnh, cn tin hanh cac th nghim
toan b (exhaustive testing), oi hoi tp d liu th phai hu han va co kch thc
va phai sao cho u sc thuyt phuc. iu nay trn thc t rt kho thc hin.
Sau y la mt tiu chun ni ting cua Dijkstra : Cac th nghim cho phep
chng minh mt chng trnh la khng ung, bng cach ch ra mt phan v du, tuy
nhin, khng bao gi co th chng minh c chng trnh o la ung n.
2. Gy ra nhng khim khuyt cua chng trnh
Myers G. J. trong bai bao The Art of Software Testing, Wiley 1979, a nh
ngha th nghim nh sau :
Phep th nghim la cho chay chng trnh nhm tm ra nhng sai sot.
T o, thng ngi ta noi v th nghim pha huy (destructive testings). Muc
ch cua nhung phep th nh vy la tp trung tm ra cac li sai t nhung khim
khuyt do ngi lp trnh pham phai. Ngi th nghim tin hanh vi muc ch
nghch (negative) : phep th la thanh cng nu tm ra c khim khuyt, la tht
bai trong trng hp ngc lai. Vic th nghim kiu nay thng c ap dung
trong qua trnh vit chng trnh.
3. a ra anh gia tnh (static evaluation - static benchmark)
v cht lng cua chng trnh.
Ngi ta s dung phng phap th nghim tnh (static testing) cho muc ch
nay. Trong phng phap phong trng, ngi ta ch tin hanh nhung phep th tnh,

TS. PHAN HUY KHANH bin soan

93

94

Cng ngh Phn mm

nhm muc ch va am bao cng vic cua ngi lp trnh va anh gia s tin cy
cua san phm vn hanh.

II.2.

Th nghim trong chu ky sng cua phn mm

Ngi ta phn bit nhiu phng phap th nghim, tng ng vi cac giai oan
san xut phn mm khac nhau.
Th
nghim

Th nghim
big bang

Th nghim
trn xung

Th
nghim

Th nghim
h thng

Th
nghim

Th nghim tch hp
Hnh 4.2. Nhiu phng phap th nghim

II.2.1. Th nghim n th
Th nghim n th (Module testing), hay th nghim n v (Unit testing) do
ngi lp trnh t tin hanh. Phng phap nay hay c s dung trong lp trnh
cu truc (top-down programing). Cac phng phap th nghim khac do ngi th
nghim tin hanh.
Gia s goi M la mt n th cn th nghim ring bit. Khi o, xay ra hai
trng hp nh sau :
Trng hp 1 : nhng n th do M goi ti khng co mt luc th nghim.
Khi o, nhng n th do M goi ti vng mt phai c thay th bi cac chng
trnh cung mt giao din vi M. Cac chng trnh nay thc hin ung chc nng
ma chung ai din cho n th vng mt va chung c goi la cac trnh stubs
(cung).
n th M

Hnh 4.3. Cac n th vng mt c thay bi cac trnh stubs


V du, nu n th ang c th nghim goi mt thu tuc sp xp u :
Procedure Sort (T: Array ; n: Integer);
ngi ta co th s dung trnh Stub :
Procedure Sort (T: Array ; n: Integer) ;
Writeln (Day cn sp xp la : ) ;
for i:= 1 to n do writeln (T[i]) ;

95

Th nghim chng trnh

for i:= 1 to n do readln (T [i]) ;


Tip theo, ngi th nghim se tin hanh sp xp day a nhp bng tay
thay th cho thu tuc sp xp vng mt.
Trng hp 2 : nhng n th goi ti M khng co mt luc th nghim.
Khi o, n th goi ti M nhng vng mt phai c thay th bi mt chng
trnh, c goi la trnh driver. Trnh driver goi M M thc hin trn cac d liu
thuc tp d liu th, sau o ghi nhn cac kt qua tnh c bi M so sanh vi
cac kt qua ch i.

n th M
Hnh 4.4. Dung trnh driver goi thc hin M
S lng cac trnh stubs va cac trnh drivers cn thit tin hanh th nghim
cac n th phu thuc vao th t cac n th c th nghim.

II.2.2. Th nghim tch hp


Th nghim tch hp va nhm tao mi lin kt gia cac n th, va c tin
hanh i vi nhng n th ln hnh thanh h thng chng trnh hoan chnh. Co
nhiu phng phap th nghim tch hp.
1. Phng phap big bang
Ngi ta xy dng mi lin h gia cac n th tao thanh mt phin ban h
thng hoan chnh, sau o th nghim phin ban nay.
Nh vy ngi ta cn n nhiu trnh drivers, mi trnh driver cho mt n
th, mt trnh stubs cho tt ca cac n th cua h thng, tr n th chnh phai
c th nghim bng phng phap th nghim n v.
Phng phap big bang nguy him : tt ca cac sai sot co th ng thi xut
hin, vic xac nh tng li sai se gp kho khn. Hn na phng phap nay oi hoi
mt lng ti a cac trnh drivers va cac trnh stubs. V vy thng ngi ta s
dung cac phng phap tch hp t trn xung, hay t di ln.
2. Phng phap th nghim t trn xung
(Descendant hay Top-down Testing Method)
Bt u th nghim n th chnh, sau o th nghim chng trnh nhn c
t s lin kt gia n th chnh va cac n th c goi trc tip t n th
chnh, v.v...
TS. PHAN HUY KHANH bin soan

95

96

Cng ngh Phn mm

Phng phap nay ch cn dung mt trnh driver duy nht cho n th chnh,
nhng cn mt trnh stub cho mi n th con lai.
Day cac
th nghim

Level 1
Level 2
stubs

Level 1

Level 2

Level 2

Level 2

Level 2

Level 3
stubs
Hnh 4.5. Phng phap th nghim t trn xung
3. Phng phap th nghim t di ln
(Ascendant hay Bottom-Up Testing Method)
Bt u th nghim cac n th khng goi n cac n th khac, sau o cac
chng trnh nhn c bi s lin kt gia mt n th ch goi n cac n th a
c th nghim vi cac n th nay, v.v . . Phng phap nay oi hoi mi n th
mt trnh driver, nhng khng cn trnh stub.

Mc N

Mc N

Mc N-1

Mc N

Mc N

Mc N-1

Mc N

Mc N-1

Hnh 4.6. Th nghim t di ln


Phng phap tin to ra u im hn phng phap lui, do cac trnh drivers
dung d vit hn cac trnh stubs va co cac cng cu tao sinh t ng cac trnh
drivers. Mt khac, th t tch hp thng b rang buc bi th t co mt cua cac
n th.

II.2.3. Th nghim h thng


Vn la th nghim phn mm hoan chnh va phn cng anh gia hiu
nng, an toan, tnh tng hp vi cac c ta, v.v . . .
Nhng th nghim nay oi hoi nhiu thi gian. Ngi ta noi n th nghim
chp nhn (Acceptance testing), la nhng th nghim phu hp vi san phm cui
cung qua hp ng a ky vi khach hang (nhiu khi vic th nghim nay do khach
hang tin hanh), con c goi la th nghim alpha va cui cung la th nghim cai
t (Setup Testing), la th nghim i vi san phm cui cung, tin hanh tai v tr

Th nghim chng trnh

97

cua khach hang (vi cac may tnh va h iu hanh ho ang s dung). Ngi ta goi
cac th nghim cho phin ban u tin cua phn mm do khach hang c la
chon c bit tin hanh la th nghim beta.

II.2.4. Th nghim hi quy


Ngi ta con goi cac th nghim tin hanh sau khi sa li la th nghim hi
quy, hay thoai lui (regresgion testing) nhm xac minh nu cac sai sot khac
khng c x ly khi sa cha. Kin th nghim nay hay c dung trong khi bao
tr. tin hanh hiu qua cac th nghim nay, cn lu gi lai nhng th nghim
a lam trong qua trnh san xut phn mm, iu nay giup cho vic xac minh t
ng cac kt qua th nghim thoai lui. Kho khn gp phai la trong s nhng th
nghim a dt dn, cn phai chon nhng th nghim nao choth nghim thoai lui.
Phng cach ngi ta hay lam la kt hp mi lnh cua chng trnh vi tp hp
cac th nghim lam chay chng trnh.

II.3.

Dn dt cac th nghim

Vic dn dt cac th nghim bao gm :


- Xac nh kch thc cua tp d liu th (vn kt thuc cac TN).
- La chon cac d liu cn th nghim.
- Xac nh tnh ung n hay khng ung n cua cac kt qua nhn c sau
khi thc hin chng trnh i vi cac d liu cua tp d liu th (Vn li tin
tri - oracle).
Vic dn dt cac th nghim kem theo vic vit cac chng trnh b tr nh la
cac stubs va cac drivers.
Vn li tin tri
Mt phep th nghim (check program)
Mt tp hp hu han cac gia tr a vao.
Mt tp hp hu han cac cp (Gia tr a vao, kt qua tng ng).
Trong trng hp 1, vic phat hin ra cac khim khuyt phai c lam bng
tay (by hand), t o dn n mt cng vic xem xet ky lng cac kt qua mt th
gi va mt moi (lam han ch kch thc cac tp d liu th). Co hai kiu sai sot
xay ra khi xem xet :
- Mt kt qua sai lai c xem nh la ung.
- Mt kt qua ung co th c hiu la sai.
tranh xac minh bng tay, cn phai co nhng c ta kha thi, hay mt phin
ban khac cua chng trnh (iu nay co nguy c lam lan truyn sai sot t phin
ban nay sang phin ban khac).
TS. PHAN HUY KHANH bin soan

97

98

Cng ngh Phn mm

Trong trng hp th hai, chnh chng trnh ang chay t phat hin ra cac
khim khuyt, vn la tm ra c cac gia tr a ra kt qua tng ng vi gia
tr a vao. iu nay co th lam bng tay vi mt c ta kha thi, vi mt phin
ban cua chng trnh, vi cung nhng vn a gp trong trng hp u. Ngi
ta cung co th vn dung cac phep th cu a lu gi.
Chu y rng dung chng trnh xac minh tnh ung n cua kt qua khng lun
lun n gian : nu xay ra co nhiu cai ra ung tng ng vi mot cai vao th phai
t kt qua do chng trnh tnh ra di dang quy tc trc khi xac minh tnh
nht quan vi kt qua d kin trong tp d liu th. iu nay khng phai lun
lun lam c. Chng han lam sao co th xac minh c rng ma sinh ra bi mt
trnh bin dch la ung n, nu ch th nghim ma o ma thi ?

II.4.

Thit k cac phep th pha huy (Defect Testing)

II.4.1. Cac phng phap da trn chng trnh


Cac phng phap nay con c goi la phng phap co cu truc (Structural
Testing) hay th nghim hp trng (white-box hay glass-box).
Mi chng trnh tng ng vi mt s khi gm cac cu truc la chon va
cac cu truc khi la mt day ti a cac lnh thc hin (gm cac lnh gan, lnh goi
chng trnh con, cac lnh vao-ra...) ma khng co lnh re nhanh. Ngi ta goi cac
khi lnh la cac u vao s khi va cac quyt nh la cac cung i ra t mt cu
truc la chon.

a) Phu cac lnh (cac nh)


Mt phep th la phu (trum) ht cac lnh cua mt chng trnh nu lam cho mi
lnh cua no c thc hin. y la mt tiu chun ti thiu : Ngi ta khng xet
nhng th nghim ma mi lnh cua chng trnh khng c thc hin t nht
mt ln.
Chu y rng tiu chun nay khng phai lun lun thoa man bng mt chng
trnh co th cha cac lnh ma khng th c thc hin.

b) Phu cac quyt nh (cac cung)


Mt phep th phu cac quyt nh nu trong khi thc hin, mi cung cua s
t chc cua chng trnh c duyt qua t nht mt ln : ngha la nu mi phep
chon c thc hin t nht mt ln cho mi gia tr co th (thu hay fals e trong
trng hp ghep re nhanh logic).
Nh vy, tiu chun nay khng phai lun cn phai thoa man.
V du : if A > 0 then if A 0 then . . . else . . .

99

Th nghim chng trnh

c) Phu cac iu kin


Ta xet mt chng trnh cha cu truc re nhanh logic gm cac lnh not, end va
or. Mt phep th phu cac iu kin nu vic thc hin chng trnh keo theo s
tnh gia tr cua biu thc nay cho moi gia tr logic co th. Nh vy mt biu thc co
hai toan hang P, Q se c tnh toan vi :
A
true
true
false
false

B
true
false
true
false

Phep phu cac iu kin cho phep cung c phep phu cac quyt nh. V du co th
phu cac quyt nh bng cach thc hin phep la chon P va Q vi :
P = true, Q = true va P = false, Q = false,
iu nay khng cho phep phn bit phep re nhanh A or B.

d) Phu cac l trnh thc hin chng trnh (path testing)


Mt phep th phu cac l trnh chay chng trnh nu gy ra vic thc thi mi
l trnh thc hin chng trnh. Khng tn tai phep th nh vy nu chng trnh
co v han l trnh thc hin trong trng hp tng quat. Thng thng ngi ta
xy dng phep th phu cac l trnh thc hin co s lng mt hng a cho.

e) Xac nh d liu cho phep phu l trnh thc hin c bit


Gia thit rng vi moi lnh P cua chng trnh va moi quyt nh S, co th tnh
ptpre (P, S), iu kin u yu nht ng vi P va S. Ngi ta co th vi moi l
trnh cua chng trnh, tnh c mt cng thc E sao cho cac d liu cua chng
trnh thoa man E nu va ch nu vic thc hin cua chng trnh i theo l trnh
a chon.
c bit, E khng la sai nu va ch nu l trnh a chon la l trnh thc thi.
Nh vy ch cn tm ra cac d liu lam thoa man E co phep th phu l trnh a
chon. iu nay co th thc hin bng ta, hay chng minh mt cach sang tao cng
thc xE.
Phng phap nay c dung nh ngha phep th phu cac quyt nh cua
mt chng trnh :

La chon mt tp hp cac l trnh phu cac quyt nh.

Vi mi l trnh, tnh iu kin u yu nht tng ng (hoc mt iu kin


u manh hn).

Tm cac d liu thoa man cac iu kin iu nay.

TS. PHAN HUY KHANH bin soan

99

100

Cng ngh Phn mm

f) Phu cac lung d liu


Vi mi bin cua chng trnh, ngi ta goi nh ngha la mt trng hp cua
bin o, mt gia tr c gan cho bin (v du : x:=1, readln(x) ...). Ngi ta goi
s dung la mt trng hp ma gia tr cua bin c s dung (v du : y:= x+y i
vi bin x).
Trong cac s dung, ngi ta phn bit cac s dung trong cac lnh khng phai la
la chon, goi la C- s dung, vi C : calculus, cac s dung trong cac lnh la chon,
goi la P- s dung, vi P : Predicate.
Mt phep th la phu cac C-s dung nu vi mi bin x, gy ra vic thc thi mi
l trnh gia mt nh ngha x va mt C-s dung u tin cua x.
Mt phep th la phu cac P-s dung nu, vi mi bin x gy ra vic thc thi mi
l trnh gia mt nh ngha x, va mt gia tr la chon.

II.4.2. Cac phng phap da trn c ta


Nhng phng phap nay con c goi la th nghim chc nng (funchng
trnhional testing), ha th nghim nay, ngi ta khng chu y n chng trnh,
ma ch lam vic vi c ta chc nng cua chng trnh. Ngi ta co th thit k
tp d liu th trc khi vit chng trnh.

a) Cac th nghim toan th (Exhaustive Testing)


Ngi ta th nghim chng trnh vi tt ca d liu co th v mt ly thuyt,
iu nay ch lam c nu tp hp d liu th la hu han. Thc t, ngay ca khi
tp hp d liu la hu han th thi gian thc hin chng trnh cho cac th
nghim toan th la qua ln trong phn ln trng hp.
V du :

1. Tnh x, vi x nguyn gia 0 va 231

Vi thi gian mt th nghim la 1s, khi o mt 231 = 2147483648 s.


Mt nm co 365 x 24 x 3600s = 31536000s.
Vy thi gian mt thc nghim toan th la 68 nm.
2. Th nghim phep cng cac so nguyn gia 0 va 231
Thi gian th nghim mt phep cng la 1 s. S lng d liu la :
231 x 231 = 262 9.22 x 1018
Thi gian th nghim toan th la trn 292 471 nm.

b) Cac th nghim bi cac lp tng ng (Equivalence partioning)


Nguyn ly : Phn hoach tp hp d liu thanh mt s hu han lp va la mt
phn t (hay mt mu phn t) trong mi lp. Ngi ta t trong cung mt lp cac

Th nghim chng trnh

101

d liu c cho la phu hp vi chng trnh theo cach c ta. Nhng d liu nay
co th cung gy ra khim khuyt trong cung tnh hung.
Chu y cn th nghim cac d liu nm pham vi giap ranh gia cac lp tng
ng phat hin cac li sai kiu thng ln vi <, v.v . . .

c) Th nghim nh hng bi cu phap (Syntax Controlled Testing)


Khi d liu la tp hp cac chui ky t (cac ngn ng lp trnh), chung c c
ta bi cac tomat hu han, hoc bi cac vn pham phi ng canh.
V du, nu phn mm c th nghim co tnh tng tac qua lai, nh cac h
iu hanh, th tp hp day cac hanh ng co th c nh ngha bi mt tmat
hu han.
Ngi ta co th nh ngha cac tp d liu th phu cac trang thai at c, cac
cung, cac l trnh co dai b chn, v.v . . .
Khi tp hp d liu c nh ngha bi mt vn pham vi ng canh, ngi ta co
th xy dng phep th phu cac quy tc cua vn pham (mi quy tc c ap dung t
nht mt ln tin hanh mt th nghim).
Chu y rng luc nay, ngi ta ch co th nhn c d liu ung, vic nhn c
cac d liu sai bi cung phng phap cn thit phai vit mt vn pham san sinh ra
tp hp cac d liu sai, iu nay lai la mt vn hoc bua (v rng bu cua mt
ngn ng PNC cha chc a la PNC).

d) Cac th nghim ngu nhin (Random Testing)


y la tp d liu th s dung cac d liu ly ngu nhin, tun theo lut xac
sut, chng han lut ng u, d tin hanh nhng thng la kem hiu qua.

II.4.3. Kt lun
Hin nay, ngi ta thng xy dng phep th nghim bng cach phi hp cac
th nghim chc nng va th nghim cu truc : ngi ta bt u th nghim chc
nng trc (ngay khi c ta yu cu), sau o hoan thin phep th nghim bi cac
tiu chun cu truc (bao boc cac lnh, bao boc cac quyt nh...) khi co c chng
trnh.

II.4.4. Cac tiu chun kt thuc th nghim


Vn t ra la khi nao th kt thuc th nghim ? hay cu th hn la xac nh
pham vi th nghim nh th nao ?
Nu kt thuc th nghim sm th co th cha tm ht li trong chng trnh.
Con nu kt thuc mun qua th lai nng cao gia thanh san phm. Sau y la mt
s tiu chun :
TS. PHAN HUY KHANH bin soan

101

102

Cng ngh Phn mm

1. Dng khi khng con gy ra c khim khuyt.


Thng th mt chng trnh ln bao gi cung co li, tiu chun nay to ra phi
thc t, hn na mu thun vi muc ch cua cac th nghim pha huy.
2. Dng khi thi gian (hay kinh ph) gia han cho th nghim a ht.
tiu chun nay co hiu lc th phai nh lng c tp hp cac d liu th
trc khi tin hanh th nghim.
3. Cn c vao kinh nghim cua cac d an tng t a hoan tt.
Mt phep th nghim bao boc cac quyt nh (hay 80% cua cac cung) khng gy
ra khim khuyt. Vn : La chon tuy tin cua tiu chun.
4. Th nghim chng 70 sai sot khng c phat hin hay sau mt thi han 3
thang khng xay ra.
Vn : c lng s lng sai sot trong chng trnh, c lng ty l % cac
sai sot c phat hin bi th nghim, c lng ty l % sai sot pham phai trong
cac giai oan phat trin phn mm va tai giai oan th nghim ma nhng sai sot
nay c phat hin.
5. Th nghim n khi s lng sai sot tm thy khng con giam theo mt cach co
y ngha na.
Vn : Lam sao c lng c s sai sot a giam theo cach co y ngha ?
6. Phng phap cac t bin (Mutant method)
Ngi ta thay i chng trnh bng cach a vao cac li. Cac chng trnh b
thay i c goi la cac t bin. Mt phep th la tt nu dit c 100% (95%,
v.v . . .) cac t bin o.
Vn : Cac sai sot a vao co phai la nhng sai sot thc tin (co thc)?

II.5.

Cac phep th nghim thng k

II.5.1. M u
Cac phep th nghim thng k (Statistical Testing) nhm o tin cy
(reliability) cua phn mm, ngha la o xac sut chay n nh va ung n trong
nhng iu kin s dung cho trc. Cac th nghim pha huy khng cho phep anh
gia c tnh tin cy cua mt chng trnh v rng cac th nghim pha huy khng
tnh n cac iu kin s dung nh phng phap nay.
Ngi ta goi khim khuyt (failure) la nhng hin tng bt thng xay ra lam
h thng ang thc thi dn n nhng hiu qua khng phu hp vi c ta ban
u. Mt khim khuyt co th xay ra do phn cng hoc do mt sai sot trong
chng trnh. Sau y, ngi ta ch quan tm n nhng khim khuyt do li
phn mm gy nn.

Th nghim chng trnh

103

Trong nhng iu kin s dung a cho, s xut hin thng xuyn cac khim
khuyt do cac sai sot khac nhau gy ra la rt bin ng : mt s sai sot gy ra
thng xuyn cac khim khuyt, nhng sai sot khac th rt him, co th khng bao
gi xay ra trn thc t.
Vic thc thi mt phn mm vi mt d liu c nh trc la mt qua trnh co
tnh xac nh gy ra hoc la mt kt qua ung, hoc la mt khim khuyt. Nu
ngi ta trong nhng iu kin s dung chng trnh, mi d liu co th c
cua chng trnh se cho mt xac sut nao o.
Tp hp cac d liu cung xac sut s dung nh vy c goi la mt mu s
dung (use pattern) cua chng trnh. T mt mt ct s dung a cho, ngi ta
nh ngha xac sut mt ln chay cho mt kt qua ung va xac sut mt khim
khuyt, con c goi la ty sut khim khuyt.
Vi mt m hnh c lp vi thi gian, ngi ta nh ngha tin cy
(reliability) cua mt chng trnh nh la xac sut cua s kin ln chay sau cua
chng trnh la ung , ngha la 1,xac sut cua mt khim khuyt.
Vi mt m hnh phu thuc thi gian, ngi ta nh ngha tin cy nh la
mt xac sut cua s kin chng trnh chay ung n trong thi gian t. Luc nay
tin cy la mt ham cua thi gian.
Cac m hnh phu thuc vao thi gian thng c s dung cho cac phn mm
tng h (nh la cac h iu hanh). Tip theo y, ngi ta se ch khai trin cac
m hnh c lp vi thi gian.
Khi xut hin mt khim khuyt, nu la mt khim khuyt v phn cng, th
phai sa cha, nu la mt khim khuyt v phn mm th phai chay trnh sa li
debugger.
Sa cha cac h hong thuc v phn cng la thay th nhng chi tit h
hong, thit lp lai s vn hanh n nh cua thit b nh trc. Con chay trnh
debugger la sa cac li v thit k, tng tin cy cua phn mm.
Thng ngi ta s dung ai lng lin quan n tin cy la s ln s dung
trung bnh cho n khi xay ra khim khuyt (i vi m hnh c lp vi thi
gian), hoc s dung sau mt thi gian trung bnh nao o n khi xay ra khim
khuyt (i vi m hnh phu thuc vao thi gian).
ai lng lin quan n tin cy MTTF (Mean Time To Failure : thi gian
trung bnh xay ra khim khuyt) c tnh nh sau :
Trong m hnh c lp vi thi gian :
n nh

= xac sut mt ln chay ung.


= 1 - xac sut mt khim khuyt.

TS. PHAN HUY KHANH bin soan

103

104

Cng ngh Phn mm


MTTF

= s ln s dung trung bnh cho n khi xay ra


khim khuyt.
= 1 / xac sut mt khim khuyt.
= 1/ (1 - n nh).

Ty sut khim khuyt la nghch ao cua MTTF.

II.5.2. c lng n nh cua mt phn mm


c lng n nh hay kha nng vn hanh thng sut (reliability) cua
mt phn mm, ngi ta cn c vao kt qua cua cac phep th nghim thng k,
ngha la cac th nghim ngu nhin thuy theo mu s dung a chon.

a) Phng phap trc tip


Gia thit rng trong khi tin hanh n phep th, ngi ta gp d khim khuyt.
Ta co th c lng n nh cua phn mm ang xet bi biu thc :
1d/n
Phng phap nay ch co th a ra mt c lng tt v n nh nu s cac
khim khuyt d la co ngha (chng han tin cy la 1 nu khi th nghim khng
xay ra khim khuyt nao, iu nay khng co ngha).
Hn na, nu sau khi th nghim, ma chay trnh debugger, th chng trnh se
b thay i va vic c lng se ch con hp thc mt cach co iu kin khi gia
thit v cht lng cua qua trnh debugger.

b) Phng phap th nghim gia thuyt (Hypothesis Testing)


Vn la xy dng mt tp hp cac phep th nghim ma kt qua c n nh
trc cho phep khng nh hay bac bo n nh cua phn mm ang xet co mt
gia tr R vi mt tin cy x%. R va x thoa man :
0 < R < 1 va 0 < x < 100
Cac tham s R va x cung nh quy cach v kt qua c c nh trc. Ngi ta
noi chng trnh la c kim nghim nu co n nh R.
Cho c = x/100, ta co :
1 c = xac sut cho mt san phm co n nh thp hn n nh R.

CHNG 5

c ta phn mm
I. M u c ta phn mm
I.1.

Khai nim v c ta phn mm

I.1.1. c ta phn mm la g ?
c ta (specification) c nh ngha trong t in ting Vit (1997) : M ta
tht chi tit mt b phn c bit tiu biu lam ni bt ban cht cua toan th.
Theo Computer Dictionary cua Microsoft Press (1994), c ta la s m ta chi
tit : V mt phn cng, c ta cung cp thng tin v cac thanh phn, kha nng va
yu t ky thut cua may tnh. V mt phn mm, c ta m ta mi trng hoat
ng va chc nng cua chng trnh.
Theo IBM Dictionary of Computing (1994), c ta la (1) mt dang thc vn ban
chi tit cung cp cac m ta xac nh v mt h thng nhm phat trin hay hp
thc hoa. (2) Trong lnh vc phat trin h thng, c ta la m ta cach thit k, cach
b tr thit b va cach xy dng chng trnh cho h thng.
Nh vy, c ta la s m ta cac c trng nhm din at cac yu cu va cac
chc nng cua mt san phm phn mm cn thit k. c ta lin quan n cac i
tng, cac khai nim va cac thu tuc nao o cn n khi phat trin chng trnh.
c ta co cac c trng :

Tnh chnh xac (Correctness)

Tnh tru tng (Abstraction)

Tnh cht che v mt Toan hoc (Rigorousness)

I.1.2. Cac phng phap c ta


Ngi ta thng s dung 3 phng phap c ta : c ta phi (khng) hnh thc,
c ta hnh thc va c ta hn hp.
c ta phi hnh thc (informal specification) c din at bng ngn ng t
nhin va toan hoc. Tuy phng phap c ta nay khng cht che nhng d hiu va
d din at. Ta thng s dung khi cn phat biu cac bai toan, cac yu cu ban
u.

TS. PHAN HUY KHANH bin soan

105

106

Cng ngh Phn mm

V du 1 :
1. Tm nghim cua phng trnh f(x) = 0 vi f(x) la mt a thc co bc cho trc
sao cho vi gia tr thc x th f(x) co gia tr bng 0.
2. Bin i mo mt ma trn vung A cp n n v dang tam giac trn, ngha la
ma trn A co cac phn t nm pha trn ng cheo chnh th bng 0.
c ta hnh thc (formal specification) c din at bng ngn ng ai s va
logic toan, rt cht che, chnh xac va khng nhp nhng (non-ambiguous).
V du 2
1. Tm nghim cua phng trnh f(x) = 0 vi f(x) la mt a thc co bc cho trc
sao cho vi gia tr thc x th f(x) co gia tr bng 0.
2. Bin i mo mt ma trn vung A cp n n v dang tam giac trn, ngha la
ma trn A co cac phn t nm pha trn ng cheo chnh th bng 0.
Cac tnh cht cua c ta hnh thc

c ta m ta nhng cai phai lam nhng khng phai m ta lam nh th


nao.

Lp trnh th hin tng minh vic la chon cach khai trin : nghin cu
thut giai, cach vit cng thc...

c ta cho phep din ta y u mt vn , giam ti thiu tnh phc tap


cua h thng ang xet.

c ta phai cho phep kim tra c qua trnh phat trin phn mm (cht
lng va tnh tin cy)

c ta hnh thc lin quan n :


- Cu truc d liu va cac ham (kiu d liu)
- Thi gian
- Thao tac
- n th hay i tng.
Tnh ai s cn c trn vic nh ngha cac kiu d liu, tnh hiu qua ai s
c xac nh bi cac cng cu toan hoc, ai s va logic.
c ta hn hp (Mixing Specification) phi hp gia hai phng phap : hnh
thc va phi hnh thc. Thng m ta phi hnh thc nhm lam giai thch ro hn, d
hiu hn mt khi m ta hnh thc qua phc tap.

I.1.3. Cac th du minh hoa


M ta cac cu truc d liu :
Cho ma trn vung A cp n n, n 1 :

107

c ta

A = {ai j | i = 1..n, j = 1..n} gm cac phn t ai j hang i, ct j


Bn nh (goc) cua ma trn A la a11, a1n, ann va an1
ng cheo chnh la vector d1 = {aii | i = 1..n}
ng cheo phu la vector d2 = {ai, n - i + 1 | i = 1, n}
Phn t ai j i xng vi aj i qua ng cheo chnh d1
Phn t ai j i xng vi an - j + 1 qua ng cheo phu d2
Ma trn tam giac trn :
A0 = { ai j | ai j 0, i = 1..n, j = i..n ai j = 0, i = 2..n, j = 1..i - 1 }
Ma trn tam giac di :
A0 = { ai j | ai j 0, i = 1..n, j = 1..i ai j = 0, i = j..n - 1, j = 2..n }

I.2.

c ta va lp trnh

Trong nhng trng hp co th, ngi ta hng c ta v mt ngn ng lp


trnh nao o. V du v c ta qui cho bai toan thap Ha ni (Tower of Hanoi).
Cho chng n a n = 64 xp thanh hnh thap ct A (ln nht di cung va nho
dn ln trn). Hay chuyn chng n a nay qua ct B theo nguyn tc sau :
1. Mi ln ch di chuyn mt a t ct nay qua ct kia
2. Khng t a to ln a nho
3. Ly v tr ct C t tam cac a trung gian
Sau y la bai toan Thap Ha ni vi n = 3 a.

Hnh 5.1. Chng a trc khi chuyn

Hnh 5.2. Chng a sau khi chuyn (vi7 ln xp)

TS. PHAN HUY KHANH bin soan

107

108

Cng ngh Phn mm

a) Cach giai phi hnh thc


Chuyn n - 1 a t A qua C ly B lam ct trung gian, sau o chuyn a di
cung t A sang B. Tip tuc chuyn n - 1 a t C qua B ly A lam ct trung gian
theo cach trn.

b) Cach giai hnh thc bng c ta


Goi thu tuc chuyn n a t A qua B ly C lam trung gian (n > 0) la :
Ha_ni (n, A, B, C)
va thu tuc chuyn mt a t A qua B la :
Chuyn_mt_a(A, B).
Khi o, ta co c ta :
Ha_ni (n, A, B, C) = if n > 0 then begin
Ha_ni (n - 1, A, C, B);
Chuyn_mt_a (A, B);
Ha_ni (n - 1, C, B, A)
End
ta d dang vit cac thao tac trn thanh thu tuc nh sau :
Procedure ChuynCt(n, A, B, C: TnCt);
Begin
if n>0 then begin
ChuynCt(n-1, A, C, B);
Chuyn_mt_a_t_A_sang_C;
ChuynCt(n-1, B, A, C);
End
End;
Thao tac Chuyn_mt_a_t_A_sang_C; c vit thanh lnh :
Writeln(Chuyn mt a t , A:1, -> , C:1);
Thm bin m i tnh s bc chuyn a, chng trnh y u nh sau :
Program HanoiTower;
Type TnCt = 1 .. 3;
Var i, N: Integer;
Procedure ChuynCt(n, A, B, C: TnCt);
Begin
if n>0 then begin
ChuynCt(n-1, A, C, B);
i:=i+1;
Writeln(i:3,Chuyn mt a t ,A:1, -> ,C:1);
ChuynCt(n-1, B, A, C);
End
End;
Begin
Write(S a cn chuyn : );

109

c ta

Readln(N);
i:=0;
ChuynCt;
Readln
End.
Chay chng trnh trn se cho kt qua nh sau :
S a cn chuyn : 4
1.Chuyn mt a t 1 -> 2
2.Chuyn mt a t 1 -> 3
3.Chuyn mt a t 2 -> 3
4.Chuyn mt a t 1 -> 2
5.Chuyn mt a t 3 -> 1
6.Chuyn mt a t 3 -> 2
7.Chuyn mt a t 1 -> 2
8.Chuyn mt a t 1 -> 3
9.Chuyn mt a t 2 -> 3
10.Chuyn mt a t 2 -> 1
11.Chuyn mt a t 3 -> 1
12.Chuyn mt a t 2 -> 3
13.Chuyn mt a t 1 -> 2
14.Chuyn mt a t 1 -> 3
15.Chuyn mt a t 2 -> 3
Trong trng hp tng quat n a, s bc chuyn a se la :
20 + 21 + . . . + 2n = 2n - 1 ln.
Vi n=64, gia s thi gian chuyn mt a la t giy, th thi gian chuyn
ht 64 a cua bai toan Thap Ha ni se la :
(264 - 1) t = 1.8446744074E+19 t giy.
Mt nm co 365 24 60 60 = 31 536 000 giy, gia s t = 10-2 giy th s
nm cn chuyn 64 a la :
(1.8446744074E+19 / 31536000) 10-2 = 5.8494241735E+11 5.8 ty nm !
Bai tp : 1, 2, 3, 4, 5 trang 140-141 (Nguyn Xun Huy).

II. c ta cu truc d liu


II.1.

Cu truc d liu c s vect

II.1.1. Dn nhp
Cho mt cun t in. Cn tra cu mt t mt trang nao o bt ky :
Duyt ln lt cac t, t u t in, cho n khi gp t cn tra cu, goi la tm
tun t (ging tp tun t)

TS. PHAN HUY KHANH bin soan

109

110

Cng ngh Phn mm

Nu t im a c sp xp ABC, co th tm ngu nhin mt t, sau o tuy


theo t a gp ma tm pha trc hay pha sau t o t cn tra cu.
Co th xem t in la mt vect cho phep tm kim ngu nhin mt t.
Trong tin hoc, b nh may tnh cung xem la mt vect gm cac nh lu tr d
liu

II.1.2. c ta hnh thc


Cho mt tp gia tr E va mt s nguyn n N.
Mt vect la mt anh xa V t khoang I N vao E.
V : I E, I = [1..n], n la s phn t cua V, hay kch thc.
V co th rng nu n = 0
Ky hiu vect bi (V[1..n], E) hoc E : V[1..n], hoc V nu khng co s hiu
nhm.
Mt phn t cua vect la cp (i, V[i]) vi i [1..n], n gian ta vit V[i].
Mt vect co th c biu din bi tp cac phn t cua no :
(V[1], V[2], ..., V[n]) hay (x1, x2, ..., xn) nu xi = V[i], la cac gia tr (trc kin)
Vect con : Ta goi thu hep cua V trn mt khoang lin tip cua [1..n] la vect
con cua V[1..n] : V[ i..j], j > i, rng nu i > j
V du : V[1..5] = (7, 21, -33, 6, 8)
Cac vect con : V[2..4] = (21, -33, 6)
V[1..3] = (7, 21, -33) v.v...

II.2.

Truy nhp mt phn t cua vect

Cho V[1..n]. Vi i [1..n], phep truy nhp V[i] se cho gia tr phn t co ch s
i cua V. Kt qua khng xac nh nu i [1..n]
V du : V[1..5] = (7, 21, -33, 6, 8)
V[2] = 21, V[4] = 6 nhng V[0], V[7]... khng xac nh.
Vect c sp xp th t (SXTT)
Ta noi :
- Vect rng (n = 0) la vect c SXTT.
- Vect ch gm 1 phn t (n = 1) la vect c SXTT.
- Vect V[1..n], n > 1 la vect c SXTT nu
i [1..n - 1], [i] [i + 1]
Co th nh ngha qui 3 :

111

c ta

V[1..i] c SXTT, V[i] V[i + 1] V[i..i + 1] c SXTT, vi i [1..n - 1]


Mt s ky hiu khac :
a V[1..n] j [1..n], a = V[j]
a V[1..n] j [1..n], a V[j]
a < V[1..n] j [1..n], a < V[j]
Ta cung co cho cac phep so sanh , >, , = va .
xet cac thut toan x ly vect, ta s dung m ta d liu :
Const n = 100 ;
Type
Vect = anay [1..n] of T ;
{T la kiu cua cac phn t cua vect}

II.3.

Cac thut toan x ly vect

Duyt vect
Cho V[1..n], thut toan duyt vect c vit quy nh sau :
Procedure scan (V: vect; i, n: integer);
Begin
if i < = n then begin
Operation (V[i]);
Scan (V, i + 1, n) {i := i + 1; nu bo qui }
end
end;

II.3.1. Truy tm tun t mt phn t cua vect (sequential search)


a) Vect khng c sp xp th t
Lp lun gia s a x ly i - 1 (1 < i n + 1) phn t u cua V va khng nh
rng phn t V[1..i - 1]
Xay ra hai trng hp :
i = n + 1 : phn t V[1..n], kt thuc, phn t V
i n : lai xay ra hai trng hp :
V[i] = phn t : phn t V[1..i], kt thuc, phn t V
V[i] phn t : phn t V[1..i], tip tuc i := i + 1
va cho phep khng nh lai phn t V[1..i - 1]
Ta vit thut toan khng qui nh sau :
function check(V: Vect; n: integer; phnt: T): Boolean;
{(n > 0) (check, phnt V)} (not check, phnt V)}
Var i: integer;
TS. PHAN HUY KHANH bin soan

111

112

Cng ngh Phn mm


begin
i:= 1; {phnt V[1..i - 1], i n}
while (V[i] <> phnt) and (i < 1) do
{phnt V[1..i], i < n}
i := i + 1; {phnt V[1..i - 1], i n}
{((V[i] = phnt) (i = n), phnt V[1..i - 1],
i n) (V[i] = phnt, phnt V)
(V[i] phnt, phnt V)}
Check := (V[i] = phnt)
{(check, phnt V) (Not check, phnt V)}
end;
Ta co th vit lai thut toan di dang quy nh sau :
function check(V:Vect, i,n:integer; phnt: T): Boolean;
{n 0 check, phnt V[i..n])
(Not check, phnt V[i..n])}
begin
if i > n then check := false
else if V[i] = phnt then check := true
else check := check (V, i + 1, n, phnt)
end;
Khi goi ham, i co th nhn gia tr bt ky, t 1..n, c bit i = 1
Trng hp duyt vect t phai qua trai, ta khng cn dung bin i na :
function check (V:Vect; n: integer; phnt: T): Boolean;
{n 0 (check, phnt V) V (Not check, phnt V)}
begin
if n = 0 then check := false
else if V[n] = phnt then check := true
else check := check (V, n - 1, phnt)
end;

b) Vect c sp xp th t
Ta cn tm ch s i [1..n] sao cho thoa man :
V[1..i - 1] < phnt V[i..n]
1

V[1..i - 1] < phnt

phnt V[i..n]

Hnh 5.3. Vect c sp xp th t


Vn la kim tra ng thc phnt = V[i] khng trong V a c sp xp ?
Lp lun :

113

c ta

Gia s a x ly i - 1 (1 i n + 1) phn t u cua V va V[1..i - 1] < phn t a


c khng nh : xay ra hai trng hp :
i = n + 1 : kt thuc V[1..n] < phn t, phn t V
i n : lai co hai trng hp mi :
V[i] phn t : kt thuc, a tm c i sao cho
V[i..i -1] < phn t V[i..n]
ch con phai kim tra phn t = V[i] ?
V[i] <phn t : co ngha V[1..i] < phn t, tip tuc thc hin : i := i + 1 co lai
khng nh V[1..i - 1] < phn t
Ta co thut toan nh sau :
function checknum(V:vect; n:nguyn; phnt:T): Boolean;
{V c SXTT, n > 0 (checknum, phn t V)
(Not checknum, phnt V)}
Var i: integer ;
begin
if phn t > V[n] then
checknum := false { not checknum, phnt V)}
else begin {phnt V[n]}
i := 1 ; {V[1..i - 1] < phnt }
while (V[i] < phnt) do {V[1..i] < phnt }
i := i + 1 ; {V[1..i] < phn t}
{V[1..i - 1] < phnt, V[i] phnt }
checknum := (V[i] = phnt)
{(checknum, phntV) (checknum, phntV)}
end {(checknum, phntV) (checknum, phntV)}
end;

II.3.2. Tm kim nh phn (Binary search)


a) Phng an 1
Gia s vect V[1..n] (n > 1) a c sp xp th t :
i [1..n - 1], V[i] V[i +1]
Ta chia V thanh 3 vect con V[1..m - 1], V[m..m] va V[m + 1..n] c sp xp
th t sao cho :
V[1..m - 1] V[m] V[m + 1..n]
Xay ra 3 trng hp :
V[1..m - 1] nu phn t < V[m]
phn t = V[m]
V[m + 1..n] nu phn t > V[m]

TS. PHAN HUY KHANH bin soan

113

114

Cng ngh Phn mm

luc nay ta tr lai bai toan a xet : tm phn t trong vect V[1..m - 1] hoc V[m
+1..n]. Kt thuc nu phn t = V[m]
Mt cach tng quat, ln lt xac nh day cac vect co V1, V2, ..., Vk sao cho mi
Vi co kch thc nho hn kch thc cua vect con trc o Vi - 1
y rng nu chon V1 = V[1..n], V2 = V[2..n], ..., Vk = V[k..n], ta i n phep tm
kim tun t a xet trn.
Ta se chon m la v tr gia (nu n le) cho V[1..m - 1] va V[m + 1..n] co kch
thc bng nhau, hoc chon m sao cho chung hn kem nhau mt phn t.
Khi o kch thc cua cac vect thuc day V1, V2, ..., Vk se ln lt c chia i
tai mi bc : n, n/2, ..., n/2k - 1.
Nh vy, se co ti a [ log2n] vect con khac rng.
V du : nu n = 9000, s vect con khac rng ti a se la 13, v 213 = 8192
Xy dng thut toan :
Sau mt s bc, ta co vect con V[inf.. sup] sao cho :
V[1..inf - 1] < phnt < V[sup + 1..n]
Xay ra hai trng hp :

inf > sup (inf = sup + 1)


(V[1..inf-1] < phnt < V[sup+1..n], inf = sup+1) (phn t V, kt thuc)

inf sup : m = (inf + sup) div 2

khi o ta co V[inf..m - 1] V[m] V[m + 1..sup]


Tn tai 3 kha nng nh sau :

Phn t = V[m] : kt thuc, phn t V

Phn t < V[m] : tip tuc tm kim trong V[inf..m - 1]


ly sup := m - 1 co lai khng nh phn t < V[sup + 1..m]

Phn t > V[m] : tip tuc tm kim trong V[m + 1..sup]


ly inf := m + 1 co lai khng nh V[1..inf - 1] < phn t

Nh vy ca hai trng hp : V[1..inf - 1] < phn t < V[sup + 1..n]


Khi u, lu inf := 1 va sup := n
Ta co thut toan nh sau :
function binary
{V c SXTT
Var inf, sup, m
OK : Boolean ;
begin
OK : false ;

(V:vect; n:integer; phnt:T): Boolean;


(binary, phntV)(not binary, phntV)}
: integer ;

{not OK, phn t V}

115

c ta

inf := 1 ; sup := n ;
{V[1..inf - 1] < phnt < V[sup+1..n]}
while (inf sup) and (not OK) do begin
m := (inf + sup) div 2 ;
if V[m] = phnt then OK := true {OK, phnt V}
else {not OK}
if V[m]<phnt then inf:= m+1 {V[1..inf-1]<phnt}
else sup := m - 1 ; {V[sup + 1..n] > phnt}
{(V[1..inf - 1] < phnt < V[sup + 1..n], not OK)
(tm thy, phnt V)}
end;
{(inf = sup + 1) (tm thy),
( tm thy, V[1..inf - 1] < phnt < V[sup + 1..n])
(tm thy, phnt V)
( tm thy, V[1..inf - 1] < phnt < V[inf..n])
(tm thy, phnt V)
( tm thy, phnt V) (tm thy, phnt V)}
Nh phn := OK
end ;
Vit chng trnh trn di dang quy :
function NhPhn(V:Vect;inf,sup:integer;phnt:T):boolean;
{(V c SXTT (NhPhn, phntV) NhPhn,phntV)}
Var m : integer ;
begin
if inf > sup then NhPhn:= false
else begin
m := (inf + sup) div 2 ;
if V[m] = phnt then NhPhn:= true
else if V[m] < phnt then
NhPhn:= NhPhn(V, m+1, sup, phnt)
else NhPhn:= NhPhn(V, inf, m - 1, phnt)
end
end ;
Ham nay co th c goi vi cac gia tr inf, sup bt ky, thng thng c goi
bi dong lnh :
NhPhn (V, 1, n, phnt)

b) Phng an 2
Co th tm ra nhng phng an khac cho thut toan tm kim nh phn. Chng
han, thay v kim tra ng thc V[m] = phnt, ta kim tra khng nh :
V[1..inf - 1] < phnt V[inf..n]
Ssau o kim tra phnt = V[inf] co cu tra li.

TS. PHAN HUY KHANH bin soan

115

116

Cng ngh Phn mm

Mt khac, co th thay i gia tr tra v cua ham tm kim nh phn bi v tr


cua phn t trong vect, bng 0 nu phn t V.
Nu inf = 1, khng nh co dang V[1..0] < phnt V[sup..n] va c vit gon
phnt V[1..n].
function NhPhn(V:vect;n:integer;phnt: T): integer ;
{(V c SXTT, n > 0) (m [1..n]
NhPhn = m, V[m] = phnt) V (NhPhn = 0, phn t V)}
Var m, inf, sup : integer ;
begin
if phn t > V[n] then nh phn := 0
else begin
inf := 1 ; sup := n ;
{V[1..inf - 1] < phnt V[sup..n]}
while inf < sup do begin
m := (inf + sup) div 2 ;
if phnt V[m] do sup := m {pht V[sup..n]}
else inf := m + 1 {V[1..inf - 1] < phn t}
{V[1..inf - 1] < phn t V[sup..n]}
end ;
{(inf = sup, V[1..inf - 1] < phn t V[inf..n]
(V[1..inf - 1] < phnt V[inf..n]}
if phnt = V[inf] then NhPhn:= inf
else NhPhn:= 0
end
end ;

117

c ta

III. c ta ai s : m hnh hoa phat trin phn mm


(Phn nay ch phuc vu tham khao)

III.1. M u
c ta ai s khng m ta cac yu t lin quan n thi gian thc thi cung nh
trang thai.
Ngn ng c ta trang thai lin quan n :
- Ng ngha (Semantic)
- Cu phap (syntax)
- Cac thuc tnh (Properties)
Hnh ve
Ng ngha cua cac c ta ai s lin quan n :
- Du k (signature) cua mt kiu ai s tru tng
- Hang (term) vi cac bin
- Phng trnh va cac tin
- Cac m hnh c bit ...
Cu phap cua c ta ai s
V du :
Xy dng kiu string cho cac xu ky t cung cac phep toan thng dung trn
xu nh sau :
- Tao xu rng mi (phep toan new)
- Ghep xu (append)
- Thm mt ky t vao xu (add to)
- Ly dai xu
- Kim tra xu rng (is empty)
- Kim tra hai xu bng nhau khng (=)
- Trch ky t u tin cua xu (frist)
nh ngha kiu string, ngi ta con s dung cac kiu sau :
- char : kiu cua ky t
- nat : kiu cua s nguyn
- bool : kiu gia tr logic

TS. PHAN HUY KHANH bin soan

117

118

Cng ngh Phn mm

Tn cac tp hp va cac phep toan trn tp hp xac nh mt ky du (signature).


Nh vy mt du k c xy dng t :
- Tn cac kiu c ta
- Tn cac phep toan vi vic ch ro min xac nh (domain) va min tr (range)
nh sau :
tn phep toan : min xac nh min tr
Ta xy dng du k t kiu string nh sau
Adt String ;
Use char, Not, Bool ;
Sorts string ;
Operations
new : string ;
append _ _ : String, string string ;
add _ to _ : char, string string ;
# _ : String not ;
is empty ? _ string bool ;
_ = _ : string, string bool ;
frist _ : string char ;
Tn xut hin trong mt du k gm hai loai la co ch (internest) va b tr
(auxiliary) tuy theo vai tro cua chung. V du :
- String la co ch
- Char, not va bool la b tr
Cu phap (cp)
Cp c ta ai s s dung trong v du trn c chia ra thanh cac khi : u,
giao tip va thn cua c ta. Mi khi gm mt s khai bao ngn cach nhau bi cac
t khoa (co gach chn)
i vi khi giao tip (interface), ngi ta s dung cac khai nim tin t
(prefix), trung t (infix) va hu t (postfix) nh sau :
Tin t : tn cua phep toan c t trc day cac tham bin
V du : appenend _ _ : string, string string ;
T o ngi ta co th vit cac hang di dang :
append x y hay
append (x y) hay
(append x y)
Trung t : cho phep nh ngha toan t hay v t
V du _ = _ : string, string bool ;
t o co th vit cac hang di dang :

119

c ta

x = y hay (x = y)
Hn hp : cho phep vit cac biu thc bt ky mt cach mm deo nh add_to_ :
char, string string
t o co th vit cac hang di dang :
add c to append (x y)
Trong nhiu trng hp trn y, cac cp du ngoc du c dung phn
cach cac hang vi nhau

III.2. Phn loai cac phep toan


Cac phep toan c chia ra thanh 2 loai :
Loai quan sat c (oprations)
Loai phat sinh (generator operations)
Loai quan sat c co cac dang sau :
Kiu co ch [va kiu b tr] Kiu b tr
V du :

_ = _ : string, string bool;

# _ : string not ;
is empty ? : string bool ;
first _ : string char ;
Loai phat sinh co dang :
Kiu co ch [va kiu b tr] Kiu co ch
V du :
new : _ string ;
add_ to _ : char, string string ;
y, phep toan new tao ra mt xu rng, con phep toan add _ to _ thm mt
ky t vao xu.
Cac tin c xy dng t cac phep toan dung cho cac kiu b tr gia s
c nh ngha nh sau :
true :

bool ;

false :

bool ;

not _ : bool

bool ;

_ and _ : bool, bool bool ;


_ or _ : bool ; bool bool ;
0 : not ;

TS. PHAN HUY KHANH bin soan

119

120

Cng ngh Phn mm


1 : not ;
succ : not not ;
_ + _ : not, not not :
_ - _ : not, not

not :

_ * _ : not, not

not :

_ / _ : not, not

not :

_ = _ : not, not bool;


a : char ;
b : char ;
...
_ = _ : char, char bool ;

III.3. Hang va bin


Trong c ta ai s, cac bin c nh kiu va co th nhn gia tr tuy y tuy
theo kiu a nh ngha. V du : khai bao kiu x : string ; y : string ; c : char ; nh
ngha cac bin x, y, c s dung trong cac hang sau y :
add c to x = append (x y)
append (is empty ? (new), add x to x)
Hang la mt biu thc nhn c t vic t hp lin tip cac phep toan cua
singnature (du k). Mt hang la hp thc nu hang o thoa man cac phep toan a
s dung (kiu va v tr). Qui tc quy nap c dung xy dng tp hp cac hang
+ co kiu s c vit t : s c nh ngha nh sau :
+ : s1, s2, ..., sn s t1 : s1, t2 : s2, ..., tn : sn
(f t1 t2 ... tn) : s
trong o s dung quy tc khai bao kiu bin
x:s
T o, hang hp thc trong hai hang t v du va xet la
add c to x = append (x y)

III.4. Phep th cac hang


Phep th (substitutions) la mt phep toan trn cac hang cho phep thay th cac
bin (co mt) trong cac hang bi cac hang khac. Tp hp cac bin FV xut hin
trong mt hang c nh ngha mt cach quy nh sau :
FV (ft1t2 ... tn) = FV (t1) FV (t2) ... FV (t2) ... FV (tn)

121

c ta

FV (x) = {x}
V du : FV (append (is empty ? (new), add c to x)) = {x, c}
Phep th trong mt hang t cho cac thanh phn cha bin x bi hang u, ky hiu
t [u /x], c nh ngha nh sau :
Vi x FV (t) th
(f t1 t2 ... tn) [u/ x ] = (f t1 [u/ x] t2 [u/ x] ... tn [u/ x])
y [u/ x] = u

y=x

=yyx
V du : append ( is empty ? (new), (add c to x)) [(add c to y) / x]
= append (is empty ? (new), (new), ( add c to ( add c to y)))
M ta cac thuc tnh qua cac phng trnh
Cac tin s dung trong c ta c xy dng theo logic v tr bc 1 dang
phng trnh (pt)
Mt phng trnh hp thc co v trai va v phai cung kiu hang :
AX spec = {t = t | t : s t : s}
Trong v du v a kiu string, phep toan is empty ? c nh ngha theo
phng trnh :
is empty ? (new) = true ;
Co ngha mt xu va mi tao ra la rng - sau o, vic thm mt ky t mi vao
xu se cho kt qua la false :
is empty ? (add c to x) = false ;
Tnh quy cua phng trnh :
append (x, add c to y) = add c to (append (x, y)) ;
ch ra rng vic ghep mt xu vi xu c tao ra bng cach thm mt ky t
vao xu nay th cung co gia tr nh ghep hai xu trc ri sau o thm mt ky t
vao xu kt qua. iu o hp ly v ta co tnh cht cua phng trnh :
append (x, new) = x ;
ngha la ghep mt xu nao o vi xu rng cung cho ra kt qua chnh xu o
Ta co cac tin v xu ky t nh sau :
Axioms
is empty ? (new) = true ;
is empty ? (add c to x) = false ;
# new = 0 ;
# (add c to x) = x (x) = + 1;
TS. PHAN HUY KHANH bin soan

121

122

Cng ngh Phn mm


append (x, new) = x ;
append (x, add c to y) = add c to append (x y) ;
(new = new) = true ;
add c to x = true ;
(add c to x = new) = false ;
(new = add c to x) = false ;
(add c to = add d to y) = (c = d) and (x = y) ;
where ...
... where
x, y : string ;
c, d : char ;
end string ;
Cac tin iu kin

Cac tin iu kin tch cc (positive conditional axions) la m rng cua cac
phng trnh, chung la cac mnh Horm v tnh bng nhau, co dang :
t1 = t1 t2 = t2 ... tn = tn t = t
V du : is empty ? (x) = flase first (add c to x) = first (x) ;
is empty ? (x) = true first (add c to x) = c ;

III.5. Cac thuc tnh cua c ta


c ta t ra hai vn sau y :
- Hp thc hoa
- Lng nng chng bac (completude) cua c ta

III.5.1. M hnh lp trnh (trin khai)


Cac m hnh lp trnh m ta cach thc trin khai cua c ta. Co ngha cac
chng trnh tru tng se kim chng cac thuc tnh a trnh bay trong c ta
(thit lp). Tp hp cac m hnh c ta vi cac phep toan kem theo c ky hiu
Mod (spec).
Khai nim lp trnh dn n quan h thoa man ky hiu xac nh tnh trin
khai ung n cua c ta. Ta co :
M Mod (spec) (t, t : s va t = t Ax spec ta co M t = t)
Vi moi tin : t = t cua Ax spec
Mod (spec) t = t M Mod (spec),

c ta

123

M t = t

III.5.2. M hnh c bit


Nhng m hnh chp nhn c bi mt c ta rt phong phu. Sau y la mt
v du v m hnh cho c ta kiu Bool :
Hnh ve
trong hai m hnh A va B trn, c ta kiu Bool thoa man vi cac quy c co
gia tr la cac du x, cac phep toan biu din bi cac quan h gia min xac nh va
min tr.
Chu y rng A cha cac gia tr v ch tng t nh vic s dung 1 byte cho kiu
Bool, con B cha va u (ti thiu) gia tr cn thit tng t nh s dung 1 bit cho
kiu Bool.

III.5.3. M hnh ng d
M hnh nay la mt thng ai s cac hang ng d nh ngha bi cac quy tc
sau y :
- t = t la tin khi o t ~ t
- Phan xa : t ~ t
- i xng : t ~ t t ~ t
- Bc cu : t = t t ~ t t ~ t
- Kha th : (cu thanh - substitutivite)
t1 ~ t1 t2 ~ t2 ... tn ~ tn (ft1t2 ... tn) ~ (ft1t2 ... tn)
- Thay th : cho x la bin, u la hang t ~ t t [u/ x] ~ t [u/ x]
Qua trnh khai trin mt c ta
Khai trin mt c ta la vn kho khn. Nhng nh ngha v cu phap cac
chc nng mong i khng la kho khn nhng tnh ung n cua chung lai khng
kim chng c d dang.

III.6. Phep chng minh trong c ta ai s


Muc ch phn nay la ch ra cach chng minh (chng minh) cac thuc tnh
trong cac c ta ai s. Mt thuc tnh cn chng minh co dang mt nh ly, chng
han dang mt phng trnh.
Gia s ta cn chng minh thuc tnh sau y trong c ta cac s nguyn t
nhin dng Not :
succ (0) = succ (succ (0)) = succ (succ (0)))
? succ (0) + succ (0)) = succ (succ (succ (0)))

TS. PHAN HUY KHANH bin soan

123

124

Cng ngh Phn mm


Tin : succ (x) + y = succ (x + y)
Quy tc thay th vi s = {x = 0, y = succ (succ(0))}
succ (0) + succ (succ (0)) = succ (0 + succ(succ (0)))
Tin : 0 + x = x va quy tc thay th vi s = { x = succ (succ (0)))}
0 + succ (succ (0)) = succ (succ (0))
Quy tc thay th vi phep succ trn (2)
succ (0 + succ (succ (0))) = succ (succ (0)))
Quy tc bc cu cho (1) va (3)
5.

nh ly a c chng minh. Cn chu y rng thuc tnh nay la hp thc cho


moi qua trnh c ta s t nhin Not.

III.6.1. Ly thuyttng ng
Ly thuyt tng ng (cua mt c ta) c xy dng t cac tin cua c
ta, la tp hp cac nh ly hp thc qua cac quy tc sau y :
- Phan xa : t = t
- i xng : t = t t = t
- Bc cu : t = t t = t t = t
- Kha th : t = t t2 = t2 ... tn = tn
(ft1, t2, ..., tn) = (ft1, t2, ..., tn)
- Phep th : cho x la bin va u la hang
t1 = t1 t2 = t2 ... tn = tn t = t
khi o t1 [u/ x] = t1 [u/ x] ... tn [u/ x] = tn [u/ x]
t [u/ x] = t [u/ x]
- Phep ct : Cond1 (u = u) cond2 t = t
va cond x = x, khi o :
cond1 cond cond2 t = t
Cac qui tc cua ly thuyt tng ng th hin cac thuc tnh bng nhau (phan
xa, i xng va bc cu), thuc tnh ham (kha th), cac bin (phep th) va thay th
cac v bng nhau (phep ct). Cac quy tc nay xac nh phep suy din EQ, nh
ly sau y minh hoa kch chc chn va tnh ro cua phep suy din
nh ly : ly thuyt tng ng
vi mt c ta spec, t = t, Ax spec EQ t = t
Mod (Ax spec) t = t

c ta

125

Cng thc Mod (Ax spec) t = t ch ra rng phng trnh la hp thc trong
moi cach lp tynh co th. Tuy nhin co th xay ra mt s trng hp c bit khi
m hnh khng hp ly, luc o co th true = false.
Ta co th chng minh rng thuc tnh
succ (succ (0)) - succ (succ (0)) = 0
la hp thc (valid), nhng thuc tnh
succ (succ (succ (0))) - succ (succ (0)) = 0
Khng la hp thc trong c ta ang xet, v rng sau khi suy din, ta nhn
c succ (0) = 0 la khng hp thc.
Ta co th thy rng x - x = 0 khng chng minh c trong ng canh ang xet
mc du nh ly nay to ra hin nhin trong c ta. T o, ta co th b sung thm
mt s gia thit cho m hnh tng kha nng chng minh co th.

III.6.2. Khai nim v ly thuyt quy nap


Nh a ch ra, ta cn thm cac nh ly tng quan hn co kha nng suy din
t cac tin cua c ta, chng han nh x + y = y + x la khng co tnh suy dn
trong ly thuyt tng ng.
Ta se thm vao cac qui tc s dung trong ly thuyt tng ng mt quy tc
mi nh sau :
- Qui nap : gia s G la cng thc sao cho x la mt bin t do, nu vi moi t, G [t/
x] la suy din c th G cung suy din c cho t. Quy tc nay ch ro rng co th
kt lun rngnu vic chng minh mt nh ly la hp thc cho moi trng hp,
nh ngha bi mt hang, bi mt bin th nh ly cung hp thc cho cng thc
c lng hoa mt cach ph dung trn bin nay.
Tng t i vi nh ly tng ng, nh ly sau y cho kt qua thuyt phuc
cho vic suy din quy nap i vi c ta hu han.
nh ly 3.2 : Ly thuyt quy nap
Vi mt c ta ai s spec
t = t, Ax spec Ind t = t
ModGen (Ax spec) t = t
Ta se minh hoa nguyn ly nay bi mt v du trn cac gia tr logic xy dng t
cac phep toan true, false va not. Ta mun chng minh rng :
not (not (b)) = b
- trng hp c s :
? not (not (true)) =not (false) = true ;
2. Not (not (false)) = not (true) = false ;
TS. PHAN HUY KHANH bin soan

125

126

Cng ngh Phn mm


- Khng quy nap :
not (not (b)) = b suy ra not (not (not (b))) = not (b)
quy tc kha th vi not cho not (not (b)) = b
not (not (not (b))) = not (b)

Nh quy tc quy nap ma thuc tnh mong mun c chng minh. Nh vy ly


thuyt quy nap cho phep chng minh tnh giao hoan cua phep cng trong Not qua
x + y = y+ x vic chng minh cn quy nap hai ln trn x va y.

III.6.3. Chng minh t ng bi vit lai


Vic chng minh bi vit lai (demonstration by rewriding) la mt ky thut cho
phep chng minh t ng. o la qua trnh c lng cac hang bng cach vit lai
mt cach h thng cac hang thanh cac dang chun (dang khng th c lc c
na) va phep chng minh cac thuc tnh. Nguyn ly s dung la hng n cac
phng trnh c ta theo quy tc vit lai va ap dung lin tip cac quy tc nay trn
cac hang a c lc.
V du : t tin not true = false ta se dn n quy tc not true ??? false. Quy
tc nay c dung chng minh tnh bng nhau cua dang t = t. S bng nhau la
hp thc nu hai v cua chung c vit lai thanh duy nht mt hang khng th
c lc c na.
nh ly 3.3 Chng minh bi vit lai
Vi mt c ta spect, t, t la cac hang nu
t ??? ... ??? to va t ??? ... to th :
Ax spec EQ t = t
y ta s dung ky hiu t ???* t cho day t ??? ...??? t hay t la mt dang chun
cua hang, ngha la mt hang khng th thu gon.
Cn chu y rng ng thc tao ra bi vit lai khng bt buc ng nht vi ng
thc nhn uc t h thng suy din EQ (khng hoan toan).
co th thc hin cac phep chng minh theo ly thuyt trc y, ta cn nhn
c mt h thng vit lai hi tu tng ng vi h thng sinh bi cac tiu .
Giai phap u tin la hng ti cac phng trnh, Nu h thng nhn c la
i n ch (moi hng suy dn khac nhau co th u dn v cung kt qua) va kt
thuc (sau mt s hu han bc vit lai trc khi nhn c dang chun). T o cac
thuc tnh chng minh c tng ng vi cac phng trnh xut phat.
Chng han c ta Bool, ta cn nhn c bng cach hng cac tin t
trai qua phai :
not (true) ??? false

c ta

127

not (false) ??? true


true and b ??? b
false and b ??? false
true or b ??? true
false or b ??? b
false xor b ??? not (b)
V du : s dung cac quy tc trn vit lai hang sau y :
not (false or (true and false))

not (true and false) not (false or false)

not (false)

true
Tuy nhin, nguyn ly hng v vit lai khng u chng minh moi thuc tnh
tng ng. Ta co th minh hoa iu o trong c ta cac s t nhin mt cach n
gian nh sau :
Interface
Sort not ;
Operations
0 : not ;
_ _ : not not ;
_ + _ : not not not ;
Body
Axions
ax10+x=x;
a x 2 : x + (- x) = 0 ;
...
T c ta trn, ta co th xy dng cac quy tc :
0 + x ??? x
x + (- x) ??? 0
- 0 ??? 0

TS. PHAN HUY KHANH bin soan

127

128

Cng ngh Phn mm

Cn chu y rng trong trng hp nay, vic hng cac quy tc t trai qua phai
cha u, v nu mun chng minh - 0 = 0 th phai cn ap dung tin 1 t phai
qua trai, sau o ap dung tin 2 t trai qua phai, nh vy se khng tng ng
vi vic la chon nh hng ???.
Ro rang vic nh hng la mt c ch chng minh cha y u, c bit i vi
cac tin v cac phep tnh sinh. C ch nay co th y u trong nhiu tnh hung
thc t.
Trong trng hp cac tin khng nh hng nh phep giao hoan, cac ky
thut c ta c phat trin thc hin vit lai (h vit lai kiu modun kt hp giao hoan)
Cac phep toan phat sinh (xy dng)
Theo nh ngha, mt m hnh c phat sinh bi mt tp hp con w cac phep
toan nu moi gia tr cua m hnh nay nhn c bi mt hang c xy dng t
cac b sinh w. nh ngha nay cho phep, theo dnh ly quy nap, ch xem xet cac b
sinh trong cac chng minh bng cach ch chng minh quy napchung (bi v moi
hang at c bi cac vic t hp cac b sinh)

III.6.4. Phn cp trong c ta ai s


Cac m hnh phn th lam thoa man cac tin va cac han ch do cac rang
buc n th chu yu da trn kha nng buc n th. Cac rang buc n th chu
yu da trn kha nngkhng b xao trn gia cac m hnh mc phn cp thp
hn khi s dung mt c ta. Nguyn ly nay cho phep s dung vic phn cp cac
c ta trong cac giai oan khai trin, c bit khi lam mn (refinement). Co ngha
la cac m hnh phai c lp trnh c lp vi nhau.
Cac kiu xao trn co th xut hin trong mt c ta ai s la :
- junk (mang) : cac gia tr c thm vao bi vic dung cac n th, rang buc
v tnh y u han ch kiu xao trn nay.
- cofusion (trn ln) : cac gia tr b thay i (collapse), do rang buc v s hin
hu phn cp lam anh hng n c ta.
Lp cac m hnh phn cp c ky hiu bi Hitol (spec) o la nhng m hnh
thoa man quy tc v s han ch cac m hnh trn cac m hnh con bao toan c
c ng ngha cua chung.
Tnh ro rang (Completude suffisance)
Ta se minh hoa tnh hung junk bng mt v du
Adl Khng_hoan_toan ;
In terface
Use Not, Bool ;

129

c ta

Operation
f : not bool ;
Body
Axioms
f (succ (x)) = false ;
where
x : not ;
End ;
V du trn khng ro rang khi thm nh ngha ham f trn cac n th v not va
bool. Cac tin v n th cua ham f se lam xao trn cac kiu a nh ngha. Ta
thy mt gia tr mi f (0) kiu se khng c xac nh v khng co tin nao ch
ra f (0) la true hay false.

IV. c ta hay cach cu th hoa s tru tng


(Specification or How to Make Abstrations Real)

IV.1. c ta phep thay i b nh


Gia s ta cn c ta phep thay ni dung mt b nh. n gian hoa ma
khng lam mt tnh c biu din bi s sau :
1

b nh ch gm 3 a ch nh cha 3 gia tr luc u u la 0 gia lnh, lam thay


i ni dung cua b nh c ky hiu bi chg (x, y)
V du lnh chg (2, 5) lam thay i a ch th 2 t gia tr 0 thanh 5 :
1

chg (2, 5)

Nh vy, lnh chg (x, y) a thay i ni dung cua a ch x thanh gia tr y va


gi nguyn ni dung cua cac a ch con lai.
Goi q la b nh luc u va q la b nh nhn c sau khi thc hin lnh
chg (x, y), ta co th chuyn s trn thanh dang iu kin nh sau :
q chg (x, y) q

TS. PHAN HUY KHANH bin soan

(1.1)

129

130

Cng ngh Phn mm


Ta noi lnh chg (x, y) a chuyn b nh q thanh q.
nh ngha ng ngha cua lnh chg chnh la c ta, nh vit iu kin tng

ng vi iu kin (1.1)
V du s kt hp cac iu kin sau y c ta phep toan thay i chg :
q (x) = y
q (a) = q (a) nu a x (1.2)
Nh vy ta a ngm n tha nhn rng q va q ch nh cac ham. Trong v du
nay, vi b nh 3 a ch, min xac nh cua ham la tp hp {1, 2, 3} tng quat cac
a ch va min gia tr la cac gia tr co th lu tr c trong b nh ang xet,
(1.3)
chng han la tp hp cac s nguyn {-231, ..., 231}
Mt cach tng quat, goi A la tp hp cac a ch, V la tp hp cac gia tr, ta co:
qAV

(1.4)

Nh vy mt biu thc dang q (a) ch co ngha nu a A, t o q (a) ch co


ngha nu a A, t o q (a) V. Do b nh q nhn c t q sau khi thc hin
lnh chg, q cung thoa man iu kin (1.4)
q A V
Tuy nhin iu kin (1.2) khng phai lun lun co ngha v rng biu thc q (x)
oi hoi x A. Ta thy iu kin (1.1) dn n (1.2) nhng ngc lai khng hoan
taon ung.
Ta co th han ch cac iu kin (1.2) co c iu kin tng ng nh sau
xA
yV
q (x) = y (1.5)
q (a) = q (a) vi x a va x A
Trong (1.5), hai iu kin u c goi la iu kin u (preconditions), hai
iu kin sau c goi la cac iu kin sau (postconditions)
Ta cn kim tra (1.5) la chp nhn c, ngha la co iu kin (1.4) la bt hin
(invariant). Mun vy ta cn chng minh nh ly sau y :
((1.4) va (1.5)) keo theo (1.4) (1.6)
nh ly v tnh chp nhn c (plausibility)
Ta co th ni hai iu kin tng ng (1.1) va (1.5)
q chg (x, y) q
xA
yV

(1.7)

131

c ta

q (x) = y
q (a) = q (a) vi x a va a A
Ngi ta noi q xac nh trang thai (state) cua h thng, mt iu kin nh (1.4)
la mt bt bin cua h thng, (1.7) la c ta lnh lam chuyn (tin trin) trang
thai cua h thng. y ta s dung cac bin co anh du nhay ch trang thai
cua h thng sau khi chuyn i. Ta cung noi mt c ta la chp nhn c
(plausible) nu c ta o bao toan bt bin cua h thng.
Nhn xet
D dang chng minh nh ly (1.6) nhng cung d dang bc lai nh ly bng
cach xet phan v du sau :
1 0

2 0

chg (2, 5)

3 0

Ro rang v du trn thoa man cac iu kin (1.4) va (1.5) nhng khng thoa man
(1.4)
Thc ra, lnh chg (2, 5) thay i ni dung a ch x (cho gia tr y) nhng vn
gi nguyn cac a ch khac, ngha la kch thc b nh khng thay i.

IV.2. Ham
Trn y, ta a vn dung quan im toan hoc v ham, sau y ta tip tuc lam
ro mt s khai nim va tnh cht cua quan im nay.
Cho hai tp hp X va Y, biu thc X X biu din tp hp cac ham toan phn
(total) vi min xac nh (ngun) la X va min tr (ch) la Y. Tng t, biu thc
X Y biu din tp hp cac ham b phn (partical) t ngun X vao ch Y. S
khac nhau gia chung la ch, mt ham b phn khng hoan toan xac nh cho
moi gia tr cua ngun X.
Nu f la mt ham b phn th ky hiu dom (f) (domain) la tp hp con cua X ma
f xac nh. Trong trng hp ham toan phn, mim xac nh va ngun la ng
nht. V du ham q muc trn la ham toan phn vi ngun X = {1, 2, 3} va ch Y =
{-231, ..., 231}, ta co th vit :
q {1, 2, 3} {-231, ..., 231}
Tuy nhin y la mt ham b phn t tp s nguyn Z vao chnh no v cac tp
hp ngun va ch cua q u la tp hp con cua Z.
qZZ
luc nay dom (q) = {1, 2, 3}
TS. PHAN HUY KHANH bin soan

131

132

Cng ngh Phn mm

Ta cung co th xy dng tp hp con cua ch cha cac gia tr xac nh t tp


hp con cua ngun, goi la ran (f) (range)
Khi mt ham c nh ngha, ta co th lit k cac thanh phn cua ham. V du,
ta co :
1 0

2 0

chg (2, 5)

3 0

tng ng vi hai ham :


q = { 1 0, 2 0, 3 0 }
q = { 1 0, 2 5, 3 0 }
nhn c cac dom va cac ran t cac ham, ngi ta tp hp cac phn t t
bn trai va bn phai cua mui tn tng ng :
dom (q) = {1, 2, 3}
ran (q) = { 0 }

dom (q) = 1, 2, 3}

ran (q) = { 0, 5 }

Mt cach tng quan, ta co kt qua sau :


dom ({ x y }) = { x }
ran ({ x y }) = { y }
fXY

(2.1)

keo theo

dom (f) = X

Cho ham f X Y va mt tp hp con S X, ngi ta ky hiu f \ S la ham


nhn c bng cach loai khoi dom (f) cac phn t cua S. y la phep han ch
tng ng vi nh ngha sau :
dom (f \ S) = dom (f) - S
(f \ S) (x) = f (x) vi x dom (f) - S
HNH VE
Ta co : { 1 5, 2 8, 3 6 } \ { 1, 2} = { 3 6 } \ { 1, 2 } = { 3 6 }
Cho hai ham co cung ngun va cung ch nhng co cac dom ri nhau. Ky hiu f
g la hp cua hai ham theo nh ngha sau :
dom (f g) = dom (f) dom (g)
f (x) nu x dom (f)
(f g) (x) =

g (x) nu x dom (g)

(2.4)

Bng cach dung hai phep toan trn y, ta co th nh ngha s chng ln


(overload) cua mt ham bi mt ham khac. Ta ky hiu f + g tac ng ln hai ham f
va g co cung ngun va cung ch ma ln nay, cac dom khng nht thit ri nhau :

133

c ta

Ta co : f + g = (f \ dom (g)) g

(2.5)

T (2.3) ta co :
(f \ dom (g)) (x)
(f + g) (x) =

nu x dom (f \ dom (g)

g (x) nu x dom (g)

(2.6)

hay
(f + g) (x) = f (x) nu x dom (f) - dom (g)
g (x) nu x dom (g)
HNH VE
V du : { 1 0, 2 0, 3 0 } + { 2 5 }
= ({ 1 0, 2 0, 3 0 } \ { 2 } { 2 0 }
= { 1 0, 3 0 } { 2 5 }
= { 1 0, 2 5, 3 0 }
Ly do c ban a vao cac phep toan \, va + thay v s dung mt cach h
thng nhng nh ngha cua chung (2.3), (2.4) va (2.7) trong vic hnh thc hoa la
ch t co th chng minh d dang day cac tnh cht ai s se s dung v sau.
Sau y la mt s tnh cht :
(f g) \ S = (f \ G) (g \ S)
(f + g) \ S = (f \ S) + (g \ S)
(f \ S) \ T = f \ (S T)
fg=gf
(f g) h = f (g h)
dom (f g) = dom (f) dom (g)

(2.8)

ran (f g) = ran (f) ran (g)


(f + g) + h = f + (g + h)
dom (f + g = dom (f) dom (g)
By gi ta co th sa cha c ta a nhn c cun muc trc (1.7). c ta
nay ro rang n gian hn :
q chg (x, y) q
xA
yV
q = q + { x y }
nh ly v tnh chp nhn c (plausilility) by gi d dang c chng minh
bi phep tnh hnh thc n gian (simple formal calculus).

TS. PHAN HUY KHANH bin soan

133

134

Cng ngh Phn mm


Theo (2.1) va (2.8), ta co :
dom (q) = dom (q) { x }
ran (q) ran (q) { y }
Nhng ta co gia thit (1.4) vf gia thit (2.8) va theo (2.2)
dom (q) = A va { x } A
ran (q) V va { y } V
Nh vy :
dom (q) = A
ran (q) V
T o theo (2.2) th q A V

IV.3. Hp thc hoa va phuc hi


Trong muc 1, ta a c ta cach hoat ng cua mt b nh trong o, ta co th
thay i ni dung cua no. By gi, ta se tip tuc phat trin v du nay bng cach t
ra hai yu cu b sung ta mun rng nhng thay i trn b nh co c tnh tam
thi, ngha la ta co th thay i tr lai nh mt phep toan thch hp, mt khac ta
co hp thc hoa (validation) bng cach tra lai nhng thay i trc o.
Ta goi not (restart) va vld (validate) la nhng thao tac mi. Nhng yu cu b
sung va nu co th biu din hnh thc bng cach kt hp cac iu kin sau y :
q vld

q1

q1 op

q2

...
qn - 1

op

qn rst

qn

Trong o op (operations) la mt thao tac dang chung (x, y) hay rdm, dn n


iu kin :
q = q
vi q va n bt ky. Va lai, yu cu v tnh trong sut cua phep toan hp thc
hoa dn n iu kin :
q = q
Cach giai quyt hin nhin nht mang tnh y nim la lam tng gp i b nh.
Nh vy trang thai cua h thng by gi c c trng bi hai bin p va q nh
sau :
pAV

135

c ta

qAV

(3.1)

B nh q ongvai tro b nh trc o, con b nh p dung khi phuc trang


thai cu khi cn khi ng lai. Sau y la c ta cua 3 thao tac cho h thng vi
mod thay th chg :
(p, q) mod (x, y) ((p, q)
p = p

(3.2)

q chg (x, y) q
Ta thy thao tac thay i b nh xut hin nh mt s m rng, mc c ta,
cua phep toan chg :
(p, q) rst (p, q)
q = p
q = q

(3.3)

(p, q) vld (p, q)


p = q
q = q

(3.4)

D dang chng minh rng ca ba phep toan nay u chp nhn c, ngha la
sau khi thc hin chung, ta co (3.1). Noi cach khac, p va q c thay th bi p va
q trong (3.1), vi gia thit rng (3.1) a c kim chng trc khi thc hin
chung.
Rt cuc, ta phai chng minh rng vic kt hp cac iu kin sau y :
(p, q) vld (p1, q1)
(p1, q1) op (p2, q2)
...
(pn - 1, qn - 1) op (pn, qn)
(pn, qn) rst (p, q)
dn n q = q
Tht vy, theo (3.4), ta co :
p1 = q
va theo (3.2) va (3.4) do op la mt trong hai phep toan mod (x, y) hoc rst, ta co
:
pn = ... p1
Cui cung, theo (3.3) :q = pn
Ro rang phep hp thc hoa la trong sut v dn n q = q theo (3.4)
Sau y la mt v du v cac phep toan trn :
TS. PHAN HUY KHANH bin soan

135

136

Cng ngh Phn mm


q

1 0

2 0

3 0

mod (1, 1)
1 1

2 0

3 0

mod (2, 2)
1 1

2 2

3 0

mod (1, 3)
1 3

2 2

3 0

vld
1 3

2 2

3 0

mod (3, 1)
1 3

2 2

2 1

not
1 3

2 2

3 0

Phn tip theo se lam mn m hnh nay, ngha la a vao cac bin trang thai
mi th hin cac rang buc v phn cng va phn mm.

137

c ta

IV.4. Bt u trin khai thc tin


V mt thc tin, co nhiu cach trin khai h thng a c c ta trong
muc trc. Tht vy, co nhiu yu t ky thut co th anh hng n cach trin
khai ; chng han kch thc khng gian V cac gia tr ong vai tro quan trong : gia
s rng cac phn t cua tp hp A tng ng vi cac a ch cua cac trang trong
mt h thng co b nh phn trang (paging). Trong trnghp nay, mi gia tr se
tng ng vi ni dung cua mt trang thai co kch thc din hnh la 1 bytes. Nu
nhng trang nay dung th hin mt b nh ao 4 Mbytes, th ta se thy rng co
4096 trang va bi vy thi gian dung thc hin cac sao chep cn thit cho cac
thao tac khi ng va hp thc hoa co th to ra nng n.
Trong trng hp va nu (ta se trin khai thc tin trong muc nay), cach giai
quyt la s dung cach gian tip : hai lab nh p va q tao thanh trang thai cua h
thng a xet trong muc trc, se c thay th bi hai bang (hai ham) a va n (a:
ancient, n : new) cha cac con tro ti b nh m. H thng mi se c c trng bi
cac thanh phn sau :
a

m D

(4.1)

Trong o D la tp hp cac a ch cua b nh m. Sau y la s minh hoa h


thng mi nay :
n
1 2
2 4
3 5
4
5
6

a
2
6
5
8
1
4

m
1
2
3

2
5
5

Trong v du trn, cung trong cac v du trn v sau, ta tip tuc s dung cac gia
tr V nh trc.
Bng cach kt hp cac bang a va n vi m, ta nhn c cac bang p va q cua h
thng cu :
q
1
2
3

p
5
8
1

5
4
1

Nh vy, ta co th thy rng hai h thng khng c lp vinhau : hai h thng


mi hin thc hoa h thng cu va h thng cu th hin s thay i bin nh sau

TS. PHAN HUY KHANH bin soan

137

138

Cng ngh Phn mm


p (x) = m (a (x))
q (x) = m (n (x)) vi x A

(4.2)

Ta co th kim chng ngay c rng nhng thay i cua bin la co y ngha (ro
rang v cac ham a, n va m la toan phn) va cht che vi bt bin (3.1) ch ro rng p
va q du thuc tp hp A V
Phep bin i mod dc ta bi cac iu kin (3.2) se c trin khai bi mt phep
toan mi mod1. Phep mod1 se ghi mt gia tr mi, mt a chma khng thuc vao
min tr (range) cua n cung nh min tr cua a, noi cach khac, a ch nay ch phu
thuc vao tp hp :
ran (n) ran (a)
hay ro hn, thuc tp hp D - (ran (n) ran (0)), tp hp c t tn la L
(Liberty).
Nu L , mt iu kin trc dc t ra, th ta co th chon mt a ch bt
ky u, vi c ta sau :
(a, n, m) mod1 (x, y) (a, n, m)
xA
yV
L
a = a
n = n + { x u }
m = m + { u y }

(4.3)

trong o
L = ran (n) ran (a)
uL
Ta cn chng minh rng c ta (4.3) la chp nhn c, ngha la :
((4.1) va (4.3)) keo theo (4.1) (4.4)
Mnh (4.4) trn y la hin nhin. Tip theo ta cn chng minh phep mod1
phu hp (ung) vi phep mod a c ta (3.2) nh sau :
((4.2), (4.2) va (4.3)) keo theo (3.2) (4.5)
Mnh nay khng hin nhin, tng ng vi s giao hoan di y :
HNH VE
Noi cach khac, nu cac gia tr cua cac bin (a, n, m) va (a, n, m) thoa man c
ta (4.3), th khi tr v cac bin cu (p, q) va (p, q) (cac bin a b thay i tr thanh
cac bin (a, n, m) va (a, n, m) bi cac phep bin i (4.2) va 4.2)) cac gia tr cua
cac bin (p, q) va (p, q) thoa man c ta (3.2).

139

c ta

Noi gon lai, (4.3) hin thc (3.2)


Cac phep toan mi khi tao lai cac hp thc hoa m ta trong cac c ta sau y
ro rang chp nhn c va phu hp :
(a, n, m) rst1 (a, n, m)
a = a
n = n

(4.6)

m = m
(a, n, m) vld1 (a, n, m)
a = n
n = n

(4.7)

m = m
Nhn vao cac cng thc, ta thy a khng chep lai cac gia tr nhng ch co cac
a ch co th co theo mt s tit kim ang k v thi gian nhng khng ln lm
v khng gian nh. Gia thit vi 4096 trang va a ch cua D la 2 bytes, mi bang a
va n se chin 8 Kbytes.
H thng mi hoat ng qua v du sau :
n

1 1

2 2

3 3

mod1 (1, 1)
1 4

L = { 4, 5, 6 }

2 2

u=4L

3 3

(chon u = min (L))

TS. PHAN HUY KHANH bin soan

139

140

Cng ngh Phn mm

IV.5. Phep hp thanh (cu tao)


muc trc, ta a s dung mt cach phi hnh thc phep hp thanh
(composition opertion) cua p va q theo a, m va n. Trong muc nay, ta tip tuc nh
ngha phep hp thanh mt cach cht che hn.
Phep hp thanh, ky hiu la 0, tac ng ln hai toan hang la hai ham, chng f
va g, thuc v cac tp hp X Y va Y Z tng ng, sao cho ham fog thuc v
tp X Z
Phep hp thanh co th c nh nghanh sau :
dom (fog) = { x dom (g) / g (x) dom (f) }
(fog) (x) = f (g (x)) vi x dom (fog) (5.1)
V du :
{ 2 6, 5 8 }o { 1 2, 4 3, 7 5 } = { 1 6, 7 8 }
T nh ngha trn co th suy ra ngay rng nu cac ham f va g u toan phn
(noi cach khac, nu dom (g) = X va dom (f) = Y), th ham fog cung la toan phn.
Mt cach tng quan hn, nu min tr cua g nm trong min xac nh.cua f th hai
ham g va fog co cung min xac nh. Ta co th d dang xy dng mt s lut kiu
ai s ni lin phep hp thanh vi cac phep hi va han ch a xet muc 2. Sau
y la mt s lut nh vy :
(f g) o h= (f o h) (g o h)
f o (g h) = (fog) (f o h)

(5.2)

S rang (g) = keo theo (f \ s) og = fog (5.3)


dom (f) ran (g) = keo theo fog = { }

(5.4)

Biu thc { } ch nh ham rng


f o (g \ S) = (fog) \ S

(5.5)

{xy}o{xu}={xy}

(5.6)

T cac lut trn, ta co th n gian hoa phep thay i bin a nh ngha


(4.2) nh sau :
p=moa
q = m o n (5.7)
Va ta co th chng minh d dang nh ly phu hp (4.5) bng cach s dung cac
tnh cht trn. Tht vy, ta cn chng minh hai ng thc sau y :
m o n = (m o n) + { x y }
m o o = m o a
Ngha la :
(m + { u y }) o (n + { x u }) = (m o n) + { x y }

141

c ta

(m + { u y }) o a = m o a
vi cac gia thit :
u ran (n) ngha la { u } ran (n) =

(5.8)

u ran (a) ngha la { u } ran (a) =

(5.9)

Ta co kt qua phu nh sau :


(m \ { u }) o (n \ { x }) = (( m \ { u }) o n) \ { x } theo (5.5) = (m o n) \ { x }
theo (5.3) va (5.8). Nhng :
{ x y } o (n \ { x }} = { }
theo (5.4), (2.2) va (5.8). Va ta cung co :
(m \ { u }) o { x u } = { }
theo (5.4) va (2.2)
{uy}o{xu}={xy}
theo (5.6)
Nh vy theo (5.2) va (2.5) :
(m + { u y }) o (m + { x u}) = (m o n) \ { x } { x y } = (m o n) + { x y }
Mt khac ta co :
m \ { u } o a = m o a theo (5.3)
{ u y } o a = { } theo (5.4)
Nh vy :
(m + { u y }) o a = m o a theo (2.4) va (5.3)

IV.6. Trin khai th hai


Muc nay se ti u cach trin khai u tin a trnh bay trong muc 4 bng cach
xy dng tp hp L cac a ch t do cua D, tp hp ma ta a chon tuy y mt phn
t u trong c ta phep toan mod1 (4.3).
Y tng thit k cach trin khai th hai nay nm ch gi lai trang thai cua
mi a ch cua D ma a ch nay co th thuc v mt (va ch mt ma thi) trong 4
tp hp ri nhau nh sau :
RN _ RN
RA RN
RN _ RA
RA RN = L
trong o RA = ran (a), RN = ran (n)

TS. PHAN HUY KHANH bin soan

141

142

Cng ngh Phn mm

Tuy theo mt a ch d cua D thuc v mt trong bn tp hp trn, ta noi trang


thai tng ng se la :
old (cu)

d ran (a)

common (chung)

d ran (a) va d ran (n)

new (mi)

d ran (a)

free (t do)

d ran (a) va d ran (n)

Khi mt a ch t do c chon, khi mt thay i xay ra, a ch o chuyn qua


trang thai mi ; v a ch qua tai trong bang n, nu a ch o khng phn chia
bn trong bang n (ngha la nu ham nla n anh va iu nay c gia thit la lun
ung), khi o, a ch se tr nn t do nu ang trang thai mi hoc chuyn sang
trang thai cu nu ang trang thai chung.
Khi mt phep hp thc hoa hay khi ng lai cac a ch t do hay chung vn
nh cu. Cac a ch mi chuyn thanh t do khi mt s khi ng lai va la trng
hp chung khi hp thc hoa.
Cui cung, cac a ch cu chuyn thanh t do khi hp thc hoa va tr thanh
chung khi khi ng lai.Chu y rng cac a ch cu khng lin quan n s thay i.
S di y tom tt mt cach phi hnh thc nhng chuyn i khac nhau nay.
Muc ch hnh thc hoa phng phap nay, ta a vao mt bin mi s nh
ngha trang thai cua mi a ch cua D.
s D {fr, nw, cm, ol}

(6.1)

Ta co bt bin sau y :
RA - RN = adr (ol)
RA RN = adr (cm)
RN - RA = adr (nw)
RA RN = adr (fr)

(6.2)

HNH VE
Trong o :
RA = ran (a)
RN = ran (n)
adr (z) = {x D / s (x) = Z}
vi Z {fr, nw, cm, ol}
Cui cung bt bin th ba ch ro rng ca hai ham n va a u n anh, ngha la
hai a ch cua A phn bit se lun lun tng ng vi cac a ch cua D phn bit
qua cac ham nay.
Tp hp cac ham t A vao D nh vy c ky hiu
bi A D nh vy

143

c ta

nAD
aAD
By gi se la nh ngha ba ham chuyn tip ln lt la f, g va h s dung khi
thay i (cho cac a ch cua D lin quan), khi ng lai thay cho hp thc hoa (cho
moi a ch cua D) :
f = {fr nw,
nw fr, thay i
cm ol}
g = {fr fr,
nw fr,
cm cm,khi ng lai
ol cm}
h = {fr fr,
nw cm,
cm cm,hp thc hoa
ol fr}
Ta co c ta cua 3 phep toan mi mod2, rst2, va vld2 xut hin nh la cac m
rng tng ng t muc 4 :
(a, n, m, s) mod2 (x, y) (a, n, m, s)
(a, n, m) mod1 (x, y) (a, n, m)
(6.5)
s = s + {u f (s (u)), v f (s) (v))}
xem (4.3)
trong o :
L = { Z D |s (z) = fr }
uL
v = n (x)
(a, n, m, s) rst2 (a, n, m, s) (6.6)
s = gos

xem (4.6)

(a, n, m, s) vld2 (a, n, m, s) (6.7)


(a, n, m) vld1 (a, n, m)

xem (4.7)

s = hos
Sau y la mt qua trnh chuyn i cua h thng
CHA
Chng minh

TS. PHAN HUY KHANH bin soan

143

144

Cng ngh Phn mm

Mc du trong muc trc ta a kim chng ky lng c ta h thng va nhn


c kt qua thoa man, nhng cha am bao c tnh ung n cua c ta trong
moi trng hp.
i n mt kt qua tng quat, ta cn phai chng minh khng phai cho mt
trng hp c bit nao o ma phai cho cac d liu tng trng thoa man nhng
gia thit nao o, cac phep toan a c ta la phu hp va chp nhn c.
Vic chng minh tnh phu hp cua cac phep toan c ta (6.5), (6.6) va (6.7) so
vi cac phep toan c ta (4.3), (4.6) va (4.7) la hin nhin v rng trong cach lp
cac cng thc th cac phep toan (4.3), (4.6) va (4.7) mt cach tng ng.
Trai lai, vic chng minh tnh chp nhn c phc tap hn. Trc ht ta cn
chng minh ba nhom nh ly bt bin sau y :
((6.1) va (6.5)) keo theo (6.1) (7.1)
((6.2) va (6.5)) keo theo (6.2) (7.2)
((6.3) va (6.5)) keo theo (6.3) (7.3)

((6.1) va (6.6)) keo theo (6.1) (7.4)


((6.2) va (6.6)) keo theo (6.2) (7.5)
((6.3) va (6.6)) keo theo (6.3) (7.6)

((6.1) va (6.7)) keo theo (6.1) (7.7)


((6.2) va (6.7)) keo theo (6.2) (7.8)
((6.3) va (6.7)) keo theo (6.3) (7.9)

i vi 3 nh ly nhom 1, ta co th dn n cac gia thit cho cac iu kin sau


y :
aAD
nAD
u RN

(7.10)

u RA
v RN
Trong o u va c nh ngha (6.5) va RA, RN c nh ngha (6.2)
chng minh (7.1)

c ta

145

Mt kho khn nho la ham chuyn tip f c nh ngha (6.4) la ham b


phn. Cn chng minh rng s c nh ngha ung, ngha la cac biu thc f (s
(u)) va f (s (v)) trong (6.5) co ngha, noi cach khac ta co :
s (u) dom (f)
s (v) dom (f)
iu nay hin nhin v rng theo (7.10), ta co :
s (u) = fr
s (v) = { nw, cm}
va theo (6.4) ta co
dom (f) = {fr, nw, cm}
chng minh (7.2) va (7.3) ta cn kt qua sau y lin quan n s qua tai
cua mt ham n anh tha nhn ma khng chng minh :
f X Y keo theo f X Y
x dom (f) ran (f) = r
y Y - ran (f) y f (x)
Trong o :
f = f + {x y}
r = (ran (f) - {f (x)}) {y}
chng minh (7.2) : Theo (7.10), (7.11) va (6.5) ta co
RA = RA (v rng a = a theo (4.3))
RN = (RN {V}) {u} theo 7.11
u v theo 7.10
HNH VE
Xay ra hai trng hp :
1/ v RA, ngha la s (v) = cm
Khi o :
RA - RN = (RA - RN) {v}
RA RN = (RA RN) - {v}
RN - RA = (RN - RA) {u}
RA RN = (RA RN) - {u}
HNH VE
2/ v RA, ngha la s (v) = nw
Khi o :
RA - RN = RA - RN
TS. PHAN HUY KHANH bin soan

145

146

Cng ngh Phn mm


RA RN = RA RN
RN - RA = ((RN - RA) - {v}) {v}
RN RA = ((RN RA) - {u} {v}
HNH VE
Nh vy cac chuyn tip t s (u) va s (v) nh sau
fr nw vi u
cm ol vi v trong trng hp 1/
nw fr vi v trong trng hp 2/

Cac chuyn tip nay tng ng vi cac chuyn tip a ch ra bi ham g nh


ngha (6.4)

IV.7. Trin khai thc hin ln th ba


Ln nay, ta gia thit rng xay ra cac sai sot cn phai d phong nh h thng
hp thc hoa va khi ng lai.
Gia s cac bang a, n, m va s c cai t trn cac thit b nh khac nh sau :
HNH VE
T cach t chc nay, ta mun d phong cac sai sot tac ng ln b nh trong
bng cach khi ng lai t a. y, ta a cai t cac bang s va s trong b nh
trong vi muc ch tng tnh hiu qua cua phep thay i b nh la nhanh nht co
th.
Vi muc ch trn, vic khi ng lai lam thay i bang s t chnh no (thc t la
s = gos theo (6.6)) khng con co tac dung na v rng ta gia thit rng b nho
trung tm la s se khng con na.
Mt giai phap la gp i bang s ln a cho mi ln hp thc hoa. Xy dng
bang mi t c tng ng vi bt bin nh sau :
t D {fr, cm} (8.1)
Chu y rng ta khng cn moi gia tr cac trang thai a ch a v rng t ch
dung tai sinh lai bang s khi khi ng lai, t o ta co bt bin b sung nh sau :
{x D | t (x) = cm} = ran (a) (8.2)
Ta co cac c ta mi nh sau :
(a, n, m, s, t) mod3 (x, y) (a, n, m, s, t)
(a, n, m, s) mod2 (x, y) (a, n, m, s) (8.3)
t = t
xem (6.5)
(a, n, m, s, t) rst3 (a, n, m, s, t)
(a, n, m) rst1 (a, n, m)(8.4)
s = t
xem (4.6)

147

c ta

t = t
(8.5)
(a, n, m, s, t) vld3 (a, n, m, s, t)
(a, n, m, s) vld2 (a, n, m, s) xem (6.7)
t = s
D dang chng minh rng ca ba c ta trn la phu hp va chp nhn c. Mt
khac ta thy rng phep khi ng lai tai sinh b nh trong t a va ch t a ma
thi.
Trin khai ln th t va ln th nm
Ta se ma hoa cac gia tr fr, nw, cm va ol nh ham n anh k nh sau :
k = {(0, 0) fr,
(0, 1) ol,
(1, 0) cm,

(9.1)

(1, 1) nw}
Sau o ta biu din cac ham s va t nh ba chui bit nh sau :
b D {0, 1} biu din s
c D {0, 1}
d {0, 1} biu din t

(9.2)

Cui cung, thay i cac bin tng ng vi cac iu kin sau :


s (x) = k (b (x), c (x))
t (x) = k (d (x), 0)

vi x D

(9.3)

Gia s la phep bu (ao ngc bt) nh sau


0 = 1,1 = 0

(9.4)

Ta thy co th ma hoa ham f a nh ngha (6.4) nh hai phep bu va ham h


cung a dnh ngha (6.4) nh phep sao chep va t l 0 tng ng vi ham :
Z D {0}

(9.5)

Ta co 3 c ta mi nh sau :
(a, n, m, b, c, d) mod4 (x, y) (a, n, m, b, c, d)
(a, n, m) vld1 (a, n,m)
b = b
(9.8)
c = z
xem (4.7)
d = b
By gi ta ch cn tom tt lai nhng g a lam cho n luc nay, ngha la mt
mt, sao chep lai cac c ta (4.3), (4.6) va (4.7) vao bn trong cua (9.6), (9.7) va
(9.8), mt khac, nhom cac bt bin (4.1), (6.1), (6.2), (6.3), (8.1), (8.2) va (9.2)
iu nay lam c bng cach kh cac bin tr thanh d tha (cha s va t) bi
cac phep thay i bin (9.3).
TS. PHAN HUY KHANH bin soan

147

148

Cng ngh Phn mm


Khi sao chep, ta thy rng c ta (4.3) cha iu kin trc L khng d g

tnh c. khc phuc nhc im nay ta a vao mt bin mi w la mt s


nguyn
wN

(9.9)

w cha cac phn t cua tp hp L (cardinality)


w = | RA RN |
Ta tha nhn ngm rng cac tp hp D va A u la hu han. Khi hp thc hoa
va khi ng lai, b m w c khi tao gia tr |D| - |A| (v rng a va n u n
anh) la mt hng s dng cua h thng. Khi co s thay i, b m w tng ln khi
va ch khi a ch v, qua tai trong n, ang trang thai cm, ngha la nu b (v) = 1 va
nu c (v) = 0
Vi s m rng mi nay, bt bin cua h thng luc nay se la :
aAD

(6.3)

nAD

(6.3)

mDV

(4.1)

b D {0, 1}

(9.2)

c D {0, 1}

(9.2)

d D {0, 1} (9.2)
d D {0, 1} (9.2)
wN

(9.9)

RA - RN = {x D / b (x) = 0 va c (x) = 1}

(6.2)

RA RN = {x D / b (x) = 1 va c (x) = 0} (6.2)


RN - RA = {x D / b (x) = 1 va c (x) = 1}

(6.2)

RA RA {x D / b (x) = 0 va c (x) = 0}

(6.2)

RA = {x D / d (x) = 1}(9.2)
W = | RA RN |

(9.10)

Trong o
RA = ran (a)
RN = ran (n)
Sau y la cac c ta c tom tt bng cach thay th cac danh sach dai cac
bin bi hai bin trang thai state va trang thai co du nhay () state
state mod5 (x, y) state
xA
yV
w0
a = a
n = n + {x u}

c ta

149

m = m + {u y}
b = b + {u b (u) v b (v)} (9.12)
c = c + {u c (u), v c (v)}
d = d
(b (v) = 1 & c (v) = 0) w = w - 1
Trong o
u {Z D | b (z) = 0 & c (z) = 0}
v = n (x)
state rst5 state
a = a
n = a
m = m
b = d
(9.13)
c = z
d = d
w = | D | - | A |
state vdl5 state
a = n
n = n
m = m
b = b
(9.14)
c = z
d = b
w = | D | - | A |
Trong o Z D {0}
Sau y la qua trnh bin i cu th

IV.8. c ta lam g ?
Sau y ta se tra li cu hoi v muc ch (cho ai, cho cai g) cua cac cng vic
ma ta a lam. Vai tro u tin cua mt c ta la cho phep m ra cac tranh lun v
tai c ta tai c ta cp n. Thc t, khac vi mt chng trnh, mt c
khng phai vit ra may tnh co th hiu c ma cho nhng NSD co th hiu
va tin tng vao tnh ung n cua ni dung a c ta.
T c ta luc u muc 3 cho n cac c ta tip theo cac muc 4, 6, 8 va 8, ta
a s dung cac rang buc mi luc mt mang tnh thc tin. Ta a khng nh c
tnh ung n cua c ta bi cac chng minh nh ly phu hp va chp nhn c :
bao toan tnh bt bin.
By gi vn la s dung cac c ta lp trnh. Trong muc nay, ta se lp
trnh cho cac trng hp c ta (9.12), (9.13) va (9.14), bng cach s dung ngn
TS. PHAN HUY KHANH bin soan

149

150

Cng ngh Phn mm

ng gia Pascal. Ta a vao cac quy tc tit lp mi lin h gia c ta va lp


trnh.
Quy tc 1 :
Khi mt c ta cha cac iu kin trc, chng trnh tng ng se la mt
ham. Theo ngha cua Pascal, mi gia tr sai cua iu kin trc se tra v bin
trang thai state mt gia tr phn bit.
Chng trnh tng ng vi c ta (9.12) la nh sau :
if not (x in A) then
state := bad - x
else if not (y in v) then
state := bad - y
else if w = 0 then
state := no more place
else begin
State := OK ;
Modification {goi thu tuc}
end ;
Quy tc 2 :
Khi mt c ta cha cac bin phu, ta co th m moi thu tuc cha cac bin nay
nh la cac bin cuc b. Thu tuc nay bt u bi cac lnh khi ng
Thu tuc Modification nh sau :
procedure Modification ;
var u, v : D
begin
u := 1 ; {chon u la a ch be nht cua L}
while (b (u) 0) or (c (u) 0) do
u := u + 1 ; (10.2)
v := n (x)
{tip tuc thn thu tuc
end ;
Quy tc 3 :
Cac iu kin sau khac nhau nu co dang a = ... (trong o du ba chm ... ch
nh mt biu thc khi ng cha cac bin co anh du nhay), th co th c
chuyn thanh phep gan qua cac quy tc b tr nh sau :
- Loai bo cac iu kin sau dang ng thc.
V du : d = d
- Thay th du = bi du gan bng :=
- Thc hin phep ti u khi mt ham la qua tai

151

c ta

- Loai bo cac du nhay


- Thay th mt iu kin sau bi cu truc iu kin if... else :
Cac iu kin sau khng b loai bo cua c ta (9.12) nh sau :
if not (x in A) then
state := bad - x
else if not (y in V) then
state := bad - y (10.1)
else if w = 0 then
state := no-more-place
else begin
state := O.K ;
Modication {goi gia tr thu tuc}
end ;
Quy tc 2 :
Khi mt c ta cha cac bin phu, ta co th m mt thu tuc cha cac bin nay
nh la cac bin cuc b. Thu tuc nay bt u bi cac lnh khi ng.
Thu tuc Modication nh sau :
Procedure Modication ;
var u, v : D
begin
u := 1 ; {chon u la a ch be nhtcua L}
hile (b (u) 0) or (c (u) 0) do
u := u + 1 ; (10.2)
v := n (x)
{tip tuc thn thu tuc
end ;
Quy tc 3 :
Cac iu kin sau khac nhau nu u co dang a = ... (trong o du chm ... ch
dnh mt biu thc khng cha cac bin co anh du nhay), th co th c chuyn
thanh phep gan qua cac quy tc b tr nh sau :
- Loai bo cac iu kin sau dang ng thc.
V du : d = d
- Thay th du = bi du gan bng :=
- thc hin phep ti u khi mt ham la qua tai.
- Loai bo cac du nhay
- Thay th mt iukin sau bi cu truc iu kin if ... else :
Cac iu kin sau khng loai bo cua c ta (9.12) nh sau :
n (x) := u ;
m (u) := y ;

(10.3)

TS. PHAN HUY KHANH bin soan

151

152

Cng ngh Phn mm


b (u) := b (u) ; b (v) := b (v) ;
c (u) := c (u) ; c (v) = c (v) ;
if (b (v) = 1) and (c (v) = 0) then w := w - 1
Quy tc 4 :

Mt cach h thng cac h chng trnh a vit c bi cac quy tc am bao


tnh song song a vao t c ta. T cac oan chng trnh (10.1), (10.2) va
(10.3) ta nhn c cng thc y u hn nh sau :

153

c ta

Mt s thi
I. c ta (Specification)
1. Cho ma trn vung A cp nn. Vit c ta th hin : a) Mi phn t trn
ng cheo chnh la phn t ln nht trn cung hang i qua phn t o. b)
Mi phn t trn ng cheo phu la phn t nho nht trn cung ct i qua
phn t o.
2. Mt xu (string) w c goi la i xng (palindrome) nu w = wR hay oc
xui ngc oc ngc u nh nhau (wR la xu ao ngc cua w). V du cac
xu omo, mannam, ... u la i xng. Vit c ta th hin cac xu i
xng.
3. a thc cp n c vit di dang Toan hoc la :
Pn(x) = a0 + a1x1 + a2x2 + ... + anxn
Vit c ta th hin phep cng, so sanh hai a thc Pn(x) va Qm(x), nhn a
thc vi mt hng s a Pn(x) va nhn hai a thc Pn(x) Qm(x).
4. Cac phn s (hay s hu ty) c biu din bi danh sach (n, d), vi n la t s va d
la mu s, la nhng s nguyn (d 0). Vit c ta xy dng cac ham x ly phn s:
rut gon, tr, chia va so sanh hai phn s, cng, nhn hai phn s va chuyn i
phn s thanh s thc.

II. Lp trnh cu truc (Structured programming)


1. Vit lnh bng gia ng (phong Pascal), ch s dung ti a ba cu truc tun t, iu
kin if va lp (while-repeat), theo cac s khi di y :
ung

C1

S1
Sai
ung

S1

C1
Sai

ung

Sai

C2

S2
Sai

S2

C2
ung

TS. PHAN HUY KHANH bin soan

153

154

Cng ngh Phn mm

Sai

S1

C1
ung

Sai

C1

S1

ung

Sai

S2

S3

C2
ung

Sai

S2

S3

C2
ung

ung

C1

S1
Sai

Sai

C1

S2

S1

ung

C2

Sai
ung

C2
ung

Sai

S3

S2

2. Vit lnh bng gia ng (phong Pascal), ch s dung ti a ba cu truc tun t, iu


kin if va lp (while repeat), theo s khi di y :

III. Th nghim chng trnh (Testing)


Gia s cac chng trnh a cho phn trn y la cac n th goi n cac n
th con S1, S2 va S3). Trnh bay mt phng phap th nghim n th goi.

You might also like