tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

114 1K 1
tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Đ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

tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM LÊ TRẦN HỒNG NGUN – 0112103 NGUYỄN BÁCH KHOA - 0112140 TÌM HIỂU CÔNG NGHỆ DESIGN BY CONTRACT VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ CHO C# KHÓA LUẬN CỬ NHÂN TIN HỌC GIÁO VIÊN HƯỚNG DẪN Th.s: NGUYỄN ĐÔNG HÀ NIÊN KHĨA 2001 – 2005 Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# LỜI CẢM ƠN Đầu tiên, xin chân thành cảm ơn cô Nguyễn Đông Hà trực tiếp hướng dẫn cung cấp tài liệu để chúng em tiếp cận tìm hiểu cơng nghệ Design By Contract hữu ích Bên cạnh đó, xin đồng gửi lời cảm ơn đến thầy cô môn Công nghệ Phần mềm Nâng cao tạo điều kiện cho chúng em dành nhiều thời gian nghiên cứu đề tài Cuối cùng, điều thiếu sót không kể đến ủng hộ to lớn mặt tinh thần giúp đỡ tận tình gia đình, bạn bè, đặc biệt bạn Nguyễn Lương Ngọc Minh Nguyễn Ngọc Khánh Xin chân thành cảm ơn tất cả, người góp phần giúp cho luận văn hoàn thành Thành phố Hồ Chí Minh, Tháng 7, 2005 Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# MỤC LỤC LỜI NÓI ĐẦU TỔNG QUAN Chương 1: Giới thiệu Eiffel 1.1 Giới thiệu 1.2 Design By Contract Eiffel 10 1.3 EiffelStudio 10 1.3.1 Giao diện 11 1.3.2 Các thao tác EiffelStudio 11 Chương 2: Một số chế mang lại tính đáng tin cậy cho phần mềm 17 Chương 3: Tính đắn phần mềm 18 Chương 4: Biểu diễn đặc tả 20 4.1 Những cơng thức tính đắn 20 4.2 Những điều kiện yếu mạnh 22 Chương 5: Giới thiệu xác nhận văn phần mềm 24 Chương 6: Tiền điều kiện hậu điều kiện 25 6.1 Lớp ngăn xếp 25 6.2 Tiền điều kiện 28 6.3 Hậu điều kiện 28 Chương 7: Giao ước cho tính đáng tin cậy phần mềm 7.1 7.2 7.3 29 Quyền lợi nghĩa vụ 29 7.1.1 Những quyền lợi 30 7.1.2 Những nghĩa vụ 30 Nghệ thuật tin cậy phần mềm: kiểm tra hơn, bảo đảm nhiều 31 Những xác nhận chế kiểm tra đầu vào 33 Tìm hiểu công nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Chương 8: Làm việc với xác nhận 35 8.1 Lớp stack 35 8.2 Mệnh lệnh yêu cầu 38 8.3 Lưu ý cấu trúc rỗng 41 8.4 Thiết kế tiền điều kiện: tolerant hay demanding? 42 8.5 Một môđun tolerant 43 Chương 9: Những điều kiện bất biến lớp 47 9.1 Định nghĩa ví dụ 48 9.2 Định dạng thuộc tính điều kiện bất biến lớp 49 9.3 Điều kiện bất biến thay đổi 51 9.4 Ai phải bảo quản điều kiện bất biến? 52 9.5 Vai trò điều kiện bất biến lớp kỹ thuật xây dựng phần mềm 9.6 53 Những điều kiện bất biến hợp đồng Chương 10: Khi lớp đúng? 54 56 10.1 Tính đắn lớp 57 10.2 Vai trò thủ tục khởi tạo 60 10.3 Xem lại mảng 60 Chương 11: Kết nối với kiểu liệu trừu tượng 62 11.1 So sánh đặc tính lớp với hàm ADT 63 11.2 Biểu diễn tiên đề 64 11.3 Hàm trừu tượng 65 11.4 Cài đặt điều kiện bất biến 66 Chương 12: Một thị xác nhận 68 Chương 13: Vịng lặp có điều kiện bất biến điều kiện biến đổi 71 13.1 Vấn đề vòng lặp 71 13.2 Những vòng lặp 71 13.3 Những thành phần vòng lặp 72 13.4 Cú pháp vịng lặp 74 Tìm hiểu công nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Chương 14: Sử dụng xác nhận 77 14.1 Những xác nhận công cụ để viết phần mềm xác 14.2 Sử dụng xác nhận cho việc viết tài liệu: thể rút gọn lớp đối tượng 77 78 Chương 15: Giới thiệu công cụ XC# 81 15.1 Giới thiệu 81 15.2 XC# hoạt động 82 15.3 Khai báo xác nhận 82 15.4 15.3.1 Tiền điều kiện 82 15.3.2 Hậu điều kiện 83 15.3.3 Một số thuộc tính mà XC# qui ước sẵn 83 Ví dụ lớp Stack 86 Chương 16: Kết thực nghiệm: công cụ DCS 88 16.1 Nguyên lý làm việc 88 16.2 Thiết kế 94 16.2.1 Tổng thể 94 16.2.2 Chi tiết lớp đối tượng 95 16.2.2.1 Màn hình Configuration 95 16.2.2.2 Lớp Connect 98 16.2.2.3 Lớp ProjectInfo 99 16.2.2.4 Lớp ClassInfo 101 16.2.2.5 Lớp FunctionInfo 104 16.2.2.6 Lớp Assertion 106 16.2.2.7 Lớp Extra 109 KẾT LUẬN 111 HƯỚNG PHÁT TRIỂN 112 TÀI LIỆU THAM KHẢO 113 Ý KIẾN CỦA GIÁO VIÊN PHẢN BIỆN 114 Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# BẢNG CÁC HÌNH VẼ Hình 1-1: Giao diện EiffelStudio 11 Hình 1-2: Thông báo lỗi xảy tiền điều kiện 14 Hình 1-3: Code gây lỗi tiền điều kiện - 14 Hình 1-4: Thơng báo lỗi xảy hậu điều kiện 15 Hình 1-5: Code gây lỗi hậu điều kiện - 15 Hình 1-6: Thơng báo lỗi xảy điều kiện bất biến - 16 Hình 1-7: Code gây lỗi điều kiện bất biến 16 Hình 7-1: Sử dụng lọc module 34 Hình 8-1: Stack cài đặt mảng - 35 Hình 9-1: Thời gian tồn đối tượng 50 Hình 10-1: Thời gian tồn đối tượng - 58 Hình 11-1: Sự biến đổi đối tượng trừu tượng cụ thể 65 Hình 11-2: Hai cài đặt đối tượng trừu tượng 67 Hình 13-1: Một vịng lặp tính tốn 73 Hình 16-1: Sơ đồ thiết kế tổng thể 94 Hình 16-2: Màn hình Configuration 95 Hình 16-3: Chi tiết hình Configuration - 96 Hình 16-4: Lớp Connect 98 Hình 16-5: Lớp ProjectInfo 99 Hình 16-6: Lớp ClassInfo -101 Hình 16-7: Lớp FunctionInfo -104 Hình 16-8: Lớp Assertion -106 Hình 16-9: Lớp Extra 109 Tìm hiểu cơng nghệ Design By Contract Xây dựng cơng cụ hỗ trợ cho C# LỜI NĨI ĐẦU Trong ngành công nghệ thông tin, thay đổi tất yếu diễn thường xuyên mà ta phải chấp nhận cố gắng điều chỉnh Phần mềm đời thay phần mềm khác điều vơ bình thường, dễ hiểu Tại lại thế? Bởi người sử dụng ln mong muốn có phần mềm hữu ích Tuy nhiên, dù phần mềm đáp ứng nhu cầu người sử dụng thời gian khơng thể đảm bảo ln ưa chuộng Để tồn lâu dài, phần mềm phải thật chất lượng Điều đồng nghĩa với việc phải khơng ngừng cập nhật Mà ta biết, phần mềm đắn, đáng tin cậy rõ ràng cơng việc nâng cấp phát triển dễ dàng nhiêu Do đó, nói, tiêu chí ngành công nghệ phần mềm mà thời đại nào, sản phẩm phần mềm hướng đến tính đáng tin cậy đắn Xuất phát từ nhu cầu ấy, công nghệ Design By Contract đời nhằm giúp đảm bảo cho tính đáng tin cậy phần mềm Đó lý mà chúng em chọn đề tài Với mục đích tìm hiểu cơng nghệ Design By Contract cách kỹ lưỡng, chúng em tiếp cận tài liệu lý thuyết qua cơng cụ có khả hỗ trợ Design By Contract cho ngơn ngữ lập trình đại Khơng dừng đó, chúng em cịn xây dựng cơng cụ hỗ trợ công nghệ cho C# với tên gọi DCS (Design By Contract for C Sharp) Đối tượng phạm vi nghiên cứu: ý tưởng Design By Contract lập “hợp đồng” lớp đối tượng (supplier) khách hàng (client) nó, tức lớp đối tượng khác gọi đến phương thức lớp Những client phải bảo đảm số điều kiện định gọi phương thức supplier gọi tiền điều kiện (precondition); đáp lại, sau thực thi thủ tục, supplier phải đáp ứng số điều kiện tương ứng gọi hậu điều kiện (postcondition) Những điều kiện hợp đồng kiểm tra trình biên dịch, vi phạm phần mềm phát Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# TỔNG QUAN Các hướng nghiên cứu có số tác giả: - Bertrand Meyer, tác giả công nghệ Design By Contract ngôn ngữ Eiffel, ngơn ngữ hỗ trợ hồn tồn Design By Contract Vấn đề tồn tại: Bởi ngơn ngữ lập trình tác giả Design By Contract tạo nên hỗ trợ đầy đủ rõ ràng cho công nghệ này, vấn đề ngơn ngữ Eiffel cịn xa lạ với người lập trình dù đời gần 10 năm, người sử dụng ngôn ngữ để phát triển phần mềm - ResolveCorp eXtensible C# (XC#), Add-In hỗ trợ Design By Contract cho C# Đây công cụ tốt, hỗ trợ đầy đủ Design By Contract cho C# Tuy nhiên, công cụ sử dụng miễn phí vài DLL source code khơng mở - Man Machine Systems JMSAssert, công cụ hỗ trợ Design By Contract cho Java Đây công cụ tốt Tuy nhiên, JMSAssert hỗ trợ biên dịch command line sử dụng cho JDK từ 1.2 trở xuống, khơng thể tích hợp vào mơi trường hỗ trợ lập trình Java JBuilder, Sun One Studio hay Eclipse Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Chương 1: Giới thiệu Eiffel 1.1 Giới thiệu Đầu tiên, làm quen với phần mềm Eiffel trước tìm hiểu cơng nghệ Design By Contract Vì lại vậy? Vì tất ví dụ dùng luận văn sử dụng cấu trúc ngôn ngữ Eiffel Còn khái niệm đề cập chương giải thích kỹ phần sau giới thiệu Design By Contract Qua 10 năm tồn tại, Eiffel coi môi trường phát triển phần mềm tốt Trước sức mạnh to lớn Eiffel lĩnh vực phần mềm dù muốn dù khơng, bạn nên biết qua Vậy thực chất Eiffel gì? Eiffel khung làm việc trợ giúp cho việc suy nghĩ, thiết kế thực thi phần mềm hướng đối tượng Eiffel phương pháp, ngôn ngữ hỗ trợ mô tả cách hiệu phát triển hệ thống có chất lượng Eiffel ngơn ngữ thiết kế Vai trị Eiffel cịn ngơn ngữ lập trình Những đem lại khơng giới hạn ngữ cảnh lập trình mà trải rộng khắp công việc phát triển phần mềm: phân tích, lên mơ hình, viết đặc tả, thiết kế kiến trúc, thực hiện, bảo trì, làm tài liệu Eiffel phương pháp Eiffel dẫn đường nhà phân tích nhà phát triển xun suốt tiến trình xây dựng phần mềm Phương pháp Eiffel tập trung yếu tố sản phẩm chất lượng, với điểm nhấn: tính đáng tin cậy, tính tái sử dụng, tính mở rộng, tính khả dụng, tính bền vững Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# 1.2 Design By Contract Eiffel Eiffel hỗ trợ nhiều tính năng: tiếp cận hướng đối tượng hoàn thiện, khả giao tiếp bên ngồi (có thể giao tiếp với 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, viết xác nhận, quản lý ngoại lệ… Design By Contract vấn đề nhắc đến đề cập Eiffel Trong Eiffel, thành phần hệ thống thực theo đặc tả tiên thuộc tính trừu tượng nó, liên quan đến thao tác nội giao tác với thành phần khác Eiffel thực thi cách trực tiếp ý tưởng Design By Contract, phương pháp làm nâng cao tính đáng tin cậy phần mềm, cung cấp tảng cho việc đặc tả, làm tài liệu kiểm nghiệm phần mềm, việc quản lý ngoại lệ cách sử dụng kế thừa thích hợp 1.3 EiffelStudio EiffelStudio trình biên dịch Eiffel Ngồi ra, cịn IDE mạnh với tính độc như: cơng cụ cơng nghệ đảo tích hợp, máy phân tích mã nguồn định lượng Tùy vào nhu cầu mình, bạn sử dụng EiffelStudio mơi trường lập trình cơng cụ giúp mơ hình hóa, xây dựng mơ tả hệ thống bao gồm lớp trừu tượng mà không thực thi công cụ Diagram kết hợp khả để đạt đến hiệu cao 10 ... - ResolveCorp eXtensible C# (XC#), Add-In hỗ trợ Design By Contract cho C# Đây công cụ tốt, hỗ trợ đầy đủ Design By Contract cho C# Tuy nhiên, công cụ sử dụng miễn phí vài DLL source code không... Eclipse Tìm hiểu công nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Chương 1: Giới thiệu Eiffel 1.1 Giới thiệu Đầu tiên, làm quen với phần mềm Eiffel trước tìm hiểu cơng nghệ Design By Contract. .. phạm phần mềm phát Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# TỔNG QUAN Các hướng nghiên cứu có số tác giả: - Bertrand Meyer, tác giả công nghệ Design By Contract ngôn ngữ

