2.2 Mô hình hóa đặc tả giao diện của thành phần
2.2.5 Sự kết hợp của các thành phần
ChoCi = Ctr Dep SDep Mcode Invi, i, i, i, i , i = 1, 2 là thành phần thụ động trong đó có các hợp đồng có thể kết hợp được và thỏa mãn Mcode op1( )≡Mcode op2( ) với mọi
1 2
op∈Md ∩Md . Sự kết hợp C1∪C2 được định nghĩa như sau:
1 2 ˆ 1 2, 1 2, 1 2, 1 2, 1 2
C ∪C = Ctr ∪Ctr Dep ∪Dep SDep ∪SDep Mcode ∪Mcode SInv ∧SInv
Cho u là tập hữu hạn các thành phần thụ động, như vậy UU u∈U Dep• ⊆u (U Dep•
là tập các thành phần mà thành phần U phụ thuộc vào). Cho đồ thị phụ thuộc của u
được định nghĩa là các đồ thị có hướng D u( ) (=ˆ u A, ), trong đó (U V, )∈A nếu
. .
V∈U Dep u là cấu trúc tốt nếu đồ thị phụ thuộc của nó không có chu kỳ. Một thành phần thụ động Uđược cho là độc lập nếu U Dep. = ∅.
Định lý 4. Nếu u là cấu trúc tốt thì mọi phương thức trong thành phần U∈u là triển khai tốt.
• Các phương thức trong các thành phần được định nghĩa là thiết kế với tiền điều kiện, hậu điều kiện, quan hệ về lượng thời gian để thực hiện các phương thức và các nguồn tài nguyên có sẵn. Điều này là phù hợp với đặc tả
về các hệ thống có điều kiện kết thúc, nhưng không đủ mạnh để thể hiện các
hành vi của chương trình không có điều kiện kết thúc hoặc các hệ thống phản ứng.
• Định nghĩa của một thành phần Comp yêu cầu Mspec op( )Mcode op( )theo
giả định ( ( ( )) ( ))
U Dep Inv Ctr U SInv U
∈∧ ∧ .
Các điều kiện Inv(Ctr(U)) là các biến được sử dụng để thực hiện các đặc tả
chức năng cho các phương thức op và được bảo đảm bởi tất cả các thành
phần trong U. Các điều kiện SInv(U) là các biến trong SDep(U) được sử
dụng để lên lịch và được sử dụng để triển khai các đặc tả của các phương
thức không phải hàm. Vì vậy nếu SInv(U)được kiểm chứng như là một bất
biến toàn cục cho hệ thống không tính yếu tố thời gian tương ứng, nó cũng
là một bất biến của hệ thống tính thời gian. Việc kiểm chứng của bất biến
SInv(U) cho hệ thống không tính thời gian có thể được thực hiện với kỹ thuật đơn giản.
Ví dụ 1, khi lập lịch là không cần thiết (ví dụ cách sử dụng song song
của các dịch vụ được cho phép hoặc các dịch vụ được gọi chỉ một thành
phần tại một thời điểm, SDep U( )= ∅ với mọi U) thì chúng ta có
( , ) , , 0
Schedule Comp C = ∅ skip = (từ đây chúng ta cho rằng tính toán luôn mất thời gian, do đó các đặc tả thời gian cho các lịch trình trong trường hợp này nên được thay đổi để > ∧ ≤0 d trong đó d là lượng thời gian nhỏ nhất
cần thiết để thực hiện một lệnh theo giả định về nguồn tài nguyên trong hệ
thống). Tiền điều kiện Schedule(Comp,C) là true và do đó SInv(C) là true, đó là một bất biến tầm thường.
Ví dụ 2, giả sử lập lịch sử dụng chính sách FIFO (đến trước phục vụ
trước), và lượng thời gian tối đa mà một thành phần sử dụng một dịch vụ của mỗi thành phần Comp là a và số lớn nhất các thành phần sử dụng dịch vụ của Comp là n. Ta sẽ có Schedule Comp( )= SDep U( ),FP,≤ ×n a . Có
những lời gọi đồng thời hay không phụ thuộc vào nếu có tồn tại phương
thức chủ động đồng thời trong hệ thống hay không. Tiếp theo phụ thuộc vào
nếu ngôn ngữ cho phép một phương thức được thực hiện với lệnh song song
hoặc nếu có nhiều hơn một nhiệm vụ chạy song song trong hệ thống. Ta sẽ
thảo luận thêm về khía cạnh này ở phần sau.
Từ trên ta rút ra nhận xét là để xác định rằng một thành phần Comp1 được làm mịn
2
Comp cung cấp dịch vụ hơn Comp1 và các điều kiện lập lịch cần thiết trong Comp2 là
lỏng hơn Comp1 (tức là Comp2 đã bất biến mạnh mẽ hơn trong lịch trình vì lịch trình thực hiện của Comp1 có thể thực hiện được trong Comp2).
Định nghĩa 6 (Làm mịn thành phần). ChoCompi= Ctr Dep SDep Mcode SInvi, i, i, i, i , i = 1,2 là thành phần thụ động. Comp1 được làm mịn từ Comp2(ký hiệu
1 2
Comp Comp ) nếu
• Ctr1Ctr2 (Comp2 cung cấp nhiều dịch vụ hơn Comp1)
• Dep2 ⊆ Dep1, SDep2 ⊆ SDep1 và SInv1⇒SInv2(Comp2 không cần nhiều
dịch vụ cung cấp từ hệ thống như Comp1 và các điều kiện ràng buộc là yếu
hơn trong quá trình lập lịch hệ thống)