Ngôn ngữ đặc tả cho Java (Java Modeling Languag e JML )

Một phần của tài liệu (LUẬN ÁN TIẾN SĨ) Một số phương pháp kiểm chứng tái cấu trúc phần mềm Luận án TS. Máy tính 624801 (Trang 38 - 40)

Tại giai đoạn thiết kế hệ thống, tổ chức OMG cung cấp cho chúng ta ngôn ngữ ràng buộc OCL để biểu diễn các điều kiện ràng buộc trên mơ hình. Tại giai đoạn cài đặt mã nguồn, ngôn ngữ JML (Java Modeling Language) [36] là ngơn ngữ đặc tả hình thức được sử dụng để hỗ trợ cho ngơn ngữ lập trình Java trên khía cạnh đặc tả và kiểm chứng các ràng buộc về bất biến, tiền/hậu điều kiện của các phương thức trong chương trình. Đặc tả JML được nhúng vào mã nguồn Java (có thể ở cùng tệp mã nguồn của Java hoặc ở một tệp riêng biệt) và bắt đầu bởi kí hiệu //@<JML specification >hoặc /∗@ <JML specification > @∗/ theo sau là các thuộc tính cần đặc tả. Một số từ khóa cơ bản như requires, ensures định nghĩa các biểu thức tiền điều kiện, hậu điều kiện và invariant định nghĩa các bất biến. Đặc tả 2.1 biểu diễn các biểu thức tiền và hậu điều kiện để kiểm tra trạng thái cho phương thức analyzeTimeLimit() sử dụng ngơn ngữ JML. Các thuộc tính được đặc tả trong JML sẽ được biên dịch và thực thi cùng với mã nguồn để kiểm chứng sự thỏa mãn nó. 1 //@ ensures ((state==STATE.heavyTraffic)&&(signal==SIGNAL.red)) ==>(signalTime==\old(signalTime)-10); 2 //@ also 3 //@ensures ((state==STATE.heavyTraffic)&&(signal==SIGNAL.green) )==>(signalTime==\old(signalTime)+10); 4 //@ ensures ((state==STATE.lowTraffic)&&(signal==SIGNAL.red)) ==>(signalTime==\old(signalTime)+10); 5 //@also 6 //@ ensures ((state==STATE.lowTraffic)&&(signal==SIGNAL.green)) ==>(signalTime==\old(signalTime)-10);

Đặc tả 2.1: Biểu thức JML đặc tả cho phương thức

analyzeTimeLimit().

Hiện nay, đã có nhiều cơng cụ được xây dựng và phát triển để kiểm chứng mã Java cùng với đặc tả JML của nó như ESC/Java2 [25], RAC [13] hay OpenJML [17, 37], các công cụ này đều có thể tích hợp vào Eclipse.

Như vậy, xét về mặt vai trị ngơn ngữ ràng buộc OCL và ngơn ngữ đặc tả JML đều được sử dụng để đặc tả các ràng buộc về bất biến và hành vi của hệ thống phần mềm. Tuy nhiên, thời điểm sử dụng các ngôn ngữ này

là khác nhau, OCL được sử dụng bổ sung các đặc tả cho mơ hình hệ thống cịn JML lại biểu diễn các ràng buộc tại giai đoạn cài đặt hệ thống phần mềm.

2.7 Logic vị từ bậc 1 (First-Order Logic - FOL)

Lôgic vị từ bậc 1 (FOL) [63] cung cấp cho chúng ta khả năng biểu diễn các biểu thức logic mệnh đề (propositional logic) và cách thức định lượng hóa trên các đối tượng. Nhờ vào các lượng từ trong FOL chúng ta có thể mơ tả các đối tượng và mối quan hệ giữa chúng một cách chính xác. Đây chính là ưu điểm của FOL so với logic mệnh đề. FOL có thể dùng để biểu diễn lý thuyết số, lý thuyết tập hợp và thậm chí biểu diễn sự tính tốn trong máy Turing.

Bây giờ chúng ta sẽ mô tả một cách ngắn gọn các ký hiệu cơ bản dùng để xây dựng lên các công thức FOL. Các ký hiệu này được trình bày đầy đủ trong [63].

Các phép tốn kết hợp (Logical connectives)(⇒,∧,∨, và ⇔), phủ định (¬), và dấu ngoặc. Chúng sẽ được sử dụng một cách đệ quy để tạo nên các công thức phức hợp.

Các ký hiệu hằng (Constants symbols) là các chuỗi (a, b, c, v.v.) dùng để biểu diễn thay thế cho các đối tượng.

Các ký hiệu biến (Variable symbols) sẽ được sử dụng như những “place holders” cho việc định lượng hóa trên các đối tượng.

Các ký hiệu vị từ (Predicate symbols) mỗi ký hiệu được liên kết với arity (ví dụ, số lượng các đối số), có thể là 0 hoặc một số xác định khác. Vị từ được dùng để biểu diễn cho thuộc tính của các đối tượng và mối quan hệ giữa chúng.

Các ký hiệu hàm (Function symbols) mỗi ký hiệu được đặc tả bởi arity (ví dụ, số lượng các đối số nhập vào) đây là một hàm ánh xạ từ một số lượng các đối tượng đến các đối tượng.

Các lượng từ với mọi và tồn tại (Universal and existential quan- tifier symbols) dùng để định lượng hóa trên các đối tượng.

Chương5của luận án trình bày về vấn đề phát triển cơng cụ hỗ trợ kiểm chứng tính nhất qn trong tái cấu trúc mơ hình phần mềm. Như đã đề cập, tại giai đoạn thiết kế hành vi cần kiểm chứng được biểu diễn bằng ngôn ngữ ràng buộc đối tượng OCL. Tuy nhiên, cho tới thời điểm hiện tại, các cơng cụ phát triển cho OCL cịn khá hạn chế trong khi công cụ sử dụng logic vị từ bậc nhất đã ở giai đoạn trưởng thành cả về số lương và chất lượng. Bởi vậy Tiểu mục này trình bày các kiến thức cơ sở về công thức FOL, các ràng buộc về hành vi biểu diễn bằng biểu thức OCL sẽ được chuyển đổi sang các công thức FOL này. Công cụ hỗ trợ kiểm chứng tính nhất qn CVT khơng thao tác trực tiếp trên các biểu thức OCL mà sẽ thực hiện kiểm tra tính nhất qn trên các cơng thức FOL tương ứng này.

Một phần của tài liệu (LUẬN ÁN TIẾN SĨ) Một số phương pháp kiểm chứng tái cấu trúc phần mềm Luận án TS. Máy tính 624801 (Trang 38 - 40)

Tải bản đầy đủ (PDF)

(132 trang)