Kết quả thử nghiệm

Một phần của tài liệu đồ án tốt nghiệp ứng dụng relational interface cho java (Trang 53 - 58)

CHƯƠNG 5 : CÀI ĐẶT VÀ THỬ NGHIỆM

5.3 Kết quả thử nghiệm

5.3.1 Phân tích file mã nguồn

Từ dữ liệu thử nghiệm trên, ta sử dụng cơng cụ để phân tích, tách file nguồn này những phương thức, thuộc tính của lớp. Kết quả thực nghiệm của quá trình này như sau:

Hình 5.4: Kết quả thử nghiệm 5.3.1 đối với hàm main

Hình 5.5: Kết quả thử nghiệm 5.3.1 đối với hàm cong

Hình 5.7: Kết quả thử nghiệm 5.3.1 đối với hàm nhan

Hình 5.8: Kết quả thử nghiệm 5.3.1 đối với hàm chia

Hình 5.9: Kết quả thử nghiệm 5.3.1 đối với hàm triTuyetDoi

Trong đó: Method: là tên phương thức, Visibility: là mức độ truy cập, Type là kiểu của phương thức, Parameter là các tham chiếu truyền vào. Content: nội dung của phương thức. Như vậy, công cụ đã thực hiện việc phân tích nội dung file nguồn đúng, tốt.

5.3.2 Chuyển những phương thức này thành relational interface

Với mỗi phương thức như trên, ta sử dụng công cụ để tiến hành chuyển đổi chúng sang relational interface, xem xét kết quả chuyển đổi như sau:

Hình 5.10: Kết quả thử nghiệm 5.3.2 với hàm cong

Đối với hàm tru, ta có interface Itru = ({x3, x4}, {y2}, y2 = x3 – x4)

Hình 5.11: Kết quả thử nghiệm 5.3.2 đối với hàm tru

Đối với hàm nhan, ta có interface Inhan = ({x5, x6}, {y3}, y3 = x5 * x6)

Hình 5.12: Kết quả thử nghiệm 5.3.2 đối với hàm nhan

Đối với hàm chia, ta có interface Ichia = ({x7, x8}, {y4}, x8 != 0 ∧ y4 = x7 / x8)

Hình 5.13: Kết quả thử nghiệm 5.3.2 đối với hàm chia

Đối với hàm triTuyetDoi, ta có interface Ittd = ({x9}, {y5}, x9 ≥ 0 ∧ y5 = x9 ∨ (!x9 ≤ 0) ∧ y5 = - x9)

Trong đó: Name: tên interface, Inputs: là tập input, Ouput: là tập output, Relation là quan hệ giữa input và output.

Như vậy, công cụ đã tiến hành chuyển đổi đúng mỗi phương thức ở trên thành các interface tương ứng.

5.3.3 Kết hợp các interface

Bước cuối cùng, ta sẽ sử dụng công cụ để tiến hành việc kết hợp các interface Icong, Itru, Inhan, Ichia, Ittd lại với nhau theo thứ tự kết hợp được đưa ra ở hàm main. Ở đây, ta có 2 phép kết hợp là: chia(cong(a, b), tru(a, b)) và triTuyetDoi(tru(a, b))

result1 = chia(cong(a, b), tru(a, b)); Với: Icong = ({x1, x2}, {y1}, y1 = x1 + x2) Itru = ({x3, x4}, {y2}, y2 = x3 – x4) Inhan = ({x5, x6}, {y3}, y3 = x5 * x6) Ichia = ({x7, x8}, {y4}, x8 != 0 ∧ y4 = x7 / x8) Ittd = ({x9}, {y5}, x9 ≥ 0 ∧ y5 = x9 ∨ (!x9 ≤ 0) ∧ y5 = - x9)

Đối với phép kết hợp chia(cong(a, b), tru(a, b))

Hình 5.15: Biểu đồ interface cho kết hợp chia(cong(a, b), tru(a, b))

Từ biểu đồ ở hình 23 ta có phép kết hợp: Icong Itru Ichia x1 x2 y1 y2 x3 x4 x7 x8 y4

(θ1 ∪ θ2)((Icong || Itru) , Ichia)

Trong đó, θ1 ≔ {y1, x7} và θ2 ≔ {y2, x8}. Định nghĩa θ3 ≔ θ1 ∪ θ2. Bằng phép kết hợp song song giữa Icong và Itru ta có:

Icong || Itru = ({x1, x2, x3, x4}, {y1, y2}, y1 = x1 + x2, y2 = x3 – x4)

Mặt khác: in(Ichia) ≡ x8 != 0. Do đó, với θ3((Icong || Itru) , Ichia), ta có:

Φ ≔ (y1 = x1 + x2 ∧ y2 = x3 – x4 ∧ y1 = x7, y2 = x8) → x8 != 0.

Rút gọn đi, ta được:

∀ y1, y2, x7, x8 : Φ ≡ x3 – x4 != 0.

Do vậy: θ3((Icong || Itru) , Ichia) = ({x1, x2, x3, x4}, {y1, y2, y4, x7, x8}, y1 = x1 + x2 ∧ y2 =

x3 - x4 ∧ y1 = x7 ∧ y2 = x8 ∧ x8 != 0 ∧ y4 = x7 / x8 ∧ x3 – x4 != 0).

Sau đây, ta sẽ xem xét kết quả mà quá trình kết hợp tự động của cơng cụ:

Hình 5.16: Kết quả thử nghiệm 5.3.3 đối với hàm main

Như vậy, interface sau khi được kết hợp tự động giống với interface mà ta đã tính tốn ở trên.

5.3.4 Dự đốn kết quả:

Ta có: θ3((Icong || Itru) , Ichia) = ({x1, x2, x3, x4}, {y1, y2, y4, x7, x8}, y1 = x1 + x2 ∧ y2 =

x3 - x4 ∧ y1 = x7 ∧ y2 = x8 ∧ x8 != 0 ∧ y4 = x7 / x8 ∧ x3 – x4 != 0) (*).

Quay trở lại với đoạn mã trong hàm main: result1 = chia(cong(a, b), tru(a, b)); Ở đây, x1 = x3 = a, x2 = x4 = b.

Với a = 4, b = 2, ta có:

result1 = 3;

Từ (*), với x1 = x3 = 4, x2 = x4 = 2, ta có:

y1 = 6, y2 = 2, x7 = 6, x8 = 2, x8 = 2 != 0, y4 = 3, x3 – x4 = 2 != 0.

Do vậy phép kết hợp này là hoàn toàn thỏa mãn.

Với a = 2, b = 2, khi biên dịch, chương trình sẽ “ném” ra một ngoại lệ. Tức là phép tính khơng thỏa mãn.

Từ (*), với x1 = x3 = 2, x2 = x4 = 2, ta có:

y1 = 4, y2 = 0, x7 = 4, x8 = 0, y4 = 3, x8 = 0 != 0, x3 – x4 = 0 != 0.

Trong trường hợp này, do 0 != 0 ≔ false, phép kết hợp này là không thỏa mãn. Như vậy, thông qua interface sau khi kết hợp, ta có thể dự đốn chính xác được kết quả trả về của việc kết hợp các thành phần, vì interface mới tạo ra vẫn giữ nguyên được các tính chất của interface thành phần.

Một phần của tài liệu đồ án tốt nghiệp ứng dụng relational interface cho java (Trang 53 - 58)

Tải bản đầy đủ (DOC)

(62 trang)
w