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.
Symbolic execution động
Công cụ tìm lời giải cho SMT đóng vai trò trung tâm trong symbolic execution 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 symbolic execution tự động nhƣ: CUTE, Exe, DART, SAGE, Pex, và YOGI. 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 symbolic execution 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
Symbolic execution 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 chƣơng trình là không có lỗi. Mục đích của kiểm chứng mô hình chƣơng trình là 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ụ symbolic execution độ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ử dung. Ƣ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 [5].
CHƢƠNG 4- TÍCH HỢP Z3 VỚI JPF
Chƣơng 2 và 3 đã 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 JPF với Z3 trong việc sinh dữ liệu để kiểm thử chƣơng trình Java.