Kiểm chứng bất biến sử dụng AOP

Một phần của tài liệu Nghiên cứu về kiểm chứng bất biến của đối tượng sử dụng lập trình hướng khía cạnh (Trang 58)

Xuất phát từ hệ thống cần kiểm chứng đã được mô hình hóa thành các đặc tả UML và các yêu cầu ràng buộc với hệ thống được biểu diễn bằng các biểu thức OCL. Trong [23, 3] đã đề xuất phương pháp sử dụng kỹ thuật AOP để kiểm chứng các bất biến của các đối tượng Java tại thời điểm thực thi bao gồm kiểm chứng bất biến kết hợp và bất biến liên kết. Tuy nhiên trong [23, 3] chưa đề cập đến vấn đề thừa kế đó là kiểm chứng bất biến của các đối tượng ứng với các lớp con được thừa kế bên dưới.

Phương pháp kiểm chứng bất biến sử dụng AOP lợi dụng tính thực thi cắt ngang để đan kết mã kiểm chứng vào các vị trị cần thiết nhằm kiểm tra giá trị của thuộc tính cần kiểm tra có vi phạm các ràng buộc được mô tả trong OCL hay không. Như được mô tả trong hình 3.3, mã nguồn Java của chương trình chính được phát triển độc lập dựa trên các đặc tả UML của hệ thống. Các aspect kiểm chứng đồng thời được tạo ra một cách độc lập dựa trên các bất biến được mô tả trong các ràng buộc OCL. Sau đó sử dụng trình biên dịch để đan kết các aspect kiểm chứng vào mã nguồn để tạo ra hệ thống cuối cùng chứa các đoạn mã có thể tự kiểm chứng được (self-verifying code).

Trong quá trình thực thi, bất cứ khi nào có sự vi phạm ràng buộc được mô tả trong OCL chương trình sẽ đưa ra thông báo hoặc lưu vết lại.

Hình 3.3. Quy trình kiểm chứng bất biến

Các bất biến thường bị vi phạm khi các giá trị của các thuộc tính của các đối tượng bị thay đổi nên các joint point cần kiểm chứng là field set joint point [11, 13] có dạng set(FieldSignature). Do vậy, bất cứ khi nào xảy ra việc gán giá trị cho thuộc tính thì loại joint point này sẽ được thỏa và các advice kiểm chứng tương ứng sẽ được thực thi để kiểm tra sự thay đổi của các giá trị này. Đối với một đối tượng, có bao nhiêu thuộc tính cần kiểm tra ràng buộc thì cần tạo ra bấy nhiêu pointcut cho các field set join point tương ứng. Với mỗi pointcut đó, cần viết các đoạn mã advice nhằm kiểm tra xem sự thay đổi giá trị của các thuộc tính tương ứng đó có thỏa mãn các ràng buộc đã đưa ra trong OCL hay không.

Một phần của tài liệu Nghiên cứu về kiểm chứng bất biến của đối tượng sử dụng lập trình hướng khía cạnh (Trang 58)