Tài liệu tham khảo công nghệ thông tin ứng dụng relational interface cho java
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đỗ Duy Hưng
ỨNG DỤNG RELATIONAL INTERFACE CHOJAVA
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn: Ths Phạm Thị Kim Dung
HÀ NỘI – 2010
Trang 2Ứng dụng Relational Interface cho Java Đỗ Duy Hưng
Lời cảm ơn
Trước tiên, tôi xin gửi lời cảm ơn và lòng biết ơn sâu sắc đến thạc sỹ Phạm ThịKim Dung, người đã tận tình chỉ bảo hướng dẫn tôi trong suốt quá trình thực hiện khoáluận tốt nghiệp.
Tôi xin bày tỏ lời cảm ơn sâu sắc đến các thầy cô giáo đã giảng dạy tôi trong suốtbốn năm học qua, đã cho tôi nhiều kiến thức quý báu để tôi vững bước trên con đườnghọc tập của mình.
Tôi xin gửi lời cảm ơn tới các bạn trong lớp K51CB, và K51CNPM đã ủng hộkhuyến khích tôi trong suốt quá trình học tập tại trường.
Và cuối cùng, tôi xin bày tỏ niềm biết ơn vô hạn tới bố mẹ, và những người bạnthân luôn bên cạnh, động viên tôi trong suốt quá trình thực hiện khoá luận tốt nghiệp.
Hà Nội, ngày 22 tháng 05 năm 2010Sinh Viên
Đỗ Duy Hưng
I
Trang 3Ứng dụng Relational Interface cho Java Đỗ Duy Hưng
TÓM TẮT NỘI DUNG
Hiện nay, thiết kế dựa trên thành phần (Component-based design) đang được ứng
dụng và phát triền mạnh vì những lợi ích mà nó mang lại cho ngành công nghệ phầnmềm Thiết kế dựa trên thành phần giúp cho việc xây dựng các hệ thống phức tạp, nhưlà hệ thống nhúng, hệ thống vật lý trở nên hiệu quả và đáng tin cậy Với kích cỡ và độphức tạp lớn của hệ thống này không cho phép thiết kế toàn bộ từ đầu, hoặc xây dựngnó như là một đơn vị đơn lẻ Thay vào đó, hệ thống phải được thiết kế như là một tậphợp các thành phần, một số được xây dựng từ đầu, một số kế thừa lại
Giao diện (Interface) đóng một vai trò quan trọng trong thiết kế dựa trên thànhphần vì chúng cung cấp phương tiện để mô tả cho thành phần Một interface có thể
được xem như là một bản tóm tắt, một đại diện của thành phần: giữ lại các thông tincần thiết của thành phần, giấu thông tin không cần thiết và làm cho mô tả thành phầntrở nên đơn giản và hiệu quả hơn.
Trong khóa luận tốt nghiệp này, bằng việc sử dụng lý thuyết về relationalinterface, tôi xây dựng một công cụ tự động phân tích, trích rút các thành phần có
trong file mã nguồn Java và biến đổi nó thành các relational interface, thực hiện việckết hợp tự động các interface này với nhau Để từ đó, ta có thể biết được khả năng kếthợp của các thành phần này với nhau Interface mới được kết hợp vẫn giữ nguyên tínhchất của các interface cũ Qua đó, ta cũng có thể dự đoán được giá trị đầu ra của cácthành phần nếu biết được giá trị đầu vào thông qua các tính chất.
II
Trang 4Ứng dụng Relational Interface cho Java Đỗ Duy Hưng
1.2 Nội dung bài toán 1
1.3 Cấu trúc khóa luận 2
CHƯƠNG 2: GIỚI THIỆU CHUNG VỀ ĐẶC TẢ VÀ GIAO DIỆN 3
CHƯƠNG 3: NỘI DUNG LÝ THUYẾT VỀ RELATIONAL INTERFACE 9
3.1 Sơ bộ về bài viết và các ký hiệu 9
4.2 Mục tiêu của bài toán 25
4.3 Hướng giải quyết bài toán 25
4.3.1 Tạo relational interface tự động từ phương thức 25
4.3.2 Tính input assumption tự động 27
4.3.3 Tính ξ mới được tạo ra tự động 27
III
Trang 5Ứng dụng Relational Interface cho Java Đỗ Duy Hưng
5.3.1 Phân tích file mã nguồn 43
5.3.2 Chuyển những phương thức này thành relational interface 44
5.3.3 Kết hợp các interface 46
5.3.4 Dự đoán kết quả: 47
5.4 Đánh giá 48
CHƯƠNG 6: KẾT LUẬN 49
6.1 Kết luận về khóa luận 49
6.2 Hướng phát triển trong tương lai 49
Phụ lục 51
Phụ lục 1: Nội dung mã nguồn file thử nghiệm Sample.java 51
IV
Trang 6Ứng dụng Relational Interface cho Java Đỗ Duy Hưng
Bảng các kí hiệu nghĩa tiếng anh
Trang 7Ứng dụng Relational Interface cho Java Đỗ Duy Hưng
Danh mục hình vẽ
VI
Trang 8CHƯƠNG 1: MỞ ĐẦU
Hiện nay, với sự phát triển mạnh mẽ của công nghệ thông tin, nhiều hệ thống lớnđược xây dựng nên nhằm mục đích giải quyết những bài toán với độ phức tạp tươngđương Với kích thước và độ phức tạp của những hệ thống như vậy, đòi hỏi phải cómột phương pháp thiết kế hợp lý, hiệu quả và đáng tin cậy Phương pháp thiết kế dựatrên thành phần đáp ứng được yêu cầu này, bởi vì, thay vì phải thiết kế toàn bộ từ đầu,hệ thống được thiết kế như là một tập các thành phần Các thành phần này hoặc làđược xây dựng lại từ đầu, hoặc là được thừa kế từ những thành phần khác Do vậy mỗithành phần phải có tính độc lập cao và chuẩn đặc tả rõ ràng Điều này thường được thểhiện qua interface (giao diện) của thành phần Một interface có thể coi như một đặc tảcủa một thành phần Việc kết hợp các thành phần cũng thông qua việc kết hợp cácinterface.
Trong phương pháp thiết kế dựa trên thành phần, interface chính là đặc tả củathành phần, nên quá trình đặc tả interface là một trong những bước quan trọng, cầnđược quan tâm Do vậy, trong khóa luận này tôi muốn đề cập đến phương pháp xâydựng interface cho mỗi thành phần một cách tự động
Hiện nay có rất nhiều lý thuyết về interface được đưa ra để mô tả thành phần.Tuy nhiên, các các interface này thường gặp phải một số khó khăn như không bắt đượcquan hệ giữa giá trị đầu vào và đầu ra, hay khó khăn trong việc kết hợp các interfacevới nhau Để khắc phục những nhược điểm này, tôi đề xuất việc sử dụng relationalinterface trong đặc tả interface cho mỗi thành phần.
Nhiệm vụ chính của bài toán là xây dựng công cụ chuyển đổi các thành phần cótrong mã nguồn của ngôn ngữ lập trình hướng đối tượng thành relational interface, rồikết hợp các interface này với nhau một cách tự động.
Trang 91.3Cấu trúc khóa luận
Phần còn lại của khóa luận được cấu trúc như sau:
Chương 2: Giới thiệu chung về kỹ nghệ hướng thành phần, phương pháp hìnhthức, đặc tả hình thức, đặc tả giao diện Một số loại interface (giao diện) cùng vớinhững ưu điểm, hạn chế của chúng Giới thiệu chung về relational interface.
Chương 3: Mô tả nội dung lý thuyết của relational interface, về môi trường vàkhả năng lắp ghép Lý thuyết về kết hợp relational interfaces [7].
Chương 4: Áp dụng lý thuyết về relational interface và một số lý thuyết khác đểxây dựng công cụ tự động chuyển đổi từ file mã nguồn Java sang relational interface.
Chương 5: Thử nghiệm công cụ và đánh giá.Chương 6: Kết luận.
Trang 10CHƯƠNG 2: GIỚI THIỆU CHUNG VỀ ĐẶC TẢ VÀ GIAO DIỆN
Công nghệ phần mềm hướng thành phần (component-based softwareengineering [8]) là một trong những bước tiến của quá trình sản xuất phần mềm trong
công nghiệp Nhờ vào đó, việc sản xuất phần mềm trở nên phát triển mạnh mẽ.
Ta cùng nhìn lại các ngành kĩ nghệ khác Mỗi ngành kĩ nghệ đều có riêng chomình một số thành tố cơ bản Sự khác biệt của công nghệ phần mềm so với các ngànhkĩ nghệ khác là ở chỗ sự lắp ráp các thành phần khác nhau của phần mềm còn mangtính tùy biến Nghĩa là đưa ra cùng hai linh kiện (hay thành phần) phần mềm với cùngmột thiết kế, hai lập trình viên có thể lắp ráp theo cách khác nhau.
Nhận thức được điều này, kỹ nghệ hướng thành phần trong sản xuất phần mềmđược bắt đầu áp dụng Điều cơ bản mà mỗi thành phần phải có là: tính độc lập cao vàcó chuẩn đặc tả rõ ràng cho từng thành Đặc tả này phải không phụ thuộc vào cấu trúcbên trong của thành phần Dựa trên 2 điểm cơ bản này của một thành phần, điều đầutiên khi bắt đầu thiết kế thành phần là quan tâm đến đặc tả của thành phần Điều này
thường được thể hiện qua interface (giao diện) Tiếp theo, tính độc lập của thành phần.
Do tất cả các thành phần được kết nối qua interface thay vì trực tiếp, mọi quá trình xâydựng bên trong thành phần đều được khép kín Sự phụ thuộc sẽ chủ yếu dựa vàointerface Vì vậy sẽ tách được sự phụ thuộc về cách xây dựng bên trong.
Việc xây dựng thành phần có thể bằng bất cứ phương pháp nào dù là lập trìnhcấu trúc hay lập trình hướng đối tượng.
Phương pháp hình thức bao gồm một số các hoạt động khác nhau như: đặc tả hệthống hình thức, dẫn chứng và phân tích đặc tả, phát triển chuyển đổi, và kiểm chứngchương trình Tất cả các hoạt động này đều phụ thuộc vào đặc tả hình thức của phầnmềm Một đặc tả hình thức phần mềm là một đặc tả được thể hiện bằng một loại ngôn
Trang 11ngữ mà từ vựng, cú pháp, ngữ nghĩa của nó được định nghĩa một cách hình thức Điềunày có nghĩa là ngôn ngữ đặc tả phải được dựa trên các khái niệm toán học với thuộctính đã được nghiên cứu và dễ hiểu [3].
2.2.1 Các phương pháp hình thức
Trong tin học, thuật ngữ phương pháp hình thức [8] (ngôn ngữ hình thức, đặc tảhình thức,…) thường được dùng để chỉ các kỹ thuật dựa trên cơ sở toán học dùngtrong quá trình mô tả chi tiết (đặc tả), phát triển và kiểm chứng các hệ thông phầnmềm cũng như phần cứng.
Cách tiếp cận này thường áp dụng cho các hệ thống có kết cầu chặt chẽ, đòi hỏiđộ tin cậy và tính an toàn cao, để đảm bảo rằng trong quá trình xây dựng, phát triển hệthống không xảy ra một lỗi nào, hoặc nếu có thì cũng là rất ít.
Các phương pháp hình thức đặc biệt hiệu quả trong các giai đoạn đầu của quátrình xây dựng hệ thống (thường ở giai đoạn xác định yêu cầu và đặc tả hệ thống), tuynhiên, chúng cũng có thể được dùng trong toàn bộ quy trình phát triển hệ thống.
Các phương pháp hình thức có thể được xếp loại theo 3 mức độ như sau:
Mức 0: Đặc tả hình thức được sử dụng để đặc tả hệ thống trước khi phát triển nó.Trong nhiều trường hợp thì việc sử dụng phương pháp hình thức ở giai đoạn này tỏ rađặc biệt hiệu quả, nhất là về mặt chi phí.
Mức 1: Phát triển và kiểm chứng hình thức có thể được áp dụng để tạo ra một
chương trình (hay một hệ thống) một cách tự động, dựa trên các đặc tả hình thức đã cótrước đó Quá trình này đặc biệt thích hợp đối với các hệ thống đòi hỏi độ tin cậy vàtính an toàn cao.
Mức 2: Chứng minh tự động.
2.2.2 Đặc tả
Mô tả các cấu trúc, hoạt động của các sự vật hiện tượng, quá trình nào đó Việcmô tả này có thể ở mức độ khái quát, nhưng cũng có thể là những mô tả ở mức độ hếtsức chi tiết.
Trang 12Có nhiều ngôn ngữ cho phép đặc tả:o Ngôn ngữ tự nhiên
o Ngôn ngữ toáno Ngôn ngữ lập trình o Ngôn ngữ hình thức
2.2.3 Đặc tả hình thức
Đặc tả hình thức là đặc tả với các tính chất:o Chính xác và nhất quán.
o Ngắn gọn nhưng đầy đủ.o Có thể xử lý bởi máy tính.Đặc tả hình thức có các ứng dụng như sau:
o Sử dụng trong giai đoạn phân tích, thiết kế, nhằm mục đích tạo ra cácphác hoạ chi tiết, cụ thể và chặt chẽ về hệ thống sẽ được xây dựng.o Trong quá trình xây dựng hệ thống, các đặc tả này sẽ là công cụ định
hướng để đảm bảo hệ thống được xây dựng một cách phù hợp và đầyđủ.
o Sau khi hệ thống được xây dựng thì đặc tả sẽ đóng vai trò là thước đođể kiểm chúng, khẳng định hệ thống được tạo ra có đúng đắn và tin cậyhay không.
2.3.1 Đặc tả giao diện
Các hệ thống lớn thường được chia thành các hệ thống nhỏ và các hệ thống nhỏnày được phát triển độc lập Các hệ thống nhỏ tận dụng các hệ thống nhỏ khác, nên
Trang 13một phần quan trọng của quá trình đặc tả là định nghĩa những giao diện của hệ thốngnhỏ Ngay khi các giao diện được định nghĩa và chấp nhận, các hệ thống nhỏ có thểđược phát triển độc lập.
Giao diện của hệ thống nhỏ thường được định nghĩa như là một tập các đối tượnghoặc kiểu dữ liệu trừu tượng Chúng mô tả dữ liệu và những hoạt động mà có thể đượctruy cập thông qua giao diện của các hệ thống nhỏ Do đó, một đặc tả giao diện của hệthống nhỏ có thể được tạo nên bằng cách kết hợp đặc tả của các thành phần được tạonên bởi các giao diện hệ thống nhỏ [3].
2.3.2 Thành phần và giao diện
Một cách chung mô tả cấu trúc của hệ thống là sơ đồ khối Một sơ đồ khối baogồm các thực thể gọi là các khối được kết nối với nhau bởi một liên kết Cách mô tảnày phân loại một cấu hình (mạng) cho truyền thông giữa các khối Một khối có thểtrình bày một thành phần vật lý hoặc logic, ví dụ như một phần của phần cứng hoặcphần mềm Nhưng phổ biến hơn là nó trình bày một mô tả trừu tượng của thành phầnhoặc một mô tả của interface thành phần Mô tả thành phần trả lời cho câu hỏi: Nó làmgì ? Và một mô tả interface trả lời cho câu hỏi: nó được sử dụng như thế nào? Mô tảthành phần có thể rất gần với thành phần cơ bản, hoặc nó có thể chỉ định một vài thuộctính đơn của thành phần cơ bản Các mô tả của interface cũng có thể là chi tiết nhiềuhoặc ít, nhưng chúng phải bao gồm đầy đủ thông tin để xác định các thành phần cơ sởđược kết hợp và liên kết như thế nào Và giống như bất kỳ việc trừu tượng hóa tốt nào,chúng không nên bao gồm nhiều thông tin Các nhà thiết kế thành phần thường tạo nêncác giả định về môi trường mà trong đó một thành phần có thể được triển khai [5].
Trang 14Extended interfaces: giống với relational interface, tuy nhiên interface này
không được đánh giá cao bởi hạn chế tính chất của những bước làm mịn và thực thiđộc lập là không có[6].
Moore interfaces: được định nghĩa bởi công thức ϕi và ϕo Trong đó công thức ϕi
chỉ rõ giá trị hợp lệ của các biến input tại các trạng thái tiếp theo khi mà trạng thái hiệntại được cho trước, và công thức ϕo chỉ rõ giá trị hợp lệ của các biến output tại các
trạng thái tiếp theo khi mà trạng thái hiện tại được cho trước Công thức này không
cho phép miêu tả mỗi quan hệ giữa input và output tại cùng một trạng thái [2].
Hạn chế của các interface trên là không bắt được mối quan hệ giữa input vàoutput Lý thuyết về relational interface giải quyết các vấn đề đó bằng việc xây dựngmột thành phần ξ trong interface ξ là tập tất các quan hệ giữa input và output, mô tảràng buộc giữa input và môi trường.
Việc kết hợp tổng quát các interfaces, có thể đạt được thông qua hai toán tử có
tên là parallel conposition ( kết hợp song song ) và connection ( kết nối ) [5],[6] Điềunày cho phép tạo ra các feedback loop (phản hồi lặp) tùy ý Khi nghiên cứu vềrelational interface, có rất nhiều vấn đề nảy sinh từ feekback loop đồng bộ Có thểtránh vẫn đề được nảy sinh bởi feekback loop bằng cách hạn chế các trường hợp màfeedback loop được cho phép Cụ thể, ta cho phép một output của một interface I đượckết nối với một trong các input x của nó chỉ trong trường hợp I là Moore đối với x, cónghĩa ràng buộc của I không phụ thuộc vào x.
2.3.4 Statelful và stateless interface
[7] nói đến hai dạng của interface là stateless interface ( giao diện phi trạng thái )và stateful interface ( giao diện có trạng thái ) Stateful interface, một ràng buộc có thểkhác nhau tại mỗi trạng thái khác nhau Stateless interface có thể được xem như mộttrường hợp đặc biệt của stateful interface khi ràng buộc là giống nhau ở tất cả các
trạng thái.
Trong trường hợp stateful, ta phân biệt giữa formed interface và formable interface (hai khái niệm này trùng khớp trong trường hợp stateless interface).Với well-formed interface, các ràng buộc luôn luôn được thỏa mãn tại mọi trạng tháicó thể đạt được (reachable state) Well-formable interface không nhất thiết phải là
Trang 15well-well-formed, nhưng mà có thể được chuyển thành well-formed bằng cách hạn chế mộtcách hợp lý các input.
2.3.5 Relational interface
Trong khóa luận này, tôi muốn đề cập đến relational interface [7] Relationalinterface là một interface chỉ ra những relation ( quan hệ ) giữa những input và output.Xem xét ví dụ về một thành phần đồng bộ sẽ lấy input là một số n ≥ 0 và trả về outputlà n + 1 Interface cho mỗi thành phần có thể được mô tả như là một quan hệ nhị phângiữa input và output: các relation chứa tất cả các cặp (n, n+1) với n ≥ 0 Mỗi mộtrelation có thể được hiểu như một ràng buộc giữa thành phần và môi trường (environment ) của nó: ràng buộc chỉ ra rằng với mỗi input hợp lệ, thoải mãn điều kiệnmà môi trường cung cấp cho thành phần thì sẽ có nhưng output hợp lệ được tạo ra từ
thành phần đó
Tính năng nổi trội của relational interface là ở việc giải quyết vấn đề bắt được
quan hệ giữa input và output Ngoài ra, lý thuyết về composition (kết hợp), connection(kết nối), feedback loop (phản hồi lặp) có trong relational interface có thể dẫn tới
những khẳ năng:
a Thiết kế phần mềm dựa trên relational interface là sự kết hợp giữa cácinterface mà trong đó, các ràng buộc phải được thỏa mãn, hoặc có thểthỏa mãn.
b Ta cũng có thể kiểm chứng và dự đoán được khả năng kết hợp của cácinterface lại với nhau.
c Ngoài ra, dựa trên các rằng buộc, ta cũng có thể dự đoán được kết quảđầu ra từ dữ liệu đầu vào.
d Khả năng tối ưu hóa thiết kế phần mềm bằng tính chất refinement vàshared-refinement.
Một khái niệm quan trọng của relational interface mà đã được nhắc đến ở trên đólà well-formed và well-formable Điều này giúp cho các thành phần, hay nói đúng hơnlà các relational interface được liên kết hay có thể liên kết được với nhau.
Trang 16Với những định hướng này, và do giới hạn của khóa luận, tôi sẽ giải quyết vấn đềa, b, c Vấn đề và những chế còn lại sẽ được giải quyết trong những nghiên cứu saunày.
Trang 17CHƯƠNG 3: NỘI DUNG LÝ THUYẾT VỀ RELATIONALINTERFACE
Tóm tắt về relational interface đã mô tả ở phần 2.3.5, trong chương này, tôi sẽ đềcập đến nội dung lý thuyết về relational interface Nội dung lý thuyết này được sửdụng từ [7].
Trong bài viết này ta sử dụng first-order logic (FOL) như là một ngôn ngữ để mô
tả ràng buộc Ta sử dụng 2 hằng số logic đó là true và false Các ký hiệu: ¬ : phép phủ
định, ∧ : phép và, ∨ : phép hoặc, → : phép suy ra, ≡ : phép tương đương, ∀ : với mọivà ∃ : tồn tại.
Chúng ta sử dụng kí hiệu ≔ để định nghĩa cho một khái niệm hoặc một kí hiệumới, ví dụ: x0 ≔ max {1, 2, 3} chỉ ra rằng x0 là giá trị lớn nhất của tập {1, 2, 3}
Gọi V là tập hữu hạn các biến Một thuộc tính trên V là một công thức FOL ϕ nhưvậy thì với mọi biến tự do của ϕ đều thuộc V Một tập tất cả các thuộc tính trên V được
kí hiệu là ℱ(V) Coi ϕ là một thuộc tính trên V và V’ là tập con hữu hạn của V, V’ ={v1, v2, …, vn} Khi đó, ∃V’ : ϕ là một cách viết ngắn gọn của ∃v1 : ∃v2 : … : ∃vn : ϕ.Tương tự như vậy, ∀V’ : ϕ là cách viết ngắn gọn của ∀v1 : ∀v2 : … : ∀vn : ϕ.
Chúng ta hoàn toàn có thể giả định rằng tất cả các biến là kiểu, có nghĩa là tất cảcác biến được kết hợp với một tập xác định nào đó Một phép gán trên một tập các
biến V là một hàm cho tướng ứng mỗi biến trong V với một giá trị nào trong tập xácđịnh của biến đó Một bộ các phép gán trên V được kí hiệu là 𝒜(V) Nếu a là một phépgán ( assignment ) trên V1 và b là một là một phép gán trên V2 ,và V1 và V2 là 2 tập tách
rời thì chúng ta sẽ sử dụng (a, b) để kí hiệu một phép gán kết hợp trên V1 ∪ V2 Một
công thức ϕ là thỏa mãn nếu ở đó tồn tại một phép gán a trên các biến tự do của ϕ để athỏa mãn ϕ, được kí hiệu là a ⊨ ϕ Một công thức ϕ là hợp lệ nếu nó được thỏa mãn
bởi mọi phép gán.
Nếu coi S là một tập hợp, S* là kí hiệu của tập hợp của tất cả các chuỗi hữu hạnđược tạo nên bởi các phần tử trong S S* bao gồm cả các chuỗi rỗng, kí hiệu là ε Nếu
Trang 18s, s’ thuộc S* thì s ∙ s’ là phép nối của s và s’ |s| kí hiệu độ dài của s ∈ S*, với |ε| = 0và |s ∙ a| = |s| + 1, với a ∈ S Nếu s = a1a2…an, thì phần tử thứ i của chuỗi, ai, được kí
hiệu là si, với i = 1, … , n.
Định nghĩa 1 (Relational interface): một relational interface (hay một interfaceđơn giản) là 1 bộ I = ( X, Y, ξ ) Trong đó X, Y là 2 tập hữu hạn và tách rời của các biếninput và output tương ứng, và ξ là hàm tổng
ξ: 𝒜(X ∪ Y)* → ℱ(X ∪ Y)
Gọi 𝒜(V) là tập tất cả các phép gán trên tập các biến V Do đó, 𝒜(X ∪ Y)* là tậptất cả các chuỗi hữu hạn của các phép gán trên X ∪ Y Chú ý rằng X hoặc Y có thể làrỗng: nếu X là rỗng thì I là interface nguồn, nếu Y là rỗng thì I là một bộ chứa (sink).Một phần tử của 𝒜(X ∪ Y)* được gọi là một trạng thái (state) Trạng thái khởi tạo làmột chuỗi rỗng ε Gọi ℱ(X ∪ Y) là một tập tất cả các thuộc tính (property) trên X ∪ Y.Do đó, ξ liên kết với mỗi trạng thái s một công thức ξ(s) trên X ∪ Y Công thức này thểhiện như là ràng buộc (contract) giữa I và môi trường của nó tại trạng thái đó Khiràng buộc thay đổi thì trạng thái của I thay đổi.
Định nghĩa 2 (Assumption , Guarantees): Cho một ràng buộc ϕ ∈ ℱ(X ∪ Y),
input assumptions của ϕ có công thức in(ϕ) ≔ ∃Y : ϕ Output guarantees của ϕ có
công thức out(ϕ) ≔ ∃X : ϕ Chú ý rằng in(ϕ) là một thuộc tính trên X và out(ϕ) là mộtthuộc tính trên Y, và ϕ → in(ϕ), ϕ → out(ϕ) là công thức hợp lệ với mọi ϕ.
Giả sử tại thời điểm ban đầu của một quy trình cho trước, trạng thái của I là s.Môi trường sẽ biểu diễn I với một phép gán aX trên biến input X, như vậy aX thỏa mãn
giả thiết input in(ξ (s)) Sau đó, I sẽ chọn một phép gán aY trên biến output Y, để cả 2phép gán đều thỏa mãn ξ(s) Những phép gán được kết hợp với nhau tạo ra 1 phép gántrên X ∪ Y, a ≔ (aX, aY) Tại thời điểm cuối của tiến trình, trạng thái mới của I là s ∙ a.
Định nghĩa 3 (Stateless interface): Một interface I = (X, Y, ξ) là một interface phitrạng thái nếu với mọi s, s’ ∈ 𝒜(X ∪ Y)*, ξ(s) = ξ(s’).
Trang 19Trong interface phi trạng thái, ràng buộc độc lập với trạng thái Với một
interface phi trạng thái, ta có thể coi ξ như là một thuộc tính, thay vì một hàm ánh xạcác trạng thái tới các thuộc tính Để rõ ràng hơn, ta sẽ biểu diễn I = (X, Y, ϕ) cho
interface phi trạng thái, với ϕ là thuộc tính trên X ∪ Y Ta cũng sẽ viết in(I) và out(I)thay cho in(ϕ) và out(ϕ).
Ví dụ 1: Xem xét 1 thành phần với giả thiết input là một số dương n và trả về giátrị n hoặc n + 1 ở output Chúng ta có thể biểu diễn thành phần này theo nhiều cách
khác nhau Một trong những cách biểu diễn theo interface phi trạng thái là:
này nó chấp nhận tất cả các input Ta có, in(I2) ≡ true.
Nhìn chung, không gian trạng thái của một interface là vô hạn Tuy nhiên trong
một số trường hợp chỉ cần một tập hữu hạn các trạng thái để chỉ ra ξ Ví dụ ξ có thể
được chỉ ra bởi một máy tự động hữu hạn các trạng thái Mọi trạng thái trong máy tự
động được gán nhãn với một ràng buộc Mọi bước chuyển tiếp (transition) của máy tựđộng được gán nhãn với một guard, hay nói cách khác, nó là một điều kiện trên cácbiến input và output Những bước chuyển tiếp hướng ra ngoài của một trạng thái phải
có các guard tách rời, và hợp của những guard phải là true Một interface có thể được
chỉ rõ như một máy tự động hữu hạn trạng thái được gọi là một interface hữu hạn trạng
thái (finite-state interface).
Các A/G interface là trường hợp đặc biệt của relational interface Một A/Ginterface phi trạng thái là một bộ (X, Y, ϕx, ϕy), trong đó ϕx là một thuộc tính trên Xbiểu diễn giả thiết input và ϕy là một thuộc tính trên Y biểu diễn những bảo đảm
Trang 20output Interface này có thể được biểu diễn đơn giản như là một relational interface (X,Y, ϕx ∧ ϕy).
Định nghĩa 1 cho phép ràng buộc ξ(s) tại một trạng thái s nào đó trở thành một
thuộc tính không thể thỏa mãn Mặt khác, nhìn chung không phải tất cả các trạng thái
có thể đạt được (reachable), vì không phải các input hoặc output là hợp lệ Chúng ta
có thể quan tâm đến các trạng thái với những ràng buộc không thể thỏa mãn khi màcác trạng thái này là có thể đạt được.
Một “run” của I là một trạng thái s = a1 ak với k ≥ 0 (nếu k = 0 thì s = ε), để ∀i ∈{1, …, k } : ai ⊨ ξ(a1…ai-1) Một trạng thái là có thể đạt được nếu nó là một “run” Tậptất cả các trạng thái có thể đạt được của I được kí hiệu rồi ℛ(I), với mọi I.
Định nghĩa 4 ( Well-formed interface ): Một interface I = (X, Y, ξ) được coi làwell-formed nếu tất cả s ∈ ℛ(I), ξ(s) là có thể thể thoả mãn.
Ví dụ 2: Đặt I ≔ ({x}, {y}, ξ), với x, y là kiểu boolean, và ξ(ε) ≔ true, ξ((x, _ ) ∙s) ≔ false, ξ((¬x, _) ∙ s) ≔ true, với tất cả s (x, _) chỉ ra bất cứ phép gán nào với x là
true và (¬x, _) chỉ ra bất cứ phép gán nào với x là false I không là well-formed, vì nó
có những trạng thái có thể đạt được với ràng buộc là false ( tất cả các trạng thái bắt
đầu với x là true) I có thể được chuyển đổi sang một well-formed interface bằng cách
hạn chế ξ(ε) để tránh được những trạng thái có thể đạt được với những ràng buộckhông thể thỏa mãn Trong trường hợp cụ thể, đặt ξ(ε) ≔ ¬x, ta sẽ đạt được mục tiêu
well-ℛ(I’), ξ’(s) ≡ ξ(s) ∧ ϕs, trong đó ϕs là một vài thuộc tính trên X.
Rõ ràng, tất cả các well-formed interface là well-formable interface, nhưng điều
ngược lại thì không đúng, như trong ví dụ 2 đã chỉ ra Tuy nhiên, với interface phitrạng thái, 2 phép biều diễn này trùng nhau.
Trang 21Định lý 1: Một interface phi trạng thái I là well-formed nếu nó là well-formable.Định nghĩa 6 (Tương đương - Equivalence): 2 interface I = (X, Y, ξ) và I’ = (X’,Y’, ξ’) là tương đương, kí hiệu là I ≡ I’, nếu X = X’, Y = Y’, và với tất cả s ∈ ℛ(I) ∩
ℛ(I’), công thức ξ(s) ≡ ξ’(s) là hợp lệ.
Bổ đề 1: Nếu I ≡ I’ thì ℛ(I) ≡ ℛ(I’)
Định nghĩa 7 (Môi trường): Một interface là một bộ E = (X, Y, hX, hY), trong Xvà Y được định nghĩa trong Định nghĩa 1, và hX và hY là các hàm tổng.
hX : 𝒜(X ∪ Y)* → ℱ(X), hY : 𝒜(X ∪ Y)* → ℱ(Y)
hX biểu diễn những đảm bảo trên những input X, cái mà môi trường cung cấp tạinhững trạng thái cho trước, hY biểu diễn những đảm bảo mà môi trường kì vọng trên
output Y.
Các trạng thái được định nghĩa cho môi trường thì tương tự như là cho những
interface Một môi trường phi trạng thái (stateless environment) là môi trường mà hX(s)là và hY(s) là hằng số với tất cả các trạng thái s Chúng ta định nghĩa tập hợp tất cả cáctrạng thái có thể đạt được của một môi trường E, kí hiệu là ℛ(E), theo cách tương tựnhư đối với interface: ε ∈ ℛ(E), và s ∙ a ∈ ℛ(E) nếu s ∈ ℛ(E) và a = (aX, aY) là một
phép gán để aX ⊨ hX(s) và aY ⊨ hY(s) Một môi trường E được coi là “live” nếu với mọis ∈ ℛ(E), cả hX(s) và hY(s) là có thể thỏa mãn.
Định nghĩa 8 (Khả năng lắp ghép): Interface I = (X’, Y’, ξ) có thể ghép vào vớimôi trường E = (X, Y, hX, hY), được kí hiệu I ⊨ E, nếu X’ = X, Y’ = Y, và với tất cả s ∈
ℛ(IE), thì công thức sau là hợp lệ:
trong đó IE là một interface được định nghĩa như sau:
Trang 22ξE(s) ≔ ξ(s) ∧ hX(s), với tất cả s ∈ 𝒜(X ∪ Y)* (3)
Khả năng lắp ghép có thể được nhìn nhận một cách trực quan như là một trò chơi
giữa interface và môi trường Giả sử s là trạng thái hiện tại của I và E (ban đầu, s = ε).Nếu hX(s) không thỏa mãn thì E quyết định dừng cuộc chơi Mặt khác, E chọn lựa mộtvài phép gán đầu vào ax thỏa mãn hX(s) Nếu ax vi phạm in(ξ(s)), thì điều kiện (1) sẽ bị
vi phạm, và I sẽ không ghép được với E: và E sẽ bị “đổ lỗi” cho vi phạm này, điều nàynày sẽ cung cấp những bảo đảm không chắc chắn cho input Mặt khác I chọn một phépgán đầu ra aY để phép gán đầu vào-đầu ra a ≔ (ax, ay) thỏa mãn ξ(s) Nếu aY vi phạm
hY(s), thì điều kiện (1) sẽ bị vi phạm, một lần nữa điều này có nghĩa là I không thểghép được với E: trong trường hợp này I bị “đổ lỗi”, vậy điều này cung cấp một bảođảm không chắc chắn cho output Mặt khác, một quy trình là hoàn thiện, và một trạngthái mới (cho cả I và E) là s ∙ a Trò chơi tiếp tục với cách thức tương tự.
Ví dụ 3: Xem xét interface phi trạng thái I1 và I2 từ ví dụ 1 và môi trường phi
trạng thái E1 ≔ ({x}, {y}, x > 0, y > 0) Có thể thấy rằng cả I1 và I2 có thể lắp ghép với
E2 ≔ ({x}, {y}, x ≥ 0, y > 0): ràng buộc x ≥ 0 không đủ mạnh để đạt giả thiết input x >
0 Cần chú ý rằng I2 không áp đặt giả thiết input một cách rõ ràng, tuy nhiên, nó lạingầm sử dụng giả thiết này, vì nó không tạo nên bảo đảm nào khi giả thiết x > 0 bị viphạm Cuối cùng, xem xét E3 ≔ ({x}, {y}, true, true) I2 có thể ghép với E3: E3 không
cung cấp bảo đảm trên input nhưng cũng không kì vọng bảo đảm trên output I1 không
thể ghép với E3 vì true x > 0.
Interface IE được định nghĩa từ (2) và (3) có mục đích là chụp lấy trạng thái có
thể đạt được của việc tổ hợp vòng lặp khép kín của E và I Những trạng thái có thể đạtđược này là tập con của các trạng thái có thể đạt được của I, bởi vì nhìn chung môitrường E chỉ có thể cung cấp một tập bị hạn chế các input, trong số tất cả các input hợplệ với I Hàm ràng buộc ξE của IE chụp được chính xác điều này Bổ đề sau đây chỉ ra
rằng trạng thái có thể đạt được của IE đúng là một tập con của các trạng thái có thể đạt
được của I.
Bổ đề 2: Cho I là một interface, E là một môi trường, và IE được định nghĩa như
trong định nghĩa 8 Khi đó ℛ(IE) ⊆ ℛ(I).
Bổ đề 3: Cho I, I’ là 2 interface, E là một môi trường và IE, I’E được định nghĩa
như trong định nghĩa 8 Nếu I ≡ I’ thì ℛ(IE) = ℛ(I’E).
Trang 23Định lý 2: Nếu một interface I là well-formable thì tồn tại một môi trường thực(live environment) E để I ⊨ E.
Vì well-formed có hàm ý là well-formable, nên hệ quả của định lý 2 là mọiinterface là well-formed có thể được ghép với một vài môi trường thực Chú ý rằng tồntại những interface không là well-formed tuy nhiên lại có thể ghép được với nhữngmôi trường thực: những môi trường thực này hạn chế input, nên không bao giờ đạt
được các trạng thái với những ràng buộc không thể thỏa mãn Cũng tồn tại những
interface là non-well-formed được mà có thể ghép được với những môi trường khôngthực (non-live environment): những môi trường này “dừng lại” sau một vài điểm, tứclà, để hX(s) ≡ false với một vài trạng thái s Cuối cùng, tồn tại các interface phi trạng
thái và là non-well-formed Các interface này có thể được ghép vào các môi trường
không thực ít quan trọng mà dừng ngay lập tức.
Định nghĩa 9 (Môi trường W.R.T tương đương): 2 interface I và I’ là 2 môitrường w.r.t tương đương, kí hiệu là I ≡E I’, nếu với bất kì môi trường E nào, I có thểghép được với E nếu I’ có thể ghép được với E.
Định lý 3: Với bất kì interface I, I’, I ≡ I’ nếu I ≡E I’.
Chúng ta định nghĩa 2 dạng của việc kết hợp (Composition) Thứ nhất, chúng ta
có thể kết hợp 2 interface I1 và I2 bằng cách kết nối một vài các biến ra vào của I1 với
một vài các biến input của I2 Một output có thể được kết nối với một vài input, nhưngmột input có thể được kết nối với nhiều nhất một output Những kết nối sẽ tạo ra một
interface phi trạng thái mới Sau đó, quá trình kết hợp có thể được lặp lại để tạo nênnhững sơ đồ interface tùy ý Việc kết hợp bằng kết nối mang tính liên kết, do đó thứ tựmà các interface được kết hợp là không quan trọng.
2 interface I = (X, Y, ξ) và I’ = (X’, Y’, ξ’) được gọi là tách rời nếu chúng có tậpbiến input và output tách rời nhau: (X ∪ Y) ∩ (X’ ∪ Y’) = ∅.
Định nghĩa 10 (Kết hợp bằng kết nối): Đặt Ii = (Xi, Yi, ξi), với i = 1, 2 là làinterface tách rời Một kết nối θ giữa I1, I2 là một tập hữu hạn các cặp biến, θ = {(yi, xi)
| i = 1, …, m}, như vậy: (1) ∀(y, x) ∈ θ : y ∈ Y1 ∧ x ∈ X2, và (2) ∀(y, x), (y’, x’) ∈ θ : x
Trang 24= x’ → y = y’ Các biến input và output bên ngoài là một tập hợp các biến Xθ(I1, I2) và
Yθ(I1, I2) được lần lượt định nghĩa như sau ( với Xθ ≔ {x | ∃(y, x) ∈ θ} ):
Và với i = 1, 2, si được định nghĩa là phép chiếu từ s tới các biến trong Xi ∪ Yi
Chú ý rằng, trong cách định nghĩa θ, Xθ ⊆ X2 Điều này hàm ý rằng X1 ⊆ Xθ(I1, I2),
tức là mọi biến input của I1 cũng là mọi biến input của θ(I1, I2).
Một kết nối θ được phép rỗng Trong trường hợp này ρθ ≡ true Và việc kết hợp
này có thể được xem như là một kết hợp song song của 2 interface Nếu θ là rỗng, thì
ta viết I1 || I2 thay vì viết θ(I1, I2) Ta có thể kì vọng ràng buộc của việc kết hợp songsong tại một trạng thái toàn cục cho trước là một phép hợp của các ràng buộc gốc tạitrạng thái cục bộ tương ứng, điều này hàm ý rằng việc kết hợp song song có tính giaohoán.
Bổ đề 4: Xem xét 2 interface tách rời Ii = (Xi, Yi, ξi), i = 1, 2 Khi đó I1 || I2 = (X1 ∪
X2, Y1 ∪ Y2, ξ), trong đó ξ thỏa mãn với tất cả s ∈ 𝒜(X1 ∪ X2 ∪ Y1 ∪ Y2)*, thì ξ(s) =ξ1(s1) ∧ ξ2(s2), với i = 1, 2, si phép chiếu từ s tới Xi ∪ Yi
Định lý 4 (Kết hợp song song có tính giao hoán): cho 2 interface tách rời I1 và I2,
I1 || I2 ≡ I2 || I1.
Trang 25Định lý 5 (Kết nối có tính liên kết): Cho I1, I2, I3 là những interface Cho θ12 là
một kết nối giữa I1 và I2, θ13 là một kết nối giữa I1 và I3, và θ23 là một kết nối giữa I2 và
I3 Như vậy:
(θ12 ∪ θ23) (I1, θ23(I2, I3)) ≡ (θ13 ∪ θ23) (θ12(I1, I2), I3)
Hình 3.1: Sơ đồ một interface cho ví dụ 4
Ví dụ 4: Xem xét sơ đồ của interface phi trạng thái trong hình 1, với:Iid ≔ ({x1}, {y1}, y1 = x1)
I+1 ≔ ({x2}, {y2}, y2 = x2 + 1)
Ieq ≔ ({z1, z2}, {}, z1 = z2)
Sơ đồ này có thể được xem như là phép kết hợp tương đương:
θ2(I+1, θ1(Iid, Ieq)) ≡ (θ1 ∪ θ2)((Iid || I+1), Ieq)
với θ1 ≔ {(y1, z1)} và θ2 ≔ {(y2, z2)} Ta tiến hành hành tính toán ràng buộc của
interface định rõ bởi sơ đồ Cách làm này giúp cho việc xem xét kết hợp (θ1 ∪ θ2)((Iid ||
I+1), Ieq) dễ dàng hơn Định nghĩa θ3 ≔ θ1 ∪ θ2 Từ bổ đề 4 ta có:
Iid || I+1 = ({x1, x2}, {y1, y2}, y1 = x1 ∧ y2 = x2 + 1)
Do đó, với θ3((Iid || I+1), Ieq), công thức (4) cho ta:
Φ ≔ (y1 = x1 ∧ y2 = x2 + 1 ∧ y1 = z1 ∧ y2 = z2) → z1 = z2
Trang 26Bằng việc loại bỏ các phép lượng hóa, ta có:∀ y1, y2, z1, z2 : Φ ≡ x1 = x2 + 1
Ví dụ 5: Xem xét phép kết hợp θ3((Iid || I+1), Ieq) được nói đến trong ví dụ 4, cho Iy
là một interface phi trạng thái được định nghĩa như sau:
Bởi vì công thức trên là không hợp lệ, nên I4 không là well-formed.
Chú ý rằng tất các các interface trong ví dụ 5 là những interface phi trạng thái Vì
interface phi trạng thái, nên well-formedness và well-formability là trùng khớp, nên vídụ 5 chỉ ra rằng kết nối là không thể duy trì được well-formability: I4 là không là well-formable, ngay cả khi cả Iy và θ3((Iid || I+1), Ieq) là well-formed
Trang 27Các liên kết này có thể chụp được kết hợp nối tiếp nhưng không thể chụp được
feekback ( phản hồi ) Để chụp được feekback, ta định nghĩa một loại thứ 2 của kếthợp, gọi là kết hợp phản hồi (feedback composition) Trong loại kết hợp này, một biếnoutput của một interface I được kết nối với một trong các biến input x của nó Vớifeekback, I yêu cầu phải là Moore đối với x Một interface là Moore đối với một biếninput cho trước x có nghĩa là ràng buộc này có thể phụ thuộc vào trạng thái hiện tại vàphụ thuộc vào các biến input khác hơn là phụ thuộc vào x Nó cho phép kết nối mộtoutput tới x để hình thành một feekback loop mà không tạo nên các vòng nhân quả.
Định nghĩa 11 (Moore interface): Một interface I = (X, Y, ξ) là Moore đối với x ∈X nếu với tất cả các s ∈ ℛ(I), ξ(s) là một thuộc tính trên (X ∪ Y) \ {x} I là Moore khinó là Moore đối với mọi x ∈ X.
Định nghĩa 12 (Kết hợp bằng feedback): Cho I = (X, Y, ξ) là một Moore interfaceđối với một vài cổng vào x ∈ X Một kết nối feekback κ trên I là một cặp (y, x), để y ∈Y Định nghĩa ρκ ≔ (x = y) Kết nối phản hồi κ định nghĩa interface sau:
Định lý 6 (Feedback có tính giao hoán): Cho I = (X, Y, ξ) là Moore interface đốivới cả x1, x2 ∈ X, trong đó x1 ≠ x2 Cho κ1 = (y1, x1), và κ2 = (y2, x2) là các kết nối phản
hồi Khi đó κ1(κ2(I)) ≡ κ2(κ1(I)).
Hình 3.2: Sơ đồ một interface với feedback
Trang 28Ví dụ 7: Xem xét sơ đồ của các interface trong hình 2 Giả sử IM là một Mooreinterface đối với u Sơ đồ này có thể được diễn giải như là phép kết hợp
κ ( θ ( I1, (I2 || IM)) )
Trong đó: θ ≔ {(y1, z1), (y2, x2)} và κ ≔ (w, u).
Bổ đề 5: Cho I là một Moore interface đối với một vài biến input của nó, và choκ là một kết nối feedback trên I Khi đó ℛ(κ(I)) ⊆ ℛ(I).
Bổ đề 6: Cho I = (X, Y, ξ) là một Moore interface đối với x ∈ X, và κ = (y, x) làkết nối feedback trên I Cho κ(I) = (X \ {x}, Y ∪ {y}, ξκ) Khi đó với với bất kì s ∈
ℛ(κ(I)), công thức in(ξκ(s)) ≡ in(ξ(s)) là hợp lệ.
Định lý 7 (Feedback duy trì well-formed): Cho I là một Moore interface đối vớimột vài biến input của nó, và cho κ là một kết nối feedback trên I Nếu I là well-formed thì κ(I) là well-formed.
Feedback không duy trì khả năng well-formed:
Ví dụ 8: Xem xét một interface hữu hạn trạng thái If với 2 trạng thái, s0 (trạng thái
ban đầu) và s1, một biến input x và một biến output y If duy trì tại trạng thái s0 khi x ≠0 và chuyển từ trạng thái s0 sang trạng thái s1 khi x = 0 Cho ϕ0 ≔ y = 0 là ràng buộc tạitrạng thái s0 và cho ϕ1 ≔ false là ràng buộc tại trạng thái s1 If không là well-formed bởivì ϕ1 là không thỏa mãn, trong khi trạng thái s1 có thể đạt được If là well-formable, tuynhiên: If đủ để giới hạn ϕ0 thành ϕ’0 ≔ y = 0 ∧ x ≠ 0 Ký hiệu interface kết quả (làwell-formed) là I’f Cần chú ý If là Moore đối với x, trong khi I’f không là Moore với x.Cho κ là một kết nối feedback (y, x) Vì If là Moore, κ(If) được định nghĩa, và ràng
buộc của nó tại trạng thái s0 là y = 0 ∧ x = y, và ràng buộc của nó tại trạng thái s1 là
false ∧ x = y ≡ false κ(If) không là well-formable: quả thực y = 0 ∧ x = y hàm ý x = 0,do đó trạng thái s1 là không thể tránh khỏi.
Trang 29CHƯƠNG 4: XÂY DỰNG CÔNG CỤ CHUYỂN ĐỔI TỰ ĐỘNG TỪJAVA SANG RELATIONAL INTERFACE
Với lý thuyết về đặc tả hình thức interface cho phép thiết kế phần mềm dựa trênviệc kết hợp giữa các interface, và mỗi interface là đại diện cho một thành phần Trongchương này, tôi đưa ra mô hình thiết kế phần mềm dựa trên các interface.
4.1.1 Các thành phần của lớp trong ngôn ngữ lập trình hướng đối tượng
Hiện nay các ngôn ngữ lập trình hướng đối tượng phổ biến nhất đều tập trung
theo phương pháp phân lớp (class) trong đó có C++, Java, C# và Visual Basic.NET.
Một lớp có thể được hiểu là khuôn mẫu để tạo ra các đối tượng Trong một lớp,người ta thường dùng các biến để mô tả các thuộc tính và các hàm để mô tả cácphương thức của đối tượng Khi đã định nghĩa được lớp, ta có thể tạo ra các đối tượng
từ lớp này Để việc sử dụng được dễ dàng, thông qua hệ thống hàm tạo (constructor),
người ta dùng lớp như một kiểu dữ liệu để tạo ra các đối tượng.
Phương thức (method ) của một lớp thường được dùng để mô tả các hành vi của
đối tượng (hoặc của lớp) Ví dụ như đối tượng thuộc lớp điện thoại có các hành vi sau:Đổ chuông, chuyển tín hiệu từ sóng sang dạng nghe được, chuyển tín hiệu giọng nóisang dạng chuẩn, chuyển tín hiệu lên tổng đài.v.v Khi thiết kế, người ta có thể dùngcác phương thức để mô tả và thực hiện các hành vi của đối tượng Mỗi phương thứcthường được định nghĩa là một hàm, các thao tác để thực hiện hành vi đó được viết tạinội dung của hàm Khi thực hiện hành vi này, đối tượng có thể phải thực hiện các hànhvi khác Ví dụ như điện thoại phải chuyển tín hiệu giọng nói sang dạng chuẩn trướckhi chuyển lên tổng đài Cho nên một phương thức trong một lớp có thể sử dụngphương thức khác trong quá trình thực hiện hành vi của mình.
Trang 30Thuộc tính (attribute) của một lớp bao gồm các biến, các hằng, hay tham số nội
tại của lớp đó Ở đây, vai trò quan trọng nhất của các thuộc tính là các biến vì chúng sẽcó thể bị thay đổi trong suốt quá trình hoạt động của một đối tượng Các thuộc tính cóthể được xác định kiểu và kiểu của chúng có thể là các kiểu dữ liệu cổ điển hay đó làmột lớp đã định nghĩa từ trước
Như đã nói ở trên, trong mỗi một phương thức hay một lớp của ngôn ngữ lậptrình hướng đối tượng, ta có thể coi nó như là một thành phần Một thành phần có thểđược tạo lập bằng một tập hợp của các thành phần con Từ một thành phần (phươngthức, lớp) ta có thể trích rút các input – các tham số, các quan hệ và các output chính làcác giá trị trả về Như vậy, với mỗi một phương thức ta có thể có một relationalinterface đại diện cho nó Việc kết hợp các phương thức (ví dụ như việc gọi cácphương thức lồng nhau) với nhau trong bài toán thực chính là việc tổ hợp cácrelational interface của các phương thức đó
Việc này sẽ giúp ta có một cái nhìn tổng quan về các ràng buộc của các phương
thức sau khi kết hợp Từ đó, với mỗi input, ta có thể dự đoán được output một cách
đơn giản và hiệu quả thông qua các ràng buộc.
4.1.2 Relational interface
Lý thuyết được tôi sử dụng là toàn bộ lý thuyết về relational interface được nêulên ở chương 2, nhưng lý thuyết chính để xây dựng công cụ này là về relationalinterface và kết hợp relational interface, được nêu ra trong phần 3.2 và 3.4.
Phần 3.2 chỉ ra rằng, một relational interface là một bộ I = ( X, Y, ξ ) Trong đó X,Y là 2 tập hữu hạn và tách rời của các biến input và output tương ứng, và ξ là hàm tổng
ξ: 𝒜(X ∪ Y)* → ℱ(X ∪ Y)
ξ là một biểu thức ánh xạ từ tập các chuỗi hữu hạn các phép gán đến tập tính chấttrên tập X ∪ Y Điều này có nghĩa là ξ biểu diễn được mối quan hệ giữa input vàoutput mà vẫn thỏa mãn được tính chất trên toàn tập X ∪ Y
Phần 3.4 chỉ ra cách thức kết hợp 2 relational interface I1 và I2 với nhau Có 2kiểu kết hợp được nêu ra ở đây: kết hợp bằng kết nối (Composition by connection)được nêu ra ở định nghĩa 10, và kết hợp bằng phản hồi lặp (Composition by feedback