1. Trang chủ
  2. » Luận Văn - Báo Cáo

đặc tả và chứng minh tính đúng đắn của thiết kế cho các hệ đa tác tử

66 554 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 66
Dung lượng 0,96 MB

Nội dung

Sử dụng ngữ nghĩa cú pháp trong ngôn ngữ CafeOBJ để thể hiện các đặc tả hệ thống cũng như các đặc tả thuộc tính của hệ thống cần kiểm chứng dưới dạng hình thức từ các phát biểu của ngôn

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

NGUYỄN QUỲNH CHI

ĐẶC TẢ VÀ CHỨNG MINH TÍNH ĐÚNG ĐẮN

CỦA THIẾT KẾ CHO CÁC HỆ ĐA TÁC TỬ

Chuyên ngành : BẢO ĐẢM TOÁN HỌC CHO MÁY TÍNH VÀ HỆ

Trang 2

LỜI CẢM ƠN

Trước tiên tôi xin bày tỏ lòng biết ơn sâu sắc tới TS Phạm Ngọc Hùng, giảng

viên Bộ môn Công nghệ phần mềm - Khoa Công nghệ thông tin - Trường Đại học

Công nghệ - ĐHQGHN Trong thời gian học và làm luận văn tốt nghiệp, thầy đã

dành nhiều thời gian quý báu và tận tình chỉ bảo, hướng dẫn tôi trong việc nghiên

cứu, thực hiện luận văn

Xin cảm ơn bạn bè, đồng nghiệp và nhất là các thành viên trong gia đình đã

tạo mọi điều kiện tốt nhất, động viên, cổ vũ tôi trong suốt quá trình học tập và

nghiên cứu để hoàn thành tốt bản luận văn tốt nghiệp này

Nam định, Ngày 20 tháng 06 năm 2013

Nguyễn Quỳnh Chi

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan rằng, đây là kết quả nghiên cứu của tôi trong đó có sự giúp

đỡ rất lớn của thầy hướng dẫn và gia đình Các nội dung nghiên cứu và kết quả

trong đề tài này hoàn toàn trung thực

Trong luận văn, tôi có tham khảo đến một số tài liệu của một số tác giả đã

được liệt kê tại phần tài liệu tham khảo ở cuối luận văn

Nam Định, Ngày 20 tháng 06 năm 2013

Học viên thực hiện

Nguyễn Quỳnh Chi

Trang 4

BẢNG CÁC CHỮ VIẾT TẮT

OTS Observation Transition System

Trang 5

Phụ lục

Giới thiệu 1

1.1 Đặt vấn đề 1

1.2 Nêu bài toán 3

1.3 Kết quả 3

1.4 Cấu trúc luận văn 4

Chương 2 5

Tổng quan về CafeOBJ 5

2.1 Giới thiệu 5

2.2 Đặc tả và kiểm chứng trong CafeOBJ 10

2.2.1 Ví dụ 10

2.2.2 Đặc tả số tự nhiên 11

2.2.3 Đặc tả thuộc tính 12

2.2.4 Kiểm chứng thuộc tính 12

Chương 3 17

Đặc tả hệ thống đa tác tử 17

3.1 OTS (Observation transition system) 17

3.2 Mô tả bài toán QLOCK 18

3.4 Đặc tả bài toán QLOCK bằng ngôn ngữ cafeOBJ 22

Chương 4 29

Kiểm chứng hệ thống đa tác tử 29

4.1 Thuộc tính INV1 được mô tả 29

4.1.1 Kiểm chứng bằng phương pháp quy nạp trong ngôn ngữ tự nhiên 29

4.1.2 Kiểm chứng bằng phương pháp quy nạp trong ngôn ngữ CafeOBJ 30

4.2- Thuộc tính INV2 được mô tả 46

Chương 5 Error! Bookmark not defined Kết luận 55

Tài liệu tham khảo 57

Trang 6

DANH MỤC HÌNH VẼ

Hình 2.1- Cú pháp của mô đun 6

Hình 2.2- Đặc tả 2 mô đun BASIC-NAT trong CafeOBJ 8

Hình 2.3 Đọc file nat+ps.mod trong CafeOBJ 9

Hình 2.4: Đọc chi tiết file cần chứng minh trong CafeOBJ 9

Hình 2.5 Mô tả eof trong CafeOBJ 10

Hình 2.6 Mô đun BASIC-NAT trong CafeOBJ 11

Hình 2.7 Đặc tả thuộc tính cho điều kiện (*) và điều kiện (**) 12

Hình 2.8 Chứng minh tính chất kết hợp của phép cộng các số tự nhiên 13

Hình 2.9 Chứng minh 0+j=j+0 16

Hình 2.10 Chứng minh lemma2: i + s(j) = s(i+j) 16

Hình 2.11 Chứng minh i+j = j + i 17

Hình 3.1 Mô tả bài toán Qlock 20

Hình 3.2 View of QLOCK 21

Hình 3.3 Mô hình QLOCK với OTS 22

Hình 3.4 Đặc tả (signature) cho hệ thống QLOCK 24

Hình 3.5 Đặc tả mô đun LABEL 25

Hình 3.6 Đặc tả mô đun PID 25

Hình 3.7 Kiểu biến tổng quát cho hàng đợi QUEUE 26

Hình 3.8 Hàng đợi QUEUE cho bài toán QLOCK 27

Hình 3.9 Hành động want trong hệ thống QLOCK 28

Hình 3.10 Hành động try trong hệ thống QLOCK 28

Hình 3.11 Hành động exit trong hệ thống QLOCK 29

Hình 4.1 Kiểm tra giá trị của INV1 tại trạng thái init 31

Hình 4.2 Kiểm tra giá trị của INV1 với hành động want tại trạng thái s 32

Hình 4.3 Kiểm chứng INV1 với hành động want cho trường hợp ~(c-want) 32

Hình 4.4 Kiểm chứng INV1 với hành động want cho trường hợp (c-want) 33

Hình 4.5 Kiểm chứng INV1 với hành động want cho trường hợp (2) 34

Trang 7

Hình 4.7 Kiểm chứng INV1 với hành động want cho trường hợp (4) 36

Hình 4.8 Kiểm chứng INV1 với hành động want cho trường hợp (5) 36

Hình 4.9 Kiểm chứng istep1 với hành động want cho trường hợp (5) 37

Hình 4.10 Kiểm chứng istep 1 với hành động try cho trường hợp c-try (s,k) 38

Hình 4.11 Kiểm chứng istep 1 với hành động try cho trường hợp ~(c-try (s,k)) 38

Hình 4.12 Kiểm chứng istep 1 với hành động try cho trường hợp (2) 39

Hình 4.13 Kiểm chứng istep 1 với hành động try cho trường hợp (3) 40

Hình 4.14 Kiểm chứng istep 1 với hành động try cho trường hợp (4) 41

Hình 4.15 Kiểm chứng istep 1 với hành động try cho trường hợp (5) 42

Hình 4.16 Kiểm tra giá trị của INV1 với hành động exit tại trạng thái s 43

Hình 4.17 Kiểm tra istep1 với hành động exit cho trường hợp ~c-exit(s,k) 43

Hình 4.18 Kiểm tra istep1 với hành động exit cho trường hợp c-exit(s,k) 44

Hình 4.19 Kiểm tra istep1 với hành động exit cho trường hợp (2) 44

Hình 4.20 Kiểm tra istep1 với hành động exit cho trường hợp (3) 45

Hình 4.21 Kiểm tra istep1 với hành động exit cho trường hợp (4) 45

Hình 4.22 Kiểm tra istep1 với hành động exit cho trường hợp (5) 46

Hình 4.23 Kiểm tra giá trị của INV2 tại trạng thái init 47

Hình 4.24 Kiểm tra istep2 với hành động WANT cho trạng thái s 48

Hình 4.25 Kiểm tra istep2 với hành động WANT cho trường hợp ~c-want(s,k) 48

Hình 4.26 Kiểm tra istep2 với hành động WANT cho trường hợp c-want(s,k) 49

Hình 4.27 Kiểm tra istep2 với hành động WANT cho trường hợp i=k 49

Hình 4.28 Kiểm tra istep2 với hành động WANT cho trường hợp ~(i=k) 50

Hình 4.29 Kiểm tra istep2 với hành động WANT cho trường hợp ~(i=k) queue(s) = empty 51

Hình 4.30 Kiểm tra istep2 với hành động WANT cho trường hợp ~(i=k) queue(s) = j,q 51

Hình 4.31 Kiểm chứng inv1(s,i,k) implies istep2(i) với hành động exit cho trường hợp ~(i = k), pc(s,i) = cs, inv1 53

Hình 4.32 Kiểm chứng istep2 với hành động exit cho trường hợp ~(i = k), ~(pc(s,i) = cs 54

Trang 8

Giới thiệu

1.1 Đặt vấn đề

Đặc tả và kiểm chứng hình thức là một pha quan trọng nhằm nâng cao

độ tin cậy và chất lượng của phần mềm Có thể chia đặc tả phần mềm ra làm

hai loại: đặc tả phi hình thức (ngôn ngữ tự nhiên) và đặc tả hình thức (dựa

trên kiến trúc toán học) Đặc tả phi hình thức là đặc tả sử dụng ngôn ngữ tự

nhiên Tuy nó không được chặt chẽ bằng đặc tả hình thức nhưng được nhiều

người biết và có thể dùng để trao đổi với nhau để làm chính xác hóa các điểm

chưa rõ, chưa thống nhất giữa các bên phát triển hệ thống Đặc tả hình thức là

đặc tả mà ở đó các từ ngữ, cú pháp, ngữ nghĩa được định nghĩa hình thức dựa

vào toán học Đặc tả hình thức có thể coi là một phần của hoạt động đặc tả

phần mềm Các đặc tả yêu cầu được phân tích chi tiết Các mô tả trừu tượng

của các chức năng chương trình có thể được tạo ra để làm rõ yêu cầu

Đặc tả phần mềm hình thức là một đặc tả được trình bày trên một ngôn

ngữ bao gồm: từ vựng, cú pháp và ngữ nghĩa được định nghĩa Định nghĩa

ngữ nghĩa đảm bảo ngôn ngữ đặc tả không phải là ngôn ngữ tự nhiên mà dựa

trên toán học Các chức năng nhận các đầu vào trả lại các kết quả Các chức

năng có thể định ra các điều kiện tiền tố và hậu tố Điều kiện tiền tố là điều

kiện cần thỏa mãn để có dữ liệu vào, điều kiện hậu tố là điều kiện cần thỏa

mãn sau khi có kết quả

Có hai hướng tiếp cận đặc tả hình thức để phát triển các hệ thống tương

đối phức tạp:

-Tiếp cận đại số, hệ thống được mô tả dưới dạng các toán tử và các quan hệ

-Tiếp cận mô hình, mô hình hệ thống được cấu trúc sử dụng các thực thể toán

học như là các tập hợp và các thứ tự

Trang 9

Kiểm thử một sản phẩm phần mềm là xây dựng một cách có chủ đích

những tập dữ liệu và dãy thao tác nhằm đánh giá một số hoặc toàn bộ các tiêu

chuẩn của sản phẩm phần mềm đó Thử nghiệm có hai mục đích: chỉ ra hệ

thống phù hợp với đặc tả và phơi ra được các khuyết tật của hệ thống Trong

khi việc kiểm thử phần mềm (software testing) chỉ có thể chỉ ra các lỗi phát

hiện được nhưng không thể chỉ ra được phần mềm hoàn toàn không có lỗi (

phần mềm luôn đúng), các phương pháp kiểm chứng có thể đảm bảo hệ thống

không có lỗi sau khi đã được kiểm chứng đúng đắn

Hiện này đã có nhiểu phương pháp và công cụ hỗ trợ cho việc đặc tả và

kiểm chứng phần mềm như OBJ, Maude, CafeOBJ, SPIN, SMV, NuSMV…

Mỗi phương pháp có những ưu và nhược điểm riêng và bi hạn chế trong một

số hệ thống nhất định

Mục đích của khóa luận là tìm hiểu về phương pháp đặc tả và kiểm

chứng hình thức phần mềm trong CafeOBJ Từ mô tả của hệ thống cần kiểm

chứng, chúng ta cần đặc tả hệ thống một cách hình thức bằng ngôn ngữ

CafeOBJ Các thuộc tính cần kiểm chứng của hệ thống cũng được đặc tả một

cách tương tự Sử dụng ngữ nghĩa cú pháp trong ngôn ngữ CafeOBJ để thể

hiện các đặc tả hệ thống cũng như các đặc tả thuộc tính của hệ thống cần kiểm

chứng dưới dạng hình thức từ các phát biểu của ngôn ngữ tự nhiên CafeOBJ

có thể kiểm chứng hệ thống đa tác tử (MAS) với không gian trạng thái là vô

hạn

Trang 10

1.2 Nêu bài toán

Bài toán thực hiện trong khóa luận là bài toán đặc tả và chứng minh tính

đúng đắn của hệ thống đa tác tử (MAS) sử dụng ngôn ngữ CafeOBJ Quy

trình sẽ được thực hiện như sau:

Yêu cầu là phải đảm bảo thiết kế đúng trước khi lập trình, nếu không lỗi

sẽ lan sang các bước sau và mất nhiều công hơn ( có thể là cấp mũ) mới tìm

được ra lỗi Hiện nay vẫn còn làm thủ công, xem từng thiết kế so sánh với đặc

tả yêu cầu mới có thể tìm ra lỗi nên khó đảm bảo chất lượng Một số sản

phẩm sẽ đòi hỏi chất lượng cao ( bằng phần mềm điều khiển) Vì không biết

trước số tác tử nên không biết được số trạng thái của hệ thống, ta coi không

gian trạng thái là hộp đen, nên không thể áp dụng các phương pháp kiểm

chứng bằng mô hình yêu cầu chứng minh lý thuyết không được làm thủ công,

ngược lại sẽ không nghiệm thu thiết kế Khóa luận của tôi sẽ tập trung vào

chứng minh các thuộc tính của hệ thống đa tác tử bằng ngôn ngữ CafeOBJ; tư

tưởng chứng minh là dùng phương pháp qui nạp, phân rã bài toán ra các

trường hợp và thêm các bổ đề vào Tư tưởng trên đã kiểm chứng được hệ

thống đa tác tử (MAS) với không gian trạng thái là vô hạn

1.3 Kết quả

Luận văn đã đạt được các kết quả sau:

-Tìm hiểu và nắm rõ phương pháp đặc tả phần mềm sử dụng ngôn ngữ đại số

CafeOBJ

Thu thập

yêu cầu

Đặc tả yêu cầu

Lập trình Thiết kế

Trang 11

-Nắm vững phương pháp chứng minh tự động sử dụng tư tưởng qui nạp toán

học để kiểm chứng các thuộc tính bất biến (invariant property) Với phương

pháp này, để chứng minh một thuộc tính bất biến, chúng ta cần chứng minh

nó đúng tại trạng thái khởi tạo của hệ thống Giả sử thuộc tính đúng tại một

trạng thái bất kỳ s, chúng ta phải chứng minh nó đúng với mọi trạng thái tiếp

theo của s

-Áp dụng những kiến thức đã tìm hiểu để kiểm chứng 02 thuộc tính của hệ

thống đa tác tử Trong hệ thống này, các tác tử chia sẻ một tài nguyên dùng

chung Kết quả kiểm chứng cho thấy hệ thống đa tác tử thỏa mãn các thuộc

tính cần kiểm tra tại mọi trạng thái của hệ thống

1.4 Cấu trúc luận văn

Các phần còn lại của luận văn có cấu trúc như sau:

Chương 2 Trình bày tổng quan về ngôn ngữ CafeOBJ, kỹ thuật đặc tả và

kiểm chứng phần mềm bằng phương pháp hình thức được sử dụng trong

CafeOBJ

Chương 3 Đặc tả hệ thống đa tác tử

Chương 4 Trình bày về phương pháp kiểm chứng hệ thống đa tác tử bằng

ngôn ngữ CafeOBJ

Kết luận Tóm tắt kết quả đã đạt được, kết luận, những hạn chế và hướng

nghiên cứu phát triển trong tương lai

Trang 12

Chương 2 Tổng quan về CafeOBJ

2.1 Giới thiệu

CafeOBJ là một ngôn ngữ đặc tả đại số được phát triển ở Nhật Bản dưới

sự chỉ đạo của GS Kokichi Futatsugi trong phòng thí nghiệm Language

Design tại Viện khoa học và công nghệ tiên tiến Nhật Bản (JAIST) Chúng hỗ

trợ phương pháp kiểm chứng dựa trên kỹ thuật đặc tả đại số và phương pháp

quy nạp nhằm kiểm chứng các chương trình với miền trạng thái vô hạn

CafeOBJ là một ngôn ngữ thực thi dựa trên nhiều cơ sở lôgic, chủ yếu dựa

trên các đại số ban đầu và đại số được suy luận

Các lôgic cơ bản của CafeOBJ bao gồm :

- Lôgic được sắp xếp theo thứ tự (Order-sorted logic): một kiểu có thể là kiểu

con của kiểu khác Ví dụ: số tự nhiên là thuộc số hữu tỉ, nhưng chúng đảm

bảo tính chất hợp lệ là 3 phải bằng 6/2

-Lôgic biến đổi (Rewriting logic): Ngoài ra để bằng nhau, các biểu thức phải

hợp lệ tính đối xứng, chúng ta có thể sử dụng quan hệ bắc cầu Đặc trưng của

quan hệ bắc cầu là rất thuận lợi để thể hiện đồng thời hoặc tính không xác

định

-Các kiểu ẩn (Hidden sorts): Chúng ta có 2 loại trương đương Một là tương

đương cực tiểu (minimal equivalence) chính là đồng nhất hóa 2 về và chúng

tương đương khi và chỉ khi chúng giống nhau thông qua các phương trình đã

cho Kiểu tương đương khác dùng cho kiểu ẩn, là biến đổi 2 vế là tương

đương khi và chỉ khi chúng ứng xử đồng nhất dựa trên bộ quan sát đã cho

Trang 13

Đặc tả trong CafeOBJ bao gồm các mô đul, mỗi mô đun trong cafeOBJ

được định nghĩa với cú pháp

module module_name {

imports {

module_element …

} signature {

module_element …

} axioms {

module_element …

} }

Hình 2.1- Cú pháp của mô đun

Trong đó: <module name> là tên của module

<module_element> là thành phần của module

Các thành phần của module được cấu trúc trong 3 phần chính

Imports: Chỉ rõ mô đun được khai báo trong mô đun hiện thời hay là sự thừa

kế các mô đun đã triển khai được khai báo trong mô đun hiện thời có 3 dạng

của việc thừa kế các mô đun

 Protecting ( Thừa kế các mô đun nhưng không thể thừa kế chúng )

 Extending ( Thừa kế các mô đun có thể mở rộng chúng, nhưng những

mô tả ban đâu không được thay đổi)

Trang 14

 Using ( Thừa kế các mô đun có thể mở rộng hoặc thay đổi sự mô tả

ban đầu

Singnature: Khai báo các kiểu (sorts), các kiểu con (subsorts) và các toán tử

(operators)

Axioms: Bao gồm sự khai báo của các biến, các phương trình (equation), các

sự dịch chuyển (transitions) và các biểu thức thể hiện hành vi của mô đun

Thành phần của module có thể được khai báo import, khai báo kiểu (sort),

khai báo toán tử (operation), khai báo biến, khai báo một phương trình

(equation), khai báo sự dịch chuyển (transition)

Định nghĩa kiểu (sort) trong CafeOBJ có cú pháp như sau:

Mô tả kiểu số nguyên không âm là kiểu con của kiểu số nguyên, định

nghĩa phép toán nhân hai số nguyên, phép chia một số nguyên cho một số

nguyên không âm

Để cung cấp sự mô tả các mô đun trong CafeOBJ, chúng ta tìm hiểu ví dụ

trong hình 2.2 với sự định nghĩa là mô đun BASIC-NAT như là mô tả số tự

nhiên, được lưu là nat+ps.mod; mô đun BASIC-NAT định nghĩa hai phép

toán 0 và s (next), định nghĩa thêm phép toán + và tính chất của phép toán 0

và s (next) bởi từ khóa eq

[ sort-name sort-name ]

[ NzInt < Int ]

op _*_ : Int Int -> Int

op _/_ : Int NzInt -> Int

Trang 15

Hình 2.2- Đặc tả 2 mô đun BASIC-NAT trong CafeOBJ

Phần import : Mô đun BASIC-NAT thừa kế các kiểu (sort) và các toán tử

(operators) đã được định nghĩa trong Nat

Phần Signature khai báo các kiểu NzNat, Nat, Zero, ký hiệu “<” nghĩa là

kiểu NzNat là kiểu con của kiểu Nat ( kiểu số tự nhiên không âm là kiểu con

của kiểu số tự nhiên và bao gồm hằng số 0, toán tử s được khai báo la op

Phần Axioms : Hành vi của toán tử “+” được thực hiện bởi 2 biểu thức và

được khai báo bởi eq

Có 3 kiểu khai báo mô đun trong CafeOBJ là mod! (Tight modules) ,

mod* (Loose modules ), mod Để load mô đun BASIC-NAT.mod và mô đun

NATplus ta dùng cú pháp in filename

Trang 16

Hình 2.3 Đọc file nat+ps.mod trong CafeOBJ

Để hiểu chi tiết hơn về cách chứng minh tính đúng đắn của đặc tả trong

CafeOBj ta dùng cú pháp:

CafeOBJ> set trace on

CafeOBJ> set trace whole on

CafeOBJ> -thuộc tính cần chứng minh

Hình 2.4: Đọc chi tiết file cần chứng minh trong CafeOBJ

Với từ khóa eof trong CafeOBJ, chương trình sẽ chỉ đọc file đến dòng

trước từ eof, ở hình 2.5 chương trình sẽ chỉ đọc mod BASIC-NAT mà lờ đi

mod NATplus, và mô đun NATplus thừa kế mô đun BASIC-NAT

CafeOBJ> in nat+ps.mod

processing input : nat+ps.mod defining module! BASIC-NAT+ _* done

CafeOBJ>

Trang 17

file: nat+ps.mod

mod! BASIC-NAT { protecting (NAT) protecting (NZNAT) [Zero NZNAT < NAT]

op 0 : -> Zero

op s_ : NAT -> NZNAT }

}

Hình 2.5 Mô tả eof trong CafeOBJ

2.2 Đặc tả và kiểm chứng trong CafeOBJ

2.2.1 Ví dụ

Để tìm hiểu về đặc tả và kiểm chứng trong CafeOBJ, chúng ta tìm hiểu

một ví dụ đơn giản về sự đặc tả hệ thống số tự nhiên, đặc tả thuộc tính cần

chứng minh và kiểm chứng thuộc tính đó Trong ví dụ này chúng ta chỉ mô tả

một số đặc tả cơ bản với phép toán cộng (“+”), phép so sánh (“=”), phép toán

(“s”) tăng số tự nhiên lên một đơn vị, và đặc tả thuộc tính cần kiểm chứng

chính là

2.2.1.1: Tính chất kết hợp của phép cộng các số tự nhiên

Trang 18

op _+_ : Nat Nat -> Nat Phép cộng số tự nhiên

op _=_ : Nat Nat -> Bool {comm} - - Phép so sánh số tự nhiên

var M,N : Nat M, N Là các biến dùng để đặc tả

eq 0 + M = M Biểu diễn quan hệ của các phép toán

Từ mô tả về số tự nhiên với ba phép toán cơ bản và các thuộc tính của

nó, chúng ta tiến hành đặc tả bài toán bằng mô đun BASIC-NAT trong

CafeOBJ như trong (hình 2.6) Đặc tả này định nghĩa các toán tử cần thiết và

các quan hệ giữa chúng, trong đặc tả này khai báo số tự nhiên kiểu [Nat],

hằng số 0, các phép toán tăng “s”, phép toán cộng “+”, phép so sánh “=” được

khai báo sau từ khoa op, cùng với các phương trình biểu diễn quan hệ giữa

chúng được khai báo sau từ khóa eq

Trang 19

2.2.3 Đặc tả thuộc tính

Với đặc tả hệ thống BASIC-NAT như trên (Hình 2.6) , chúng ta cần đặc

tả thuộc tính cần kiểm chứng ( điều kiện (*) và điều kiện (**)) Trong đó i , j,

k là các số tự nhiên bất kỳ, hàm bất biến INV nhằm kiểm chứng tính đúng đắn

của thuộc tính

ops i j k : -> Nat

- Điều cần chứng minh

eq inv (i,j,k)=(( i + j) + k = i +(j + k))(*)

eq inv (i, j,)=(( I+ J) = (J+ I)) (**)

Hình 2.7 Đặc tả thuộc tính cho điều kiện (*) và điều kiện (**)

2.2.4 Kiểm chứng thuộc tính

Sử dụng mô đun BASIC-NAT được mô tả ở (hình 2.6) để chứng minh

cho thuộc tính (*) như hình sau, tư tưởng chứng minh là dùng phương pháp

quy nạp, đầu tiên kiểm chứng (*), với i=0, sau đó giả thiết (*) đúng với

trường hợp i bất kỳ, sau đó chứng minh (*) đúng với s(i)

opening module NATplus and EQL

open (NATplus + EQL)

> declaring constants for arbitrary values

Trang 20

Hình 2.8 : Chứng minh tính chất kết hợp của phép cộng các số tự nhiên

Sử dụng chương trình kiểm chứng bằng ngôn ngữ toán học CafeOBJ kết

quả của hình 2.8 trả về true, vậy thuộc tính (*) được chứng minh cụ thể như

Trang 21

Theo giả thiết ((s M) +N) = (s (M+N)

Trang 22

Sử dụng mô đun BASIC-NAT được mô tả ở (hình 2.6) để chứng minh

cho thuộc tính (**) như hình sau, cũng với tư tưởng chứng minh là dùng

phương pháp quy nạp, đầu tiên kiểm chứng (**), với i=0, và giả thiết (**)

đúng với trường hợp i bất kỳ, sau đó chứng minh (**) đúng với s(i) Nhưng

khi red 0+ j = j + 0 không trả về giá trị true mà trả về một kiểu boolean, khi

đó ta phải thêm các bổ đề vào, làm sao để tìm ra bổ đề, ta nhận thấy trong mô

đun BASIC-NAT ta đã có tính chất eq 0 + M:Nat = M Bây giờ nếu chứng

minh được bổ đề j+0=j với mọi j thì kết quả của 0+j=j+0 sẽ trả về true

Sử dụng bổ đề trên ta sẽ chứng minh được j+0=0+j như hình sau

Hình 2.9 Chứng minh 0+j=j+0 Tiếp theo giả thiết i + j = j+i, khi red s(i) + j = j + s(i) không trả về true mà trả

về một kiểu boolean, có nghĩa là ta phải thêm bổ đề vào, vậy tìm bổ đề như

thế nào, nhận thấy từ BASIC-NAT ta có s(i) + j = s(i+j) theo giả thiết i+j=j+i

open (NATplus + EQL) > declaring constants for induction ops i j : -> Nat

**> Prove Lemma1: i + 0 = i, by induction on i

**> induction base case (i = 0) : 0 + 0 = 0 red 0 + 0 = 0

**> induction step

eq i + 0 = i red (s i) + 0 = (s i)

Trang 23

vậy s(i) + j = s(j+i), do vậy mục đích là chứng minh j+s(i) = s(j+i), hình 2.10

sau sẽ chứng minh bổ đề trên

Hình 2.10 Chứng minh lemma2: i + s(j) = s(i+j)

Hình 2.10 Chứng minh lemma2: i + s(j) = s(i+j)

Hình 2.11 sau sẽ chứng minh cho tính chất giao hoán của phép cộng các số tự

**> Prove Lemma2: i + (s j) = s(i + j) by induction on i

**> induction base case (i = 0) : 0 + (s j) = s(0 + j) red 0 + (s j) = s(0 + j)

**> induction step

eq i + (s J:Nat) = s(i + J) > conclusion of induction step red (s i) + (s j) = s((s i) + j)

Trang 24

Với tư tưởng kiểm chứng bằng phương pháp quy nạp đó, trong CafeOBJ

cũng hỗ trợ rất mạnh mẽ sẽ được đề cập ở phần sau Được xem như là một tư

tưởng nổi bật của việc kiểm chứng phần mềm và kiểm thử phần mềm Nhờ

phương pháp quy nạp này mà việc kiểm chứng các thuộc tính của hệ thống

với không gian trạng thái vô hạn được thực hiện một cách rõ ràng, trong hình

2.11 chúng ta thấy được sự kiểm chứng bằng phương pháp quy nạp với việc

thêm vào các bổ đề Sau Khi thực hiện chương trình như hình 2.11 trong

CafeOBJ, hệ thống CafeOBJ trả về kết quả “true”, nghĩa là hệ thống đã được

kiểm chứng thỏa mãn với điều kiện (**)

Chương 3 Đặc tả hệ thống đa tác tử

3.1 OTS (Observation transition system)

Chúng ta sử dụng OTS/ CafeOBJ để mô hình hóa hệ thống với kỹ thuật đại số

cho việc đặc tả và kiểm chứng của các hệ thống một cách rõ nét hơn

Ưu điểm của phương pháp này:

- Trình bày một mô hình hình thức để mô tả hệ thống, trong đó

chú trọng đến các quan sát (observers) cũng như các hành động trong OTS

- Phương thức OTS/CafeOBJ cung cấp một mô hình ngữ nghĩa và

framework chúng cho một hệ thống phức tạp

Trang 25

- Đối với việc kiểm chứng hình thức với một hệ thống bởi bộ

chúng được cung cấp bởi phương thức OTS/CafeOBJ

Trong chương 2 trình bày về đặc tả và kiểm chứng trong CafeOBJ với hệ

thống đơn giản, trong khi thực tế có nhiều hệ thống phức tạp với sự chuyển

đổi trạng thái của hệ thống khi có một hoạt động nào đó tác động vào hệ

thống đó Vì vậy với hệ thống biến đổi trạng thái trực quan (OTS) là một mô

hình hóa toán học sẽ giúp chúng ta dễ biểu diễn các đặc tả và kiểm chứng hệ

thống một cách chính xác và rõ ràng hơn

3.2 Mô tả bài toán QLOCK

Ta thấy rằng nhiều tiến trình (agents or processes) tranh quyền sử dụng

một tài nguyên, nhưng tại một thời điểm chỉ có duy nhất một tiến trình có thể

sử dụng tài nguyên, vì thế mà tất cả các tiến trình phải tuân theo giao thức độc

quyền truy xuất (mutual exclusion protocol) trong việc sử dụng tài nguyên

Trong đó QLOCK là một hệ thống sử dụng giao thức độc quyền truy xuất

với một hàng đợi (Queue) dùng chung cho tất cả các tiến trình (processes)

thỏa mãn các yêu cầu sau:

-Độc quyền truy xuất: Nếu tiến trình Pi đang sử dụng tài nguyên thì không

tiến trình nào được sử dụng , mà phải chờ cho tới khi tiến trình hiện thời kết

thúc

-Tiến trình: Nếu không có tiến trình nào sử dụng tài nguyên và có một số

tiến trình muốn dùng thì một tiến trình nào đó phải được dùng

-Trạng thái ban đầu: Mọi tiến trình không có nhu cầu sử dụng tài nguyên và

hàng đợi là rỗng

Trang 26

Hình sau mô tả bài toán Qlock với phương thức độc quyền truy xuất:

mỗi bộ xử lý (agent) i bất kỳ thực hiện: đầu tiên mọi tác tử chưa có nhu cầu

dùng tài nguyên và được gán nhãn là rm, sau đó khi một tác tử i muốn dùng

tài nguyên nó sẽ được đẩy vào hàng đợi ( vào trước ra trước), thì i được gán

nhãn là wt, kiểm tra tác tử i có phải ở đỉnh của hàng đợi hay không, nếu đúng

thì i được dùng tài nguyên gán nhãn là cs, ngược lại i phải chờ cho đến khi là

đỉnh của hàng đợi Khi i đang dùng tài nguyên, nếu dùng xong hệ thống sẽ tự

xóa nó ra khỏi hàng đợi và có nhãn là rm

Mỗi tiến trình i thực hiện

Sử dụng tài nguyên

Đẩy i vào đáy queue

Trạng thái ban đầu

Trang 27

Hình 3.1 Mô tả bài toán Qlock

Trong bài toán QLOCK chúng ta phải sử dụng một hàng đợi để thực

hiện phương thức độc quyền truy xuất cho cả hệ thống Việc tạo ra một hàng

đợi với các thuộc tính và phương thức cơ bản của một hàng đợi như chúng ta

đã biết, gồm các phương thức put đưa một thành phần vào hàng đợi, phương

thức get xóa một thành phần ra khỏi hàng đợi Hình 3.2 sau mô tả một hàng

đợi queue với 3 tiến trình (agent) i, j, k; 2 phương thức top và get; i đang ở

đỉnh hàng đợi, j ở đáy hàng đợi

Trang 28

21

Hình 3.2 View of QLOCK Tiếp theo hình 3.3 sẽ mô hình hóa bài toán QLOCK trong hệ thống

chuyển dịch tổng quan (OTS) bằng biểu đồ ký số (signature diagram), sau đây

sẽ mô tả chi tiết hơn các ký số: Sys là kiểu thể hiện không gian trạng thái của

hệ thống; Label là kiểu thể hiện nhãn cho mỗi trạng thái, bao gồm: rm, wt, cs;

Pid là kiểu thể hiện định danh các tiến trình; Queue là kiểu thể hiện hàng đợi

chứa các tiến trình; pc là toán tử trực quan (observer) trả về nhãn của các

agent ở trạng thái hiện thời, pc có đầu vào là một trạng thái kiểu Sys và một

tiến trình kiểu Pid, đầu ra là kiểu Label; queue: toán tử trực quan (observer)

trả về hàng đợi các định danh của tiến trình ở trạng thái hiện thời, queue có

đầu vào là một trạng thái kiểu Sys, đầu ra kiểu Queue; init là trạng thái khởi

đầu; want là một hành động của việc đưa về trạng thái tiếp theo sau khi thực

hiện tiến trình có kiểu Pid với nhãn rm ở trạng thái có kiểu Sys; try là một

hành động của việc đưa về trạng thái tiếp theo sau khi thực hiện tiến trình có

kiểu Pid với nhãn wt ở trạng thái có kiểu Sys, nếu tiến trình có kiểu Pid có

nhãn wt và đang ở đỉnh của hàng đợi thì nhãn của tiến trình đó ở trạng thái

tiếp theo là cs; exit là một hành động của việc đưa về trạng thái tiếp theo sau

khi thực hiện tiến trình có kiểu Pid vơi nhãn cs ở trạng thái có kiểu Sys

Label pid

Trang 29

Hình 3.3 Mô hình QLOCK với OTS

3.4 Đặc tả bài toán QLOCK bằng ngôn ngữ cafeOBJ

Có thể vắn tắt bài toán QLOCK dưới dạng thuật toán (hình 3.3) trong đó:

-Queue là hàng đợi chứa các định danh (i) của các tiến trình và được khởi tạo

rỗng

-Mọi tiến trình được khởi tạo với nhãn ban đầu là rm ; khi một tiến trình

được đưa vào hàng đợi, tiến trình được gán nhãn là wt ; khi một tiến trình

được gán nhãn là wt và ở đỉnh hàng đợi thì tiến trình được gán nhãn là cs

-put, top, get là các phương thức của hàng đợi (Queue)

QLOCK sẽ được đặc tả như một OTS với các thành phần:

- Hai hàm queue và pc

+queue(s) trả về hàng đợi các định danh của tiến trình ở trang thái s

Trang 30

+ pc(s,i) trả về nhãn (rm, wt hay cs) của tiến trình i ở trạng thái s

-Khởi tạo với trạng thái ban đầu (init)

 queue(init) trả về empty

 pc(init, i) trả về nhãn rm với mọi tiến trình i

-Với 3 hành động want, try, exit

 want(s,i) đưa về trạng thái tiếp theo sau khi thực hiện tiến trình i với

nhãn rm ở trạng thái s

 try(s,i) đưa về trạng thái tiếp theo sau khi thực hiện lặp lại tiến trình i

với nhãn wt ở trạng thái s Nếu i có nhãn wt và top(queue(s) là i, thì

nhãn của i ở trạng thái tiếp theo sẽ là cs

 exit(s,i) đưa về trạng thái tiếp theo sau khi thực hiện tiến trình i với

nhãn cs ở trạng thái s

Chúng ta sẽ có đặc tả (signature) hệ thống như hình 3.4 bao gồm 1

kiểu không gian trạng thái của hệ thống Sys; 3 kiểu khai báo: Queue, Label,

Pid; 2 toán tử trực quan: pc, queue; 3 hành động: want, try, exit

*[Sys]

Trạng thái ban đầu

Op init : -> Sys Các hàm bop pc: Sys Pid -> Label bop queue : Sys -> Queue Các hành động

bop want : Sys pid -> Sys bop try : Sys pid -> Sys bop exit : Sys pid -> Sys

Trang 31

Hình 3.4 Đặc tả (signature) cho hệ thống QLOCK

Chúng ta có đặc tả mô đun LABEL chứa nhãn của các bộ xử lý như

hình 3.5 sau, mô đun bao gồm các phần tử có kiểu Label; các hằng: rm, wt,

cs; một phép toán bằng = để so sánh hai nhãn bằng nhau có tính chất giao

hoán; rm, wt, cs là khác nhau từng đôi một; L=L trả về true

Hình 3.5 Đặc tả mô đun LABEL

Hình 3.6 sẽ đặc tả mô đun PID bao gồm các phần tử có kiểu Pid, một

toán tử "=" để so sánh hai phần tử kiểu Pid có tính chất giao hoán

Hình 3.6 Đặc tả mô đun PID Hình 3.7 sẽ khai báo hàng đợi tổng quát và định nghĩa cho phương thức

“top” trong QUEUE trước hết chúng ta tạo 2 mô đun TRIVerr và OPTION

trong đó: mô đun TRIVerr thể hiện các phần tư khai báo tổng quát có kiểu

[Elt]; toán tử "= " để so sánh hai phần tử kiểu Elt có tính chất giao hoán Mô

mod! LABEL { [Label]

ops rm wt cs : -> Label pred (_=_) : Label Label {comm} var L : Label

eq (L = L) = true

eq (rm = wt) = false

eq (rm = cs) = false

eq (wt = cs) = false }

mod* PID { [Pid < PidErr]

op none : -> PidErr pred (_=_) : PidErr PidErr {comm}

var I : Pid

eq (I = I) = true

eq (none = I) = false (none = none) is not defined intentionally}

Trang 32

đun OPTION với tham số truyền vào là một thể hiện của lớp TRIVerr, các

phần tử có kiểu [Option]; 3 hằng số: none, some, val; một toán tử = để so

sánh hai phần tử kiểu [Option] có tính chất giao hoán Mô đun OPTION nhằm

tiền định nghĩa cho phương thức “top” trong QUEUE Khi một hàng đợi rỗng

thì phương thức “top” sẽ trả về hằng số none ngược lại sẽ trả về some(E)

(trong đó E chính là phần tử ở đỉnh hàng đợi); toán tử val là some nghĩa là

val(some (E)) = E; trong mô đun OPTION có tính chất none <> some(E) và

(some(E) = some(E')) = (E=E')

mod* TRIVerr { [Elt]

op _=_ : Elt Elt -> Bool {comm}

} mod! OPTION(X :: TRIVerr) { [Option]

op none : -> Option

op some : Elt.X -> Option

op val : Option -> Elt.X

op _=_ : Option Option -> Bool {comm}

Trang 33

26

var O : Option vars E E' : Elt.X

eq val(some(E)) = E

eq (O = O) = true

eq (none = some(E)) = false

eq (some(E) = some(E')) = (E = E')

}

Hình 3.7 Kiểu biến tổng quát cho hàng đợi QUEUE

Trong bài toán QLOCK chúng ta phải sử dụng một hàng đợi để thực hiện

phương thức độc quyền truy xuất cho cả hệ thống Việc tạo ra một hàng đợi

với các thuộc tính và phương thức cơ bản của một hàng đợi như chúng ta đã

biết, gồm các phương thức put đưa một thành phần vào hàng đợi, phương

thức get xóa một thành phần ra khỏi hàng đợi và top lấy ra một thành phần

trên đỉnh của hàng đợi Các thuộc tính và những phương thức cơ bản đó được

định nghĩa trong CafeOBJ như hình 3.8; mô đun QUEUE chính là đặc tả cho

hàng đợi trong hệ thống QLOCK

mod! QUEUE(D :: TRIVerr) {

[Queue]

constructors

op empty : -> Queue {constr}

op _,_ : Queue Elt.D -> Queue {constr l-assoc}

operators

op put : Elt.D Queue -> Queue

op get : Queue -> Queue

op top : Queue -> EltErr.D

op empty? : Queue -> Bool

Ngày đăng: 07/01/2015, 12:44

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Phạm Ngọc Thắng (2010), Đặc tả và kiểm chứng phần mềm sử dụng CafeOBJ, khóa luận tốt nghiệp đại học, trường Đại học Công Nghệ, Đại học Quốc Gia Hà Nội Khác
[2] Tạ Thị Thu Hiền (2010) nghiên cứu về chứng minh tự động (Theorem proving) trong CafeOBj, Luận văn tốt nghiệp Đại học Công Nghệ, Đại học Quốc Gia Hà nội Khác
[5] E. M. Clarke, O. Grumberg, and D.Peled, Model Checking, The MIT Press, 1999 Khác
[6] Roger S. Pressman. Software Engineering - A practitioner’s approach, sixth edition, McGraw-Hill Companies, 2005 Khác
[10] Silva, A. L., M. M. Menezes and L.Silva, Using CafeOBJ to implement a reduction strategy in the context of hardware/software partitioning., Electronic Notes in Theoretical Computer Science 95 (2004) Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w