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

Tài liệu Đề tài: TÌM HIỂU ERIGONE MODEL CHECKER docx

43 705 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Tìm Hiểu Erigone Model Checker
Tác giả Lưu Hoàng Tùng, Nguyễn Công Đức
Người hướng dẫn TS. Đặng Đức Hạnh, TS. Vũ Diệu Hương
Trường học Đại học Công nghệ - Đại học Quốc gia Hà Nội
Chuyên ngành Công nghệ Thông tin
Thể loại Báo cáo đề tài
Năm xuất bản 2012
Thành phố Hà Nội
Định dạng
Số trang 43
Dung lượng 2,54 MB

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

Nội dung

LỜI NÓI ĐẦUErigone là mô hình triển khai lại của mô hình kiểm chứng Spin được phát triển với mục đích kiểm chứng được dễ dàng trực quan, uyển chuyển nhằm thuận lợi cho việc nghiên cứu và

Trang 1

ĐẠI HỌC CÔNG NGHỆ - ĐẠI HỌC QUỐC GIA HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO

Đề tài:

TÌM HIỂU ERIGONE MODEL CHECKER

Giảng viên hướng dẫn : TS Đặng Đức Hạnh

TS Vũ Diệu Hương Sinh viên thực hiện : Lưu Hoàng Tùng Nguyễn Công Đức

Hà nội - 2012

Trang 2

MỤC LỤC

LỜI NÓI ĐẦU 1

Chương 1 ERIGONE TRÊN CÔNG CỤ EUI 2

I/ Giới thiệu tổng quan 2

1.Giới thiệu Erigone model checker 2

2.Công cụ phát triển 3

2.1 Command line 3

2.2 EUI (Erigone User Interface) 6

3.Mô phỏng và xác minh trong Erigone 8

4.Chương trình Trace 8

II/ Ví dụ demo 9

1.Giải quyết hai tiến trình loại trừ lẫn nhau 9

2.Loại trừ lẫn nhau với một semaphore 11

3.Xác minh một chương trình Promela với câu lệnh assert 12

4.Xác minh một thuộc tính an toàn sử dụng LTL 14

5.Chứng minh khái niệm về sự công bằng với câu lệnh LTL 16

Chương 2: ERIGONE BẰNG CÂU LỆNH 19

I/ Tìm hiểu về Erigone bằng dòng lệnh: 19

1.Erigone: 20

1.1 Thực thi theo phương thức: 20

1.2 Hiển thị lựa chọn với các đối số: 21

1.3 Biên dịch chạy thông điệp: 21

1.4 Chuyển tiếp(transitions): 22

1.5 Chuyển đổi LTL: 22

Trang 3

1.6 Kiểm tra lỗi(debug arguments) 22

2 List: 23

3 Trace: 23

4 VMC 24

II/ Mô phỏng một số chương trình Promela bằng công cự Erigone 25

1 Mô phỏng với quá trình truyền thông điệp(chanel) 25

2 Mô phỏng chương trình tương tranh 31

3 Kiểm chứng độ tin cậy khi sử dụng LTL 32

III/ Chương trình List 33

IV/ Chương trình Trace 33

V/ Chương trình VMC 36

TÀI LIỆU THAM KHẢO 40

Trang 4

LỜI NÓI ĐẦU

Erigone là mô hình triển khai lại của mô hình kiểm chứng Spin được phát triển với mục đích kiểm chứng được dễ dàng trực quan, uyển chuyển nhằm thuận lợi cho việc nghiên cứu và mô phỏng mô hình hệ thống, erigone có thể được thực hiện bằng công cụ trên giao diện đồ họa EUI hoặc thao tác bằng câu lệnh dưới dạng command line với nhiều tùy biến lựa chọn cho phép kiểm chứng hoạt động của hệ thống

Tìm hiểu Erigone model checker nhằm mục đích tìm hiểu rõ hơn về mô hình kiểm chứng erigone thông qua một số ví dụ, được thực hiện bằng công cụ đồ họa EUI và bằng câu lệnh command line, với những nhìn ảnh, phân tích chương trình một cách trực quan

