
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đỗ Duy Hưng
ỨNG DỤNG RELATIONAL INTERFACE CHO JAVA
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

Ứng dụng Relational Interface cho Java Đỗ Duy Hưng
I
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ốt
bố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 đường
họ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ạn
thâ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 2010
Sinh Viên
Đỗ Duy Hưng

Ứng dụng Relational Interface cho Java Đỗ Duy Hưng
II
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ần
mề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ựng
nó 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ập
hợ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ành
phầ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 tin
cầ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ần
trở 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ề relational
interface, 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ệc
kết hợp tự động các interface này với nhau. Để từ đó, ta có thể biết được khả năng kết
hợ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ính
chất của các interface cũ. Qua đó, ta cũng có thể dự đoán được giá trị đầu ra của các
thành phần nếu biết được giá trị đầu vào thông qua các tính chất.

Ứng dụng Relational Interface cho Java Đỗ Duy Hưng
III
MỤC LỤC
Bảng các kí hiệu nghĩa tiếng anh..............................................................................V
Danh mục hình vẽ................................................................................................... VI
CHƯƠNG 1: MỞ ĐẦU .............................................................................................1
1.1 Đặt vấn đề.......................................................................................................1
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
2.1 Công nghệ phần mềm hướng thành phần.........................................................3
2.2 Đặc tả hình thức..............................................................................................3
2.2.1 Các phương pháp hình thức ............................................................................... 4
2.2.2 Đặc tả................................................................................................................ 4
2.2.3 Đặc tả hình thức ................................................................................................ 5
2.3 Giao diện ........................................................................................................5
2.3.1 Đặc tả giao diện................................................................................................. 5
2.3.2 Thành phần và giao diện.................................................................................... 6
2.3.3 Các loại interface............................................................................................... 6
2.3.4 Statelful và stateless interface ............................................................................ 7
2.3.5 Relational interface............................................................................................ 8
CHƯƠNG 3: NỘI DUNG LÝ THUYẾT VỀ RELATIONAL INTERFACE .......10
3.1 Sơ bộ về bài viết và các ký hiệu ....................................................................10
3.2 Relational interfaces......................................................................................12
3.3 Môi trường và khả năng lắp ghép..................................................................19
3.4 Kết hợp .........................................................................................................23
CHƯƠNG 4: XÂY DỰNG CÔNG CỤ CHUYỂN ĐỔI TỰ ĐỘNG TỪ JAVA
SANG RELATIONAL INTERFACE.....................................................................34
4.1 Cở sở lý thuyết..............................................................................................34
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 .................. 34
4.1.2 Relational interface.......................................................................................... 35
4.1.3 Một số kiến thức về logic ................................................................................ 36
4.2 Mục tiêu của bài toán....................................................................................41
4.3 Hướng giải quyết bài toán .............................................................................41
4.3.1 Tạo relational interface tự động từ phương thức............................................... 41
4.3.2 Tính input assumption tự động ........................................................................ 43
4.3.3 Tính ξ mới được tạo ra tự động........................................................................ 44
4.3.4 Thực hiện việc kết hợp tự động........................................................................ 45

Ứng dụng Relational Interface cho Java Đỗ Duy Hưng
IV
4.4 Mô tả các thành phần của công cụ.................................................................46
4.4.1 Lớp SourceFormat.java ................................................................................... 47
4.4.2 Lớp RInterface.java......................................................................................... 48
4.4.3 Lớp JavaFile.java ............................................................................................ 49
4.4.4 Lớp JavaClass.java.......................................................................................... 50
4.4.5 Lớp Tools.java ................................................................................................ 51
4.4.6 Lớp Expresstion.java....................................................................................... 56
4.4.7 Lớp FOLOptimizer.java .................................................................................. 59
CHƯƠNG 5: CÀI ĐẶT VÀ THỬ NGHIỆM .........................................................60
5.1 Xây dựng công cụ.........................................................................................60
5.2 Dữ liệu thử nghiệm .......................................................................................61
5.3 Kết quả thử nghiệm.......................................................................................62
5.3.1 Phân tích file mã nguồn................................................................................... 62
5.3.2 Chuyển những phương thức này thành relational interface............................... 63
5.3.3 Kết hợp các interface....................................................................................... 65
5.3.4 Dự đoán kết quả: ............................................................................................. 68
5.4 Đánh giá........................................................................................................69
CHƯƠNG 6: KẾT LUẬN .......................................................................................69
6.1 Kết luận về khóa luận....................................................................................69
6.2 Hướng phát triển trong tương lai ...................................................................70
Phụ lục......................................................................................................................71
Phụ lục 1: Nội dung mã nguồn file thử nghiệm Sample.java.................................71

