Kiểm tra hai mô hình bằng các luật Prolog

Một phần của tài liệu LUẬN VĂN: KIỂM TRA SỰ TINH CHẾ HAI MÔ HÌNH CÓ ÁP DỤNG MẪU THIẾT KẾ doc (Trang 46 - 58)

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

%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 (adsbygoogle = window.adsbygoogle || []).push({});

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.

Một phần của tài liệu LUẬN VĂN: KIỂM TRA SỰ TINH CHẾ HAI MÔ HÌNH CÓ ÁP DỤNG MẪU THIẾT KẾ doc (Trang 46 - 58)