3.2. Đặc tả của ATM từ mô hình FSM.
3.2.1. Đặc tả yêu cầu hệ thống.
Automatic teller machines là một hệ thống rút tiền tự động giao tiếp với khách hàng của ngân hàng thông qua màn hình của máy ATM. Khách hàng có thể chọn một
trong bốn loại giao dịch: gửi tiền vào tài khoản, rút tiền, chuyển khoản và kiểm tra số dư trong tài khoản. Những loại giao dịch này có thể được thực hiện đối với hai loại tài khoản là tiết kiệm hoặc vãng lai. Một máy rút tiền tự động mô phỏng (ATM) có một đầu đọc thẻ từ cho đọc một thẻ ATM, với giao diện điều khiển của khách hàng dựa trên bàn phím và màn hình hiển thị của máy ATM cho tương tác với khách hàng, một khe cắm cho phong bì gửi tiền, một người phân phát (dispenser) tiền mặt, một máy in để in hóa đơn của khách hàng, và một khóa được điều khiển vận hành để cho phép một nhà điều hành để bắt đầu hoặc dừng máy. Các ATM sẽ giao tiếp với máy tính của ngân hàng trong một liên kết truyền những thông tin thích hợp.
Khi một khách hàng của ngân hàng đến một trạm ATM rút tiền, máy ATM sẽ nhận thao tác của một khách hàng trong một thời gian. Người khách hàng truy cập máy ATM với thẻ nhựa có chứa mã hóa của số tài khoản cá nhân (PAN) mà chính là khóa để truy cập tệp tài khoản nội bộ của khách hàng, trong đó có tên và thông tin về tài khoản của khách hàng. Nếu số tài khoản cá nhân trùng khớp với thông tin trong tệp khách hàng, hệ thống sẽ báo nhập mã số nhận dạng cá nhân (PIN) cho tài khoản cá nhân. Cả hai đều được gửi đến cho ngân hàng để được xác nhận như là một phần của mỗi giao dịch. Sau đó khách hàng sẽ có thể thực hiện một hoặc nhiều giao dịch mong muốn từ các tùy chọn của màn hình hiển thị.
Tuy nhiên, hệ thống ATM phải có khả năng cung cấp một số dịch vụ cho khách hàng:
Một khách hàng phải có khả năng thực hiện rút tiền mặt từ tài khoản cá nhân thích hợp được liên kết đến thẻ ATM. Sự đồng ý phải được lấy từ bên ngân hàng trước khi tiền mặt được phân phối.
Một khách hàng phải có khả năng để thực hiện một khoản tiền gửi cho ngân hàng được liên kết với thẻ cá nhân, bao gồm tiền mặt, và kiểm tra trong một phong bì. Khách hàng sẽ nhập số tiền của các khoản tiền gửi vào ATM, vấn đề đó được xác minh khi phong bì được lấy ra từ máy bằng một người điều hành trong ngân hàng.
Một khách hàng phải có khả năng thực hiện chuyển tiền giữa hai tài khoản có liên kết đến thẻ.
Một khách hàng phải có khả năng để thực hiện kiểm tra số dư của tài khoản liên quan đến thẻ.
Khách hàng phải có khả năng hủy bỏ một giao dịch được tiến hành bằng cách nhấn phím hủy bỏ (Cancel) thay vì đáp ứng yêu cầu từ máy. Máy ATM sẽ liên lạc với từng giao dịch với ngân hàng và được xác minh rằng đó là sự cho phép của ngân hàng. Thông thường, một giao dịch sẽ được coi là đầy đủ của các ngân hàng một khi nó đã được chấp nhận. Trong trường hợp gửi tiền ở ngân hàng, một thông điệp thứ hai sẽ được gửi đến ngân hàng cho biết rằng khách hàng đã gửi phong bì. (Nếu khách hàng không gửi phong bì trong khoảng thời gian chờ, hoặc thay vào đó nhấn nút hủy
bỏ (cancel), sẽ không có tin nhắn thứ hai được gửi đến ngân hàng và tiền đặt cọc sẽ không được khấu trừ cho khách hàng.)
Nếu các ngân hàng xác định rằng số PIN của khách hàng là không hợp lệ, khách hàng sẽ được yêu cầu để lại nhập mã PIN trước khi có thể tiến hành giao dich. Nếu khách hàng không thành công nhập PIN sau ba lần thử, thẻ sẽ được giữ lại vĩnh viễn bằng máy, và khách hàng sẽ phải liên hệ với ngân hàng để có được nó trở lại.
Nếu giao dịch không thành công vì lý do nào khác hơn là một mã PIN không hợp lệ, máy ATM sẽ hiển thị một giải thích về vấn đề này, và sau đó sẽ yêu cầu khách hàng sẽ làm giao dịch khác.
Máy ATM sẽ cung cấp cho khách hàng với hóa đơn đã in cho mỗi giao dịch thành công, hiển thị ngày tháng, thời gian, vị trí máy, loại giao dịch, tài khoản, số lượng, và kết thúc và số dư có sẵn trong tài khoản đã chuyển cho khách hàng.
Hệ thống máy ATM sẽ có một khóa được điều khiển vận hành để cho phép một nhà điều hành để có thể bắt đầu và dừng phục vụ khách hàng. Sau khi chuyển qua "bật", các nhà điều hành sẽ được yêu cầu xác minh và nhập vào tổng số tiền bằng tay. Máy chỉ có thể được tắt khi nó không phục vụ cho một khách hàng. Khi chuyển đổi được chuyển đến vị trí "off", máy sẽ tắt xuống, do đó các nhà điều hành có thể loại bỏ phong bì tiền gửi và tải lại máy bằng tiền mặt, tờ biên lai,…
Máy ATM cũng sẽ duy trì một bản ghi nội bộ của các giao dịch để tạo thuận lợi cho việc giải quyết sự mơ hồ phát sinh từ một sự thất bại phần cứng ở giữa của một giao dịch. Bản ghi sẽ được thực hiện trong nhật ký khi các máy ATM được khởi động và tắt máy, cho mỗi tin nhắn gửi đến ngân hàng (cùng với phản ứng trở lại, nếu được mong muốn), cho việc phân phát tiền mặt, và cho việc tiếp nhận một phong bì. Các mục bản ghi có thể chứa số thẻ và đồng đô la, nhưng đối với an ninh sẽ không bao giờ chứa một mã PIN.
3.2.2. Xây dựng mô hình FSM của ATM.
Một hình thức cơ bản nhất của một hệ thống, một ca kiểm thử (Test case) là một cặp đơn giản <input, expected outcome>. Trong các hệ thống trạng thái theo định hướng, nơi mà kết quả chương trình phụ thuộc cả vào trạng thái hiện tại của hệ thống và các đầu vào hiện tại, một ca kiểm thử có thể bao gồm một chuỗi các cặp <input, expected outcome>. Một hệ thống chuyển mạch điện thoại và một máy rút tiền tự động ATM là những ví dụ của hệ thống trạng thái theo định hướng. Đối với một máy ATM, một Testcase để kiểm thử các chức năng “Withdraw” được ví dụ như: TC1:< check balance, 600.00 >, < withdraw, “amount?” >, < 300.00,“300.00” >, < check balance, 300.00 >. Ở đây tôi giả sử rằng, người sử dụng nhập giá trị đầu vào “input” có giá trị, chẳng hạn như: Thẻ, số lượng tiền mặt và nhận dạng cá nhân (PIN). Trong ví dụ trên ca kiểm thử TC1: “Check balance và Withdraw” trong bộ thứ nhất , thứ hai và thứ tư đại diện tượng trưng cho các nút nhấn của các phím tương ứng trên bàn phím ATM. Giả sử tài khoản người dùng có 600.00 và người dùng muốn rút một số tiền là 300.00,
với kết quả đầu ra: 300.000 trong bộ thứ 3 tượng trưng cho sự phân phát tiền bởi máy ATM. Sau khi giao dịch rút tiền, người sử dụng chắc chắn rằng số dư còn lại là 300.00. Đối với hệ thống trạng thái theo định hướng, hầu hết các Test Case bao gồm một số hình thức quyết định và thời gian trong việc cung cấp đầu vào cho hệ thống.
Do vậy, kiểm thử dựa trên đặc tả đem lại nhiều lợi thế cho quá trình phát triển phần mềm. Một đặc tả cung cấp cho việc mô tả chính xác các khía cạnh cơ bản của phần mềm trong khi không bao gồm các thông tin chi tiết về hệ thống. Điều này cho phép kiểm thử viên trích xuất các chức năng cơ bản của sản phẩm mà không can thiệp qua các chi tiết không cần thiết. Kiểm thử bằng cách bắt nguồn từ các đặc tả của phần mềm, kiểm thử có thể được đưa ra trước khi có phần mềm. Vì nhiều lỗi xảy ra trong giai đoạn thiết kế, xác định ban đầu có thể giảm thời gian và chi phí phát triển phần mềm. Ngoài ra việc phát triển các ca kiểm thử bắt buộc phải có một cái nhìn chi tiết từ các đặc tả của riêng mình, trong đó có thể cho thấy sự không rõ ràng hoặc không đồng nhất. Việc này, có thể được cố định sớm trong chu kỳ phát triển ở mức chi phí tối thiểu. Máy trạng thái hữu hạn mô tả tốt nhất cho các hành vi động của hệ thống, mô hình hệ thống và kiểm dựa trên mô hình FSM được biểu diễn đồ họa như đồ thị, các trạng thái được đại diện là các node và hướng đi tiếp theo cho quá trình chuyển tiếp như các cạnh và trạng thái.
Từ đặc tả của bài toán mô hình hóa ATM ta có thể biểu diễn mô hình FSM ATM dưới dạng bảng và mô hình FSM chuyển đổi trạng thái của ATM được thể hiện như dưới đây:
Biểu diễn FSM ATM dưới dạng bảng:
Điều kiện (Condition) Kết quả (Effect)
Current
state Input Output Next state
S0 Card (pin, sb,cb) Enter Pin S1
S1 Pin(p), p!=pin
Wrong pin; Re-enter pin; Prompt for pin;
S1
S1
Pin(p), p!=pin Wrong pin;
Eject card;
S8
S2 Select(l), l==e English menu S3
S2 Select(l), l==vi Vietnamese menu S3
S2 Exit Eject card S8
S3 Cancel Eject card S8
S3 Current − S4
S3 Saving − S6
S4 done − S3
S4 Balance(l), l==e English,cb S5
S4 Balance(l), l==vi Vietnamese,cb S5
S4 Deposit(d) cb=cb+d S5
S4 Withdrawal(w) cb=cb-w S5
S5 Print(l), l==e Receipt(English) S4
S5 Print(l), l==vi Receipt(Vietnamese) S4
S6 done − S3
S6 Withdrawal(w) sb=sb-w S7
S6 Deposit(d) sb=sb+d S7
S6 Balance(l), l==e English,sb S7
S6 Balance(l), l==vi Vietnamese,sb S7
S7 Print(l), l==e Receipt(English) S6
S7 Print(l), l==vi Receipt(Vietnamese) S6
Xây dựng mô hình FSM chuyển đổi trạng thái của ATM: