1. 4 Cấu trúc khóa luận
5.2. Sinh mã kiểm chứng giao thức AnBm
47
Việc kiểm chứng giao thức AnBm có các vấn đề sau :
Thứ nhất Kiểm chứng việc thực hiện m lần gọi phương thức A và n lần phương thức B. Việc này được thực hiện dễ dàng bằng cách đặt 2 biến nguyên counta và countb, biến counta được tăng l sau khi gọi xong phương thức A, countb được tăng thêm 1 sau khi gọi phương thức B. Việc kiểm tra gọi n lần phương thức B chỉ được thực hiện khi đã gọi n lần phương thức A. after(): pc_A(){ counta=0; } after(): pc_B(){ countb=0; }
Thứ 2: Kiểm chứng việc gọi liên tiếp m lần phương thức A và liên tiếp n lần phương thức B. Việc này được thực hiện như sau, đầu tiên, gọi 2 biến checka và checkb, khởi tạo giá trị ban đầu cho 2 biến này = 0. Hai biến này được tăng lên 1 khi một phương thức bất kì được gọi. pointcut pc() : call(* *.*(*)); before() : pc() { checka++; checkb++; }
checka bằng 0 khi phương thức A được gọi, checkb bằng 0 khi phương thức B được gọi. after(): pc_A(){ checka=0; } after(): pc_B(){ checkb=0; }
Bằng cách này ta biết được sự liên tiếp khi gọi các phương thức A và B. Chỉ có ở vị trí khi bắt đầu gọi đến phương thức A, khi đó checka là khác 0, nhưng counta chắc chắn là bằng 0. Vì vậy nên khi counta bằng 0 và checka khác 0 thì vẫn đúng. Ngược lại couta khác 0 và checka khác 0 là sai.
System.out.println("Error");
result = false;
}
Biến boolean result được khởi tạo là true, biến này được gán bằng false khi các điều kiện không được thỏa mãn. Khi kết thúc chương trình, nếu biến result = true thì giao thức đã kiểm tra là đúng, ngược lại nếu result = false thì giao thức đã kiểm chứng sai.
Kiểm chứng tính đúng đắn trong biểu đồ tuần tự(Sequence diagram) Việc kiểm chứng biểu đồ tuần tự bao gồm :
- Kiểm chứng việc đặc tả trong biểu đồ tuần tự có đúng với khi cài đặt không. - Kiểm tra tính đúng đắn khi cài đặt, có cả tiền điều kiện và hậu điều kiện.
Việc kiểm chứng đặc tả trong biểu đồ tuần tự có đúng với đặc tả không là việc kiểm chứng việc gọi lần lượt các phương thức sao cho đúng đắn. Tuân thủ quy tắc trong khi cài đặt. Việc kiểm chứng này được thực hiện bằng thuật toán sau đây :
- Đặt các biến state nguyên là biến trạng thái. Trong biểu đồ có n phương thức thì sẽ có n+1 trạng thái bao gồm trạng thái đầu và trạng thái kết thúc.
- Sau mỗi lời gọi phương thức thì đặt cho nó ở một trạng thái.
- Hàm getBeforeState(Event e) sẽ lấy ra tất cả các trạng thái mà có thể gọi tới phương thức e.
- Kiểm tra các tiền điều kiện ràng buộc và hậu điều kiện ràng buộc đối với mỗi phương thức.
- lấy và so sánh các trạng thái của từng trạng thái trong biểu đồ xem có đúng với đúng với trạng thái thực của nó không. Dùng mã aspect để kiểm chứng.
49
Chương 6 Kết luận