Ngày đăng: 12/04/2013, 14:29

Hình ảnh liên quan

Hình 1-1: Giao diện EiffelStudio - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 1.

1: Giao diện EiffelStudio Xem tại trang 11 của tài liệu.
được xuất ra màn hình. - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

c.

xuất ra màn hình Xem tại trang 13 của tài liệu.
Hình 1-3: Code gây ra lỗi ở tiền điều kiện Nguyên nhân:   - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 1.

3: Code gây ra lỗi ở tiền điều kiện Nguyên nhân: Xem tại trang 14 của tài liệu.
Hình 1-2: Thông báo khi lỗi xảy ra ở tiền điều kiện và con trỏ dừng lại ở câu lệnh  - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 1.

2: Thông báo khi lỗi xảy ra ở tiền điều kiện và con trỏ dừng lại ở câu lệnh Xem tại trang 14 của tài liệu.
Hình 1-4: Thông báo khi lỗi xảy ra ở hậu điều kiện và con trỏ dừng lại ở câu lệnh  - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 1.

4: Thông báo khi lỗi xảy ra ở hậu điều kiện và con trỏ dừng lại ở câu lệnh Xem tại trang 15 của tài liệu.
Hình 1-6: Thông báo khi lỗi xảy ra ở điều kiện bất biến và con trỏ dừng lại ở câu lệnh  - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 1.

6: Thông báo khi lỗi xảy ra ở điều kiện bất biến và con trỏ dừng lại ở câu lệnh Xem tại trang 16 của tài liệu.
Chúng ta có thể trở lại nhận xét trước với hình ảnh một ký hiệu toán học đơn giản được mượn từ lý thuyết của việc kiểm tra một chương trình hình thứ c và nh ữ ng  lý do quý giá để lập luận về tính đúng đắn của các thành phần phần mềm - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

h.

úng ta có thể trở lại nhận xét trước với hình ảnh một ký hiệu toán học đơn giản được mượn từ lý thuyết của việc kiểm tra một chương trình hình thứ c và nh ữ ng lý do quý giá để lập luận về tính đúng đắn của các thành phần phần mềm Xem tại trang 20 của tài liệu.
Hình 7-1: Sử dụng bộ lọc các module - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 7.

1: Sử dụng bộ lọc các module Xem tại trang 34 của tài liệu.
Hình 8-1: Stack được cài đặt bằng mảng - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 8.

1: Stack được cài đặt bằng mảng Xem tại trang 35 của tài liệu.
Để tóm tắt cho chương này, ta có bảng sau được chia thành 2 cột để thấy sự - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

t.

óm tắt cho chương này, ta có bảng sau được chia thành 2 cột để thấy sự Xem tại trang 41 của tài liệu.
Hình vẽ sau sẽ chỉ ra thời gian tồn tại của một đối tượng - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình v.

ẽ sau sẽ chỉ ra thời gian tồn tại của một đối tượng Xem tại trang 50 của tài liệu.
Hình 10-1: Thời gian tồn tại của một đối tượng - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 10.

1: Thời gian tồn tại của một đối tượng Xem tại trang 58 của tài liệu.
đây biểu diễn chu kỳ sống của một đối tượng điển hình. Ta hãy cùng xem lại ví dụ - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

y.

biểu diễn chu kỳ sống của một đối tượng điển hình. Ta hãy cùng xem lại ví dụ Xem tại trang 58 của tài liệu.
Hình 11-1: Sự biến đổi giữa những đối tượng trừu tượng và cụ thể - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 11.

1: Sự biến đổi giữa những đối tượng trừu tượng và cụ thể Xem tại trang 65 của tài liệu.
Hình 11-2: Hai cài đặt của cùng một đối tượng trừu tượng                                                                                                       - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 11.

2: Hai cài đặt của cùng một đối tượng trừu tượng Xem tại trang 67 của tài liệu.
Hình 13-1: Một vòng lặp tính toán Một tính toán bằng vòng lặp gồm nhữ ng thành ph ầ n sau:  - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 13.

1: Một vòng lặp tính toán Một tính toán bằng vòng lặp gồm nhữ ng thành ph ầ n sau: Xem tại trang 73 của tài liệu.
Hình 16-1: Sơ đồ thiết kết ổng thể Danh sách các lớp đối tượng:  - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 16.