Vì đây là lần đầu tiếp xúc, tìm hiểu về 1 khía cạnh mới nên sẽ không tránh khỏi những khó khăn dẫn đến những thiếu sót trong báo cáo, chúng em mong thầy (cô) bỏ qua

Chúng em xin chân thành cảm ơn thầy cô đã chỉ bảo hướng dẫn chúng em để chúng em có thể hoàn thành báo cáo này

Trang 5

Chương 1 ERIGONE TRÊN CÔNG CỤ EUI

I/ Giới thiệu tổng quan

1 Giới thiệu Erigone model checker

Erigone là một phần triển khai lại của mô hình kiểm chứng Spin Erigone triển khai một tập con của Promela, nó là đủ để chứng minh các khái niệm cơ bản của mô hình kiểm chứng cho việc xác minh (verification) của các chương trình đồng thời Không một ngôn ngữ cấu trúc nào được thêm vào sao cho chương trình cho Erigone có thể được sử dụng với Spin để có nhiều tính uyển chuyển và hiệu suất tốt hơn mong muốn

Erigone được viết bằng ADA năm 2005 cho độ tin cậy, bảo trì và tính linh hoạt Nó được sử dụng như một chuẩn kiến trúc

 Mô-đun hóa mở rộng được sử dụng trong việc thiết kế của chương trình Erigone tạo điều kiện cho hiểu biết về mã nguồn Điều này cũng

sẽ cho phép các nhà nghiên cứu dễ dàng sửa đổi và mở rộng chương trình

 Ngoài việc kiểm chứng mô hình Erigone còn chứa các chương trình bổ xung riêng biệt:

– COMPILER: Chạy chương trình biên dịch của chính nó

– LST: Định dạng đầu ra của trình biên dịch– TRACE: Định dạng đầu ra của mô hình kiểm chứng– VMC: Tạo đồ thị mô hình từ thuật toán mô hình kiểm tra

Trang 7

• Đối số dòng lệnh:

 Các chế độ (mode) thực thi

-r Random simulation-i Interactive simulation-g Guided simulation-s Verification of safety-a Verification of acceptance-f Verification with fairness-b LTL to BA translation only-c Compile PROMELA only

 Giới hạn thực thi-eN Total st[e]ps 10-kN State stac[k] 2-lN [L]ocation stack 3-pN [P]rogress step 1

Trong đó, tham số N trong khoảng 1000 và mặc định của nó được liệt

kê trong cột 3 của bảngĐối với ngăn xếp, đây là số lượng các khung ngăn xếp và không phải

là số lượng các bytes Tổng các bước (Total steps) là số lượng các bước của một mô phỏng hoặc xác minh trước khi thực hiện các chấm dứt

Đối với một xác minh, một báo cáo tiến trình có thể được in sau mỗi

bước tiến trình(progress step) đã được thực hiện, nếu g được bao gồm

trong các đối số hiển thị

 Một số đối số bổ sung:

Trang 8

-h Display [h]elp screen-nN Seed of ra[n]dom simulation-o Compiler l[o]gs

-t[f] Read L[T]L formula

Hạt giống (seed) mặc định thu được từ đồng hồCác bản ghi của trình biên dịch (compiler logs) bằng văn bản để tách các tập tin, không phải đầu ra tiêu chuẩn

Nếu một tên tệp tin không được đưa ra với đối số -t, các tên tập tin được xây dựng như mô tả ở trên Không có khoảng trống giữa -t và tên của tập tin

Nhãn Accept chưa được triển khai, do đó -t nên được thiết lập với chế

độ thực thi -a hoặc –f; một thông điệp cảnh báo sẽ được đưa ra nếu điều này chưa được thực hiện

 Đối số hiển thịĐối số -d hiển thị tất cả các dữ liệu Hiển thị chọn lọc có thể dùng với đối số -dX, trong

đó X là một chuỗi của một hoặc nhiều:

Compile and runtime messages

a [A]ll transitions from a state

c [C]hosen transition (simulation)

e [E]xcutable transitions from a state

Trang 9

l [L]ocation stack

