1. Trang chủ
  2. » Công Nghệ Thông Tin

TÌM HIỂU CÔNG NGHỆ DESIGN BY CONTRACT VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ CHO C# - 9

12 10 0

Đ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

Cấu trúc

  • LỜI NÓI ĐẦU

  • TỔNG QUAN

  • Giới thiệu về Eiffel

    • Giới thiệu

    • Design By Contract trong Eiffel

    • EiffelStudio

      • Giao diện

      • Các thao tác căn bản trên EiffelStudio

  • Một số cơ chế mang lại tính đáng tin cậy cho phần mềm

  • Tính đúng đắn của phần mềm

  • Biểu diễn một đặc tả

    • Những công thức của tính đúng đắn

    • Những điều kiện yếu và mạnh

  • Giới thiệu về sự xác nhận trong văn bản của phần mềm

  • Tiền điều kiện và hậu điều kiện

    • Lớp ngăn xếp

    • Tiền điều kiện

    • Hậu điều kiện

  • Giao ước cho tính đáng tin cậy của phần mềm

    • Quyền lợi và nghĩa vụ

      • Những quyền lợi

      • Những nghĩa vụ

    • Nghệ thuật của sự tin cậy phần mềm: kiểm tra ít hơn, bảo đảm

    • Những xác nhận không phải là một cơ chế kiểm tra đầu vào

  • Làm việc với những xác nhận

    • Lớp stack

    • Mệnh lệnh và yêu cầu

    • Lưu ý về những cấu trúc rỗng

    • Thiết kế tiền điều kiện: tolerant hay demanding?

    • Một môđun tolerant

  • Những điều kiện bất biến của lớp

    • Định nghĩa và ví dụ

    • Định dạng và các thuộc tính của điều kiện bất biến của lớp

    • Điều kiện bất biến thay đổi

    • Ai phải bảo quản điều kiện bất biến?

    • Vai trò của những điều kiện bất biến của lớp trong kỹ thuật

    • Những điều kiện bất biến và hợp đồng

  • Khi nào một lớp là đúng?

    • Tính đúng đắn của một lớp

    • Vai trò của những thủ tục khởi tạo

    • Xem lại về mảng

  • Kết nối với kiểu dữ liệu trừu tượng

    • So sánh đặc tính của lớp với những hàm ADT

    • Biểu diễn những tiên đề

    • Hàm trừu tượng

    • Cài đặt những điều kiện bất biến

  • Một chỉ thị xác nhận

  • Vòng lặp có điều kiện bất biến và điều kiện biến đổi

    • Vấn đề vòng lặp

    • Những vòng lặp đúng

    • Những thành phần của một vòng lặp đúng

    • Cú pháp của vòng lặp

  • Sử dụng những xác nhận

    • Những xác nhận như một công cụ để viết phần mềm chính xác

    • Sử dụng những xác nhận cho việc viết tài liệu: thể rút gọn c

  • Giới thiệu công cụ XC#

    • Giới thiệu

    • XC# hoạt động như thế nào

    • Khai báo các xác nhận

      • Tiền điều kiện

      • Hậu điều kiện

      • Một số thuộc tính mà XC# qui ước sẵn

    • Ví dụ lớp Stack

  • Kết quả thực nghiệm: công cụ DCS

    • Nguyên lý làm việc

    • Thiết kế

      • Tổng thể

      • Chi tiết các lớp đối tượng

        • Màn hình Configuration

        • Lớp Connect

        • Lớp ProjectInfo

        • Lớp ClassInfo

        • Lớp FunctionInfo

        • Lớp Assertion

        • Lớp Extra

          • KẾT LUẬN

            • HƯỚNG PHÁT TRIỂN

            • TÀI LIỆU THAM KHẢO

            • Ý KIẾN CỦA GIÁO VIÊN PHẢN BIỆN

Nội dung

Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# Danh sách các đối tượng xử lý: STT 1 2 3 Tên PreConditionCheck PostConditionCheck InvariantCheck Lớp/Kiểu bool bool bool Ý nghĩa Xác định có sử dụng PreCondition hay không. Xác định có sử dụng PostCondition hay không. Xác định có sử dụng Invariant hay không. Xác định có sử dụng 4 BasePreConditionCheck bool PreCondition của những lớp dẫn xuất hay không. Xác định có sử dụng 5 BasePostConditionCheck bool PostCondition của những lớp dẫn xuất hay không. Xác định có sử dụng Invariant 6 BaseInvariantCheck...

Tìm hiểu cơng nghệ Design By Contract Xây dựng công cụ hỗ trợ cho C# Danh sách đối tượng xử lý: STT Tên Lớp/Kiểu PreConditionCheck bool PostConditionCheck bool InvariantCheck bool Ý nghĩa Xác định có sử dụng PreCondition hay khơng Xác định có sử dụng PostCondition hay khơng Xác định có sử dụng Invariant hay khơng Xác định có sử dụng BasePreConditionCheck bool PreCondition lớp dẫn xuất hay khơng Xác định có sử dụng BasePostConditionCheck bool PostCondition lớp dẫn xuất hay khơng Xác định có sử dụng Invariant BaseInvariantCheck bool lớp dẫn xuất hay không Danh sách biến cố : STT Thể Biến cố Xử lý Hiển thị hình Configuration cho phép Form Load người dùng enable disable chức kiểm tra PreCondition, PostCondition, Invariant btnOK Click btnClose Click Lưu thơng số chọn hình khỏi hình Thốt khỏi hình 97 Tìm hiểu cơng nghệ Design By Contract Xây dựng cơng cụ hỗ trợ cho C# 16.2.2.2 Lớp Connect Hình 16-4: Lớp Connect Danh sách biến thành phần: STT Tên Kiểu/Lớp projectInfo ProjectInfo Ý nghĩa Lưu trữ thông tin Project hành Danh sách biến cố: STT Thể Biến cố Xử lý RightClick vào hình soạn thảo code, xuất pop-up menu Click vào command Command Exec này, hình Configuration hiển thị cho phép người dùng enable disable chức kiểm tra PreCondition, PostCondition, Invariant Bắt đầu chạy chương trình: ¾ Lưu thông tin project hành: thông tin phương thức Project BuildBegin lớp (tên phương thức, precondition, postcondition) Invariant lớp project ¾ Đổi tên tất phương thức có liên quan đến contract 98 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 contract lớp dẫn xuất cho lớp kế thừa ¾ Phát sinh source code để kiểm tra Assertion Project 16.2.2.3 BuildDone Trả source code cũ Lớp ProjectInfo Hình 16-5: Lớp ProjectInfo Danh sách biến thành phần: STT Tên Kiểu/Lớp Ý nghĩa Mảng đối tượng ClassInfo, classInfo ClassInfo[] đối tượng lưu trữ thông tin lớp project NumFile int Số file project 99 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 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 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 Ghi 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 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 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 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 tên hàm lưu, phát GenerateCode sinh hàm Những hàm gọi lại 105 dùng cho mệnh đề có từ khố OLD Chỉ làm việc với mệnh đề có từ khố OLD 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[] Lưu trữ toàn mệnh đề Assertion 106 Ghi Giá trị rỗng Invariant 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ữ tồn mệnh string kiểu liệu đề Assertion biến có từ khoá 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 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 ... tên tất phương thức có liên quan đến contract 98 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 contract lớp dẫn xuất cho lớp kế thừa ¾ Phát sinh source code... hàm Những hàm gọi lại 105 dùng cho mệnh đề có từ khố OLD Chỉ làm việc với mệnh đề có từ khố OLD 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... PreCondition, PostCondition [] lớp dẫn xuất 102 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,

Ngày đăng: 08/05/2021, 15:56

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN