Trong chương này, chúng tôi đã trình bày việc phát triển các mô-đun kỹ thuật cho phép mở rộng công cụ SATAN phân tích tính khả kiểm thử cho các môi trường SIMULINK và SCICOS cũng như cải tiến mô-đun Out-Mac nhằm tổng hợp kết quả kết quả phân tích tính khả kiểm thử một cách có ý nghĩa hơn. Chúng tôi đã áp dụng phân tích tính khả kiểm thử cho một số thiết kế khác nhau trong môi trường SIMULINK và SCICOS được cung cấp bởi các đối tác.
111
CHƯƠNG 5. PHÂN TÍCH TÍNH KHẢ KIỂM THỬ
CÁC MÔ HÌNH MÁY TRẠNG THÁI HỮU HẠN
5.1. Giới thiệu
Hiện nay, các hệ thống phản ứng (reactive systems) được sử dụng rộng rãi trong các lĩnh vực công nghiệp, như hàng không, hạt nhân… Loại hệ thống này ngày càng trở nên phức tạp. Các hệ thống này thường được thiết kế gồm hai phần: phần tính toán và phần điều khiển. Phần tính toán biểu diễn các thuật toán, thường được biểu diễn bởi các sơ đồ toán tử, tức là các mô hình luồng dữ liệu. Trong khi phần điều khiển thường được biểu diễn bởi mô hình máy trạng thái hữu hạn. Để phát triển các hệ thống này, nhiều môi trường được đề xuất, như SCADE/SSM hay SIMULINK/STATEFLOW. Chẳng hạn, phần tính toán được thiết kế bởi SCADE hay SIMULINK, trong khi phần điều khiển được biểu diễn bởi SSM (Safe State Machine) hay STATEFLOW.
Trong tiến trình phát triển các hệ thống phản ứng, các hoạt động kiểm chứng và hợp thức hóa đóng vai trò rất quan trọng, bởi vì các hệ thống này thường yêu cầu chất lượng và độ tin cậy cao. Tuy nhiên, các hoạt động kiểm chứng và hợp thức hóa thường khó khăn và chi phí cao, như thế làm tăng chi phí phát triển. Kiểm thử phần mềm là một trong những hoạt động quan trọng với mục đích phát hiện lỗi. Ngoài ra, để giảm chi phí kiểm thử và nâng cao độ tin cậy của phần mềm, phân tích tính khả kiểm thử phần mềm nên được chú trọng.
112
Công cụ SATAN hiện tại chỉ được áp dụng để phân tích tính khả kiểm thử của các thiết kế luồng dữ liệu. Tuy nhiên, các hệ thống phản ứng thường được thiết kế bởi mô hình luồng dữ liệu và mô hình máy trạng thái hữu hạn, công cụ SATAN không thể phân tích tính khả kiểm thử của phần điều khiển, được biểu diễn bởi mô hình máy trạng thái hữu hạn. Ngoài ra, hiện nay chưa có các công trình nghiên cứu cho phép phân tích phân tích tính khả kiểm thử phần điều khiển của phần mềm phản ứng dựa trên mô hình máy trạng thái. Điều đó có nghĩa là chúng ta cần nghiên cứu một phương pháp mới hoặc đề xuất sự mở rộng công cụ SATAN để phân tích các mô hình máy trạng thái.
Trong chương này, mục thứ nhất trình bày ngữ cảnh của nghiên cứu; mục thứ hai trình bày các khái niệm liên quan máy trạng thái hữu hạn; trong mục thứ ba, chúng tôi thảo luận về kiểm thử dựa trên máy trạng thái hữu hạn; chúng tôi đề xuất phân tích tính khả kiểm thử dựa trên máy trạng thái hữu hạn trong mục thứ tư; và cuối cùng, chúng tôi áp dụng để phân tích tính khả kiểm thử cho ứng dụng B01_AUTOMATION cung cấp bởi công ty ASTRIUM, một đối tác công nghiệp trong dự án nghiên cứu này.
5.2. Ngữ cảnh
Trong mục này, chúng tôi trình bày ngắn gọn các tính chất của các hệ thống phản ứng và các nguyên tắc thiết kế các hệ thống này. Chúng tôi cũng trình bày một số môi trường phát triển các hệ thống phản ứng. Chúng tôi nhắc lại các tính năng cơ bản của công cụ SATAN và phân tích hạn chế của công cụ này.
5.2.1.Hệ thống phản ứng
Thuật ngữ hệ thống phản ứng (reactive system) thường được sử dụng để chỉ các hệ thống tương tác không ngừng với môi trường của nó và để phân
113
biệt với các hệ thống biến đổi (transformational system). Các hệ thống phản ứng cần phải tương tác liên tục với môi trường của chúng với một tần suất xác định bởi môi trường đó [46]. Hơn nữa, chúng ta phân biệt các hệ thống phản ứng và các hệ thống tương tác (interactive systems): tốc độ tương tác của hệ thống tương tác (chẳng hạn, hệ điều hành, trình chủ web…) phụ thuộc vào hệ thống, trong khi tốc độ tương tác của hệ thống phản ứng phụ thuộc vào môi trường. Các ví dụ điển hình của hệ thống phản ứng như điều khiển tiến trình trong công nghiệp, các hệ thống nhúng trên máy bay, tàu lửa…
Các tính chất cơ bản của hệ thống phản ứng gồm:
− Các hệ thống phản ứng là đơn định (deterministic): thực thi của hệ thống có thể xem như một dãy vô hạn các véc-tơ đầu vào/đầu ra, tại mỗi bước, kết quả đầu ra hoàn toàn được xác định bởi các đầu vào hiện tại và trước đó. Hệ thống luôn tạo ra cùng các đầu ra từ cùng các đầu vào và các trạng thái bên trong.
− Các hệ thống phản ứng thỏa mãn ràng buộc bộ nhớ hạn chế
(bounded memory): các đầu ra phụ thuộc vào các đầu vào và trạng thái bên trong của hệ thống. Các trạng thái của hệ thống thường được lưu trữ trong bộ nhớ.
Hình 5.1. Hệ thống phản ứng
Một hệ thống phản ứng có thể được biểu diễn như trong Hình 5.1, trong đó i và o là các đầu vào và đầu ra tương ứng của hệ thống.
Hệ thống
môi trường
114 Hệ thống phản ứng có thể liên tục hoặc rời rạc về mặt thời gian. Gọi T1 và T2 là các kiểu dữ liệu của đầu vào và đầu ra của hệ thống. Hệ thống liên tục và hệ thống rời rạc có thể phân biệt bởi định nghĩa sau: − Hệ thống liên tục: i:ℜ→T1 và o:ℜ→T2 − Hệ thống rời rạc: i:ℵ→T1 và o:ℵ→T2 5.2.2.Hệ thống phản ứng đồng bộ
Tiếp cận đồng bộ được chấp nhận rộng rãi trong việc thiết kế các hệ thống phản ứng. Trong tiếp cận này, thời gian phản ứng của hệ thống được xem bằng không. Thời gian được chia thành những khoảng rời rạc.
Đầu vào và đầu ra của hệ thống được mô tả bởi luồng giá trị theo thời gian. Nếu x là một luồng, chúng ta sẽ ký hiệu xn là giá trị của nó tại thời điểm n của hệ thống. Một hệ thống nhận luồng giá trị vào và tính toán luồng giá trị ra, và có thể sử dụng các luồng giá trị cục bộ (bên trong) mà không nhìn thấy từ môi trường. Các luồng giá trị cục bộ và đầu ra được định nghĩa bởi các phương trình. Phương trình x = y + z định nghĩa luồng x từ các luồng y và z, mà tại mỗi thời điểm n, xn = yn + zn.
Đặt T1 và T2 là các kiểu dữ liệu vào và ra của hệ thống, S là tập các trạng thái bên trong của hệ thống. Hệ thống có thểđược biểu diễn bởi hai hàm sau:
− Hàm ra f :S × T1 → T2.
− Hàm chuyển tiếp g :S × T1 → S. − Tồn tại trạng thái đầu s0 : S, sao cho:
ok = f(sk-1, ik)
115
Trong đó, ik, ok, sk tương ứng là các đầu vào, đầu ra và trạng thái bên trong của hệ thống tại thời điểm k, và sk-1 là trạng thái bên trong của hệ thống tại thời điểm k-1.
Chúng ta có thể biểu diễn hệ thống tại thời điểm k như trong Hình 5.2.
Hình 5.2. Hệ thống tại thời điểm k
5.2.3.Tiếp cận luồng dữ liệu và luồng điều khiển
Các hệ thống phản ứng được thiết kế bởi hai phần: phần tính toán và phần điều khiển.
Phần tính toán thường được mô tả bởi hệ phương trình, nghĩa là tiếp cận luồng dữ liệu, như thế thường được mô hình hóa bởi sơ đồ toán tử, trong đó, mỗi toán tử là một toán tử cơ bản hay một tập các toán tử. Trong sơ đồ toán tử, các toán tử được kết nối với nhau bởi kênh giao tiếp, dữ liệu được xử lý bởi các toán tử. Một sơ đồ có thể được biểu diễn một cách có thứ bậc: một hệ thống con có thể được xem như một toán tử.
Phần điều khiển nghĩa là thay đổi hành vi của hệ thống tùy theo sự kiện bên ngoài đến từ người sử dụng hay các cảm ứng hoặc đến từ các sự kiện bên trong hệ thống. Hành vi hệ thống thường không thay đổi, tuy nhiên có thể chuyển từ hành vi này sang hành vi khác. Trong trường hợp này, hệ thống thường bao gồm một hệ thống điều khiển con nhằm thực thi các xử lý dữ liệu
f g ik ok sk-1 sk
116
khác nhau cho mỗi trạng thái của hệ thống. Phần điều khiển này thường được biểu diễn bởi máy trạng thái hữu hạn.
Hành vi của hệ thống được gọi là chế độ thực thi (running modes). Mỗi chế độ là một luật điều khiển (big control mode), (nghĩa là phần tính toán), thường được biểu diễn bởi các phương trình luồng dữ liệu. Chuyển đổi giữa các chế độ này được mô tả bởi các máy trạng thái hữu hạn (nghĩa là phần điều khiển). Ô-tô-mát chế độ (mode-automat) [47] được đề xuất để mô tả đồng thời phần luồng dữ liệu và luồng điều khiển của hệ thống: các phương trình luồng dữ liệu được gắn với mỗi trạng thái (hay chế độ) của ô-tô-mát. Ô-tô- mát chếđộ cũng có thể kết hợp để thiết kế các mô hình có thứ bậc.