Biểu đồ tuần tự UML và các toán tử

Một phần của tài liệu (LUẬN án TIẾN sĩ) các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML luận án TS máy tính 624801 (Trang 26 - 31)

2.3 Các biểu đồ UML và ràng buộc OCL

2.3.1 Biểu đồ tuần tự UML và các toán tử

Biểu đồ tuần tự UML [76]: biểu diễn mối quan hệ giữa các đối tượng, giữa các đối tượng và tác nhân theo thứ tự thời gian. Biểu đồ tuần tự nhấn mạnh thứ tự thực hiện của các tương tác. Các thành phần cơ bản của một biểu đồ tuần tự là:

ˆ Các đối tượng (object): được biểu diễn bởi các hình chữ nhật, bên trong là tên của đối tượng. Trong biểu đồ tuần tự, không phải các đối tượng đều xuất hiện ở trên cùng của biểu đồ mà chúng chỉ xuất hiện (về mặt thời gian) khi thực sự tham gia vào tương tác.

ˆ Các thông điệp (message): được biểu diễn bằng các mũi tên hướng từ đối tượng gửi sang đối tượng nhận. Tên các thơng điệp có thể biểu diễn dưới

dạng phi hình thức (như các thơng tin trong kịch bản) hoặc dưới dạng hình thức (giống như các phương thức). Biểu đồ tuần tự cho phép có các thơng điệp từ một đối tượng tới chính bản thân nó. Trong biểu đồ này có nhiều loại thơng điệp khác nhau tuỳ theo mục đích sử dụng và tác động của thơng điệp đến đối tượng.

ˆ Đường sống (lifeline): mỗi đối tượng có một vịng đời (bắt đầu từ khi hình thành đối tượng và kết thúc khi phá hủy), đường sống biểu diễn một đường kẻ nối dài phía dưới đối tượng, mơ tả q trình của một đối tượng trong tương tác thuộc biểu đồ.

Sau đây là danh sách các toán tử tương tác [76] trong các biểu đồ tuần tự UML 2.0:

Toán tử alternative (alt): toán tử tương tác alt chỉ ra rằng phân đoạn kết hợp biểu diễn một sự lựa chọn hành vi. Toán hạng trong tốn tử có biểu thức điều kiện (guard expression), nếu biểu thức đó đúng thì tốn hạng đầu sẽ được thực thi. Nếu tốn hạng khơng có biểu thức điều kiện thì biểu thức được ngầm hiểu là đúng. Nếu biểu thức điều kiện là sai thì tốn hạng sau sẽ được thực thi. Hình 2.2 biểu diễn ví dụ minh họa của tốn tử alt: nếu số dư (balance) trong tài khoản lớn hơn 0 thì cho phép thực hiện rút tiền (withdraw()), ngược lại thì từ chối (reject()).

Tốn tử tương tác option (opt): chỉ ra rằng phân đoạn kết hợp biểu diễn một sự lựa chọn hành vi. Trong phân đoạn chỉ có một tốn hạng, tốn hạng này có thể được thực thi hoặc khơng được thực thi tùy vào biểu thức điều kiện. Tốn tử opt gần giống với tốn tử alt, chỉ có điều trong opt chỉ có một tốn hạng duy nhất. Hình 2.2 biểu diễn ví dụ minh họa của tốn tử opt: đăng bình luận (post_comments()) nếu khơng có lỗi xảy ra (no errors).

Toán tử tương tác loop: chỉ ra rằng phân đoạn kết hợp biểu diễn vịng lặp. Tốn hạng lặp sẽ được lặp đi lặp lại một số lần. Điều kiện trong tốn tử có thể gồm một cận dưới (minint), một cận trên (maxint) và một biểu thức boolean. Sau minint lần lặp, biểu thức được kiểm tra đến khi nào biểu thức còn đúng và số lần lặp còn nhỏ hơn hoặc bằng maxint thì vịng lặp vẫn tiếp tục. Hình 2.3 biểu diễn ví dụ minh họa của tốn tử loop: vịng lặp với cận dưới là 4, cận trên là 9. Sau khi lặp hết 4 lần, nếu điều kiện size <0 đúng và số vòng lặp nhỏ hơn

withdraw() a: A obj 1 obj 2 alt [balance>0] [balance<=0] reject() post_comments() a: A obj 1 obj 2 opt [no errors]

Hình 2.2: Ví dụ biểu đồ tuần tự UML có tốn tử alt và opt.

notify() a: A obj 1 obj 2 loop(4,9) [size<0] add() a: A obj 1 obj 2 loop(10) break [x>0] save()

Hình 2.3: Ví dụ biểu đồ tuần tự UML có tốn tử loop và break.

hoặc bằng 9 thì vịng lặp vẫn tiếp tục, ngược lại thì dừng lặp.

Tốn tử break: khi biểu thức điều kiện của tốn tử tương tác break đúng thì tốn hạng trong phân đoạn kết hợp break sẽ được thực thi thay cho phần cịn lại của tốn tử tương tác bao gói bên ngồi. Hình 2.3 biểu diễn ví dụ minh họa của tốn tử break: nếu điều kiện x > 0 thì thực hiện save() rồi thốt ln khỏi vịng lặp.

