Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
293 KB
Nội dung
Chương Mở đầu 1.1 Bối cảnh Phần mềm ngày đóng vai trò quan trọng xã hội đại Tỷ trọng giá trị phần mềm hệ thống ngày lớn Tuy nhiên, nhiều hệ thống, lỗi phần mềm gây hậu đặc biệt nghiêm trọng, không thiệt hại mặt kinh tế mà làm tổn thất trực tiếp sinh mạng người Do đó, nhu cầu nghiên cứu đề xuất phương pháp để kiểm chứng phần mềm ngày trở lên cần thiết 1.2 1.2.1 Một số nghiên cứu liên quan Kiểm chứng thiết kế Edmunds đề xuất ngôn ngữ đặc tả trung gian OCB (Object-oriented Concurrent-B-OCB ) để nối liền đặc tả Event-B với cài đặt chương trình hướng đối tượng, tương tranh Đặc tả OCB chuyển tự dộng sang mô hình Event-B mã chương trình Java Các chương trình Java chuyển đổi tuân thủ theo đặc tả OCB Ben Younes tác giả khác đề xuất luật để chuyển đổi từ đặc tả biểu đồ hoạt động (Activity Diagram) UML sang đặc tả Event-B Đóng góp nghiên cứu chuyển đổi từ đặc tả trực quan sang hình thức chứng minh tự động mô hình thỏa mãn thuộc tính Tuy nhiên việc chuyển đổi chưa thực tự động hoàn toàn, nghiên cứu đưa ví dụ để minh họa khả chuyển đổi Chương Mở đầu Ball đề xuất mẫu thiết kế để đặc tả tương tác tác tử phần mềm, mẫu thiết kế sau chuyển đổi sang đặc tả Event-B Tuy nhiên, việc chuyển đổi từ mẫu thiết kế sang đặc tả Event-B chưa tự động Giao thức tương tác tương tác đặc tả lại với Event-B dựa vào mẫu thiết kế 1.2.2 Kiểm chứng mã nguồn J-LO (Java Logical Observer ) công cụ kiểm chứng tuân thủ chương trình Java so với đặc tả logic thời gian tuyến tính (linear temporal logic) J-LO mở rộng trình biên dịch AspectBench để đan mã aspect sinh vào chương trình Java cần kiểm chứng nhằm phát lỗi hạt giống (seeded errors) Tuy nhiên, J-LO gây chi phí thời gian thực thi chương trình cần kiểm chứng lớn, thường sử dụng để kiểm chứng chương trình Java có kích thước nhỏ Bodden Havelund mở rộng ngôn ngữ lập trình hướng khía cạnh AspectJ với ba phương thức lock(), unlock() maybeShate() Các phương thức cho phép người lập trình dễ dàng cài đặt thuật toán phát lỗi chương trình Java tương tranh Theo tác giả phương pháp phát tốt lỗi tương tranh liệu (data race), nhiên chưa phát lỗi liên quan đến tương tranh khác tắc nghẽn (deadlock ) Jin đề xuất phương pháp hình thức để kiểm chứng tĩnh tuân thủ cài đặt mã nguồn đặc tả thứ tự thực phương thức (method call sequence - MCS ) chương trình Java Ưu điểm phương pháp vi phạm phát sớm, thời điểm phát triển biên dịch chương trình mà không cần chạy thử chương trình Tuy nhiên, phương pháp chưa kiểm chứng chương trình tương tranh Trong phương pháp JML, MCS phải đặc tả dạng tiền hậu điều kiện kết hợp với phần thân phương thức chương trình Các tiền hậu điều kiện biên dịch chạy với chương trình nguồn Các vi phạm phát vào thời điểm chạy chương trình Với phương pháp người lập trình phải đặc tả rải Chương Mở đầu rác mã kiểm tra nhiều điểm chương trình Do khó kiểm soát, không đặc tả độc lập, tách biệt đặc tả MCS 1.3 Nội dung nghiên cứu Trong luận án này, tập trung nghiên cứu đề xuất phương pháp để kiểm chứng chương trình tương tranh pha thiết kế cài đặt mã nguồn chương trình (Hình 1.1) Tại mức thiết kế, sử dụng phương pháp hình thức với Event-B để kiểm chứng thiết kế chương trình Java tương tranh nhằm phát lỗi mức cao Để phát lỗi mức thấp sử dụng phương pháp lập trình hướng khía cạnh công cụ kiểm chứng mô hình JPF (Java PathFinder ) để kiểm chứng tuân thủ cài đặt chương trình Java tương tranh so với đặc tả thiết kế Hình 1.1 – Kiểm chứng mức thiết kế cài đặt chương trình 1.4 Cấu trúc luận án Luận án gồm sáu chương Trong đó, Chương giới thiệu số kiến thức cho đóng góp luận án chương lại Chương đề xuất hai phương pháp đặc tả kiểm chứng tương tác thành phần tương tranh sử dụng phương pháp hình thức với Event-B Chương đề xuất hai phương pháp sử dụng lập trình hướng khía cạnh với AOP để kiểm chứng tuận thủ cài đặt chương trình so với thiết kế Chương Kiến thức sở 2.1 Kiểm chứng phần mềm 2.1.1 Kiểm chứng hình thức 2.1.1.1 Kiểm chứng mô hình Kiểm chứng mô hình (model checking) sử dụng để xác định tính hợp lệ hay nhiều tính chất mà người dùng quan tâm mô hình phần mềm cho trước Cho mô hình M thuộc tính p cho trước, kiểm tra liệu thuộc tính p có thỏa mãn mô hình M hay không, ký hiệu M |= p 2.1.1.2 Chứng minh định lý Phương pháp chứng minh định lý (theorem proving) sử dụng kĩ thuật suy luận để chứng minh tính đắn công thức hay tính khả thỏa công thức F với tất mô hình, ký hiệu |= F 2.1.2 Kiểm chứng thời điểm thực thi Kiểm chứng động (runtime verification) kỹ thuật kết hợp kiểm chứng hình thức thực thi chương trình để phát lỗi hệ thống dựa trình quan sát input/output thực thi chương trình So với phương pháp kiểm chứng tĩnh kiểm chứng động thực thực thi hệ thống Do đó, kiểm chứng động gọi kiểm thử bị động (passive testing) Kiểm chứng động nhằm bảo đảm tuân thủ cài đặt hệ thống phần mềm so với đặc tả Chương Kiến thức sở 2.2 Một số vấn đề chương trình tương tranh Trong chương trình tương tranh, có hai thuộc tính cần phải bảo đảm an toàn (safety) thực (liveness) Một số vấn đề tương tranh liên quan đến hai thuộc tính mô tả sau Sự xung đột (interference) xảy hai nhiều tiến trình đồng thời truy cập biến chia sẻ, có tiến trình ghi Khi giá trị biến chia sẻ kết chương trình phụ thuộc vào đan xen (interleaving) hay thứ tự thực tiến trình Sự xung đột gọi cạnh tranh liệu (data race) Tắc nghẽn xảy hệ thống (chương trình) đáp ứng tín hiệu yêu cầu Có hai dạng tắc nghẽn, dạng xảy tiến trình dừng lại chờ đợi lẫn nhau, ví dụ tiến trình nắm giữ khóa mà tiến trình khác mong muốn ngược lại Dạng hai xảy tiến trình chờ đợi tiến trình khác không kết thúc Sự đói (starvation) liên quan đến tranh chấp tài nguyên, vấn đề xảy tiến trình truy cập đến tài nguyên chia sẻ 2.3 Sự tương tranh Java Sự tương tranh Java thực thông qua chế giám sát tiến trình, hành vi tiến trình mô tả phương thức run Sự thực thi tiến trình điều khiển tiến trình khác thông qua phương thức stop, suspend resum 2.3.1 Mô hình lưu trữ (JMM-Java Memory Model) Trong Java, tiến trình tương tác với thông qua việc đọc ghi lệu chia sẻ Mô hình lưu trữ JMM biểu diễn tương tác tiến trình nhớ JMM định nghĩa luật tương tác tiến trình hành vi chương trình Java tương tranh, người lập trình thiết kế cài đặt chương trình cách đắn phù hợp Tuy nhiên vấ đề tránh tắc nghẽn (deadlock ), cạnh tranh liệu (data race) chưa giải mô hình Chương Kiến thức sở 2.3.2 Ngôn ngữ mô hình hóa cho Java (JML-Java Modeling Language) JML ngôn ngữ đặc tả hình thức cho Java dựa logic Hoare để đặc tả kiểm chứng tiền điều kiện (precondition), hậu điều kiện (postcondition) bất biến (invariant) Đặc tả JML nhúng vào mã nguồn Java bắt đầu kí hiệu //@< JML specification > /∗@ < JML specification > @∗/ theo sau thuộc tính cần đặc tả Một số từ khóa requires, ensures định nghĩa biểu thức tiền điều kiện, hậu điều kiện invariant định nghĩa bất biến Các thuôc tính đặc tả JML biên dịch thực thi với mã nguồn để kiểm chứng thỏa mãn 2.3.3 Công cụ kiểm chứng mã Java (JPF-Java PathFinder) Java PathFinder (JPF) công cụ kiểm chứng chương trình Java tương tranh dạng bytecode JPF sử dụng cách linh hoạt dạng giao diện dòng lệnh tích hợp vào môi trường phát triển ứng dụng Java Netbean, Eclipse JPF ứng dụng Java mã nguồn mở cho phép ta cấu hình để sử dụng theo cách khác mở rộng Các phiên hỗ trợ kiểm chứng thuộc tính tắc nghẽn (deadlock ), cạnh tranh liệu (data race) ngoại lệ chưa xử lý (unhandled exceptions) Tuy nhiên, JPF cho phép người sử dụng mở rộng để kiểm chứng thuộc tính khác dựa giao diện thiết kế sẵn giao diện property listener 2.4 Phương pháp hình thức với Event-B Event-B phương pháp hình thức dựa lý thuyết tập hợp, ngôn ngữ thay tổng quát logic vị từ bậc (first order logic) Event-B bao gồm ký pháp, phương pháp công cụ hỗ trợ trình phát triển phần mềm cách làm mịn (refinement) Quá trình làm mịn bắt đầu cách xây dựng máy trừu tượng sau làm mịn dần nhận máy thực thi, tương tự mã nguồn chương trình Chương Kiến thức sở 2.4.1 Máy Ngữ cảnh Các mô hình Event-B mô tả hai cấu trúc Máy (machine) Ngữ cảnh (context) Trong đó, Máy dùng để mô tả phần động mô hình bao gồm biến, bất biến, định lý kiện tương tác với môi trường Ngữ cảnh mô tả phần tĩnh mô hình, chứa tập hợp, hằng, tiên đề định lý Một mô hình gồm Máy Ngữ cảnh kết hợp Máy Ngữ cảnh Một Máy không tham chiếu vài Ngữ cảnh Các Máy Ngữ cảnh mô hình làm mịn cách bổ sung hằng, biến, bất biến, định lý, kiện 2.4.2 Sự kiện Mô hình hệ thống với Event-B kiên trừu tượng quan sát xảy hệ thống, từ đặc tả trạng thái hành vi hệ thống mức trừu tượng cao Một kiện e tác động lên (một danh sách) biến trạng thái v , với điều kiện G(v ) hành động A(v ), mô tả sau : e = when G(v ) then A(v ) end 2.4.3 Phân rã kết hợp Một đặc trưng quan trọng Event-B khả bổ sung kiện trình làm mịn, nhiên bổ sung kiện làm tăng độ phức tạp tiến trình làm mịn phải xử lý nhiều kiện nhiều biến trạng thái Ý tưởng phân rã phân chia mô hình M thành mô hình M1, , Mn , mô hình dễ dàng làm mịn so với mô hình ban đầu 2.4.4 Sinh mệnh đề cần chứng minh RODIN (Rigorous Open Development Environment for Complex Systems) công cụ mã nguồn mở dựa Eclipse để mô hình chứng minh tự động Event-B Trong luận án sử dụng công cụ RODIN để mô hình, làm mịn, sinh chứng minh tự động mệnh đề cần chứng minh để bảo đảm tính đắn mô hình Chương Kiến thức sở 2.5 2.5.1 Ngôn ngữ mô hình hóa UML Biểu đồ Biểu đồ (Sequence Diagram-SD) dạng biểu đồ phổ biến UML sử dụng để biểu diễn phần tử logic hệ thống Một biểu đồ gồm hai phần chính, trục dọc biểu diễn đối tượng tiến trình, mũi tên nằm ngang biểu diễn thứ tự trao đổi thông điệp đối tượng cách 2.5.2 Máy trạng thái giao thức Biểu đồ máy trạng thái giao thức (Protocol State Machine-PSM ) dạng đặc biệt biểu đồ SD bổ sung vào UML 2.0, PSM sử dụng để đặc tả giao thức tương tác hay thứ tự thực phương thức đối tượng 2.5.3 Biểu đồ thời gian Biểu đồ thời gian (Timing Diagram-TD) dạng biểu đồ bổ sung vào UML 2.0 để mô hình hành vi đối tượng với ràng buộc thời gian Thông thường, TD sử dụng để đặc tả ràng buộc thời gian hệ thống thời gian thực, hệ thống nhúng, nhiên dùng để mô hình hệ thống nghiệp vụ khác 2.6 Lập trình hướng khía cạnh Phương pháp lập trình hướng khía cạnh (Aspect-Oriented Programming - AOP ) phương pháp lập trình phát triển tư tách biệt mối quan tâm khác thành môđun khác Với AOP, cài đặt mối quan tâm chung cắt ngang hệ thống môđun đặc biệt gọi aspect thay dàn trải chúng môđun nghiệp vụ liên quan Các aspect sau kết hợp tự động với môđun nghiệp vụ khác trình gọi đan (weaving) biên dịch đặc biệt AspectJ công cụ AOP cho ngôn ngữ lập trình Java Trình biên dịch AspectJ đan xen chương trình Java với aspect thành tệp mã bytecode chạy máy ảo Java Chương Ràng buộc thứ tự tiến trình tương tranh 3.1 Giới thiệu Trong chương luận án đề xuất cách tiếp cận để đặc tả kiểm chứng giao thức tương tác tiến trình tương tranh sử dụng phương pháp hình thức với Event-B Chúng minh họa phương pháp đề xuất cho vấn đề vùng xung đột (critical section), cung cấp-tiêu thụ (producerconsumer ) đọc-ghi liệu (reader-writer ) 3.2 Đặc tả kiểm chứng ràng buộc thứ tự tiến trình tương tranh Trong Event-B, trạng thái mô hình định nghĩa tập biến biểu diễn cho đối tượng toán học lý thuyết tập hợp Ngoài định nghĩa biến, bất biến vị từ biểu diễn logic vị từ bậc lý thuyết tập hợp Sự kết hợp biến bất biến tạo thành trạng thái, trạng thái mô hình tập trừu tượng Với chế làm mịn Event-B, đề xuất mô hình tổng quát để đặc tả ràng buộc thứ tự tiến trình tương tranh Hình 3.1 Trong đó, mô hình khởi tạo biểu diễn máy trừu tượng với kiện thực tương tranh Mô hình làm mịn biểu diễn giải pháp cho thực tương tranh kiện Mỗi tiến trình chương trình tương tranh biểu diễn kiện Chương Ràng buộc thứ tự tiến trình tương tranh Machine 10 sees Context (Concurrent model) refines Machine extends sees Context (Decomposition) refines extends Hình 3.1 – Kiến trúc tổng quát đặc tả tương tranh với Event-B 3.2.1 Vùng xung đột Trong mô hình khởi tạo vấn đề này, tiến trình biểu diễn kiện tương ứng Giả sử điều kiện G1∩G2∩ ∩Gn = ∅ để kiện thực tương tranh Không tính tổng quát, giả thiết thứ tự thực kiện tuân theo giao thức Γ = [init, ec1, ec2, ec3, , ecn ] Trong mô hình làm mịn nó, sử dụng kỹ thuật đồng hóa với biến semaphore turn để điều khiển thực thi kiện theo giao thức Γ 3.2.2 Cung cấp tiêu thụ Mô hình khởi tạo vấn đề cung cấp-tiêu thụ biểu diễn tương tự vấn đề vùng xung đột, điều kiện G1∩G2 = ∅ để bảo đảm kiện producer consumer thực tương tranh Tại thời điểm ban đầu, kiện khởi tạo init thực để đồng thời kích hoạt kiện producer consumer , hàng đợi đầy kiện producer kích hoạt kiện close theo giao thức Γ = [init, producer || consumer , close] Trong mô hình làm mịn nó, sử dụng chế đồng hóa với biến semaphore Count để kiểm tra trạng thái đầy rỗng hàng đợi 3.2.3 Vấn đề đọc-ghi Mô hình khởi tạo vấn đề tương tự mô hình khởi tạo toán cung cấp-tiêu thụ vùng xung đột Chương Sự đồng thuận hệ thống đa thành phần 4.1 Giới thiệu Để bảo đảm tính đắn hệ thống đa thành phần từ mức thiết cài đặt mã chương trình Trong chương này, đề xuất phương pháp kiểm chứng đồng thuận hệ thống mức thiết kế sử dụng Event-B mức mã nguồn Java (bytecode) sử dụng JPF (Java PathFinder ) 4.2 Một số định nghĩa bổ đề Định nghĩa 4.1 (Sự kiện hội tụ) ê = {e = g, a | [a]g❀false } Một kiện lặp (iterative event) e = g, a gọi hội tụ (dừng) điều kiện g thỏa mãn tập hành động a thực đến điều kiện g không thỏa mãn sau số hữu hạn bước thực Bổ đề 4.2 (Sự kiện lấy giá trị hội tụ) Nếu ê = g, a ∃ e = g , a cho g∨g = true Bổ đề 4.2 cho biết kiện lặp dừng giá trị trả nhận cách bổ sung thêm kiện Chứng minh Giả sử e = g, a kiện hội tụ Khi theo Định nghĩa 4.1 điều kiện g không thỏa mãn sau số hữu hạn lần thực hành động a Do đó, ta định nghĩa kiện e = g , a với điều kiện g = ¬ g để nhận giá trị trả kiện hội tụ e.✷ 12 Chương Sự đồng thuận hệ thống đa thành phần 13 Định nghĩa 4.3 (Hệ thống đa thành phần) Một hệ thống đa thành phần ( multi-component system-MCS) bốn Mult = Co, Mact, α, Γ Trong : – Co : tập hữu hạn thành phần, – Mact : tập hữu hạn chức Mult, – α : Mact → Co hàm gán chức Mact mà thành phần thực hành vi đó, – Γ : giao thức thực thành phần để thực công việc Định nghĩa 4.4 (Sự đồng thuận hệ thống đa thành phần) Giả sử Ê = {S (ei = gi , ) | i ∈ [1 n]} biểu diễn thứ tự thực kiện hệ thống đa thành phần M với giao thức tương tác Γ M gọi đồng thuận : Ê Γ : thứ tự thực kiện tuân thủ giao thức, [S (ei )] gi ❀false : tuyển mệnh đề điều kiện tất kiện giao thức không thỏa mãn sau số hữu hạn lần thực Khi phép tuyển điều kiện tất kiện không thỏa mãn hệ thống bị tắc nghẽn Do đó, đưa vào kiện e = g , a cho g1∨g2∨ gn ∨g thỏa mãn Bổ đề 4.5 (Sự kiện lấy giá trị đồng thuận) Nếu Ê = S (ei ) ∃ e = g , a cho gi ∨g = true Bổ đề 4.5 cho biết tương tác kiện đồng thuận nhận giá trị trả cách bổ sung thêm kiện Việc chứng minh Bổ đề 4.5 tương tự chứng minh Bổ đề 4.2 4.3 4.3.1 Phương pháp đặc tả kiểm chứng thiết kế đồng thuận hệ thống đa thành phần Đặc tả kiến trúc hệ thống Chúng xây dựng đặc tả kiến trúc hệ thống với Event-B Hình 4.1 Trong đó, ngữ cảnh máy trừu tượng thành phần khác Chương Sự đồng thuận hệ thống đa thành phần 14 kết hợp thành ngữ cảnh máy trừu tượng hệ thống gọi MCS.ctx MCS.mch Giả sử M = V , Init, ec, ee, eeM máy kết hợp sees Component1.mch Component1.ctx sees Component2.mch Componentn.mch composition composition Component2.ctx sees Componentn.ctx sees MCS.mch MCS.ctx Hình 4.1 – Sự kết hợp máy trừu tượng ngữ cảnh biểu diễn khả thành phần Mi , i = 1, , n Phụ thuộc vào tương tác thành phần chứa kiện song song xây dựng thành phần cho máy kết hợp Mục 4.3.2 Mục 4.3.3 4.3.2 Giao thức Giả sử thứ tự thực kiện Γ = [ec1, ec2, ec3, , ecn ] đề xuất nguyên lý để xây dựng máy kết hợp M Event-B sau : V = ∪vi : danh sách biến máy kết hợp bao gồm biến máy thành phần, ec = ∪eci : máy kết hợp gồm tất kiện máy thành phần, Init = Init1 : kiện khởi tạo Init máy kết hợp định nghĩa kiện khởi tạo Init máy thành phần giao thức, ee = ∪eei : máy kết hợp bao gồm tất kiện lấy kết trả máy thành phần, eeM kiện bổ sung vào để lấy kết cuối trình tính toán mô hình kết hợp 4.3.3 Giao thức song song Giao thức song song Γ hình thức hóa sau : Chương Sự đồng thuận hệ thống đa thành phần Γ (1) (2) (3) Khi 15 scenario e event | Γ; e sequence | Γ e parallel máy kết hợp M xây dựng theo nguyên lý sau ::= Từ kiện thực trước đó, kích hoạt điều kiện tất kiện song song kiện thực thời điểm, Với kiện eei thực song song Do kiện hội tụ nên bổ sung kiện eeis để lấy kết trả về, Bổ sung kiện eeP để nhận kết cuối tiến trình song song, kiện kích hoạt kiện eeis , Sự kiện nhận kết eeP có nhiệm vụ kích hoạt kiện giao thức 4.3.4 Hệ thống đa thành phần thực phép toán tập số nhị phân 4.3.4.1 Mô tả hệ thống Giả sử cần đặc tả hệ thống đa thành phần thực phép toán nhân hai số nhị phân dựa vào phép toán nhân số nhị phân với bit, dịch trái phép cộng hai số nhị phân 4.3.4.2 Đặc tả hệ thống với Event-B Thuật toán 4.1 Nhân hai số nhị phân ar ← Multiplication2BinaryNumber(aa,bb) 1: for each ii ≤ size bb 2: modr ← multiplyWithOneDigit(bb[ii], aa) 3: slr ← shiftLeft(modr , ii) 4: cc ← addition(slr , cc) 5: end for 6: ar ← cc Dựa vào Thuật toán 4.1 nguyên lý đề xuất Mục 4.3.2, xây dựng máy kết hợp từ máy thành phần chứng minh đồng thuận hệ thống Chương Sự đồng thuận hệ thống đa thành phần 16 Bảng 4.1 – Thực nghiệm đặc tả đồng thuận hệ thống đa thành phần với RODIN Thành phần Bitshiftt MultiDigit Sum MSC 4.3.4.3 Số kiện 4 10 Số Mệnh đề cần chứng minh 11 32 Số mệnh đề Số mệnh đề chứng minh Còn lại 3 4 15 17 Kết chứng minh Hệ thống đa thành phần thực phép toán tập số nhị phân đặc tả công cụ RODIN Event-B Bảng 4.1 thống kê kết việc sinh chứng minh tự động mệnh đề cần chứng minh Trong đó, số mệnh đề cần chứng minh sinh tự động để bảo đảm tính đắn đặc tả, số mệnh đề chứng minh tự động 4.4 4.4.1 Phương pháp kiểm chứng đồng thuận hệ thống đa thành phần mức mã nguồn Mô tả phương pháp Phương pháp kiểm chứng đồng thuận hệ thống đa thành phần mức mã nguồn mô tả sau (Hình 4.2) – Bản thiết kế hệ thống đặc tả biểu đồ UML Event-B, – Người lập trình cài đặt (sinh mã ) Java dựa đặc tả hệ thống, – Sinh mã cho giao diện lớp VMListener JPF để kiểm chứng tuân thủ hệ thống đa thành phần so với đặc tả Hình 4.2 – Phương pháp kiểm chứng đồng thuận mức mã nguồn Chương Sự đồng thuận hệ thống đa thành phần 4.4.2 17 Sinh mã kiểm chứng JPF Chúng xây dựng thuật toán để sinh mã kiểm tra cho lớp khuôn mẫu VMListener JPF sau Thuật toán 4.2 Sinh mã cho lớp VMListener JPF Require: Đặc tả hệ thống đa thành phần với giao thức Γ Ensure: Mã kiểm chứng cho VMListener JPF Khởi tạo biến trang thái khởi tạo kết thúc St Start, St Final State = St Start { Biến State kiểm tra thứ tự thực theo Γ } while State = St Final for phương thức khởi tạo m thuộc giao thức Γ if State! = St Start then dừng thông báo vi phạm đặc tả giao thức end if State = St m end for for phương thức n có thứ tự thực liền sau phương thức Γ thuộc giao thức Γ if State == St Final then return Sự đồng thuận hệ thống else if State ∈ S (Γ ) then {S (Γ ) tập trạng thái phương thức liền trước trước phương thức n} dừng thông báo vi phạm đặc tả giao thức end if State = St n {Sau thực xong phương thức n chuyển sang trạng thái nó} end for end while 4.4.3 Hệ thống cung cấp tiêu thụ Vấn đề cung cấp-tiêu thụ với giao thức song song Γ = [init, producer || consumer , close] đặc tả Chương Dựa vào thuật toán sinh mã giao diện lớp VMListener , xây dựng mã để kiểm chứng tuân thủ cài đặt chương trình đặc tả Chúng thử nghiệm với chương trình Java cài đặt tuân thủ theo giao thức Γ sai không tuân thủ theo giao thức Kết cho thấy phương pháp phát vi phạm chương trình so với đặc tả thiết kế Chương Sự tuân thủ thực thi đặc tả giao thức tương tác 5.1 Giới thiệu Trong chương này, đề xuất cách tiếp cận kiểm chứng động tương tác thành phần chương trình tương tranh sử dụng lập trình hướng khía cạnh Các vi phạm phát bước kiểm thử, thời điểm thực thi chương trình 5.2 5.2.1 Phương pháp đặc tả kiểm chứng tuân thủ thực thi đặc tả giao thức tương tác Mô tả phương pháp Chúng đề xuất phương pháp kiểm chứng tuân thủ thực thi đặc tả giao thức tương tác chương trình tương tranh sau (Hình 5.1) Sử dụng biểu thức quy mở rộng (RE) máy trạng thái giao thức (PSM) để đặc tả giao thức tương tác (IPC), Người lập trình cài đặt ứng dụng dựa đặc tả IPC, Các mã aspect sinh tự động đan với mã chương trình để kiểm chứng động tuân thủ thực thi đặc tả IPC 5.2.2 Đặc tả giao thức tương tác 5.2.2.1 Biểu thức quy mở rộng cho biểu diễn giao thức tương tác Định nghĩa 5.1 (Biểu thức quy mở rộng) Regular Expression RE năm RE =< M , O, S , Pre, Post > Trong đó, M = 18 Chương Sự tuân thủ thực thi đặc tả giao thức tương tác 19 Hình 5.1 – Sơ đồ hoạt động hệ thống {m1, m2, , mn } bảng chữ Sigma gồm tập hữu hạn phương thức, O = {o1, o2, , op } tập hữu hạn đối tượng, Pre, Post tập hữu hạn tiền hậu điều kiện, S = {s1, s2, , sp } tập hạn biểu thức biểu diễn phương thức s [Pre]o.m[Post] | s → s | s | s | s s | s · | s + | (s) Với m ∈ M , s ∈ S o ∈ O s → s kết hợp hai nhiều biểu thức tuần tự, s | s phép hoặc, s || s phép song song, s · không lặp lại nhiều lần, s + lặp lại nhiều lần, (s) biểu thức kết hợp 5.2.2.2 Biểu đồ PSM cho biểu diễn giao thức tương tác Định nghĩa 5.2 (Máy trạng thái giao thức) Protocol State Machine - PSM bẩy thành phần PSM =< S , δ, M , Pre, Post, s0, f > Trong đó, S tập hữu hạn trạng thái, M tập phương thức, Pre, Post tập tiền điệu kiện hậu điều kiện δ ⊂ S ×Pre×M ×Post → S hàm chuyển trạng thái s0, f ∈ S trạng thái đầu kết thúc 5.2.3 Sinh mã aspect Với đặc tả dạng PSM sinh đồ thị có hướng để biểu diễn IPC thuật toán Thuật toán 5.1 Với đặc tả RE mở rộng đưa dạng RE chuẩn phép biến đổi s=[Pre]o.m[Post] thành ký tự a ∈ Σ biểu thức RE chuẩn Từ dạng RE chuẩn chuyển sang máy trạng thái hữu hạn mã aspect sau sinh tự động từ đặc tả Chương Sự tuân thủ thực thi đặc tả giao thức tương tác 20 Thuật toán 5.1 Sinh đồ thị biểu diễn IPC từ đặc tả PSM Require: đặc tả PSM Ensure: Đồ thị G = đặc tả giao thức Tạo hàm song ánh µ M → {1 | M |}, | M | lực lượng tập M, số nguyên tập đỉnh đồ thị Tạo đỉnh vào gán nhãn 0, với m thuộc M0 tạo cung từ đỉnh vào đến đỉnh µ(m), gán nhãn [prem ]m[postm ] Với cung dạng m → m thuộc PSM tạo nút từ µ(m) tới µ(m ) gán nhãn {prem }m {postm } Tạo đỉnh kết thúc, với m → thuộc đỉnh kết thúc PSM, tạo cung từ µ(m) tới đỉnh kết thúc vừa tạo 5.2.4 Đan mã aspect AspectJ cho phép đan xen mã aspect với chương trình Java ba mức khác : mức mã nguồn, mã bytecode thời điểm nạp chương trình chương trình gốc chuẩn bị thực Với việc đan xen mức mã bytecode thời điểm nạp chương trình phương pháp sử dụng mà không yêu cầu phải có mã nguồn Khi thay đổi đặc tả phải sinh biên dịch lại mã aspect 5.3 Thực nghiệm Chúng cài đặt phương pháp thành công cụ kiểm chứng PVG (Protocol Verification Generator - PVG) Đầu vào công cụ PVG FSM đồ thị có hướng biểu diễn giao thức tương tác Đầu mã kiểm chứng aspect AspectJ Kết thực nghiệm cho thấy : Các aspect sinh so với đặc tả giao thức, quán biểu thức quy máy trạng thái giao thức, Các aspect không làm thay đổi hành vi chương trình gốc ngoại trừ thời gian chạy kích thước chương trình, Đã phát vi phạm tương tác (thứ tự thực hiện), tiền hậu điều kiện phương thức cài đặt mà không tuân thủ theo đặc tả IPC, Thời gian chạy sau đan mã aspect tăng tỷ lệ thuận với số luồng chương trình số phương thức mô tả giao thức Chương Ràng buộc thời gian thành phần chương trình tương tranh 6.1 Giới thiệu Ràng buộc thời gian thành phần đóng vai trò quan trọng hệ thống phần mềm đặc biệt với hệ thống thời gian thực, hệ thống nhúng Chương đề xuất phương pháp kiểm chứng tuân thủ ràng buộc thời gian thành phần phần tương tranh so với đặc tả sử dụng lập trình hướng khía cạnh 6.2 6.2.1 Phương pháp đặc tả kiểm chứng ràng buộc thời gian Mô tả phương pháp Chúng đề xuất phương pháp kiểm chứng tuân thủ ràng buộc thời gian ứng dụng phần mềm sau (Hình 5.1, Chương 5) Sử dụng biểu đồ thời gian (Timing Diagram-TD) biểu thức quy thời gian ( Timed Regular Expression – TRE ) để đặc tả ràng buộc thời gian (Timing constraint –TC), Tự động sinh mã aspect từ đặc tả TC, Mã aspect sinh tự động đan vào trước sau mã thực thi thành phần chương trình để kiểm chứng động tuân thủ với TC 6.2.2 Đặc tả ràng buộc thời gian Định nghĩa 6.1 (Ràng buộc thời gian thực thi) Ràng buộc thời gian thực thi thành phần TC đoạn thời gian đáp ứng cho phép 21 Chương Ràng buộc thời gian thành phần chương trình tương tranh 22 thực thi, biểu diễn hai thành phần TC = [a, b] a, b ∈ N a < b Định nghĩa 6.2 (Ràng buộc thời gian thành phần tuần tự) Giả sử ri ci thời điểm bắt đầu kết thúc thực thành phần TCi , thời gian thực thi ti = ci −ri , ti ∈ [ai , bi ], với i=1, ,n Khi ràng buộc thời gian thành phần tổng thời gian thời gian thực thi không vượt qua thành phần n ti ≤ θ , với θ ∈ N i=1 Định nghĩa 6.3 (Ràng buộc thời gian thành phần tương tranh) Giả sử τ (α1 ), τ (α2 ), , τ (αn ) thời gian thực thi tương ứng n thành phần tương tranh α1, α2, , αn Khi ràng buộc thời gian thành phần định nghĩa sau τ (αi ) ✶ τ (αj ) với ✶∈ {, ≥, =, =} i, j = n, i = j 6.2.2.1 Biểu thức quy thời gian Định nghĩa 6.4 (Biểu thức quy thời gian) TRE ba TRE = Trong đó, C = {c1, c2, , cn } tập hữu hạn thành phần, M = {m1, m2, , mm } tập hữu hạn phương thức, S = {s1, s2, , sk } tập hữu hạn biểu thức biểu diễn mối liên hệ thành phần định nghĩa sau s c.m[a, b] | s ◦ s | s s | s · | s + Trong đó, m ∈ M ; a, b ∈ N ; c ∈ C ;s, si , sj ∈ S với i, j = {1 k } ; si → sj kết hợp hai nhiều biểu thức ; si ◦ sj : phép ; si sj : phép song song (các phương thức si sj thực song song) ; s · : không lặp lại nhiều lần ; s + : lặp lại nhiều lần 6.2.2.2 Biểu đồ thời gian Định nghĩa 6.5 (Biểu đồ thời gian) TD sáu TD =< S , S0, C , M , δ, F > Trong đó, S tập hữu hạn trạng thái, C tập thành phần, M tập phương thức δ ⊆ S ×C M [a, b] → S hàm chuyển trạng thái với a, b ∈ N a ≤ b ràng buộc thời gian S0, F ∈ S trạng thái đầu kết thúc Chương Ràng buộc thời gian thành phần chương trình tương tranh 6.2.3 23 Sinh mã aspect Chúng định nghĩa mẫu để biểu diễn aspect sinh từ đặc tả ràng buộc thời gian Hình 6.1 Trong đó, biến địa phương định nghĩa để tính thời gian thực thi phương thức thực tính tổng thời gian thực phương thức Aspect sinh tự động đan xen với với chương trình để kiểm chứng tuân thủ ràng buộc thời gian thành phần import org.aspectj.lang.joinpoint ; variables Variables are declared here ; aspect AspectName{ before() : (execution(* *.*( ))) && !within(AspectName){ st = ; Get τ1 ; // the current system time ; } after() : (execution(* *.*( )))&& !within(AspectName){ Get τ2 ; // the current system time ; Get method name from XMI flie(task 1, task 2, ) ; Get lower and upper bound on timing from XMI file(r 1, r 2, ) ; τ = τ2 −τ1 ; // Calculate the execution time of the method ; st+ = τ ; // the execution time of sequential method ; 8.if (ξ(τ, r 1, r 2, ) = false)// Timing constraint conditions ; Produce violation reports ; } Hình 6.1 – Sinh mã aspect từ đặc tả ràng buộc thời gian 6.3 Thực nghiệm Chúng cài đặt phương pháp tích hợp với công cụ kiểm chứng PVG (Chương 5) Đầu vào công cụ PVG đặc tả ràng buộc thời gian cho dạng tệp có phần mở rộng txt biểu diễn biểu thức quy thời gian dạng xmi biểu diễn biểu đồ thời gian UML Đầu mã kiểm chứng aspect AspectJ Qua kết thực nghiệm cho thấy phương pháp đề xuất phát vi phạm ràng buộc thời gian thành phần Chúng cài đặt phương pháp thành công cụ kiểm chứng chạy thử nghiệm với số ứng dụng hướng đối tượng viết ngôn ngữ lập trình Java Kết thử nghiệm cho thấy phương pháp đề xuất phát vi phạm ràng buộc thời gian thành phần so với đặc tả Chương Kết luận 7.1 Các đóng góp luận án Luận án đóng góp hai kết việc kiểm chứng chương trình Java tương tranh, kết cụ thể sau Đề xuất phương pháp kiểm chứng tính đắn thiết kế chương trình tương tranh sử dụng Event-B, Đề xuất phương pháp kiểm chứng tuân thủ cài đặt chương trình so với mô hình thiết kế sử dụng AOP JPF Các kết cho thấy đề xuất có ý nghĩa việc bổ sung hoàn thiện phương pháp đặc tả kiểm chứng phần mềm từ pha thiết cài đặt 7.2 Hướng phát triển Tiếp tục phát triển đề xuất phương pháp kiểm chứng với Event-B Cài đặt công cụ hỗ trợ đặc tả song song plugin vào công cụ kiểm chứng mã nguồn mở RODIN, tự động sinh mã Java từ đặc tả EventB Hoàn thiện môi trường kiểm chứng dựa lập trình hướng khía cạnh để kiểm chứng tuân thủ thiết kế với cài đặt mã nguồn chương trình 24 Danh mục công trình khoa học công bố Tạp chí Trịnh Thanh Bình, Trương Ninh Thuận Nguyễn Việt Hà Kiểm chứng tuân thủ ràng buộc thời gian ứng dụng phần mềm, Tạp chí Tin học Điều khiển học, Vol.26, No.2, pp.173–184, 2010 Trịnh Thanh Bình, Trương Anh Hoàng Nguyễn Việt Hà.Kiểm chứng tương tác thành phần chương trình đa luồng sử dụng lập trình hướng khía cạnh Chuyên san Các công trình nghiên cứu, phát triển ứng dụng CNTT-TT, Tạp chí Công nghệ thông tin & Truyền thông, Vol.24, No.4(24), pp.36-45, 2010 Trinh Thanh Binh, Truong Anh Hoang, Nguyen Viet Ha A Dynamic Birthmark to Detect the Theft of Java Programs, Tạp chí Khoa học Tự nhiên Công nghệ, Đại học Quốc gia Hà Nội, Vol 24, No 3S, pp 123-130, 2008 Hội nghị Thanh-Binh Trinh, Ninh-Thuan Truong, and Viet-Ha Nguyen Refining undetermined events for specifying concurrent programs, 3nd Intern Conf on Knowledge and Systems Engineering (KSE 2011), Hanoi, Vietnam, 2011 Thanh-Binh Trinh, Quang-Thap Pham, Ninh-Thuan Truong, and Viet-Ha Nguyen A Runtime Approach to Verify Scenario in Multi-agent Systems, 2nd Intern Conf on Knowledge and Systems Engineering (KSE 2010), pp 161-166, Hanoi, Vietnam, Oct 8-9, 2010 Trinh Thanh Binh, Truong Anh Hoang, Nguyen Viet Ha Checking Protocol-Conformance in Component Models using Aspect Oriented Programming, IASTED Intern Conf on Advances in Computer Science and Engineering, pp 150-155, Phuket, Thailand, March 16-18, 2009 Thanh-Binh Trinh, Tuan-Anh Do, Ninh-Thuan Truong, and Viet-Ha Nguyen Checking the Compliance of Timing Constraints in Software Applications, 1st Intern Conf on Knowledge and Systems Engineering (KSE 2009), pp 220-225, Hanoi, Vietnam, Oct 14-15, 2009 Ninh-Thuan Truong, Thanh-Binh Trinh, and Viet-Ha Nguyen Coordinated Consensus Analysis of Multi-agent Systems using Event-B, 7th IEEE Intern Conf on Software Engineering and Formal Method (SEFM 2009), pp 201-209, Hanoi, Vietnam, 23-27 November 2009 25 Danh mục công trình khoa học 26 Hoang Truong, Thanh-Binh Trinh, Viet-Ha Nguyen, Trang Nguyen Thi Thu, Hung Dang Van and Hung Pham Dinh Specifying and checking interface protocols using aspect-oriented programming, 6th IEEE Intern Conf on Software Engineering and Formal Method (SEFM 2008), pp 382-386, Cape Town, South Africa, 10-14 November 2008 [...]... được các vi phạm ràng buộc thời gian giữa các thành phần Chúng tôi đã cài đặt phương pháp này thành một công cụ kiểm chứng và chạy thử nghiệm với một số ứng dụng hướng đối tượng viết trên ngôn ngữ lập trình Java Kết quả thử nghiệm cho thấy phương pháp được đề xuất đã phát hiện được vi phạm ràng buộc thời gian của các thành phần so với đặc tả Chương 7 Kết luận 7.1 Các đóng góp của luận án Luận án này... đóng góp hai kết quả chính trong việc kiểm chứng các chương trình Java tương tranh, kết quả cụ thể như sau 1 Đề xuất các phương pháp kiểm chứng tính đúng đắn của bản thiết kế các chương trình tương tranh sử dụng Event-B, 2 Đề xuất các phương pháp kiểm chứng sự tuân thủ giữa bản cài đặt chương trình so với mô hình thiết kế của nó sử dụng AOP và JPF Các kết quả cho thấy các đề xuất của chúng tôi có ý nghĩa... giữa các thành phần tuần tự) Giả sử ri và ci lần lượt là thời điểm bắt đầu và kết thúc thực hiện của một thành phần TCi , thời gian thực thi ti = ci −ri , ti ∈ [ai , bi ], với i=1, ,n Khi đó ràng buộc thời gian giữa các thành phần là tổng thời gian thời gian thực thi không được vượt qua của các thành phần n ti ≤ θ , với θ ∈ N i=1 Định nghĩa 6.3 (Ràng buộc thời gian giữa các thành phần tương tranh) ... quan trọng trong các hệ thống phần mềm đặc biệt với các hệ thống thời gian thực, hệ thống nhúng Chương này chúng tôi đề xuất một phương pháp kiểm chứng sự tuân thủ về ràng buộc thời gian giữa các thành phần phần tương tranh so với đặc tả sử dụng lập trình hướng khía cạnh 6.2 6.2.1 Phương pháp đặc tả và kiểm chứng ràng buộc thời gian Mô tả phương pháp Chúng tôi đề xuất phương pháp kiểm chứng sự tuân thủ... đặc tả giao thức tương tác 5.1 Giới thiệu Trong chương này, chúng tôi đề xuất một cách tiếp cận kiểm chứng động sự tương tác giữa các thành phần trong chương trình tương tranh sử dụng lập trình hướng khía cạnh Các vi phạm được phát hiện trong bước kiểm thử, tại thời điểm thực thi chương trình 5.2 5.2.1 Phương pháp đặc tả và kiểm chứng sự tuân thủ giữa thực thi và đặc tả giao thức tương tác Mô tả phương... của các thành phần Mi , i = 1, , n Phụ thuộc vào sự tương tác giữa các thành phần chỉ chứa các sự kiện tuần tự hoặc song song chúng tôi xây dựng các thành phần cho máy kết hợp trong Mục 4.3.2 và Mục 4.3.3 4.3.2 Giao thức tuần tự Giả sử thứ tự thực hiện của các sự kiện là Γ = [ec1, ec2, ec3, , ecn ] và đề xuất các nguyên lý để xây dựng máy kết hợp M trong Event-B như sau : 1 V = ∪vi : danh sách các. .. hoàn thiện các phương pháp đặc tả và kiểm chứng phần mềm từ pha thiết kế đến cài đặt 7.2 Hướng phát triển Tiếp tục phát triển và đề xuất các phương pháp kiểm chứng với Event-B Cài đặt công cụ hỗ trợ đặc tả song song và plugin vào bộ công cụ kiểm chứng mã nguồn mở RODIN, tự động sinh mã Java từ đặc tả bằng EventB Hoàn thiện môi trường kiểm chứng dựa trên lập trình hướng khía cạnh để kiểm chứng sự tuân... hữu hạn các trạng thái, C là tập các thành phần, M là tập các phương thức δ ⊆ S ×C M [a, b] → S là hàm chuyển trạng thái với a, b ∈ N và a ≤ b là ràng buộc thời gian S0, F ∈ S lần lượt là các trạng thái đầu và kết thúc Chương 6 Ràng buộc thời gian giữa các thành phần trong chương trình tương tranh 6.2.3 23 Sinh mã aspect Chúng tôi định nghĩa một mẫu để biểu diễn các aspect được sinh ra từ các đặc... phương pháp kiểm chứng sự tuân thủ giữa thực thi và đặc tả giao thức tương tác trong các chương trình tương tranh như sau (Hình 5.1) 1 Sử dụng biểu thức chính quy mở rộng (RE) hoặc máy trạng thái giao thức (PSM) để đặc tả giao thức tương tác (IPC), 2 Người lập trình cài đặt các ứng dụng dựa trên các đặc tả IPC, 3 Các mã aspect sinh ra được tự động đan với mã của các chương trình để kiểm chứng động sự... kiểm chứng sự tuân thủ của hệ thống đa thành phần so với đặc tả của nó Hình 4.2 – Phương pháp kiểm chứng sự đồng thuận tại mức mã nguồn Chương 4 Sự đồng thuận của hệ thống đa thành phần 4.4.2 17 Sinh mã kiểm chứng trong JPF Chúng tôi xây dựng thuật toán để sinh mã kiểm tra cho lớp khuôn mẫu VMListener trong JPF như sau Thuật toán 4.2 Sinh mã cho lớp VMListener trong JPF Require: Đặc tả hệ thống đa thành