Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 45 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
45
Dung lượng
3,96 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nông Gia Tự KIỂM CHỨNGMÔHÌNHPHẦNMỀMSỬDỤNGNUSMV KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin HÀ NỘI - 2010 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nông Gia Tự KIỂM CHỨNGMÔHÌNHPHẦNMỀMSỬDỤNGNUSMV KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán bộ hướng dẫn: TS. Phạm Ngọc Hùng HÀ NỘI - 2010 Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự i Lời cảm ơn Lời đầu tiên em xin bày tỏ lòng biết ơn sâu sắc tới TS. Phạm Ngọc Hùng, thầy đã hướng dẫn em tận tình trong suốt năm học vừa qua. Em xin bày tỏ lòng biết ơn tới các thầy, cô giáo trong Khoa Công nghệ thông tin - Trường Đại học Công nghệ - ĐHQGHN. Các thầy cô đã dạy bảo, chỉ dẫn chúng em và luôn tạo điều kiện tốt nhất cho chúng em học tập trong suốt quá trình học đại học đặc biệt là trong thời gian làm khoá luận tốt nghiệp. Tôi xin cảm ơn các bạn sinh viên lớp K51CD và lớp K51CNPM đã cho tôi những ý kiến đóng góp giá trị cùng những lời động viên khích lệ khi thực hiện đề tài này. Cuối cùng con xin gửi tới bố mẹ và toàn thể gia đình lòng biết ơn và tình cảm yêu thương. Hà Nội, ngày 15 tháng 5 năm 2008 Nông Gia Tự Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự ii Tóm tắt Kiểm chứngmôhình (model checking) là một hướng tiếp cận hiệu quả cho việc đảm bảo chất lượng phần mềm. Kĩ thuật này được áp dụng để chứng minh một cách tự động tính đúng đắn của phầnmềm hoặc chỉ ra tại sao phầnmềm không chạy đúng thông qua phản ví dụ. Hiện nay có rất nhiều công cụ kiểm chứngmôhìnhphầnmềm như NuSMV, SPIN, KRONOS Khóa luận này nghiên cứu lý thuyết cơ bản vè kiểm chứngmô hình, ngôn ngữ SMV dùng để môhình hóa hệ thống và cách sửdụngNuSMV để kiểm chứngmôhìnhphần mềm. Kiểm chứngmôhình thường được áp dụng ở giai đoạn thiết kế vì việc môhình hóa bản thiết kế hệ thống dễ dàng hơn môhình hóa mã nguồn của hệ thống. Ngoài ra, việc sớm tìm ra lỗi ở bản thiết kế sẽ giúp giảm thiểu rủi ro của quá trình phát triển phần mềm. Vì thế chúng tôi tập trung tìm hiểu và đề xuất quy trình kiểm chứngmôhìnhsửdụngNuSMV ở giai đoạn thiết kế phần mềm. Đồng thời áp dụng quy trình này để kiểm chứngmôhình của phầnmềm giả lập máy rút tiền tự động ATM. Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự iii Mục lục Chương 1 Giới thiệu 1 1.1 Đặt vấn đề 1 1.2 Nội dung nghiên cứu của khóa luận 2 1.3 Cấu trúc khóa luận 2 Chương 2 Tổng quan về kiểm chứngmôhình và NuSMV 4 2.1 Tổng quan về kiểm chứngmôhình 4 2.1.1 Giới thiệu 4 2.1.2 Ý nghĩa của kiểm chứngmôhình 5 2.1.3 Sự khác nhau giữa kiểm chứngmôhìnhphầnmềm và kiểm thử phầnmềm 5 2.2 NuSMV 6 2.2.1 Giới thiệu 6 2.2.2 Kiến trúc của NuSMV 6 2.2.3 SửdụngNuSMV để kiểm chứngmôhình 8 Chương 3 Giới thiệu về logic thời gian 9 3.1 Khái niệm 9 3.2 Các toán tử trong logic thời gian 9 3.2.1 Toán tử globally (toàn thể) 9 3.2.2 Toán tử next (tiếp theo) 10 3.2.3 Toán tử eventually (cuối cùng sẽ xảy ra) 10 3.3 TLT và CTL 10 3.4 Sửdụng temporal logic để mô tả một số thuộc tính cần kiểm chứng 11 3.4.1 Safety (tính an toàn) 11 3.4.2 Liveness (tính chạy được) 11 3.4.3 Fairness (tính công bằng) 12 Chương 4 Ngôn ngữ SMV 13 4.1 Tổng quan 13 4.2 Cấu trúc của chương trình viết bằng ngôn ngữ SMV 13 4.3 Các kiểu dữ liệu 13 4.3.1 Khai báo kiểu dữ liệu 13 Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự iv 4.3.2 Kiểu logic (boolean), kiểu số nguyên (integer) và kiểu liệt kê (enum) 14 4.3.3 Mảng 14 4.3.4 Mảng nhiều chiều 15 4.3.5 Kiểu cấu trúc 15 4.4 Biến và các phép gán 16 4.5 Các phép toán 16 4.5.1 Phép gán 16 4.5.2 Tóan tử next 17 4.6 Máy trạng thái 18 Chương 5 20 Áp dụngNuSMV kiểm chứngmôhìnhphầnmềm giả lập máy ATM 20 5.1 Đề xuất quy trình đặc tả và kiểm chứngphầnmềmsửdụngNuSMV 20 5.1.1 Những cơ sở để đưa ra quy trình 20 5.1.2 Mô tả quy trình 21 5.2 Đặc tả và kiểm chứngmôhìnhphầnmềm giả lập máy ATM 21 5.2.1 Đặc tả yêu cầu 21 5.2.1.1 Mô tả bài toán 21 5.2.1.2 Các tác nhân của hệ thống 22 5.2.1.3 Môhình ca sửdụng tổng thể hệ thống 22 5.2.1.4 Bật máy 23 5.2.1.5 Tắt máy 23 5.2.1.6 Phiên làm việc 24 5.2.1.7 Giao dịch rút tiền 24 5.2.1.8 Giao dịch chuyển tiền 24 5.2.1.9 Giao dịch vấn tin tài khoản 25 5.2.1.10 Sai mã PIN 25 5.2.2 Đặc tả các thuộc tính cần kiểm chứng 25 5.2.3 Thiết kế hệ thống 25 5.2.3.1 Biểu đồ trạng thái tổng thể hệ thống 25 5.2.3.2 Biểu đồ trạng thái quá trình thực hiện một phiên làm việc của hệ thống 26 5.2.3.3 Biểu đồ trạng thái quá trình thực hiện giao dịch của hệ thống 27 Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự v 5.2.4 Môhình hóa hệ thống bằng ngôn ngữ SMV 28 5.2.4.1 Môhình hóa tổng thể hệ thống 28 5.2.4.2 Môhình hóa quá trình thực hiện phiên làm việc 29 5.2.4.3 Môhình hóa quá trình thực hiện giao dịch 31 5.2.5 Kiểm chứngmôhình 33 Chương 6 Kết luận 35 Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự vi Danh mục hình vẽ Hình 2.1. Nguyên tắc họat động của kiểm chứngmô hình. Hình 2.2. Sơ đồ kiến trúc NuSMV. Hình 5.1. Biểu đồ ca sửdụng hệ thống máy ATM. Hình 5.3. Biểu đồ trạng thái quá trình thực hiện một phiên làm việc của hệ thống ATM. Hình 5.4. Biểu đồ trạng thái quá trình thực hiện giao dịch của hệ thống ATM. Hình 5.5. Môhình tổng thể hệ thống viết bằng ngôn ngữ SMV. Hình 5.6. Môhình quá trình thực hiện một phiên làm việc của hệ thống bằng ngôn ngữ SMV. Hình 5.7. Môhình quá trình thực hiện giao dịch của hệ thống ATM bằng ngôn ngữ SMV. Hình 5.8. Kết quả kiểm chứngmôhình tổng thể hệ thống. Hình 5.9. Kết quả kiểm chứngmôhình phiên làm việc của hệ thống. Hình 5.10. Kết quả kiểm chứngmôhình thực hiện giao dịch hệ thống. Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự vii Danh mục từ viết tắt Ký hiệu Thuật ngữ ATM Automated Teller Machine BDD Binary Decision Diagram CTL Computation Tree Logic LTL Linear Time Logic Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự 1 Chương 1 Giới thiệu 1.1 Đặt vấn đề Việc đảm bảo chất lượng phầnmềm là một trong những công đoạn khó khăn nhất của việc phát triển phần mềm. Trong đó, việc đảm bảo tính đúng đắn của bản thiết kế ở bước sớm nhất có thể là một thách thức lớn nhất đối với bất kì quy trình phát triển phầnmềm nào. Từ trước đến nay, phương pháp giả lập và kiểm thử thường được sửdụng để kiểm tra các bản thiết kế [5]. Tuy nhiên phương pháp này bộc lộ nhiều khiếm khuyết trong đó điểm yếu nghiêm trọng nhất chính là không thể khẳng định được chương trình đã hết lỗi hoặc ước lượng được số lỗi có thể sót lại trong bản thiết kế [5]. Kiểm chứngmôhình là một kỹ thuật kiểm chứng tự động các hệ thống hữu hạn trạng thái. Kiểm chứngmôhình xác minh tính đúng đắn của một môhình bằng việc xác định xem các thuộc tính người dùng mong muốn có được thỏa mãn bởi môhình đó hay không [6]. Về nguyên tắc hoạt động, hệ thống cần kiểm chứng sẽ được môhình hóa. Công cụ kiểm chứng sẽ kiểm tra môhình có thỏa mãn các thuộc tính được cho hay không. Nhờ khả năng duyệt qua tất cả các trạng thái trong môhình mà tính đúng đắn của kết quả kiểm chứngmôhình luôn được đảm bảo. Nguyên tắc họat động của kiểm chứngmôhình như sau: Đóng vai trò xử lý dữ liệu tự động là một công cụ kiểm chứngmô hình. Đầu vào là hệ thống cần kiểm chứng đã được môhình hóa và mô tả các thuộc tính cần kiểm chứng. Đầu ra là kết quả kiểm chứng – kết luận hệ thống hoàn toàn thỏa mãn các thuộc tính hoặc kết luận hệ thống không thỏa mãn một hoặc nhiều thuộc tính đi kèm với phản ví dụ. Nguyên tắc này được minh họa trong hình sau: [...]... cho người sửdụngHình 2.2 Sơ đồ kiến trúc NuSMV [4] 7 Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự 2.2.3 SửdụngNuSMV để kiểm chứngmôhình Để kiểm chứngmôhình bằng NuSMV, chúng ta cần mô tả hệ thống và đặc tả các thuộc tính bằng ngôn ngữ SMV Sau đó sửdụng lệnh: nusmv tên_file trong đó tên_file là tên của file được viết bằng ngôn ngữ SMV 8 Kiểm chứngmôhìnhphầnmềm sử dụngNuSMV Nông... thể dùng để thiết lập môhìnhdùng cho việc kiểm chứng 19 Kiểm chứngmôhìnhphầnmềm sử dụngNuSMV Nông Gia Tự Chương 5 Áp dụngNuSMV kiểm chứngmôhìnhphầnmềm giả lập máy ATM 5.1 Đề xuất quy trình đặc tả và kiểm chứngphầnmềmsửdụngNuSMV 5.1.1 Những cơ sở để đưa ra quy trình Để kiểm chứng một môhình cần phải thực hiện hai bước: đầu tiên phải môhình hóa phầnmềm cần kiểm chứng sau đó cần định...Kiểm chứngmôhìnhphầnmềm sử dụngNuSMV Nông Gia Tự Hình 2.1 Nguyên tắc họat động của kiểm chứngmôhình [7] Trong quá trình kiểm chứngmô hình, việc môhình hóa hệ thống và đặc tả các thuộc tính thường được thực hiện thủ công Việc chứng minh môhình có thỏa mãn các thuộc tính hay không đựơc thực hiện tự động bằng công cụ kiểm chứngmôhình Khóa luận này tập trung nghiên cứu và áp dụng công cụ kiểm chứng. .. tính cần kiểm chứng, môhình hóa hệ thống và sửdụngNuSMV để phân tích, chứng minh hệ thống có thỏa mãn các thuộc tính cần kiểm chứng đó hay không 1.3 Cấu trúc khóa luận 2 Kiểm chứngmôhìnhphầnmềm sử dụngNuSMV Nông Gia Tự Các phần còn lại của khóa luận có cấu trúc như sau: Chương 2 trình bày kiến thức cơ bản về kiểm chứngmôhình và giới thiệu về NuSMV, một công cụ kiểm chứngphầnmềm Chương 3... kiểm chứngmôhìnhNuSMV vào việc kiểm chứng ở giai đoạn thiết kế phầnmềm 1.2 Nội dung nghiên cứu của khóa luậnNuSMV là một công cụ kiểm chứngmôhình mã nguồn mở Đầu vào của NuSMV là một file viết bằng ngôn ngữ SMV trong đó mô tả môhình hệ thống và các đặc tả thuộc tính cần kiểm chứng Khóa luận nghiên cứu lý thuyết kiểm chứngmôhình và áp dụngNuSMV để kiểm chứng bản thiết kế phầnmềm Quá trình... ra những kết luận sau khi thực hiện đề tài khóa luận và định hướng khóa luận trong tương lai 3 Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự Chương 2 Tổng quan về kiểm chứngmôhình và NuSMV 2.1 Tổng quan về kiểm chứngmôhình 2.1.1 Giới thiệu Kiểm chứngmôhình là kỹ thuật phân tích hệ thống để xác định tính hợp lệ của một hay nhiều tính chất mà người dùng quan tâm trong một môhình cho trước... thiệu về logic thời gian và sửdụng logic thời gian để mô tả các thuộc tính cần kiểm chứng Chương 4 trình bày về cú pháp, các kiểu dữ liệu của ngôn ngữ SMV, cách sửdụng ngôn ngữ SMV để mô tả một máy hữu hạn trạng thái Chương 5 tìm hiểu và đề xuất quy trình kiểm chứngmôhình ở giai đoạn thiết kế phầnmềmsửdụng NuSMV, sau đó áp dụng quy trình này vào kiểm chứngmôhìnhphầnmềm giả lập máy rút tiền... sau nó Tóm lại, nhờ khả năng xét đến yếu tố thời gian, temporal logic đã được sửdụng rộng rãi trong công nghệ kiểm chứngphầnmềm Temporal logic thường được sửdụng để mô tả các thuộc tính cần kiểm chứng 10 Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự 3.4 Sửdụng temporal logic để mô tả một số thuộc tính cần kiểm chứng 3.4.1 Safety (tính an toàn) Tính an toàn của một chương trình đảm bảo rằng... bước môhình hóa và đặc tả chính là đầu vào của kiểm chứngmôhình Ở bước cuối cùng, kiểm chứng, công cụ kiểm chứng sẽ tự động thực hiện và trả về kết quả là thỏa mãn nếu môhình thỏa mãn các thuộc tính, hoặc đưa ra một phản ví dụ nếu môhình không thỏa mãn Dựa vào phản ví dụ, người ta có thể tìm ra được lý do vì sao môhình không thỏa mãn các thuộc tính đặt ra 4 Kiểm chứngmôhìnhphầnmềmsửdụng NuSMV. .. đồ trạng thái xây dựngmôhình bằng ngôn ngữ SMV 20 Kiểm chứngmôhìnhphầnmềmsửdụngNuSMV Nông Gia Tự 5.1.2 Mô tả quy trình Mục tiêu của quy trình này là kiểm chứngphầnmềm ở giai đoạn thiết kế hệ thống Việc kiểm chứng được thực hiện sau khi đã xây dựng được các biểu đồ trạng thái của hệ thống cần xây dựng Đối tượng của kiểm chứng chính là môhình hoạt động dự kiến của phầnmềm Sau đây là diễn giải . người sử dụng. Hình 2.2. Sơ đồ kiến trúc NuSMV [4]. Kiểm chứng mô hình phần mềm sử dụng NuSMV Nông Gia Tự 8 2.2.3 Sử dụng NuSMV để kiểm chứng mô hình Để kiểm chứng mô hình bằng NuSMV, . KRONOS Khóa luận này nghiên cứu lý thuyết cơ bản vè kiểm chứng mô hình, ngôn ngữ SMV dùng để mô hình hóa hệ thống và cách sử dụng NuSMV để kiểm chứng mô hình phần mềm. Kiểm chứng mô hình thường. logic đã được sử dụng rộng rãi trong công nghệ kiểm chứng phần mềm. Temporal logic thường được sử dụng để mô tả các thuộc tính cần kiểm chứng. Kiểm chứng mô hình phần mềm sử dụng NuSMV Nông Gia