Categories
Software Architecture

Ngôn Ngữ Mô Tả Kiến Trúc 6: Rapide

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

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)

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;

Leave a Reply

Your email address will not be published. Required fields are marked *