Tái cấu trúc trên biểu đồ lớp của UML

Một phần của tài liệu (LUẬN ÁN TIẾN SĨ) Một số phương pháp kiểm chứng tái cấu trúc phần mềm Luận án TS. Máy tính 624801 (Trang 46 - 49)

Một mơ hình hướng đối tượng thường được biểu diễn bởi một biểu đồ lớp trong UML và thường mô tả các thông tin về cấu trúc tĩnh (static structure) của mơ hình. Từ góc nhìn hướng cấu trúc, một biểu đồ lớp bao gồm hai thành phần chính, Lớp (class) và các mối quan hệ giữa chúng (còn gọi là kết hợp-association). Từ quan điểm hướng ngữ nghĩa, một sơ đồ lớp sẽ

có thêm các ràng buộc (constraints) gắn với cả hai thành phần trên. Tiến trình tái cấu trúc lớp trên biểu đồ trong mơ hình UML đương nhiên ảnh hưởng trực tiếp đến các lớp cũng như các kết hợp của nó. Do đó, khi nghiên cứu bài tốn bảo tồn bất biến trong tái cấu trúc biểu đồ lớp của UML cần phải nghiên cứu sự tác động của tiến trình này trên cả hai thành phần.

3.3.1 Tái cấu trúc các lớp với mối quan hệ phân cấp

Trong tiểu mục này, luận án sẽ trình bày tóm tắt một số phép tốn tái cấu trúc liên quan đến quan hệ phân cấp trong mơ hình hướng đối tượng, bao gồm Folding, Abstraction, Composition, Factoring và Unfolding. Các

phép tốn này được biểu diễn tổng qt trong Hình 3.1 [53].

(1) Folding: Được áp dụng trường hợp hai lớp có quan hệ thừa kế trực tiếp, tuy nhiên, vai trị của lớp cơ sở không thực sự hữu dụng (lớp cơ sở có là một lớp trừu tượng hoặc các phương thức của lớp khơng có nhiều ý nghĩa trong quan hệ phân cấp hiện tại). Khi đó, phép tốn

Folding kết hợp hai lớp này thành một lớp duy nhất nhằm mục tiêu giảm mức độ phân cấp trong biểu đồ.

(2) Abstraction: Được áp dụng trong trường hợp một lớp có một danh sách dài các thuộc tính và phương thức gây nên những khó khăn trong tái sử dụng cũng như bảo trì mơ hình phần mềm. Phép tốnAbstraction

C D E a) Folding C E C' b) Abstraction D C E c) Composition D C D E c) Factoring C' D' C e) Unfolding E C' D'

Hình 3.1: Tái cấu trúc biểu đồ lớp với quan hệ phân cấp trong kế thừa

đã có và xây dựng một mối quan hệ thừa kế trực tiếp giữa lớp cơ sở vừa được tạo ra và phần còn lại của lớp ban đầu.

(3) Composition: Được áp dụng trong trường hợp không muốn sử dụng kỹ thuật đa thừa kế để tránh các xung đột trong lời gọi đến phương thức của các lớp cha. Phép tốn Composition kết hợp các thuộc tính và hành vi của hai lớp khơng có quan hệ kế thừa thành một lớp duy nhất. (4) Factoring: Được áp dụng trong trường hợp loại bỏ các phương thức và

các thuộc tính trùng lặp. Phép tốn Factoring nhóm các thuộc tính và các phương thức chung vào trong một lớp cơ sở, sau đó tạo mối quan hệ kế thừa giữa lớp này với phần còn lại của các lớp ban đầu. (5) Unfolding: Được áp dụng trong trường hợp một lớp có danh sách dài

các thuộc tính. Tuy nhiên, các phương thức của lớp đó chỉ tham chiếu đến một số các thuộc tính nhất điịnh. Phép toánUnfolding thực hiện phân chia hành vi của lớp này, nhóm các phương thức cùng với các thuộc tính mà nó tham chiếu thành các lớp con, sau đó tạo ra mối

