Một hệ thống chỉ dẫn (CNS - Car Navigation System) [18] hỗ trợ lái xe ôtô điều khiển xe đi qua một khu vực. Để tương tác với lái xe, nó bao gồm một màn hình để hiển thị bản đồ của khu vực xung quanh vị trí xe, một bàn phím để nhập lệnh (ví dụ “hiển thị <bản đồ>”, “zoom to/nhỏ” và “tìm hành trình tới <điểm đến>”).
Hình 1: Sơ đồ thành phần cho hệ thống CNS.
Một thiết kế dựa trên thành phần cho CNS được thể hiện trong Hình 1, bao gồm
các thành phần chủ yếu sau đây mà trong đó mối quan hệ Dep giữa các thành phần
được thể hiện bằng mũi tên trong hình.
1. Thành phần GPS: Thành phần này có một phương thức get_pos(out: src)
với đặc tả
{ }src , _truef src′ =current position, 0< ≤ 1 .
Mã cài đặt của phương thức này không xác định ở đây, nhưng giả sử
rằng mã không chứa bất kỳ lời gọi nào đến các phương thức từ các thành
phần khác. Thành phần khác gọi đến thành phần này là thành phần
Controller (các tài nguyên không xác định ở đây và các tài nguyên cho tiền điều kiện của get_pos(out : src) là true).
2. Thành phần RouteDB: Khai báo nguồn lực của thành phần này bao gồm
bộ nhớ biến tài nguyên (bắt đầu là 4 (Mb)) và bộ xử lý 75MHz (bắt đầu
là 1). Thành phần này có 2 phương thức
get_map(in : src, in : dstn, out : map), và find_route(in : src, in : dstn, out : route).
Các đặc tả của các phương thức này được đưa ra tương ứng là
{src dstn map, , , } true f map′ =map_ for the area_ _ , 0< ≤ 1 , và
{src dstn route true, , }, f route′ = route to the destination_ _ _ ,75MHzprocessor= ∧1 memory= 4n0< ≤ 11
Thành phần sử dụng thành phần này là thành phần Controller. Mã cài
đặt cho find_route(in : src, in : dstn, out : route) là
get_ map(src, dstn, map); compute(src, dstn, map, route).
Giả định compute(src, dstn, map, route) cần 10 giây để thực hiện với bộ
nhớ 4Mb và tốc độ vi xử lý 75MHz, mã nguồn trên là sự làm mục của
đặc tả find_route(in : src, in : dstn, out : route).
3. Thành phần chủ động Controller: Thành phần này có một sự kiện
find_route_command_arrival và một phương thức find_route_handler.
Khai báo nguồn lực của thành phần này với bộ xử lý 75MHz được gán
giá trị là 1. Cài đặt mã cho phương pháp này là
dstn := read_dstn;
(Schedule(Controller,GPS)||GPS.get_pos(src));
(Schedule(Controller,RouteDB)||RouteDB.find_route(src, dstn, route)); display_ route(dstn).
Đặc tả thời gian của phương thức này là 0< ≤ 14. Giả định dstn := read_dstn và display_route(dstn) tiêu thụ thời gian nhỏ hơn 1 với bộ vi
xử lý 75MHz. Chúng ta giả định lệnh Schedule(Controller, RouteDB) và
Schedule(Controller, RouteDB) tiêu tốn thời gian không đáng kể, do đó
d
=
(chúng ta không thể giả định =0vì giả thiết trước đó) là tiền điều kiện cho đặc tả thời gian (tiền điều kiện đưa ra sau đó như là bất biến cho tất cả ba thành phần), trong đó dlà lượng thời gian nhỏ nhất để thực
hiện lệnh. Nó được suy trực tiếp từ các quy tắc thành phần tuần tự và
song song và mã của phương thức là sự làm mịn của đặc tả.
Một nhiệm vụ của thành phần là
alwaysfind_route_handler
afterfindroute_command_arrival.
Vì vậy, trong mô hình của các hệ thống dựa trên thành phần chúng ta có thể sử dụng lý thuyết UTP (Unifying Theory of Programming) và bổ sung thêm các quy tắc
cho đặc tả thời gian thực của thiết kế để xác minh nếu một phương thức được thực
thời gian và thời gian thực, chúng tôi phải đưa ra mô hình hóa cho nhiệm vụ (threads) và đặc tả cho thuộc tính thời gian thực.