Lấy các thành phần trong tài liệu XMI

Một phần của tài liệu LUẬN VĂN:KIỂM CHỨNG CÁC GIAO THỨC BẰNG AOP pdf (Trang 42 - 45)

1. 4 Cấu trúc khóa luận

5.1.1 Lấy các thành phần trong tài liệu XMI

Truy xuất các đường đời (Lifeline)

Một đường đời trong tệp XMI được biểu diễn bởi phần tử có thẻ là <lifeline> trong đó có nhiều thuộc tính, ta chỉ quan tầm tới hai thuộc tính là id và name. Ta sẽ lưu hai thuộc tính này trong đó name thì ta chỉ quan tâm tới tên lớp (nhớ lại quy tắc tên một đường đời là objectName:ClassName ) tức là sau dấu hai chấm còn bỏ đi tên đối tượng.

Vì trong một biểu đồ có thể có nhiều đường đời có cùng tên lớp nhưng khác nhau tên đối tượng do vậy, mỗi khi ta truy xuất thêm một đường đời mới ta lại phải kiểm tra xem trước đó đã có đường đời nào cùng lớp với nó hay chưa nếu có rồi thì tên đối tượng sẽ được đặt theo quy tắc sau: object1, object2, …

Sau khi lưu hết các phần tử này, kết quả ta sẽ có được một dãy các đường đời đã vẽ trên biểu đồ.

Truy xuất các thông điệp (Message)

Một thông điệp được biểu diễn bởi phần tử có thẻ là <message> trong đó ta quan tâm tới thuộc tính id, name, sendEvent, receiveEvent và messageSort. Tên của thuộc tính ta sẽ chỉ lấy lại tên của phương thức còn bỏ đi phần tham số. Từ hai thuộc tính sendEvent

43

và receiveEvent, thông qua phần tử <fragment> mà có thuộc tính xmi:type= “uml:MessageOccurrenceSpecification ta sẽ tìm ra đường đời nguồn và đích của thông điệp đấy. Từ thuộc tính messageSort ta sẽ biết được thông điệp đấy thuộc loại nào trong bảy loại thông điệp đã nêu trên.

Kết quả ta sẽ thu được một dãy các thông điệp. Tuy nhiên có một vấn đề là thứ tự các thông điệp sẽ là thông điệp nào được vẽ trước sẽ có thứ tự trước chứ không theo thứ tự thông điệp bên trên sẽ có thứ tự trước. Do vậy ta phải dựa vào tọa độ của các thông điệp để sắp xếp lại danh sách các thông điệp theo đúng trình tự của chúng trên biểu đồ. Thủ tục thực hiện là ta phải tìm trong phần tử có thẻ <guiDiagramLink> id của thông điệp sau đó tính tọa độ rồi sắp xếp lại theo thứ tự các tọa độ. Cuối cùng ta sẽ có một dãy các thông điệp theo đúng thứ tự mong muốn.

Truy xuất các đoạn gộp( Combinded Fragment)

Các đoạn gộp chỉ có một Interaction Operand sẽ được truy xuất như sau. Giả sử với đoạn gộp có Interaction Operator là loop thì trong tệp XMI sẽ nằm trong phần tử có thẻ <fragment> mà có thuộc tính xmi:type=“uml:CombinedFragment” và thuộc tính interactionOperator= “loop”. Từ phần tử này ta sẽ lấy ra thuộc tính id và tìm trong phần diagrams xem phần tử <guiDiagramGuiLink> nào có thuộc tính guiLink_Element trùng với id của loop. Qua đó, loop sẽ có các tọa độ về vị trí, chiều cao, chiều rộng. Rồi ta sẽ tìm xem các thông điệp nào có tọa độ nằm trong loop thì sẽ lưu lại, đánh dấu thông điệp đầu tiên và cuối cùng bên trong loop. Ta cần lưu thêm thông điệp ngay sau loop mà không phải là một thông điệp trả lời vì cần thiết cho việc xây dựng máy trạng thái sau này.

Những đoạn gộp chỉ có một Interaction Operand khác như Option và Break cũng làm tương tự như với loop chỉ khác là ở thuộc tính interactionOperator bây giờ sẽ là “opt” hay “break”.

OPT

Break

Đối với những đoạn gộp có nhiều Interaction Operand như Alternative thì bước đầu tiên ta cũng làm tương tự như với bên trên với thuộc tính interactionOperator=“alt”. Sau đó khi lấy các tọa độ về kích thước thì ta phải lấy thêm tọa độ của các đường thẳng phân cách giữa các Interaction Operand. Từ đấy ta sẽ xác định các thông điệp bên trong đoạn

45

gộp thuộc về Operand nào, thông điệp nào là mở đầu và thông điệp nào là kết thúc Operand đó. Ngoài ra ta phải xác định thêm thông điệp đầu tiên không phải thông điệp trả lời sau đoạn gộp này.

Một phần của tài liệu LUẬN VĂN:KIỂM CHỨNG CÁC GIAO THỨC BẰNG AOP pdf (Trang 42 - 45)

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

(51 trang)