Các nguyên lý và kỹ thuật kiểm chứng chất lượng phần mềm

86 192 0
Các nguyên lý và kỹ thuật kiểm chứng chất lượng phần mềm

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BÌA LUẬN VĂN TRẦN VIỆT HƯNG BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - TRẦN VIỆT HƯNG CÔNG NGHỆ THÔNG TIN CÁC NGUYÊN LÝ VÀ KỸ THUẬT KIỂM CHỨNG CHẤT LƯỢNG PHẦN MỀM LUẬN VĂN THẠC SĨ KHOA HỌC CÔNG NGHỆ THÔNG TIN 2009 Hà Nội – 2011 TRANG PHỤ BÌA BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRẦN VIỆT HƯNG CÁC NGUYÊN LÝ VÀ KỸ THUẬT KIỂM CHỨNG CHẤT LƯỢNG PHẦN MỀM Chuyên ngành : Công nghệ thông tin LUẬN VĂN THẠC SĨ KHOA HỌC CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS Huỳnh Quyết Thắng Hà Nội – 2011 Trần Việt Hưng Cao học CNTT 2009 LỜI CAM ĐOAN Tôi xin cam đoan luận văn "Các nguyên lý kỹ thuật kiểm chứng chất lượng phần mềm" thân thực hướng dẫn PGS.TS Huỳnh Quyết Thắng - Viện CNTT&TT - Trường Đại học Bách khoa Hà Nội, không chép nguyên văn luận văn công bố Nội dung luận văn có tham khảo sử dụng tài liệu, thông tin đăng tải tác phẩm, tạp chí trang web theo danh mục tài liệu tham khảo luận văn Các kết chạy thử nghiệm số liệu trung thực Tác giả luận văn Trần Việt Hưng ii Trần Việt Hưng Cao học CNTT 2009 MỤC LỤC TRANG PHỤ BÌA i LỜI CAM ĐOAN ii MỤC LỤC iii DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ vii MỞ ĐẦU .1 Lý chọn đề tài: .1 Lịch sử nghiên cứu Mục đích, đối tượng phạm vi nghiên cứu 3.1 Mục đích 3.2 Đối tượng .2 3.3 Phạm vi nghiên cứu .2 Các luận điểm đóng góp tác giả Phương pháp nghiên cứu CHƯƠNG I: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1.1 Kiểm thử phần mềm 1.2 Các phương pháp kiểm thử phần mềm 1.3 Các chiến lược kiểm thử phần mềm 1.4 Các giai đoạn kiểm thử phần mềm 1.4.1 Kiểm thử đơn vị 1.4.2 Kiểm thử tích hợp .7 1.4.3 Kiểm thử hợp thức hoá .8 1.4.4 Kiểm thử chấp nhận 1.4.5 Kiểm thử hồi quy 1.5 Các vấn đề kiểm thử phần mềm .9 1.5.1 Các hạn chế kiểm thử 1.5.2 Các nguyên tắc kiểm thử 10 1.5.3 Phân loại số công cụ kiểm thử tự động 10 1.6 Kiểm chứng phần mềm 12 1.6.1 Phương pháp Giả lập kiểm thử (Simulation and Testing) 12 1.6.2 Phương pháp Kiểm chứng suy dẫn thường (Deductive Verification) 13 1.6.3 Phương pháp Kiểm chứng mô hình (Model Checking) 13 iii Trần Việt Hưng Cao học CNTT 2009 1.6.4 Sự khác Kiểm chứng mô hình phần mềm kiểm thử phần mềm 14 1.7 Các phương pháp đặc tả thiết kế phần mềm 15 1.7.1 Phương pháp hình thức (formal method) 15 1.7.2 Phương pháp bán hình thức (semi-formal method) 16 1.8 Kết luận 16 CHƯƠNG II: KIỂM CHỨNG MÔ HÌNH 17 2.1 Tổng quan kiểm chứng mô hình 17 2.2 Quy trình kiểm chứng mô hình .17 2.2.1 Mô hình hoá hệ thống (System Modeling) .18 2.2.2 Đặc tả đặc tính (Properties Specification) 18 2.2.3 Kiểm chứng (Verification) 19 2.3 Các khái niệm 19 2.3.1 Đồ thị trạng thái 19 2.3.2 Phân đoạn đường 20 2.3.3 Phân đoạn đường cực đại phân đoạn đường khởi tạo 20 2.3.4 Đường 21 2.3.5 Dấu vết phân đoạn dấu vết 22 2.3.6 Tính chất thời gian tuyến tính 24 2.4 Tính bất biến, tính an toàn tính sống 26 2.4.1 Tính bất biến .26 2.4.2 Tính an toàn 27 2.4.3 Tính sống 32 2.5 Logic thời gian tuyến tính (LTL) 34 2.5.1 Cú pháp LTL 34 2.5.2 Ngữ nghĩa 36 2.5.2.1 Ngữ nghĩa LTL (diễn tả thông qua Words) 36 2.5.2.2 Ngữ nghĩa đường trạng thái 36 2.5.3 Chỉ thuộc tính 38 2.5.3.1 Ví dụ loại trừ lẫn dựa tín hiệu 38 2.5.3.2 Modulo counter 39 2.5.4 Tính tương đương công thức LTL 40 2.6 Ngôn ngữ lập trình phương trình Maude 40 iv Trần Việt Hưng Cao học CNTT 2009 2.6.1 Tổng quan Maude 40 2.6.2 Tại lại chọn Maude làm công cụ hình thức? 42 2.6.3 Cơ Maude 43 2.6.3.1 Ví dụ 43 2.6.3.2 Tái sử dụng thành phần 46 2.6.3.3 Tính kết hợp tính giao hoán 47 2.6.3.4 Cài đặt sử dụng Maude 48 2.6.4 Sử dụng Maude để kiểm chứng mô hình 49 2.6.4.1 Kiểm chứng mô hình LTL dựa ô-tô-mát 49 2.6.4.2 Kiểm chứng mô hình LTL Maude 50 2.6.4.3 Kiểm chứng mô hình LTL 54 2.6.4.4 Sự trừu tượng phương trình 57 2.7 Kết luận 65 CHƯƠNG III: ÁP DỤNG MAUDE CHECKER KIỂM CHỨNG MÔ HÌNH MÔ PHỎNG READING PRACTISE 66 3.1 Phát biểu toán 66 3.2 Phương pháp giải toán 67 3.3 Đề xuất quy trình kiểm chứng mô hình sử dụng MaudeChecker 67 3.4 Kiểm chứng mô hình phần mềm Reading Practise .68 3.4.1 Đặc tả thuộc tính cần kiểm chứng 69 3.4.2 Thiết kế Hệ thống 69 3.4.3 Mô hình hóa Hệ thống ngôn ngữ Maude 69 3.4.3.1 Tính sống 71 3.4.3.2 Tính an toàn 72 3.4.3.3 Tính bất biến 72 3.5 Kết luận 73 CHƯƠNG IV: KẾT QUẢ VÀ BÀN LUẬN 75 4.1 Kết đóng góp luận văn 75 4.2 Bàn luận 75 KẾT LUẬN .77 TÀI LIỆU THAM KHẢO 78 v Trần Việt Hưng Cao học CNTT 2009 DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT TT Từ viết tắt, thuật ngữ Mô tả AP Atomic Proposition ATM Automatic Teller Machine CTL Computation Tree Logic FSM Finite State Machine LT Linear Time MC Model Checking LTL Linear Temporal Logic TS Transition System vi Trần Việt Hưng Cao học CNTT 2009 DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình 2.1 Quy trình kiểm chứng mô hình 18 Hình 2.2 Đồ thị trạng thái hệ thống máy bán đồ uống .21 Hình 2.4 Hai đèn giao thông đồng hoàn toàn (trái giữa) 24 thành phần song song chúng (phải) 24 Hình 2.5 Đặc tả thuộc tính thời gian tuyến tính .26 Hình 2.6 Mô tả hình ảnh số phép toán LTL 35 Hình 2.7 Mô tả Hệ thống chuyển dịch thái với mệnh đề a,b .37 Hình 2.8 Mô tả Hệ thống chuyển dịch thái với mệnh đề a 38 Hình 2.9 Ví dụ mô tả loại trừ dựa tín hiệu 38 Hình 2.10 Mô tả biểu đồ hệ thống chuyển dịch 39 Hình 2.11 Giao diện hình làm việc Maude 48 Hình 2.12 Quy trình kiểm chứng mô hình LTL dựa ô-tô-mát 50 Hình 2.13 Đồ thị nhập mô đun kiểm chứng mô hình 56 Hình 3.1 Biểu đồ mô tả trạng thái Hệ thống .69 Hình 3.2.Kết kiểm tra Thuộc tính sống 72 Hệ thống đạt đến trạng thái kết thúc 72 Hình 3.3 Kết kiểm tra Thuộc tính sống 72 Hệ thống đảm bảo không trạng thái đợi 72 Hình 3.4 Kết kiểm tra Thuộc tính an toàn 72 Hệ thống đảm bảo không tồn hai trạng thái kết thúc .72 Hình 3.5 Kết kiểm tra tính bất biến 73 Số từ mà người dùng đọc nhỏ 100 73 Hình 3.6 Kết kiểm tra tính bất biến 73 Số từ mà người dùng không đọc liên tiếp nhỏ 100 73 Hình 3.7 Kết kiểm tra tính bất biến 73 Số lần mà người dùng đọc sai liên tiếp phải nhỏ 73 vii Trần Việt Hưng Cao học CNTT 2009 MỞ ĐẦU Lý chọn đề tài: Ngày nay, công nghệ thông tin ngày phát triển ứng dụng vào hầu hết lĩnh vực sống, tạo diện mạo cho xã hội Công nghệ phần mềm phần tách rời công nghệ thông tin Phần mềm coi sản phẩm công nghệ phần mềm Quá trình phát triển phần mềm gồm nhiều giai đoạn: thu thập yêu cầu, phân tích, thiết kế, xây dựng, kiểm chứng, triển khai bảo trì Trong việc kiểm chứng phần mềm quan trọng để đảm bảo chất lượng phần mềm Trong công nghệ phần mềm, kiểm chứng phần mềm thu hút mối quan tâm nhiều nhà nghiên cứu Vấn đề đặt làm để phát triển, ứng dụng phương pháp nhằm tăng độ tin cậy việc thiết kế xây dựng phần mềm phương pháp cần phải tiến hành cách tự động Các phương pháp cải thiện chất lượng hạ giá thành cho việc phát triển hệ thống Các phương pháp kiểm chứng sở cho hệ thống phức tạp bao gồm: Giả lập, kiểm thử, kiểm chứng suy dẫn kiểm chứng mô hình Trong tất phương pháp kể trên, kiểm chứng mô hình (Model Checking)[3] phương pháp cung cấp cách tiếp cận toàn diện hữu hiệu để phân tích hệ thống Với yêu cầu tìm hiểu, đề xuất, tổng hợp nguyên lý, kỹ thuật kiểm chứng chất lượng phần mềm xây dựng phần mềm đạt chất lượng cao, tác giả chọn đề tài cho luận văn là: “Các nguyên lý kỹ thuật kiểm chứng chất lượng phần mềm” Lịch sử nghiên cứu Với phát triển vũ bão công nghệ thông tin nói chung phần mềm nói riêng, việc phát triển phần mềm ngày hỗ trợ nhiều công cụ tiên tiến Tuy nhiên, với yêu cầu ngày cao chất lượng độ phức tạp phần mềm giới hạn thời gian, chi phí, nên việc phát triển phần mềm gặp phải khó khăn khâu đặc tả yêu cầu phần mềm kỹ thuật đánh giá chất lượng phần mềm Ngôn ngữ Maude đời phần Trần Việt Hưng Cao học CNTT 2009 giải khó khăn kể trên; Maude có ứng dụng to lớn vào việc phát triển hệ thống phần mềm chất lượng cao nhiều lĩnh vực Lần tài liệu Maude nhóm tác giả Manuel Clavel José Meseguer công bố vào năm 1996 Đến năm 2000, tác giả Olveczky công bố tài liệu đặc tả phân tích hệ thống thời gian thực Và đến năm 2002, tác giả Eker José Meseguer công bố tài liệu logic thời gian tuyến tính với Maude Tiếp thu thành tựu nhà khoa học trước, PGS.TS Huỳnh Quyết Thắng hướng dẫn, tác giả cố gắng thực đề tài: "Các nguyên lý kỹ thuật kiểm chứng chất lượng phần mềm" Mục đích, đối tượng phạm vi nghiên cứu 3.1 Mục đích Tìm hiểu, đề xuất, tổng hợp nguyên lý, kỹ thuật kiểm chứng phần mềm xây dựng phần mềm đạt chất lượng cao Trong luận văn, áp dụng lý thuyết kiến trúc phần mềm, đặc tả yêu cầu kiểm chứng mô hình phương pháp hình thức để kiểm chứng mô hình cho phần mềm Reading Practise Nghiên cứu đề xuất hướng mở rộng phát triển lý thuyết tìm hiểu 3.2 Đối tượng Luận văn tìm hiểu lý thuyết liên quan đến đánh giá chất lượng phần mềm, kiểm chứng phần mềm, kiểm chứng mô hình; công nghệ, giải pháp, công cụ Maude[5] vào kiểm chứng mô hình cho ứng dụng phần mềm cụ thể Do giới hạn nên luận văn ứng dụng kiểm chứng mô hình cho phần mềm Reading Practise 3.3 Phạm vi nghiên cứu Cơ sở lý thuyết nguyên lý kỹ thuật kiểm chứng chất lượng phần mềm vào việc phát triển phần mềm nói chung Với ngôn ngữ lập trình Maude, tập Trần Việt Hưng Cao học CNTT 2009 Maude> reduce in DEKKER-CHECK : modelCheck(initial, []~ (enterCrit(1) /\ enterCrit(2))) ModelChecker: Property automaton has states ModelCheckerSymbol: Examined 263 system states rewrites: 1156 in 60ms cpu (91ms real) (19266 rews/sec) result Bool: true Tuy nhiên, thuộc tính sống mạnh mà thực thi không giới hạn kéo theo việc vào phần tới hạn Tiến trình thường lỗi vô hạn Bộ kiểm chứng mô hình Maude trả phản ví dụ sau: Maude> reduce in DEKKER-CHECK : modelCheck(initial, [] exec(1) -> [] enterCrit(1)) ModelChecker: Property automaton has states ModelCheckerSymbol: Examined 16 system states rewrites: 148 in 10ms cpu (7ms real) (14800 rews/sec) result ModelCheckResult: counterexample({ {[1, repeat ’c1 := ; while ’c2 = if ’turn = then ’c1 := ; while ’turn = skip od ; ’c1 := fi od ; crit ; ’turn := ; ’c1 := ; rem forever] | [2, repeat ’c2 := ; while ’c1 = if ’turn = then ’c2 := ; while ’turn = skip od ; ’c2 := fi od ; crit ; ’turn := ; ’c2 := ; rem forever], [’c1,0] [’c2,0] [’turn,1], }, unlabeled } { }) Ngoài ra, rem không kết thúc, thuộc tính sống yếu P1 P2 thực thi thường không giới hạn, sau hai vào đoạn tới hạn chúng thường thất bại không giới hạn, phản ví dụ trả Maude Một lần nữa, biểu diễn trạng thái cho phản ví dụ mà xảy đầy đủ dài trang Maude> reduce in DEKKER-CHECK : modelCheck(initial, [] exec(1) /\ [] exec(2) 64 Trần Việt Hưng Cao học CNTT 2009 -> [] enterCrit(1) /\ [] enterCrit(2)) ModelChecker: Property automaton has states ModelCheckerSymbol: Examined 236 system states rewrites: 1463 in 70ms cpu (215ms real) (20900 rews/sec) result ModelCheckResult: counterexample({ {[1, repeat ’c1 := ; while ’c2 = if ’turn = then ’c1 := ; while ’turn = skip od ; ’c1 := fi od ; crit ; ’turn := ; ’c1 := ; rem forever] | [2, repeat ’c2 := ; while ’c1 = if ’turn = then ’c2 := ; while ’turn = skip od ; ’c2 := fi od ; crit ; ’turn := ; ’c2 := ; rem forever], [’c1,0] [’c2,0] [’turn,1], }, unlabeled } { }) Những nắm giữ khôn khéo thuộc tính sống yếu P1 P2 thực thi vô hạn, sau P2 vô hạn khỏi phần rem nó, sau P1 vào đoạn tới hạn vô hạn Dĩ nhiên, phát biểu đối xứng cho P2 Maude> reduce in DEKKER-CHECK : modelCheck(initial, [] exec(1) /\ [] exec(2) -> [] ~ in-rem(1) -> [] enterCrit(1)) ModelChecker: Property automaton has states ModelCheckerSymbol: Examined 263 system states rewrites: 1661 in 80ms cpu (223ms real) (20762 rews/sec) result Bool: true Ví dụ minh họa giải thuật Dekker khả tổng quan để kiểm chứng mô hình chương trình Maude có nhiều hữu hạn trạng thái đạt tới ngôn ngữ lập trình bất kỳ: phải định nghĩa Maude ngữ nghĩa viết lại thuộc tính trạng thái ngôn ngữ 2.7 Kết luận 65 Trần Việt Hưng Cao học CNTT 2009 Chương trình bày kiểm chứng mô hình trình bày chi tiết công việc quy trình kiểm chứng mô hình Các công việc kiểm chứng mô hình bao gồm: mô hình hóa hệ thống sử dụng ô-tô-mát, đặc tả đặc tính hệ thống sử dụng logic thời gian kiểm chứng công cụ kiểm chứng phần mềm CHƯƠNG III: ÁP DỤNG MAUDE CHECKER KIỂM CHỨNG MÔ HÌNH MÔ PHỎNG READING PRACTISE 3.1 Phát biểu toán Nguồn gốc phần mềm Reading Practise: - Liệu tự động chấm đọc tiếng Anh mà không cần giáo viên? - Hỗ trợ việc luyện đọc tiếng Anh - Tự động chấm điểm Mô tả phần mềm Reading Practise: Reading Practise chương trình luyện đọc tiếng Anh hệ thống có khả thu âm xử lý tiếng nói Chương trình giúp người sử dụng kiểm tra khả luyện phát âm tiếng Anh trí nhớ Chương trình có chức sau: Sẽ có dòng chữ đoạn văn chạy hình, người sử dụng phải ghi nhớ nhanh từ văn sau hệ thống thu âm thức hoạt động (còn thời điểm trước hệ thống thu âm không hoạt động, đảm bảo người sử dụng bắt buộc phải ghi nhớ thật tốt) Người sử dụng bắt đầu đọc lại đoạn chữ vừa ra, người sử dụng bắt buộc phải đọc nhiều tốt chữ bị (để đạt điểm cao) Người đọc đọc từ xuất hình, người đọc đạt điểm cao phát âm từ có văn Mô tả ràng buộc phần mềm Reading Practise: - Với lần đọc, số từ đọc tối đa 100 - Hệ thống kết thúc trường hợp sau: 66 Trần Việt Hưng Cao học CNTT 2009 • Tổng số từ đọc 100; • số lần đọc sai liên tiếp 5; • số từ không đọc liên tiếp người đọc 99 Bài toán kiểm chứng phần mềm Reading Practise: Bài toán đặt với cách chấm điểm phần mềm Reading Practise, liệu hệ thống có đảm bảo tính bất biến, an toàn tính sống không? Các vông thức không cần thiết để mô tả đặc tả 3.2 Phương pháp giải toán Chúng ta sử dụng phương pháp hình thức, ngôn ngữ lập trình Maude công cụ model-checker để kiểm chứng mô hình phần mềm Reading Practise Có thể áp dụng phương pháp kiểm chứng mô hình để kiểm chứng mô hình phần mềm Reading Practise vì: - Phần mềm Reading Practise chọn để kiểm chứng mô hình có cấu trúc đơn giản - Phần mềm giai đoạn phác thảo để xây dựng nên ý tưởng chức cách thức hoạt động rõ ràng - Phương pháp kiểm chứng mô hình thường áp dụng giai đoạn thiết kế - Việc sớm tìm lỗi thiết kế giúp giảm thiểu rủi ro trình phát triển phần mềm 3.3 Đề xuất quy trình kiểm chứng mô hình sử dụng MaudeChecker Công cụ kiểm chứng Model-Checker: công cụ hỗ trợ cho việc kiểm chứng mô hình Model-Checker kiểm chứng mô hình, mô đun kiểm tra thuộc tính mô tả LTL sinh phản ví dụ thuộc tính không thỏa mãn mô hình Để kiểm chứng mô hình cần phải thực hai bước: phải mô hình hóa phần mềm cần kiểm chứng, sau định nghĩa thuộc tính cần kiểm chứng Với toán Reading Practise, ta cần làm hai bước mô hình hóa ngôn ngữ Maude, khai báo thuộc tính cần kiểm chứng LT 67 Trần Việt Hưng Cao học CNTT 2009 Việc xây dựng mô hình có ý nghĩa quan trọng Nếu mô hình xây dựng không xác, không mô tả Hệ thống cần kiểm chứng Khi đó, kết kiểm chứng không xác Bản chất ngôn ngữ Maude, ngôn ngữ mô tả tập luật để mô tả việc dịch chuyển trạng thái Do đó, Hệ thống đặc tả lý thuyết viết lại R = (∑, E, ∅, R) module Hệ thống Maude, kiểm chứng mô hình, trạng thái vô hạn trạng thái hữu hạn lớn để kiểm chứng mô hình thực tế, khả hiệu cố gắng để kiểm chứng mô hình trừu tượng phương trình trạng thái hữu hạn Tức là, cố gắng để kiểm chứng mô hình lý thuyết viết lại (Σ, E U G, ∅, R) tạo từ R cách thêm vào vài phương trình G tới R Dựa vào tính chất này, ta tìm cách xây dựng biểu đồ trạng thái Hệ thống cần kiểm chứng từ biểu đồ trạng thái xây dựng mô hình ngôn ngữ Maude Quy trình kiểm chứng mô hình sử dụng phương pháp hình thức, ngôn ngữ lập trình Maude công cụ model-checker: Với thông tin trình bày tác giả đề xuất quy trình kiểm chứng chung cho mô hình phần mềm cụ thể sau: Bước 1: Mô hình hóa hoạt động dự kiến phần mềm sử dụng máy hữu hạn trạng thái mô tả đồ thị chuyển dịch trạng thái có gán nhãn gọi cấu trúc Kripke hay ô-tô-mát Bước 2: Mô tả hệ thống chuyển trạng thái Reading Practise ngôn ngữ Maude; Bước 3: Đặc tả thuộc tính cần kiểm chứng sử dụng logic thời gian ngôn ngữ Maude Bước 4: Sử dụng model-checker kiểm chứng thuộc tính bất biến, an toàn, sống Bước 5: Đánh giá kết 3.4 Kiểm chứng mô hình phần mềm Reading Practise 68 Trần Việt Hưng Cao học CNTT 2009 3.4.1 Đặc tả thuộc tính cần kiểm chứng Về tổng thể Hệ thống, ta cần đảm bảo Hệ thống phải có tính dừng (đang hoạt động, đến lúc đó, đạt đến trạng thái kết thúc) Ta phải bảo đảm chữ bắt đầu chạy, người dùng bắt đầu đọc, trạng thái người dùng đọc hay đọc sai phải kiểm chứng Và dòng chữ chạy mãi, Hệ thống đưa định (tính sống còn) 3.4.2 Thiết kế Hệ thống Ta xét đến trạng thái Hệ thống, tập trung mô tả biểu đồ trạng thái Hệ thống Hình 3.1 Biểu đồ mô tả trạng thái Hệ thống 3.4.3 Mô hình hóa Hệ thống ngôn ngữ Maude Dựa vào biểu đồ trạng thái xây dựng trên, ta xây dựng mô hình mô ngôn ngữ Maude sau: mod READ-PRACTISE is including NAT sorts Status Proc Conf subsorts Proc < Conf 69 Trần Việt Hưng Cao học CNTT 2009 op none : -> Conf [ctor] op : Conf Conf -> Conf [ctor assoc comm id: none] ops wait readT readF finish : -> Status [ctor] *** Nhan trang thai cua chuong trinh vars N M L : Nat var S : Status *** Trang thai cua chuong trinh, mot trang thai duoc the hien boi thong so *** Tham so 1: Nhan trang thai *** Tham so 2: So tu nguoi dung doc dung *** Tham so 3: So lan nguoi dung doc sai lien tiep *** Tham so 4: So tu nguoi dung khong doc lien tiep op [_,_,_,_] : Status Nat Nat Nat -> Proc [ctor] *** chuong trinh tu trang thai co nhan wait chuyen sang trang thai co readT *** So tu doc dung tang len va so lan doc sai lien tiep quy ve rl [read-true] : [wait, N, M, L] => [readT, N + 1, 0, 0] *** chuong trinh tu trang thai co nhan wait chuyen sang trang thai co readF *** So lan nguoi dung doc sai lien tiep tang len rl [read-false] : [wait, N, M, L] => [readF, N, M + 1, 0] *** chuong trinh tu trang thai co nhan readT chuyen ve trang thai co wait *** neu so tu doc dung nho hon 100 crl [waiting1] : [readT, N, M, L] => [wait, N, M, L] if N < 100 *** chuong trinh tu trang thai co nhan readT chuyen ve trang thai co finish nhan nhan nhan nhan *** neu so tu doc dung bang 100 crl [finish1] : [readT, N, M, L] => [finish, N, M, L] if N == 100 *** chuong trinh chuyen tu trang thai co nhan readF ve trang thai co nhan wait *** neu so lan doc sai lien tiep nho hon crl [waiting2] : [readF, N, M, L] => [wait, N, M, L] if ( M < 5) *** chuong trinh chuyen tu trang thai co nhan wait ve trang thai co nhan wait *** neu so tu khong doc lien tiep nho hon 99 crl [waiting3] : [wait, N, M, L] => [wait, N, M, L + 1] if ( L < 99) 70 Trần Việt Hưng Cao học CNTT 2009 *** chuong trinh chuyen tu trang thai co nhan wait ve trang thai co nhan finish *** neu so tu khong doc lien tiep bang 99 crl [waiting3] : [wait, N, M, L] => [finish, N, M, 0] if ( L == 99) *** chuong trinh chuyen tu trang thai co nhan readF ve trang thai co nhan finish *** neu so lan doc sai lien tiep la crl [finish] : [readF, N, M, L] => [finish, N, 0, L] if ( M == 5) endm mod READ-PRACTISE-PREDS is protecting READ-PRACTISE including SATISFACTION subsort Conf < State ops readFa readTr waitW finishF : -> Prop [ctor] vars N M L : Nat var C : Conf var P : Prop eq [readF, N, M, L] C |= readFa = true eq [readT, N, M, L] C |= readTr = true eq [wait, N, M, L] C |= waitW = true eq [finish, N, M, L] C |= finishF = true eq C |= P = false [owise] endm mod READ-PRACTISE-CHECK is protecting READ-PRACTISE-PREDS including MODEL-CHECKER including LTL-SIMPLIFIER op init : -> Conf eq init = [wait, 0, 0, 0] *** Trang thai khoi tao endm 3.4.3.1 Tính sống - Hệ thống trạng thái chờ đợi chạy đạt đến trạng thái kết thúc: finishF 71 Trần Việt Hưng Cao học CNTT 2009 Hình 3.2.Kết kiểm tra Thuộc tính sống Hệ thống đạt đến trạng thái kết thúc - Hệ thống phải đảm bảo không luôn trạng thái đợi: ~ [] waitW Hình 3.3 Kết kiểm tra Thuộc tính sống Hệ thống đảm bảo không trạng thái đợi 3.4.3.2 Tính an toàn - Hệ thống không tồn trạng thái kết thúc (waitW \/ readTr \/ readFa) U finishF Hình 3.4 Kết kiểm tra Thuộc tính an toàn Hệ thống đảm bảo không tồn hai trạng thái kết thúc 3.4.3.3 Tính bất biến 72 Trần Việt Hưng Cao học CNTT 2009 - Số từ mà người dùng đọc nhỏ 100 Hình 3.5 Kết kiểm tra tính bất biến Số từ mà người dùng đọc nhỏ 100 - Số từ mà người dùng không đọc liên tiếp nhỏ 100 Hình 3.6 Kết kiểm tra tính bất biến Số từ mà người dùng không đọc liên tiếp nhỏ 100 - Số lần mà người dùng đọc sai liên tiếp phải nhỏ Hình 3.7 Kết kiểm tra tính bất biến Số lần mà người dùng đọc sai liên tiếp phải nhỏ 3.5 Kết luận 73 Trần Việt Hưng Cao học CNTT 2009 Đã kiểm chứng thành công thuộc tính sống còn, an toàn bất biến mô hình Với thuộc tính an toàn, Hệ thống không tồn hai trạng thái kết thúc Thuộc tính sống còn, Hệ thống trạng thái chờ đợi (hoặc chạy) đạt đến trạng thái kết thúc, ra, Hệ thống phải đảm bảo không luôn trạng thái đợi Còn thuộc tính bất biến, mô tả rõ biểu đồ trạng thái, số từ mà người sử dụng đọc nhỏ 100, số từ mà người sử dụng không đọc liên tiếp nhỏ 100, cuối số lần mà người sử dụng đọc sai liên tiếp phải nhỏ 74 Trần Việt Hưng Cao học CNTT 2009 CHƯƠNG IV: KẾT QUẢ VÀ BÀN LUẬN 4.1 Kết đóng góp luận văn Luận văn trình bày lý thuyết, khái niệm; nguyên lý, cách áp dụng phương pháp hình thức; mô hình, công cụ kỹ thuật Maude vào xây dựng ứng dụng Áp dụng lý thuyết, kỹ thuật vào toán cụ thể Reading Practise, sử dụng MaudeChecker công cụ kiểm chứng Bên cạnh đó, luận văn xây dựng thành công mô hình kiểm chứng viết ngôn ngữ lập trình Maude, sử dụng công cụ MaudeChecker Trong luận văn ứng dụng mô hình kiểm chứng áp dụng cho trường hợp (case-study) cụ thể phần mềm ứng dụng Reading Practise 4.2 Bàn luận Một số nội dung tồn Trong đề tài, chưa xem xét đến việc công cụ MaudeChecker đưa phản ví dụ Khi có tính chất mà có phản ví dụ (tức Maude Checker trả False) ta phải sửa đổi lại mô hình, kiểm chứng lại xem mô hình có thỏa mãn tính chất hay không Ta tiếp tục thực việc đến tính chất thỏa mãn Ngoài ra, trình thực đề tài có số vấn đề chưa giải Tác giả chưa định nên đưa tính chất vào thuộc tính ba thuộc tính Có thể diễn giải vấn đề chưa giải qua ví dụ trực quan sau đây: Dựa vào biểu đồ trạng thái mà tác giả xây dựng trên, tiến trình wait, ReadTrue hay ReadFalse phải dẫn đến trạng thái kết thúc Ta xét ReadTrue ReadFalse chúng đạt đến trạng thái kết thúc Với ReadTrue, tổng số lần đọc người dùng 100 Hệ thống kết thúc (chú ý Hệ thống nhỏ, đơn giản, lấy đến tổng số lần đọc 100) Với ReadFalse số lần đọc sai liên tiếp lần Hệ thống kết thúc Để cho dễ hình dung, giả sử người sử dụng đọc 99 lần liên tiếp rồi, ta xét lần đọc sau người sử dụng Giả sử lần 100, 101, 102 103 người 75 Trần Việt Hưng Cao học CNTT 2009 sử dụng đọc sai Như kết lần đọc 104 không phụ thuộc vào việc người sử dụng đọc hay đọc sai, lẽ đến lần đọc 104, người sử dụng đọc đúng, ReadTrue đạt đến trạng thái kết thúc Nếu người sử dụng đọc sai ReadFalse đạt đến trạng thái kết thúc Ví dụ đưa nhằm mục đích đưa câu hỏi, liệu Hệ thống đạt đến trạng thái vậy, chất lượng Hệ thống nào, giá trị đọc cuối không phụ thuộc vào việc người sử dụng đọc Đó vấn đề tồn đọng mà đề tài chưa thể giải Hướng nghiên cứu tiếp theo: Với đề xuất quy trình đặc tả kiểm chứng mô hình sử dụng MaudeChecker, thời gian có hạn nên đề tài tác giả chưa xem xét đến việc công cụ MaudeChecker đưa phản ví dụ, vấn đề tồn đọng chưa giải mà tác giả nêu Trong tương lai, tác giả tiếp tục xem xét hoàn thiện vấn đề tồn nêu Ngoài việc ứng dụng phương pháp kiểm chứng mô hình ngôn ngữ lập trình Maude để kiểm chứng hệ thống phần mềm giai đoạn thiết kế, tác giả tiếp tục nghiên cứu việc sử dụng ngôn ngữ lập trình Maude công cụ để kiểm chứng mã nguồn phần mềm Ngoài với đề xuất sử dụng kỹ thuật kiểm chứng mô hình để kiểm chứng ứng dụng công cụ kiểm chứng Maude, công việc mô hình hóa ngôn ngữ Maude không thuận tiện phải thực tay sử dụng ngôn ngữ Maude Trong tương lai tác giả mong muốn phát triển thêm tính mô hình hóa đồ họa, giao diện trực quan cho công cụ Maude 76 Trần Việt Hưng Cao học CNTT 2009 KẾT LUẬN Nội dung luận văn tập trung vào tìm hiểu lý thuyết nguyên lý kỹ thuật kiểm chứng chất lượng phần mềm đặc biệt kỹ thuật kiểm chứng mô hình, đồng thời nghiên cứu việc ứng dụng phương pháp hình thức; mô hình, công cụ kỹ thuật ngôn ngữ lập trình Maude vào xây dựng ứng dụng Dựa kết tìm hiểu nghiên cứu đạt được, tác giả áp dụng lý thuyết, kỹ thuật nêu vào toán cụ thể kiểm chứng mô hình phần mềm Reading Practise, sử dụng công cụ kiểm chứng mô hình MaudeChecker Trong trình thực luận văn này, tác giả cố gắng tìm hiểu, học hỏi thêm kinh nghiệm kiến thức Tuy nhiên có nhiều hạn chế chủ quan khách quan nên có số vấn đề mà đề tài chưa giải nói Tác giả mong muốn nhận quan tâm, giúp đỡ để đề tài phát triển hoàn thiện Sau cùng, tác giả xin chân thành gửi lời cảm ơn PGS.TS Huỳnh Quyết Thắng tận tình hướng dẫn, giúp đỡ tác giả hoàn thành luận văn Tác giả xin chân thành gửi lời cảm ơn tới tất bạn bè, thầy cô giáo, đồng nghiệp động viên, tạo điều kiện cho tác giả suốt thời gian thực luận văn Hà Nội, tháng năm 2011 Tác giả luận văn Trần Việt Hưng 77 Trần Việt Hưng Cao học CNTT 2009 TÀI LIỆU THAM KHẢO Tiếng Việt [1] ThS Thạc Bình Cường, “Bài giảng điện tử môn học Kiểm thử đảm bảo chất lượng phần mềm” ĐHBK HN, 2010 [2] Thư viện cao học trường Đại học Công nghệ thông tin, “ Kiểm thử phần mềm”, 2010 Tiếng Anh [3] Christel Baier Joost-Pieter Katoen, “Principle Of Model Checking”, The MIT Press Cambridge, Massachusetts London, England, 2008 [4] Ian Sommerville (2004), “Software engineering, 7th edition”, Thomas Casson, 2007 [5] Manuel Clavel - Francisco Durán - Steven Eker - Patrick Lincoln- Narciso Martí- Oliet José Meseguer - Carolyn Talcott, “All About Maude - A HighPerformance Logical Framework” Springer, 2007 [6] Peter Marweden (2006), “Embedded Systems Design” Spinger, 2006 [7] http://en.wikipedia.org/wiki/Maude_system [8] http://maude.cs.uiuc.edu/ 78 ... tổng hợp nguyên lý, kỹ thuật kiểm chứng chất lượng phần mềm xây dựng phần mềm đạt chất lượng cao, tác giả chọn đề tài cho luận văn là: Các nguyên lý kỹ thuật kiểm chứng chất lượng phần mềm Lịch... Kiểm chứng mô hình phần mềm kiểm thử phần mềm Cả kiểm chứng mô hình kiểm thử phần mềm thực vai trò đảm bảo chất lượng phần mềm việc tìm lỗi có phần mềm Tuy nhiên kiểm chứng mô hình kiểm thử phần. .. "Các nguyên lý kỹ thuật kiểm chứng chất lượng phần mềm" Mục đích, đối tượng phạm vi nghiên cứu 3.1 Mục đích Tìm hiểu, đề xuất, tổng hợp nguyên lý, kỹ thuật kiểm chứng phần mềm xây dựng phần mềm

Ngày đăng: 27/07/2017, 20:24

Từ khóa liên quan

Mục lục

  • LỜI CAM ĐOAN

  • MỤC LỤC

  • DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

  • DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ

  • MỞ ĐẦU

  • CHƯƠNG I: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM

  • CHƯƠNG II: KIỂM CHỨNG MÔ HÌNH

  • CHƯƠNG III: ÁP DỤNG MAUDE CHECKER

  • CHƯƠNG IV: KẾT QUẢ VÀ BÀN LUẬN

  • KẾT LUẬN

  • TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan