Thiết kế mô-đun Simulink/Scicos2mac

Một phần của tài liệu Nghiên cứu kỹ thuật phân tích khả năng kiểm thử phần mềm và mở rộng tính năng của công cụ SATAN, thử nghiệm ứng dụng trong môi trường Scicos và Simulink (Trang 90)

4.2.1.Thiết kế tổng thể

Hình 4.2. Thuật toán Simulink/Scicos2mac

Algorithm Simulink/Scicos2mac

Input: Mô hình Simulink/Scicos

Ouput: ðịnh dạng MacDot

Begin

Khởi ñộng và xác ñịnh các thành phần của mô hình. Chuyển các khối sang ñịnh dạng MacDot.

Xác ñịnh các liên kết giữa các khối.

Chuyển các liên kết sang ñịnh dạng MacDot.

Xác ñịnh các hệ thống con trong mô hình.

Áp dụng thuật toán Simulink/Scicos2mac cho các mô hình con.

80

Mô-đun Simulink/Scicos2mac được thiết kế tổng thể như thuật toán trình bày trong Hình 4.2.

Mỗi mô hình SIMULINK/SCICOS có cấu trúc tương tự nhau, gồm các khối được liên kết với nhau. Một hệ thống SIMULINK/SCICOS có thể được thiết kế một cách có thứ bậc, nghĩa là có thể chứa các hệ thống con. Mỗi môi trường SIMULINK/SCICOS có định dạng lưu trữ các mô hình thiết kế riêng. Tuy nhiên, chúng đều cung cấp các API (application programming interface) cho phép xác định các khối, liên kết hay hệ thống con.

4.2.2.Thiết kế chi tiết

Để chuyển mô hình SIMULINK/SCICOS sang định dạng MacDot trước hết, chúng ta sẽ xem xét một sốđiểm tương quan giữa chúng.

Mối tương quan giữa môi trường SIMULINK/SCICOS và SATAN

Mô hình SCICOS được xây dựng dưới dạng là một mạng lưới các khối được liên kết với nhau. Một khối (toán tử) SIMULINK/SCICOS tương ứng với một kiểu SATAN. Chúng ta xem các đầu vào và đầu ra của khối SIMULINK/SCICOS như các đầu vào và đầu ra của kiểu SATAN. Lời gọi hàm trong khối SIMULINK/SCICOS tương ứng với việc sử dụng một kiểu con trong kiểu SATAN. Bảng 4.1 mô tả sự tương quan giữa SIMULINK/SCICOS và SATAN.

Bảng 4.1. Sự tương quan giữa SIMULINK/SCICOS và SATAN

SIMULINK/SCICOS SATAN

Khối SIMULINK/SCICOS Kiểu SATAN Tham số đầu vào và đầu ra của

81

Lời gọi hàm trong khối Sử dụng thành phần con trong khối

Tuy nhiên, có một số khác biệt giữa SIMULINK/SCICOS và SATAN: − Trong SIMULINK/SCICOS phân biệt chữ hoa và chữ thường,

trong khi SATAN lại không phân biệt.

− Số lượng tham số đầu vào của một khối SIMULINK/SCICOS có thể tùy biến, tuy nhiên trong công cụ SATAN thì ngược lại, số lượng đầu vào và đầu ra của một khối phải cốđịnh trước.

Tạo đầu vào cho SATAN từ mô hình SIMULINK/SCICOS

Để tạo các đầu vào cho công cụ SATAN, trước hết chúng ta phân tích mô hình SIMULINK/SCICOS để tìm ra các dữ liệu cần thiết như:

− Các khối được sử dụng,

− Kiểu, hằng số và biến toàn cục.

Sau đó, chúng ta xây dựng thành phần mạng và định nghĩa kiểu SATAN cho mỗi mô-đun. (adsbygoogle = window.adsbygoogle || []).push({});

Đổi tên trong công cụ SATAN

Tên của các thành phần SIMULINK/SCICOS phân biệt chữ in hoa và chữ in thường, trong khi tên của các thành phần trong SATAN được đặt hoàn toàn bằng chữ in hoa. Vì vậy, chúng tôi đưa ra một số quy tắc đặt tên như sau: − Tên của các thành phần, chân, kiểu, khối, hằng số được viết bằng

chữ in hoa.

− Tên của hằng số bắt đầu bởi “CST_”.

82

− Tên của tham sốđầu vào và đầu ra bắt đầu bởi “BY”. − Tên của biến cục bộ bắt đầu bởi “LOC_”.

Tuy nhiên, vẫn có thể xuất hiện trường hợp hai đối tượng SIMULINK/SCICOS sẽ có cùng tên khi mô tả trong SATAN. Chẳng hạn, ba biến cục bộ trong SIMULINK/SCICOS có tên lần lượt là NumOcc, NUMOcc và NumOCC sẽ có cùng tên khi mô tả trong SATAN. Để giải quyết vấn đề này, khi tạo ra một tên trong SATAN tương ứng với một tên trong SIMULINK/SCICOS, chúng ta kiểm tra xem tên này đã tồn tại trong mô tả MacDot chưa. Nếu đã tồn tại, chúng ta thêm vào hậu tố_n” (n được tính từ 1).

Khối SIMULINK/SCICOS tương ứng trong SATAN

Một khối trong SIMULINK/SCICOS tương ứng với một khối cùng tên trong SATAN. Thành phần mạng của mô-đun n được mô tả trong tệp tin

n.cssf. Kiểu SATAN của mô đun n được mô tả trong tệp tin n.sat. ITG của mô-đun nđược lưu trữ trong tệp tin n.pro.

Tham số đầu vào, đầu ra của khối SIMULINK/SCICOS tương ứng trong SATAN

Các tham sốđầu vào và đầu ra của khối SIMULINK/SCICOS tương ứng với các tham sốđầu vào và đầu ra của khối SATAN. Chẳng hạn:

Trong SIMULINK:

function [result] = myfun(x, y)

Trong SCICOS:

function result = myfun(x, y)

endfunction

Trong SATAN:

83

INPUTS: PAR_X, PAR_Y;

OUTPUTS: PAR_RESULT;

Đặt tên cho khối trong SATAN

Để đặt tên một khối trong SATAN, chúng ta lấy tên của khối tương ứng trong SIMULINK/SCICOS, sau đó viết dưới dạng in hoa và thêm vào hậu tố “_n”. Chẳng hạn:

Trong SIMULINK:

function result[out] = Max(x , y)

if x > y then out = x; else out = y; end end Trong SCICOS:

function result[out] = Max(x , y)

if x > y then out = x; else out = y; end endfunction Trong SATAN:

Khối trên sử dụng ba phép toán “=”, “>”, “if then else”. Các kiểu SATAN tương ứng là COMP_EGAL, COMP_SUP, SWITCH. Định nghĩa kiểu:

TYPES: COMP_EGAL, COMP_SUP, SWITCH; (adsbygoogle = window.adsbygoogle || []).push({});

Khai báo sử dụng:

COMP_EGAL: COMP_EGAL _1; COMP_GREAT: COMP_SUP_1; SWITCH _I: SWITCH_1;

Chúng tôi trình bày chi tiết một số mô-đun con trong thuật toán tổng thể trong Hình 4.2, như khởi động và xác định các thành phần của mô hình,

84

chuyển mô hình sang định dạng MacDot, chuyển các khối/liên kết sang định dạng MacDot.

Khởi động và xác định các thành phần của mô hình (cos_mdl_2_dot)

Hình 4.3. Thuật toán cos_mdl_2_dot

Chuyển mô hình sang định dạng MacDot (system2dot)

Hình 4.4. Thuật toán system2dot

Algorithm system2dot

Input: Các thành phần của mô hình Simulink/Scicos

Ouput: ðịnh dạng MacDot

Begin

Gọi hàm blocks_to_dot_nodes ñể chuyển các khối

sang ñịnh dạng MACDOT.

Gọi hàm lines_to_dot_edges ñể chuyển các liên kết sang ñịnh dạng MACDOT.

Duyệt qua các hệ thống con và gọi system2dot ñối với mỗi hệ thống con ñể chuyển chúng sang ñịnh dang MACDOT.

End

Algorithm cos_mdl_2_dot

Input: Mô hình Simulink/Scicos

Ouput: ðịnh dạng MacDot

Begin

Tạo thư mục lưu trữ các tệp tin .dot. Các tệp tin

này ñược tạo ra từ các mô hình SIMULINK/SCICOS.

Tạo tệp tin toplevel lưu trữ tên của mô hình gốc. Gọi hàm system2dot ñể chuyển ñổi các khối, liên kết và hệ thống con của mô hình sang ñịnh dạng MACDOT.

85

Chuyển các khối sang định dạng MacDot (blocks_to_dot_nodes)

Hình 4.5. Thuật toán blocks_to_dot_nodes

Chuyển các liên kết sang định dạng MacDot

(lines_to_dot_egdes) (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4.6. Thuật toán lines_to_dot_egdes

Algorithm blocks_to_dot_nodes

Input: Các khối của mô hình Simulink/Scicos

Ouput: Các ñỉnh trong ñịnh dạng MacDot

Begin

Duyệt các khối có kiểu là Inport, EnablePort,

OutPort lấy các tham số và chuyển vào danh sách

blocks_list.

Duyệt các khối trong blocks_list, ñối với mỗi khối thực hiện:

- Dùng hàm get_param ñể lấy tên của khối, tên của hệ thống cha chứa khối, các cổng vào và cổng ra, các khối tham chiếu, các kiểu của khối.

- Ghi các thông tin trên vào tệp tin .dot.

End

Algorithm lines_to_dot_egdes

Input: Các liên kết của mô hình Simulink/Scicos

Ouput: Các cung trong ñịnh dạng MacDot

Begin

Duyệt mỗi liên kết và lấy các tham số

SrcPortHandle, SrcBlockHandle, DstPortHandle, DstBlockHandle.

Chuyển liên kết sang ñịnh dạng MacDot.

86

4.2.3.Cài đặt

Đối với mô-đun Simulink2mac, chúng tôi sử dụng ngôn ngữ MatLab để cài đặt và sử dụng một số API cung cấp bởi Simulink như trong Bảng 4.2.

Bảng 4.2. Các API được sử dụng

API Chức năng

mkdir Tạo thư mục

fopen Mở một tệp tin để đọc hoặc ghi tùy vào tham số gọi hàm: w là ghi, r là đọc

libinfo Lấy thông tin trong thư viện

fclose Đóng một tệp tin đang mở

eval Thực thi một biểu thức matlab

close_system Đóng một hệ thống đang mở (adsbygoogle = window.adsbygoogle || []).push({});

open_system Mở một hệ thống

save_system Lưu hệ thống

delete Xóa tệp tin

error Hiển thị thông báo lỗi

strcmp So sánh hai chuỗi

strrep Thay thế một chuỗi con bằng một chuỗi khác

get_param Lấy tên của khối, tên của hệ thống cha chứa khối, các cổng vào và cổng ra, các khối tham chiếu, kiểu của khối

find_system Lấy tất cả các toán tử, các cạnh và hệ thống con của mô hình

Đối với mô-đun Scicos2mac, chúng tôi sử dụng ngôn ngữ lập trình Scilab để cài đặt.

4.3. Xây dng thư vin In-Mac cho SIMULINK/SCICOS

Để công cụ SATAN có thể hiểu được các khối được sử dụng trong một mô hình SIMULINK/SCICOS thì chúng phải được định nghĩa các kiểu SATAN tương ứng trong thư viện In-Mac. Thư viện In-Mac sẽ được công cụ SATAN tham chiếu đến để xây dựng ITG cho một mô hình SIMULINK/SCICOS khi tiến hành phân tích tính khả kiểm thử.

87

4.3.1.Xây dựng kiểu SATAN

Như đã mô tả trong chương 2, một mô tả kiểu SATAN chứa các thông tin sau:

− Tên của kiểu SATAN ứng với tên của toán tử, − Các đầu vào của toán tử,

− Các đầu ra của toán tử,

− Mô hình mô tả sự truyền tin trong toán tử.

Để minh họa, chúng tôi lấy ví dụ việc xây dựng kiểu SATAN cho một hàm điều khiển thang máy trong SIMULINK/SCICOS như sau:

Trong SIMULINK:

function [top, up, down] = elevator (floor, request_floor,

alarm,Init) end

Trong SCICOS:

function [top, up, down] = elevator (floor, request_floor,

alarm,Init) endfunction

Tên kiểu SATAN

Tên kiểu SATAN cùng tên với tên của mô-đun trong SIMULINK/SCICOS. Trong ví dụ điều khiển thang máy trên, tên kiểu SATAN tương ứng là: type ELEVATOR;

Danh sách đầu vào

Đầu vào của kiểu SATAN được tạo từ danh sách các đầu vào, các biến toàn cục và các hằng số được sử dụng trong mô-đun. Các đầu vào được đánh số bắt đầu từ 1. Danh sách các đầu vào của kiểu SATAN trong ví dụ trên được định nghĩa như sau:

88 PAR_FLOOR : 1 ; PAR_REQUEST_FLOOR : 2; PAR_ALARM : 3; PAR_INIT : 4; fin_entrees Danh sách đầu ra

Đầu ra của kiểu SATAN được tạo từ danh sách tham số đầu ra của mô- đun và các biến toàn cục xuất hiện bên phần trái của các phương trình trong mô-đun đó. Các đầu ra của kiểu SATAN có tên giống với tên của các đầu ra và các biến toàn cục. Danh sách các đầu ra của kiểu SATAN trong ví dụ trên được định nghĩa như sau: debut_sorties PAR_STOP : 10; PAR_UP : 11 ; PAR_DOWN : 12 ; fin_sorties (adsbygoogle = window.adsbygoogle || []).push({});

Mô hình truyền tin

Chúng ta xem một kiểu SATAN như một hộp đen. Mô hình truyền tin của ví dụ trên được mô tả như sau:

debut_modele

T’1 / PAR_FLOOR, PAR_REQUEST_FLOOR, PAR_ALARM / _elevator / T’2’1 / _elevator / PAR_STOP /

T’2’2 / _elevator / PAR_UP / T’2’3 / _elevator / PAR_DOWN / fin_modele

Đối với hai môi trường SIMULINK và SCICOS, chúng tôi xây dựng các kiểu SATAN cho các toán tử như trong Bảng 4.3.

Bảng 4.3. Danh sách các kiểu SATAN được xây dựng

Loại toán tử Toán tử SIMULINK Toán tử SCICOS Kiểu SATAN

89 Relational Operator ~= ~= COMP_NON_EGA L > > COMP_SUP >= >= COMP_SUP_EGA L < < COMP_INF <= <= COMP_INF_EGA L Logical operator Or Or OR_2

Xor Xor XOR_2

And And AND_2

Not Not NOT

Nand Nand NAND

Trigonometric operator/Sin,

Cos, Tan

Sin Sin SIN

Cos Cos COS

Tan Tan TAN

Cosh COSH Tanh TANH Sinh SINH Asin ASIN Acos ACOS Atan ATAN

Switch operator Switch Switch SWITCH

ABS operator Abs Abs ABS

SUM operator/ SUMATION

Sum_2 Sum_2 SUM_2

90

operator Sum_4 Sum_4 SUM_4

Sum_5 Sum_5 SUM_5

Sum_6 Sum_6 SUM_6

Product operator/ MATMUL

Product_2 Product_2 PRODUCT_2

Product_3 PRODUCT_3 (adsbygoogle = window.adsbygoogle || []).push({});

Chẳng hạn, toán tửand có ITG tương ứng như trong Hình 4.7.

Kiểu SATAN của toán tửand được mô tả như sau:

type AND_2; debut debut_entrees IN1 = 1; IN2 = 2; fin_entrees debut_sorties OUT1 = 10; fin_sorties debut_modele

T'1 / IN1, IN2 / AND_2 / T'2 / AND_2 / OUT1 / IN1 IN2 AND_2 OUT1 T’2 T’1

91

fin_modele fin

4.3.2.Tính toán hệ số mất mát thông tin

Trong thư viện In-Mac, chúng ta cần phải tính toán hệ số mất mát thông tin cho mỗi toán tử tương ứng với kiểu SATAN. Việc tính toán hệ số mất mát thông tin được thực hiện bởi nhóm CTSYS của phòng thí nghiệm LCIS. Phương pháp ước lượng bằng thống kê (được giới thiệu trong chương 2) được sử dụng để tính toán hệ số mất mát thông tin. Ba công việc chính để ước lượng bằng thống kê hệ số mất mát thông tin của mỗi toán tử gồm:

− Xác định miền dữ liệu vào; − Thực thi toán tử;

− Tính hệ số mất mát thông tin gần đúng.

Thư viện In-Mac chứa các kiểu SATAN trong Bảng 4.2 và hệ số mất mát thông tin được chi tiết trong Phụ lục III.

4.4. Xây dng mô-đun Out-Mac

Trong kiến trúc công cụ SATAN, mô-đun Out-Mac nhằm mục đích để tổng hợp và hiển thị các kết quả phân tích tính khả kiểm thử. Tuy nhiên, hiện tại, mô-đun Out-Mac chỉ đơn giản thực hiện lưu trữ các kết quả phân tích trong các tệp dữ liệu khác nhau. Người sử dụng phải tự trích lọc các thông tin cần thiết trong các tệp dữ liệu đó. Tuy nhiên, công việc này thường gặp nhiều khó khăn, đặc biệt là đối với các ứng dụng phức tạp. Chính vì vậy, trong đề tài này, chúng tôi kết hợp với nhóm nghiên cứu CTSYS của phòng thí nghiệm LCIS đề xuất giải pháp xây dựng mô-đun Out-Mac nhằm mục đích tổng hợp và trích lọc các thông tin về tính khả kiểm thử một cách tự động, trực quan và có ý nghĩa đối với người sử dụng.

92

Hiện tại, công cụ SATAN xuất các kết quả phân tích tính khả kiểm thử trong nhiều tệp văn bản được trình bày trong Bảng 4.4.

Bảng 4.4. Các tệp tin chứa kết quả phân tích tính khả kiểm thử

Tệp tin Nội dung

_pro.plc Chứa tên và mã số của các thành phần ITG.

_pro.dot Mô tả hệ thống dưới dạng đồ họa theo cấu trúc Graphviz.

.pro Mô tả ITG của hệ thống gồm thông tin đầu vào, đầu ra, các chuyển tiếp, đầu vào và đầu ra của các chuyển tiếp.

_pro.stat Chứa các kết quả phân tích tính khả kiểm thử.

_pro.uab Chứa giá trị khả năng điều khiển và khả năng quan sát thấp nhất trên từng luồng của một ITG trong hệ thống.

_pro.stm Đối với chiến lược Start-Small.

Chứa thông tin các lớp, các luồng của mỗi lớp, các nhóm mô-đun “không thể tách biệt” (indiscernables modules), nghĩa là nhóm mô đun này phải nằm cùng một luồng, không thể tách rời sang các luồng khác.

_pro.mcl Đối với chiến lược Multi-Clue. Chứa thứ tự các luồng được chọn.

_pro.res Chứa thông tin về các luồng và thành phần của mỗi luồng. Trong công cụ SATAN, như đã trình bày trong chương 2, các chiến lược kiểm thử được áp dụng để xác định số tối thiểu các luồng được kích hoạt nhằm bao phủ toàn hệ thống. Hai chiến lược cơ bản thường được sử dụng gồm: Start-Small và Multi-Clue. Vì vậy, các kết quả phân tích tính khả kiểm thử cũng nên được tổng hợp và hiển thị theo các chiến lược kiểm thử. Mô hình tổng thể của mô-đun Out-Mac được biểu diễn trong Hình 4.8.

93

Hình 4.8. Mô hình mô-đun Out-Mac

Như vậy, mô-đun Out-Mac gồm hai mô-đun con: xử lý kết quả tính khả kiểm thử theo chiến lược Start-Small và Muti-Clue.

4.4.1.Xử lý kết quả tính khả kiểm thử theo chiến lược Start-Small (adsbygoogle = window.adsbygoogle || []).push({});

Chiến lược Start-Small sắp xếp các luồng cần được kích hoạt theo các lớp. Lớp đầu tiên chứa các luồng gồm ít mô-đun nhất, lớp tiếp theo gồm các luồng sao cho phủđược số tối thiểu các mô-đun chưa được kích hoạt. Chúng ta tiếp tục như vậy cho đến khi tất cả các mô-đun được kích hoạt.

Như thế, đối với chiến lược Start-Small, cần hiển thị danh sách các lớp của hệ thống, các luồng trong mỗi lớp, các thành phần của từng luồng và giá trị của khả năng quan sát và khả năng điều khiển thấp nhất trong mỗi luồng.

Các tệp tin văn bản chứa kết quả tính khả kiểm thử

Xử lý kết quả tính khả kiểm thử theo chiến lược Start-Small

Kết quả tính khả kiểm thử theo chiến lược Start-Small Kết quả tính khả kiểm thử theo chiến lược Multi-Clue Kiểm thử viên / Thiết kế Xử lý kết quả tính khả kiểm thử theo chiến lược Multi-Clue

94

Thuật toán xử lý kết quả tính khả kiểm thử theo chiến lược Start-Small được

Một phần của tài liệu Nghiên cứu kỹ thuật phân tích khả năng kiểm thử phần mềm và mở rộng tính năng của công cụ SATAN, thử nghiệm ứng dụng trong môi trường Scicos và Simulink (Trang 90)