Cài đặt thực nghiệm

Một phần của tài liệu các kỹ thuật đặc tả và kiểm chứng cho các bài toán tương tranh (Trang 50)

4.6.1. Kiểm tra tính khả tuần tự trong mơ hình Đọc-Ghi đơn giản

Đầu vào:là một lịch biểuS N = số tiến trình Mỗi dịng có dạng : t x d t:Số hiệu tiến trình: 1,2,..., N x: lock / unlock 00 = 0: unlock 11 = 3: lock (đọc và ghi) d:Đơn vị dữ liệu : 1,2,...

Đầu ra: Lịch biểu này là khả tuần tự hay bất khả tuần tự

T3 T4

T1 T2

BEGIN

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

BEGIN

Input: Lịch biểu

If (Lịch biểu) không hợp lệ Then

Thông báo lịch biểu không hợp lệ

ElseIf (Lịch biểu) khả tuần tự Then

Thông báo lịch biểu là khả tuần tự

Esle Thông báo lịch biểu là bất khả tuần tự END

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Ảnh minh họa cài đặt trong ngơn ngữ DevC++

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 4.6.2.Kiểm tra tính khả tuần tự trong mơ hình Đọc và Đọc-ghi

Đầu vào: là một lịch biểuS N = số tiến trình

Mỗi dịng có dạng : t x d t –Số hiệu tiến trình: 1,2,..., N

x = RLOCK(l) | WLOCK(3) | UNLOCK(0) 01=1: RLOCK – Chỉ đọc

11=3: WLOCK – Đọc và Ghi 00=0: UNLOCK

d –Đơn vị dữ liệu : 1,2,...

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

KếT LUậN

Luận văn đặt ra mục tiêu nghiên cứu về các kỹ thuật đặc tả và kiểm chứng một số bài toán tƣơng tranh đã đạt đƣợc các kết quả chính nhƣ sau:

Về phƣơng diện lý thuyết: đề tài tìm hiểu về các phƣơng pháp đặc tả và kiểm chứng một số bài toán tƣơng tranh. Kết quả nghiên cứu dựa trên cơ sở của kết hợp nhiều lĩnh vực nghiên cứu nhƣ trí tuệ nhân tạo, phƣơng pháp hình thứcvà lĩnh vực mơ phỏng trong cơng nghệ nhƣ kiểm chứng phần mềm.

Về phƣơng diện thực tiễn: luận văn đã thực hiện đặc tả và kiểm chứng tự động một số bài tốn tƣơng tranh ở giai đoạn thiết kế. Trong đó, học viên tập trung kiểm chứng một số bài tốn địi hỏi tính an tồn và bảo mật cao nhƣ trong các hệ thống tƣơng tranh về tài nguyên và điều khiển. Cuối cùng học viên cài đặt chƣơng trình thực nghiệm cho các bài tốn tƣơng tranh nói trên.

Dựa vào mục tiêu, nhiệm vụ của đề tài,một số hƣớng phát triển dự kiến của học viên là:

Tiếp tục nghiên cứu, tìm hiểu và đề xuất các phƣơng pháp đặc tả và kiểm chứng bài toán tƣơng tranh tại các giai đoạn thiết kế và mã nguồn.

Xây dựng chƣơng trình kiểm tra tính khả tuần tự của mơ hình Chỉ đọc- Chỉ ghi.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ (adsbygoogle = window.adsbygoogle || []).push({});

TÀI LIệU THAM KHảO

Tiếng việt

[1] Trịnh Thanh Bình, “Kiểm chứng các thành phần Java tương tranh”, Luận án TS, Đại học công nghệ, 2011.

[2] Jeffrey D. Ullman, Nguyên lý các hệ cơ sở dữ liệu và tri thức, Biên dịch: Trần Đức Quang tập 1, tập 2, NXB Thống kê, 1999.

Tiếng Anh

[3] http://www.doc.ic.ac.uk/ltsa/

[4] http://www.event-b.org/install.html

[5] http://www.doc.ic.ac.uk/~jnm/LTSdocumention/FSP-notation.html [6] Andrew Edmunds. Providing Concurrent Implementations for Event B

Developments. PhD thesis, University of Southampton, March 2010.

URL http://eprints.ecs.soton.ac.uk/20826/

[7] A. Ben Younes and L.J. Ben Ayed,From UML Activity Diagrams to

Event B for the Specification and the Verification of Workflow Applications. In COMPSAC ’08 : Proceedings of the 2008 32nd

Annual IEEE International Computer Software and Applications Conference, URL http://dx.doi.org/10.1109/COMPSAC.2008.217. [8] A. Berard, M. Bidoit, A. Finkel, F. Laroussinie, A. Petit, L. Petrucci,

