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#var loop body end Demo: Project stack STACK_CLASS: lớp stack chính, chứa các định nghĩa các thao tác trên stack. make: Hàm khởi tạo của stack. item: hàm lấy phần tử trên cùng stack. get(t): hàm lấy phần tử thứ t empty: kiểm tra stack có rỗng. full: kiểm tra stack có đầy put(x): thêm phần tử x vào stack remove: bỏ phần tử trên cùng stack TEST_CLASS: lớp chính(main), lớp gọi các hàm của lớp STACK_CLASS. Ta sẽ thử vài trường hợp cho thấy...
Nội dung trích xuất từ 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# - 2Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# var loop body end Demo: Project stack STACK_CLASS: lớp stack chính, chứa các định nghĩa các thao tác trênstack. make: Hàm khởi tạo của stack. item: hàm lấy phần tử trên cùng stack. get(t): hàm lấy phần tử thứ t empty: kiểm tra stack có rỗng. full: kiểm tra stack có đầy put(x): thêm phần tử x vào stack remove: bỏ phần tử trên cùng stack TEST_CLASS: lớp chính(main), lớp gọi các hàm của lớp STACK_CLASS. Ta sẽ thử vài trường hợp cho thấy khả năng bắt lỗi của Eiffel. Lưu ý: Sau mỗi trường hợp hãy sửa lại code như ban đầu rồi mới thử tiếptrường hợp khác. Mở tập tin test_class.e. Chạy thử chương trình (F5). Chương trình khởi tạo stack gồm 8 phần tử từ 0 đến 7 và xuất stack. Stackđược xuất ra màn hình. TH1: Lỗi xảy ra ở tiền điều kiện Sửa n:=8 thành n:=-8. Tại dòng if (n >= 0) then nhấn tổ hợp phím Ctrl-K. Tại dòng end --end if , nhấn tổ hợp phím Ctrl-K. Recompile (Shift-F7) và cho chạy lại chương trình (F5). 13Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# Xuất hiện thông báo ngoại lệ sau: 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 Hình 1-3: Code gây ra lỗi ở tiền điều kiện Nguyên nhân: Khi bạn gọi thủ tục a.make(n), do trước đó khởi tạo n là một số âm (=-8),client không đảm bảo contract, nên trong thủ tục make của lớp STACK_CLASS,thủ tục make kiểm tra không thỏa tiền điều kiện positive_capacity: n>=0, nódừng lại và thông báo cho người lập trình biết. TH2: Lỗi xảy ra ở hậu điều kiện Trong lớp TEST_CLASS, tại thủ tục make, sửa như sau: 14Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# Capacity := n capacity := n-1 Recompile (Shift-F7) và cho chạy lại chương trình (F5). Xuất hiện thông báo ngoại lệ sau: 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 Hình 1-5: Code gây ra lỗi ở hậu điều kiện Nguyên nhân: Trước đó, ta gán capacity := n-1, hậu điều kiện lại yêu cầu capacity = n. TH3: Lỗi xảy ra ở điều kiện bất biến. Trong lớp TEST_CLASS, tại thủ tục make, thêm vào dòng sau: count:=-1 15Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# Chọn menu Project > Project Setting… Bỏ dấu check ở ensure. Đánh dấucheck ở invariant. Hành động này nhằm bỏ qua chế độ kiểm lỗi ở hậu điều kiện. Ởđây chỉ muốn minh họa cho việc phát hiện lỗi ở điều kiện bất biến. Recompile (Shift-F7) và cho chạy lại chương trình (F5). Xuất hiện thông báo ngoại lệ sau: 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 Hình 1-7: Code gây ra lỗi ở điều kiện bất biến Nguyên nhân: Trước đó, ta gán count := -1, điều kiện bất biến yêu cầu count>=0. 16Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# Chương 2: Một số cơ chế mang lại tính đáng tin cậycho phần mềm Trước hết, phải nói rằng kỹ thuật định nghĩa thuộc tính của một đối tượnggần như là có liên quan với cấu trúc của những hệ thống phần mềm. Những kiếntrú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 vặn vẹo. Đặc biệt, cốgắng giới hạn sự liên quan giữa các môđun với nhau đến mức tối thiểu nhất sẽ làtiêu điểm cho việc thảo luận về tính riêng biệt. Điều này giúp ngăn chặn những rủiro thông thường của tính đáng tin cậy, ví dụ như những biến toàn cục và việc địnhnghĩa những cơ chế liên lạc bị giới hạn, client và những mối quan hệ kế thừa. Nóiđến chất lượng phần mềm thì không thể bỏ qua tính đáng tin cậy. Chúng ta cố gắnggiữ cho những cấu trúc càng đơn giản càng tốt. Tuy rằng điều này vẫn chưa đủ đảmbảo cho tính đáng tin cậy của phần mềm, nhưng dù sao, nó cũng là một điều kiệncần thiết. Một điều kiện khác cũng cần thiết nữa là làm cho phần mềm của chúng ta tốiưu và dễ đọc. Văn bản phần mềm không những được viết một lần mà nó còn phảiđược đọc đi đọc lại và viết đi viết lại nhiều lần. Sự trong sáng và tính đơn giản củacác câu chú thích là những yêu cầu cơ bản để nâng cao tính ...