Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 114 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
114
Dung lượng
1,16 MB
Nội dung
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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 hồn thành Thành phố Hồ Chí Minh, Tháng 7, 2005 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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ợ hoàn toà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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 xuyên 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 hồ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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Danh sách hàm thành phần: STT Tên FileCount Tham số Kết Xử lý Đếm số file project, lưu vào biến NumFile Duyệt qua lớp, gọi ChangeAllFuncName phương thức đổi tên hàm lớp Duyệt qua lớp, gọi phương thức lưu thông SaveAssertionOfBase tin assertion Classes lớp dẫn xuất lớp Duyệt qua lớp, gọi phương thức thêm vào GenerateCode phần code kiểm tra Assertion lớp Duyệt qua lớp, gọi ReturnOriginalCode phương thức trả code cũ lớp 100 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# 16.2.2.4 Lớp ClassInfo Hình 16-6: Lớp ClassInfo Danh sách biến thành phần: STT Tên Kiểu/Lớp Ý nghĩa Ghi Mảng đối tượng functionInfo FunctionInfo[] FunctionInfo, đối tượng lưu trữ thông tin hàm lớp NumFunc int Số hàm class Đối tượng lớp Assertion để Invariant Assertion lưu trữ thông tin Invariant lớp Mảng đối tượng lớp BaseInvariant Assertion[] Assertion để lưu trữ thông tin Invariant 101 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# lớp dẫn xuất Mỗi file FileName string Tên file chứa lớp chứa lớp ClassName string BaseClassName string[] Tên lớp Mảng tên lớp dẫn xuất Đối tượng lớp Extra, dùng extra để gọi hàm riêng, Extra khơng thuộc trách nhiệm lớp Danh sách hàm thành phần: STT Tên FuncCount Tham số Kết Xử lý Đếm số hàm lớp, lưu vào biến NumFunc Phân tích code để lấy tên GetClassName lớp, lưu vào ClassName Phân tích code để lấy tên lớp dẫn xuất GetBaseClassesName lớp này, lưu vào BaseClassName Lưu Invarian, SaveAssertionOfBase ClassInfo Class PreCondition, PostCondition [] lớp dẫn xuất 102 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu công nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Lưu thông tin Invariant SaveInvariantInfo lớp vào biến Invariant Duyệt qua hàm lớp, lưu thông tin hàm (tên hàm, ChangeFuncName PreCondition, PostCondition), sau đổi tên hàm Tìm vị trí thích hợp code, gọi hàm GenerateCode CodeGenerated để phát sinh code vào Duyệt qua hàm, gọi phương thức phát sinh CodeGenerated string code hàm tương ứng, trả chuỗi code phát sinh Xoá phần code phát sinh ReturnOriginalCode điều chỉnh tên hàm cũ 103 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# 16.2.2.5 Lớp FunctionInfo Hình 16-7: Lớp FunctionInfo Danh sách biến thành phần: STT Tên Kiểu/Lớp PreCondition Assertion PostCondition Assertion FunctionName string Ý nghĩa Đối tượng lớp Assertion để lưu trữ thông tin PreCondition hàm Đối tượng lớp Assertion để lưu trữ thông tin PostCondition hàm Biến lưu tên hàm Mảng đối tượng lớp Assertion để lưu BasePreCondition Assertion[] trữ thông tin PreCondition lớp dẫn xuất Mảng đối tượng lớp Assertion để lưu BasePreCondition Assertion[] trữ thông tin PostCondition lớp dẫn xuất Đối tượng lớp Extra, dùng để gọi Extra Extra hàm riêng, khơng thuộc trách nhiệm lớp 104 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu công nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Danh sách hàm thành phần: STT Tên Tham số Kết Xử lý Ghi Đổi tên hàm theo ChangeName dạng @origin_[Tên cũ] Lưu thông tin PreCondition PostCondition SaveContractsInfo hàm vào biến PreCondition PostCondition Phân tích mệnh đề GetVar string string[] Assertion để lấy biến kiểu liệu Với mệnh đề đối tượng GetVarHaveOLD Keyword Assertion string[][] Assertion, gọi hàm GetVar để lấy biến kiểu liệu dùng cho mệnh đề có từ khố OLD Chỉ làm việc với mệnh đề có từ khố OLD Dùng tên hàm lưu, phát GenerateCode sinh hàm Những hàm gọi lại 105 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# hàm gốc (đã bị đổi tên) với code kiểm tra PreCondition, PostCondition Invariant hàm 16.2.2.6 Lớp Assertion Hình 16-8: Lớp Assertion Danh sách biến thành phần: STT Tên Kiểu/Lớp Ý nghĩa Lưu tên thủ tục(tên Routine string hàm) chứa Assertion ConditionFull string[] Ghi Giá trị rỗng Invariant Lưu trữ toàn mệnh đề Assertion 106 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Khác ConditionFull Condition chỗ không lưu Lưu trữ toàn mệnh string kiểu liệu đề Assertion biến có từ khố OLD Message Lưu Message string[] kèm với Condition Đối tượng lớp Extra, dùng để gọi Extra Extra hàm riêng, khơng thuộc trách nhiệm lớp Danh sách hàm thành phần: STT Tên Kết Tham số Xử lý Dựa vào FuncName Type (Precondition, PostCodition, Invariant, GenerateAssertion string FuncName, Code string Type string BasePreCondition, BasePostCondition, BaseInvariant) để phát sinh hàm kiểm tra Assertion Phát sinh hàm string FuncName, GenerateCode FuncName dòng string Type, code kiểm tra gọi đến string[][] OLDVar hàm kiểm tra Assertion tạo 107 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# GenerateAssertionCode OLDVar mảng chứa biến có từ khố OLD PostCondition kiểu liệu tương ứng để phát sinh code kiểm tra biến Dựa vào FuncName Type (Precondition, PostCodition, Invariant, BasePreCondition, BasePostCondition, BaseInvariant) để phát GenerateAssertion CodeBasePre Assertion ass, string FuncName, sinh hàm kiểm tra string Assertion Hàm tương tự hàm string Type GenerateAssertionCode dùng trường hợp lớp dẫn xuất có PreCondition, lúc cần truyền tham số kiểu Assertion cho hàm Chức giống hàm GenerateCode_Ba sePre string FuncName, Assertion[] BasePreCondition GenerateCode hỉ dùng trường hợp lớp dẫn xuất có chứa PreCondition, trường hợp code phát sinh 108 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu công nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# khác với trường hợp lại 16.2.2.7 Lớp Extra Hình 16-9: Lớp Extra Danh sách hàm thành phần: STT Tên Kết Tham số Xử lý Kiểm tra xem dòng Line IsContractor string Line bool có phải khai báo contructor khơng Kiểm tra xem dịng s có chứa từ IsAccessibilityL evelFound string s bool khóa {"private", "public", "protected", "internal","protected internal", "static" } IsContain string large, string small bool Kiểm tra chuỗi large có chứa chuỗi small 109 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu công nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Kiểm tra hàm điểm IsHaveContract EditPoint e, TextDocument t EditPoint e, văn bool TextDocument t có chứa PreCondition PostCondition GetReturnType string FuncName string Lấy kiểu trả FuncName Từ khai báo hàm (vd: string GetFuncName FuncDec,int public int A(int x) ), trả string Flag IsHaveVar string FName bool dạng: ¾ Flag=1: A(x) ¾ Flag=2: A(int x) Kiểm tra FName có tham số khơng Sửa tên hàm FName(…) thành FName_[Type](…), đó, Type FixFuncName string FName, string Type string PreCondition, PostCondition, Invariant hay BasePreCondition, BasePostCondition, BaseInvariant OLDVar mảng biến AddOLDVar string FName1, kiểu liệu tương ứng, string FName2, sửa đổi FName1 string[][] FName2 cách thêm OLDVar thông tin OLDVar vào tham số 110 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu công nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# KẾT LUẬN Sau nghiên cứu đề tài, chúng em hiểu rõ công nghệ Design By Contract khả ứng dụng lập trình hướng đối tượng Đồng thời, để phục vụ cho yêu cầu đề tài giúp cho việc hồn thiện kiến thức tìm hiểu được, chúng em xây dựng công cụ hỗ trợ Design By Contract dạng Add-In cho C# 111 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu công nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# HƯỚNG PHÁT TRIỂN − Xây dựng công cụ hỗ trợ Design By Contract cho mơi trường lập trình khác − Mở rộng khả kiểm tra cơng cụ, kiểm tra điều kiện thiết thực − Mở rộng kiểu liệu kiểm tra cơng cụ, kiểm tra kiểu đối tượng không dừng lại kiểu liệu sở 112 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# TÀI LIỆU THAM KHẢO [1] B Meyer, Object-Oriented Software Construction, Prentice Hall, 2nd edition, 1997 [2] Eiffel Software, Design By Contract http://www.eiffel.com/doc/manuals/technology/contract/ [3] ResolveCorp, eXtensible C# - Design by contract Add-In for C# http://www.mmsindia.com/JMSAssert.html [4] Man Machine Systems, Design by contract tool for Java—JMSAssert http://www.mmsindia.com/JMSAssert.html [5] Kevin McFarlane, Design by Contract Framework for C# http://www.codeproject.com/csharp/designbycontract.asp [6] Parasoft Corp, Jcontract home page http://www.parasoft.com/jsp/products/home.jsp?product=Jcontract [7] R Kramer, iContract home page http://www.reliable-systems.com/tools/iContract/iContract.htm 113 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tìm hiểu công nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Ý KIẾN CỦA GIÁO VIÊN PHẢN BIỆN ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… 114 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... luanvanchat@agmail.com 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. .. 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. .. LUONG download : add luanvanchat@agmail.com 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