Z3 hiện nay đang được sử dụng trong một số các dự án của Microsoft. Trong phần này sẽ giới thiệu một vài ứng dụng của Z3.
Thực thi tượng trưng động
Công cụ tìm lời giải cho SMT đóng vai trò trung tâm trong thực thi tượng trưng tự động. Hiện nay có một số lượng các công cụ được sử dụng trong công nghiệp dựa trên thực thi tượng trưng tự động như: CUTE, Exe, DART, SAGE, Pex, và YOGI [10]. Những công cụ này thu thập các đường đi của chương trình và biểu diễn chúng như là các biểu thức và sử dụng các công cụ tìm lời giải để xác định những đầu vào để kiểm thử. Z3 là một sự phù hợp tốt cho thực thi tương trưng bởi vì các ngữ nghĩa của hầu hết các câu lệnh có thể được mô hình hóa dễ dàng bằng cách sử dụng các lý thuyết được hỗ trợ bởi các công cụ đó.
Kiểm chứng mô hình chương trình
Thực thi tượng trưng tự động sẽ tìm các đầu vào để có thể hướng dẫn việc thực hiện để tìm các lỗi. Phương pháp này đứng độc lập không đảm bảo ràng các
31
tự động kiểm tra xem có lỗi hay không từ các danh mục lỗi. Ý tưởng cơ bản của kiểm chứng mô hình là thám hiểm tất cả các nhánh có thể của chương trình bằng cách sử dụng một trừu tượng hóa đầy đủ và có hạn của không gian trạng thái chương trình.
Phân tích chương trình tĩnh
Các công cụ phân tích chương trình tĩnh làm việc tương tự như cách các công cụ thực thi tượng trưng động. Chúng cũng kiểm tra các đường đi có thể của chương trình. Ở một khía cạnh khác chúng không bao giờ yêu cầu thực thi chương trình và chúng có thể phân tích các thư viện phần mềm tiện ích hóa chung một cách độc lập làm sao chúng được sử dụng. Ưu điểm của việc sử dụng công cụ tìm lời giải SMT trong phân tích chương trình tĩnh đó là ngày nay chúng nắm bắt rất nhanh các ngữ nghĩa của hầu hết các quá trình hoạt động cơ bản bằng cách sử dụng các ngôn ngữ lập trình.
Ngoài các ứng dụng trên Z3 còn được ứng dụng trong kiểm chứng chương trình, mô hình hóa, Qex, VS3 [10].
32
CHƢƠNG 3- MỞ RỘNG JPF VỚI Z3
Chương 1 và 2 đã trình bày về Z3 và JPF. Chúng ta có thể thấy rằng: khả năng giải quyết các vấn đề cho thực thi tượng trưng của JPF vẫn còn hạn chế, vì vậy chương này của luận văn sẽ trình bày về tích hợp Z3 vào JPF trong việc sinh dữ liệu để kiểm thử chương trình Java.