Kiểm chứng hình thức cho hệ thống tương tranh sử dụng ngôn ngữ đặc tả CSP # và công cụ pat

78 856 1
Kiểm chứng hình thức cho hệ thống tương tranh sử dụng ngôn ngữ đặc tả CSP # và công cụ pat

Đ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Ệ NGUYỄN VĂN TRÃI KIỂM CHỨNG HÌNH THỨC CHO HỆ THỐNG TƯƠNG TRANH SỬ DỤNG NGÔN NGỮ ĐẶC TẢ CSP# VÀ CÔNG CỤ PAT LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2013 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN TRÃI KIỂM CHỨNG HÌNH THỨC CHO HỆ THỐNG TƯƠNG TRANH SỬ DỤNG NGÔN NGỮ ĐẶC TẢ CSP# VÀ CÔNG CỤ PAT Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm Mã số: 60 48 10 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Nguyễn Trường Thắng Phụ lục Hà Nội – 2013 3: Mục lục Lời cảm ơn Lời cam đoan Mục lục Danh mục bảng Danh mục hình vẽ Lời mở đầu Kiểm chứng mơ hình 1.1 Tổng quan kiểm chứng mơ hình 1.2 Các đặc tính kiểm chứng mơ hình 1.2.1 Các pha thực 1.2.2 Ưu điểm nhược điểm 1.3 Mơ hình hóa hệ thống 1.3.1 Hệ dịch chuyển (Transition System) 1.3.2 Mơ hình hóa hệ thống hệ dịch chuyển 1.4 Đặc tả hình thức thuộc tính hệ thống 1.4.1 Các thuộc tính thời gian tuyến tính (Linear-Time Property) 1.4.2 Lơgic thời gian tuyến tính (Linear Temporal Logic) Hệ thống tương tranh 2.1 Tổng quan hệ tương tranh 2.2 Mơ hình hóa hệ tương tranh hệ dịch chuyển 2.2.1 Xử lý đan xen (Interleaving) 2.2.2 Giao tiếp qua biến chia sẻ (Shared Variables) 2.2.3 Tương tác dạng bắt tay (Handshaking) 2.2.4 Giao tiếp thông qua kênh truyền (Channel Systems) 2.2.5 Xử lý song song đồng (Synchronous Parallelism) 11 13 13 16 17 17 21 23 23 26 30 30 32 33 34 35 36 39 Đặc tả mơ hình hệ tương tranh với CSP# 41 3.1 Process Algebra 41 3.2 Ngôn ngữ CSP# 3.2.1 Các định nghĩa toàn cục 3.2.2 Định nghĩa tiến trình 3.2.3 Khẳng định 3.3 Một cách tiếp cận trích xuất mơ hình từ mã nguồn C# 3.3.1 Xử lý đa luồng C# 3.3.2 Trích xuất mơ hình từ mã nguồn C# 3.3.3 Hướng phát triển Kiểm chứng thử nghiệm với PAT 4.1 Tổng quan PAT 4.2 Mô-đun CSP 4.3 Ví dụ thử nghiệm 4.4 So sánh đánh giá 42 43 44 50 52 54 57 61 62 62 64 65 71 Kết luận 73 Danh mục cơng trình khoa học liên quan đến luận văn 75 Tài liệu tham khảo 76 Danh sách bảng 3.1 Các luật tương đương trích xuất mơ hình 59 Danh sách hình vẽ 1.1 1.2 1.3 1.4 Tàu vũ trụ Ariane-5 vào tháng năm 1996 [3] Sơ đồ quy trình kiểm chứng [3] Lỗi chi phí sửa lỗi phát triển phần mềm [3] Sơ đồ kiểm chứng mơ hình [3] 10 11 12 3.1 Kiểm chứng mơ hình cổ điển đại 53 3.2 Xử lý đa luồng C# 55 3.3 Đồ thị trạng thái mơ hình đạt sau trích xuất 61 4.1 4.2 4.3 4.4 4.5 Kiến trúc PAT Mô-đun CSP Biểu đồ trạng thái đầy đủ mơ hình ứng với đặc tả Biểu đồ trạng thái đầy đủ mơ hình ứng với đặc tả So sánh kết kiểm chứng PAT SPIN 64 65 69 71 72 LỜI MỞ ĐẦU Trong thời đại bùng nổ ứng dụng công nghệ thông tin nay, với hội nhiều thách thức dành cho nhà phát triển phần mềm Để đem lại hiệu công việc cao tiết kiệm thời gian, chi phí cho doanh nghiệp, hệ thống phần mềm đưa vào ứng dụng phải đảm bảo yêu cầu nghiêm ngặt hiệu xử lý tiết kiệm lượng Một giải pháp sử dụng hệ thống xử lý tương tranh giúp tận dụng tối đa tài nguyên phần cứng, cho phép thực nhiều tác vụ lúc Tuy nhiên, phát triển phần mềm, việc xác định tính đắn cho hệ thống xử lý tương tranh thường khó khăn tương tác phức tạp thành phần xử lý hệ thống Các lỗi xuất hệ thống xử lý tương tranh thường khơng có xu hướng lặp lại, khó phát ca kiểm thử, sử dụng kỹ thuật kiểm chứng hình thức cần thiết Nội dung luận văn tập trung giới thiệu hướng tiếp cận kiểm chứng mơ hình cho hệ xử lý tương tranh, sâu vào phương pháp mơ hình hóa hệ thống Một ngơn ngữ mơ hình hóa cụ thể giới thiệu luận văn Communicating Sequential Processes Sharp (CSP#), mơ hình đặc tả ngơn ngữ sử dụng phần kiểm chứng thử nghiệm với công cụ Process Analysis Toolkit (PAT) Chương luận văn giới thiệu tổng quan kiểm chứng mơ hình, phương pháp mơ hình hóa đặc tả thuộc tính hệ thống (sử dụng hệ dịch chuyển logic thời gian tuyến tính) Trong chương luận văn tiếp tục giới thiệu tổng quan hệ thống tương tranh, chế thực thi, tương tác hệ tương tranh, mơ hình hóa chế thực thi, tương tác hệ dịch chuyển để phục vụ kiểm chứng mơ hình Tuy nhiên thực tế, q trình mơ hình hóa hệ thống thường khơng sử dụng trực tiếp hệ dịch chuyển mà thông qua ngôn ngữ mơ hình hóa trung gian để đảm bảo tính trực quan người dùng Sau đặc tả mơ hình ngơn ngữ chuyển tự động qua dạng hệ dịch chuyển dựa ngữ nghĩa ngơn ngữ sử dụng Chương trình bày ngơn ngữ mơ hình hóa CSP# - ngơn ngữ phù hợp để đặc tả mơ hình hệ xử lý tương tranh Trong chương luận văn đề xuất cách tiếp cận trích xuất mơ hình trực tiếp từ mã nguồn C Sharp (C#) phạm trù xử lý tương tranh lập trình đa luồng Kết q trình trích xuất mơ hình xử lý tương tranh mã nguồn dạng đặc tả CSP# Đề xuất nhằm phục vụ mục tiêu kiểm chứng mơ hình trực tiếp mã nguồn C# Phần cuối luận văn chương tiến hành thử nghiệm mơ hình hóa kiểm chứng hệ tương tranh, sử dụng ngơn ngữ mơ hình hóa CSP# cơng cụ hỗ trợ kiểm chứng PAT Chương Kiểm chứng mơ hình Sự phụ thuộc vào hệ thống công nghệ thông tin ngày gia tăng Các hệ thống ngày trở lên phức tạp, tham gia vào hầu hết hoạt động hàng ngày thông qua Internet loại hệ thống nhúng điện thoại di động, máy tính cầm tay, tơ Theo thống kê từ năm 1995, người tiếp xúc với khoảng 25 thiết bị công nghệ thông tin hàng ngày [3] Các dịch vụ ngân hàng điện tử, mua sắm trực tuyến trở lên phổ biến Lượng tiền hàng ngày lưu thông qua Internet khoảng 1012 triệu đô la Mỹ [3] Khoảng 20% chi phí phát triển phương tiện giao thông đại xe hơi, xe lửa tốc độ cao máy bay dành cho hệ thống xử lý thông tin [3] Sự phụ thuộc vào hệ thống nhúng khiến độ tin cậy chúng có tầm quan trọng lớn xã hội đại Bên cạnh cung cấp hiệu suất tốt thông qua thời gian đáp ứng, lực xử lý khơng xảy lỗi tiêu chí quan trọng việc đánh giá chất lượng Nhiều lỗi phần mềm phần cứng không đe dọa trực tiếp sống gây hậu nghiêm trọng mặt tài Một số ví dụ tiếng hậu gây lỗi phần mềm phần cứng [3] Lỗi dấu phảy động xử lý Intel Pentinum II đầu năm 90 gây thiệt hại khoảng 475 triệu đô la Mỹ để thay vi xử lý lỗi, danh tiếng Intel bị ảnh hưởng nghiêm trọng Lỗi phần mềm hệ thống xử lý hành lý trì hỗn việc mở cửa sân bay Denver tháng, hãng phải chịu lỗ 1.1 triệu đô la Mỹ ngày Đối với số hệ thống, lỗi gây thảm họa Một ví dụ điển hình lỗi phần mềm điều khiển tàu vũ trụ Ariane-5 vào tháng năm 1996, 36 giây kể từ khỏi bệ phóng tàu bị rơi lỗi chuyển đổi số thực 32 bit sang số nguyên 16 bit (Hình 1.1) Tầm quan trọng hệ thống công nghệ thông tin ngày tăng dẫn tới nhu cầu cấp thiết đảm bảo tính đắn hệ thống Các hệ thống công nghệ thông tin khơng tồn độc lập mà cịn nhúng hệ lớn, kết nối tương tác với thành phần thuộc hệ thống khác Các hệ thống dễ xảy lỗi Đặc biệt, mô hình tương tác thành phần số hệ thống hệ tương tranh, lựa chọn không đơn định khó để đảm bảo tính đắn với kỹ thuật tiêu chuẩn Độ phức tạp ngày tăng, với Hình 1.1: Tàu vũ trụ Ariane-5 vào tháng năm 1996 [3] áp lực giảm thời gian phát triển hệ thống khiến việc cung cấp hệ thống cơng nghệ thơng tin khiếm khuyết cơng việc đầy khó khăn thử thách Kiểm chứng Kỹ thuật kiểm chứng sử dụng trình thiết kế hệ thống cơng nghệ thơng tin theo nhiều cách khác Về bản, kỹ thuật xác định thiết kế sản phẩm phạm trù cần xem xét có thỏa mãn thuộc tính định khơng Các thuộc tính kiểm chứng đơn giản, ví dụ hệ thống có rơi vào trạng thái bế tắc (deadlock) khơng, hầu hết thuộc tính lấy từ đặc tả hệ thống Đặc tả hệ thống quy định hệ thống phải làm khơng làm, sở cho hoạt động kiểm chứng Một lỗi tìm thấy hệ thống khơng thỏa mãn thuộc tính đặc tả Một hệ thống coi thuộc tính đặc tả thỏa mãn Do tính đắn hệ thống ln liên quan đến đặc tả hệ thống Sơ đồ quy trình kiểm chứng mơ tả Hình 1.2 Đánh giá ngang hàng (peer reviewing) kiểm thử (testing) hai kỹ thuật phổ biến sử dụng thực tế để đảm bảo chất lượng phần mềm Tuy nhiên, hai kỹ thuật có chung nhược điểm lớn khơng thể xác định xác tính hệ thống Trong đánh giá ngang hàng kỹ thuật chủ yếu dựa kinh nghiệm người tham gia đánh giá kiểm thử tiến hành số nhánh thực thi hệ thống Tiến hành kiểm thử đầy đủ nhánh thực thi khơng thể Vì hai kỹ thuật có khả phát lỗi mà khơng thể khẳng định hồn tồn khơng cịn lỗi hệ thống Đối với hệ thống phần mềm phức tạp đòi hỏi độ tin cậy cao, sử dụng kỹ thuật rõ ràng không đáp ứng yêu cầu Khi đó, phương pháp kiểm chứng hình thức (formal verification) coi có nhiều tiềm Bản chất phương pháp kiểm chứng hình thức áp dụng tốn học vào việc mơ hình hóa phân tích hệ thống cơng nghệ thơng tin, đảm bảo tính đắn cho hệ thống với chặt chẽ toán học Tiềm to lớn phương pháp hình thức dẫn tới gia tăng nhanh chóng việc sử dụng phương pháp kiểm chứng hệ thống phức 10 Đ c t h th ng (System specification) Thi t k (Design) Thu c tính (Properties ) S n ph m / b n th (Product / Prototype) Tìm th y l i Ki m ch ng (Verification) Khơng tìm th y l i Hình 1.2: Sơ đồ quy trình kiểm chứng [3] tạp Theo thống kê, phương pháp hình thức sử dụng số dạng khác nhau, khoảng 10% đến 15% dự án phần mềm [3] Trong cơng nghệ phần mềm, kiểm chứng hình thức khái niệm việc sử dụng phương pháp hình thức (formal methods) tốn học để chứng minh phủ định tính đắn hệ thống dựa đặc tả hình thức (formal specification) thuộc tính hình thức (formal property) hệ thống Q trình kiểm chứng tiến hành chứng minh mơ hình tốn học trừu tượng hệ thống, tính xác mơ hình tốn học phụ thuộc vào q trình mơ hình hóa Một số dạng mơ hình tốn học thường sử dụng để mơ hình hóa hệ thống là: process algebra, máy trạng thái hữu hạn (finite state machines), hệ thống dịch chuyển nhãn (labelled transition systems), mạng Petri (petri nets) Một cách tiếp cận sớm đặc thù kiểm chứng hình thức kiểm chứng mơ hình, q trình kiểm chứng mơ hình bao gồm bước tiến hành để kiểm tra cách tồn diện mơ hình tốn học hệ thống Nội dung luận văn tập trung vào phương pháp mơ hình hóa hệ thống để phục vụ kiểm chứng mơ hình cho hệ tương tranh Các kỹ thuật kiểm thử thường đem lại hiệu thấp lỗi hệ tương tranh thường khơng có xu hướng lặp lại [1] Trong phát triển phần mềm, khiếm khuyết hệ thống phát sớm tốt chi phí sửa chữa lỗi giai đoạn bảo trì cao giai đoạn thiết kế ban đầu khoảng 500 lần (Hình 1.3) Do mục tiêu quan trọng kiểm chứng mơ hình áp dụng sớm để kiểm chứng giai đoạn thiết kế hệ thống Trong giai đoạn này, mơ hình tốn học hệ thống xây dựng dựa 64 Hình 4.1: Kiến trúc PAT Hiện có 11 mơ-đun phát triển PAT: Communicating Sequential Processes (CSP), Real-Time System Module, Probability CSP Module, Probability RTS Module, Labeled Transition System Module, Timed Automata Module, NesC Module, ORC Module, Stateflow(MDL) Module, Security Module Web Service (WS) Module Trong mơ-đun CSP có chức hỗ trợ mơ hình hóa kiểm chứng hệ tương tranh 4.2 Mô-đun CSP Mô-đun CSP thiết kế để hỗ trợ phân tích hệ thống tương tranh, sử dụng ngơn ngữ đặc tả mơ hình CSP# Sự khác biệt mô-đun CSP so với kiểm chứng mơ hình khác nằm hai khía cạnh Đầu tiên, thuật tốn kiểm chứng mơ hình dạng lơgic thời gian tuyến tính mơ-đun CSP thiết kế để xử lý nhiều ràng buộc tính thực tế cách hiệu Thứ hai, mô-đun CSP cho phép người dùng lập luận hành vi hệ thống dạng kiểm tra làm mịn toàn thể Kiểm tra làm mịn xác định xem cài đặt có theo đặc tả hay khơng 65 Hình 4.2: Mơ-đun CSP Hình 4.2 minh họa quy trình xử lý mơ-đun CSP: Các thơng tin đầu vào bao gồm: Mơ hình hệ thống đặc tả ngơn ngữ CSP# (system models), tính chất hệ thống cần kiểm tra (LTL assersions, reachablitlity assersions, deadlock assersions, refinement assersions) Mơ hình hệ thống chuyển đổi thành dạng biểu diễn nội (internal processes collection) phân tích ngơn ngữ (language parse), đồng thời tính chất cần kiểm tra chuyển thành dạng biểu diễn nội (assersions collection) phân tích khẳng định chuyển đổi otomat Buchi(assersions parser and buchi automata translator) Từ liệu biểu diễn nội PAT tiến hành mô hệ thống Cũng với liệu biểu diễn nội bộ, thuật toán kiểm chứng mơ hình tương ứng với loại thuộc tính cần kiểm tra áp dụng Nếu thuộc tính khơng thỏa mãn có phản ví dụ ra, phản ví dụ chuyển tới mô để mô chuỗi hành vi dẫn tới kết khơng thỏa mãn 4.3 Ví dụ thử nghiệm Trong phần thử nghiệm luận văn tiến hành mô hình hóa kiểm chứng cho tốn xử lý tương tranh cổ điển: nhà hiền triết Sử dụng công cụ PAT phiên 3.3.4 Mô tả toán Các nhà hiền triết ngồi xung quanh bàn tròn với đĩa thức ăn lớn đặt bàn Giữa hai nhà hiền triết có đặt dĩa, với 66 nhà hiền triết có dĩa phía bên tay trái dĩa phía bên tay phải Giả sử nhà hiền triết ăn có đủ dĩa sử dụng dĩa nằm bên trái phải Tiếp tục giả sử nhà hiền triết bỏ dĩa xuống ăn xong lượt Mục tiêu Đặc tả mơ hình tốn nhà hiền triết với ngơn ngữ CSP# kiểm chứng đặc tả mơ hình với số tính chất như: khả bế tắc (ví dụ trạng thái nhà hiền triết có dĩa chờ vơ hạn), khả đói (có nhà hiền triết không ăn), kiểm tra làm mịn (các nhà hiền triết có hoạt động với luật mong muốn khơng?) Đặc tả mơ hình thứ //@@MoHinh1@@ //N - nhà hiền triết #define N 2; Phil(i) = get.i.(i+1)%N -> get.i.i -> eat.i -> put.i.(i+1)%N -> put.i.i -> Phil(i); Fork(x) = get.x.x -> put.x.x -> Fork(x) [] get.(x-1)%N.x -> put.(x-1)%N.x -> Fork(x); College() = ||x:{0 N-1}@(Phil(x)||Fork(x)); Implementation() = College() \ {get.0.0,get.0.1,put.0.0 ,put.0.1,eat.1,get.1.1,get.1.0,put.1.1,put.1.0}; Specification() = eat.0 -> Specification(); #assert College() deadlockfree; #assert College() |= [] eat.0; #assert Implementation() refines Specification(); Đặc tả định nghĩa toàn cục N = đại diện cho số nhà hiền triết hệ thống Tiếp theo đối tượng hệ thống mơ hình hóa tiến trình, nhà hiền triết mơ hình hóa tiến trình Phil(), dĩa mơ hình hóa tiến trình Fork() Giả định nhà hiền triết dĩa đánh số từ đến N − Phil(i) = get.i.(i+1)%N -> get.i.i -> eat.i 67 -> put.i.(i+1)%N -> put.i.i -> Phil(i); Tiến trình Phil(i) mơ hình hoạt động nhà hiền triết Phil tên tiến trình i tham số tiến trình đại diện cho nhà hiền triết thứ i Sự kiện get.i.(i + 1)%N mơ hình hành động lấy dĩa bên phía tay trái nhà hiền triết thứ i Sự kiện get.i.i mơ hình hành động lấy dĩa phía tay phải nhà hiền triết thứ i Sự kiện eat.i mô hình hành động ăn nhà hiền triết thứ i Sự kiện put.i.(i + 1)%N put.i.i mơ hình hành động bỏ dĩa bên tay trái tay phải xuống nhà hiền triết thứ i Do quy trình là: Nhà hiền triết lấy dĩa bên tay trái, lấy dĩa bên tay phải, ăn, bỏ dĩa bên tay trái bỏ dĩa bên tay phải xuống Fork(x) = get.x.x -> put.x.x -> Fork(x) [] get.(x-1)%N.x -> put.(x-1)%N.x -> Fork(x); Tiến trình Fork(i) mơ hình đối tượng dĩa hệ thống Tiến trình sử dụng phép lựa chọn [] cho biết dĩa lấy nhà hiền triết bên trái bên phải Lưu ý kiện kiện tiến trình Phil(i) College() = ||x:{0 N-1}@(Phil(x)||Fork(x)); Tiến trình mơ hình tồn hệ thống Các thành phần xử lý theo dạng kết hợp song song đồng bộ, kiện chung trở thành rào cản đồng tiến trình Ví dụ, kiện get.0.1 xảy tiến trình Phil(0) tiến trình Fork(1) sẵn sàng Implementation() = College() \{get.0.0,get.0.1,put.0.0,put.0.1, eat.1,get.1.1,get.1.2,put.1.1, put.1.2,eat.2,get.2.2,get.2.3, put.2.2,put.2.3,eat.3,get.3.3, get.3.4,put.3.3,put.3.4,eat.4, get.4.4,get.4.0,put.4.4,put.4.0}; Tiến trình hành xử giống tiến trình College() ngoại trừ việc tất kiện eat.0 ẩn Specification() = eat.0 -> Specification(); Tiến trình lặp lại kiện eat.0 Tiến trình nhằm mục đích thử nghiệm kiểm chứng tính chất làm mịn #assert College() deadlockfree; Khẳng định để kiểm tra hệ thống có xảy bế tắc không 68 #assert College() |= [] eat.0; Khẳng định kiểm tra hệ thống (đại diện tiến trình College()) có thỏa mãn thuộc tính thời gian tuyến tính "always eventually eat.0" không Tức là, nhà hiền triết thứ khơng bị đói #assert Implementation() refines Specification(); Khẳng định kiểm tra tiến trình Implementation() có phải làm mịn theo ngữ nghĩa vết từ tiến trình S peci f ication() khơng Nói cách khác, tất vết tiến trình Implementation() phải chấp nhận tiến trình S peci f ication() Bởi vết S peci f ication() chuỗi kiện eat.0 Khẳng định đơn giản có khả tiến trình Implementation() nhà hiền triết thứ ăn (có thể vơ hạn) Từ đặc tả mơ hình hệ thống thứ nhất, tiến hành mơ sinh đồ thị trạng thái đầy đủ PAT Hình 4.3 69 get.0.0 eat.0 get.0.1 put.0.1 10 get.1.0 put.0.0 get.1.0 get.1.1 get.0.1 put.1.1 eat.1 put.1.0 Hình 4.3: Biểu đồ trạng thái đầy đủ mơ hình ứng với đặc tả Tiến hành kiểm tra khẳng định trên, công cụ PAT cho kết chi tiết sau The Assertion (Implementation() refines Specification()) is VALID ********Verification Result******** The Assertion (College() |= [] eat.0) is NOT valid A counterexample is presented as follows get.0.1 -> get.1.0> ********Verification Result******** The Assertion (College() deadlockfree) is NOT valid The following trace leads to a deadlock situation 70 get.0.1 -> get.1.0> Theo kết kiểm chứng trên, mô hình hệ thống ứng với đặc tả thứ có bao gồm trạng thái bế tắc Kết kiểm chứng trường hợp cụ thể ứng với hành vi dẫn tới trạng thái bế tắc sau: get.0.1 -> get.1.0> Hành vi dẫn tới trạng thái bế tắc số biểu đồ trạng thái đầy đủ mơ hình Hình 4.3 Với khẳng định College() |= [] eat.0 kết không hợp lệ Cụ thể trường hợp thực thi get.0.1 -> get.1.0> hệ thống rơi vào trạng thái bế tắc nhà hiền triết thứ không ăn Khẳng định làm mịn Implementation() refines Specification() hợp lệ Đặc tả mơ hình thứ hai Có thể sửa đổi đặc tả mơ hình thứ để hệ thống không xảy bế tắc sau //@@MoHinh2@@ #define N 2; Phil(i) = get.i.(i+1)%N -> get.i.i -> eat.i -> put.i.(i+1)%N -> put.i.i -> Phil(i); Fork(x) = get.x.x -> put.x.x -> Fork(x) [] get.(x-1)%N.x -> put.(x-1)%N.x -> Fork(x); Phil0 = get.0.0 -> get.0.1 -> eat.0 -> put.0.0 -> put.0.1 -> Phil0; College() = Phil0|| Fork(0)||(||x:{1 N-1}@(Phil(x)||Fork(x))) ; #assert College() deadlockfree; Chi tiết kết kiểm chứng PAT: ********Verification Result******** The Assertion (College() deadlockfree) is VALID Kết kiểm chứng đặc tả mơ hình khơng cịn trạng thái bế tắc tồn hệ thống Một cách trực quan, tức đồ thị trạng thái đầy đủ không tồn trạng thái có dịch chuyển vào mà khơng có dịch chuyển hình 4.4 71 put.0.0 10 get.1.0 11 put.0.1 put.0.1 get.1.0 get.1.1 put.1.1 eat.1 eat.0 get.0.0 put.1.0 get.0.0 put.1.1 get.0.1 Hình 4.4: Biểu đồ trạng thái đầy đủ mơ hình ứng với đặc tả 4.4 So sánh đánh giá Đánh giá kết kiểm chứng PAT so với công cụ kiểm chứng phổ biến SPIN [28] thơng qua tốn thực tế (dp - dining philosophers, ms - Milner’s cyclic scheduler algorithm, peter - Peterson’s algorithm) mơ tả Hình 4.5 [27] Nhìn chung SPIN cho kết kiểm chứng thời gian ngắn trường hợp khơng có giả định tính thực tế, nhiên có giả định tính thực tế SPIN khơng kiểm chứng thời gian kiểm chứng lớn PAT nhiều 72 Hình 4.5: So sánh kết kiểm chứng PAT SPIN 73 KẾT LUẬN Luận văn trình bày vấn đề kiểm chứng hình thức cho hệ thống tương tranh sử dụng cách tiếp cận kiểm chứng mơ hình sâu vào khía cạnh mơ hình hóa hệ thống Dựa kết nghiên cứu lý thuyết kiểm chứng mơ hình, hệ tương tranh, mơ hình hóa hệ tương tranh ngơn ngữ đặc tả mơ hình CSP#, luận văn đề xuất giải pháp trích xuất mơ hình trực tiếp từ mã nguồn C# cho tốn xử lý tương tranh lập trình đa luồng Phần tóm tắt nội dung đóng góp luận văn Nội dung luận văn trình bày qua chương Chương 1, luận văn trình bày vấn đề cấp thiết kiểm chứng để xác định tính đắn hệ thống phần mềm, hệ thống tương tranh lựa chọn cách tiếp cận kiểm chứng mô hình Sau nội dung luận văn sâu vào hai vấn đề kiểm chứng mơ hình mơ hình hóa hệ thống đặc tả thuộc tính hệ thống Hiện có nhiều phương pháp giúp mơ hình hóa đặc tả thuộc tính hệ thống, luận văn lựa trình bày hai phương pháp sở sử dụng hệ dịch chuyển để mơ hình hóa lơgic thời gian tuyến tính để đặc tả thuộc tính hệ thống Trong chương luận văn trình bày nội dung hệ tương tranh: khái niệm, thuộc tính, mơ hình tương tác khó khăn muốn xác định tính đắn Một số chế thực thi, tương tác hệ tương tranh cách mơ hình hóa chế hệ dịch chuyển trình bày chương Cụ thể luận văn xem xét chế thực thi, tương tác sau: Xử lý đan xen (Interleaving); Giao tiếp qua biến chia sẻ (Communication via Shared Variables); Tương tác dạng bắt tay (Handshaking); Giao tiếp thông qua kênh truyền (Channel Systems); Xử lý song song đồng (Synchronous Parallelism) Việc sử dụng hệ dịch chuyển để mơ hình hóa hệ thống thường khó áp dụng thực Thay vào người ta sử dụng qua ngơn ngữ đặc tả mơ hình trung gian, mơ hình sau đặc tả ngơn ngữ chuyển tự động qua dạng hệ dịch chuyển Chương luận văn lựa chọn trình bày ngơn ngữ đặc tả mơ hình hệ tương tranh CSP#, ngơn ngữ tích hợp vào cơng cụ hỗ trợ kiểm chứng PAT trình bày chương Với nội dung tìm hiểu ngơn ngữ CSP# luận văn đề xuất cách tiếp cận trích xuất mơ hình từ mã nguồn C# cho tốn xử lý tương tranh lập trình đa luồng Phần thử nghiệm luận văn chương tiến hành thử nghiệm kiểm chứng mơ hình hệ thống sử dụng ngơn ngữ đặc tả mơ hình CSP# cơng cụ hỗ trợ PAT, so sánh kết kiểm chứng PAT với SPIN qua số toán Trong tương lai luận văn tiếp tục phát triển để hoàn thiện lý thuyết trích xuất mơ hình từ mã nguồn C# với toán xử lý tương tranh lập trình đa 74 luồng, cài đặt dạng mơ-đun tích hợp PAT Mơ-đun kết hợp với mơ-đun kiểm chứng sẵn có PAT cho phép kiểm chứng mơ hình trực tiếp mã nguồn C# để bổ sung kết cho trình kiểm thử 75 DANH MỤC CƠNG TRÌNH KHOA HỌC LIÊN QUAN ĐẾN LUẬN VĂN • Nguyễn Văn Trãi, Nguyễn Trường Thắng, Đinh Quang Đạt, Trần Mạnh Đơng (2012), "Kiểm chứng hình thức cho hệ thống tương tranh với CSP PAT", Kỷ yếu hội thảo khoa học quốc gia lần thứ XV Một số vấn đề chọn lọc công nghệ thông tin truyền thông, tr 158 76 Tài liệu tham khảo [1] A.W Roscoe (2010), Understanding Concurrent Systems, Springer London Dordrecht Heidelberg New York [2] A.W Roscoe (1997), The Theory and Practice of Concurrency, Prentice Hall, ISBN 0-13-674409-5 [3] Christel Baier, Joost-Pieter Katoen (2008), Principles of Model Checking, The MIT Press [4] Baeten, J.C.M (2004), "A brief history of process algebra", Rapport CSR 0402 (Vakgroep Informatica, Technische Universiteit Eindhoven) [5] Baeten, J.C.M., Bravetti (2005),"A Generic Process Algebra", Algebraic Process Calculi: The First Twenty Five Years and Beyond (BRICS Notes Series NS-05-3), Bertinoro, Forl, Italy: BRICS, Department of Computer Science, University of Aarhus [6] B Schlich, S Kowalewski (2009), "Model checking c source code for embedded systems", International Journal on Software Tools for Technology Transfer (STTT), vol 11, no 3, pp 187 – 202 [7] C A R Hoare (1985), Communicating Sequential Processes, International Series in Computer Science, Prentice-Hall [8] D Beyer, T A Henzinger, G Thoduloz, "Configurable software verification: Concretizing the convergence of model checking and program analysis", In Conf on Computer Aided Verification (CAV) [9] Edmund M Clarke, Armin Biere, Richard Raimi, Yunshan Zhu (2001), "Bounded Model Checking Using Satisfiability Solving", Formal Methods in System Design 19(1), pp 7-34 [10] Edmund M Clarke, Bernd-Holger Schlingloff (2001), Model Checking, Handbook of Automated Reasoning, pp 1635-1790 [11] Edmund M Clarke, E Allen Emerson, A Prasad Sistla (1986), "Automatic Verification of Finite-State Concurrent Systems Using Temporal Logic Specifications", ACM Trans Program Lang Syst 8(2), pp 244-263 77 [12] F Lerda, W Visser (2001), "Addressing dynamic issues of program model checking", Proceedings of the 8th international SPIN workshop on Model checking of software, Toronto, Ontario, Canada: Springer-Verlag New York, Inc., pp 80–102 [13] G.Barrett (1995), "Model checking in practice: The T9000 Virtual Channel Processor", IEEE Transactions on Software Engineering 21 (2): 69–78 doi:10.1109/32.345823 [14] Jean-Pierre Queille, Joseph Sifakis (1982), "A Temporal Logic to Deal with Fairness in Transition Systems", FOCS, pp 217-225 [15] Joseph Albahari, Threading in C#, Books on C# and Net of Joseph Albahari [16] Jun Sun, Yang Liu, Jin Song Dong, Chun Qing Chen (2009), "Integrating Specification and Programs for System Modeling and Verification", The 3rd IEEE International Symposium on Theoretical Aspects of Software Engineering, pp 127 - 135 [17] Jun Sun, Yang Liu, Jin Song Dong (2008), "Model Checking CSP Revisited: Introducing a Process Analysis Toolkit", pp 307-322, Porto Sani, Greece [18] J Sun, Y Liu, J S Dong, H H Wang (2008), "Specifying and Verifying Event-based Fairness Enhanced Systems", In Proceedings of the 10th International Conference on Formal Engineering Methods(ICFEM 2008), pp 318–337, Springer [19] K Havelund, T Pressburger (2000), "Model checking java programs using java pathfinder", International Journal on Software Tools for Technology Transfer (STTT), vol 2, no 4, pp 366 – 381 [20] Matthew Hennessy, Algebraic Theory of Processes, The MIT Press, ISBN 0-262-08171-7 [21] N H A D Brugh, V Y Nguyen, T C Ruys (2009), "MoonWalker: verification of NET programs", Proceedings of the 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, ETAPS 2009 [22] Orna Lichtenstein, Amir Pnueli (1985), "Checking That Finite State Concurrent Programs Satisfy Their Linear Specification", POPL, pp 97-107 [23] Pierce, Benjamin, Foundational Calculi for Programming Languages, The Computer Science and Engineering Handbook [24] T Balyo, Solving Boolean Satisfiability Problems, Master Thesis in Charles University 78 [25] Yang Liu (2010), "Model Checking Concurrent and Real-time Systems: the PAT Approach", PhD thesis [26] Y Liu, J Sun, J S Dong, "An Analyzer for Extended Compositional Process Algebras", In Proceedings of the 30th International Conference on Software Engineering (ICSE 2008) Companion Volume, pp 919–920, ACM [27] "PAT: An Enhanced Simulator, Model Checker and Refinement Checker for Concurrent and Real-time Systems", http://pat.comp.nus.edu.sg/ [28] "Software System Award: ACM CITES TOOL TO DETECT SOFTWARE "BUGS" FOR PRESTIGIOUS AWARD", Bell Labs Researcher Developed "SPIN" to Make Computers More Reliable ... TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN TRÃI KIỂM CHỨNG HÌNH THỨC CHO HỆ THỐNG TƯƠNG TRANH SỬ DỤNG NGÔN NGỮ ĐẶC TẢ CSP# VÀ CƠNG CỤ PAT Ngành: Cơng nghệ thơng tin Chun ngành: Công nghệ phần mềm Mã... Sau đặc tả mơ hình ngơn ngữ chuyển tự động qua dạng hệ dịch chuyển dựa ngữ nghĩa ngôn ngữ sử dụng Chương trình bày ngơn ngữ mơ hình hóa CSP# - ngôn ngữ phù hợp để đặc tả mơ hình hệ xử lý tương tranh. .. Chương giới thiệu điểm hệ thống tương tranh cách mơ hình hóa hệ tương tranh sử dụng hệ dịch chuyển để phục vụ cho kiểm chứng mơ hình Mỗi chế thực thi, tương tác hệ tương tranh mơ hình hóa theo cách