1: Sơ đồ thiết kết ổng thể Danh sách các lớp đối tượng: Xem tại trang 94 của tài liệu.
16.2.2.1 Màn hình Configuration - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

16.2.2.1.

Màn hình Configuration Xem tại trang 95 của tài liệu.
và thoát khỏi màn hình 8 btnClose  Button  Thoát khỏ i màn hình  - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

v.

à thoát khỏi màn hình 8 btnClose Button Thoát khỏ i màn hình Xem tại trang 96 của tài liệu.
Hình 16-3: Chi tiết màn hình Configuration Danh sách các đối tượng thể hiện:  - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 16.

3: Chi tiết màn hình Configuration Danh sách các đối tượng thể hiện: Xem tại trang 96 của tài liệu.
Hiển thị màn hình Configuration cho phép người dùng enable hoặc disable chức năng  kiểm tra của PreCondition, PostCondition,  Invariant - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

i.

ển thị màn hình Configuration cho phép người dùng enable hoặc disable chức năng kiểm tra của PreCondition, PostCondition, Invariant Xem tại trang 97 của tài liệu.
Hình 16-5: Lớp ProjectInfo Danh sách biến thành phần:   - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 16.

5: Lớp ProjectInfo Danh sách biến thành phần: Xem tại trang 99 của tài liệu.
Hình 16-6: Lớp ClassInfo Danh sách biến thành phần:  - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 16.

6: Lớp ClassInfo Danh sách biến thành phần: Xem tại trang 101 của tài liệu.
Hình 16-7: Lớp FunctionInfo Danh sách biến thành phần:  - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 16.

7: Lớp FunctionInfo Danh sách biến thành phần: Xem tại trang 104 của tài liệu.
Hình 16-9: Lớp Extra Danh sách hàm thành ph ầ n:   - tìm hiểu công nghệ DESIGN BY CONTRACT và xây dựng công cụ hỗ trợ cho C#

Hình 16.

9: Lớp Extra Danh sách hàm thành ph ầ n: Xem tại trang 109 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan