1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo tốt nghiệp 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’

31 808 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Báo cáo tốt nghiệp 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’
Người hướng dẫn Giáo viên hướng dẫn:
Trường học Học viện Kỹ thuật Quân sự
Chuyên ngành Công nghệ Thông tin, An ninh Mạng
Thể loại Báo cáo tốt nghiệp
Thành phố Hà Nội
Định dạng
Số trang 31
Dung lượng 1,31 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lỗi ngữ nghĩa:khi chương trình không còn lỗi cú pháp, chương trình có thể chạy được nhưng lại cho kết quả của một số biến tại câu lệnh nào đó không chính xác.. Đồ thị luồng điều k

Trang 2

NỘI DUNG

Phần 1 Mở đầu và một số khái niệm liên quan.

Phần 2 Rút gọn chương trình là gì?

Phần 3 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

Phần 4: Kết luận.

Trang 3

Phần 1

Mở đầu và một số khái niệm liên quan.

Đặt vấn đề.

Lỗi chương trình là gì?

Luồng điều khiển, và luồng dữ liệu.

Đồ thị luồng điều khiển và đồ thị luồng dữ liệu Tập biến được định nghĩa,Tập biến được sử dụng Phụ thuộc điều khiển, Phụ thuộc dữ liệu.

Trang 4

1.1 Đặt vấn đề.

phần mềm là làm sao giảm chi phí sản xuất phần mềm.

 Phải có một hệ thống trên đó có tích hợp nhiều công cụ khác nhau để xử lý chương trình sau lập trình như: kiểm thử, bảo trì…

Sửa lỗi (Debugging) là một quá trình lập trình viên tương tác với chương trình để tìm ra lỗi của chương trình sau khi lập trình

Trang 5

1.2 Lỗi chương trình là gì?

Lỗi chương trình là các biến cố của chương trình làm cho chương trình không thể thực thi được hoặc thực thi trả về kết quả không chính xác.

Lỗi cú pháp là lỗi mắc phải khi lập trình viên viết câu lệnh không đúng cú pháp của ngôn ngữ lập trình.

Lỗi ngữ nghĩa:khi chương trình không còn lỗi cú pháp,

chương trình có thể chạy được nhưng lại cho kết quả của một

số biến tại câu lệnh nào đó không chính xác.

Lỗi ngữ nghĩa khó phát hiện hơn lỗi cú pháp.

5

Trang 6

1.3 Luồng điều khiển, và luồng dữ liệu.

 Luồng điều khiển là dãy các câu lệnh được thực thi liên tiếp.

Trang 7

 Luồng dữ liệu là dãy các phép truyền, sử dụng và biến đổi

dữ liệu được thực hiện trong quá trình thực thi của chương trình máy tính.

7

Trang 8

1.4 Đồ thị luồng điều khiển, đồ thị luồng dữ liệu.

 Đồ thị luồng điều khiển cho một chương trình P là một đồ thị trong đó mỗi nút được kết hợp với một câu lệnh của

chương trình P và các cung biểu diễn luồng điều khiển trong P.

 Đối với đồ thị luồng dữ liệu thì các cung biểu diễn phụ

thuộc dữ liệu của các câu lệnh.

 Cả hai đều là đồ thị có hướng.

Trang 9

1.5 Tập biến được định nghĩa, Tập biến được sử dụng.

 Tập các biến được định nghĩa (Definition Set) tại câu lệnh n

Def(n): là tập các biến tại đó giá trị của nó bị thay đổi khi câu lệnh thực thi

Tập các biến được sử dụng (Reference Set) Ref(n) tại câu lệnh n

là tập các biến có mặt trong câu lệnh, tham gia vào việc tính toán làm thay đổi giá trị của các biến được định nghĩa

VD:

9

Trang 10

1.6 Phụ thuộc điều khiển, Phụ thuộc dữ liệu.

 Phụ thuộc điều khiển (Control Dependence) là mối quan hệ giữa một câu lệnh điều khiển với một đỉnh trực tiếp thuộc vùng điều khiển của nó

