Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 61 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
61
Dung lượng
1,06 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thế Nam NGHIÊN CỨUTHIẾTKẾTHEOHỢPĐỒNGVÀXÂYDỰNGCÔNGCỤHỖTRỢ KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Thông Tin HÀ NỘI - 2010 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thế Nam NGHIÊN CỨUTHIẾTKẾTHEOHỢPĐỒNGVÀXÂYDỰNGCÔNGCỤHỖTRỢ KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Chuyên ngành: Công Nghệ Phần Mềm Cán bộ hướng dẫn: TS. Trương Ninh Thuận HÀ NỘI - 2010 LỜI CẢM ƠN Sinh viên thực hiện khoá luận tốt nghiệp đề tài “Nghiên cứuthiếtkếtheohợpđồngvàxâydựngcôngcụhỗ trợ” xin được bày tỏ lòng chân thành biết ơn tới các thầy cô giáo Trường Đại học Công Nghệ, Đại học Quốc Gia Hà Nội nói chung và thầy cô Bộ môn Công nghệ Phần mềm nói riêng. Trong suốt bốn năm qua thầy cô không những tận tình truyền đạt kiến thức mà còn luôn động viên chúng tôi trong học tập cũng như trong cuộc sống. Đặc biệt, chúng tôi xin chân thành cảm ơn thầy giáo hướng dẫn, thầy Trương Ninh Thuận, đã tận tình chỉ bảo, tạo mọi điều kiện cơ sở vật chất cũng như tinh thần cho chúng tôi hoàn thành khóa luậnvà sửa chữa những sai sót trong suốt quá trình thực hiện đề tài. Chúng tôi cũng xin cảm ơn tới các bạn sinh viên K51 đã cho chúng tôi những ý kiến đóng góp có giá trị khi thực hiện đề tài này. Đề tài “Nghiên cứuthiếtkếtheohợpđồngvàxâydựngcôngcụhỗ trợ” được hoàn thành trong thời gian hạn hẹp nên không tránh khỏi những khiếm khuyết. Chúng tôi rất mong nhận được ý kiến đóng góp từ thầy cô giáo và các bạn để có thể tiếp tục hoàn thiện hệ thống này hơn. Hà nội ngày 24 tháng 4 năm 2010 Sinh viên Nguyễn Thế Nam TÓM TẮT NỘI DUNG Khóa luận tìm hiểu về công nghệ thiếtkếtheohợpđồng (Design by Contract) [3] và trình bày những khái niệm cơ bản. Đây là công nghệ giúp cho chúng ta xâydựng đặc tả giữa các lớp trong một thành phần và xem xét sự kết hợp giữa chúng với nhau. Mở rộng hơn nữa là đặc tả các thành phần trong một phần mềm và các thành phần phải thỏa mãn những điều kiện nào đó mới có thể liên kết với nhau để tạo thành phần mềm có tính tin cậy, tính đúng đắn cao. Bên cạnh đó khóa luận còn đưa ra một số khái niệm và cơ chế cho tính đúng đắn của phần mềm. Các cấu trúc đơn giản thường có tính tin cậy hơn những phần mềm có cấu trúc phức tạp. Nhưng điểm yếu của nó lại không thể phục vụ được nhu cầu ngày càng tăng lên của người phát triển và người sử dụng. Vì thế, một số cơ chế như cố gắng giữ cho cấu trúc của phần mềm càng đơn giản càng tốt. Viết văn bản mô tả phần mềm để người phát triển sau này có thể đọc lại hoặc viết lại. Quản lý bộ nhớ, hay còn được gọi là “kỹ thuật thu gom rác” cũng làm cho phần mềm tối ưu hơn bình thường. Hoặc là việc sử dụng lại những côngcụ có sẵn của những phần mềm đáng tin cậy trước đó cũng là một giải pháp thường được các nhà phát triển ứng dụng. Chi tiết hơn nữa là phát triển tất cả các giai đoạn: phân tích, thiết kế, lập trình, kiểm thử, bảo trì trong một dự án phần mềm. Tiếp theo, khóa luận còn đưa ra các mô hình dựa trên CORBA. Khái niệm về kỹ nghệ phần mềm hướng thành phần. Một phần mềm được tạo ra là do sự ghép nối các thành phần độc lập lại với nhau. Các thành phần này sẽ không cần phải biên dịch lại hoặc không cần phải chỉnh sửa lại khi thêm mới một thành phần khác hay là chỉnh sửa một thành phần có sẵn. Mô hình thành phần CORBA là mô hình chính mà chúng tôi nghiên cứuvà ứng dụng nó trong việc xâydựngcôngcụhỗ trợ. Ngoài ra khóa luận còn đi vào xâydựngcôngcụ đặc tả và kiếm chứng hỗtrợ người dùng kiểm tra sự phù hợp của các thành phần khi kết nối với nhau một cách trực quan. Côngcụ có áp dụng những công nghệ mới hiện nay như mô hình Model – View – Controller (M-V-C) [6] hoặc sử dụng thư viện layer trong lập trình java game, dễ dàng cho việc lập trình công cụ. MỤC LỤC Mở đầu 1 CHƯƠNG 1. Tính đúng đắn, tính tin cậy của phần mềm 3 1.1. Một số cơ chế mang lại tính đúng đắn 3 1.2. Biểu diễn một đặc tả 4 1.2.1. Những công thức của tính đúng đắn 4 1.2.2. Những điều kiện yếu, mạnh 5 1.3. Giao ước cho tính tin cậy của phần mềm 7 1.3.1. Quyền lợi 8 1.3.2. Nghĩa vụ 8 CHƯƠNG 2. Giới thiệu về Design by Contract 9 2.1. Giới thiệu 9 2.2. Khái niệm về hợpđồng 10 2.3. Tiền điều kiện, hậu điều kiện và tính bất biến 11 2.3.1. Tiền điều kiện và hậu điều kiện 11 2.3.2. Tính bất biến 12 2.4. Design By Contract trong Eiffel 12 2.4.1. Biểu diễn Design by Contract trong Eiffel 13 2.4.2. Ví dụ minh họa 14 CHƯƠNG 3. Mô hình thành phần CORBA 16 3.1. Khái niệm cơ bản về công nghệ phần mềm hướng thành phần 16 3.1.1. Giới thiệu 16 3.1.2. Thành phần 17 3.1.3. Đối tượng và thành phần 17 3.1.4. Giao diện 18 3.1.5. Hợpđồng 19 3.1.6. Khuôn mẫu 21 3.1.7. Frameworks 21 3.1.8. Frameworks và thành phần 22 3.2. Khái niệm CORBA 22 3.2.1. Giới thiệu 22 3.2.2. Ngôn ngữ đặc tả giao tiếp IDL 23 3.3. Mô hình thành phần CORBA 25 3.3.1. Giao diện và sự nối ghép 25 3.3.2. Đặc tả CCM bằng ngôn ngữ IDL 27 3.3.2.1. Thành phần 27 3.3.2.2. Facets 27 3.3.2.3. Receptacles 28 3.3.2.4. Event Sources 28 3.3.2.5. Event Sinks 30 3.3.3. Điều kiện kết nối 30 CHƯƠNG 4. Xâydựngcôngcụ đặc tả và kiểm chứng thành phần 31 4.1. Mô tả côngcụ 31 4.2. Ngôn ngữ phát triển côngcụ 31 4.3. Phân tích côngcụ đặc tả và kiểm chứng thành phần 31 4.3.1. Mô tả côngcụ 31 4.3.2. Mô hình hoạt động 32 4.3.3. Thiếtkế các lớp và đối tượng 32 4.3.3.1. Sơ đồ tương tác giữa các đối tượng 33 4.3.3.2. Mô tả chi tiết các lớp đối tượng 35 4.4. Triển khai 37 4.5. Thử nghiệm 37 4.5.1. Bài toán 37 4.5.2. Giao diện khởi động chương trình 40 4.5.3. Giao diện khi làm việc với các thành phần 41 4.5.4. Giao diện làm việc với các cổng 42 4.5.5. Giao diện sau khi kiểm chứng kết nối giữa các thành phần 45 Kết luận 47 Hướng phát triển 48 Tài liệu tham khảo 49 Phụ lục 50 DANH MỤC HÌNH VẼ Hình 1: Giao diện thành phần CORBA và các cổng 26 Hình 2: Mô hình MVC 32 Hình 3: Sơ đồ lớp thể hiện mối liên hệ giữa các đối tượng trong ứng dụng 34 Hình 4: Sơ đồ lớp thể hiện mối quan hệ kế thừa của các cổng 34 Hình 5: Lớp Component 35 Hình 6: Lớp port 35 Hình 7: Lớp canvaspanel 36 Hình 8: Lớp Contract 37 Hình 9: Kiến trúc CCM của hệ thống Stock Quoter. 38 Hình 10: Giao diện thành phần CORBA và các cổng 38 Hình 11: Giao diện khởi động ứng dụng 40 Hình 12: Giao diện điền thông tin khi thêm mới 1 thành phần 41 Hình 13: Giao diện kết quả sau khi thêm một thành phần thành công 42 Hình 14: Giao diện điền thông tin khi thêm một cổng mới 43 Hình 15: Giao diện kết quả khi thêm mới cổng thành công 44 Hình 16: Giao diện khi kết nối thành công các cổng 45 Hình 17: Giao diện khi kết nối không thành công các cổng 46 DANH MỤC BẢNG BIỂU Bảng 1: Hợpđồng giữa một hãng hàng không và khành hàng 10 Bảng 2: Hợpđồng chèn một từ vào từ điển 11 Bảng 3: Bảng ánh xạ từ IDL sang java 24 Bảng 4: Các lớp đối tượng trong ứng dụng 33 Bảng 5: Chi tiết lớp component 35 Bảng 6: Chi tiết lớp port 36 Bảng 7: Chi tiết lớp canvaspanel 36 Bảng 8: Chi tiết lớp Contract 37 DANH MỤC CÔNG THỨC Công thức 1: Công thức tính đúng đắn 4 Công thức 2: Tiền điều kiện mạnh, hậu điều kiện không cần phải quan tâm 5 Công thức 3: Hậu điều kiện mạnh, tiền điều kiện không cần phải quan tâm. 6 Công thức 4: Điều kiện bất biến trong công thức tính đúng đắn 12 [...]... nghiên cứu mối quan hệ giữa các thành phần trong một phần mềm và điều kiện để 1 các thành phần đó có thể liên kết được với nhau Song song với việc nghiên cứucông nghệ thiết kếtheohợp đồng, chúng tôi cũng đã nghiên cứu sâu hơn về ngôn ngữ java, mô hình thiếtkế Model – View – Controller (M-V-C) vàxâydựngcôngcụ đặc tả, kiếm chứng giúp cho việc làm sáng rõ thêm công nghệ mà chúng tôi đã nghiên cứu. .. Xuất phát từ nhu cầu ấy, công nghệ thiết kếtheohợpđồng (Design By Contract) đã ra đời nhằm giúp cho việc đảm bảo cho tính đáng tin cậy của phần mềm Đó cũng chính là lý do mà chúng tôi đã chọn đề tài này Với mục đích tìm hiểu công nghệ thiết kếtheohợpđồng một cách khá kỹ lưỡng, chúng tôi đã tiếp cận nó bằng các tài liệu lý thuyết cũng như qua các côngcụ có khả năng hỗtrợ Design By Contract cho... hỗtrợ Design By Contract cho các ngôn ngữ lập trình hiện đại Không dừng ở đó, chúng tôi còn xâydựng một côngcụ về đặc tả và kiểm chứng cho các thành phần trong ngôn ngữ Java Đối tượng và phạm vi nghiên cứu: ý tưởng chính của thiết kếtheohợpđồng là lập một hợpđồng giữa các đối tượng cung cấp (supplier) và những khách hàng (client) của nó, tức là những lớp đối tượng khác gọi đến các phương thức... được kỹ thuật thừa kế Một kỹ thuật cho mối quan hệ với các trường hợp dị thường, dẫn đến sự an toàn và hiệu quả cho việc xâydựng các ngôn ngữ xử lý các trường hợp ngoại lệ 2.2 Khái niệm về hợpđồng Trong công việc thường ngày, một hợpđồng được viết bởi hai bên khi một bên (bên cung cấp) trình bày các công việc với bên kia (bên khách hàng) Mỗi bên mong chờ các lợi ích từ hợpđồngvà chấp nhận các... liên kết với các khóa - Không cần phải làm gì nếu bảng đầy hoặc khóa là một chuỗi rỗng Thiết kếtheohợpđồng được sử dụng ở đây để cung cấp đặc tả chính xác cho các chức năng của các thành phần và nâng cao tính tin cậy của chúng Theo Meyer [1992], một hợpđồng là một tập hợp các xác nhận mô tả chính xác mỗi đặc điểm của thành phần phải làm gì và không phải làm gì Xác nhận chính trong công nghệ thiết kế. .. phân công nghĩa vụ và lợi ích một cách rõ ràng Ví dụ như ti là công việc chèn một từ vào từ điển (một bảng mà mỗi phần tử được xác định bởi một chuỗi ký tự sử dụng như là một khóa) Hợpđồng sẽ là: Bảng 2: Hợpđồng chèn một từ vào từ điển Giao ước Bên thực hiện Lợi ích - - Chắc chắn rằng bảng không đầy dữ liệu và khóa không phải là chuỗi rỗng Bên cung cấp - Bản ghi đưa các yếu tố vào bảng, liên kết với... ích từ hợpđồngvà chấp nhận các giao ước có trong hợpđồng đó Thông thường, mỗi giao ước của bên này sẽ là lợi ích cho bên kia và ngược lại Mục tiêu của bản hợpđồng là giải thích rõ ràng các lợi ích và các giao ước Một ví dụ đơn giản sau đây minh họa cho một hợpđồng giữa một hãng hàng không và khách hàng Bảng 1: Hợpđồng giữa một hãng hàng không và khành hàng Giao ước - Phải có mặt ở sân bay ít nhất... đắn tổng thể, sự chấm dứt là cần thiết Bởi vì hợpđồng được thiếtkế để đại diện cho các tin nhắn, qua giao thức giữa các thành phần, chúng là bắt buộc trong tự nhiên và do đó khó diễn tả trong một hình thức khai báo Cũng lưu ý rằng hợpđồngvà giao diện là những khái niệm khác nhau Giao diện là tập hợp các hoạt động chỉ rõ các dịch vụ được cung cấp bởi thành phần, hợpđồng chỉ rõ các hành vi bên ngoài... bất biến được thêm vào Điều này thể hiện rằng bất biến INV là không thay đổi trước và sau khi thực hiện A 2.4 Design By Contract trong Eiffel Eiffel [4] hỗtrợ rất nhiều tính năng: tiếp cận hướng đối tượng hoàn thiện, khả năng giao tiếp bên ngoài (có thể giao tiếp với các ngôn ngữ C, C++, Java,…), hỗ trợvòng đời phần mềm bao gồm việc phân tích, thiết kế, thực thi và bảo trì, hỗtrợ Design By Contract,... phần mềm, và sẽ xuất hiện lại như khái niệm chính trong luận văn này: hợpđồng giữa những khách hàng và những môđun cung cấp là một sự ràng buộc giữa hai bên Để sản xuất ra một phần mềm hiệu quả và đáng tin cậy thì cần phải có một hợpđồng đại diện cho sự thoả hiệp tốt nhất của tất cả mối liên hệ giữa những nhà cung cấp và khách hàng 1.3 Giao ước cho tính tin cậy của phần mềm Bằng cách kết hợp những . nghiên cứu và ứng dụng nó trong việc xây dựng công cụ hỗ trợ. Ngoài ra khóa luận còn đi vào xây dựng công cụ đặc tả và kiếm chứng hỗ trợ người dùng kiểm tra sự phù hợp của các thành phần khi kết. ĐẠI HỌC CÔNG NGHỆ Nguyễn Thế Nam NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ. GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thế Nam NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