1 Giới thiệu
Để trở thành thực tế để gỡ lỗi, bảo đảm, và chứng nhận, phương pháp chính thức phải được thực hiện có hiệu quả về chi phí hơn. Cải tiến gia tăng để xác minh các kỹ thuật cá nhân sẽ không đủ. Đó là tiền đề cơ bản của chúng tôi là một bước tiến đáng kể trong hiệu quả và tự động xác minh của hệ thống đồng thời là có thể do kỹ thuật một tách hệ thống các mối quan tâm thông qua một sự kết hợp thực sự tích hợp của phân tích tĩnh, mô hình kiểm tra, và định lý chứng minh kỹ thuật. Một ý tưởng quan trọng là thay đổi nhận thức (và thực hiện) của cờ mô hình và provers lý từ các công cụ thực hiện xác minh cho những người mà tính toán tính như lát, abstractionsand bất biến. Bằng cách này, những vấn đề lớn được cắt giảm để kích thước có thể quản lý, và các đặc tính của hệ thống lớn nổi lên từ những reducedsubsystems obtainedby slicing, trừu tượng, và thành phần. Bằng cách duyệt qua một vài bước như vậy, nó trở thành có thể để từng bước tích lũy tài sản mà cuối cùng cho phép tính toán của một đáng kể mới tài sản đó cho phép tích lũy tài sản hơn nữa. Bằng cách tương tác ở cấp độ của tài sản và trừu tượng, nhiều công cụ phân tích có thể được sử dụng để lấy tài sản đó là vượt quá khả năng của bất kỳ công cụ riêng lẻ.
SAL (Symbolic Phân tích thí nghiệm) giải quyết những vấn đề này. Đó là một khuôn khổ cho việc kết hợp các công cụ khác nhau cho tính trừu tượng, phân tích chương trình, định lý minh, mô hình và kiểm tra đối với các tính chất (phân tích biểu tượng) của hệ thống đồng thời thể hiện như hệ thống chuyển tiếp. Trái tim của SAL là một ngôn ngữ trung gian, phát triển hợp tác với Stanford, Berkeley, và Verimag để xác định hệ thống đồng thời một cách sáng tác. Ngôn ngữ này sẽ phục vụ như là mục tiêu cho các dịch giả mà trích xuất các hệ thống mô tả quá trình chuyển đổi cho các ngôn ngữ lập trình phổ biến như Esterel, Java, hoặc Verilog. Các ngôn ngữ trung gian cũng phục vụ như là một mô tả chung mà từ đó các công cụ phân tích khác nhau có thể được điều khiển bằng cách dịch các ngôn ngữ trung gian để định dạng đầu vào cho các công cụ và dịch đầu ra của các công cụ này lại về ngôn ngữ trung gian SAL.
Bài viết này được cấu trúc như sau. Trong phần 2, chúng tôi mô tả các động lực và lý do đằng sau thiết kế của ngôn ngữ SAL và đưa ra một cái nhìn tổng quan về các tính năng chính của nó. Phần chính, mục 3, mô tả các thành phần SAL bao gồm cắt, hệ bất biến, trừu tượng, mô hình kiểm tra, mô phỏng, và định lý chứng minh cùng với hội nhập của họ vào các công cụ SAL. Mục 4 kết luận với một số nhận xét.
2 SAL Common Intermediate Language
Cơ giới phân tích chính thức bắt đầu từ một mô tả của vấn đề quan tâm thể hiện trong ký hiệu của các công cụ được sử dụng. Xây dựng các mô tả này thường đòi hỏi công việc đáng kể: đầu tiên để viết lại các đặc điểm kỹ thuật hệ thống từ ngữ bản địa của nó trong C, Esterel, Java, SCR, UML, Verilog, hoặc bất cứ điều gì, vào ký hiệu của các công cụ liên quan, sau đó để trích xuất các phần đó là có liên quan đến việc phân tích ở bàn tay, và cuối cùng để giảm bớt nó thành một dạng công cụ này có thể xử lý. Nếu một công cụ thứ hai là để được làm việc cho một phân tích khác nhau, sau đó là một mô tả thứ hai của vấn đề phải được chuẩn bị, với sự nỗ lực duplicationof đáng kể. Với ngôn ngữ nguồn và các công cụ, chúng ta cần dịch. Tình trạng này một cách tự nhiên cho thấy việc sử dụng một ngôn ngữ trung gian phổ biến, nơi con số của các công cụ cần thiết có thể được giảm đến phiên dịch.
Các ngôn ngữ trung gian phải phục vụ như một phương tiện để biểu diễn ngữ nghĩa chuyển đổi trạng thái của một hệ thống được mô tả trong một ngôn ngữ nguồn như Java hay Esterel . Nó cũng phải phục vụ như là một biểu tượng chung cho lái xe một số công cụ back-end như provers lý, người kiểm tra mô hình. Một ngôn ngữ trung gian hữu ích để mô tả hệ thống đồng thời phải cố gắng giữ gìn cả các cấu trúc và ý nghĩa của các đặc điểm kỹ thuật ban đầu khi hỗ trợ một phân tích mô-đun của hệ thống chuyển đổi.
Đối với những lý do này, các ngôn ngữ trung gian SAL là một ngôn ngữ khá phong phú. Trong phần tiếp theo, chúng tôi cung cấp một cái nhìn tổng quan về các tính năng chính của ngôn ngữ loại SAL, ngôn ngữ biểu hiện, ngôn ngữ mô-đun, và ngôn ngữ ngữ cảnh. Đối với một định nghĩa chính xác và ngữ nghĩa của ngôn ngữ SAL, kể cả so sánh với ngôn ngữ liên quan để diễn tả hệ thống đồng thời, xem [31].
Các loại hệ thống của SAL hỗ trợ các loại cơ bản như toán luận, vô hướng, số nguyên và subranges số nguyên, hồ sơ, mảng, và kiểu dữ liệu trừu tượng. Biểu thức được đánh mạnh. Các biểu thức bao gồm các hằng, biến, ứng dụng của Boolean, số học, và các hoạt động bit-vector (bit-vectơ chỉ là mảng Boolean), và mảng và ghi lại lựa chọn và cập nhật. mutex: BỐI CẢNH = BEGIN
PC: TYPE = cố gắng, quan trọng, ngủ
mutex [tval: boolean]: MODULE = BEGIN
VÀO PC2: PC, x2: boolean
OUTPUT pc1: PC, x1: boolean
INITIALIZATION
TRUE -> pc1 = ngủ; x1 = tval
CHUYỂN pc1 = ngủ
-> pc1 '= cố gắng; x1 '= (x2 = tval)
[] = pc1 cố gắng VÀ
(PC2 = ngủ OR x1 = (x2 / = tval))
-> pc1 '= critical
[] pc1 = critical
-> pc1 '= ngủ; x1 '= (x2 = tval) END
hệ thống: MODULE = HIDE x1, x2
(mutex [FALSE]
|| RENAME PC2 TO pc1, x2 TO x1, pc1 TO PC2, x1 x2 TO mutex [TRUE])
mutualExclusion: Hệ thống Định lý | -
AG (NOT (pc1 = critical
và PC2 = critical))
eventually1: hệ thống bổ đề | - EF (pc1 = critical)
eventually2: Bổ đề
hệ thống | - EF (PC2 = critical)
END
Hình 1. Loại trừ lẫn nhau
biểu thức có điều kiện cũng là một phần của ngôn ngữ biểu hiện và chức năng người dùng định nghĩa cũng có thể được giới thiệu.
Một module là một đặc điểm kỹ thuật khép kín của một hệ thống chuyển tiếp trong SAL. Thông thường, một số mô-đun được thu thập trong một bối cảnh. Bối cảnh cũng bao gồm các loại tờ khai và liên tục. Một module hệ thống chuyển tiếp bao gồm tên kiểu nhà nước, một điều kiện khởi tạo vào loại trạng thái này, và một mối quan hệ chuyển đổi nhị phân của một hình thức cụ thể về các loại hình nhà nước. Các loại nhà nước được quy định bởi bốn bộ tách rời cặp đầu vào, đầu ra, toàn cầu, và các biến địa phương. Các đầu vào và các biến toàn cầu là các biến quan sát của một mô-đun và các đầu ra, toàn cầu, và các biến địa phương là các biến kiểm soát của các mô-đun. Nó là dụng pháp tốt để đặt tên cho một module. Tên này có thể được sử dụng để chỉ các biến địa phương để họ không cần phải được đổi tên trong thành phần. Ngoài ra, các tính chất của các mô-đun có thể được lập chỉ mục trên các tên để tra cứu nhanh chóng.
Xem xét, ví dụ, các đặc điểm kỹ thuật SAL của một biến thể của thuật toán loại trừ lẫn nhau của Peterson trong Hình 1. Ở đây, nhà nước của các mô-đun bao gồm các biến kiểm soát tương ứng riêng pc1 nó đếm chương trình và boolean biến x1, và các biến quan sát là PC2 tương ứng và x2 của quá trình khác.
Quá trình biến đổi của một mô-đun có thể được chỉ định variablewise bằng phương tiện của các định nghĩa hoặc chuyển khôn ngoan bằng cách ra lệnh canh gác. Từ đó về sau, sơn lót biểu thị biến tiếp theo trạng thái biến X '. Một định nghĩa có dạng X = f (Y, Z). Cả khởi tạo và chuyển tiếp cũng có thể được quy định như bài tập bảo vệ. Mỗi lệnh bảo vệ bao gồm một công thức bảo vệ và một phần chuyển nhượng. Bảo vệ là một biểu thức boolean trong kiểm soát (địa phương, toàn cầu, và đầu ra) biến và hiện tại, nhà nước và các biến đầu vào tiếp theo nhà nước hiện hành. Các phần chuyển nhượng là một danh sách các bất đẳng giữa một biến tiếp theo nhà nước ở phía bên trái và một biểu hiện bên tay phải trong các biến cả hiện tại-nhà nước và tiếp theo nhà nước.
modules Parametric cho phép sử dụng hợp lý (stateindependent) và kiểu tham số trong định nghĩa của mô-đun. Module mutex trong hình 1, ví dụ, là tham số trong tval Boolean. Hơn nữa, mô-đun trong SAL có thể được kết hợp bởi hai thành phần đồng bộ ||, hoặc thành phần không đồng bộ []. Hai trường hợp của module mutex, ví dụ, là dính liền đồng bộ để tạo thành một module gọi là hệ thống trong Hình 1. Sự kết hợp này cũng sử dụng ẩn và đổi tên. Đầu ra và các biến toàn cầu có thể được thực hiện tại địa phương bởi các cấu trúc hide. Để tránh xung đột tên, các biến trong một modulecan được renamedusing các cấu trúc RENAME.
Bên cạnh đó tuyên bố mới các loại, các hằng số, hoặc mô-đun, SAL cũng bao gồm các cấu trúc để nêu đặc tính mô-đun và trừu tượng hóa giữa các module. Công thức CTL được sử dụng, ví dụ, trong hình 1 để an toàn và tài sản nhà nước liveness về hệ thống mô-đun kết hợp.
Các hình thức của các thành phần trong SAL hỗ trợ một phân tích thành phần trong ý nghĩa rằng bất kỳ thuộc tính mô-đun hiện trong thời gian tuyến tính logic của thời gian hoặc trong fragment phổ quát biểu cảm hơn của CTL * được bảo tồn thông qua thành phần. Một tuyên bố tương tự như giữ cho các thành phần không đồng bộ đối với nói lắp thuộc tính bất biến nơi một bước nói lắp là một nơi mà các biến địa phương và đầu ra của các mô-đun vẫn không thay đổi.
Bởi vì SAL là một định lý environmentwhere minh cũng như mô hình kiểm tra có sẵn, sự vắng mặt của các vòng nhân quả trong các hệ thống đồng bộ được đảm bảo bằng cách tạo ra các nghĩa vụ chứng minh, chứ không phải bằng các phương pháp cú pháp chặt chẽ hơn như trong các ngôn ngữ khác. Hãy xem xét các định nghĩa sau:
X = IF THEN ELSE A KHÔNG Y C ENDIF
Y = IF A THEN ELSE B X ENDIF
Điều này đôi nghĩa là chấp nhận được trong SAL bởi vì chúng ta có thể chứng minh rằng X là nhân quả phụ thuộc vào Y chỉ khi A là đúng, và ngược lại chỉ khi nó là giả do đó không có vòng lặp nhân quả. Nói chung, kiểm tra nguyên nhân tạo ra nghĩa vụ chứng minh khẳng định rằng các điều kiện có thể kích hoạt một vòng lặp nhân quả là không thể truy cập.
đang được dịch, vui lòng đợi..