t [T]rail

y B[y]te code

n [N]odes in the LT tableau

2.2 EUI (Erigone User Interface)

EUI là một môi trường phát triển cho Erigone bao gồm một giao diện người dùng đồ họa và các thuật toán để định dạng và hiển thị kết quả của một mô phỏng và xác minh EUI là một chuyển thể của JSpin - môi trường phát triển cho Spin

Tập tin cài đặt EUI eui-N.exe (N là số phiên bản) có thể tải từ dự

án Jspin tại Google Code:

http://code.google.com/p/jspin/

EUI cần Java JRE phiên bản thấp nhất là 1.5

Trang 10

Giao diện chính của EUI

2.3 Kích thước giới hạn của Erigone

Giới hạn về kích thước của các mô hình Promela được biên dịch vào Erigone có trong ba gói thông số kĩ thuật: Global cho các khai báo cơ bản, Config cho các kích cỡ bảng và Config State cho cỡ của các vectơ trạng thái nén trong stack và hash table:

Declarations in package GlobalIdentifier Type Meaning

Byte mod 256 Values and indices

Name String(1 64) Names and source statements

Declarations in package ConfigIdentifier Type Meaning

Process_Index Byte range 0 7 Processes

Trang 11

Symbol_Index Byte range 0 15 Symbols

Transition_Index Byte range 0 63 Transitions in a process

Location_Index Byte range 0 7 Transitions from any stateByte_Code_Index Byte range 0 63 Byte codes per statementInterpret_Index Byte range 0 63 Interpretation stack

Max_Futures constant := 4 Number of future formulas

Declarations in package Config_StateIdentifier Type Meaning

Process_Size_Index Byte range 0 3 Size of processes in a state vectorVariable_Size_Index Byte range 0 15 Size of variables in a state vector

3 Mô phỏng và xác minh trong Erigone

Khi một mô hình Promela được mô phỏng thường sẽ có nhiều hơn một tin thực thi (executable) chuyển đổi trong mỗi trạng thái Sự lựa chọn của quá

trình chuyển đổi có thể được: random, interactive, hoặc guided bởi các tập tin

trail cái mà được viết trong một xác minh.

Các mode của xác minh trong Erigone là:

 Safety : Kiểm tra sự an toàn của thuộc tính

 Acceptance : Kiểm tra cho chu trình chấp nhận

 Fairness : Kiểm tra cho chu trình chấp nhận dưới sự công bằng yếuMột thuộc tính đúng đắn có thể được xác định bởi một công thức trong LTL

4 Chương trình Trace

Chương trình Trace thực hiện xử lý chuỗi trên dữ liệu đầu ra viết bởi Erigone Nó in đầu ra của một mô phỏng ở dạng bảng

Đầu tiên thực hiện:

erigone -dcmp filename > filename.trc

Trang 12

để viết một tập tin với bảng kí hiệu, trạng thái và quá trình chuyển đổi được thực hiện Sau đó sử dụng câu lệnh:

trace [arguments] filenameTrong đó các đối số có thể là:

-tn Number of lines between column [t]itles-ln Column width for [l]ine numbers

-pn Column width for [p]rocesses-sn Column width for [s]tatements-vn Column width for [v]ariables-xs E[x]clude variables with s-ms Exclude state[m]ents with s

-x và -m là đối số sử dụng để lọc đầu ra Các chuỗi s là danh sách của các chuỗi chấm dứt bởi # :

-xwant# -massert#!#

ý nghĩa là một cột cho một biến (-x) hoặc một hàng cho một câu lệnh (-m) sẽ không được in nếu một trong những chuỗi xuất hiện trong phạm vi biến hoặc câu lệnh, tương ứng Với các đối số ở trên, các cột cho wantp và wantq sẽ không được in, cũng sẽ không phải hàng với câu lệnh assert hoặc toán tử phủ định

II/ Ví dụ demo

1 Giải quyết hai tiến trình loại trừ lẫn nhau

Mã nguồn của chương trình nằm trong tập tin second.pml ở thư mục examples:

bool wantp = false, wantq = false;

