1. Trang chủ
  2. » Công Nghệ Thông Tin

Một kỹ thuật kiểm chứng mô hình với Java path finder

11 12 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 11
Dung lượng 1,09 MB

Nội dung

Bài viết trình bày một kỹ thuật kiểm chứng mô hình với java path finder (JPF). Đây là một kỹ thuật kiểm chứng hỗ trợ các miền dữ liệu trừu tượng nhằm co lại miền dữ liệu lớn trong chương trình java, miền dữ liệu hữu hạn làm cho việc kiểm chứng trở nên dễ dàng hơn.

TẠP CHÍ KHOA HỌC − SỐ 14/2017 MỘT KỸ KỸ THUẬ THUẬT KIỂ KIỂM CHỨ CHỨNG MƠ HÌNH VỚI JAVA PATH FINDER Nguyễn Đức Giang1(1), Lưu Thị Bích Hương2, Trần Bá Hùng1, Trần Thị Thu Ngân3 Viện Công nghệ Thông tin, Viện Hàn lâm Khoa học Công nghệ Việt Nam Trường Đại học Sư phạm Hà Nội Trường Đại học Ngoại thương Tóm tắ tắt: Trong báo này, chúng tơi trình bày kỹ thuật kiểm chứng mơ hình với java path finder (JPF) Đây kỹ thuật kiểm chứng hỗ trợ miền liệu trừu tượng nhằm co lại miền liệu lớn chương trình java, miền liệu hữu hạn làm cho việc kiểm chứng trở nên dễ dàng Kỹ thuật sử dụng liệu trừu tượng để tính tốn cách xấp xỉ chương trình ban đầu, tính chất an tồn miền trừu tượng chương trình ban đầu Bài báo đưa cách tiếp cận tăng cường JPF với trình thơng dịch trừu tượng chế phù hợp với trạng thái trừu tượng, từ đó, người dùng chọn trừu tượng để sử dụng cho ứng dụng cụ thể Để cụ thể hóa kỹ thuật này, cần phân tích chương trình đa luồng java, nơi mà vết thời gian tiết kiệm nhớ việc sử dụng JPF Từ khóa: khóa Kiểm chứng mơ hình, tìm kiếm đường dẫn Java, diễn giải trừu tượng, khơng gian trạng thái ngang GIỚI THIỆU Trong ngành công nghệ phần mềm, việc cung cấp ý tưởng hay ứng dụng công nghệ thông tin (CNTT) đời sống kinh tế xã hội đại việc kiểm chứng phân tích cách kỹ lưỡng nhằm đảm bảo chất lượng giảm thiểu rủi ro thiệt hại cho sản phẩm ứng dụng trước đưa thị trường cần thiết Hiện phương pháp kiểm chứng hình thức áp dụng phổ biến Kỹ thuật đặc tả trạng thái không gian việc kiểm tra mơ hình phương pháp phổ biến để kiểm chứng mơ hình tìm lỗi chương trình Kiểm tra mơ hình phương pháp phân tích hữu ích, đặc biệt cho việc phân tích chương trình đa luồng Cơng cụ sử dụng để kiểm tra tính chất vi phạm (lỗi) chương trình đa luồng với kỹ thuật kiểm chứng mơ hình java path finder (JPF), với mục tiêu bytecode java (1) Nhận ngày 11.02.2017; chỉnh sửa, gửi phản biện duyệt đăng ngày 20.3.2017 Liên hệ tác giả: Nguyễn Đức Giang; Email: ndgiang@ioit.ac.vn TRƯỜNG ĐẠI HỌC THỦ ĐÔ H NỘI JPF máy ảo Java đặc biệt có hỗ trợ quay lui, kết hợp trạng thái, khơng bất định liệu định lập kế hoạch JPF xây dựng không gian trạng thái chương trình on-the-fly việc thực chương trình máy ảo Sự chuyển tiếp không gian trạng thái chuỗi hướng dẫn bytecode thực chủ đề nhất, nơi mà đường dẫn chuỗi đại diện cho lựa chọn không xác định tương ứng với quy tắc Tại ranh giới chuyển tiếp, JPF ghi nhớ trạng thái JVM (chương trình trạng thái) hình thức cho mục đích quay lui trạng thái tương ứng Các trạng thái JVM hoàn chỉnh bao gồm tất đối tượng heap, ngăn xếp tất chủ đề tất liệu tĩnh Những thay đổi trạng thái JVM thực bên thông dịch lệnh bytecode, phần JPF JPF chứa thơng dịch cụ thể, mơ hình chung cho tất lệnh bytecode Java lưu giữ giá trị cụ thể biến chương trình JPF thực thi cụ thể thị dòng chảy khơng gian trạng thái Hạn chế JPF tính hữu dụng thực tế thực dịng chảy đầy đủ dễ bị nổ trạng thái Mặc dù JPF hỗ trợ nhiều tối ưu, bao gồm giảm thứ tự phần giảm đối xứng, việc kiểm tra tất chủ đề với việc thực cụ thể tốn nhiều thời gian địi hỏi nhiều nhớ chương trình Một giải pháp sử dụng liệu trừu tượng để làm giảm miền lớn biến chương trình, lựa chọn miền nhỏ việc kiểm chứng chương trình thuận lợi thơng qua dịng chảy khơng gian trạng thái khả thi Hãy xem xét ví dụ Hình Đây biến thể đơn giản cổ điển - vấn đề người dùng với đối tượng chia sẻ lớp liệu Các tính chất an tồn quan tâm vắng mặt kiểu liệu JPF đưa hành vi chương trình cho tất giá trị có biến cịn lại, nghĩa tất giá trị số nguyên từ đến 1000000, khơng gian trạng thái chương trình sẽ lớn Người ta sử dụng dấu hiệu trừu tượng biến lại để thay miền lớn kiểu liệu int Java với nhỏ miền hữu hạn {POS, ZERO, NEG}, mà mã hóa dấu hiệu biến cịn lại, trừu tượng giá trị thực tế Tất trạng thái chương trình có khác biệt giá trị biến thu gọn để ba trạng thái khác với giá trị trừu tượng tương ứng Do đó, khơng gian trạng thái đưa JPF với khái niệm trừu tượng nhỏ nhiều, làm giảm thời gian cần thiết để xác minh tính chất an toàn định, tất hành vi chương trình phân tích Trong phần báo, chúng tơi trình bày tảng JPF Phần ba báo kết sử dụng truy vết thực thi kiểm chứng mơ hình JAVA Phần cuối kết luận báo TẠP CHÍ KHOA HỌC − SỐ 14/2017 NỀN TẢNG 2.1 Trừu tượng hóa miền liệu với JPF 2.1.1 Khái niệm a) Kiểm chứng mô hình Kiểm chứng mơ hình kỹ thuật xác minh khám phá tất trạng thái hệ thống có cách brute-force Kỹ thuật kiểm chứng mơ hình mơ tả hành vi hệ thống có cách giải tốn học xác rõ ràng Nó - trước thực kiểm chứng hình thức - mơ hình xác hệ thống này, thường dẫn đến việc phát bất tồn, khơng rõ ràng, khơng qn hệ thống hình thức kiểm chứng cụ thể Vấn đề thường phát giai đoạn muộn nhiều thiết kế Các mơ hình hệ thống kèm thuật tốn có hệ thống khám phá tất chi tiết mơ hình hệ thống Đây sở cho loạt kỹ thuật kiểm chứng khác nhau, từ thăm dò đầy đủ (kiểm chứng mơ hình) để thí nghiệm với tập hạn chế kịch mơ hình (mơ phỏng), thực tế (thử nghiệm) Dưới sơ đồ tiếp cận phương pháp kiểm chứng mơ hình: Hình 1: Sơ đồ tiếp cận phương pháp kiểm chứng mơ hình TRƯỜNG ĐẠI HỌC THỦ ĐÔ H NỘI b) Diễn giải trừu tượng Một số nội dung bao hàm lý thuyết diễn giải trừu tượng: − Kiểm chứng (verification): Xác định chứng minh cách tự động tính chất hành vi chương trình máy tính phức tạp − Trừu tượng (abstraction): Lý luận / tính tốn thực trừu tượng hóa giao dịch hành vi với yếu tố hành vi liên quan đến tính chất cần xem xét − Chứng minh (theory): Sử dụng kỹ thuật diễn giải trừu tượng (abstraction interpretation) − Ngữ nghĩa (semantics): Các ngữ nghĩa cụ thể hình thức hóa chương trình (là mơ hình tốn học) tập hợp tồn thực thi mơi trường thực thi Hình 2: Ví dụ đồ họa cho hành vi xảy Về mặt logic học: Các ngữ nghĩa tốn học cụ thể chương trình "vơ hạn" đối tượng tốn học, khơng tính tốn; tất câu hỏi khó ngữ nghĩa chương trình cụ thể khơng thể định Ví dụ: đối số Kurt Godel việc hủy bỏ Giả sử hủy bỏ (P) trả giá trị true P hủy bỏ tất liệu đầu vào Chính vậy, chương trình sau đưa mâu thuẫn: P ≡ while termination(P) skip od Tính an toàn (safety property): Một chứng xác định an toàn bao gồm việc chứng minh giao điểm ngữ nghĩa cụ thể chương trình khu vực cấm rỗng Hình mơ tả đồ thị quỹ đạo tính an tồn Còn vấn đề logic học (các ngữ nghĩa cụ thể khơng thể tính tốn) khơng thể cung cấp câu trả lời hoàn toàn tự động với nguồn tài ngun máy tính hữu hạn khơng tương tác người không chắn câu trả lời TẠP CHÍ KHOA HỌC − SỐ 14/2017 Hình 3: Ví dụ tính an tồn Kiểm tra gỡ lỗi: Việc kiểm tra gỡ lỗi chương trình bao gồm việc xem xét tập tập có khả thực thi tốt, đồng thời xem xét chứng minh xem có phải chứng minh đắn khơng, xem xét đến khía cạnh khơng đảm bảo cho vấn đề chương trình Hình minh họa việc kiểm tra mơ lỗi chương trình: Hình 4: Kiểm tra tính chất/mơ lỗi chương trình Dựa vào lý thuyết trên, tiến hành việc mô tả trừu tượng hóa chương trình diễn giải trừu tượng, bao gồm việc xem xét ngữ nghĩa trừu tượng Việc xem xét ngữ nghĩa trừu tượng nói lên siêu ngữ nghĩa cụ thể chương trình Vì ngữ nghĩa trừu tượng bao gồm tất trường hợp cụ thể chương trình Ngữ nghĩa cụ thể diễn giải trừu tượng sau: ngữ nghĩa trừu tượng đảm bảo tính an tồn (có nghĩa khơng giao khu vực cấm) kết luận ngữ nghĩa cụ thể Hình mơ tả cho vấn đề ngữ nghĩa cụ thể TRƯỜNG ĐẠI HỌC THỦ ĐƠ H 10 NỘI Hình 5: Ngữ nghĩa cụ thể chương trình diễn giải trừu tượng 2.1.2 Trừu tượng miền liệụ với JPF Rất nhiều công việc thực liệu trừu tượng (ví dụ, trừu tượng vị ngữ, trừu tượng ngữ nghĩa [1,2,6]), có vài phương pháp nhắm mục tiêu Java Một ngoại lệ đáng ý công cụ Bandera [4] Nó thực thành cơng trừu tượng trạng thái chương trình Java cho phương pháp chuyển đổi nguồn tới nguồn dựa đặc tả trừu tượng liệu chọn (và định nghĩa) người dùng Hình 6: Ví dụ luồng procedure – Consumer Tiếp theo, chúng tơi trình bày JPF hỗ trợ trừu tượng kiểu liệu số Java cách tiếp cận dựa thông dịch tùy chỉnh hướng dẫn bytecode Các giá TẠP CHÍ KHOA HỌC − SỐ 14/2017 11 trị truyền vào tự động thực hiện, sử dụng chế thuộc tính JPF nhờ loại bỏ việc sử dụng thủ công để truyền giá trị, cách truyền giá trị cụ thể cách thủ cơng khơng cịn trì Phương pháp JPF thực đánh giá số trừu tượng hữu ích, bao gồm ký hiệu khoảng thời gian, trừu tượng hóa khác thêm vào cách dễ dàng người sử dụng, JPF cung cấp chế trừu tượng chung chung mở rộng Ý tưởng phương pháp tiếp cận là: (1) sử dụng miền liệu trừu tượng nhỏ đặc tả cho biến chương trình cụ thể thay kiểu liệu định nghĩa cụ thể xác định ngôn ngữ Java, chẳng hạn kiểu int float, (2) để thay việc giải thích hành động cụ thể liên quan đến việc trừu tượng biến chương trình, với giải thích trừu tượng phi tiêu chuẩn hướng dẫn bytecode Java hoạt động lĩnh vực trừu tượng, cách hành vi chương trình trừu tượng xấp xỉ hành vi chương trình gốc Ví dụ, kết việc thêm hai giá trị POS POS, kết việc thêm POS NEG POS, NEG ZERO Kỹ thuật tuân theo khuôn khổ lý thuyết diễn giải trừu tượng [5] 2.2 Sự ngang khoảng thời gian nghỉ java pathfinder Các lĩnh vực trừu tượng ngang tập hợp {ODD, EVEN}, mà thành phần đại diện cho số lẻ chí giá trị tương ứng Trừu tượng sử dụng cho giá trị số nguyên (các số, biến chương trình kiểu liệu Java int long), khái niệm kỳ quặc ngang khơng có ý nghĩa cho giá trị floating-point với non-zero phần thập phân JPF hỗ trợ hai biến thể trừu tượng khoảng Cả hai tham số với hai định nghĩa người dùng giá trị ned MIN MAX Sự trừu tượng khoảng định nghĩa sau: Tên miền trừu tượng cho hai số nguyên fl giá trị thả điểm MIN MAX tập hợp {LESS, INSIDE, LỚN}, mà thành phần thể thực tế giá trị nhỏ MIN, MIN MAX, lớn MAX, tương ứng, trừu tượng sử dụng cho giá trị số nguyên giá trị floating-point (tức là, cho số biến chương trình tất kiểu liệu nguyên thủy Java, bao gồm long double) Các biến thể thứ hai trừu tượng khoảng thời gian xác bảo tồn giá trị cụ thể khoảng [MIN, MAX] Tên miền trừu tượng cho hai giá trị nguyên MIN MAX tập hợp {LESS, MIN, MIN + 1, , MAX-1, MAX, LỚN} Tuy nhiên, trừu tượng sử dụng với khoảng nhỏ, trừu tượng hóa khác định nghĩa tương tự TRƯỜNG ĐẠI HỌC THỦ ĐÔ H 12 NỘI THỰC THI TRUY VẾT VỚI JPF TRÊN MIỀN TRỪU TƯỢNG 3.1 Các thành phần JPF Hình 7: Kiến trúc tổng quan JPF 3.1.1 Các JVM Các JVM sinh trạng thái java cụ thể Bằng cách thực hướng dẫn bytecode, JVM tạo JVM tạo biểu diễn trạng thái mà có thể: − Kiểm tra đẳng thức (có trạng thái truy cập trước đó) − Truy vấn (các trạng thái chủ đề, giá trị liệu, ) − Lưu trữ − Phục hồi 3.1.2 Các đối tượng tìm kiếm Các đối tượng tìm kiếmchịu trách nhiệm cho việc lựa chọn trạng thái mà từ JVM nên tiếp tục, cách đạo JVM để tạo trạng thái (forward), cách nói với để quay lại theo dõi với tạo trước đối tượng tìm kiếm dùng trình điều khiển cho đối tượng JVM TẠP CHÍ KHOA HỌC − SỐ 14/2017 13 Đối tượng tìm kiếm cấu hình đánh giá đối tượng sở hữu Việc triển khai kiếm bao gồm tìm kiếm theo chiều sâu đơn giản (Tìm kiếm DF), tìm kiếm dựa ưu tiên hàng đợi tham số để làm loại tìm kiếm khác dựa việc lựa chọn trạng thái thú vị sưu tập tất thừa kế trạng thái định (tìm kiếm Heuristic) Một thực tìm kiếm chủ yếu cung cấp phương pháp tìm kiếm nhất, bao gồm vịng lặp thơng qua khơng gian trạng thái có liên quan khám phá hết, tìm kiếm tìm thấy vi phạm sở hữu 3.2 Kết sử dụng truy vết thực thi kiểm chứng mơ hình JAVA 3.2.1 Khả giảm khơng gian trạng thái Q trình trừu tượng hố vết thực thi chương trình java đem lại khả giảm không gian trạng thái chương trình Sử dụng phương pháp trừu tượng hố gộp để thu gọn không gian trạng thái Trong phương pháp này, điểm dịch chuyển mức gộp chung thành nhóm nhằm tối thiểu khơng gian trạng thái xảy tập vết thực thi Hình mơ trừu tượng hóa gộp ứng với vết thực thi Hình 8: Trừu tượng hóa gộp ứng với vết thực thi 3.2.2 Khả xác định miền giá trị dịch chuyển Tiếp theo, trừu tượng hố có khả giúp xác định khoảng giá trị điểm dịch chuyển chương trình Sử dụng phương pháp trừu tượng hố khoảng thời gian giúp ích lớn cho việc kiểm lỗi vượt ngưỡng giá trị chương trình java Với phương pháp trừu tượng này, điểm dịch chuyển xác định thời gian nhằm tìm cách dịch chuyển theo khoảng thời gian xác định Hình mơ trạng thái kết thúc trừu tượng hóa theo khoảng thời gian TRƯỜNG ĐẠI HỌC THỦ ĐƠ H 14 NỘI Hình 9: Trạng thái kết thúc trừu tượng hóa theo khoảng thời gian KẾT LUẬN Trong báo chúng tơi trình bày kỹ thuật trừu tượng để thực thi truy vết kiểm chứng mơ hình java dựa JPF Kết báo đưa kỹ thuật để thực diễn giải trừu tượng thay cho mơ hình chương trình ban đầu nhằm tiết kiệm tối đa tài nguyên nhớ Tuy nhiên, độ xác kỹ thuật tương đối, sử dụng miền liệu trừu tượng để truy vết không sử dụng miền liệu thực Sắp tới, dự kiến tiếp tục nghiên cứu kỹ thuật kiểm chứng để phát triển công cụ truy vết dựa tảng diễn giải trừu tượng TÀI LIỆU THAM KHẢO T Ball, V Levin, and S K Rajamani (2011), "A Decade of Software Model Checking with SLAM", Communications of the ACM, 54(7) D Beyer, T A Henzinger, R Jhala, and R Majumdar (2007), The Software Model Checker Blast, STTT 9(5-6) I Bogudlov, T Lev-Ami, T W Reps, and M Sagiv (2007), Revamping TVLA: Making Parametric Shape Analysis Competitive CAV J C Corbett, M B Dwyer, J Hatcliff, S Laubach, C S Pasareanu, Robby, and H Zheng (2000), Bandera: Extracting Finite-State Models from Java Source Code ICSE, ACM P Cousot and R Cousot Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints In POPL 1977, ACM S Graf and H Saidi Construction of Abstract State Graphs with PVS In CAV 1997, LNCS, vol 1254 C S Pasareanu, P C Mehlitz, D H Bushnell, K Gundy-Burlet, M R Lowry, S Person, and M Pape (2008), Combining Unit-level Symbolic Execution and System-level Concrete Execution for Testing NASA Software ISSTA TẠP CHÍ KHOA HỌC − SỐ 14/2017 15 A MODEL CHECKING TECHNIQUE WITH JAVA PATH FINDER Abtracts: Abtracts In this paper, we introduce a model checking technique with Java Path Finder (JPF) This is checking technique that supports abstract data domains in order to shrink large data domains in Java programs, finite data domain makes verification easier This technique uses abstract data to calculate the approximation of the initial program If a safety feature is true in the abstraction domain, it is also true in the initial program The paper also provides the JPF with an abstract interpreter and mechanism that matches the abstract state from which users can select abstract to use for a specific application To concretize this technique, we analize of multi-threaded programs in Java where time traces can’t save the memory by using JPF Keywords: Keywords Model checking, Java Path Finder, abstraction interpretation, state space traversal ... thi kiểm chứng mơ hình JAVA Phần cuối kết luận báo TẠP CHÍ KHOA HỌC − SỐ 14/2017 NỀN TẢNG 2.1 Trừu tượng hóa miền liệu với JPF 2.1.1 Khái niệm a) Kiểm chứng mơ hình Kiểm chứng mơ hình kỹ thuật. .. kiểm chứng khác nhau, từ thăm dị đầy đủ (kiểm chứng mơ hình) để thí nghiệm với tập hạn chế kịch mơ hình (mơ phỏng), thực tế (thử nghiệm) Dưới sơ đồ tiếp cận phương pháp kiểm chứng mơ hình: Hình. .. thống hình thức kiểm chứng cụ thể Vấn đề thường phát giai đoạn muộn nhiều thiết kế Các mơ hình hệ thống kèm thuật tốn có hệ thống khám phá tất chi tiết mơ hình hệ thống Đây sở cho loạt kỹ thuật kiểm

Ngày đăng: 09/06/2021, 09:11

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

TÀI LIỆU LIÊN QUAN

w