Trong bài báo chúng tôi sẽ trình bày một cách hình thức một số khái niệm cơ bản quan trọng cho mô hình phát triển phần mềm thành phần, bao gồm giao diện, các hợp đồng, các giao thức tương tác, các thành phần và những quan hệ giữa các khái niệm đó, các tính toán làm mịn giữa chúng với nhau.
Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CƠNG NGHỆ 78(02): 97 - 104 MỘT SỐ TÍNH TỐN VÀ LÀM MỊN VỚI CÁC THÀNH PHẦN Nguyễn Mạnh Đức Khoa Toán, Trường Đại học Sư phạm – Đại học Thái Nguyên TĨM TẮT Trong báo chúng tơi trình bày cách hình thức số khái niệm quan trọng cho mơ hình phát triển phần mềm thành phần, bao gồm giao diện, hợp đồng, giao thức tƣơng tác, thành phần quan hệ khái niệm đó, tính tốn làm mịn chúng với Các đặc tả tính tốn làm mịn đƣợc thực dựa theo mơ hình tính tốn rCOS, để bảo đảm tính đắn qn hệ thống Những cơng việc đƣợc thực giai đoạn khác tiến trình phát triển phần mềm Từ cho thấy ý nghĩa cần thiết phát triển phƣơng pháp hình thức kỹ nghệ phần mềm hƣớng thành phần Từ khóa: Làm mịn hệ thống đối tượng thành phần , thiết kế , giao diện, hợp đồng, thành phần, ngơn ngữ mơ hình hóa thống UML GIỚI THIỆU* Sử dụng thành phần để xây dựng bảo trì hệ thống phần mềm khơng phải ý tƣởng Tuy nhiên, độ phức tạp hệ thống ngày tăng lên nhanh, điều buộc phải trở lại với ý tƣởng thực tế [3] Các kỹ thuật dựa công nghệ hƣớng đối tƣợng thành phần trở nên phổ biến đƣợc sử dụng rộng rãi để mơ hình hóa thiết kế hệ thống phần mềm lớn phức tạp Chúng cung cấp hỗ trợ hiệu để phân tách ứng dụng thành đối tƣợng thành phần, phục vụ hữu hiệu cho việc sử dụng lại, mở rộng thiết kế có cài đặt mới… Các cơng việc phân tích kiểm tra hệ thống phức hợp dễ dàng kiến trúc hệ thống thành phần [5] Thiết kế phát triển hệ thống phần mềm với ngôn ngữ hƣớng đối tƣợng đƣợc thừa nhận phức tạp [2] Phát triển phần mềm theo hƣớng thành phần bƣớc phát triển logic phƣơng pháp hƣớng đối tƣợng Nhiều nhà nghiên cứu cần thiết phát triển cơng cụ hình thức hố làm tảng cho việc phát triển phần mềm hƣớng đối tƣợng hƣớng thành phần Trong báo xem xét kỹ thuật mơ hình hóa mà hỗ trợ đặc tả hệ thống đối tƣợng thành phần mức trừu tƣợng cao, dựa * Tel: 0915 564 249; Email: nmductn@yahoo.com lý thuyết lập trình thống Hoare He [1, 5] Đề xuất số vấn đề phục vụ cho việc thiết kế phát triển hệ thống thành phần, dùng cho việc xây dựng cách đắn chƣơng trình hƣớng thành phần Sau phần giới thiệu, phần trình bày khái niệm giao diện (interface), phần trình bày khái niệm hợp đồng (contract), phần trình bày khái niệm thành phần (component) Trong phần chúng tơi đƣa thảo luận, số tính chất ngữ nghĩa, mối quan hệ chúng tính tốn làm mịn liên quan Trong phần đƣa số nhận xét kết luận công việc mà mà tiến hành GIAO DIỆN (INTERFACES) Giao diện thành phần đƣợc định nghĩa nhƣ đặc tả điểm truy nhập thành phần [4] Các khách hàng truy nhập tới dịch vụ đƣợc cung cấp thành phần cách sử dụng điểm truy nhập Nếu thành phần có nhiều điểm truy nhập, điểm truy nhập biểu diễn cho dịch vụ khác đƣợc đƣa thành phần, thành phần đƣợc mở rộng phải có nhiều giao diện Interface tập hợp đặc trƣng, đặc trƣng trƣờng phƣơng thức Một cách hình thức, ta định nghĩa Interface nhƣ sau Định nghĩa (Interface): Interface cặp khai báo đặc trưng I = Trong 97 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CƠNG NGHỆ FDec tập khai báo trường, ký hiệu I.FDec; MDec tập khai báo phương thức, ký hiệu I.MDec Mỗi thành viên FDec có dạng x: T, x tên T kiểu trƣờng đƣợc khai báo Không đƣợc khai báo trƣờng trùng tên FDec Một phƣơng thức (phép toán) MDec có dạng m(in inx, out outx), m tên phƣơng thức, inx danh sách tham số vào, outx danh sách tham số ra; Mỗi khai báo tham số vào có dạng u: U tên kiểu tham số Tên phƣơng thức với tham số với kiểu tham số vào tạo thành ký danh phƣơng thức Nói chung inx outx trống Để đơn giản hóa khơng làm tính tổng qt, biểu diễn lại phƣơng thức dạng m(in: U, out: V) cách bỏ từ khóa inx outx, coi m(in1: U, out1: V) m(in2: U, out2: V) phƣơng thức ký danh Đơn giản biểu diễn phƣơng thức Interface m(u, v), với u v tham số vào m Trong Interface không thực thi phƣơng thức nó, thay tên phƣơng thức với tham số để cung cấp ký danh cho phép tốn chúng Ví dụ 1: Một đệm số nguyên, giao diện có khả cho ngƣời sử dụng đặt vào lấy liệu từ Ta biểu diễn giao diện nhƣ sau: IBuff = seq(int) kiểu dãy hữu hạn có thứ tự số nguyên qui ƣớc dùng ký pháp chuẩn để độ dài, phần tử hay cuối cùng… dãy Định nghĩa (tính gộp lại): Hai Interface có khả gộp lại (composable) chúng không sử dụng tên trường với kiểu khác Giả sử I J Interface có khả gộp lại, kí pháp I ⊕ J biểu diễn interface 78(02): 97 - 104 với thành phần trường phương thức sau: (I ⊕ J).FDec def I FDec ∪ J.FDec (I ⊕ J).MDec def I.MDec1 ∪ J.MDec Theo định nghĩa ta có tính chất sau với Interface có tính gộp lại: (1) I ⊕ I = I (2) I⊕ J = J⊕ I (3) I1⊕ (I2⊕ I3 ) = (I1⊕ I2)⊕ I3 Ta dễ dàng chứng minh tính chất nhƣ sau: (1) Theo tính chất lũy đẳng phép tốn tập hợp (2) Theo tính chất giao hoán phép toán tập hợp (3) Theo tính chất kết hợp phép tốn tập hợp Sự kế thừa interface: Kế thừa (inheritance) phƣơng tiện có ích cho sử dụng lại lập trình gia tăng Khi thành phần cung cấp nhiệm vụ dịch vụ cần thiết số phép tốn đƣợc cung cấp khơng đủ phù hợp cho cần thiết, sử dụng thành phần cách viết lại số phép tốn mở rộng với số phép tốn xử lý thuộc tính Định nghĩa (kế thừa Interface): Cho I J Interface, giả thiết khơng có trường J định nghĩa lại I Ký pháp I extends J biểu diễn Interface có miền trường phương thức sau: (I extends J).FDec def I.FDec ∪ J.FDec (I extends J).MDec def I.MDec ∪ {m(in: U, out: V)|m ∈ J.MDec∧ op ∉ I.MDec} Theo định nghĩa này, ta có tính chất sau: (1) I extends (J1⊕ J2 ) = (I extends J1)⊕ (I extends J2) (2) (I1⊕ I2 ) extends J = (I1 extends J)⊕ (I2 extends J) Ta chứng minh tính chất nhƣ sau: 98 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CƠNG NGHỆ (1) Theo tính chất kết hợp phép toán tập hợp (U \ V1 ) ∪ (U \ V2) = U \ (V1 ∪ V2) (2) Theo tính chất kết hợp phép toán tập hợp (U1 \ V ) ∪ (U2 \ V) = (U1 ∪ U2) \ V Sự làm ẩn (hiding): Để đƣa dịch vụ khác cho khách hàng khác thành phần, cho phép làm ẩn phép tốn interface để khơng nhìn thấy chúng thành phần đƣợc bao thành phần Việc làm ẩn tốn tử cung cấp hiệu ứng ngƣợc với kế thừa giao diện đƣợc sử dụng để giới hạn giao diện Trong ký pháp đồ họa nhƣ UML, vấn đề thực đƣợc ký pháp tổng quát hóa [3, 9] Định nghĩa (sự làm ẩn|sự che dấu): Giả sử I interface S tập tên phương thức Ký pháp I\S interface I sau loại bỏ phương thức S từ phần khai báo phương thức nó: (I\S).FDec def I.FDec (I\S).MDec def I.MDec \ S Việc làm ẩn phép tốn có tính chất sau: (1) (I \ S1) \ S2 = I \ (S1 ∪ S2) (2) I \ ∅ = I (3) (I1 ⊕ I2) \ S = (I1 \ S) ⊕ (I2 \ S) (4) (I extends J) \ S = (I \ S) extends (J \ S) Chứng minh: giả sử U, U1, U2, V, V1, V2 tập hợp, ta có: (1) đƣợc thỏa mãn (U \ V1 ) \ V2 = U \ (V1 ∪ V2) (2) đƣợc thỏa mãn U \ ∅ = U (3) đƣợc thỏa mãn (U1 ∪ U2) \ V = (U1 \ V) ∪ (U2 \ V) (4) đƣợc thỏa mãn (U1 ∪ (U2 \ U1)) \ V = ((U1 \ V) ∪ (U2 \ V)) \ (U1 \ V) Từ (1) cho thấy thứ tự phép tốn tập khơng quan trọng Từ (3) ta thấy làm ẩn có tính phân phối với tốn hạng interface Dựa vào tính chất trên, số tính tốn làm mịn contract thành phần đƣợc xây dựng thực [7, 8, 9] 78(02): 97 - 104 HỢP ĐỒNG (CONTRACT) Hợp đồng (Contract) ngữ nghĩa đặc tả chức cho Interface Đó giao ƣớc quan hệ giao diện tới ứng dụng mơ hình liệu (trừu tƣợng) có tính rõ ràng, cụ thể, mơ tả chức toán tử dịch vụ, giao thức đặc trƣng, bảo đảm chất lƣợng yêu cầu khác dịch vụ tùy thuộc vào ứng dụng Mô hình cung cấp định nghĩa quán khung nhìn phƣơng thức kiểm tra tính qn Sự liên quan mở rộng theo chiều ngang cách bổ sung nhiều dịch vụ, tính chất để bảo đảm chất lƣợng dịch vụ [3] Sự đặc tả phƣơng thức Interface thiết kế D = (, P) [1], : tập biến (cùng với kiểu chúng) đƣợc sử dụng phƣơng thức chứa tham biến vào P tân từ có dạng (p ⊢ R) def (ok ∧ p) (ok’ ∧ R) đƣợc sử dụng để mô tả hành vi phƣơng thức p tiền điều kiện, trạng thái khởi tạo đƣợc chấp nhận để nhờ mà phƣơng thức đƣợc kích hoạt đƣợc biểu diễn tập {x | x ∈ ( \ {out})} biến Tân từ R đƣợc gọi hậu điều kiện, xác định quan hệ trạng thái khởi đầu tới trạng thái cuối đƣợc mô tả tập {x’ | x ∈ ( \ {in})} Thiết kế D1 đƣợc làm mịn thiết kế D2 (ký hiệu D1 ⊑ D2) nếu: ok, ok’, v, v’ • (D2 D1) Một cách hình thức, contract đƣợc định nghĩa nhƣ dƣới Định nghĩa (contract): Contract cặp Ctr = (I, Init, MSpec, Prot), đó: I Interface Init hàm xác định giá trị khởi đầu cho trường khai báo I.FDec MSpec ánh xạ phương thức m(in: U, out: V) I tới đặc tả thiết kế với tập alphabet α, đây: inα def {in} ∪ I.FDec, outα def {out’} ∪ I.FDec’, α = inα ∪ outα 99 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CÔNG NGHỆ Prot gọi giao thức Interface, tập dãy hữu hạn có thứ tự kiện gọi phương thức Dãy hữu hạn có dạng m1, m2, …, mk Ý nghĩa contract là: Nếu ngƣời sử dụng thành phần tuân theo giao thức tƣơng tác với thành phần, khơng xuất trạng thái đình trệ nhƣ sai lệch, Tại thời điểm ngƣời sử dụng gọi phép toán giao thức, trạng thái thay đổi trả lại giá trị phù hợp trạng thái đặc tả chức phép tốn Với nhiều ứng dụng, giao thức đƣợc rõ biểu thức chuẩn mực trƣờng hợp thuận tiện đƣợc kiểm tra tự động [3] Ví dụ 2: Với giao diện đệm số nguyên ví dụ 1, Một contract CtrBuff với giao diện đệm xác định nhƣ sau: CtrBuff.IBuff = IBuff ví dụ // xác định CtrBuff.Init = |buff| = CtrBuff.MSpec(put(in x: int)) def (true ⊢ buff’ = ) CtrBuff.MSpec(get(out y: int)) def (true ⊢ buff = out’ = head(buff)) CtrBuff.Prot = (put; get)* + (put; (get; put)*) Định nghĩa (reactive contract): Một contract tác động trở lại (reactive contract) ba Ctr = (I, Init, MSpec), MSpec gắn phép toán m(x, y) interface I với thiết kế bị chặn Ví dụ 3: Con tract ví dụ coi nhƣ contract tác động lại nhƣ sau: CtrBuff.I = IBuff // xác định ví dụ CtrBuff.Init = |buff| = CtrBuff.MSpec(put(in x: int)) = 0) & (true ⊢ buff’ = ) def (|buff| CtrBuff.MSpec(get(out y: int)) def (|buff| > 0) & (true ⊢ buff’ = y’ = head(buff)) 78(02): 97 - 104 Cho contract tác động lại Ctr = (I, Init, MSpec), hành vi động đƣợc xác định tập trạng thái không phù hợp sai lệch F(Ctr) D(Ctr) Mỗi phƣơng thức gọi m(u, v) bao gồm hai kiện ?m(u) để tiếp nhận yêu cầu m(v)! để gửi trả lại cho lời gọi, vết trạng thái không phù hợp sai lệch có dạng: ?m1(u1), m1(v1)!, …, ?mn(un), mn(vn)! ?m1(u1), m1(v1)!, …, ?mn(un) Các trạng thái không phù hợp sai lệch đƣợc xác định nhƣ sau [6]: D(Ctr) bao gồm dãy có thứ tự tƣơng tác Ctr mơi trƣờng dẫn contract tới trạng thái sai lệch F(Ctr) tập cặp (s, X), s dãy thứ tự tƣơng tác Ctr môi trƣờng nó, X tập phƣơng thức để contract từ chối trả lời sau thực s Một trạng thái không phù hợp (s, X) trƣờng hợp sau đây: s =