byte critical = 0;

active proctype p() {

do

Trang 13

active proctype q() { /* Symmetrical */ }

Mã nguồn Promela được hiển thị trong khung bên trái của giao diện EUI Ta sử dụng mode Random để chạy một mô phỏng, các câu lệnh được lựa chọn ngẫu nhiên Kết quả trả về ở khung bên phải của giao diện Nó bao gồm một dòng hiển thị phiên bản hiện tại của Erigone, chế

độ được thực thi, chế độ của mô phỏng và cấu hình được sử dụng

Các trạng thái của mô phỏng được hiển thị ở dạng bảng Cột đầu tiên là tiến trình mà từ đó một câu lệnh đã được thực hiện, tiếp theo là cột chứa

số dòng và mã nguồn của câu lệnh, các cột còn lại cung cấp các giá trị của các biến trong trạng thái Theo sau bảng, kết quả của mô phỏng được đưa ra

Một lỗi giao tranh xảy ra khi biến critical có giá trị là 2 và khi đó mô phỏng sẽ chấm dứt với thông báo:

simulation terminated=assert statement is false

Với mode Guided ta sẽ nhận được kết quả tương tự

Trang 14

Ví dụ với second.pml

2 Loại trừ lẫn nhau với một semaphore

Mã nguồn của ví dụ được chứa trong tập tin sem.pml trong thư mục examples:

critical++;

assert(critical == 1);

critical ;

sem++

Trang 15

active proctype q() { /* The same */ }

active proctype r() { /* The same */ }

Với mode Random tương tự như ví dụ trên, mô phỏng sẽ chạy liên tục cho đến khi ta ngừng mô phỏng hoặc đến một bước nào đó Không có lỗi nào xảy ra do ta đã đặt một cờ hiệu tránh cho sự giao tranh

Với mode Interactive, ta có thể lựa chọn các câu lệnh mong muốn được thực thi trong mô phỏng

Sử dụng mode Interactive

3 Xác minh một chương trình Promela với câu lệnh assert

Sử dụng chương trình second.pml, với mode Safety, kết quả trả về với thông báo xác minh chấm dứt khi có lỗi xảy ra:

verification terminated=assert statement is false, line=22,statement={assert (critical == 1)},

Trang 16

Safety khi giao tranh

Sử dụng chương trình sem.pml với mode Safety kết quả trả về với thông báo:

verification terminated=successfully,

Trang 17

Safety không có giao tranh

4 Xác minh một thuộc tính an toàn sử dụng LTL

Erigone có thể xác minh một thuộc tính đúng đắn được viết bằng công thức trong ngôn ngữ LTL

Chương trình second-ltl.pml tương tự như second.pml chỉ khác rằng câu lệnh assert được thay bằng một công thức LTL

bool wantp = false, wantq = false;

byte critical = 0;

ltl { [](critical<=1) }

Trang 18

active proctype p() {

do:: !wantq;

active proctype q() { /* Symmetrical */ }

Chọn mode Safety ta được kết quả của xác minh:

verification terminated=never claim terminated, line=11,statement={critical },

Run a guided simulation to see the counterexample steps=8,

times=,compilation=0.01,verification=0.01,

Cụm từ never claim terminated là một thuật ngữ kĩ thuật được sử dụng bởi các mô hình kiểm tra để báo cáo rằng một lỗi đã được tìm thấy Cuối cùng là thông tin về việc thực hiện mô hình kiểm tra được hiển thị

Trang 19

Safety với câu lệnh LTL

5 Chứng minh khái niệm về sự công bằng với câu lệnh LTL

Chương trình sau là một ví dụ đơn giản để chứng minh khái niệm về sự công bằng

fair1.pml:

byte n = 0;

bool flag = false;

ltl { <>flag }active proctype p() { do

Trang 20

:: flag -> break;

:: else -> n = 1 - n;

od}

active proctype q() {

flag = true}

Nếu tiến trình q thực hiện, nó sẽ thiết lập cờ là đúng và tiến trình p sau đó sẽ chấm dứt

Khi ta chọn mode Accept, mô hình kiểm tra tìm kiếm cho một chu trình chấp nhận (acceptance cycle) – một thuật ngữ kĩ thuật cho một lỗi trong một xác minh của một công thức LTL có chứa kí hiệu (<>) và kết quả trả về là:

verification terminated=acceptance cycle, line=9,statement={else -> n = 1 - n},

Trang 21

Verification với Accept

Chọn mode Guided ta sẽ được một phản ví dụ đối với sự đúng đắn của thuộc tính, kết quả trả về có dạng:

simulation terminated=end of acceptance cycle, line=9,statement={else -> n = 1 - n},

Với Fairness, nó thực hiện một xác minh trong chế độ Accept với mức công bằng yếu Trong chế độ, chỉ tính toán một cách yếu ớt sự công bằng những ứng viên cho chu trình chấp nhận Trong một cách yếu ớt tính toán công bằng, quá trình chuyển đổi liên tục được kích hoạt cuối cùng phải được thực hiện Kể từ khi câu lệnh gán flag=true là xác thật liên tục kích hoạt, nó phải được thực hiện Khi đó kết quả là:

verification terminated=successfully,

Trang 22

Verification với Fairness

Chương 2: ERIGONE BẰNG CÂU LỆNH

I/ Tìm hiểu về Erigone bằng dòng lệnh:

Sau khi tải file chứa erigone-N.zip ở trang http://code.google.com/p/erigone/

, với N là số phiên bản, mã nguồn chương trình trong erigone-source-N.zip

Sau khi giải nén file lư trữ erigone-N.zip chứa các thư mục :

dist: thư mục dist chứa file erigone-release.html đây là file ghi nội dung các

phiên bản của erigon và ngày phát hành có thể link trực tiếp đến trang chủ nếu máy có kết nối mạng internet

docs: Chứa hai file erigone-quick.pdf và erigone-ug.pdf đó là hai file giới thiệu

và hướng dẫn sử dụng phần mềm erigone.exe, list.exe, trace.exe, vmc.exe

examples: Thư mục chứa các file mã nguồn ví dụ Promela.

vmc-examples: Thư mục chứa mã nguồn ví dụ Promela có thể chuyển đổi mô

hình tốt bằng chương trình VMC

Trang 23

1 Erigone:

Hướng dẫn thực hiện chạy chương trình:

Câu lệnh: erigone [arguments] filename

- erigone là tên của chương trình thực thi

- [arguments] đối số truyền vào để thực thi câu lệnh theo yêu cầu

- Filename là file mã nguồn Promela (Được định đạng file là pml)

1.1 Thực thi theo phương thức:

-a: acceptance verification – kiểm chứng chấp nhận-c: compilation only – chỉ biên dịch file chương trình chứ không chạy chương trình sẽ in ra file biện dịch phần mở rộng là aut

-f: fairness(công bằng) verification – kiểm chứng tương đương-g: guided simulation – hướng mô phỏng

-gN: guided simulation – hướng mô phỏng với tham số N

- i:interactive simulation – mô phỏng sự tương tác-r: random simulation – mô phỏng ngẫu nhiên (mặc định)-s: safely verification – kiểm chứng an toàn(tin cậy)

Trang 24

1.2 Hiển thị lựa chọn với các đối số :

-d display everything – hiển thị toàn bộ

-dX: đối số động X, là một trong chuỗi của các đối số

1.3 Biên dịch chạy thông điệp:

Trang 25

-dl: location stack – vị trí ngăn xếp

-dt: trail:

-dy: byte code

1.2.c Trạng thái:

-dh: state in the hash table – trạng thái ở trong bảng băm

-dm: states in a simulation – trạng thái trong mô phỏng

-do: channel contents – nội dung kênh

-ds: state stack – trạng thái ngăn xếp

1.5 Chuyển đổi LTL:

-db: buchi automaton

-dn: nodes in the LTL tableau

1.6 Kiểm tra lỗi(debug arguments)

Đối số hiển thị lỗi dữ liệu –u Lựa chọn các đối số -ux với x là kí tự hoặc chuỗi kí tự truyền vào

-uc: compiler tokens -ui: Interpreter stack

Ngày đăng: 12/02/2014, 13:20

HÌNH ẢNH LIÊN QUAN

Mô hình hoạt động: - Tài liệu Đề tài: TÌM HIỂU ERIGONE MODEL CHECKER docx
h ình hoạt động: (Trang 6)
2.3. Kích thước giới hạn của Erigone - Tài liệu Đề tài: TÌM HIỂU ERIGONE MODEL CHECKER docx
2.3. Kích thước giới hạn của Erigone (Trang 10)
Khi một mô hình Promela được mô phỏng thường sẽ có nhiều hơn một tin thực thi (executable) chuyển đổi trong mỗi trạng thái - Tài liệu Đề tài: TÌM HIỂU ERIGONE MODEL CHECKER docx
hi một mô hình Promela được mô phỏng thường sẽ có nhiều hơn một tin thực thi (executable) chuyển đổi trong mỗi trạng thái (Trang 11)
để viết một tập tin với bảng kí hiệu, trạng thái và quá trình chuyển đổi được thực hiện - Tài liệu Đề tài: TÌM HIỂU ERIGONE MODEL CHECKER docx
vi ết một tập tin với bảng kí hiệu, trạng thái và quá trình chuyển đổi được thực hiện (Trang 12)
Khi ta chọn mode Accept, mô hình kiểm tra tìm kiếm cho một chu trình chấp nhận (acceptance cycle) – một thuật ngữ kĩ thuật cho một lỗi trong một  xác minh của một công thức LTL có chứa kí hiệu (&lt;&gt;) và kết quả trả về là: - Tài liệu Đề tài: TÌM HIỂU ERIGONE MODEL CHECKER docx
hi ta chọn mode Accept, mô hình kiểm tra tìm kiếm cho một chu trình chấp nhận (acceptance cycle) – một thuật ngữ kĩ thuật cho một lỗi trong một xác minh của một công thức LTL có chứa kí hiệu (&lt;&gt;) và kết quả trả về là: (Trang 20)
Các biến được in ra màn hình, với trạng thái kết thúc ở dòng thứ 20, với câu lệnh statement = {printf(“%d %d %d\n”, a, b, c)}, - Tài liệu Đề tài: TÌM HIỂU ERIGONE MODEL CHECKER docx
c biến được in ra màn hình, với trạng thái kết thúc ở dòng thứ 20, với câu lệnh statement = {printf(“%d %d %d\n”, a, b, c)}, (Trang 29)
Trên hình ta thấy ở trạng thái thứ 3, 5, 8, 11 kết quả được hiển thị trên màn hình, và kết thúc ở dòng thứ 20. - Tài liệu Đề tài: TÌM HIỂU ERIGONE MODEL CHECKER docx
r ên hình ta thấy ở trạng thái thứ 3, 5, 8, 11 kết quả được hiển thị trên màn hình, và kết thúc ở dòng thứ 20 (Trang 34)
Trace sử lý dữ liệu đầu ra của erigone dưới dạng bảng. Với file second.pml - Tài liệu Đề tài: TÌM HIỂU ERIGONE MODEL CHECKER docx
race sử lý dữ liệu đầu ra của erigone dưới dạng bảng. Với file second.pml (Trang 36)
VMC chuyển đổi file thự thi của chương trình erigone sang mô hình đồ họa được lưu dưới dạng dot, để chuyển đổi file dot sang file ảnh ta dùng graphviz  với hướng dẫn ở trên, ta thử chuyển đổi file chương trình second thành dạng mô  hình để mô hình hóa trạ - Tài liệu Đề tài: TÌM HIỂU ERIGONE MODEL CHECKER docx
chuy ển đổi file thự thi của chương trình erigone sang mô hình đồ họa được lưu dưới dạng dot, để chuyển đổi file dot sang file ảnh ta dùng graphviz với hướng dẫn ở trên, ta thử chuyển đổi file chương trình second thành dạng mô hình để mô hình hóa trạ (Trang 39)

TỪ KHÓA LIÊN QUAN

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

w