and P. Schnoebelen,Systems and software verification model-checking

techniques and tools. Springer-Verlag New York, Inc., New York,

NY, USA, 1999. ISBN3-540-41523-8.

[9] Elisabeth Ball and Michael Butler,Event-B Patterns for Specifying

Fault-Tolerance in Multi-agent Interaction. Springer Verlag, Berlin,

Heidelberg, 2009.

[10] Jean-Raymond Abrial. Modeling in Event-B : System and Software

Engineering. Cambridge University Press, New York, NY, USA, 2010.

[11] Jean-Raymond Abrial, The B-Book: Assigning Programs to

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

PHụ LụC A

ĐặC Tả EVENT-B CHO BÀI TOÁN CUNG CấP TIÊU THụ

Sử dụng công cụ RODIN của Event-B học viên đặc tả và chứng minh tự động cho bài tốn cung cấp tiêu thụ nhƣ hình dƣới, Event-B Explorer biểu diễn các máy, ngữ cảnh, sự kiện và các mệnh đề cần chứng minh.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

PHụ LụC B

ĐặC Tả EVENT-B CHO BÀI TỐN ĐọC GHI

Sử dụng cơng cụ RODIN của Event-B học viên đặc tả và chứng minh tự động cho bài tốn đọc ghi nhƣ hình dƣới, Event-B Explorer biểu diễn các máy, ngữ cảnh, sự kiện và các mệnh đề cần chứng minh. (adsbygoogle = window.adsbygoogle || []).push({});

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

PHụ LụC C

ĐặC Tả FSP CHO BÀI TOÁN ĐọC GHI

Sử dụng công cụ LTSA học viên đặc tả và chứng minh tự động cho bài tốn đọc ghi nhƣ hình dƣới, kết quả chứng minh cho thấy hệ thống không bị tắc nghẽn (deadlock).

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

PHụ LụC D

ĐặC Tả FSP CHO BÀI TỐN CUNG CấP TIÊU THụ

Sử dụng cơng cụ LTSA học viên đặc tả và chứng minh tự động cho bài tốn cung cấp tiêu thụ nhƣ hình dƣới, kết quả chứng minh cho thấy hệ thống không bị tắc nghẽn (deadlock).

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

PHụ LụC E

MỘT SỐ ĐOẠN CODE TRONG CHƢƠNG TRÌNH KIỂM TRA TÍNH KHẢ TUẦN TỰ TRONG MƠ HÌNH ĐỌC GHI ĐƠN GIẢN

/* Kiểm tra lịch P có khả tuần tự? Kết quả thực hiện tƣơng đƣơng với một trật tự thực hiện riêng rẽ từng tiến trình? */

bool KhaTuanTu(){

memset(bac, 0, sizeof(bac)); memset(c, 0, sizeof(c)); SI i, j, dt;

SI d[MM]; // Item i dang bi tien trinh d[i] chiem Message(6);

// Lap ma tran ke c. Tinh bac cua dinh memset(d, 0, sizeof(d));

for (i = 1; i <= nn; ++i){ switch(ACT(i)) {

case LOCK: // Tien trinh TRANS(i) xin LOCK du lieu ITEM(i)

if (d[ITEM(i)] != 0) {

// cung d[ITEM(i)] -> TRANS(i) c[d[ITEM(i)]][TRANS(i)] = 1; }

d[ITEM(i)] = TRANS(i); break;

} // switch

} // Hien thi cac canh va tinh bac cua dinh cout << "\n * Cac cung cua do thi: ";

for (i = 1; i <= nt; ++i) { for (j = 1; j <= nt; ++j) if (c[i][j] > 0) {

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

cout << "\n " << i << " -> " << j; ++bac[j]; // so cung den dinh j }

} // Sap Topo

cout << "\n * Lich " << fname

<< " tuong duong voi day cac tien trinh sau: \n * "; for (i = 1; i <= nt; ++i){ // Tim dinh troc

dt = DinhTroc(); if (dt < 0) { (adsbygoogle = window.adsbygoogle || []).push({});

Message(7); return false;

} // Xuat dinh troc cout << " " << dt;

// Nho dinh troc va cac cung di ra for (j = 1; j <= nt; ++j) if (c[dt][j] > 0) --bac[j]; } Message(8); return true; } main(){

File("S1.sc"); // Chu y : luon luon kiem tra tinh hop la truoc if (HopLe()){ /* HaiPha(); */ KhaTuanTu(); } cout << "\n T H E E N D."; cin.get(); return 0; }

Một phần của tài liệu các kỹ thuật đặc tả và kiểm chứng cho các bài toán tương tranh (Trang 50)