Luận văn, khóa luận, chuyên đề, tiểu luận, quản trị, khoa học, tự nhiên, kinh tế
ĐẠ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 Ứng dụng Relational Interface cho Java Đỗ Duy Hưng HÀ NỘI – 2010 II Ứ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ố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 I Ứ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ầ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. II Ứng dụng Relational Interface cho Java Đỗ Duy Hưng MỤC LỤC Bảng các kí hiệu nghĩa tiếng anh VI Danh mục hình vẽ VII 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 .11 3.3 Môi trường và khả năng lắp ghép 14 3.4 Kết hợp .16 CHƯƠNG 4: XÂY DỰNG CÔNG CỤ CHUYỂN ĐỔI TỰ ĐỘNG TỪ JAVA SANG RELATIONAL INTERFACE .21 4.1 Cở sở lý thuyết .21 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 .22 III Ứng dụng Relational Interface cho Java Đỗ Duy Hưng 4.1.2 Relational interface .23 4.1.3 Một số kiến thức về logic .24 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 26 4.3.1 Tạo relational interface tự động từ phương thức .26 4.3.2 Tính input assumption tự động .27 4.3.3 Tính ξ mới được tạo ra tự động 28 4.3.4 Thực hiện việc kết hợp tự động 28 4.4 Mô tả các thành phần của công cụ .29 4.4.1 Lớp SourceFormat.java 30 4.4.2 Lớp RInterface.java 31 4.4.3 Lớp JavaFile.java 32 4.4.4 Lớp JavaClass.java .33 4.4.5 Lớp Tools.java 34 4.4.6 Lớp Expresstion.java 38 4.4.7 Lớp FOLOptimizer.java .40 CHƯƠNG 5: CÀI ĐẶT VÀ THỬ NGHIỆM .42 5.1 Xây dựng công cụ 42 5.2 Dữ liệu thử nghiệm 43 5.3 Kết quả thử nghiệm 44 5.3.1 Phân tích file mã nguồn 44 5.3.2 Chuyển những phương thức này thành relational interface .45 5.3.3 Kết hợp các interface 47 5.3.4 Dự đoán kết quả: .48 5.4 Đánh giá .49 CHƯƠNG 6: KẾT LUẬN .50 6.1 Kết luận về khóa luận .50 6.2 Hướng phát triển trong tương lai .50 Phụ lục 52 Phụ lục 1: Nội dung mã nguồn file thử nghiệm Sample.java 52 IV Ứng dụng Relational Interface cho Java Đỗ Duy Hưng V Ứng dụng Relational Interface cho Java Đỗ Duy Hưng Bảng các kí hiệu nghĩa tiếng anh Kí hiệu Diễn giải Input Đầu vào Output Đầu ra Well-formed Định dạng hoàn chỉnh Well-formable Định dạng có thể hoàn chỉnh Interface Giao diện Relational Interface Giao diện quan hệ Stateless Phi trạng thái Stateful Có trạng thái Feedback Phản hồi Formal methods Các phương pháp hình thức Formal specification Đặc tả hình thức Assumption Giả thiết Guarantee Bảo đảm Refinement Làm mịn VI Ứng dụng Relational Interface cho Java Đỗ Duy Hưng Danh mục hình vẽ Hình 3.1: Sơ đồ một interface cho ví dụ 4 18 Hình 3.2: Sơ đồ một interface với feedback .20 Hình 3.1: Hàm parse() trong lớp JavaFile.java .33 VII CHƯƠNG 1: MỞ ĐẦU 1.1 Đặt vấn đề 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ựa trê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ỗi thà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ác interface. 1.2 Nội dung bài toán Trong phương pháp thiết kế dựa trên thành phần, interface chính là đặc tả của thà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ây dự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 được quan hệ giữa giá trị đầu vào và đầu ra, hay khó khăn trong việc kết hợp các interface với nhau. Để khắc phục những nhược điểm này, tôi đề xuất việc sử dụng relational interface 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ồi kết hợp các interface này với nhau một cách tự động. . nghiệm Sample .java. .................................52 IV Ứng dụng Relational Interface cho Java Đỗ Duy Hưng V Ứng dụng Relational Interface cho Java Đỗ Duy. Ths. Phạm Thị Kim Dung Ứng dụng Relational Interface cho Java Đỗ Duy Hưng HÀ NỘI – 2010 II Ứng dụng Relational Interface cho Java Đỗ Duy Hưng Lời cảm ơn