NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

59 479 0
NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Những kiến trúc đơn giản, riêng biệt và có khả năng mở rộng sẽ giúp chúng ta đảm bảo tính đáng tin cậy của phần mềm dễ dàng hơn so với những cấu trúc phức tạp

ĐẠI HỌC QUỐC 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 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ệ 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ỨU THIẾT KẾ THEO HỢP ĐỒNG XÂY DỰNG CÔNG CỤ 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ứu thiết kế theo hợp đồng xây dựng công cụ 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 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ận 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ứu thiết kế theo hợp đồng xây dựng công cụ 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 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ết kế theo hợp đồng (Design by Contract) [3] 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ây dựng đặc tả giữa các lớp trong một thành phần 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 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 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 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ông cụ 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ứu ứ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ả 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ông cụ 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 .3 Tính đúng đắn, tính tin cậy của phần mềm 3 CHƯƠNG 2. .9 Giới thiệu về Design by Contract 9 CHƯƠNG 3 .15 Mô hình thành phần CORBA 15 Xây dựng công cụ đặc tả kiểm chứng thành phần 31 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 các cổng .25 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 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 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 23 Bảng 4: Các lớp đối tượng trong ứng dụng .32 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 BẢNG KÝ HIỆU, CHỮ VIẾT TẮT Viết tắt Viết đầy đủ Giải nghĩa DbC Design by Contract Thiết kế theo hợp đồng CBSE Component-Based Software Engineering Kĩ nghệ phần mềm hướng thành phần CBD Component-Based Development Phát triển hướng thành phần CORBA Common Object Request Broker Architecture Kiến trúc môi giới gọi các đối tượng phân tán CCM CORBA component Model Mô hình thành phần CORBA API Application Programming Interface Giao diện lập trình ứng dụng Mở đầu Trong phát triển phần mềm, thay đổi yêu cầu là một tất yếu diễn ra hết sức thường xuyên mà những nhà phát triển phải chấp nhận cố gắng điều chỉnh nó. Phần mềm này ra đời thay thế phần mềm khác là một điều vô cùng bình thường, dễ hiểu. Tại sao lại như thế? Bởi vì người sử dụng luôn mong muốn có được một phần mềm hữu ích hơn, tiện lợi hơn hoạt động tốt hơn. Tuy nhiên, dù phần mềm có thể đáp ứng những nhu cầu của người sử dụng trong thời gian hiện tại thì cũng không thể đảm bảo nó sẽ luôn được ưa chuộng. Để có thể tồn tại lâu dài, phần mềm phải thật sự chất lượng. Điều này đồng nghĩa với việc nó phải không ngừng được cập nhật. Mà như chúng ta đã biết, phần mềm càng đúng đắn, đáng tin cậy rõ ràng bao nhiêu thì công việc nâng cấp phát triển nó càng dễ dàng bấy nhiêu. Do đó, có thể nói, một trong những tiêu chí của ngành công nghệ phần mềm mà bất kỳ thời đại nào, bất kỳ sản phẩm phần mềm nào cũng đều hướng đến là tính đáng tin cậy đúng đắn. Xuất phát từ nhu cầu ấy, công nghệ thiết kế theo hợ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ế theo hợ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ông cụ có khả năng 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ây dựng một công cụ về đặc tả kiểm chứng cho các thành phần trong ngôn ngữ Java. Đối tượng phạm vi nghiên cứu: ý tưởng chính của thiết kế theo hợp đồng là lập một “hợp đồng” giữa các đối tượng cung cấp (supplier) 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ủa lớp này. Những client này phải bảo đảm một số điều kiện nhất định khi gọi một phương thức của một supplier gọi là tiền điều kiện (precondition); đáp lại, sau khi thực thi thủ tục, supplier phải đáp ứng một số điều kiện tương ứng gọi là hậu điều kiện (postcondition). Những điều kiện của hợp đồng sẽ được kiểm tra bởi trình biên dịch, bất cứ sự vi phạm nào của phần mềm cũng sẽ được phát hiện. Mở rộng hơn là nghiên cứu thành phần phần mềm. Nó là một trong những nghiên cứu quan trọng trong kỹ nghệ phần mềm hướng thành phần, thể hiện bước đầu tiên hướng tới việc tái sử dụng thành phần, đặc tả thành phần mang lại những thông tin cần thiết để người sử dụng có thể hiểu được vì sao như thế nào mà thành phần có thể sử dụng được hoặc tái sử dụng. Từ đó nghiên cứu mối quan hệ giữa các thành phần trong một phần mềm điều kiện để các thành phần đó có 1 [...]...thể liên kết được với nhau Song song với việc nghiên cứu công nghệ thiết kế theo hợ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ết kế Model – View – Controller (M-V-C) xây dựng công cụ đặ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 2 CHƯƠNG 1 Tính đúng đắn, tính tin cậy của phần mềm... đượ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 hiệu quả cho việc xây dự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 đồng chấp nhận các... tố vào bảng, 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ế theo hợ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 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ì không phải làm gì Xác nhận chính trong công. .. của hợp đồng có thể đáp ứng hậu điềukiện Đơn giản tiền điều kiện/hậu điều kiện về hoạt động thiết lập sự đúng đắn cục bộ, trong khi để hoàn thiện sự đúng đắn tổng thể, sự chấm dứt là cần thiết Bởi vì hợp đồng được thiết kế để đạ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 do đó khó diễn tả trong một hình thức khai báo Cũng lưu ý rằng hợp đồng và giao... ích từ hợp đồng và 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 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 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 khách hàng Bảng 1: Hợp đồng giữa một hãng hàng không khành hàng Giao ước Bên khách hàng (khách hàng)... phần trong bối cảnh của một ngôn ngữ lập trình cụ thể Khuôn mẫu đã được áp dụng cho các thiết kế của nhiều hệ thống hướng đối tượng, được coi là tái sử dụng những kiến trúc nhỏ góp phần vào một kiến trúc tổng thể Mối quan hệ giữa các thành phần khuôn mẫu thiết kế có thể được xem như sau Khuôn mẫu thiết kế được sử dụng rộng rãi trong quá trình thiết kế hệ thống dựa thành phần, trong đó các đơn vị... bảng phân công nghĩa 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 Lợi ích Bên thực hiện - Chắc chắn rằng bảng không đầy dữ liệu khóa không phải là chuỗi rỗng - Cập nhật bảng chứa các yếu tố xuất hiện, liên kết vớ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 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 bảo trì, hỗ trợ Design By Contract,... phần mềm, 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 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ả đá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 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... nó Thay vào đó, nó chỉ đơn thuần là tên của tập hợp các hành động cung cấp các mô vả giao thức các hoạt động của nó Đặc điểm này làm cho nó có thể thay thế một phần thực hiện mà không phải thay đổi giao diện, cách làm này cải thiện được hiệu năng hệ thống mà không phải xây dựng lại hệ thống; thêm một giao 18 diện (và những sự thực thi) mà không phải thay đổi những sự thực thi đã có trong . 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. Đ 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 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

