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
!"
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
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
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
`
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,
@/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
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
Đị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
Đị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
C_>•‹%‹C_>Œ
_>_ ““N
C_>•J%‹C_>Œ
‘
N[