Trang 11

 Cung phụ thuộc dữ liệu từ đỉnh u đến đỉnh v nếu:

11

Trang 12

Phần 2

Rút gọn chương trình là gì?

Lịch sử ra đời.

Khái niệm Rút gọn chương trình.

Các thuật toán Rút gọn chương trình.

Thuật toán sử dụng đồ thị Phụ thuộc chương trình.

2.1

2.2

2.3

Trang 13

2.1 Lịch sử ra đời.

 Được Mark Weiser đưa ra đầu tiên năm 1979

Ý tưởng xuất phát từ quá trình quan sát việc tìm và sửa lỗi

chương trình của các lập trình viên như sau:

 Chương trình P gồm n câu lệnh s1,s2…sn gọi D(i,x) là tập các câu lệnh thuộc P ảnh hưởng đến giá trị của biến x tại câu lệnh si

 Giả sử, lập trình viên phát hiện thấy giá trị của biến x tại câu lệnh si, họ sẽ phải: duyệt trên tập D(i,x) và các tập D(j,x) (j≠i)

Ý tưởng: làm sao để có được các câu lệnh ảnh hưởng đến giá trị của biến x tại câu lệnh i một cách nhanh chóng và chính xác

13

Trang 14

2.2 Khỏi niệm Rỳt gọn chương trỡnh.

Chươngưtrìnhưrútưgọn(Sliced program)ưlàưmộtưchươngưtrìnhưthuưđư

ợcưtừưmộtưchươngưtrìnhưgốcưnàoưđóưbằngưcáchưloạiưbỏưđiưtừưchươngưtrìnhưgốcưmộtưhoặcưnhiềuưcâuưlệnhưtheoưmộtưtiêuưchuẩnưnàoưđóưmàưvẫnưđảmưbảoưchươngưtrìnhưđượcưrútưgọnưvẫnưthựcưthiưđược

ưViệcưtạoưraưchươngưtrìnhưđượcưrútưgọnưđượcưgọiưlàưrútưgọnưchư

ơngưtrìnhư(Programưslicing).

ưTiờu chuẩn được đề cập đú là cỏc cõu lệnh thuộc chương

Trang 15

 VD: Rút gọn chương trình theo biến “result” tại câu lệnh thứ 14

15

Trang 16

2.3 Thuật toán sử dụng đồ thị luồng điều khiển.

 Lấy đồ thị luồng điều khiển làm biểu diễn trung gian để tính

toán chương trình rút gọn

 Tập liên quan (Relevant Set) cho biến v và câu lệnh s (<v,s>) tại câu lệnh n R(n) là tập các biến của chương trình có ảnh hưởng trực tiếp đến biến v tại câu lệnh s khi câu lệnh n thực thi

Xác định chương trình rút gọn qua:

Trang 17

Chi tiết các bước tính tập liên quan tại mỗi nút:

Khởi tạo tất cả các tập liên quan bằng rỗng

Thêm v vào tập liên quan của nút n relevant(n).

Với m là nút cha của n, gán relevant(m) giá trị:

Thực hiện quay lui từ trên xuống dưới, lặp lại bước (3) cho đến khi nút cha của n là nút đầu tiên của đồ thị luồng điều khiển

17

Trang 18

 Ví dụ: Các tập liên quan cho một rút gọn với chuẩn <8,a> Các tập liên quan được tính từ dòng thứ 8 1:

R(7)=(R(8)-DEF(7)) + (REF(7) if R(8)∩DEF(7) ≠{})

=({a}-{a}) + ({b, c} if {a} ∩{a} ≠{}) ={b; c}…

Trang 19

Xác định chương trình rút gọn S từ các tập liên quan của chương trình P:

Tại mỗi câu lệnh m của chương trình, xét hai tập Def(m) và Relevan(m+1).

Nếu Def(m) ∩Relevan(m+1) ≠ rỗng thì câu lệnh đó thuộc chương trình rút gọn S.