Ngày đăng: 25/03/2015, 09:46

Mục lục

  • Danh sách hình vẽ

  • Chương 1 :Kiểm chứng mô hình

  • 1.1. Tổng quan về kiểm chứng mô hình

  • 1.2. Các đặc tính của kiểm chứng mô hình

  • 1.2.1. Các pha thực hiện

  • 1.2.2. Ưu điểm và nhược điểm

  • 1.3. Mô hình hóa hệ thống

  • 1.3.1. Hệ dịch chuyển (Transition System)

  • 1.3.2. Mô hình hóa hệ thống bằng hệ dịch chuyển

  • 1.4. Đặc tả hình thức các thuộc tính của hệ thống

  • 1.4.1. Các thuộc tính thời gian tuyến tính (Linear-Time Property)

  • 1.4.2. Lôgic thời gian tuyến tính (Linear Temporal Logic)

  • Chương 2 :Hệ thống tương tranh

  • 2.1. Tổng quan về hệ tương tranh

  • 2.2. Mô hình hóa hệ tương tranh bởi hệ dịch chuyển

  • 2.2.1. Xử lý đan xen (Interleaving)

  • 2.2.2. Giao tiếp qua biến chia sẻ (Shared Variables)

  • 2.2.3. Tương tác dạng bắt tay (Handshaking)

  • 2.2.4. Giao tiếp thông qua kênh truyền (Channel Systems)

  • 2.2.5. Xử lý song song đồng bộ (Synchronous Parallelism)

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

Tài liệu liên quan