LỜI CẢM ƠN
!"#$%&''("$
)*+(((,-.,-,!
/01(((2)/3*(4,
#*,5,6",*7,-
8,)/
9:;2<!"
&1<5$<32
=1(3>?>8()>@8(A,:%-
7,&,=B
C)D-
%EC(!8(A3 F%,7,
C>#CB/4(EC+G-(
D;35H,%E
%IJ5!7,C>#CB
/4(+G-(
K
MỤC LỤC
LỜI CẢM ƠN 1
MỤC LỤC 2
DANH MỤC TỪ VIẾT TẮT 4
DANH MỤC HÌNH 5
Chương 1 Giới Thiệu 7
KKL-KM
KNOHE4P8/CBKK
KQ9R=GKN
KSTE"KQ
!"
Chương 2: Các khái niệm liên quan 14
#"$%&'()*+*,-.
KKUGVG")&WDCXYTC(ZK[
KNL-U&C7W\CZ,U&C7>WO>]CZK^
KQOR7")&WDC\_(___ZK`
#"$/0*1'2 +*,-
NKOR75-NN
NN =4(%*1Va,4(%*>RNS
NQbV(R75-N[
34$56$)7')$) 89*$-:
QKc@)54P8/CBN^
34$5;'9 <9*$-=34$5>$'2? 89*$-:
34$5*@' &, )/9*$-=34$5<'+), )/9*$-A
34$56=34$5 B
QN52RP8/CBQM
)7CD8%8'9E, )FG F F-
N
8H'IFJ<$-
9H *K'2F$$$-
Chương 3 33
Các thuật toán Rút gọn chương trình cơ bản 33
34$56$)7JH/$!"L*"$%&'()*+*,M) C-
KKP8/CBQQ
KNP8/CB'6C8Q[
34$56$)7JH/$!"LC>6$)7')$) 82FCF/FF
M) C-B
NKP8/CBRQd
NNP8/CB(2>Rc\TSK
Chương 4 46
Phân tích và cài đặt hệ thống 46
96"1$A
KKcG-<2MSe
KNcG-<2*S`
N$O$0*PC)7QJ *(RS
NKDf2,>g(h*(CBSd
NN.754(CB1Sd
NQDi75Ej,"k[M
NSDi5=l)'[M
N[Di5][K
N^LCgWY_>(_ZC5Di[K
NeOHEH-[N
N`L-#[S
B18=%)F/ F.
BP T*1'#F=F*-
BN T*1') -.A
NdD,6")[d
UPVW 6$)7.S
Q
XT?/Y$!"LC>6$)7:
SKLm4hV4(\_n,P_nE7H-^Q
(T*1& :
(T*1&Z:
(T*1& C6$[:
(T*1$5C6$[:
SNbV4(UGV(R7^S
XLC>%&'()*2FCF/FF-:
XLC>/0*1'2 2FCF/FF-:.
.(\::
[KbH@12,%*CB^e
[ND:1FGV(R7^e
.(>] $^:A
.(C6$[ $^:B
[QD:1UGV(R7^d
.(>] $!"LC>:S
.(C6$[ $!"LC>A
[SDECB,--eM
KẾT LUẬN 73
HƯỚNG PHÁT TRIỂN 74
TÀI LIỆU THAM KHẢO 75
DANH MỤC TỪ VIẾT TẮT
Từ viết
tắt
Thuật ngữ tiếng anh Thuật ngữ tiếng việt
D\_ DC\_(___ OR7")&
DX DCXY .G")&
S
DXT DCXYTC( UGVG")&
\\_ \\_(___ OR75-
\_n c_n\_n_,C%_>
4(%*1Va
oOc oh%_OCCc
P8/CB@
1
\X \XY .G5-
op
ohp>C
4)$@
oO ohO \!@
9\T
9_\_(___TC(
UGV(R7(2
O\T OCC\_(___
UGV(R7CB
Oc OCCc P8/CB
P_n
c_nP_n_C__,C%_>
4(%*1>R
c\T
c>_\_(___TC(
UGV(R7-
DANH MỤC HÌNH
Hình 2.1. Chương trình và đồ thị luồng điều khiển tương ứng 16
Hình 2.2. Chương trình và cây điểm trội tương ứng với đồ thị trong
Hình 2.1 18
Hình 2.3. Cây điểm trội sau của đồ thị luồng điều khiển trong Hình 2.1.
18
[
Hình 2.4. Các phụ thuộc điều khiển của chương trình trong Hình 2.1 20
21
Hình 2.5. Chương trình và Đồ thị phụ thuộc điều khiển tương ứng 21
Hình 2.6. Chương trình và Đồ thị phụ thuộc dữ liệu tương ứng 22
Hình 2.7. Đồ thị phụ thuộc chương trình của chương trình trong Hình
2.6 23
Hình 2.8. Tập các biến được định nghĩa và sử dụng của một chương
trình 24
Hình 2.9. Rút gọn tĩnh được tính cho câu lệnh cuối cùng (bên trái) và
Rút gọn động cho đầu vào op = “sin” (bên phải) 27
Hình 2.10. Rút gọn tiến và rút gọn lùi 28
Hình 2.11. Đồ thị phụ thuộc hệ thống (System Dependence Graph) 29
Hình 3.1. Chương trình và Đồ thị phụ thuộc chương trình tương ứng 41
Hình 3.2. Đồ thị phụ thuộc hệ thống System Depedence Graph 44
Hình 3.3: SDG rút gọn từ SDG trong hình 3.2 45
Hình 4.1. Sơ đồ hệ thống ở mức đơn giản 47
Hình 4.2. Sơ đồ hệ thống ở mức chi tiết 48
Hình 4.3. Danh sách các từ khóa của ngôn ngữ Visual C# 51
Hình 4.4. Thuật toán xác định cung nối giữa hai đỉnh của Đồ thị phụ
thuộc 65
Hình 4.5. Giao diện chính của hệ thống 71
Hình 4.6. Giao diện chương trình thực hiện chức năng rút gọn chương
trình đối với phương thức có lời gọi phương thức 72
Hình 4.7. Giao diện cho phép xem thông tin câu lệnh 73
^
Chương 1 Giới Thiệu
qCB("7#CB(2E(,)r3)
6f2(%0C[Ms(=4(CB/,,-%CB
5-// _>>(t(
"3(=,>2%CBC'*'&)
1B'#@7>)0uB*R
>h6("%CB%v,-w
)w,-%CBU"'F'&@-1C7
C("=1("RxC1,-B,>x
CB
P8/CBWProgram Slicing - PSZ7)m4(H=
CB3)m4C=C85H-CB
H-''#*,-=R&'97C8/C
H0y5H-CB')w<*
CV%*v'EH-sz{3Mark Weiser!-Oc%<
,B46Cv54(CB,|:(")')wC
#CBACW|/#CBB,>xCB
]DebuggingZLACCB>4(CB,46CV
7%*'EH-s)83_)-/>jC
>5H-'&#*,-=Es&BxL
-'/,BC7%3'>&)(
6"C>EH-(R7p')
e
>&'7CBF'H-(R
7,H-s.P8/CB1"4(l'3OchV
(R77@7,,B*'>jxC14(CB,C6
" C - ,R # * CB } > x
WDebuggingZ3=1(CBWProgram IntegrationZ3%CB(
"WSoftware MaintenanceZ3)&WTestingZ,61
("WSoftware Quality AssuranceZ
OCCcWP8/CBJOcZEC7R5
=!'<C4(CB&xC1/C,-%CB(
"D8*(4,)->}7C8/WSliceZ7
CBOE&p#*%* vW%*1Va
:>RE&pZ4(6H-O,-@
H-'<*%*vOc'&1>R_"
)C-xC1,-%CB("
9C)~_>_C3C)-P8/CB
wKdedU&C1$<!'7#CB#>
,-B,>x4(CB,C@*T>8
'7CB,(2E(3CB@-&
C,"7)*#'3C#CB)&6Cv)*
#CB'C,")=h:)fF _
C"3&BCx4(CB,(@-5%
>}
Bước 1} BC%*xCCB;&C,")*#
CB
`
Bước 2} BC,VC=nCB6<''V
a%* x3>%* x 1VaE}x •OWy
1
,y
2
,…y
m
Z3
C'y
1
,y
2
,…y
m
%*CB,,-=CV
%*xEH-n
Bước 3}\-6H-CnH-''2
%*<*#CB=CV%*hE
b6(l,-#>%C39C)~_>_C!>$
<'CB1C8/F'H-<
*,-=%*xEH-n.
5 5 4( CB 1 WObject-oriented
Programming LanguageZ1#H,>RC6"C5
wH%<,B8(r(4(CB,,*CB€
)&3€>RE,E>,55
6C8C' ,4,")-4(CB
1}=''3=)*lWInheritanceZ3=
2%7WPolymorphismZ!h6-*1,-(H
=CBa%&P8/CBaWStatic
Prgram SlicingZ
C$a,@CE,-2%rút gọn
chương trình'38#*V/"9R8
nghiên cứu các thuật toán Rút gọn chương trình, sau đó lựa chọn một
thuật toán phù hợp để cài đặt hệ thống hỗ trợ sửa lỗi cho các chương trình
viết bằng ngôn ngữ lập trình hướng đối tượng Visual C Sharp
d
1. Phát biểu bài toán
1.1. Khái niệm chung
D'")-,"P8/CBWProgram SlicingZL
-P8/CB1C%<~_>_C•dQ3dS3de‚%H
1/P8/a;@1WExecutable Backward Static
SliceZT/@1,B,-C8/>jECCB@
1
L-y;{Wq)YCZ1>R%<,B)hVP8/
_(((UGV(R7(-lFC8/
*FGV
T/C8/a,B%C8/1=)*#
%(H=aWStatic Analysis ProblemZ3R&'%
F7)*#C2,7)*#,
c@(C&P8/CB1(C&#
E,>}
U3~_>_C>R7UGVG")&WControl Flow
GraphZ7%&€C 4C8/
c'ƒ_>_•N^3eQ‚+!6P8/y;{+'
&1=7-#%v,-;UGV(R7
CBWProgram Dependence GraphZ%&€CL*
#'>'+1pCY„•SM3SK3SN3SQ3SS3S^3Se3S`3`N3`Q3`^‚
*(R(C&,:R&
T H3 LC_ , .>)! - ) - P8 / 7
W\cZ•[Q3[[‚}7C8/1=7,
VD+~_>_C34LC_,.>)+>R
KM
GVG")&%&€C3>'…CY
,pC!#*4P8/7%v6UGV(R
7%&€C•[3^‚
CG3)'*)-P8/CB8
>j&'C8/;W)-C8/y*{WForeward SliceZ
)1"4(CGZ
1.2. Phân loại các thuật toán Rút gọn chương trình
_l)†(C&P8/CB>j'4
P8/CB2
‡E)~_>_CC)-P8/
CBB41"4('4@CUGVG"
)&WControl Flow GraphZ
u-=CUGVG")&'&E*,(2
E(7>2C4C8/@CUGV(R
75-WData Dependence GaphZ 4€:,7
(2E(4'&6(41>)C4
F(R,-P8/aCB
P8/71C>'v)g(R5E*
C8/a')=DCBC8/WSlied programZ
CP8/a)=CBC8/CP8
/7972RC6C8/7''1;&
V,VxCB7@7CP8/a)
&1"'
KK
1.3. Mục đích của đồ án
9R=,-C(E,Gv2
4C8/aCBWStatic Program SlicingZ#'
@/74(;1('*:7-#
754(CB1 l'hH@-
xC1>xCB,*%v51
2D8>R5R>&:-xC1>
xCB>R4C8/CB}
o p-(')wxC1%7:&
54(CB%G})&5-)%35-:
%- W 3 )& - )ˆZ3 , %* R3
(27E3)&5-<C73)&''
7W(2Z3%*C03(WD>>ZD:&
54(CB1}l)*3''3,
2%7+1xC1
o D6C85-%C-(17
+,5aCB
o u-=7C8/()*#C8/','
&6(41
o CBC8/(xC1C8/-9_3)*#
,-=C8/79_>j1>REC
)'79_'>R*9_!
1C8/CG
o CBC8/>RC-(7R')
w=1(3'>j'CB(r(4(
CB,')w€BCx7C@#
KN
‰R=CBC8/CB'xC14(CB
,C,-B,>xCB3%CB("3)&
CB
1.4. Giới hạn của đề tài
8%*3-,h(C&D-(
"54(CB!'"fu5%4
>554(CBO>3D3u>q>E=1;
&(C&2R3C)554(CB)u>
Di3u>q>o 3Š,3D‹‹ˆ,1;,'2RC7
C!,4354(CBBC6E354(CBE'
8((),B*,-hH@7-xC1>x
CB65C6)')w,(2E(
C(E,G8>jg:,xây dựng hệ
thống hỗ trợ sử lỗi chương trìnhCB1,*%<5
u>Di.$8/5Di%<,B}thứ nhất3u>Di
75(f%*,1>R&hH@"2RC
@*Œthứ hai3u>Di754(CB1,B*
>j'"&>,54(CB6C8C"Œ
thứ ba3,5B8!B&1B-'-
:4C8/CB5u>Di
KQ
2. Kết quả đạt được
!CB%<C3P8/CB7%
(2E(_l27) 3C7
2)8+!15)*#6
V5)*#8!E1G'}
bH@9_t'CB,,R
=t'H-C)C8/CB
D:6C85-#}UGV(R73
H-3%*3(23(
D:4C8/CB>RUGV(R
7 CB R3 R3
CB%C5u>Di
=1(9_&--pxC1>x
CB%R"C
3. Bố cục của Đồ án
DK}D-,CB%G,#
CB(C&4P8/CB
DN} CB%)-#*CB
=
DQ} CB%,>>7>4P8/
CB%
DS}OH=*-,CB%%
:-
Chương 2: Các khái niệm liên quan
KS
1. Luồng điều khiển (Control Flow)
C5%436C8")&Wn3Y_3
nCˆZ%&€G")&u=Rq&27
6C8if>j#*V6C8'1@-5
6C8")&''&1%V-WJumpZC
5%46(97>6C85-!1"V&B
5aWSemanticZG")&E27Cl1)
>j1CB%>H
1.1. Đồ thị luồng điều khiển (Control Flow Graph)
Định nghĩa 1:UGVWTC(Z37GV'T4(8
W_Z|/FWu_C_hZ,4(Wo_Zoh
DW3Z7o31/8,1/8
T2E8:%-'
Wc …P Z8)'
8,
n
Wc ƒOZ8)'8
Định nghĩa 2:UGVG")&WControl Flow GraphZ37G
VG")&7CBO7GVC'x8
1)*1(,7H-CBO,%&€
G")&COT/u4(%*CBOux
8nW2,7H-CCBOZVa
4(}PoXWnZ4(%*1>RE3\oXWnZ4(%*1
)%,)<EE
K[
pBNKDCB,GVG")&2
1.2. Khái niệm Điểm trội (Dominator) và Điểm trội sau (Post-
dominator)
L - H \C %& € # - yC7{
WDominanceZ58GV'
Định nghĩa 1} C7GV',8%gc …P W]
Z38'Cv78…C78q*6OC
GVl8c …P *8q"0!…7O…1/
7&C7WDominatorZq
K^
L-…C7qCGVG")&2,
,-CCBC6C1(@3*q1
@Bgg…+(1@C'
•-C7'=}
o OhE}x8C7='
o =%g}*8…C78q,8qC78D
)'8…C78D
o =(h2}*8…C78q,8qC78
…B…•q
Định nghĩa 2} D8 / … C7 C@ *( WImmediate
DominatorZq*…C7q3…Žq3,)'78D)0
!DC78q3…C7D
Định nghĩa 3}DH&C7WDominator TreeZ7GV'
T,8%gc …P 7H%G8GVT3
'788c …P 3,'758…,8q*…
C7C@*(q
Ke
pBNNDCB,H&C72,GVCpBNK
Định nghĩa 4} C7GV',8)*8c ƒO38
'&'78&C7>qWO>]\_>Z*6
lq*8)*8c ƒO"0!…7OD8/…
&C7>q
Định nghĩa 5}D8/…&C7>C@*(q*…
7&C7>q3…Žq3)GE8D6…&C7
>,=D&C7>q
Định nghĩa 6}DH&C7>WO>]\C C__Z7GV
'T,8)*8c ƒO7H%G8T3'
78c ƒO,'758…,8q*…&
C7>C@*(q
pBNQDH&C7>GVG")&CpBNK
1.3. Phụ thuộc điều khiển (Control Dependence)
Định nghĩa 1}T/T7UGVG")&T/…,q
8CT3q(R7")&…*0!}
i. D'7C@*(Ol…*q
ii. q&C7>%6)B8D7OWCl…,qZ
K`
iii. q)&C7>…
*q(R7")&…3)'…'&'"8
Định nghĩa 2}UG V(R 7")&WControl Dependence
GraphZl)*lUGVG")&T7GV%G8
T,C'7'l8…*8q*q(R7
")&…UGV(R7")&'&1hH@lUG
VG")&,H&C7>>R74,7(2
E(ƒW
N
Z3,>8CGVG")&
Định nghĩa 3:u;")&7H-")&D4(
H-(R7")&,D
Định nghĩa 4}T/UGVG")&T7H8((CB
1WAbstract Syntax TreeZ7CB'6C8D8
T%&€H-,%&2CB8
UGV(R7")&E%<UGVG5-T27
(R75-l8…*8q*0!}
…7oC_Wc …P Z3q%&€7(
(')vC%6)†,|:(:,;"
)-D1!True
…%&€78")&WPredicate NodeZ,q%&€
7(vC@*(C,;")&…*
…2,H-:(B…,q1!
C_3*…2,H-")-"B
…,q1! C_X>_(R7,
q7H-")-
Kd
pBNSD(R7")&CBCpBNK
NM
pBN[DCB,UGV(R7")&2
NK
2. Luồng dữ liệu (Data Flow)
2.1 Phụ thuộc dữ liệu
97(R75-l78…*8q'aCv,-=
CB'&%Vf*#-2@8%V
1
Định nghĩa 1}97UGV(R75-1Va#7
H8((Cl17CB27(R75-l
8\*8•*0!65")->}
8\Va%*h
8•>R%*h
L'7Va%*h5\,•
p(R75-%&VGfCV%*
1VaTCV1=E•(R7,68\
(R7,8
pBN^DCB,UGV(R75-2
NN
Định nghĩa 2}UGV(R7CBGV(R7"
)&'(R75-W:GV(R7
5-'(R7")&Z
pBNeUGV(R7CBCBCpBN^
NQ
2.2. Tính toán tập biến được định nghĩa và tập biến sử dụng
a. Xác định các biến sử dụng
4(%*1>RW)=-P_nWZ3,VC=H-Z%<7
H-GV(R71=7€%v7
(r(-GV2,CBU'%*=
fCV7%*'CH-
pBN` 4(%*1Va,>R7CB
b. Xác định tập biến được định nghĩa:
q*1Va%*EH-''1)%:
)<E34(%*1VaEH-)=-\_nWZ
DF')wfCV%*}
o 263%*17CV%v7H-
CC1(B%*h6-<%CH-
%*1Va,%*h6-<(=%(H
-%*1>R
o 97%*'&1>&C"*7)'
/ CDi3*%*'1C"E
CVBCV%*')%Vf3*%*'
NS
1C"EC"*BCV%*'
>j%Vf
CC7>C1(:%-,-hV%*1
Va,%*1>R')3')8>R
%*3%*1,C51')%*
1/*7(2fCV1
U,%*3%H'7%*,(C
'+%*,B*8>j*7*(4>}
b_x(r(%G(r(,>Ru=
R}
DH-}•‚•xŒ
qB'&Cv\oXWZ••‘,PoXWZ••3h‘3
CV+(R7,CV+,B*+(
':CPoXWZ3PoXWZ••33h‘
2.3 Xác định các phụ thuộc dữ liệu
C)hV(R75-8$Cv,B
)'G5-5CH-Cj3H-
")-8>j)hr*(R75-5H
-7);76C8Cj
D8hr,=R>}
•…Wh3Z
•
C_>•h‹Œ
•hŒ%•Œ
nW’%Z ““K
C_>•‹%‹C_>Œ
_>_ ““N
C_>•J%‹C_>Œ
‘
N[