Rapide
- Được phát triển bởi David Luckham, Stanford
- Mục đích chung ADL được thiết kế với trọng tâm là mô phỏng tạo ra các tập sự kiện có thứ tự một phần (poset)
- Khá phức tạp, bao gồm các kiểu dữ liệu và hoạt động
- Các công cụ phân tích Rapide tập trung vào các poset
- đối sánh kết quả mô phỏng với các mẫu hành vi được phép / bị cấm
- một số hỗ trợ cho phân tích thời gian
- tập trung vào quan hệ nhân quả
- Rapide có một số khả năng tạo vì các thông số kỹ thuật của Rapide có thể thực thi được
- Rapide có một bộ công cụ khá phong phú
Mô hình Rapide
- Ngôn ngữ mô phỏng đồng thời, hướng đối tượng, dựa trên sự kiện
- Định nghĩa và mô phỏng hành vi của kiến trúc hệ thống đối tượng phân tán
- Tạo mô phỏng được đại diện bởi một tập hợp các sự kiện (poset)
- Các sự kiện được sắp xếp theo thời gian và quan hệ nhân quả
- Yêu cầu hệ thống được thể hiện dưới dạng ràng buộc về thời gian và các mẫu sự kiện diễn ra đồng thời
- Các Posets cho phép trực quan hóa và phân tích một quá trình thực thi
Các phần tử kiến trúc Rapide
Phần tử kiến trúc Rapide, 2
- Thành phần
- Đối tượng giao diện
- Kiến trúc hiện thực một giao diện
- Mô-đun hiện thực một giao diện
- Kết nối
- Kết nối “giao diện gửi” với “giao diện nhận”
- Các thành phần giao tiếp thông qua các kết nối bằng cách gọi các hành động hoặc chức năng trong giao diện riêng của chúng
- Các sự kiện do các thành phần tạo ra sẽ kích hoạt các kết nối mẫu sự kiện giữa các giao diện của chúng
- Ba loại kết nối:
- Kết nối cơ bản
- Kết nối đường ống
- Kết nối đa luồng
Phần tử kiến trúc (tiếp theo)
Một đặc tả đơn giản trong Rapide
type Producer (Max : Positive) is interface
action out Send (N: Integer);
action in Reply(N : Integer);
behavior
Start => send(0);
(?X in Integer) Reply(?X) where ?X<Max => Send(?X+1);
end Producer;
type Consumer is interface
action in Receive(N: Integer);
action out Ack(N : Integer);
behavior
(?X in Integer) Receive(?X) => Ack(?X);
end Consumer
architecture ProdCon() return SomeType is Prod : Producer(100); Cons : Consumer;
connect
(?n in Integer) Prod.Send(?n) => Cons.Receive(?n);
Cons.Ack(?n) => Prod.Reply(?n);
end architecture ProdCon;