quan hệ kế thừa trực tiếp giữa các lớp con này với phần còn lại của lớp ban đầu (các lớp này phát sinh từ việc thực hiện phân vùng các thuộc tính trong hai tập con rời rạc).

3.3.2 Tái cấu trúc các liên kết trong biểu đồ lớp

Quá trình tái cấu trúc biểu đồ lớp khơng chỉ ảnh hưởng đến các thành phần của lớp (thuộc tính và phương thức) mà còn tác động trực tiếp đến Kết hợp (associations) giữa các lớp. Trong tiểu mục này, luận án sẽ trình bày lại kết quả nghiên cứu trước đây liên quan đến quá trình biến đổi của các kết hợp (association) trong tiến trình tái cấu trúc biểu đồ lớp và được minh họa như trong Hình 3.2.

Hình 3.2: Sự biến đổi của các kết hợp trong tái cấu trúc biểu đồ lớp

(1) Thêm một kết hợp truyền ứng (Adding a transitive association): Cho hai kết hợp tồn tại giữa các lớp A và B, B và C. Khi đó, một kết hợp mới giữa các lớp A và C có thể được tạo ra với các thuộc tính thiết kế của quan hệ kết hợp như kiểu của kết hợp (association type), lực lượng của kết hợp (multiplicity) và hướng có thể truyền thơng điệp (navigability direction) của mỗi mấu kết hợp (association end) được xác định thông qua các kết hợp ban đầu [70] (như Hình 3.2a).

(2) Xóa một kết hợp truyền ứng (Deleting a transitive association): Cho các kết hợp biểu diễn mối quan hệ giữa các lớp A,B, các lớp B,C, và các lớp A,C. Vai trò của kết hợp truyền ứng, biểu diễn mối quan hệ giữa A và C có thể khơng quan trọng và được xóa bỏ [70] (như Hình 3.2b).

(3) Thay thế một kết hợp (Substitution of an association): Với một kết hợp

R cho trước, có thể thực hiện thay thế kết hợp này bằng một kết hợp cùng tên nhưng số lượng các ràng buộc là ít hơn. Ví dụ, nếu kết hợp

R với mấu kết hợp E có lực lượng là MULT1 có thể được thay thế bằng mấu kết hợp E nhưng lại có lực lượng là MULT2, ở đâyMULT1 ⊆ MULT2 [24] (như Hình 3.2c).

(4) Tăng cấp một kết hợp (Promotion of an association): Cho một kết hợp

R cùng với các lực lượng là MULT1 (tại mấu kết hợp với lớp A) và MULT2 (tại mấu kết hợp với lớp B), nếu B là một lớp con của lớp

C, khi đó kết hợp R giữa lớp A và lớp B có thể ‘đẩy (promoted)’ lên thành quan hệ giữa lớp A và lớp C [24] (như Hình 3.2d).

(5) Giảm cấp một kết hợp (Demotion of an association:) Cho kết hợp R

với các lực lượng MULT1 (tại mấu kết hợp với lớpA) và MULT2 (tại mấu kết hợp với lớp C), nếu B là một lớp con của lớp C, khi đó kết hợp R có thể được ‘đẩy xuống (demoted)’ trở thành liên kết giữa lớp

B và lớp A [24] (như Hình 3.2e).

(6) Nối các kết hợp một chiều (Joint of unidirectional associations): Cho hai kết hợp một chiều giữa hai lớp A và B nhưng lại có hướng truyền thơng điệp là đối lập nhau. Khi đó có thể nối hai kết hợp này trở thành một kết hợp duy nhất [29] (như Hình 3.2g).

Một phần của tài liệu (LUẬN ÁN TIẾN SĨ) Một số phương pháp kiểm chứng tái cấu trúc phần mềm Luận án TS. Máy tính 624801 (Trang 46 - 49)

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

(132 trang)