Ngày đăng: 25/04/2013, 11:56

Hình ảnh liên quan

BẢNG KÝ HIỆU, CHỮ VIẾT TẮT - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ
BẢNG KÝ HIỆU, CHỮ VIẾT TẮT Xem tại trang 9 của tài liệu.
Bảng 1: Hợp đồng giữa một hãng hàng không và khành hàng - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Bảng 1.

Hợp đồng giữa một hãng hàng không và khành hàng Xem tại trang 19 của tài liệu.
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) - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

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) Xem tại trang 20 của tài liệu.
Bảng 3: Bảng ánh xạ từ IDL sang java - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Bảng 3.

Bảng ánh xạ từ IDL sang java Xem tại trang 32 của tài liệu.
Hình 1: Giao diện thành phần CORBA và các cổng - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 1.

Giao diện thành phần CORBA và các cổng Xem tại trang 34 của tài liệu.
Hình 2: Mô hình MVC - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 2.

Mô hình MVC Xem tại trang 41 của tài liệu.
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 - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

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 Xem tại trang 43 của tài liệu.
Hình 5: Lớp Component Bảng 5: Chi tiết lớp component - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 5.

Lớp Component Bảng 5: Chi tiết lớp component Xem tại trang 44 của tài liệu.
Bảng 6: Chi tiết lớp port - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Bảng 6.

Chi tiết lớp port Xem tại trang 45 của tài liệu.
Hình 7: Lớp canvaspanel - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 7.

Lớp canvaspanel Xem tại trang 45 của tài liệu.
Hình 8: Lớp Contract - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 8.

Lớp Contract Xem tại trang 46 của tài liệu.
Hình 9: Kiến trúc CCM của hệ thống Stock Quoter. - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 9.

Kiến trúc CCM của hệ thống Stock Quoter Xem tại trang 47 của tài liệu.
Hình 10: Giao diện thành phần CORBA và các cổng. - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 10.

Giao diện thành phần CORBA và các cổng Xem tại trang 47 của tài liệu.
Hình 11: Giao diện khởi động ứng dụng - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 11.

Giao diện khởi động ứng dụng Xem tại trang 49 của tài liệu.
Hình 12: Giao diện điền thông tin khi thêm mới 1 thành phần - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 12.

Giao diện điền thông tin khi thêm mới 1 thành phần Xem tại trang 50 của tài liệu.
Hình 13: Giao diện kết quả sau khi thêm một thành phần thành công 4.5.4. Giao diện làm việc với các cổng - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 13.

Giao diện kết quả sau khi thêm một thành phần thành công 4.5.4. Giao diện làm việc với các cổng Xem tại trang 51 của tài liệu.
Hình 14: Giao diện điền thông tin khi thêm một cổng mới - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 14.

Giao diện điền thông tin khi thêm một cổng mới Xem tại trang 52 của tài liệu.
Hình 15: Giao diện kết quả khi thêm mới cổng thành công - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 15.

Giao diện kết quả khi thêm mới cổng thành công Xem tại trang 53 của tài liệu.
Hình 16: Giao diện khi kết nối thành công các cổng - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 16.

Giao diện khi kết nối thành công các cổng Xem tại trang 54 của tài liệu.
Hình 17: Giao diện khi kết nối không thành công các cổng - NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ

Hình 17.

Giao diện khi kết nối không thành công các cổng Xem tại trang 55 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan