Ứng dụng của spin để kiểm chứng sự tuân thủ thể thức tương tác của chương trình

69 279 0
Ứng dụng của spin để kiểm chứng sự tuân thủ thể thức tương tác của chương trình

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ HOÀNG VĂN THỦY ỨNG DỤNG CỦA SPIN ĐỂ KIỂM CHỨNG SỰ TUÂN THỦ THỂ THỨC TƯƠNG TÁC CỦA CHƯƠNG TRÌNH LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN Hà Nội – 2014 2 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ HOÀNG VĂN THỦY ỨNG DỤNG CỦA SPIN ĐỂ KIỂM CHỨNG SỰ TUÂN THỦ THỂ THỨC TƯƠNG TÁC CỦA CHƯƠNG TRÌNH Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TIẾN SĨ ĐẶNG VĂN HƯNG Hà Nội – 2014 1 LỜI CẢM ƠN Trước hết tôi xin bày tỏ lòng biết ơn sâu sắc và gửi lời cảm ơn đặc biệt nhất tới Thầy TS. Đặng Văn Hưng, người đã định hướng đề tài, cung cấp cho tôi những kiến thức, những tài liệu và tận tình hướng dẫn chỉ bảo tôi trong suốt quá trình thực hiện đề tài luận văn cao học này, từ những ý tưởng trong đề cương nghiên cứu, phương pháp nghiên cứu, phương pháp giải quyết vấn đề cho đến những lần kiểm tra cuối cùng để hoàn thành luận văn này. Tôi xin bày tỏ lòng biết ơn chân thành tới Thầy, Cô giáo trong bộ môn Kỹ thuật phần mềm, Khoa Công nghệ thông tin, những người đã mang trí tuệ, công sức truyền đạt giúp tôi mở rộng kiến thức về Công nghệ thông tin nói chung và Kỹ thuật phần mềm nói riêng, đó là những kiến thức quý báu và sẽ rất có ích với tôi trong giai đoạn hiện tại và tương lai. Tôi xin gửi lời cảm ơn chân thành tới Ban Giám hiệu Nhà trường, Phòng Đào tạo sau đại học, Đại học Công nghệ - Đại học Quốc gia Hà Nội đã tạo điều kiện tốt nhất giúp tôi trong suốt quá trình học tập. Cuối cùng tôi xin gửi lời cảm ơn đến gia đình, bạn bè những người đã luôn động viên khuyến khích tôi trong suốt quá trình học tập cũng như thực hiện đề tài luận văn của mình. Hà Nội, ngày 08 tháng 11 năm 2014 Học viên Hoàng Văn Thủy 2 LỜI CAM ĐOAN Tôi xin cam đoan nội dung trình bày trong luận văn này là do tôi tự nghiên cứu tìm hiểu dựa trên các tài liệu và tôi trình bày theo ý hiểu của bản thân dưới sự hướng dẫn trực tiếp của Thầy TS. Đặng Văn Hưng. Các nội dung nghiên cứu, tìm hiểu và kết quả thực nghiệm là hoàn toàn trung thực. Luận văn này của tôi chưa từng được ai công bố trong bất cứ công trình nào. Trong quá trình thực hiện luận văn này tôi đã tham khảo đến các tài liệu của một số tác giả, tôi đã ghi rõ tên tài liệu, nguồn gốc tài liệu, tên tác giả và tôi đã liệt kê trong mục “DANH MỤC TÀI LIỆU THAM KHẢO” ở cuối luận văn. Học viên Hoàng Văn Thủy 3 MỤC LỤC LỜI CẢM ƠN 1 LỜI CAM ĐOAN 2 MỤC LỤC 3 DANH MỤC HÌNH VẼ 5 DANH MỤC BẢNG 5 CHƯƠNG 1. MỞ ĐẦU 6 1.1. ĐẶT VẤN ĐỀ 6 1.2. NỘI DUNG VÀ MỤC ĐÍCH NGHIÊN CỨU 7 1.3. GIẢ THUYẾT KHOA HỌC 7 1.4. CẤU TRÚC CỦA LUẬN VĂN 8 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT 9 2.1. Công nghệ phần mềm dựa trên thành phần 9 2.2. Lịch sử phát triển của công nghệ phần mềm dựa trên thành phần 10 2.3. Xây dựng hệ thống dựa trên thành phần 10 2.3.1. Thành phần phần mềm 10 2.3.2. Xác định thành phần 12 2.3.2.1. Dùng lại 12 2.3.2.2. Phát triển mới 12 2.3.2.3. Thích nghi 12 2.3.2.4. Cập nhật thành phần 13 2.4. Lợi ích của công nghệ phần mềm dựa trên thành phần 13 2.6. Mô hình hóa giao diện thành phần 15 2.6.1. Giao diện 15 2.6.2. Vai trò giao diện 15 2.6.3. Đặc tả giao diện với một số ngôn ngữ cơ sở 15 2.6.4. Đặc tả giao diện với các ràng buộc cơ sở 17 2.7. Kết luận 26 CHƯƠNG 3. BỘ CÔNG CỤ KIỂM CHỨNG MÔ HÌNH SPIN VÀ BÀI TOÁN DEADLOCK 28 3.1. Kiểm duyệt mô hình 28 3.1.1. Tổng quan hoạt động của kiểm duyệt mô hình 29 3.1.2. Quá trình hoạt động của kiểm duyệt mô hình 30 3.1.3. Ưu, nhược điểm của kiểm duyệt mô hình 30 3.2. Bộ công cụ SPIN 31 3.2.1. Tổng quan về SPIN 31 3.2.2. Cấu trúc của SPIN 31 3.2.3. Công cụ ISPIN 33 3.3. Ngôn ngữ Promela 35 3.3.1. Tổng quan về Promela 35 3.3.2. Chương trình Promela 35 3.3.3. Tiến trình 36 3.3.4. Tiến trình Init và Run 37 3.3.5. Biến trong Promela 37 3.3.6. Kiểu dữ liệu trong Promela 38 3.3.6.1. Kiểu dữ liệu cơ bản 38 3.3.6.2. Kiểu dữ liệu có cấu trúc 38 3.3.7. Toán tử, dịnh danh, hằng và biểu thức 39 3.3.8. Câu lệnh trong Promela 40 3.3.9. Các cấu trúc điều khiển 41 3.3.9.1. Câu lệnh điều kiện IF 41 4 3.3.9.2. Câu lệnh lặp DO 42 3.3.10. Đan xen (interleaving) 43 3.3.11. Cấu trúc atomic 44 3.3.12. Kênh trong Promela 45 3.3.12.1. Biến kênh 46 3.3.12.2. Kênh gặp (rendezvous) 46 3.3.12.3. Kênh đệm (Buffer) 47 3.4. Bài toán deadlock trong SPIN 48 3.5. Kết luận 50 CHƯƠNG 4. KIỂM CHỨNG SỰ TUÂN THỦ THỂ THỨC TƯƠNG TÁC CỦA CHƯƠNG TRÌNH BẰNG SPIN 52 4.1. Phương pháp 52 4.2. Áp dụng 53 4.3. Kết luận 61 CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 62 5.1. Kết luận 62 5.2. Hướng phát triển. 62 DANH MỤC TÀI LIỆU THAM KHẢO 63 PHỤ LỤC 65 5 DANH MỤC HÌNH VẼ Hình 2.1. Tổng quan thiết kế phần mềm dựa trên thành phần 9 Hình 2.2. Kiến trúc hệ thống của phần mềm hướng thành phần 11 Hình 2.3. Mô hình phát triển phần mềm dựa trên thành phần 14 Hình 2.4. Mô hình truyền thông 22 Hình 3.1. Sơ đồ tổng quan của kiểm duyệt mô hình 29 Hình 3.2. Cấu trúc mô hình kiểm chứng SPIN 32 Hình 3.3. Giao diện ISPIN soạn thảo mã nguồn mô hình kiểm chứng 33 Hình 3.4. Thiết lập thông số khi thực hiện Simulate/Replay. 34 Hình 3.5. Thiết lập thông số Verification để kiểm chứng. 34 Hình 3.6. Mô hình gửi và nhận thông điệp trên kênh gặp (rendezvous) 47 Hình 3.7. Mô hình gửi và nhận thông tin trên kênh đệm (Buffer) 47 Hình 3.8. Báo cáo deadlock và vi phạm của chương trình guinhan 50 Hình 4.1 Automat mô tả giao thức của thành phần quản lý cơ sở dữ liệu. 52 Hình 4.2 Automat mô tả giao thức tương tác của thành phần môi trường có biểu thức chính quy là or*w*ct 55 Hình 4.3 Automat mô tả thể thức của thành phần môi trường có biểu thức chính quy là or*w*rct. 55 Hình 4.4 Automat thể hiện các trạng thái của tiến trình pro. 57 Hình 4.5 Automat thể hiện các trạng thái của tiến trình user1. 58 Hình 4.6. Kết quả khi chạy mô phỏng tương tác giữa pro và user1 58 Hình 4.7. Kết quả sau khi Run verification (thể hiện sự tuân thủ thể thức tương tác của chương trình sau khi chạy mô phỏng trên ISPIN) 59 Hình 4.8 Automat thể hiện các trạng thái của tiến trình user2. 60 Hình 4.9. Kết quả khi chạy mô phỏng tương tác giữa pro và user2 60 Hình 4.10. Kết quả sau khi Run verification (thể thức của thành phần không tuân thủ thể thức của chương trình sau khi chạy mô phỏng trên ISPIN). 61 DANH MỤC BẢNG Bảng 3.1 Kiểu dữ liệu cơ bản 38 Bảng 3.2. Toán tử trong Promela 39 Bảng 3.3. Bảng thể hiện xen kẽ trạng thái của chương trình Promela PQ 44 Bảng 3.4. Kết quả đầu ra có thể của chương trình Promela PQ 44 6 CHƯƠNG 1. MỞ ĐẦU 1.1. ĐẶT VẤN ĐỀ Phần mềm ngày càng đóng vai trò quan trọng trong xã hội hiện đại. Tỷ trọng giá trị phần mềm trong các hệ thống ngày càng lớn. Nhưng trong nhiều hệ thống, lỗi của phần mềm gây ra các hậu quả đặc biệt nghiêm trọng, không chỉ về mặt kinh tế mà còn về con người, đặc biệt là các phần mềm điều khiển hệ thống và thiết bị giao thông. Nguyên nhân của các lỗi này là do phần mềm ngày càng phức tạp do các bài toán được giải quyết và hỗ trợ bởi phần mềm ngày càng lớn. Để khắc phục các khó khăn này, cách tiếp cận hướng đối tượng đã được sử dụng để phát triển phần mềm và tỏ ra hiệu quả từ những năm 90 của thế kỷ trước[17]. Tuy nhiên, do độ phức tạp của phần mềm ngày càng cao và để giảm giá thành, kiến trúc phần mềm cần được cải tiến để tăng tính dùng lại (reuse) của các yếu tố phần mềm đã phát triển trước đó. Cách tiếp cận hướng thành phần được áp dụng rộng rãi và có hiệu quả cao. Theo cách tiếp cận này, phần mềm được xây dựng bằng cách lắp ráp các thành phần riêng biệt lại với nhau như được định nghĩa là: “Các thiết kế phần mềm mới được tạo ra bằng cách kết hợp các đơn thể phần mềm có sẵn với một phần mềm mới cung cấp các chức năng mới và mã kết nối các thành phần với nhau”. Trong đó, thành phần phần mềm được định nghĩa bởi Szyperski năm 1997 là: “Thành phần phần mềm là một đơn vị của việc kết hợp với các giao diện được đặc tả bởi hợp đồng và có các mối phụ thuộc tường minh, có thể được triển khai độc lập và hướng tới việc kết hợp bởi bên thứ ba” [ 11]. Trong định nghĩa này, giao diện của thành phần được đặc tả bởi hợp đồng đóng vai trò mấu chốt. Hợp đồng bao gồm các dịch vụ và chất lượng dịch vụ mà thành phần phần mềm cung cấp cho môi trường và những điều kiện mà môi trường phải thỏa mãn để được nhận dịch vụ của thành phần. Câu hỏi đặt ra là làm thế nào để kiểm chứng xem môi trường (chương trình gọi đến các dịch vụ của phần mềm) có tuân thủ các điều kiện được mô tả trong hợp đồng của giao diện thành phần hay không. Các phương pháp kiểm chứng hình thức như chứng minh định lý và kiểm chứng mô hình đã đạt được những thành công nhất định trong kiểm chứng và đặc tả phần mềm. Việc sử dụng các phương pháp này vào bài toán nêu trên hy vọng có nhiều hứa hẹn. Các điều kiện mô tả trong giao diện của thành phần gồm có các tiền điều kiện đối với các tham số của dịch vụ và thứ tự của các lời gọi dịch vụ mà môi trường phải tuân thủ (tức là giao thức). Tôi tập trung vào việc kiểm chứng điều 7 kiện thứ hai, tức là kiểm chứng xem môi trường có tuân thủ các thứ tự lời gọi được qui định hay không và tin rằng lời giải có thể được mở rộng để kiểm tra cả điều kiện thứ nhất. Để giải quyết bài toán này, ta cần tìm hiểu về giao diện của thành phần phần mềm và đặc tả của giao thức và tìm hiểu về phương pháp hình thức để kiểm chứng. Phương pháp mà tôi định sử dụng là kiểm chứng mô hình bằng công cụ kiểm chứng SPIN và đề tài nghiên cứu của chúng tôi là: “Ứng dụng của SPIN để kiểm chứng sự tuân thủ thể thức tương tác của chương trình”. Được biết đề tài này đã được nhiều người nghiên cứu trong và ngoài nước quan tâm, trong tài liệu [13], các tác giả đã xét bài toán này khi giao thức là các ràng buộc về thứ tự các phép toán (không phải là dãy), trong tài liệu [9], tác giả đã đề xuất một mô hình tổng quát và đề xuất các thuật toán để kiểm chứng nhưng các thuật toán này khó cài đặt và không tự động hoàn toàn vì việc kiểm chứng không chỉ đối với giao thức mà cả sự tương thích của dịch vụ thời gian thực nên cần đến các công cụ giải bài toán SAT (Satisfiability – Thỏa mãn của một công thức), tức là các solvers. 1.2. NỘI DUNG VÀ MỤC ĐÍCH NGHIÊN CỨU Từ việc đặt bài toán và ý tưởng để giải bài toán được đề xuất trên đây, nội dung nghiên cứu của đề tài được xác định như sau.  Tìm hiểu công nghệ phát triển phần mềm hướng thành phần. Tìm hiểu về các thành phần phần mềm trong phần mềm được phát triển theo hướng thành phần với: giao diện của thành phần phần mềm, đặc tả giao thức tương tác của chúng. Trong nội dung này quan trọng là đặc tả giao thức tương tác của các thành phần.  Tìm hiểu bộ công kiểm chứng SPIN, ngôn ngữ mô hình hóa Promela trong bộ công cụ SPIN với cách thức mô hình hóa các thể thức tương tác của các thành phần phần mềm trong bộ công cụ SPIN bằng ngôn ngữ Promela.  Trên các cơ sở đó áp dụng bộ công cụ SPIN để kiểm chứng sự tuân thủ thể thức tương tác hoặc không tuân thủ thể thức tương tác của chương trình dựa vào các giao thức tương tác. 1.3. GIẢ THUYẾT KHOA HỌC Phương pháp kiểm chứng sự tuân thủ hoặc không tuân thể thức tương tác của chương trình bằng công cụ SPIN là cần thiết, nó góp phần tích cực vào việc phát triển phần mềm hướng thành phần bởi nó rất đơn giản, nếu được thực hiện sẽ đảm bảo một thành phần phần mềm sẽ tương thích với chương trình, từ đó giảm 8 thời gian phát triển hệ thống, nâng cao chất lượng sản phẩm phần mềm và đáp ứng yêu cầu khách hàng. 1.4. CẤU TRÚC CỦA LUẬN VĂN Với nội dung nghiên cứu đã nêu ở trên, thì luận văn gồm có các nội dung trình bày như sau: Trình bày về công nghệ phần mềm hướng thành phần. Thành phần phần mềm trong phần mềm được phát triển theo hướng thành phần. Giao diện tương tác của các thành phần phần mềm. Trong nội dung chủ yếu về công nghệ phần mềm dựa trên thành phần và đặc tả giao thức tương tác của các thành phần. Trình bày về bộ công cụ kiểm chứng mô hình SPIN với ngôn ngữ Promela là ngôn ngữ mô hình hóa trong bộ công cụ SPIN, bài toán deadlock trong SPIN và cách kiểm tra deadlock trong bộ công cụ SPIN. Phần thực nghiệm, áp dụng bộ công cụ SPIN để kiểm chứng sự tuân thủ hoặc không tuân thủ thể thức tương tác của chương trình. Từ kết quả thực nghiệm này có thể kết luận được phương pháp kiểm chứng đã đưa ra. [...]... số bước cụ thể Tuy nhiên trong nội dung của luận văn này chỉ xét đến khía cạnh kiểm chứng sự tuân thủ hoặc không tuân thủ thể thức tương tác của chương trình nên ta thực hiện hai bước: mô hình hóa thể thức tương tác của chương trình bằng một tiến trình đồng thời mô hình hóa thể thức tương tác của một thành phần cũng bằng một tiến trình trong SPIN, hai tiến trình này chạy song song và sử dụng một kênh... để ứng dụng vào việc kiểm chứng sự tuân thủ hoặc không tuân thủ thể thức tương tác của chương trình 3.1 Kiểm duyệt mô hình Kiểm chứng mô hình phần mềm là một kỹ thuật xác minh tự động cho hệ thống phần mềm Theo định nghĩa của Clarke & Emerson 1981: "Kiểm chứng mô hình là một kỹ thuật tự động đưa ra một mô hình hữu hạn trạng thái của một hệ thống và một thuộc tính logic, hệ thống kiểm tra xem thuộc tính... chạy SPIN để xác minh (verification) Kết quả sẽ được báo cáo trong 33 cửa sổ pan.out của ISPIN ngay sau khi chạy xác minh: nếu không có deadlock (không báo Invalid EndState depth ( )) thì chương trình tuân thủ thể thức tương tác của thành phần, nếu có deadlock (báo Invalid endState depth ( )) thì thành phần không tuân thủ thể thức tương tác của chương trình Cần phải yêu cầu bên thiết kế xây lại thể thức. .. diện tương tác của các thành phần, trong đó chứa giao thức tương tác giữa các 27 thành phần và quyết định chất lượng của phần mềm được phát triển theo hướng thành phần 28 CHƯƠNG 3 BỘ CÔNG CỤ KIỂM CHỨNG MÔ HÌNH SPIN VÀ BÀI TOÁN DEADLOCK Nội dung chương này tập trình bày cơ bản về công cụ kiểm chứng mô hình SPIN với ngôn ngữ mô hình hóa Promela, sử dụng ưu đặc điểm của ngôn ngữ trong công cụ để ứng dụng. .. nghĩa của các giao diện tương tác và các giao thức tương tác của chúng Vì vậy, tập hợp các kịch bản tương tác cho phép là lớn hơn nhiều so với giá trị thực tế thiết lập các kịch bản tương tác Khi một ràng buộc tương tác được quy định và được kiểm tra (trước khi tương tác) , nó sẽ loại bỏ một số tương tác không hợp lệ Về bản chất, nó giảm bớt sự cho phép thiết lập đối với tập giá trị của các tương tác. .. cách để giảm bớt và dễ dàng hơn trong việc kiểm chứng nhưng tăng phạm vi ứng dụng của kiểm chứng Các phương pháp hình thức là một trong các kỹ thuật đó, nó cung cấp thêm các kỹ thuật cho kiểm chứng và giảm bớt thời gian kiểm chứng hệ thống Tiềm năng to lớn của các phương pháp hình thức dẫn đến việc ứng dụng nó ngày càng nhiều vào các hệ thống phần mềm phức tạp Nghiên cứu về các phương pháp hình thức. .. thiết kế xây lại thể thức của chương trình 2.2.3 Công cụ ISPIN Bộ công cụ ISPIN có giao diện thân thiện, dễ sử dụng trong quá trình thực hiện kiểm chứng mô hình [19] Hình 3.3 Giao diện ISPIN soạn thảo mã nguồn mô hình kiểm chứng Công cụ ISPIN có cửa sổ để soạn thảo và chỉnh sửa chương trình (Hình 2.3) khá đơn giản Sau khi soạn thảo ta kiểm tra cú pháp với Tab Syntax Check Kiểm tra cú pháp phải được... ngôn ngữ mô hình hóa của bộ công cụ SPIN Sử dụng công cụ SPIN với ngôn ngữ Promela có thể: Mô phỏng tương tác phỏng ngẫu nhiên cho một hệ thống; Xác thực và chứng minh tính đúng đắn so với yêu cầu đặc tả của người sử dụng; Chứng minh sự xấp xỉ của các mô hình hệ thống lớn với việc bao phủ không gian trạng thái Cấu trúc và cách thức hoạt động của bộ công cụ SPIN dùng để kiểm tra mô hình có thỏa mãn hay... tượng về hành vi của một thành phần, nó bao gồm một tập các tương tác của thành phần đó cùng với một tập các ràng buộc mô tả các hành động có thể xảy ra Giao diện mô tả hành vi của một thành phần có thể thu được bằng cách xem xét sự tương tác của giao diện đó với các giao diện tương tác của các thành phần khác [5] 2.6.2 Vai trò giao diện Trong giao diện thành phần thì thể thức tương tác (Interaction... protocol) mà nó đặt ra là quan trọng, đó là cách thức gọi các dịch vụ theo thứ tự cụ thể Một thành phần có thể thức tương tác cụ thể, một thành phần khác (môi trường) muốn sử dụng dịch vụ của thành phần thì nó phải gọi các dịch vụ đó theo thứ tự tuân thủ thể thức thành phần Giao diện thành phần quy định sự tương tác giữa các thành phần và cơ chế ghép nối chúng để thành một hệ thống phục vụ nhu cầu thực tế

Ngày đăng: 28/08/2015, 23:14

Từ khóa liên quan

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

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