Ví dụ như trong hình trên thì chương trình được rút gọn bao gồm các câu lệnh:7,6,2 và 1.

19

Trang 20

2.4 Phương pháp dùng Đồ thị phụ thuộc.

Các bước của phương pháp:

 Xây dựng một Đồ thị phụ thuộc từ chương trình gốc.

 Rút gọn Đồ thị phụ thuộc vừa xây dựng.

 Biến đổi đồ thị phụ thuộc vừa được rút gọn về thành

chương trình rút gọn.

Các bước này là chung cho các thuật toán cho chương trình đơn thủ tục và đa thủ tục.

Trang 21

PDG cho chương trình P (GP)là một đồ̀ thị có hướng

Các đỉnh của GP biểu diễn các câu lệnh gán và câu lệnh

điều khiển xuất hiện trong chương trình P

GP có đỉnh đặc biệt gọi là Entry Vertex (START).

Các cung của PDG biểu diễn phụ thuộc điều khiển (Control Dependence) hoặc phụ thuộc dữ liệu hay còn gọi là phụ thuộc luồng (Data Dependence)

Gốc của một cung phụ thuộc điều khiển luôn là một Entry Vertex hoặc một đỉnh điều khiển(Là một đỉnh tương ứng với câu lệnh điều khiển).

21

Trang 22

GP chứa cung phụ thuộc điều khiển từ đỉnh u đến đỉnh v nếu:

phần đó không nằm trong bất kì vòng lặp hoặc vùng lệnh điều kiện nào cả.

của P nằm trực tiếp trong vòng lặp hoặc vùng câu lệnh điều kiện

Với đỉnh s của PDG G, rút gọn của G tại đỉnh s kí hiệu là

Slice(G,s) là một đồ thị chứa tập đỉnh và tập cung thỏa mãn:

Trang 23

Phần 3

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.

Mô hình hệ thống ở mức đơn giản

Mô hình hệ thống ở mức chi tiết.

Trang 24

3.1 Mô hình hệ thống ở mức đơn giản.

Trang 25

3.2 Mô hình hệ thống ở mức chi tiết.

25

Trang 26

3.3 Cài đặt.

 Xây dựng mô-đun chuẩn hóa chương trình

 Cài đặt đối tượng đồ thị phụ thuộc chương trình

 Xây dựng các phươn thức khởi tạo đồ thị

 Xây dựng phương thức đồ thị hóa một chương trình

 Xây dựng phương thức Rút gọn đồ thị phụ thuộc chương trình

 Xây dựng phương thức chương trình hóa đồ thị thành chương trình

Trang 28

4.1 Kết quả thu được.

lời gọi hàm.

trình.

Trang 29

4.2 Hạn chế.

Việc xây dựng hệ thống hỗ trợ cho nhiều ngôn ngữ lập trình

khác nhau sẽ mất nhiều thời gian vì các ngôn ngữ khác nhau sẽ có

cú pháp câu lệnh khác nhau

 Đối với các ngôn ngữ hướng đối tượng, cách tổ chức và cấu

trúc chương trình có một số điểm khác so với các ngôn ngữ

truyền thống nên sẽ khó cài đặt

 Việc chuyển đổi cài đặt từ thuật toán Rút gọn tĩnh đến thuật

toán Rút gọn động cũng rất phức tạp vì phần khó nhất nằm không nằm ở phần cài đặt thuật toán Rút gọn tĩnh

29

Trang 30

4.3 Hướng phát triển.

Các hướng phát triển của hệ thống như sau:

đối tượng.

cho ra các chương trình rút gọn kích thước nhỏ hơn và có nhiều ứng dụng hơn.

Trang 31

Thank you!

31

Ngày đăng: 19/06/2014, 20:50

HÌNH ẢNH LIÊN QUAN

1.4. Đồ thị luồng điều khiển, đồ thị luồng dữ liệu. - Báo cáo tốt nghiệp 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’
1.4. Đồ thị luồng điều khiển, đồ thị luồng dữ liệu (Trang 8)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w