Thành phần bị động

Một phần của tài liệu MÔ HÌNH HÓA CÁC HỆTHỐNG DỰA TRÊN CÁC THÀNH PHẦN (Trang 32 - 35)

4. MÔ HÌNH THÀNH PHẦN THỜI GIAN THỰ C

4.4.Thành phần bị động

Định nghĩa

Một thành phần bịđộng thời gian thực là một tập hợp hữu hạn

, , , ,

Comp= Ctr Dep SDep Mcode SInv với Comp được xác định với tên của thành phần, nó bao gồm:

• Một hợp đồng Ctr = Fd Md, ,Rd MSpec Init Inv, , , .

• Tập hợp Dep của tên các thành phần, mỗi phần tử của Dep là một tên của thành phần mà Comp phụ thuộc vào.

SDep là tập hợp các biến trong ∏ (đại diện cho sự tương tác với bộ lập lịch).

SInv là một vị từ trên các biến vSDep (để biểu diễn giả thiết thông tin mà bộ lập lịch có thể tin cậy khi một phương thức trong Comp được gọi).

Mcode gán mỗi phương thức op trong Md một thiết kế được xây dựng từ các toán tử cơ bản và các lời gọi phương thức từ dạng thức

1

( , , )

call Comp C op , với op1 là một phương thức trong thành phần C trong

Dep. Chú ý rằng các tên phương thức, biến tài nguyên và biến cục bộ được sử dụng trong đặc tả và cài đặt của phương thức op in out1( , ) trong thành phần bịđộng C là cục bộ trong C và có tiền tố là “Ci” để chống lại sự lẫn lộn với các biến được sử dụng trong các thành phần bị động khác. Lấy Env biểu thị vị từ ∧U Dep∈ (Inv Ctr U( ( ))∧SInv U( )) (từđây trở đi, ta sử dụng Ctr U( )

để biểu thị hợp đồng của thành phần U, Inv Ctr U( ( )) để biểu thị bất biến của hợp đồng thành phần U, Dep U( ) biểu thị tập hợp tên thành phần mà U phụ

thuộc và SInv U( ) biểu thị bất biến lập lịch hệ thống của thành phần U). Điều

kiện sau đây phải được thỏa mãn bởi Mcode:

Env(MSpec op( )⊑Mcode op( )) và Inv được chiếm giữ bởi bất kì phép toán nào được sử dụng trong Mcode. Lấy CDepopC. Do vậy

( , , )

call Comp C op được định nghĩa như Schedule Comp C( , ) ||C opi , với

( , )

Schedule Comp C là một thiết kế sử dụng các biến trong SDep C( ) (giá trị các biến này đạt diện cho những lời gọi hiện tại đến một phương thức trong

C. Ta mong đợi tiền điều kiện của Schedule Comp C( , ) được bao hàm bởi

( )

SInv C ). Từ luật phân tách song song, Schedule Comp C( , ) ||C opi bao hàm đặc tả chức năng của C opi nhưng không cần thêm thời gian để thực hiện.

Thành phần Compnói lên rằng nó được cài đặt bởi hợp đồng Ctr.

Trong định nghĩa của thành phần Comp, nó yêu cầu MSpec op( )⊑Mcode op( )

cho tất cả các phương thức op trong hợp đồng của Comp theo giả định ( ( ( )) ( ))

U DepInv Ctr USInv U

∧ . Điều này có nghĩa là được cung cấp tất cả các thành phần mà Comp phụ thuộc vào phải đảm những bất biến của chúng, bất kì phương thức nào của thành phần Comp được cài đặt đúng đắn. Cũng như vậy, ta yêu cầu bất kì phép toán nào trong Comp phải đảm bảo bất biến của Comp. Bởi vậy op

có thểđược sử dụng như là một dịch vụ thích hợp với đặc tả MSpec op( ). Có một câu hỏi được đặt ra là làm thế nào để chắc chấn rằng ∧U Dep∈ (Inv Ctr U( ( ))∧SInv U( ))

được đảm bảo? Cài đặt của op tin cậy vào các phương thức trong thành phần với tên (adsbygoogle = window.adsbygoogle || []).push({});

trong Dep. Nhưng cài đặt của các phương thức cuối cùng lại tin cậy vào op. Tình

huống này đã đưa đến lí luận vòng quanh và nó có thể là nguyên nhân làm cho op

được cài đặt không chính xác. Tình huống này sẽ không xảy ra nếu cài đặt tốt cho phương thức được định nghĩa.

Định nghĩa về cài đặt tốt.

Các phương thức được cài đạt tốt được định nghĩa đệ quy như sau:

• Nếu op là một phương thức trong một thành phần với mã lệnh Mcode op( )

• Nếu op là một phương thức trong một thành phần với mã lệnh Mcode op( )

được biên soạn từ các lệnh cơ bản và các lời gọi phương thức cho một phương thức được cài đặt tốt thì op là được cài đặt tốt.

Vậy phương thức được cài đặt tốt không chứa các lời gọi phương thức đệ quy, mặc dù các phương thức chứa các lời gọi phương thức đệ quy có thể kết thúc và có ngữ nghĩa được định nghĩa tốt.

