Những khái niệm cơ bản về Prolog đã được chúng tôi trình bày trong chương trước, ở đây chúng tôi chỉ xin gới thiệu về một số luật điển hình được sử dụng để so sánh hai Owl Ontology.
Những luật sử dụng để kiểm tra sự tương đương của hai toán tử (operator):
o Luật sử đụng để kiểm tra một tham biến P có thuộc mô hình 1 hay không: Một
tham biến thuộc mô hình 1 nếu nó thuộc một toán tử nào đó trong mô hình 1
parameter_in_model1(P):-
operator(O), %Voi Toan tu O bat ky
operator_in_model1(O), %Toan tu O thuoc mo hinh 1
operator_has_seq_parameter(O, P),!. %Toan tu O chua
%tham so P
o Tương tự ta có luật kiểm tra một tham biến P có thuộc mô hình 2 hay không
parameter_in_model2(P):-
%parameter(P),
operator(O),
operator_in_model2(O),
operator_has_seq_parameter(O, P),!.
o Luật kiểm tra một tập hợp tham số của một toán tử O1 trong mô hình 1 không có
trong tập hợp tham số của toán tử O2 trong mô hình 2
Tập hợp các tham số T1 của toán tử O1 trong mô hình 1 không có trong tập hợp tham số T2 trong toán tử O2 nếu tồn tại một tham số P1 thuộc T1 và P2 thuộc mô hình 2 mà P2 tương đương với P1 nhưng P2 không thuộc T2
38
parameters_set_of_operator1_model1_not_in_opeartor2_model2(O1, O2):-
operator(O1), operator(O2), %O1, O2 la cac toan tu
operator_in_model1(O1), operator_has_isabstract(O1,
false), %O1 thuoc mo hinh 1, O1 la toan tu cu the
operator_in_model2(O2), operator_has_isabstract(O2,
false), %O2 thuoc mo hinh 2 va O2 la toan tu cu the
operator_has_seq_parameter(O1, P1), %O1 co tham so P1
%parameter(P2),
%parameter_in_model2(P2),%Tham so P2 thuoc mo hinh 2
equivalent_parameters(P1, P2),%P1 tuong duong P2
not(operator_has_seq_parameter(O2, P2)),!.
%P2 khong thuoc O2
o Tương tự ta có luật kiểm tra tập hợp tham số của một toán tử O2 trong mô hình 2
không có trong tập hợp tham số của toán tử O1 trong mô hình 1
parameters_set_of_operator2_model2_not_in_opeartor1_model1(O1, O2):- operator(O1), operator(O2), operator_in_model1(O1), operator_has_isabstract(O1, false), operator_in_model2(O2), operator_has_isabstract(O2, false), operator_has_seq_parameter(O2, P2), %parameter(P1), %parameter_in_model1(P1), equivalent_parameters(P1, P2), not(operator_has_seq_parameter(O1, P1)),!.
39
o Luật kiểm tra xem hai toán tử thuộc hai mô hình có cùng tập hơp tham số hay
không:
Hai toán tử O1 thuộc mô hình 1 và O2 thuộc mô hình 2 có cùng tập hợp tham số nếu tập tham số của O1 chứa trong tập tham số của O2 và ngược lại. Điều này tương đương với không xảy ra việc tập hợp các tham số của O1 không trong tập tham số của O2 và và tập tham số của O2 không có trong tập tham số của O1
operators_has_not_same_parameters(O1, O2):- operator(O1), operator(O2), parameters_set_of_operator1_model1_not_in_opeartor2_mod el2(O1, O2); operator(O1), operator(O2), parameters_set_of_operator2_model2_not_in_opeartor1_mod el1(O1, O2).
o Luật kiểm tra hai toán tử thuộc hai mô hình có cùng chung tập hợp những tham số
hay không: Luật này là phủ định của luật trên
operator_has_same_parameters(O1, O2):-
operator(O1), operator(O2),
operator_in_model1(O1), operator_in_model2(O2),
not(operators_has_not_same_parameters(O1, O2)).
o Luật kiểm tra sự tương đương của toán tử O1 thuộc mô hình 1 và O2 thuộc mô
hình 2:
Hai toán tử O1 và O2 tương đương nhau khi và chỉ khi chúng có cùng tên, kiểu (trừu tượng hay cụ thể), cùng được triển khai giống nhau trong các lớp chứa nó hay không, và có cùng tập hợp những tham số
40 operator(O1), %O1 la mot toan tu
operator_in_model1(O1), %O1 thuoc mo hinh 1
operator(O2), %O2 la mot toan tu
operator_in_model2(O2), %O2 thuoc mo hinh 2
operator_has_name(O1, X), %O1 co ten la X
operator_has_name(O2, Y), %O2 co ten Y
X == Y, %X bang Y (hai toan tu cung ten)
operator_has_isabstract(O1, E),
operator_has_isabstract(O2, F),
E == F, %hai toan tu co cung la truu tuong hoac cu the
operator_has_commonality(O1, G),
operator_has_commonality(O2, H),
G == H, %O1, O2 deu duoc trien khai giong nhau hoac
%khong giong nhau trong cac lop chua no
operator_has_same_parameters(O1, O2),!.
41
4.4.2. Một số trƣờng hợp kiểm thử
Trƣờng hợp 1
Input là hai đặt tả của hai mô hình lớp sau dưới dạng OWL Ontology
Mô hình 1:
42
Kết quả
Hình 4.9: Kết quả kiểm thử 1
Kết quả trả về của chương trình với hai mô hình trên là Đúng (True) – Hai mô hình là tương đương
Nhận xét: Kết quả trả về là hợp lý với thực tiễn, biểu diễn cấu trúc lớp một cách rõ ràng.
43
Trƣờng hợp 2
Input là hai đặt tả của hai mô hình lớp sau dưới dạng OWL Ontology
Mô hình 1:
44
Kết quả
Hình 4.10: Kết quả kiểm thử 2
Kết quả trả về của chương trình với hai mô hình trên là Sai (false) – Hai mô hình là không tương đương về cả mặt cấu trúc và tính đảm bảo các hành vi của các lớp
Nhận xét: Kết quả trả về là hợp lý với thực tiễn, biểu diễn cấu trúc lớp một cách rõ ràng. Những điểm giống và khác nhau được hiển thị giúp người sử dụng dễ dàng phát hiện ra.
45
Trƣờng hợp 3
Input là hai đặt tả của hai mô hình lớp sau dưới dạng OWL Ontology
Mô hình 1:
46
Kết quả
Hình 4.11: Kết quả kiểm thử 3
Kết quả trả về của chương trình với hai mô hình trên là Sai (false) – Hai mô hình là không tương đương về mặt cấu trúc nhưng vẫn đảm bảo về mặt hành vi của các lớp
47
CHƯƠNG 5: TỔNG KẾT
5.1. Tổng kết quá trình thực hiện và kết quả đặt được
Với yêu cầu đặt ra ban đầu của đề tài “Kiểm tra sự tinh chế hai mô hình có áp dụng mẫu thiết kế”, chúng tôi đã tiến hành khảo sát hiện trạng, lựa chọn phương án, phân tích thiết kế và cài đặt chương trình thử nghiệm. Kết quả đạt được như sau:
5.1.1. Về mặt khảo sát, lựa chọn phƣơng án và phân tích thiết kế
Chúng tôi đã khảo sát và phân tích thực trạng việc so sánh giữa hai OWL Ontology: Những chương trình hỗ trợ việc so sánh hai OWL Ontology đã tồn tại, những ưu điểm và những vấn đề cần khắc phục
Sau một thời gian nghiên cứu và tìm ra phương án để thực hiện đề tài, chúng tôi đã tìm ra một phương án khả quan để thực hiện việc so sánh hai OWL Ontology (biểu diễn hai biểu đồ lớp UML): Đó là việc tìm ra phương án để thực hiện truy vấn OWL Ontology và thực hiện so sánh hai mô hình bằng cách sử dụng các luật Prolog.
Chúng tôi đã cố gắng phân tích yêu cầu người dụng một cách đầy đủ nhất có thể, để thực hiện việc thiết kế một công cụ so sánh hai OWL Ontology đơn giản nhưng hiệu quả trên cơ sở phát huy những ưu điểm của những công cụ đã có và khắc phục những thiếu sót mà chúng gặp phải.
5.1.2. Về mặt cài đặt và kiểm thử
Sau một thời gian thực hiện cài đặt, công cụ đã được cài đặt một cách thành công. Công cụ đã đặt được những gì mày trong giai đoạn thiết kế đặt ra, đó là việc so sánh cụ thể những chi tiết sử dụng để đặc tả biểu đồ lớp trong hai OWL Ontology, việc hiển thị những chi tiết được so sánh theo đúng cấu trúc của một biểu đồ lớp từ đó giúp người dùng dễ phát hiện những sai sót, bên cạnh đó công cụ cũng đặt được mục đích quan trọng mà những công cụ trước chưa đặt được, đó là việc so sánh về mặt cấu trúc giữa hai OWL Ontology. Đó là điểm mấu chốt trong việc so sánh hai phiên bản của một biểu đồ lớp (trước và sau khi áp dụng mẫu thiết kế hợp nhất).
48
5.2. Hướng phát triển
Hiện tại Công cụ kiểm tra kiểm tra sự tinh chế hai mô hình có áp dụng mẫu thiết kế giữa hai mô hình UML mới chỉ dừng lại ở việc kiểm tra, và chỉ ra sự tương đương hay không giữa những thành phần của hai biểu đồ lớp trong UML cũng như việc thỏa mãn cấu trúc mẫu. Song với những gì cong cụ đã đạt được hiện tại, trong tương lai công cụ hoàn toàn có thể tiến xa hơn với việc so sánh hai mô hình bất kỳ trong UML, với một giao diện tốt hơn, hay thậm trí là một chương trình tinh chế tự động một biểu đồ trong UML.
49
TÀI LIỆU THAM KHẢO
[1] Bogumila Hnatkowska, Zbigniew Huzar, Lech Tuzinkiewicz. Refinement of UML Collaborations. Institute of Applied Informatics, Wrocław University of Technology [2] Cedric Bouhours, Herve Leblanc, Christian Percebois. Alternative Models for Structural Design Patterns. Universite PaulSabatier.
[3] Klaus Bergner, Andreas Rausch, Marc Sihling, Alexander Vilbig. Structuring and
Refinement of Class Diagrams. D-80290 Munchen, Germany, 1st June 1998
[4] Patrick Blackburn, Johan Bos and Kristina Striegnitz. Learn Prolog Now [5] Bruce Eckel. Thinking in Java
[6] Website: http://protege.stanford.edu/plugins/owl/api/guide.html
[7] Trần Tiến Dũng. Giáo trình lý thuyết và bài tập Java. Nxb Lao động Xã Hội [8] TS. Phan Huy Khánh. Lập trình logic trong Prolog
[9] Trần Đình Quế, Nguyễn Mạnh Sơn. Phân tích thiết kế hệ thống thông tin. Học viện bưu chính viễn thông.