Mô tả cấu trúc dữ liệu Tree

Một phần của tài liệu Nghiên cứu về separation logic và ứng dụng vào hệ thống kiểm định tự động (Trang 73)

Cây có thể định nghĩa một cách đệ quy như sau:

- Mỗi Node là một cây, Node đó cũng là Node gốc của cây.

- Nếu như n là một Node và lần lượt là gốc của các cây

và các cây này đôi một không có Node chung. Thì nếu Node n trở

thành Node chung của các Node ta sẽ được một cây mới T. Cây này

có Node n là Node gốc và các cây trở thành các cây con (subtree) của

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang74

Hình 7 – Cấu trúc dữ liệu cây

Trong phần này, luận văn trình bày kiểm định cấu trúc dữ liệu cây nhị phân hoàn chỉnh, một dạng cấu trúc điển hinh của cấu trúc dữ liệu cây. Nó có đặc điểm là mọi Node trên cây chỉ có tối đa hai nhánh con, với một Node thì người ta cũng phân biệt cây con trái và cây con phải của Node đó. Cây nhị phân có tính đến thứ tự của các nhánh con và nếu chiều cao của cây là h thì mọi mức có chiều cao nhỏ hơn h đều có đúng 2 Node con. Trong phần này sẽ trình bày về đặc tả các thao tác cơ bản của cây nhị phân hoàn chỉnh: tìm chiều cao nhỏ nhất, tìm chiều cao lớn nhất, chèn một Node vào cây nhị phân hoàn chỉnh đảm bảo không thay đổi tính chất của cây. 3.4.3.2 Dạng thức File đầu vào của Tree

Để thực hiện đặc tả các thủ tục của cấu trúc dữ liệu câyphù hợp với dạng thức File đầu vào của HIP, luận văn khai báo một số đặc tính cây như sau:

- n là chiều cao của cây.

-nmin là chiều dài ngắn nhất tới một lá, đây là một tính chất quan trọng được sử dụng trong thủ tục chèn một Node mới vào cây.

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang75

Đặc tả khai báo vị từ Shape và các thuộc tính của nó

Đặc tả khai báo các thủ tục với dạng tiền điều kiện/hậu điều kiện (Pre/Post)

Đặc tả thủ thục tìm giá trị lớn nhất giữa hai giá trị

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang76 Đặc tả thủ thục tìm chiều cao của cây

Đặc tả thủ thục tìm chiều cao nhỏ nhấtcủa cây

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang78

3.4.3.3 Kết quả kiểm địnhTree với HIP/SLEEK

Thực hiện kiểm định các thủ tục cây với định dạng khai báo đầu vào phù hợp với khai báo HIP ta được kết quả như sau:

Hình 8 – Kết quả kiểm định đặc tả cấu trúc dữ liệu cây

Kết quả kiểm định đặc tả các thủ tục thành công, và các suy diễn chứng minh tự động (kết quả suy diễn SLEEK) được trả về trong file

sleek_log__home_loris_Desktop_HIP_SLEEK_HIP_LV_Tree_ss.txt 3.4.4 Kiểm định với cấu trúc dữ liệu Queue

Trong phần này luận văn trình bày kiểm định dữ liệu với cấu trúc dữ liệu hàng và lựa chọn cấu trúc dữ liệu điển hình của hàng là “hàng ưu tiên” (Priority Queue) để thực nghiệm kiểm định với công cụ HIP/SLEEK.

Khái niệm: Hàng là Là tập hợp trong đó mỗi phần tử là một cặp (giá trị ưu tiên, đối tượng) ta có thể so sánh đượccác giá trị ưutiên.

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang79

- insert thực hiện chèn vào hàng một giá trị có độ ưu tiên là v. - ripplethực hiện khôi phục các thuộc tính Heap của hàng. - deletemaxthực hiện việc xóa bỏ Node gốc của hàng. - deleteone thực hiện xóa một giá trị khỏi hàng ưu tiên. 3.4.4.1 Mô tả cấu trúc dữ liệu Queue

Có nhiều cách thể hiện cho cấu trúc dữ liệu hàng, luận văn lựa chọn thể hiện cấu trúc dữ liệu hàng bởi heap như minh họa sau:

Hình 9 – Cấu trúc dữ liệu hàng Trong đó dữ liệu tại mỗi Node gồm có các thông tin như sau:

- val thông tin giá trị ưu tiên - nleft số Node con trái - nright số Node con phải - left con trỏ trỏ đến con trái - right con trỏ trỏ đến con phải

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang80

3.4.4.2 Dạng thức File đầu vào của Queue

Với cấu trúc dữ liệu mô tả như trên, các đặc tả dưới đây sẽ đặc tả các thủ tục và dữ liệu phù hợp với khai báo đầu vào của HIP.

Đặc tả khai báo dữ liệu

Đặc tả khai báo vị từ Shape và các thuộc tính của nó

Đặc tả khai báo các thủ tục với dạng tiền điều kiện/hậu điều kiện (Pre/Post)

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang82 Đặc tả thủ tục xóa giá trị khỏi hàng ưu tiên

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang83 Đặc tả thủ tục khôi phục thuộc tính Heap của hàng ưu tiên

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang85

3.4.4.3 Kết quả kiểm địnhQueue với HIP/SLEEK

Thực hiện kiểm định các thủ tục hàng ưu tiên với định dạng khai báo đầu vào phù hợp với khai báo HIP ta được kết quả như sau:

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang86

Hình 10 - Kết quả kiểm định đặc tả cấu trúc dữ liệu hàng

Kết quả kiểm định đặc tả các thủ tục thành công, và các suy diễn chứng minh tự động (kết quả suy diễn SLEEK) được trả về trong file

sleek_log__home_loris_Desktop_HIP_SLEEK_HIP_LV_PriorityQueue_ss.txt 3.5 Kết luận chương

Trong chương 3 luận văn đã trình bày về công cụ HIP/SLEEK được phát

triển bởi nhóm tác giả “Wei-Ngan Chin, Cristina David, Huu Hai Nguyen, và

Shengchao Qin”. Đây là công cụ ứng dụng lý thuyết Separation Logic đã trình bày

ở chương 2 thực hiện kiểm định Module chương trình tự động thông qua việc suy diễn ở mức mã nguồn chương trình. Luận văn đã thực nghiệm kiểm định một vài cấu trúc dữ liệu điển hình và trình bày các kết quả thực nghiệm trên công cụ thực tế. Việc tìm hiểu công cụ HIP/SLEEK đã làm rõ một số vấn đề sau:

-Lý thuyết kiểm định chương trình tự động ứng dụng Separation Logic là có thể áp dụng được trong thực tế khi xây dựng các công cụ kiểm định chương trình tự động.

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang87

-Kỹ thuật đặc tả chương trình ứng dụng lý thuyết Separation Logic là hoàn toàn đúng đắn và có thể áp dụng trên các cấu trúc dữ liệu phức tạp, các dữ liệu có tính động.

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang88

CÔNG VIỆC LIÊN QUAN

4.1 Dạng thức phân tích/kiểm tra Shape

Trong nghiên cứu phân tích dữ liệu của chương trình, phân tích Shape được sử dụng để kiểm tra cấu trúc dữ liệu người dùng là khá phổ biến. Một trong những

kỹ thuật nổi bật là Pointer Assertion Logic của Moeller và Schwartzbach, kỹ thuật

này mô tả tính bất biến của các loại đồ thị. Nhưng kỹ thuật này chủ yếu tập trung cho việc cung cấp ngữ nghĩa cho những suy diễn dựa trên Hoare Logic trong các hệ thống kiểm định, trong luận văn dạng phân tích Shape được đề cập có phạm vi áp dụng cho những chương trình thao tác với dữ liệu con trỏ.

Khác với các nghiên cứu phân tích Shape trước đây chủ yếu phân tích dữ liệu Shape bất biến, kỹ thuật phân tích Shape được sử dụng trong luận văn còn đặc tả được các thuộc tính Size và Bag của các cấu trúc dữ.Ngoài ra việc xây dựng nên vị từ user-defined shape, cũng cho phép mô tả các cấu trúc dữ liệu phức tạp như cây AVL, cây đỏ đen, danh sách sắp xếp, danh sách nối đôi, ngăn xếp, hàng đợi… 4.2 Thuộc tính Size

Theo nhiều hướng nghiên cứu khác, thì những thuộc tính Size được coi là một trong những khai phá lớn nhất trong ngôn ngữ đặc tả, trước đây các cấu trúc dữ liệu dễ dàng phân tích hơn nhờ những thuộc tính bất biến. Phân tích Size xuất hiện sau những chương trình dựa trên đối tượng, những chương trình này bị hạn chế bởi việc quản lý kích thước các đối tượng bất biến được định danh và những kích thước các đối tượng động không thể định danh, không thể hỗ trợ cho những dạng thức Shape phức tạp.

Hệ thống Applied Type System (ATS)là một hệ thống chứng minh chương trình bởi việc sử dụng linear logic, ATS cũng có khả năng thao tác với các cấu trúc dữ liệu phức tạp và có sự chia sẻ dữ liệu đồng thời. Tuy nhiên với hệ thống này, người dùng vẫn phải cung cấp các thuộc tính cũng như các trạng thái sẽ áp dụng cho chương trình một các chính xác và đầy đủ, khi đó vai trò của ATS cũng thực hiện

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang89

việc chứng minh tính đúng đắn chương trình. Trong luận văn sử dụng mô tả với các ràng buộc phân tích shape, size, bag và cung cấp khả năng kiểm định Module tự động.

4.3 Thuộc tính Set/Bag

Kỹ thuật phân tích Set (tập) sử dụng để kiểm định cấu trúc dữ liệu chương trình được đề xuất bởi Kuncak, trong đó đề cập tới khái niệm về first order là sự kết hợp giữa khái niệm Set và giải thuậtPresburger. Sử dụng các kết quả của kỹ thuật này trong việc xây dựng các đặc tả ràng buộc kết hợp, tuy nhiên giải thuật đưa ra là rất phức tạp.Trong luận văn thì phân tích thuộc tính Reachability có liên quan tới thuộc tính Set/bag nhưng việc sử dụng đơn giản hơn để gần gũi với khái niệm mức vị từ.

4.4 Kỹ thuật Fold/Unfold

Fold/Unfold(gấp/mở gấp)là những kỹ thuật được sử dụng trong biến đổi chương trình, được biết đến tương tự như kỹ thuật Unroll/Roll.Thủ tục này được sử dụng một cách tự động trong suốt quá trình kiểm tra các suy diễn Entailment Checking.

Thủ tục tự động sử dụng kỹ thuật Unroll/Roll được đưa ra bởi Berdine, nhưng lại gặp khó khăn khi làm việc với các vị từ cho đoạn danh sách (lseg) và cây (tree). Kỹ thuật Fold/Unfold được đề cập trong luận văn là phổ biến, tự động và có tính dừng sử dụng trong kiểm tra suy diễn công thức Heap.

4.5 Một số ứng dụng kiểm định Logic khác

Những ứng dụng kiểm định chương trình dựa trên lý thuyết suy diễn Hoare Logic ra đời từ khá lâu so với các ứng dụng trên nền tảng Separation Logic. Sau đây đề cập tới một số ứng dụng điển hình và những điểm hạn chế của các ứng dụng này.

ESC/Java là ứng dụng kiểm tra những chương trình tĩnh cho Java, được phát triển bởi Compaq Systems Research Center.Với mong muốn tìm ra nhiều lỗi hơn so với những công cụ kiểm định tĩnh trước đó. Ứng dụng ESC/Javacho phép

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang90

chương trình kiểm định có thể qua được những lỗi mà đã được thiết kế bởi ESC/Java tức là chấp nhận những kết quả sai của chương trình. Với cách thức kiểm định được đề cập trong luận văn, nếu một chương trình được kiểm định thì nó luôn được đảm bảo tính đúng đắn là phù hợp với những đặc tả chương trình thực thi.

ESC/Java2 là sự cải tiến tiếp theo của ESC/Java. Trong đó được thiết kế phù hợp với nhiều hơn các phiên bản Java và nhiều hơn các cấu trúc JML. Tuy nhiên nó vẫn gặp nhiều khó khăn cho việc kiểm định các chương trình sử dụng cấu trúc dữ liệu Heap mà yêu cầu thuộc tính Reachability.

Spec là một chương trình được phát triển bởi Microsoft Research, nó được sử dụng để kiểm định các chương trình được viết với ngôn ngữ C#. Điểm khác biệt là Spec sử dụng các trường đặc biệt trong thủ tục để lưu trữ các tính chất bất biến, thì trong luận văn đề cập tới khái niệm vị từ. Việc sử dụng vị từ giúp người dùng dễ dàng hình dung hơn với các đặc tính bất biến của chương trình.

VeriFast là công cụ được phát triển để kiểm địnhnhững thuộc tính an toàn của những chương trình làm việc với con trỏ. Công cụ này cũng hỗ trợ những vị từ dưới dạng thức của Separation Logic tuy nhiên các kỹ thuật đặc tả được đề cập còn khá đơn giản.

Còn rất nhiều những công cụ kiểm định khác sử dụng Logic để suy diễn tính đúng đắn của chương trình. Những so sánh trên đây giúp cho người đọc dễ hình dung hơn những điểm khác biệt cơ bản của công cụ được đề cập tới trong luận văn và các công cụ được đưa ra so sánh. Điểm nhấn mạnh mà luận văn đưa ra đó là khái niệm vị từ User-defined, được sử dụng để mô tả các thuộc tính sử dụng để phân tích chương trình một cách hiệu quả hơn.

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang91

KẾT LUẬN

1. CÁC NHIỆM VỤ ĐÃ HOÀN THÀNH

Lĩnh vực ứng dụng Separation Logic còn khá mới mẻ, do đó khi nghiên cứu tìm hiểu về Separation Logic người viết luận văn đã cố gắng tìm hiểu và trình bày những khía cạnh cơ bản nhất và tập trung vào hoàn thành những mục tiêu đề ra của luận văn:

1) Nghiên cứu tổng quan về nền tảng Separation Logic, nêu rõ vai trò của Separation Logic đối với việc phát triển các ứng dụng kiểm định phần mềm tự động.

2) Nghiên cứu cơ bản về Separation Logic và kỹ thuật đặc tả chương trình ứng dụng Separation Logic ứng dụng xây dựng công cụ kiểm định tự động.

3) Nghiên cứu công cụ HIP/SLEEK ứng dụng Separation Logic kiểm định cácModeule chương trình tự động.

2. CÁC KẾT QUẢ ĐẠT ĐƯỢC Về mặt lý thuyết:

1) Trình bày được nền tảng cơ sở xây dựnglên lý thuyết Separation Logic và vai trò của nó trong hoạt động kiểm định phần mềm tự động.

2) Trình bày được cơ bản lý thuyết Separation Logic, kỹ thuật đặc tả chương trình dựa trên Separation Logic và mô hình tính đúng đắn của suy diễn kiểm định. Đây chính là nền tảng xây dựng lên các công cụ kiểm định chương trình tự động ứng dụng Separation Logic.

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang92

Về mặt thực nghiệm:

1) Trình bày được một mô hình kiểm định ứng dụng lý thuyết Separation Logic trong kiểm định Module chương trình là công cụ HIP/SLEEK.

2) Trình bày được thực nghiệm kiểm định đặc tả một số cấu trúc dữ liệu ứng dụng lý thuyết Separation Logicvà kết quả thực nghiệm thực tế với công cụ HIP/SLEEK. Thực nghiệm này đóng vai trò khai phá cho những ứng dụng kiểm định đặc tả áp dụng công cụ HIP/SLEEK vào việc kiểm chứng tính đúng đắn của chương trình.

3. CÁC VẤN ĐỀ CÒN TỒN ĐỌNG

Do khối lượng lý thuyết là khá lớn và lý thuyết về Separation Logic còn khá mới mẻ nên luận văn còn một số vấn đề tồn đọng như sau:

1) Chưa đề cập tới các quy tắc xấp xỉ trong lý thuyết của Separation Logic và trong suydiễn kiểm định chương trình.

2) Chưa đưa ra được hiệu năng kiểm định tự động của các mô hình ứng dụng lý thuyết Separation Logic với các mô hình suy diễn tự động khác.

4. ĐỊNH HƯỚNG PHÁT TRIỂN

Với đề tài này, người viết luận văn mong muốn trong thời gian tới tiếp tục bổ sung hoàn thiện lý thuyết về Separation Logic, đặc biệt là lý thuyết về các mô hình xấp xỉ và làm rõ hơn việc chứng minh các định lý đề cập trong luận văn. Đồng thời trình bày thêm các ứng dụng kiểm định tự động khác ứng dụng lý thuyết Separation Logic và trong tương lai phát triển một công cụ kiểm định tự động toàn bộ cấu trúc chương trình.

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang93

TÀI LIỆU THAM KHẢO

[1].BURDY, L., CHEON, Y., COK, D. R., ERNST, M. D., KINIRY, J. R., LEAVENS, G. T.,LEINO, K. R. M., and POLL, E., “An overview of JML tools and applications,” Software Tools for Technology Transfer, 2005.

[2].CHIN, W.-N., DAVID, C., NGUYEN, H. H., and QIN, S., “Multiple pre/post specifica-tions for heap-manipulating methods,” in HASE, 2007.

[3].CHIN, W.-N., DAVID, C., NGUYEN, H. H., and QIN, S., “Enhancing modular oo veri-fication with separation logic,” inPOPL, 2008.

[4].CHIN, W. and KHOO, S., “Calculating sized types,” in ACM SIGPLAN PEPM, (Boston, United States), pp. 62–72, Jan. 2000.

Một phần của tài liệu Nghiên cứu về separation logic và ứng dụng vào hệ thống kiểm định tự động (Trang 73)