Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
659,57 KB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trần Thị Vân Dung
NGHIÊN CỨUVỀKIỂMCHỨNGPHẦNMỀMSỬ
DỤNG CÔNGCỤSPIN
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Ệ
Trần Thị Vân Dung
NGHIÊN CỨUVỀKIỂMCHỨNGPHẦNMỀMSỬ
DỤNG CÔNGCỤSPIN
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: PGS. TS. Nguyễn Việt Hà
Cán bộ đồng hướng dẫn: TS. Phạm Ngọc Hùng
HÀ NỘI - 2010
Lời cảm ơn
Lời đầu tiên, em xin đƣợc bày tỏ lòng biết ơn sâu sắc tới thầy TS. Nguyễn Việt Hà
và thầy TS. Phạm Ngọc Hùng đã tận tình giúp đỡ em làm và hoàn thiện khóa luận trong
suốt năm học vừa qua.
Em xin đƣợc bày tỏ lòng biết ơn tới các thầy, cô trong khoa Công Nghệ Thông Tin,
trƣờng Đại Học Công Nghệ, ĐHQGHN. Các thầy cô đã nhiệt tình dạy bảo và tạo mọi
điều kiện học tập tốt nhất cho chúng em trong những năm học tập tại ĐHCN, đặc biệt là
trong thời gian thực hiện khóa luận tốt nghiệp.
Tôi xin cảm ơn các bạn sinh viên lớp K51CC và K51CNPM Trƣờng Đại học Công
nghệ, những ngƣời bạn đã cùng tôi học tập và rèn luyện trong suốt những năm học đại
học.
Cuối cùng con xin gửi tới Bố Mẹ và gia đình tình thƣơng yêu và lòng biết ơn. Bố Mẹ
đã nuôi dƣỡng và luôn là chỗ dựa tinh thần cho con.
Hà Nội, ngày 18 tháng 5 năm 2010
Trần Thị Vân Dung
1
Tóm tắt nội dungKiểmchứng mô hình (model checking) là một phƣơng pháp hình thức dùng cho việc
kiểm chứng hệ thống. Kiểmchứng mô hình khảo sát tất cả các trạng thái có thể của hệ
thống và kiểm tra rằng chúng chứa sựđúng đắn đã đƣợc đặc tả. Việc sinh ra các trạng thái
và kiểm tra có thể đƣợc thực hiện một cách tự động bằng phầnmềm và Spin là một trong
những bộ kiểmchứng (model checker) đƣợc sửdụng rộng rãi. Các bộ kiểmchứng không
kiểm tra trực tiếp chƣơng trình mà kiểm tra một mô hình là thể hiện mức cao của hệ
thống. Mô hình này mô tả hành vi của hệ thống. Để áp dụng đƣợc các côngcụkiểm
chứng mô hình, việc đầu tiên là phải xây dựng mô hình của hệ thống. Các mô hình này
cùng với đặc tả của thuộc tính cần kiểm tra là đầu vào của các bộ kiểm chứng.
Khóa luận nghiêncứu việc kiểmchứngphầnmềmsửdụng Spin, cụ thể là việc kiểm
chứng mô hình máy hữu hạn trạng thái, sau đó đƣa ra một côngcụ chuyển một mô tả ban
đầu của hệ thống ở dạng máy hữu hạn trạng thái (chứa trong 1 tệp .txt) thành mô hình và
kiểm chứng bằng Spin.
MỤC LỤC
2
Mục Lục
1 Mở đầu
1.1. Đặt vấn đề 6
1.2. Mục tiêu và phạm vi của đề tài 7
1.3. Cấu trúc khóa luận 7
2 Sơ lược về Model Checking
2.1. Kiểmchứng hệ thống 8
2.2. Model Checking 9
2.2.1. Phƣơng pháp hình thức và Model Checking 9
2.2.2. Hoạt động của Model Checking 9
2.2.3. Ƣu nhƣợc điểm của Model Checking 10
3 Ngôn ngữ Promela
3.1. Kiểu dữ liệu và toán tử cơ bản 13
3.1.1. Kiểu dữ liệu cơ bản 13
3.1.2. Toán tử cơ bản 13
3.2. Dữ liệu kiểu kênh trong Promela 14
3.2.1.Cú pháp 14
3.2.2. Kênh gặp (rendezvous channel) 15
3.3. Các cú pháp 15
3.3.1. Lệnh printf() 15
3.3.2. Lệnh lựa chọn if 15
3.3.3. Lệnh lặp do 16
3.3.4. Lệnh nhảy goto 16
MỤC LỤC
3
3.3.5. Lệnh define 16
3.4. run và atomic 17
3.4.1. run và tiến trình init() 17
3.4.2. atomic 17
4 Kiểmchứng chương trình trong Spin
4.1. Kiểmchứng chƣơng trình trong Spin 20
4.1.1. Giả lập ngẫu nhiên 20
4.1.2. Verify 22
4.2. Logic thời gian tuyến tính (LTL) 24
4.2.1. Cú pháp 25
4.2.2. Biểu diễn tính chất bất biến của hệ thống bằng LTL 26
4.3. Cấu trúc Never Claim 26
5 Thực nghiệm
5.1.Mô hình máy hữu hạn trạng thái 28
5.1.1.Mô hình máy hữu hạn trạng thái 28
5.1.2.Ví dụ về mô hình máy hữu hạn trạng thái 28
5.2.Thực nghiệm 31
5.2.1.Áp dụngkiểmchứng mô hình hệ thống đèn 32
5.2.2.Áp dụngkiểmchứng mô hình không đáp ứng thuộc tính 33
6 Kết luận
6.1. Kết quả của khóa luận 36
6.2. Hƣớng nghiêncứu tiếp theo 36
Phụ lục
Phụ lục A: Tệp lampcode.txt 37
MỤC LỤC
4
Phụ lục B: Tệp lampcode.pml khi chạy verify trong Spin 38
Phụ lục C: Tệp lamp2code.txt 40
Phụ lục D: Tệp lamp2code.pml khi chạy verify trong Spin 41
Phụ lục E: Mã nguồn của chƣơng trình 43
Tài liệu tham khảo 47
5
Danh sách hình vẽ
2.1 Sơ đồ việc kiểmchứng hệ thống 8
2.2. Sơ đồ hoạt động của phƣơng pháp model checking 10
5.1. Mô hình máy hữu hạn trạng thái mô tả hoạt động của đèn 29
5.2. Kết quả khi chạy giả lập mô hình hệ thống đèn ở hình 5.1 31
5.3. Kết quả kiểmchứng mô hình 5.1 của hệ thống đèn 33
5.4. Mô hình sai của hệ thống đèn 34
5.5. Kết quả kiểmchứng mô hình 5.4 của hệ thống đèn 35
CHƢƠNG 1: MỞ ĐẦU
6
Chương 1
Mở đầu
1.1.Đặt vấn đề
Hiện nay chúng ta ngày càng phụ thuộc vào các hệ thống máy tính và phầnmềm
chuyên dụng hỗ trợ mọi mặt trong sản xuất và đời sống hằng ngày. Bất kỳ một lập trình
viên nào đều hiểu một điều rằng chƣơng trình hầu nhƣ không thể chạy từ lần biên dịch
đầu tiên và chƣa thể hoàn hảo ngay từ lần biên dịch thành công đầu tiên. Chƣơng trình
trông có vẻđúng luôn có thể tiềm ẩn lỗi ở đâu đó. Các phầnmềm đƣợc phát triển trong 1
quy trình chuyên nghiệp luôn có thể chứa lỗi mà chỉ đƣợc phát hiện sau khi đã đƣợc phân
phối và đƣa vào sử dụng. Trong thiết kế phần cứng và phần mềm, nỗ lực và thời gian của
chúng ta tiêu tốn rất nhiều vào việc kiểmchứng và đôi khi nhiều hơn cả thời gian và nỗ
lực dành cho việc xây dựng.
Bên cạnh đó có những trƣờng hợp chúng ta không thể chấp nhận những ứng dụng có
thể có lỗi dù là nhỏ nhất, đó là những ứng dụng mà sự trục trặc có thể dẫn đến tử vong,
tổn thất nặng nề hay ảnh hƣởng đến môi trƣờng sống. Kỹ nghệ phầnmềm dành cho các
hệ thống này là vô cùng khó khăn.
Cách giải quyết luôn là phân tích, lập trình cẩn thận, kiểm tra lại, kiểm thử. Bên cạnh
đó, chúng ta luôn tìm kiếm các công nghệ và kĩ thuật giúp cho việc kiểmchứng các phần
mềm trở nên nhẹ nhàng hơn trong khi tăng sự bao quát và chính xác của nó [1].
CôngcụSpin chạy kỹ thuật model checking nhận mô hình của hệ thống và khảo sát
tất cả các trạng thái có thể của hệ thống theo kiểu vét cạn. Công việc chủ yếu là phát triển
một mô hình đủ chi tiết để biểu diễn hệ thống một cách chính xác nhƣng cũng đủ đơn
giản để Spin có thể chạy việc kiểm tra (với giới hạn về tài nguyên và bộ nhớ).
Vấn đề đặt ra là xây dựngcôngcụ tự động chuyển 1 mô tả các hành vi, tính chất của
hệ thống thành đoạn mã biểu diễn mô hình mà Spin có thể chạy. Do vậy, giảm nhẹ công
sức giành cho việc kiểm chứng.
CHƢƠNG 1: MỞ ĐẦU
7
1.2.Mục tiêu và phạm vi của đề tài
Đề tài nghiêncứu việc kiểmchứng hệ thống sửdụng Spin, các mô hình hệ thống
dành cho Spin đƣợc viết bằng ngôn ngữ Promela. Côngcụ đƣợc xây dựng với mong
muốn có thể tự động sinh mã Promela chính xác và đầy đủ phục vụ cho việc kiểmchứng
trong Spin.
Côngcụ đƣợc xây dựng đã tự động sinh mô hình Promela cho những hệ thống đã
đƣợc biểu diễn ở mô hình máy hữu hạn trạng thái.
1.3.Cấu trúc khóa luận
Chƣơng 2 trình bày về Model checking, là kỹ thuật kiểmchứng mà đề tài nghiên
cứu, những nguyên tắc hoạt động của Model checking.
Chƣơng 3 trình bày về các cấu trúc của ngôn ngữ Promela, là ngôn ngữ để viết các
mô hình cho Spin.
Chƣơng 4 bắt đầu đi vào giai đoạn kiểmchứng một mô hình trong Spin
Chƣơng 5 Trình bày kết quả thực nghiệm của khóa luận dựa trên các khái niệm đã
nêu trong chƣơng 2 và 3
Chƣơng 6 tổng kết lại quá trình nghiên cứu, đƣa ra kết quả đạt đƣợc và hƣớng
nghiên cứu tiếp theo.
[...]... SƠ LƢỢC VỀ MODEL CHECKING Chương 2 Sơ Lược Về Model Checking Chƣơng này giới thiệu vềkiểmchứng hệ thống, những lợi thế của kiểmchứng hệ thống Sau đó là khái niệm về model checking, những ƣu nhƣợc điểm của phƣơng pháp model checking 2.1 .Kiểm chứng hệ thống Trong giai đoạn kiểm thử khi kỹ nghệ phần mềm, phầnmềm đƣợc chạy trên một số hữu hạn những bộ dữ liệu đầu vào đã đƣợc thiết kế sẵn, phần mềm chạy... nghĩa trong đặc tả hệ thống) và sửa lỗi 2.2.3.Ưu nhược điểm của model checking Model checking mang một số ƣu điểm nhƣ sau [1] Là một phƣơng pháp kiểmchứng tổng quát áp dụng đƣợc cho một phạm vi lớn các ứng dụng: hệ thống nhúng, kỹ nghệ phần mềm, thiết kế phần cứng… Hỗ trợ kiểmchứngcụ bộ, các tính chất có thể đƣợc kiểm tra một cách riêng lẻ từ đó có thể tập chungkiểmchứng một tính chất quan trọng... CHƢƠNG 4: KIỂMCHỨNG CHƢƠNG TRÌNH VỚI SPIN Chương 4 KiểmChứng Chương Trình Với Spin Chƣơng này trình bày về thêm một số khái niệm trong Promela để mô hình hóa đƣợc một hệ thống thực tế, cách chạy môt chƣơng trình Promela trong Spin tại các chế độ khác nhau, giới thiệu về logic thời gian tuyến tính (LTL) là ngôn ngữ biểu diễn tính chất mong muốn (hay tính chất cần kiểm chứng) của hệ thống 4.1 .Kiểm chứng. .. là không thể, do vậy kiểm thử không đảm bảo chắc chắn rằng phần mềm không chứa lỗi [1] Bên cạnh đó, lỗi đƣợc phát hiện trong giai đoạn này là muộn và dẫn đến tiêu tốn nhiều nỗ lực khắc phục lỗi Hình 2.1.Sơ đồ việc kiểmchứng hệ thống [1] 8 CHƢƠNG 2: SƠ LƢỢC VỀ MODEL CHECKING Kiểmchứng hệ thống thực hiện việc xác minh một thiết kế hay một sản phẩm phầnmềm đảm bảo những tính chất cụ thể mà thƣờng đã... đƣợc xem nhƣ là toán học đƣợc áp dụng vào mô hình hóa và phân tích hệ thống [1] Từ những nghiêncứuvề phƣơng pháp hình thức, chúng ta đã có đƣợc những kỹ thuật kiểmchứng dựa trên mô hình, trong đó có model checking, đi kèm với chúng là các phầnmềm để tự động hóa nhiều bƣớc kiểmchứng khác nhau Cơ sở của kiểmchứng dựa trên mô hình là mô tả các hành vi của hệ thống theo một cách không nhập nhằng,... muốn (hay tính chất cần kiểm chứng) của hệ thống 4.1 .Kiểm chứng chương trình trong Spin 4.1.1.Giả lập ngẫu nhiên Trong chế độ giả lập, Spin biên dịch và chạy một chƣơng trình promela, sau đó in ra các trạng thái của chƣơng trình Khóa luận sửdụngcôngcụ jSpin cho ta giao diện đồ họa của Spin và xem xét kết quả kiểmchứng một cách trực quan Một trạng thái của chƣơng trình là một bộ các giá trị gồm... ứng dụng tập trung vào điều khiển là chủ yếu, không phù hợp với các ứng dụng hƣớng dữ liệu do khối lƣợng dữ liệu thƣờng tăng vô tận Model checking kiểmchứng mô hình của hệ thống, không phải bản thân hệ thống, mọi kết quả đạt đƣợc đều chỉ về mô hình của hệ thống, do vậy cần đến những kỹ thuật khác bổ trợ nhƣ kiểm thử để tìm ra những lỗi chế tạo (đối với phần cứng) và lỗi lập trình (đối với phần mềm) ... checking chỉ kiểm tra những tính chất đƣợc đặc tả, ta không thể biết đƣợc thông tin về các tính chất không đƣợc model checking kiểmchứng Việc sửdụng model checking đòi hỏi kinh nghiệm trừu tƣợng hóa hệ thống để cho ra một mô hình hệ thống và thể hiện các tính chất của hệ thống theo logic hình thức 11 CHƢƠNG 3: NGÔN NGỮ PROMELA Chương 3 Ngôn Ngữ Promela Với Spin, ngôn ngữ Promela đƣợc sửdụng để xây... SƠ LƢỢC VỀ MODEL CHECKING Hình 2.2.Sơ đồ hoạt động của phƣơng pháp model checking [1] Sau đó côngcụ chạy model checking (bộ kiểm chứng) đƣợc dùng để sinh ra tất cả các trạng thái của hệ thống và kiểm tra chúng thỏa mãn các tính chất đó hay không, nếu không, model checking sẽ tìm đƣợc một phản ví dụ - một trạng thái của hệ thống không thỏa mãn – và chỉ ra tính toán dẫn đến trạng thái đó Sửdụng phản... giúp tích hợp kiểmchứng vào quá trình thiết kế, nó trở thành côngcụ để kỹ nghệ những phầnmềm buộc phải hoạt động không có sai sót [2] 2.2.2.Hoạt động của model checking Từ đặc tả của hệ thống, ta xây dựng một mô hình hệ thống thể hiện các hành vi của hệ thống, mô hình này có thể đƣợc viết bằng ngôn ngữ C, các ngôn ngữ tƣơng tự C hay Java Cùng với đó ta biểu diễn các tính chất (cần kiểm chứng) của hệ . kiểm tra là đầu vào của các bộ kiểm chứng.
Khóa luận nghiên cứu việc kiểm chứng phần mềm sử dụng Spin, cụ thể là việc kiểm
chứng mô hình máy hữu hạn trạng. Vân Dung
NGHIÊN CỨU VỀ KIỂM CHỨNG PHẦN MỀM SỬ
DỤNG CÔNG CỤ SPIN
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông