Thay đổi với UML

Một phần của tài liệu LUẬN VĂN: TÌM HIỂU VỀ TIẾP CẬN THEME VÀ ỨNG DỤNG CỦA CÁCH TIẾP CẬN VÀO XÂY DỰNG HỆ THỐNG ĐIỆN THOẠI pdf (Trang 39 - 43)

3.2.2.1 Hành vi rosscutting và template

Chuẩn UML có các mô hình hữu ích cho việc xác định hành vi cộng tác, ta có thể sử dụng chúng trong Theme/UML. Sử dụng lược đồ tuần tự để chỉ ra hành vi cắt ngang xuất hiện liên quan đến hành vi bị cắt ngang. Khi hành vi thực xảy ra, kéo theo các hành vi khác trong biểu đồ tuần tự cũng được thi hành theo tuần tự được chỉ ra trong biểu đồ. Trong lược đồ tuần tự, hành vi thực tham chiếu tới template.

Cần phân biệt giữa hoạt động mà thay thế template (kích hoạt sự kết hợp hành vi của template và hành vi crosscutting) và sự thi hành thực của hoạt động thay thế (kích hoạt chuỗi hành vi trong lược đồ tuần tự). Thêm _do_ vào trước tên hoạt động thay thế để chỉ ra sự thi hành thật của nó trong biểu đồ tuần tự, khi đó nó chỉ ra hoạt động là một template trong biểu đồ.

Hình 3-5 Ký pháp cho hành vi crosscutting

Hình 3-5 minh họa một biểu đồ tuần tự cho template <loggedClass.loggedOp> của theme log. Khi một hoạt động được ghi log cụ thể (thay thế cho loggedClass.loggedOp) trong theme base được bắt đầu, sẽ có một method LogFile.write() được gọi để ghi lại thông tin về hoạt động đó, sau đó nó sẽ được thực thi, sau khi nó thực thi xong thì LogFile.write() method lại được gọi để ghi lại thông tin mới về hoạt động. Sự cắt ngang của hành vi crosscutting có thể xảy ra: before (trước), after (sau) hoặc around (bao quanh) khi hành vi thực xảy ra, trong ví dụ này log crosscutting được kích hoạt trước và sau khi hảnh vi thực xảy ra.

33

3.2.2.2 Giới hạn luồng điều khiển cho hành vi kích hoạt

Trong một số trường hợp, bạn muốn giới hạn hành vi thực trở thành một kích hoạt chỉ khi nó thi hành trong luồng điều khiển của hành vi khác. Minh họa trong hình 3-6, op2(..) kích hoạt hành vi crosscutting. Tuy nhiên nó được xác định trong luồng điểu khiển của _do_op1(..), có nghĩa là op2(..) trở thành kích hoạt cho hành vi cắt ngang before() và after() chỉ khi nó xuất hiện trong luồng điều khiển của _do_op1(..).

Hình 3-6 Trigger trong luồng điều khiển cụ thể

3.2.2.3 Tham số operation template

Bạn có thể nhận thấy tham số “..” được chỉ ra trong op1(..) và op2(..) trong các ví dụ trước. Điều này chỉ ra rằng một hoạt động của bất kỳ một signature (hành vi kích hoạt ở ngoài crosscutting) có thể thay thế template. Các đặc điểm tham số liên quan tới phạm vi mà hoạt động thay thế được thực hiện.

Op() hoạt động thay thế không cần có tham số.

Op(..) hoạt động thay thế có thể có bất kỳ dấu hiệu nào.

Op(..,Type,..) hoạt động thay thế phải có một tham số kiểu Type trong danh sách tham số, nó được yêu cầu bởi chuỗi hành vi cắt ngang.

3.2.2.4 Danh sách Template cho theme

class mà chứa các phần tử (operation và attribute) được mô hình tham số template thì class đó được gọi là class template. Trong Theme/UML một theme có thể có nhiều template mà là kiểu class nên vị trí đặt template trong theme có thể được thay thế bởi nhiều thành phần class thực. Ở đây có một qui tắc: Mọi operation template hoặc attribute template phải được định nghĩa như một phần của class template. Nói

34

cách khác nếu bạn có một class trong thiết kế crosscutting mà chứa một operation template hay tham số, thì chính class đó cũng được xem là một template, và tất cả những phần tử không phải là template cũng được thêm vào class thực khi tổng hợp các theme.

Các template được xác định trong mỗi biểu đồ tuần tự thì được nhóm trong ngoặc < >, phân cách bởi dấu phảy. Hành vi crosscutting là cái mà được kích hoạt trong theme base, vì thế hoạt động đầu tiên trong nhóm phải kích hoạt hành vi crosscutting . Có thể có nhiều template được xác định trong chuỗi các hành vi, và sự sắp xếp trong nhóm này rất quan trọng vì nó liên quan đến trình tự hoạt động của lược đồ tuần tự. Các kích hoạt có thể được giới hạn bởi luồng điều khiển của cái khác hoặc không.