Tốn tử parallel (par): chỉ ra rằng các toán hạng trong phân đoạn kết hợp có thể được thực thi song song với nhau. Các sự kiện trong các tốn hạng khác nhau có thể đan xen vào nhau theo bất cứ cách nào, miễn là thứ tự của các sự kiện trong mỗi tốn hạng được bảo tồn. Hình 2.4 biểu diễn ví dụ minh họa của toán tử par: thứ tự thực hiện các thông điệp chỉ cần thỏa mãn 1a trước 2 và 1b trước 3, vì vậy có các thứ tự thực hiện sau: 1a 2 1b 3; 1a 1b 2 3; 1b 1a 3 2; 1b 1a 2 3; 1b 3 1a 2.

Toán tử weak sequence (seq): chỉ ra rằng phân đoạn kết hợp biểu diễn một trình tự yếu giữa các hành vi của các tốn hạng. Trình tự yếu được định nghĩa bởi tập các vết với các đặc tính: Thứ tự của các sự kiện trong mỗi một toán

1a: searchGoogle() a: A obj 1 obj 2 par 2: readResult() 3: readResult() 1b: searchYahoo() 1: searchGoogle() a: A obj 1 obj 2 seq obj 3 2: searchBring() 3: searchYahoo()

Hình 2.4: Ví dụ biểu đồ tuần tự UML có tốn tử par và seq.

hạng được duy trì; Các sự kiện trên các lifeline khác nhau ở các tốn hạng khác nhau có thể xảy ra theo thứ tự bất kỳ; Các sự kiện trên cùng lifeline ở các toán hạng khác nhau được sắp thứ tự sao cho một sự kiện của toán hạng thứ nhất xảy ra trước sự kiện của tốn hạng thứ hai. Hình 2.4 biểu diễn minh họa của tốn tử seq: tìm kiếm trên Google (searchGoogle()) song song với tìm kiếm trên Bring (searchBring()) và Yahoo (searchYahoo()). Tuy nhiên, searchBring() và searchYahoo() cùng một lifeline nên tìm kiếm Bring ln phải trước Yahoo.

Tốn tử strict: chỉ ra rằng phân đoạn kết hợp biểu diễn một trình tự nghiêm ngặt giữa các hành vi của các toán hạng. Hình 2.5 biểu diễn ví dụ minh họa của tốn tử strict: thực hiện theo đúng trình tự là tìm kiếm bằng Google, rồi tìm kiếm Bring, sau đó là Yahoo.

Tốn tử critical (critical region): chỉ ra phân đoạn kết hợp biểu diễn một vùng then chốt. Một vùng then chốt nghĩa là các vết trong vùng này không thể bị đan xen bởi các sự kiện khác (trên các lifeline bị phủ bởi vùng này). Hình 2.5 biểu diễn ví dụ minh họa của toán tử critical: các cuộc gọi cho 911 phải nối tiếp, không được chồng lấn nhau, tuy nhiên các cuộc gọi thường (100) thì đan xen nhau thoải mái. Điều hành viên (operator) phải chuyển tiếp cuộc gọi cho số 911 trước khi làm bất cứ thứ gì khác.

Tốn tử ignore: chỉ ra rằng có một số kiểu thơng điệp khơng được hiển thị trong phân đoạn kết hợp này. Các kiểu thơng điệp này có thể bị coi là vơ nghĩa và bị mặc nhiên bỏ qua. Hình 2.6 biểu diễn ví dụ minh họa của toán tử ignore: bỏ qua thơng điệp get() và set() nếu có trong các tốn hạng.

Tốn tử consider: chỉ ra những thơng điệp được thực hiện trong phân đoạn kết hợp này, và các thơng điệp cịn lại khác bị bỏ qua. Hình 2.6 biểu diễn ví dụ minh họa của tốn tử consider: chỉ thực hiện các thơng điệp add() và remove(), bỏ qua các thông điệp khác.

1: searchGoogle() a: A obj 1 obj 2 strict obj 3 2: searchBring() 3: searchYahoo() 1: call (100) a: A emergency operator par caller critical 2: call (100) 3: call (911) 4: call (911)

Hình 2.5: Ví dụ biểu đồ tuần tự UML có tốn tử strict và critical.

1: add() a: A obj 1 obj 2 ignore {get,set} 2: set() 3: remove() 1: add() a: A obj 1 obj 2 consider {add,remove} 2: set() 3: remove()

Hình 2.6: Ví dụ biểu đồ tuần tự UML có tốn tử ignore và consider.

Toán tử negative (neg): chỉ ra rằng phân đoạn kết hợp biểu diễn các vết (traces) được định nghĩa là khơng hợp lệ. Hình 2.7 biểu diễn ví dụ minh họa của tốn tử neg: tốn tử neg để xác định rằng khơng được phép mở cửa lị vi sóng (open()) trong khi đang nấu.

Tốn tử assert: chỉ ra rằng phân đoạn kết hợp biểu diễn các vết hợp lệ. Toán tử assert thường được sử dụng cùng với ignore hoặc consider. Hình 2.7 biểu diễn ví dụ minh họa của tốn tử assert: tốn tử assert chỉ chấp nhận thơng điệp set() là hợp lệ, nếu thông điệp remove() xảy ra thay cho set() thì remove() khơng hợp lệ.

a: A Microwave Generator 1: add() a: A obj 1 obj 2 consider {add,set,remove} 2: set() assert a: A Control Doora: A neg loop Cooking [1, n] 2: rotate() 3: generate() 1: open()

Hình 2.7: Ví dụ biểu đồ tuần tự UML có tốn tử negative và assert.

Một phần của tài liệu (LUẬN án TIẾN sĩ) các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML luận án TS máy tính 624801 (Trang 26 - 31)