Các phương pháp cũ

Một phần của tài liệu SINH CA KIỂM THỬ THAM SỐ HÓA CHO CHƯƠNG TRÌNH JAVA (Trang 60 - 61)

Đã có những nghiên cứu khác nhau[16, 20, 26] áp dụng khả năng của JPF để thực thi tượng trưng các chương trình Java. Ý tưởng của các phương pháp này đó là sửa đổi các chương trình Java để hỗ trợ việc thực thi tượng trưng và JPF sẽ được sử dụng để thực thi các chương trình Java đã được sửa đổi đó. Quá trình sửa đổi mã nguồn Java ở các cách tiếp cận này không yêu cầu chuyển mã Java thành mã trung gian để thêm các phần mã hỗ trợ việc thực thi tượng trưng. Việc sửa đổi mã nguồn Java được thực hiện bằng cách thay các biến có kiểu cụ thể trong ngôn ngữ Java (int, float, string,…) thành các biến có kiểu tương trưng tương ứng và các hành động tính toán (các phép tính toán, so sánh,...) đối với các biến có kiểu cụ thể đó chuyển thành hành động tính toán với các biến có kiểu tượng trưng tương ứng. Ví dụ như trong Symbolic JPF, biến kiểu int có một kiểu tượng trưng tương ứng là SymbolicInteger, kiểu số thực thì có kiểu tượng trưng tương ứng là SymbolicReal. Nói cách khác, phương pháp sửa đổi ở đây chính là việc chuyển đổi mã nguồn (source-to-source) trực tiếp từ mã nguồn Java sang mã nguồn Java sử dụng các thư viện hỗ trợ thực thi tượng trưng sao cho mã nguồn Java sau khi được chuyển đổi có thể thực thi tượng trưng sử dụng JPF. Các thư viện hỗ trợ thực thi tượng trưng được xây dựng gồm các lớp để biểu thị cho các kiểu tượng trưng và các lớp với các phương thức được cài đặt để thực hiện hành động tính toán với các kiểu tượng

trưng đó. Kỹ thuật phân tích phụ thuộc kiểu[22] được sử dụng để hỗ trợ quá trình chuyển đổi mã nguồn.

Các cách tiếp cận này hướng tới việc thực thi tượng trưng các chương trình Java nhận đầu vào có cấu trúc dữ liệu phức tạp. Ý tưởng chính ở đây chính là việc kết hợp thực thi tượng trưng với khởi tạo lười[20]. Một phương thức bắt đầu được thực thi với các đối tượng làm đầu vào mà các trường của nó chưa được khởi tạo, khi các trường của đối tượng lần đầu tiên được truy cập trong quá trình thực thi thì khởi tạo lười sẽ được sử dụng để gán các giá trị cho các trường đó. Với các trường của đối tượng có kiểu dữ liệu nguyên thủy hoặc string thì chúng sẽ được khởi tạo với một giá trị tượng trưng tương ứng kết hợp với nó. Với các trường có kiểu tham chiếu thì chúng sẽ được khởi tạo với một giá trị null, hoặc một tham chiếu tới một đối tượng với các trường chưa được khởi tạo, hoặc một tham chiếu tới đối tượng đã được khởi tạo lúc trước có cùng kiểu. Trong thuật toán khởi tạo lười, các phương thức lấy (getter) và thiết lập (setter) được cài đặt cho mỗi trường của lớp. Các trường của lớp sẽ được truy cập và cập nhật bởi các getter và setter này. Một số ví dụ về việc chuyển đổi mã nguồn Java để hỗ trợ thực thi tượng trưng sử dụng JPF ta có thể tham khảo trong[16, 20, 26].

Một phần của tài liệu SINH CA KIỂM THỬ THAM SỐ HÓA CHO CHƯƠNG TRÌNH JAVA (Trang 60 - 61)

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

(68 trang)
w