Bài giảng Đặc tả hình thức: Chương 10 - Nguyễn Thị Minh Tuyền

28 7 0
Bài giảng Đặc tả hình thức: Chương 10 - Nguyễn Thị Minh Tuyền

Đ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

Bài giảng Đặc tả hình thức: Chương 10 do Nguyễn Thị Minh Tuyền biên soạn nhằm mục đích phục vụ cho việc giảng dạy. Nội dung bài giảng gồm có Giới thiệu về JML, công cụ hỗ trợ cho JML, ESC/Java2: Cách sử dụng và thuộc tính, ESC/Java2: các cảnh báo, một số chỉ dẫn về đặc tả và điểm yếu, JML nâng cao.

LOGO Đặc tả hình thức Giới thiệu Java Modeling Language Nguyễn Thị Minh Tuyền Nguyễn Thị Minh Tuyền Nội dung v Giới thiệu JML v Công cụ hỗ trợ cho JML v ESC/Java2: Cách sử dụng thuộc tính v ESC/Java2: cảnh báo v Một số dẫn đặc tả điểm yếu v JML nâng cao Nguyễn Thị Minh Tuyền Đặc tả hình thức Java Modeling Language v  Java Modeling Language (JML) §  http://www.eecs.ucf.edu/~leavens/JML/index.shtml v  Tài liệu: §  http://www.kindsoftware.com/products/opensource/ESCJava2/ docs.html v  Ngơn ngữ đặc tả hình thức cho Java §  đặc tả hành vi lớp Java §  ghi lại định thiết kế cài đặt cách thêm vào mã nguồn Java assertion §  điều kiện trước (pre-condition) §  điều kiện sau (post-condition) §  bất biến (invariant) v  Mục tiêu: người lập trình Java sử dụng dễ dàng Nguyễn Thị Minh Tuyền Đặc tả hình thức v JML assertion thêm vào dạng thích file java §  /*@ @*/ //@ v Các thuộc tính đặc tả dạng biểu thức boolean mở rộng với số toán tử (\old, \forall, \result, ) v sử dụng số từ khóa ( requires, ensures, signals, assignable, pure, invariant, non_null, ) Nguyễn Thị Minh Tuyền Đặc tả hình thức Điều kiện trước sau (pre- post-condition) v Điều kiện trước phương thức điều kiện phải trước gọi phương thức §  Sử dụng từ khóa requires v Điều kiện sau phương thức điều kiện phải kết thúc §  Điều kiện sau bình thường đặc tả phải phương thức trả bình thường, nghĩa khơng có ngoại lệ Sử dụng từ khóa ensures §  Điều kiện sau đặc tả xảy có ngoại lệ Sử dụng từ khóa signals Nguyễn Thị Minh Tuyền Đặc tả hình thức requires, ensures v Điều kiện trước sau cho phương thức đặc tả /*@ requires amount >= 0; ensures balance == \old(balance)-amount && \result == balance; @*/ public int debit(int amount) { } v Ở đây, \old(balance) đến giá trị balance trước thực thi phương thức debit(int amount) Nguyễn Thị Minh Tuyền Đặc tả hình thức requires, ensures v Các đặc tả JML mạnh yếu tùy vào cách đặc tả /*@ requires amount >= 0; ensures true; @*/ public int debit(int amount) { Điều kiện sau mặc định “ensures true” bỏ qua Nguyễn Thị Minh Tuyền Đặc tả hình thức Design-by-Contract v Điều kiện trước sau định nghĩa ràng buộc (contract) lớp client §  Client phải đảm bảo điều kiện trước giả định điều kiện sau §  Phương thức giả định điều kiện trước phải đảm bảo điều kiện sau v Ví dụ: §  ví dụ phương thức debit, obligation client đảm bảo giá trị amount dương Mệnh đề requires phải làm rõ ràng điều Nguyễn Thị Minh Tuyền Đặc tả hình thức signals v Điều kiện sau cho ngoại lệ đặc tả sử dụng signals /*@ requires amount >= 0; ensures true; signals (BankException e) && amount > balance && balance == \old(balance) && e.getReason().equals("Amount too big"); @*/ public int debit(int amount) throws BankException } Nguyễn Thị Minh Tuyền Đặc tả hình thức Ý nghĩa điều kiện sau normal (return) ensures exceptional (throw) signals (…) Đặc tả hình thức non_null v Nhiều bất biến, điều kiện trước sau tham chiếu không null Sử dụng non_null cách đơn giản để đặc tả điều public class Directory { private /*@ non_null @*/ File[] files; void createSubdir(/*@ non_null @*/ String name){ /*@ non_null @*/ Directory getParent(){ Nguyễn Thị Minh Tuyền 14 Đặc tả hình thức assert v Mệnh đề assert đặc tả thuộc tính phải điểm mã nguồn if (i && < j && j < 5; } else { //@ assert i > && j > 5; } Nguyễn Thị Minh Tuyền 15 Đặc tả hình thức assert v Từ khóa assert có Java (từ phiên Java 1.4) Tuy nhiên, assert JML giàu ngữ nghĩa for (n = 0; n < a.length; n++) if (a[n]==null) break; /*@ assert (\forall int i; = 0; assignable balance; ensures balance == \old(balance)-amount; @*/ public int debit(int amount) { } Mệnh đề assignable mặc định: assignable \everything Nguyễn Thị Minh Tuyền 17 Đặc tả hình thức pure v Một phương thức mà khơng có hiệu ứng phụ gọi pure public /*@ pure @*/ int getBalance(){ Directory /*@ pure non_null @*/ getParent(){ } v Phương thức pure assignable \nothing Nguyễn Thị Minh Tuyền 18 Đặc tả hình thức Từ khóa JML v Một số từ khóa JML sử dụng: §  §  §  §  §  §  §  §  §  requires ensures signals assignable normal_behavior invariant non_null pure \old, \forall, \exists, \result Nguyễn Thị Minh Tuyền 19 Đặc tả hình thức v Cơng cụ cho JML Nguyễn Thị Minh Tuyền 20 Đặc tả hình thức Các cơng cụ cho JML v Phân tích cú pháp typechecking v Kiểm tra assertion thời gian thực thi (runtime assertion checking): §  Kiểm thử vi phạm assertion chạy chương trình §  jmlrac v Kiểm định chương trình tự động: §  Chứng minh ràng buộc không bị vi pham thời điểm biên dịch §  ESC/Java2 §  Đây kiểm chứng chương trình, khơng kiểm thử Nguyễn Thị Minh Tuyền 21 Đặc tả hình thức Kiểm tra assertion thời gian thực thi v Trình biên dịch jmlrac viết Gary Leavens, Yoonsik Cheon cộng Iowa State University §  Chuyển assertion JML thành runtime check: thực thi, tất assertion kiểm tra vi phạm assertion sinh lỗi §  Thực đơn giản phần ngun tắc kiểm thử có §  Kiểm thử tốt phản hồi tốt hơn, nhiều thuộc tính kiểm tra, nhiều vị trí mã nguồn Nguyễn Thị Minh Tuyền 22 Đặc tả hình thức Kiểm tra assertion thời gian thực thi v jmlrac phát sinh mã kiểm tra phức tạp Ví dụ: /*@ signals (Exception) balance == \old(balance); @*/ public int debit(int amount) { } v Kiểm tra debit throws ngoại lệ, balance không thay đổi bất biến Nguyễn Thị Minh Tuyền 23 Đặc tả hình thức Kiểm tra tĩnh mở rộng v ESC/Java(2) §  Kiểm tra tĩnh mở rộng(extended static checking) = kiểm thử chương trình tự động cách đầy đủ, với số thỏa hiệp để đạt tự động cách đầy đủ §  Cố gắng chứng minh tính đắn đặc tả thời điểm biên dịch, hồn tồn tự động §  ESC/Java bỏ qua lỗi tồn §  ESC/Java cảnh báo lỗi khơng xảy §  Nhưng tìm nhiều bug tìm tàng cách nhanh chóng §  Chứng minh vắng mặt ngoại lệ thời gian thực thi tốt (ví dụ Null-, ArrayIndexOutOfBounds-, ClassCast-) kiểm tra số thuộc tính đơn giản Nguyễn Thị Minh Tuyền 24 Đặc tả hình thức v  ESC/Java thất bại việc tạo cảnh báo chương trình khơng v  Ví dụ: public class Positive{ private int n = 1; //@ invariant n > 0; public void increase(){ n++; } } v  ESC/Java không tạo cảnh báo nào, hàm increase phá vỡ điều kiện bất biến, chẳng hạn với n = 232 - Nguyễn Thị Minh Tuyền 25 Đặc tả hình thức Kiểm tra tĩnh kiểm tra thời gian thực thi v  Điểm khác quan trọng: §  ESC/Java2 kiểm tra đặc tả thời điểm biên dịch, jmlrac kiểm tra đặc tả thời điểm thực thi §  ESC/Java2 chứng minh tính đắn đặc tả, jml kiểm thử tính đắng đặc tả Vì vậy: •  ESC/Java2 khơng phụ thuộc vào test nào, kết kiểm thử thời gian thực thi với test, •  ESC/Java2 cung cấp mức độ cao độ tin tưởng v  Để đạt điều này: ta phải đặc tả tất điều kiện trước sau phương thức bất biến cần thiết cho việc kiểm định Nguyễn Thị Minh Tuyền 26 Đặc tả hình thức Các công cụ JML khác v  Tài liệu theo kiểu javadoc: jmldoc v  Eclipse plugin v  Một số công cụ kiểm định đầy đủ: §  LOOP tool + PVS (Nijmegen) §  JACK (Gemplus/INRIA) §  Krakatoa tool + Coq (INRIA) §  KeY (Chalmers + Germany) v  Những công cụ cho phép kiểm định tương tác (trong ESC/Java2 nhắm đến việc kiểm định hoàn toàn tự động) chứng minh thuộc tính phức tạp v  runtime detection of invariants: Daikon (Michael Ernst,MIT) v  model-checking multi-threaded programs: Bogor(Kansas State) Nguyễn Thị Minh Tuyền 27 Đặc tả hình thức LOGO ... invariant non_null pure old, forall, exists, esult Nguyễn Thị Minh Tuyền 19 Đặc tả hình thức v Công cụ cho JML Nguyễn Thị Minh Tuyền 20 Đặc tả hình thức Các cơng cụ cho JML v Phân tích cú pháp... 232 - Nguyễn Thị Minh Tuyền 25 Đặc tả hình thức Kiểm tra tĩnh kiểm tra thời gian thực thi v  Điểm khác quan trọng: §  ESC/Java2 kiểm tra đặc tả thời điểm biên dịch, jmlrac kiểm tra đặc tả thời... thường đặc tả phải phương thức trả bình thường, nghĩa khơng có ngoại lệ Sử dụng từ khóa ensures §  Điều kiện sau đặc tả xảy có ngoại lệ Sử dụng từ khóa signals Nguyễn Thị Minh Tuyền Đặc tả hình

Ngày đăng: 08/05/2021, 13:15

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

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

Tài liệu liên quan