Tải bản đầy đủ (.doc) (79 trang)

Đồ án tốt nghiệp đại học xây DỰNG hệ THỐNG hỗ TRỢ sửa lỗi CHƯƠNG TRÌNH sử DỤNG THUẬT TOÁN ‘rút gọn CHƯƠNG TRÌNH’

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (976.69 KB, 79 trang )

LỜI CẢM ƠN
 
 !"#$%&''("$
)*+(((,-.,-,!
/01(((2)/3*(4,
#*,5,6",*7,-
8,)/
9:;2<!"
&1<5$<32
=1(3>?>8()>@8(A,:%-
7,&,=B
C)D-
 %EC(!8(A3 F%,7,
C>#CB/4(EC+G-(
D;35H,%E
%IJ5!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

KKL-KM
KNOHE4P8/CBKK
KQ9R=GKN
KSTE"KQ

 !"


Chương 2: Các khái niệm liên quan 14
#"$%&'()*+*,-.
KKUGVG")&WDCXYTC(ZK[
KNL-U&C7W\CZ,U&C7>WO>]CZK^
KQOR7")&WDC\_(___ZK`
#"$/0*1'2  +*,-
NKOR75-NN
NN =4(%*1Va,4(%*>RNS
NQbV(R75-N[
34$56$)7')$) 89*$-:
QKc@)54P8/CBN^
34$5;'9 <9*$-=34$5>$'2? 89*$-:
34$5*@' &, )/9*$-=34$5<'+), )/9*$-A
34$56=34$5 B
QN52RP8/CBQM
)7CD8%8'9E, )FG F F-
N
8H'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$56$)7JH/$!"L*"$%&'()*+*,M) C-
KKP8/CBQQ
KNP8/CB'6C8Q[
34$56$)7JH/$!"LC>6$)7')$) 82FCF/FF
M) C-B
NKP8/CBRQd
NNP8/CB(2>Rc\TSK
Chương 4 46
Phân tích và cài đặt hệ thống 46

96"1$A
KKcG-<2MSe
KNcG-<2*S`
N$O$0*PC)7QJ *(RS
NKDf2,>g(h*(CBSd
NN.754(CB1Sd
NQDi75Ej,"k[M
NSDi5=l)'[M
N[Di5][K
N^LCgWY_>(_ZC5Di[K
NeOHEH-[N
N`L-#[S
B18=%)F/ F.
BP T*1'#F=F*-
BN T*1') -.A
NdD,6")[d
UPVW 6$)7.S
Q
XT?/Y$!"LC>6$)7:
SKLm4hV4(\_n,P_nE7H-^Q
(T*1& :
(T*1&Z:
(T*1& C6$[:
(T*1$5C6$[:
SNbV4(UGV(R7^S
XLC>%&'()*2FCF/FF-:
XLC>/0*1'2  2FCF/FF-:.
.(\::
[KbH@12,%*CB^e
[ND:1FGV(R7^e

.(>] $^:A
.(C6$[ $^:B
[QD:1UGV(R7^d
.(>] $!"LC>:S
.(C6$[ $!"LC>A
[SDECB,--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\_ DC\_(___ OR7")&
DX DCXY .G")&
S
DXT DCXYTC( UGVG")&
\\_ \\_(___ OR75-
\_n c_n\_n_,C%_>
4(%*1Va
oOc oh%_OCCc
P8/CB@
1
\X \XY .G5-
op
ohp>C
4)$@
oO ohO \!@
9\T
9_\_(___TC(

UGV(R7(2
O\T OCC\_(___
UGV(R7CB
Oc OCCc P8/CB
P_n
c_nP_n_C__,C%_>
4(%*1>R
c\T
c>_\_(___TC(
UGV(R7-
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
qCB("7#CB(2E(,)r3)
6f2(%0C[Ms(=4(CB/,,-%CB
5-// _>>(t(
"3(=,>2%CBC'*'&)
1B'#@7>)0uB*R
>h6("%CB%v,-w
)w,-%CBU"'F'&@-1C7
C("=1("RxC1,-B,>x
CB
P8/CBWProgram Slicing - PSZ7)m4(H=
CB3)m4C=C85H-CB
H-''#*,-=R&'97C8/C
H0y5H-CB')w<*
CV%*v'EH-sz{3Mark Weiser!-Oc%<
,B46Cv54(CB,|:(")')wC
#CBACW|/#CBB,>xCB
]DebuggingZLACCB>4(CB,46CV

7%*'EH-s)83_)-/>jC
>5H-'&#*,-=Es&BxL
-'/,BC7%3'>&)(
6"C>EH-(R7p')
e
>&'7CBF'H-(R
7,H-s.P8/CB1"4(l'3OchV
(R77@7,,B*'>jxC14(CB,C6
"  C    -  ,R    #  *    CB  }  >  x
WDebuggingZ3=1(CBWProgram IntegrationZ3%CB(
"WSoftware MaintenanceZ3)&WTestingZ,61
("WSoftware Quality AssuranceZ
OCCcWP8/CBJOcZEC7R5
=!'<C4(CB&xC1/C,-%CB(
"D8*(4,)->}7C8/WSliceZ7
CBOE&p#*%* vW%*1Va
:>RE&pZ4(6H-O,-@
H-'<*%*vOc'&1>R_"
)C-xC1,-%CB("
9C)~_>_C3C)-P8/CB
wKdedU&C1$<!'7#CB#>
,-B,>x4(CB,C@*T>8
'7CB,(2E(3CB@-&
C,"7)*#'3C#CB)&6Cv)*
#CB'C,")=h:)fF _
C"3&BCx4(CB,(@-5%
>}
Bước 1} BC%*xCCB;&C,")*#
CB
`

Bước 2} BC,VC=nCB6<''V
a%* x3>%* x 1VaE}x •OWy
1
,y
2
,…y
m
Z3
C'y
1
,y
2
,…y
m
%*CB,,-=CV
%*xEH-n
Bước 3}\-6H-CnH-''2
%*<*#CB=CV%*hE
b6(l,-#>%C39C)~_>_C!>$
<'CB1C8/F'H-<
*,-=%*xEH-n.
5    5  4(  CB      1  WObject-oriented
Programming LanguageZ1#H,>RC6"C5
wH%<,B8(r(4(CB,,*CB€
)&3€>RE,E>,55
6C8C' ,4,")-4(CB
1}=''3=)*lWInheritanceZ3=
2%7WPolymorphismZ!h6-*1,-(H
=CBa%&P8/CBaWStatic
Prgram SlicingZ

C$a,@CE,-2%rút gọn
chương trình'38#*V/"9R8
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/CBWProgram SlicingZL
-P8/CB1C%<~_>_C•dQ3dS3de‚%H
1/P8/a;@1WExecutable Backward Static
SliceZT/@1,B,-C8/>jECCB@
1
L-y;{Wq)YCZ1>R%<,B)hVP8/
_(((UGV(R7(-lFC8/
*FGV
T/C8/a,B%C8/1=)*#
%(H=aWStatic Analysis ProblemZ3R&'%
F7)*#C2,7)*#,
c@(C&P8/CB1(C&#
E,>}
U3~_>_C>R7UGVG")&WControl Flow
GraphZ7%&€C 4C8/
c'ƒ_>_•N^3eQ‚+!6P8/y;{+'
&1=7-#%v,-;UGV(R7
CBWProgram Dependence GraphZ%&€CL*
#'>'+1pCY„•SM3SK3SN3SQ3SS3S^3Se3S`3`N3`Q3`^‚
*(R(C&,:R&
T H3 LC_ , .>)! - ) - P8 / 7
W\cZ•[Q3[[‚}7C8/1=7,

VD+~_>_C34LC_,.>)+>R
KM
GVG")&%&€C3>'…CY
,pC!#*4P8/7%v6UGV(R
7%&€C•[3^‚
CG3)'*)-P8/CB8
>j&'C8/;W)-C8/y*{WForeward SliceZ
)1"4(CGZ
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/CB2
‡E)~_>_CC)-P8/
CBB41"4('4@CUGVG"
)&WControl Flow GraphZ
u-=CUGVG")&'&E*,(2
E(7>2C4C8/@CUGV(R
75-WData Dependence GaphZ 4€:,7
(2E(4'&6(41>)C4
F(R,-P8/aCB

P8/71C>'v)g(R5E*
C8/a')=DCBC8/WSlied programZ
CP8/a)=CBC8/CP8
/7972RC6C8/7''1;&
V,VxCB7@7CP8/a)
&1"'
KK
1.3. Mục đích của đồ án
9R=,-C(E,Gv2
4C8/aCBWStatic Program SlicingZ#'

@/74(;1('*:7-#
754(CB1 l'hH@-
xC1>xCB,*%v51
2D8>R5R>&:-xC1>
xCB>R4C8/CB}
o p-(')wxC1%7:&
54(CB%G})&5-)%35-:
%- W 3 )& - )ˆZ3   , %*   R3 
(27E3)&5-<C73)&''
7W(2Z3%*C03(WD>>ZD:&
54(CB1}l)*3''3,
2%7+1xC1
o D6C85-%C-(17
+,5aCB
o u-=7C8/()*#C8/','
&6(41
o CBC8/(xC1C8/-9_3)*#
,-=C8/79_>j1>REC
)'79_'>R*9_!
1C8/CG
o CBC8/>RC-(7R')
w=1(3'>j'CB(r(4(
CB,')w€BCx7C@#
KN
‰R=CBC8/CB'xC14(CB
,C,-B,>xCB3%CB("3)&
CB
1.4. Giới hạn của đề tài
8%*3-,h(C&D-(
"54(CB!'"fu5%4

>554(CBO>3D3u>q>E=1;
&(C&2R3C)554(CB)u>
Di3u>q>o 3Š,3D‹‹ˆ,1;,'2RC7
C!,4354(CBBC6E354(CBE'
8((),B*,-hH@7-xC1>x
CB65C6)')w,(2E(
C(E,G8>jg:,xây dựng hệ
thống hỗ trợ sử lỗi chương trìnhCB1,*%<5
u>Di.$8/5Di%<,B}thứ nhất3u>Di
75(f%*,1>R&hH@"2RC
@*Œthứ hai3u>Di754(CB1,B*
>j'"&>,54(CB6C8C"Œ
thứ ba3,5B8!B&1B-'-
:4C8/CB5u>Di
KQ
2. Kết quả đạt được
!CB%<C3P8/CB7%
(2E(_l27) 3C7
2)8+!15)*#6
V5)*#8!E1G'}
 bH@9_t'CB,,R
=t'H-C)C8/CB
 D:6C85-#}UGV(R73
H-3%*3(23(
 D:4C8/CB>RUGV(R
7    CB     R3    R3  
CB%C5u>Di
 =1(9_&--pxC1>x
CB%R"C
3. Bố cục của Đồ án

 DK}D-,CB%G,#
CB(C&4P8/CB
 DN} CB%)-#*CB
=
 DQ} CB%,>>7>4P8/
CB%
 DS}OH=*-,CB%%
:-

Chương 2: Các khái niệm liên quan
KS
1. Luồng điều khiển (Control Flow)
C5%436C8")&Wn3Y_3
nCˆZ%&€G")&u=Rq&27
6C8if>j#*V6C8'1@-5
6C8")&''&1%V-WJumpZC
5%46(97>6C85-!1"V&B
5aWSemanticZG")&E27Cl1)
>j1CB%>H
1.1. Đồ thị luồng điều khiển (Control Flow Graph)
Định nghĩa 1:UGVWTC(Z37GV'T4(8
W_Z|/FWu_C_hZ,4(Wo_Zoh
DW3Z7o31/8,1/8
T2E8:%-'

Wc …P Z8)'
8,
n
Wc ƒOZ8)'8
Định nghĩa 2:UGVG")&WControl Flow GraphZ37G

VG")&7CBO7GVC'x8
1)*1(,7H-CBO,%&€
G")&COT/u4(%*CBOux
8nW2,7H-CCBOZVa
4(}PoXWnZ4(%*1>RE3\oXWnZ4(%*1
)%,)<EE
K[
pBNKDCB,GVG")&2
1.2. Khái niệm Điểm trội (Dominator) và Điểm trội sau (Post-
dominator)
L  -  H  \C  %&  €    #  -  yC7{  
WDominanceZ58GV'
Định nghĩa 1} C7GV',8%gc …P W]

Z38'Cv78…C78q*6OC
GVl8c …P *8q"0!…7O…1/
7&C7WDominatorZq
K^
L-…C7qCGVG")&2,
,-CCBC6C1(@3*q1
@Bgg…+(1@C'
•-C7'=}
o OhE}x8C7='
o =%g}*8…C78q,8qC78D
)'8…C78D
o =(h2}*8…C78q,8qC78
…B…•q
Định nghĩa 2}  D8    /  …    C7    C@  *(  WImmediate
DominatorZq*…C7q3…Žq3,)'78D)0
!DC78q3…C7D

Định nghĩa 3}DH&C7WDominator TreeZ7GV'
T,8%gc …P 7H%G8GVT3
'788c …P 3,'758…,8q*…
C7C@*(q
Ke
pBNNDCB,H&C72,GVCpBNK
Định nghĩa 4} C7GV',8)*8c ƒO38
'&'78&C7>qWO>]\_>Z*6
lq*8)*8c ƒO"0!…7OD8/…
&C7>q
Định nghĩa 5}D8/…&C7>C@*(q*…
7&C7>q3…Žq3)GE8D6…&C7
>,=D&C7>q
Định nghĩa 6}DH&C7>WO>]\C C__Z7GV
'T,8)*8c ƒO7H%G8T3'
78c ƒO,'758…,8q*…&
C7>C@*(q
pBNQDH&C7>GVG")&CpBNK
1.3. Phụ thuộc điều khiển (Control Dependence)
Định nghĩa 1}T/T7UGVG")&T/…,q
8CT3q(R7")&…*0!}
i. D'7C@*(Ol…*q
ii. q&C7>%6)B8D7OWCl…,qZ
K`
iii. q)&C7>…
*q(R7")&…3)'…'&'"8
Định nghĩa 2}UG V(R 7")&WControl Dependence
GraphZl)*lUGVG")&T7GV%G8
T,C'7'l8…*8q*q(R7
")&…UGV(R7")&'&1hH@lUG

VG")&,H&C7>>R74,7(2
E(ƒW
N
Z3,>8CGVG")&
Định nghĩa 3:u;")&7H-")&D4(
H-(R7")&,D
Định nghĩa 4}T/UGVG")&T7H8((CB
1WAbstract Syntax TreeZ7CB'6C8D8
T%&€H-,%&2CB8
UGV(R7")&E%<UGVG5-T27
(R75-l8…*8q*0!}
 …7oC_Wc …P Z3q%&€7(
(')vC%6)†,|:(:,;"
)-D1!True
 …%&€78")&WPredicate NodeZ,q%&€
7(vC@*(C,;")&…*
…2,H-:(B…,q1!
 C_3*…2,H-")-"B
…,q1! C_X>_(R7,
q7H-")-
Kd
pBNSD(R7")&CBCpBNK
NM
pBN[DCB,UGV(R7")&2
NK
2. Luồng dữ liệu (Data Flow)
2.1 Phụ thuộc dữ liệu
97(R75-l78…*8q'aCv,-=
CB'&%Vf*#-2@8%V
1

Định nghĩa 1}97UGV(R75-1Va#7
H8((Cl17CB27(R75-l
8\*8•*0!65")->}
 8\Va%*h
 8•>R%*h
 L'7Va%*h5\,•
p(R75-%&VGfCV%*
1VaTCV1=E•(R7,68\
(R7,8
pBN^DCB,UGV(R75-2
NN
Định nghĩa 2}UGV(R7CBGV(R7"
)&'(R75-W:GV(R7
5-'(R7")&Z
pBNeUGV(R7CBCBCpBN^
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>RW)=-P_nWZ3,VC=H-Z%<7
H-GV(R71=7€%v7
(r(-GV2,CBU'%*=
fCV7%*'CH-
pBN` 4(%*1Va,>R7CB
b. Xác định tập biến được định nghĩa:
q*1Va%*EH-''1)%:
)<E34(%*1VaEH-)=-\_nWZ
DF')wfCV%*}
o 263%*17CV%v7H-
CC1(B%*h6-<%CH-
%*1Va,%*h6-<(=%(H

-%*1>R
o 97%*'&1>&C"*7)'
/ CDi3*%*'1C"E
CVBCV%*')%Vf3*%*'
NS
1C"EC"*BCV%*'
>j%Vf
CC7>C1(:%-,-hV%*1
Va,%*1>R')3')8>R
%*3%*1,C51')%*
1/*7(2fCV1
U,%*3%H'7%*,(C
'+%*,B*8>j*7*(4>}
b_x(r(%G(r(,>Ru=
R}
DH-}•‚•xŒ
qB'&Cv\oXWZ••‘,PoXWZ••3h‘3
CV+(R7,CV+,B*+(
':CPoXWZ3PoXWZ••33h‘
2.3 Xác định các phụ thuộc dữ liệu
C)hV(R75-8$Cv,B
)'G5-5CH-Cj3H-
")-8>j)hr*(R75-5H
-7);76C8Cj
D8hr,=R>}
•…Wh3Z

C_>•h‹Œ
•hŒ%•Œ
nW’%Z ““K

C_>•‹%‹C_>Œ
_>_ ““N
C_>•J%‹C_>Œ

N[

×