Từ các kết quả trên, ta đưa ra giải quyết vấn để kết hợp thành phần. Lấy

, , , , , 1, 2

i i i i i i

C = Ctr Dep SDep Mcode Inv i= là các thành phận bị động có các hợp đồng có thể tổ hợp và thỏa mãn Mcode op1( )≡Mcode op2( ) đối với tất cả

1 2

opMdMd . Tổ hợp C1∪C2 được định nghĩa là:

1 2, 1 2, 1 2, 1 2, 1 2

CtrCtr DepDep SDepSDep McodeMcode SInvSInv

Cần lưu ý một vài điểm sau:

• Các phương thức trong các thành phần được định nghĩa như các thiết kế với tiền điều kiện, hậu điều kiện và các quan hệ trên lượng thời gian để thực thi các phương thức, tài nguyên sẵn có. Điều này phù hợp cho việc chỉ rõ các hệ thống ngừng hoạt động. nhưng nó không đủ mạnh để biểu diễn hoạt động của các chương trình không dừng hoặc hệ thống tương tác.

• Định nghĩa của một thành phần Comp yêu cầu Mspec op( )⊑Mcode op( )

với giả định ( ( ( )) ( )) U Dep Inv Ctr U SInv U ∈ ∧ ∧ . Điều kiện Inv Ctr U( ( )) trên các biến được sử dụng để cài đặt đặc tả chức năng cho phương thức op, được đảm bảo bởi tất cả các thành phần U. Điều kiện SInv U( ) trên các biến

( )

SDep U chỉ được sử dụng bởi bộ lập lịch và được sử dụng để cài đặt đặc tả phi chức năng của phương thức. Bởi 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 đáp ứng không ràng buộc về thời gian thì nó cũng phải là một bất biến của hệ thống có ràng buộc thời gian nữa. Kiểm chứng của bất biến SInv U( )cho hệ thống đáp ứng không ràng buộc về thời gian được thực hiện với các kĩ thuyệt truyền thống. Ví dụ như khi không cần thiết phải lập lịch (tức là sử dụng song song của các dịch vụ được chấp nhận hoặc các dịch vụ chỉ đực gọi bởi duy nhất một thành phần tại một thời điểm, SDep U( )= ∅ với tất cả U) và sau đó ta có thể có

( , ) , , 0

Schedule Comp C = ∅ skip l= (sau khi ta giảđịnh rằng các tính toán luôn luôn cần thời gian và từđây về sau, đặc tả thời gian cho bộ lập lịch trong trường hợp này phải được thay đổi thành l > ∧ ≤0 l d với d là lương thời gian nhỏ nhất cần để thực hiện lệnh với giả thiết về các tài nguyên trong hệ thống). Tiền điều kiện cho Schedule Comp C( , ) là đúng và SInv C( ) có thể đúng là bất biến tầm thường. Thêm một ví dụ khác, giả định rằng bộ lập lịch sử dụng chính sách “đến trước phục vụ trước” (FIFO) và lượng thời gian lớn nhất mà mỗi lần một thành phần sử dụng một dịch vụ của thành phần Comp

là a, và có khong n thành phần khác có thể sử dụng các dịch vụ của Comp. Vậy ta có Schedule Com( )= SDep U FP l( ), , ≤n x a . Liệu có phải có các lời gọi đồng thời tới một thành phần hoặc không phụ thuộc vào nếu có các phương thức chủ động đồng thời trong hệu thống. Nếu nghôn ngữ cho phép một phương thức được cài đặt với các lệnh song song hoặc nếu có nhiều hơn một luồng đang chạy song song trong hệ thống.

Từ phần đã nói ở trên ta có lí do để định nghĩa một thành phần Comp2 được làm mịn bởi Comp1 nếu và chỉ nếu Comp2 tốt hơn Comp1 theo nghĩa Comp2 cung cấp nhiều hơn các dịch vụ của Comp1 nhưng cần ít dịch vụ hơn Comp1 và điều kiện lập lịch trong

Comp2 kém hơn trong Comp1 (có nghĩa là Comp2 có bất biến mạnh hơn cho bộ lập lịch, cũng đồng nghĩa bộ lập lịch hoạt động với Comp1 thì cũng hoạt động với Comp2). Vậy ta có định nghĩa cho làm mịn thành phần như sau: (định nghĩa 11)

Lấy Compi = Ctr Dep SDep Mcode SInvi, i, i, i, i ,i=1, 2 là các thành phần bị động. Comp1 được gọi là làm mịn bởi Comp2 (được biểu thị là Comp1⊑Comp2) nếu và chỉ nếu:

Ctr1⊑Ctr2(tức là Comp2 cung cấp nhiều dịch vụ hơn Comp1). (adsbygoogle = window.adsbygoogle || []).push({});

Dep2 ⊆ Dep1, SDep2 ⊆SDep1 và SInv1⇒SInv2 (tức là Comp2 không

cần nhiều dịch vụ từ hệ thống như Comp1 và cần giả thiết yếu hơn về lập lịch hệ thống).

Một phần của tài liệu MÔ HÌNH HÓA CÁC HỆTHỐNG DỰA TRÊN CÁC THÀNH PHẦN (Trang 32 - 35)