Thông tin tài liệu
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 [...]... đặt thuật toán rút gọn chương trình sử dụng Đồ thị phụ thuộc cho các chương trình đơn thủ tục, đa thủ tục, các chương trình cơ bản trong ngôn ngữ Visual C# Tích hợp các Module để hoàn thiện hệ thống Hỗ trợ sửa lỗi chương trình đảm bảo mục tiêu đề ra 3 Bố cục của Đồ án Chương 1 :Chương này giới thiệu và trình bày nguồn gốc và quá trình phát triển của thuật toán Rút gọn chương trình Chương 2: Trình. .. cách hiệu quả cho một ngôn ngữ lập trình hướng đối tượng Từ đó hướng tới xây dựng hệ thống hỗ trợ sửa lỗi chương trình viết bằng ngôn ngữ hướng đối tượng tương ứng Chúng tôi sử dụng những mục tiêu sau để cài đặt 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: o Hệ thống phải có khả năng hỗ trợ cho toàn bộ các đặc điểm của ngôn ngữ lập trình bao gồm: các kiểu dữ liệu... chương trình Theo từng thời kỳ phát triển của Rút gọn chương trình sẽ có các thuật toán Rút gọn chương trình tương ứng Ở giai đoạn đầu khi Weiser mới đưa ra khái niệm Rút gọn chương trình thì thuật toán được đề cập đó là thuật toán dựa trên Đồ thị luồng điều khiển (Control Flow Graph) Việc tính toán trên Đồ thị luồng điều khiển có điểm hạn chế và phức tạp nên một số nhà nghiên cứu đưa ra thuật toán rút gọn. .. Java, C++… vẫn được dùng và có ứng dụng rộng rãi Như vậy, ngôn ngữ lập trình thì rất đa dạng, các ngôn ngữ lập trình lại có cú pháp khác nhau vì thế việc xây dựng một hệ thống hỗ trợ sửa lỗi chương trình cho tất cả các ngôn ngữ là rất khó khăn và phức tạp Trong phạm vi đồ án này chúng tôi sẽ cố gắng cài đặt và xây dựng hệ thống hỗ trợ sử lỗi chương trình cho chương trình được viết bởi ngôn ngữ Visual... được sử dụng lại trong tương lai khi có một Module nào đó cần sử dụng đến Module đã được rút gọn rồi o Trình rút gọn sử dụng trong hệ thống phải là một công cụ có khả năng tích hợp, nó sẽ làm đơn giản hóa chương trình cho phép lập trình viên có khả năng dê dàng tìm ra lỗi một cách trực quan 12 Ứng dụng chính của trình rút gọn chương trình đó là hỗ trợ cho lập trình viên trong việc tìm và sửa lỗi chương. .. thước của chương trình rút gọn trong Rút gọn động Một ứng dụng rất lớn của rút gọn động đó là nó được dùng để định vị lỗi của chương trình một cách tự động mà trong Rút gọn tĩnh không thể làm được điều đó 11 1.3 Mục đích của đồ án Mục đích của công việc trong phạm vi đồ án này là nhằm nghiên cứu các thuật toán rút gọn tĩnh chương trình (Static Program Slicing) qua đó lựa chọn một thuật toán phù hợp... sử dụng Rút gọn chương trình để xác định các thành phần ảnh hưởng gián tiếp bởi việc sửa tại một điểm p nào đó Trong thuật toán đó người ta xét các trạng thái của các thao tác sửa khác nhau (thêm câu lệnh, xóa câu lệnh, sửa đổi các biến sử dụng trong câu lệnh…) Đầu tiên, rút gọn là một rút gọn được tính bằng việc quay lui từ điểm p, các câu lệnh định nghĩa trong rút gọn (Def) đó của các biến sử dụng. .. được sử dụng để xây dựng nhiều ứng dụng trong thực tế; thứ hai,Visual C# là một ngôn ngữ lập trình hướng đối tượng vì thế sẽ có nhiều điểm mới so với ngôn ngữ lập trình hướng cấu trúc truyền thống; thứ ba, với những gì mà chúng tôi đã tìm hiểu được thì hiện nay chưa có hệ thống cài đặt thuật toán rút gọn chương trình cho ngôn ngữ Visual C# 13 2 Kết quả đạt được Như đã trình bày ở trên, Rút gọn chương trình. . .đồ thị luồng điều khiển làm biểu diên trung gian, sau đó hai tác giả Agrawal và Horgan đã giải quyết thuật toán Rút gọn động bằng cách lấy Đồ thị phụ thuộc làm biểu diên trung gian [5,6] Trong đồ án này, khi nói đến khái niệm Rút gọn chương trình chúng ta sẽ hiểu đó là rút gọn lùi (khái niệm rút gọn “tiến” (Foreward Slice) không được đề cập trong đồ án này) 1.2 Phân loại các thuật toán Rút gọn chương. .. gọn dựa trên Đồ thị phụ thuộc dữ liệu (Data Dependence Gaph) Thuật toán này dê cài đặt và độ phức tạp của thuật toán có thể chấp nhận được song khi mới ra đời thuật toán này mới chỉ áp dụng cho việc Rút gọn tĩnh cho các chương trình đơn giản Rút gọn động được ra đời sau đó nhằm khắc phục những hạn chế của rút gọn tĩnh đó là kích thước của Chương trình rút gọn (Slied program) trong Rút gọn tĩnh lớn . 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. 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. 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ình CB1,*%<5 u>Di.$8/5Di%<,B}thứ
Ngày đăng: 19/06/2014, 21:16
Xem thêm: Đồ á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’, Đồ á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’