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

Nâng cao chất lượng phần mềm bằng các kỹ thuật program slicing

52 2 0

Đ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

Định dạng
Số trang 52
Dung lượng 1,53 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG -o0o - ĐỒ ÁN TỐT NGHIỆP Ngành Công nghệ Thông tin BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG -o0o - NÂNG CAO CHẤT LƢỢNG PHẦN MỀM BẰNG CÁC KỸ THUẬT PROGRAM SLICING ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Sinh viên thực hiện: Nguyễn Sỹ Linh NHIỆM VỤ THIẾT KẾ TỐT NGHIỆP Sinh viên: Nguyễn Sỹ Linh Mã số: 1351010032 Lớp: CT1301 Ngành: Công nghệ thông tin Tên đề tài: NÂNG CAO CHẤT LƢỢNG PHẦN MỀM BẰNG CÁC KỸ THUẬT PROGRAM SLICING NHIỆM VỤ ĐỀ TÀI Nội dung yêu cầu cần giải nhiệm vụ đề tài tốt nghiệp a Nội dung: - Nắm đƣợc khái niệm program slicing - Nắm đƣợc phƣơng pháp program slicing - Thử nghiệm số chƣơng trình đơn giản b Các yêu cầu cần giải Các số liệu cần thiết để thiết kế, tính tốn Địa điểm thực tập CÁN BỘ HƢỚNG DẪN ĐỀ TÀI TỐT NGHIỆP Ngƣời hƣớng dẫn thứ nhất: Họ tên: Nguyễn Trịnh Đông Học hàm, học vị: Thạc sĩ Cơ quan công tác: Khoa Công nghệ Thông tin – Trƣờng Đại Học Dân Lập Hải Phòng Nội dung hƣớng dẫn: ………………………………………………………………… Ngƣời hƣớng dẫn thứ 2: Họ tên: ………………………………………………………………………………… Học hàm, học vị:……………………………………………………………………………… Cơ quan công tác: ………………………………………………………………………………… Nội dung hƣớng dẫn: …………………… Đề tài tốt nghiệp đƣợc giao ngày … tháng … năm 20 Yêu cầu phải hoàn thành trƣớc ngày … tháng … năm20 Đã nhận nhiệm vụ: Đ.T.T.N Đã nhận nhiệm vụ: Đ.T.T.N Sinh viên Cán hƣớng dẫn Đ.T.T.N Hải Phòng, ngày …… tháng …… năm 20…… HIỆU TRƢỞNG GS.TS.NGƢT Trần Hữu Nghị Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phòng PHẦN NHẬN XÉT TÓM TẮT CỦA CÁN BỘ HƢỚNG DẪN Tinh thần thái độ sinh viên trình làm đề tài tốt nghiệp: Đánh giá chất lƣợng đề tài tốt nghiệp (so với nội dung yêu cầu đề nhiệm vụ đề tài tốt nghiệp) Nguyễn Sỹ Linh-Ct1301 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phòng Cho điểm cán hộ hƣớng dẫn: (Điểm ghi số chữ) Ngày tháng … năm 20… Cán hƣớng dẫn (Ký, ghi rõ họ tên) Nguyễn Sỹ Linh-Ct1301 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phòng PHẦN NHẬN XÉT ĐÁNH GIÁ CỦA CÁN BỘ CHẤM PHẢN BIỆN ĐỀ TÀI TỐT NGHIỆP Đánh giá chất lƣợng đề tài tốt nghiệp (về mặt nhƣ sở lý luận, thuyết minh chƣơng trình, giá trị thực tế, ) Nguyễn Sỹ Linh-Ct1301 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phòng Cho điểm cán phản biện (Điểm ghhi số chữ) Ngày tháng … năm 20… Cán chấm phản biện (Ký, ghi rõ họ tên) Nguyễn Sỹ Linh-Ct1301 10 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phịng Hình 15: (a) Đƣờng chƣơng trình mẫu Hình 2(a) với đầu vào n= (b) Các khái niệm luồng động cho đƣờng (c) Slice dynamic slicing với tiêu chuẩn (n = 1, 88, x) (d) Slice slicing không dừng thu đƣợc bỏ qua quan hệ IR Vai trò quan hệ định danh IR duyệt chƣơng trình theo hai hƣớng cho vào tất câu lệnh tính chất điều khiển cần thiết để đảm bảo kết thúc vịng lặp slice slicing Ví dụ 3.1.1.4: Chúng ta xem xét vai trò quan hệ định danh IR Xét đƣờng chƣơng trình mẫu Hình 2(a) với đầu vào n = thể Hình 15(a) Các khái niệm luồng dynamic với đƣờng slice slicing với tiêu chuẩn (n= 1, 88, {x}) đƣợc thể Hình 15(b) 15(c) Slice slicing thu đƣợc chƣơng trình kết thúc Tuy nhiên ta tính slice slicing khơng sử dụng quan hệ định danh IR thu đƣợc chƣơng trình khơng kết thúc thể Hình 15(d) Lý tƣờng quan hệ DU TC duyệt đƣờng theo hƣớng ngƣợc lại Nguyễn Sỹ Linh-Ct1301 38 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phịng Hình 16: (a) Chƣơng trình mẫu (b)Đƣờng với đầu vào n = Tuy nhiên duyệt quan hệ IR theo hƣớng ngƣợc lại làm cho slice slicing chứa câu lệnh không cần thiết để đảm bảo kết thúc Ví dụ 3.1.1.5: Hình 16(a) phiên sửa đổi chƣơng trình Hình 2(a) Hình 16(b) thể đƣờng chƣơng trình Từ đƣờng ta có(76, 711)phụ thuộc IR, (65, 76) thuộc DU (510, 711) thuộc TC Do câu lệnh có slice slicing câu lệnh khơng cần thiết để tính giá trị cuối z hay để kết thúc vòng lặp 3.1.2.Đồ thị phụ thuộc Agrawal Horgan phát triển hƣớng tiếp cận sử dụng đồ thị phụ thuộc để tính tốn slice dynamic slicing Thuật tốn họ tính tốn slice dynamic slicing khơng xác nhƣng có ích để hiểu thuật toán sau Hƣớng tiếp cận sử dụng đồ thị PDG đánh dấu đỉnh “đã thực hiện” cho tập đỉnh đƣợc đƣa Một slice dynamic slicing đƣợc tính tốn thơng qua cách tính slice sitatic slicing cho đồ gồm đỉnh đƣợc đánh dấu PDG Giải pháp khơng xác khơng tính đến tình tồn cạnh luồng PDG hai đỉnh đƣợc đánh dáu v1 v2 nhƣng có định nghĩa v1 không đƣợc sử dụng v2 Mặt khác, ta biểu diễn đỉnh đƣợc Nguyễn Sỹ Linh-Ct1301 39 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phòng đánh dấu nhiều vòng lặp đƣợc biểu diễn tất vòng lặp chí phụ thuộc khơng đƣợc lặp lại Ví dụ 3.1.2.1: Hình 18(a) đồ PDG chƣơng trình mẫu Hình 2(a) Giả sử ta muốn tính slice dynamic slicing với giá trị cuối x cho đầu vào n =2 Tất đỉnh PDG đƣợc thực đỉnh PDG đƣợc đánh dấu Thuật toán static slicing phần 2.1.2 tính slice dynamic slicing tồn chƣơng trình mẫu Tuy nhiên, ta nhận thấy câu lệnh gán x: = 18 không liên quan Phép gán đƣợc cho vào slice slicing tồn cạnh phụ thuộc luồng từ đỉnh x = 18 đến đỉnh write(x) nhƣng không biểu diễn phụ thuộc vịng lặp thứ hai Chính xác phụ thuộc xuất vịng lặp biến điều khiển i có giá trị lẻ Giải pháp thứ hai dựa đồ PDG có đỉnh phân biệt đồ phụ thuộc tƣơng ứng với lần xuất câu lệnh đƣờng Loại đồ thị gọi đồ thị phụ thuộc động DDG.Một tiêu chuẩn dynamic slicing đƣợc xác định đỉnh DDG slice dynamic slicing đƣợc tính tốn cách lấy tất đỉnh DDG mà từ đỉnh tiêu chuẩn tới Một câu lệnh hay tính chất điều khiển có slice slicing tiêu chuẩn đƣợc xem xét từ đỉnh xuất Nhƣợc điểm đồ thị PDG số đỉnh số câu lệnh thực thi không bị ràng buộc Ví dụ 3.1.2.2: Hình 18(c) đồ thị DDG cho chƣơng trình mẫu Hình 16(a) Tiêu chuẩn slicing tƣơng ứng với đỉnh có nhãn write(z) đỉnh từ đỉnh tới đƣợc in đậm.Ta thấy tiêu chuẩn không đƣợc xem xét từ đỉnh có nhãn x; = 18 câu lệnh gán tƣơng ứng khơng có slice slicing Nguyễn Sỹ Linh-Ct1301 40 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phịng Hình 17: Chƣơng trình Qn có O(2n) slice dynamic slicing khác Trong giải pháp thứ ba, Agarwal Horgan đề xuất cách giảm số đỉnh DDG cách kết hợp đỉnh có phụ thuộc ngồi ánh xạ đến tập lệnh Nói theo cách khác, đỉnh đƣợc xem xét tạo slice dynamic slicing Rõ ràng cách kiểm tra làm tăng số lần thực thi Đồ thị kết đƣợc gọi đồ thị phụ thuộc dynamic rút gọn RDDG chƣơng trình Slice dynamic slicing tính tốn dụng RDDG có độ xác nhƣ tính DDG Thuật tốn dùng đồ thị RDDG khơng có tất đƣờng thực Trong đồ thị cần phải lƣu ý vấn đề sau: Với biến, đỉnh tƣơng ứng đến định nghĩa cuối Với tính chất, đỉnh tƣơng ứng đến thực cuối Với đỉnh RDDG slice dynamic chứa đỉnh Ví dụ 3.1.2.3: Trong đồ thị DDG Hình 18(c) đỉnh có nhãn i = i+1 hai đỉnh bên phải có nhãn while (i c ) then (7) begin (8) z = (z + x) ; (9) while ( z > 30) (10) begin (11) x = (y + 1) ; (12) y = (((y - z) + 3) * y) ; (13) z = (z - 3) ; (14) end; (15) od; (16) end; (17) else (18) begin (19) z = (z - x) ; (20) end; (21) fi; (22) tmpvar = x; (23) emptyline=1; (24)end; Xét tiêu chuẩn slicing (n, {v}) = (19, {z}) n = 19 vị trí câu lệnh, v = z biến câu lệnh n Nguyễn Sỹ Linh-Ct1301 44 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phòng (1) begin (2) c = ; (3) b = (2 * a) ; (4) x = ; (5) z = 90 ; (6) if (b > c ) then (7) begin (8) z = (z + x) ; (9) while ( z > 30) (10) begin (11) x = (y + 1) ; (12) y = (((y - z) + 3) * y) ; (13) z = (z - 3) ; (14) end; (15) od; (16) end; (17) else (18) begin (19) z = (z - x) ; (20) end; (21) fi; (22) tmpvar = x; (23) emptyline=1; (24)end; Nguyễn Sỹ Linh-Ct1301 45 Đồ án tốt nghiệp Nguyễn Sỹ Linh-Ct1301 Trƣờng ĐHDL Hải Phòng 46 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phịng 4.2 Chương trình Kaveri u cầu để chạy chƣơng trình Kaveri: Eclipse: Eclipse phiên 3.0.x Indus Plug-in: Indus Plug-in phiên 0.6.x GroovyMonkey phiên 0.6.x Khi cài xong chƣơng trình có giao diện nhƣ sau: Bài tồn nhƣ sau: Chƣơng trình tính Tổng giai thừa số từ đến n Để cấu hình slice slcing ta vào Indus Configuration menu Nguyễn Sỹ Linh-Ct1301 47 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phịng Ta có code java toán: import java.io.*; public class Giaithua { public static int n,Sn; public Giaithua() { // TODO Auto-generated constructor stub } /** * @param args */ public static void main(String[] args) { int i=0; int j=0; int Ketqua=0; System.out.print("Nhap so n: "); try{ n = System.in.read(); } catch(IOException ex) { System.out.println("Khong doc duoc thong tin"); } for(i=1;i Other -> Kaveri ->Jimple View Khi ta có bảng dùng để thêm vào tiêu chuẩn slicing Nguyễn Sỹ Linh-Ct1301 48 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phòng Ta dùng nút bảng Jumple Statement để thêm vào tiêu chuẩn.Thứ tự nút từ trái qua phải là: Track Java Statements: Câu lệnh đƣợc chọn thị bật tắt nút Add as criteria (Pre-Execution): Thêm tiêu chuẩn câu lệnh liên quan tới chƣơng trình cần slicing Tiêu chuẩn đƣợc thêm vào dùng để điều khiển câu lệnh đƣợc bật nút Add as criteria (Post-Execution): Thêm tiêu chuẩn câu lệnh liên quan tới chƣơng trình cần slicing Tiêu chuẩn bổ sung thêm giá trị biểu thức đƣợcbật nút Remove Criteria: Loại bỏ câu lệnh có liên quan đến tiêu chuẩn toán Add as Java criteria (Pre-Execution): Nút tƣơng tự nhƣ nút Add as criteria (Pre-Execution) nhƣng dùng để thêm tất tiêu chuẩn lần bật nút Add as Java criteria (Post-Execution): Nút tƣơng tự nhƣ nút Add as criteria (Post-Execution) nhƣng dùng để thêm tất tiêu chuẩn lần bật nút Remove all Criteria: Loại bỏ tất câu lệnh liên quan tới tiêu chuẩn toán Để xem tiêu chuẩn ta vào Window -> Show View -> Other -> Kaveri >Slice information View Nguyễn Sỹ Linh-Ct1301 49 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phòng Để xem phụ thuộc tiêu chuẩn đƣợc chọn ta vào Window -> Show View -> Other -> Kaveri ->Dependence Tracking View Chạy Kaveri: Kích chuột phải vào Java file Java project navigator package explorer giao diện Eclipse chọn Indus -> Slice Java file or Indus -> Slice project Tại ta chọn tiêu chuẩn để thực slicing từ bƣớc trên.Sau chọn xong tiêu chuẩn ta kích vào run để chạy chƣơng trình slicing cho toán Nguyễn Sỹ Linh-Ct1301 50 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phòng KẾT LUẬN Với yêu cầu lớn em quan tâm đƣợc vấn đề liên quan tới lập trình, lệnh chƣơng trình, coding kiểm thử, kiểm chứng Để thực đƣợc vấn đề đòi hỏi nhiều thời gian, phải theo dõi chặt chẽ biến hay câu lệnh Đối với chƣơng trình nhỏ vấn đề dễ dàng thực đƣợc nhƣng với chƣơng trình lớn có hàng nghìn câu lệnh, nhiều biến chạy suốt dọc chƣơng trình việc theo dõi biến trở nên khó khăn khơng thể làm đƣợc làm đƣợc nhƣng tốn nhiều thời gian Vì có nhiều kĩ thuật đời nhằm giải vấn đề trên.Trong có kĩ thuật Program Slicing Program slicing kĩ thuật lấy từ chƣơng trình chả câu lệnh ảnh hƣởng đến giá trị tính tốn cụ thể điểm đƣợc quan tâm gọi tiêu chuẩn slicing Program slicing đƣợc triển khai áp dụng nhiều lĩnh vực công nghệ phần mềm nhƣ hỗ trợ gỡ rối chƣơng trình kiểm thử, bảo trì phần mềm… Hiện có nhiều phƣơng pháp slicing khác nhƣng thƣờng dùng kỹ thuật static slicing dynamic slicing chƣơng trình có cấu trúc Các kỹ thuật slicing thông dụng để sử dụng luồng liệu đồ thị phụ thuộc chƣơng trình để tính tốn slice slicing Ngồi số trƣờng hợp cụ thể ta sử dụng kỹ thuật program slicing khác nhƣ slicing dựa luồng thông tin, dựa quan hệ phụ thuộc Nguyễn Sỹ Linh-Ct1301 51 Đồ án tốt nghiệp Trƣờng ĐHDL Hải Phòng TÀI LIỆU THAM KHẢO [Wei1] M Weiser Program slicing [Wei2] M Weiser Program slices: formal, psychological, and practical investigations of an automatic program abstraction method PhD thesis, University of Michigan, Ann Arbor, 1979 [3] K.J Ottenstein and L.M Ottenstein The program dependence graph in a software development environment In Proceedings of the ACM SIGSOFT/SIGPLANSoftware Engineering Symposium on Practical Software Development Environments [4] J.-F Bergeretti and B.A Carre Information- ow and data- ow analysis of while programs ACM Transactions on Programming Languages and Systems [5] B Korel and J Laski Dynamic slicing of computer programs Journal of Systems and Software [6] S Horwitz and T Reps The use of program dependence graphs in software engineering In Proceedings of the14th International Conference on Software Engineering [7] S Horwitz, T Reps, and D Binkley Interprocedural slicing using dependence graphs ACM Transactions on Programming Languages and Systems [8] H Agrawal and J.R Horgan Dynamic program slicing In Proceedings of the ACM SIGPLAN’90 Conference on Programming Language Design and Implementation [9] H Agrawal, R.A DeMillo, and E.H Spafford Dynamic slicing in the presence of unconstrained pointers In Proceedings of the ACM Fourth Symposium on Testing, Analysis, and Verification (TAV4) [10] Frank Tip, A Survey of Program Slicing Techniques, Nguyễn Sỹ Linh-Ct1301 52

Ngày đăng: 16/11/2023, 07:35

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w