1. Trang chủ
  2. » Kinh Doanh - Tiếp Thị

Ứ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

14 366 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 261,06 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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... ĐẠI H

Trang 1

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

Trang 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

Trang 3

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

Trang 5

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

Trang 7

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 5

MỤC LỤC 7

DANH MỤC HÌNH VẼ 9

DANH MỤC BẢNG 9

CHƯƠNG 1 MỞ ĐẦU 10

1.1 ĐẶT VẤN ĐỀ 10

1.2 NỘI DUNG VÀ MỤC ĐÍCH NGHIÊN CỨU 11

1.3 GIẢ THUYẾT KHOA HỌC 12

1.4 CẤU TRÚC CỦA LUẬN VĂN 12

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT Error! Bookmark not defined 2.1 Công nghệ phần mềm dựa trên thành phần Error! Bookmark not defined 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 Error! Bookmark not

defined

2.3 Xây dựng hệ thống dựa trên thành phần Error! Bookmark not defined 2.3.1 Thành phần phần mềm Error! Bookmark not defined 2.3.2 Xác định thành phần Error! Bookmark not defined 2.3.2.1 Dùng lại Error! Bookmark not defined 2.3.2.2 Phát triển mới Error! Bookmark not defined 2.3.2.3 Thích nghi Error! Bookmark not defined 2.3.2.4 Cập nhật thành phần Error! Bookmark not defined 2.4 Lợi ích của công nghệ phần mềm dựa trên thành phần Error! Bookmark not defined 2.6 Mô hình hóa giao diện thành phần Error! Bookmark not defined 2.6.1 Giao diện Error! Bookmark not defined 2.6.2 Vai trò giao diện Error! Bookmark not defined 2.6.3 Đặc tả giao diện với một số ngôn ngữ cơ sở Error! Bookmark not defined 2.6.4 Đặc tả giao diện với các ràng buộc cơ sở Error! Bookmark not defined 2.7 Kết luận Error! Bookmark not defined

CHƯƠNG 3 BỘ CÔNG CỤ KIỂM CHỨNG MÔ HÌNH SPIN VÀ BÀI TOÁN DEADLOCK

Error! Bookmark not defined 3.1 Kiểm duyệt mô hình Error! Bookmark not defined 3.1.1 Tổng quan hoạt động của kiểm duyệt mô hình Error! Bookmark not defined 3.1.2 Quá trình hoạt động của kiểm duyệt mô hình Error! Bookmark not defined 3.1.3 Ưu, nhược điểm của kiểm duyệt mô hình Error! Bookmark not defined 3.2 Bộ công cụ SPIN Error! Bookmark not defined 3.2.1 Tổng quan về SPIN Error! Bookmark not defined 3.2.2 Cấu trúc của SPIN Error! Bookmark not defined 3.2.3 Công cụ ISPIN Error! Bookmark not defined

3.3 Ngôn ngữ Promela Error! Bookmark not defined 3.3.1 Tổng quan về Promela Error! Bookmark not defined 3.3.2 Chương trình Promela Error! Bookmark not defined

3.3.3 Tiến trình Error! Bookmark not defined

3.3.4 Tiến trình Init và Run Error! Bookmark not defined 3.3.5 Biến trong Promela Error! Bookmark not defined 3.3.6 Kiểu dữ liệu trong Promela Error! Bookmark not defined

Trang 8

3.3.6.1 Kiểu dữ liệu cơ bản Error! Bookmark not defined 3.3.6.2 Kiểu dữ liệu có cấu trúc Error! Bookmark not defined 3.3.7 Toán tử, dịnh danh, hằng và biểu thức Error! Bookmark not defined

3.3.8 Câu lệnh trong Promela Error! Bookmark not defined

3.3.9 Các cấu trúc điều khiển Error! Bookmark not defined 3.3.9.1 Câu lệnh điều kiện IF Error! Bookmark not defined 3.3.9.2 Câu lệnh lặp DO Error! Bookmark not defined 3.3.10 Đan xen (interleaving) Error! Bookmark not defined 3.3.11 Cấu trúc atomic Error! Bookmark not defined

3.3.12 Kênh trong Promela Error! Bookmark not defined

3.3.12.1 Biến kênh Error! Bookmark not defined 3.3.12.2 Kênh gặp (rendezvous) Error! Bookmark not defined 3.3.12.3 Kênh đệm (Buffer) Error! Bookmark not defined 3.4 Bài toán deadlock trong SPIN Error! Bookmark not defined 3.5 Kết luận Error! Bookmark not defined

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 Error! Bookmark not defined 4.1 Phương pháp Error! Bookmark not defined 4.2 Áp dụng Error! Bookmark not defined 4.3 Kết luận Error! Bookmark not defined CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Error! Bookmark not defined 5.1 Kết luận Error! Bookmark not defined 5.2 Hướng phát triển Error! Bookmark not defined

DANH MỤC TÀI LIỆU THAM KHẢO 13

PHỤ LỤC Error! Bookmark not defined

Trang 9

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

Trang 10

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

Trang 11

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 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

Trang 12

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 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

Trang 13

DANH MỤC TÀI LIỆU THAM KHẢO

[1] Andrew Ireland Department of Computer Science School of Mathematical and Computer Sciences Heriot-Watt University Edinburgh, “Distributed Systems

Programming (F21DS1) Promela I”

[2] Mordechai Ben-Ari (2008), Principles of the Spin Model Checker,

Springer-Verlag, London

[3] Debayan Bose (2010), “Component Based Development”, Indian Statistical Instute

[4] Xia Cai, Michael R Lyu, Kam-Fai Wong, Roy Ko (2001), “Component-Based Software Engineering: Technologies, Development Frameworks, and Quality

Assurance Schemes”, The Chinese University of Hong Kong

[5] Divya Chaudhary (2013), “Component Based Software Engineering Systems:

Process and Metrics”, International Journal of Advanced Research in Computer Science and Software Engineering, Vol 3, No 2277

[6] Ivica Crnkovic, Magnus Larsson, “Component-Based Software Engineering –

New Paradigm of Software Development”, Department of Computer

Engineering Malardalen University

[7] Jun Han (2001), “Temporal Logic Based Specification of Component

Interaction Protocols”, School of Network Computing Monash University,

McMahons Road Frankston, Australia

[8] Jun Han (2000), “Rich Interface Specication for Software Components”,

Peninsula School of Computing and Information Technology Monash University, McMahons Road Frankston, Australia

[9] Truong Anh Hoang, Trinh Thanh Binh, Dang Van Hung, Nguyen Viet Ha, Nguyen

Thi Thu Trang, Pham Dinh Hung (2008), “Checking Interface Interaction Protocols Using Aspect-Oriented Programming”, SEFM, pp 382-386.

[10] Gerard J Holzmann (1997), “The Model Checker SPIN”, IEEE

TRANSACTIONS ON SOFTWARE ENGINEERING, Vol 23, No 5, pp 1-2

Ngày đăng: 27/02/2017, 03:51

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w