Mã lệnh Promela của tiến trình Customer

Một phần của tài liệu (LUẬN văn THẠC sĩ) kết hợp phương pháp kiểm chứng mô hình và các kỹ thuật kiểm thử phần mềm làm tăng độ tin cậy của hệ thống phần mềm (Trang 64 - 66)

6.2.3. Hình thức hóa và kiểm chứng các yêu cầu hệ thống

Trong phần 6.1, luận văn đã mô tả những yêu cầu của máy ATM, và trong phần 6.2.2 luận văn đã xây dựng lên mô hình máy ATM. Để chứng minh được rằng mô hình đáp ứng được đặc tả của hệ thống, thì luận văn cần hình thức hóa các yêu cầu của hệ thống. Sau đó dùng công cụ SPIN để đánh giá các thuộc tính của hệ thống mà chúng ta mong muốn, khi thuộc tính được biểu diễn bằng công thức LTL. Để đánh giá tính

31 proctype Customer()

32 {

33 byte i;

34 Cus_Logon_Request:

35 do

36 ::CusToATM!i, Operate_Logon, 0, PIN ->

37 if

38 ::ATMToCus?eval(i), Operate_Logon, 0, OkPIN ->

39 printf("You are welcome! \n");

40 goto SelectOperator

41 ::ATMToCus?eval(i), Operate_Logon, 0, NokPIN ->

42 printf("PIN is invalid! \n");

43 goto Cus_Logon_Request

44 ::ATMToCus?eval(i), Operate_Logon, 0, CardLocked ->

45 printf("Card is locked! \n");

46 goto Cus_Logon_Request

47 fi

48 od;

49 SelectOperator:

50 do

51 ::printf("Customer Select Operator: Deposit \n") ->

52 if

53 ::Amount_Deposit = 10

54 ::Amount_Deposit = 20

55 fi;

56 if

57 ::CusToATM!i, Operate_Deposit, Amount_Deposit,

SmbolRequest ->

58 if

59 ::ATMToCus?eval(i), Operate_Deposit, 0,

DepositOK ->

60 printf("Deposit is OK! \n");

61 goto SelectOperator

62 ::ATMToCus?eval(i), Operate_Deposit, 0,

đúng đắn của mô hình máy ATM thì luận văn xây dựng hình thức hóa hai yêu cầu của hệ thống.

Yêu cầu thứ nhất: Khách hàng luôn luôn thực hiện được việc gửi tiền, rút tiền và truy vấn tài khoản, sau khi đăng nhập thành công. Yêu cầu này được mô tả bằng công thức LTL như sau:

(okPIN → (Operate_Withdraw || Operate_Deposit || Operate_BalInq)

# define bankActions (Operate_Withdraw || Operate_Deposit || Operate_BalInq)

never { /* !([] (okPIN -> <> bankActions)) */ T0_init:

if

:: (! ((bankActions)) && (okPIN)) -> goto accept_S4 :: (1) -> goto T0_init

fi; accept_S4:

if

:: (! ((bankActions))) -> goto accept_S4 fi;

}

Yêu cầu thứ hai: Nếu số tiền trong tài khoản lớn hơn hoặc bằng số tiền khách hàng muốn rút, thì khách hàng sẽ rút được tiền. Công thức LTL của yêu cầu trên như sau: ((amount_Balance >= amount_Withdraw) → withdrawOK)

# define payment (amount_Balance >= amount_Withdraw) never { /* !([] (payment -> <> withdrawOK)) */ T0_init:

if

:: (! ((withdrawOK)) && (payment)) -> goto accept_S4 :: (1) -> goto T0_init

fi;

accept_S4: if

:: (! ((withdrawOK))) -> goto accept_S4 fi;

}

Luận văn dùng SPIN để kiểm chứng mô hình và các đặc tả của hệ thống để đưa ra kết luận là mô hình đã thỏa mãn đặc tả của hệ thống.

Với yêu cầu đặc tả đầu tiên, mô hình hệ thống thoả mãn được đặc tả. Kết quả kiểm chứng bằng SPIN được thể hiện trong hình 6.7.

Một phần của tài liệu (LUẬN văn THẠC sĩ) kết hợp phương pháp kiểm chứng mô hình và các kỹ thuật kiểm thử phần mềm làm tăng độ tin cậy của hệ thống phần mềm (Trang 64 - 66)

Tải bản đầy đủ (PDF)

(79 trang)