Không giới hạn số nhóm hành vi, hay số operation/attribute là template được định nghĩa trong một nhóm hành vi. Nhưng lược đồ tuần tự mà sử dụng cho các template trong theme phải có một nhóm hành vi tương ứng các template đó.

Trong một nhóm hành vi đơn < >, có thể có một số các operation template và attribute trong cùng class template. Để thuận tiện, ta mô tả chúng với một kí tự danh sách { }. Cho ví dụ, nhóm template sau có 6 operation template, trong ClassA có ba operation template, và trong ClassB có ba operation template.

< ClassA{op1(), op2(), op3()}, ClassB{op1(), op3(), op4()} >

Nhớ rằng hoạt động đầu tiên trong nhóm template là hoạt động kích hoạt hành vi crosscutting trong biểu đồ tuần tự tương ứng, trong trường hợp này là ClassA.op1(). Và có tempalte class cho mô tả operation template và attribute, như trong ví dụ này hai class template là ClassA, ClassB, giúp không có sự xung đột giữa ClassA.op1() và ClassB.op1().

3.2.2.5Tham chiếu Template structure và hành vi

Khi thiết kế crosscutting có ít nhất một số mô hình hành vi trong nó sẽ được kích hoạt bởi hành vi bên ngoài theme. Trong các theme base đó, các operation mà kích hoạt một chuỗi hành vi crosscutting xuất hiện trong các class khác nhau, chúng sẽ được nhóm trong một class template đơn để bắt hành vi crosscutting. Có thể có nhiều class mà được tổng hợp với class template bởi vì các class đó có các hoạt động mà kích hoạt các crosscutting hành vi liên quan (miêu tả trong chương sau).

Điều này gợi ý cho việc sử dụng class template giống như kiểu tham chiếu trong thiết kế theme aspect. Giả sử, chúng ta có một class gọi là ClassA trong thiết kế aspect mà không phải là một class template, nó không có hành vi cắt ngang nào được kích

35

hoạt bên ngoài aspect. Tuy nhiên, chúng ta mong muốn ClassA được thêm vào thiết kế tổng thế. Cũng giả sử rằng, ClassA có một attribute gọi là att1. Nếu kiểu của att1 là template, có nhiều khả năng nó sẽ có trong tổng thể thiết kế? Nó là nhập nhằng bởi vì có nhiều class được tổng hợp với class template. Để tránh rối loạn Theme/UML không cho phép mở rộng tham chiếu đến class template.Tương tự, ta xét việc gọi các phương thức trong một class template từ một class khác trong theme aspect. Nếu một method trong ClassA (không phải template) gọi một method trong một class template, method đó có nên được thực thi khi mà theme aspect được tổng hợp với các theme base ? Điều đó lại là nhập nhằng, và để tránh rối loạn, Theme/UML không cho phép mở rộng gọi method trong một class template.

Hình 3-7 ClassB là một class template, ClassA và ClassC thì không phải là template. ClassA không được tham chiếu đến thuộc tính att1- kiểu template trong ClassB, phương thức op3() trong ClassC không được tham chiếu đến op2() trong ClassB.

36

Chương 4 Tổng hợp theme

Chúng ta thiết kế mỗi theme individually mà không bao gồm các tham chiếu trực tiếp đến các theme khác. Bởi vì chúng ta muốn tránh đặc điểm rải rác và lẫn rối giữa các theme, ảnh hưởng xấu đến việc mô-đun hóa và gây nên sự hỗn độn cho sự khoa học của phần mềm.

Trong chương này, chúng ta sẽ xem xét, xác định làm thế nào mà các theme liên quan đến nhau và làm thế nào chúng được tổng hợp thành một ứng dụng mạch lạc duy nhất.

Với cách tiếp cận Theme’s symmetric, mỗi theme là một concern trong miền. Cần phải tổng hợp các theme cần thiết trong ứng dụng để đưa ra một ứng dụng mạch lạc. Tập các theme để tổng hợp cho ứng dụng có thể bao gồm tất cả các theme đã được thiết kế, hoặc các ứng dụng khác nhau có thể chỉ yêu cầu những tập con khác nhau từ những theme đã thiết kế.

Thông thường, các bước trong quá trình tổng hợp là :

1 Chọn các theme để tổng hợp. Sự tổng hợp trong Theme/UML ở mức phần tử

theme.

2 Xác định các phần tử thiết kế trong các theme tương đương nhau. Các theme mà

có đặc tả cho cùng khái niệm miền sẽ được so khớp.

3 Chỉ ra làm thế nào các theme được tích hợp. Theme/UML cung cấp hai loại tích

hợp : merge (hợp nhất) và override (ghi đè).

4 Chỉ ra làm cách giải quyết xung đột giữa các phần tử thiết kế được so khớp.

5 Xác định các hành vi kích hoạt trong theme base để bind (kết dính) tới template

trong một theme aspect.

Một phần của tài liệu LUẬN VĂN: TÌM HIỂU VỀ TIẾP CẬN THEME VÀ ỨNG DỤNG CỦA CÁCH TIẾP CẬN VÀO XÂY DỰNG HỆ THỐNG ĐIỆN THOẠI pdf (Trang 39 - 43)

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

(101 trang)