Đồ á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’

79 771 0
Đồ á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’

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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đồ 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Đồ thị phụ thuộc điều khiển tương ứng 21 Hình 2.6. Chương trìnhĐồ 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Đồ 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 [...]... đặ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 Đồ ánChươ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ìnhChươ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 đó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 '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. 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. 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ứ

Ngày đăng: 19/06/2014, 21:16

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan