Ví dụ minh họa

Một phần của tài liệu Mô hình hóa giao diện của các thành phần trong các hệ thống dựa trên thành phần (Trang 30)

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, , , } truef map′ =map_ for the area_ _ , 0< ≤ 1 , và

{src dstn route true, , }, f route′ = route to the destination_ _ _ ,75MHzprocessor= ∧1 memory= 4n0< ≤ 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)

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)); (adsbygoogle = window.adsbygoogle || []).push({});

(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_dstndisplay_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)

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.

Một phần của tài liệu Mô hình hóa giao diện của các thành phần trong các hệ thống dựa trên thành phần (Trang 30)