Giới thiệu dự án

Trong kỷ nguyên công nghiệp 4.0 và chuyển đổi số, các hệ thống nhúng (Embedded Systems) đóng vai trò xương sống trong nhiều lĩnh vực quan trọng như hàng không vũ trụ (Avionics), điều khiển động cơ ô tô (Automotive Powertrain/ECU), thiết bị y tế và tự động hóa nhà máy. Theo các báo cáo kỹ thuật ngành công nghiệp phần mềm nhúng, giai đoạn thẩm định, xác minh và kiểm thử phần mềm (Verification & Validation - V&V) chiếm từ 50% đến 70% tổng chi phí và thời gian phát triển dự án. Một lỗi nhỏ trong hệ thống điều khiển có thể dẫn đến những tổn thất nghiêm trọng về tài sản và đe dọa trực tiếp đến tính mạng con người.

Phương pháp phát triển dựa trên mô hình (Model-Based Design - MBD) với công cụ chủ lực MATLAB/Simulink (MathWorks) đã trở thành chuẩn mực công nghiệp giúp kỹ sư mô hình hóa, mô phỏng và phân tích các hệ thống động lực học phức tạp trước khi nạp mã nguồn vào phần cứng thực tế. Tuy nhiên, quy trình kiểm thử mô hình hiện nay đang đối mặt với bài toán bùng nổ tổ hợp kiểm thử (Combinatorial Explosion). Khi một mô hình Simulink phức tạp sở hữu hàng chục khối chức năng với hàng trăm cấu hình tham số logic, toán học và điều kiện biên, việc tạo lập các mô hình kiểm thử (.slx) bằng thao tác thủ công (kéo thả, sửa thuộc tính khối) làm phát sinh rào cản lớn:

  • Tốn kém tài nguyên và thời gian: Kỹ sư mất hàng giờ để tạo hàng chục phiên bản mô hình khác nhau.
  • Nguy cơ sai sót con người (Human Error): Thao tác cấu hình lặp đi lặp lại dễ dẫn đến nhầm lẫn tham số giữa các khối (Block parameters).
  • Chi phí kiểm thử tăng vọt: Nếu kiểm thử tổ hợp toàn phần (Exhaustive Combinatorial Testing), số lượng mô hình sinh ra tăng theo cấp số nhân ($O(V^N)$), vượt quá khả năng thực thi của hạ tầng máy chủ mô phỏng.

Đồ án tốt nghiệp "Xây dựng hệ thống sinh mô hình MATLAB/Simulink tự động" do sinh viên Lê Thị Ngân thực hiện dưới sự hướng dẫn của TS. Đỗ Thị Bích Ngọc (Khoa Công nghệ Thông tin 1, Học viện Công nghệ Bưu chính Viễn thông - PTIT) được nghiên cứu nhằm giải quyết triệt để các rào cản trên.

+-------------------------------------------------------------------------------+
|                      MÔ HÌNH HÓA VÀ SINH DỮ LIỆU TỰ ĐỘNG                      |
|                                                                               |
|   +-------------------+       +--------------------+                          |
|   |  Mô hình Simulink |       |  File cấu hình     |                          |
|   |     gốc (.slx)    |       |  JSON Parameters   |                          |
|   +---------+---------+       +---------+----------+                          |
|             |                           |                                     |
|             +-------------+-------------+                                     |
|                           |                                                   |
|                           v                                                   |
|           +-------------------------------+                                   |
|           |   HỆ THỐNG SINH TỰ ĐỘNG       |                                   |
|           |   - Phương pháp Tổ hợp        |                                   |
|           |   - Pairwise Testing (PICT)   |                                   |
|           +---------------+---------------+                                   |
|                           |                                                   |
|                           v                                                   |
|           +-------------------------------+                                   |
|           |  Tập hợp mô hình kiểm thử     |                                   |
|           |  Model_00001.slx ... N.slx    |                                   |
|           +-------------------------------+                                   |
+-------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Nghiên cứu cơ chế cấu hình mô hình MATLAB/Simulink: Khảo sát cấu trúc khối (Blocks), đường truyền tín hiệu (Lines), thuộc tính khối và API tự động hóa của MATLAB Engine.
  2. Nghiên cứu kỹ thuật kiểm thử tổ hợp: Phân tích giải thuật kiểm thử theo cặp (Pairwise/2-way Testing) và ứng dụng công cụ PICT (Pairwise Independent Combinatorial Testing) của Microsoft.
  3. Thiết kế giải pháp tự động hóa: Xây dựng thuật toán giải mã cấu hình JSON, trích xuất cấu trúc mô hình và liên kết công cụ PICT với MATLAB Engine để tự động sinh biến thể mô hình.
  4. Phát triển phần mềm hoàn chỉnh: Đóng gói giao diện người dùng đồ họa (GUI) trực quan trên nền tảng MATLAB GUIDE, cung cấp 2 chế độ: Sinh tổ hợp toàn phần và Sinh tối ưu theo cặp.

Phạm vi và giới hạn

  • Phạm vi: Áp dụng cho các mô hình MATLAB/Simulink mức hệ thống nhúng sử dụng các khối chức năng chuẩn (Switch, Multiport Switch, Abs, Logical Operator, Relational Operator, Delay, Inport/Outport).
  • Giới hạn: Dự án tập trung vào việc biến đổi tổ hợp tham số của các khối định trước trên mô hình gốc, chưa can thiệp vào việc tự động định tuyến lại dây nối (Auto-routing Lines) của các hệ thống con phân tầng vô hạn (Infinite Subsystems).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trong quy trình phát triển phần mềm nhúng truyền thống, việc chuẩn bị dữ liệu kiểm thử mô hình được triển khai theo 3 hướng chính:

Tiêu chí Cấu hình thủ công Kiểm thử tổ hợp toàn phần Kiểm thử theo cặp (Pairwise/PICT)
Phương thức thực hiện Thao tác kéo thả GUI từng mô hình Thuật toán lặp vét cạn (Cartesian Product) Tối ưu hóa ma trận phủ 2 chiều qua PICT
Số lượng ca kiểm thử sinh ra Rất ít (giới hạn bởi sức người) Bùng nổ tổ hợp ($N_1 \times N_2 \times \dots \times N_k$) Tối ưu hóa tối đa ($O(V^2 \log N)$)
Thời gian tạo 100 mô hình 3 - 5 giờ làm việc 10 - 20 giây (tốn tài nguyên lưu trữ) < 2.5 giây
Độ bao phủ lỗi phát sinh Thấp, không đồng đều, phụ thuộc cảm tính 100% không gian cấu hình ~70% đến 85% lỗi tương tác 2 yếu tố
Chi phí thực thi kiểm thử Rất cao Cực kỳ tốn kém Tối ưu nhất về ROI

Phân tích yêu cầu hệ thống theo chuẩn MoSCoW

  • Must Have:
    • Đọc và parse cấu trúc file định nghĩa tham số đầu vào định dạng JSON.
    • Trích xuất xử lý handle của khối thông qua API getSimulinkHandle.
    • Tự động cập nhật tham số khối bằng set_param và lưu mô hình mới bằng save_system.
    • Tích hợp bộ công cụ dòng lệnh Microsoft PICT để sinh ca kiểm thử theo cặp.
  • Should Have:
    • Giao diện người dùng MATLAB GUIDE trực quan, hỗ trợ tải file, hiển thị trạng thái và bảng kết quả mô hình đã sinh.
    • Chuyển đổi dữ liệu trung gian tự động giữa các định dạng .txt, .xlsx và cấu trúc mảng Cell trong MATLAB.
  • Could Have:
    • Tự động kiểm tra tính hợp lệ của tham số trước khi nạp vào khối Simulink.
  • Won't Have (Giai đoạn này):
    • Tự động thực thi mô phỏng hàng loạt (Batch Simulation Execution) và so sánh tín hiệu đầu ra trên đồ thị Scope.

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc phân tầng dạng module độc lập, tách biệt giữa tầng giao diện người dùng, tầng xử lý logic cốt lõi và tầng tương tác với lõi mô phỏng MATLAB/Simulink:

+---------------------------------------------------------------+
|                 GIAO DIỆN NGƯỜI DÙNG (MATLAB GUI)             |
|   [Tải mô hình .slx]   [Tải file tham số .json]   [Sinh dữ liệu]
+-------------------------------+-------------------------------+
                                |
                                v
+---------------------------------------------------------------+
|                  MODULE ĐIỀU PHỐI VÀ XỬ LÝ DỮ LIỆU            |
|   - JSON Parser (jsondecode, fileread)                        |
|   - Parameter Formatter (Chuyển đổi tham số sang text)        |
+---------------+-------------------------------+---------------+
                |                               |
                v                               v
+-------------------------------+ +-------------------------------+
|  BỘ SINH TỔ HỢP TOÀN PHẦN     | |  BỘ SINH THEO CẶP (PICT)      |
|  - Lặp đa chiều các giá trị   | |  - Gọi thực thi DOS (PICT CLI)|
|  - Cartesian Product Generator| |  - Chuyển đổi Output Text/Cell|
+---------------+---------------+ +---------------+---------------+
                |                               |
                +---------------+---------------+
                                |
                                v
+---------------------------------------------------------------+
|             MATLAB/SIMULINK MODEL ENGINE CONTROLLER           |
|   - load_system()         - getSimulinkHandle()               |
|   - set_param()           - save_system() / close_system()    |
+---------------------------------------------------------------+

Technology Stack và Công cụ phát triển

  • Môi trường phát triển cốt lõi: MATLAB R2017b (MathWorks) 64-bit.
  • Nền tảng mô hình hóa: Simulink Version 9.0.
  • Công cụ kiểm thử tổ hợp: Microsoft PICT (Pairwise Independent Combinatorial Testing) Version 3.3.
  • Định dạng dữ liệu cấu hình: JSON (JavaScript Object Notation) tiêu chuẩn và Text (.txt), Bảng tính Excel (.xlsx).
  • Công cụ thiết kế giao diện: MATLAB GUIDE (Graphical User Interface Development Environment).
  • Hệ điều hành tương thích: Microsoft Windows 10/11 Professional.

Cấu trúc định nghĩa tham số đầu vào (JSON Schema)

File JSON chứa thông tin tên mô hình, chế độ sinh và danh sách các khối mục tiêu cần thay đổi tham số:

{
  "model": "Switch_Abs",
  "mode": "mixed",
  "target_blocks": [
    {
      "fullpath": "Switch_Abs/Switch",
      "combine_parameters": [
        {
          "name": "Criteria",
          "values": ["u2 >= Threshold", "u2 > Threshold", "u2 ~= 0"]
        },
        {
          "name": "Threshold",
          "values": ["3", "5"]
        }
      ],
      "fixed_parameters": []
    },
    {
      "fullpath": "Switch_Abs/Switch1",
      "combine_parameters": [
        {
          "name": "Criteria",
          "values": ["u2 >= Threshold", "u2 > Threshold", "u2 ~= 0"]
        },
        {
          "name": "Threshold",
          "values": ["3"]
        }
      ],
      "fixed_parameters": []
    }
  ]
}

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển Agile rút gọn kết hợp với phương pháp thiết kế hướng mô hình (Model-Based Verification):

  • Milestone 1 (Tuần 1 - 3): Khảo sát lý thuyết hệ thống nhúng, cấu trúc file .slx của Simulink và kỹ thuật kiểm thử hộp đen (Black-box testing).
  • Milestone 2 (Tuần 4 - 7): Xây dựng giải thuật sinh mô hình theo phương pháp tổ hợp toàn phần bằng m-script.
  • Milestone 3 (Tuần 8 - 11): Tích hợp công cụ Microsoft PICT, xây dựng module chuyển đổi cấu hình trung gian và thuật toán sinh theo cặp.
  • Milestone 4 (Tuần 12 - 14): Thiết kế giao diện đồ họa MATLAB GUI, ghép nối toàn diện các module và thử nghiệm kiểm chứng độ chính xác.

Implementation và kết quả

Chi tiết giải thuật và mã nguồn triển khai

Hệ thống được tổ chức thành các module xử lý chính xác theo quy trình khép kín:

1. Đọc và giải mã dữ liệu cấu hình JSON

Mô hình gốc được nạp vào bộ nhớ nền thông qua hàm load_system mà không cần hiển thị giao diện đồ họa Simulink, giúp tăng tối đa tốc độ xử lý:

function modelGenerator(parameters_file, logfile_name)
    % Giải mã và đọc dữ liệu cấu hình từ file JSON
    param = jsondecode(fileread(parameters_file));
    base_model = param.model;
    
    % Tải mô hình gốc vào hệ thống ngầm
    load_system(base_model);
    log_file = fopen(logfile_name, 'w');
    
    mode = param.mode;
    global counter;
    counter = 1;
    
    % Tiến hành điều hướng theo chế độ sinh
    if strcmp(mode, 'combinatorial')
        generateCombinatorialModels(param, base_model, log_file);
    end
end

2. Tích hợp công cụ PICT sinh ca kiểm thử theo cặp

Module chuyển đổi thông tin cấu hình thành file input.txt chuẩn cho PICT, sau đó gọi thực thi trực tiếp bộ sinh thông qua hệ điều hành và ánh xạ dữ liệu đầu ra:

% Tạo file input.txt từ cấu trúc tham số
fileID = fopen('input.txt', 'w');
for i = 1:length(param.target_blocks)
    block = param.target_blocks(i);
    for j = 1:length(block.combine_parameters)
        p = block.combine_parameters(j);
        fprintf(fileID, '%s/%s: ', block.fullpath, p.name);
        for k = 1:length(p.values)
            if k == length(p.values)
                fprintf(fileID, '%s\n', p.values{k});
            else
                fprintf(fileID, '%s, ', p.values{k});
            end
        end
    end
end
fclose(fileID);

% Thực thi lệnh PICT thông qua Command Line
dos('pict.exe input.txt > output.txt');

% Đọc kết quả từ file output.txt và chuyển đổi sang Cell Array
fileID_out = fopen('output.txt', 'r');
C = textscan(fileID_out, '%s', 'Delimiter', '\n');
fclose(fileID_out);

3. Tự động cập nhật thuộc tính khối và xuất mô hình .slx

Hệ thống sử dụng các API bậc cao của Simulink để truy xuất handle của từng khối và cập nhật giá trị thuộc tính tương ứng với từng ca kiểm thử:

% Gán tham số cho từng block và lưu thành file mô hình mới
function saveGeneratedModel(base_model, block_path, param_name, param_value, model_index)
    % Lấy handle của khối từ đường dẫn định danh
    block_handle = getSimulinkHandle(block_path, true);
    
    if block_handle ~= -1
        % Gán giá trị tham số mới cho khối
        set_param(block_handle, param_name, param_value);
        
        % Đặt tên mô hình mới theo định dạng chuẩn hóa
        new_model_name = sprintf('%s_%05d_gen', base_model, model_index);
        
        % Lưu mô hình mới vào ổ đĩa
        save_system(base_model, new_model_name);
        
        % Đóng mô hình đã lưu để giải phóng bộ nhớ RAM
        close_system(new_model_name);
    end
end

Thử nghiệm và đánh giá hiệu năng

Để kiểm chứng tính chính xác và hiệu năng của giải pháp, hệ thống được thử nghiệm trên mô hình chuẩn Switch_Abs bao gồm 4 tham số đầu vào độc lập:

  1. Switch_Abs/Switch-Criteria: 3 giá trị (u2 >= Threshold, u2 > Threshold, u2 ~= 0)
  2. Switch_Abs/Switch-Threshold: 2 giá trị (3, 5)
  3. Switch_Abs/Switch1-Criteria: 3 giá trị (u2 >= Threshold, u2 > Threshold, u2 ~= 0)
  4. Switch_Abs/Switch1-Threshold: 2 giá trị (3, 5)

Ngoài ra, thử nghiệm mở rộng với một bài toán cấu hình dịch vụ nhúng gồm 4 tham số: Loại đặt hàng (3 giá trị), Địa điểm (3 giá trị), Loại xe (4 giá trị), Số đăng ký xe (2 giá trị).

+-------------------------------------------------------------------------------+
|              SO SÁNH SỐ LƯỢNG CA KIỂM THỬ GIỮA HAI PHƯƠNG PHÁP                |
|                                                                               |
|   Số ca kiểm thử                                                              |
|     80 +------------------------------------------------------------------+   |
|        |                                                                  |   |
|     70 |   72 ca (Tổ hợp toàn phần)                                       |   |
|        |   [================================================]             |   |
|     60 |                                                                  |   |
|     50 |                                                                  |   |
|     40 |                                                                  |   |
|     30 |                                                                  |   |
|     20 |                                                                  |   |
|     10 |                     12 ca (Pairwise Testing - PICT)              |   |
|        |                     [========]                                   |   |
|      0 +------------------------------------------------------------------+   |
|                            Phương pháp thực hiện                              |
+-------------------------------------------------------------------------------+

Kết quả đối sánh thực nghiệm

  • Phương pháp tổ hợp toàn phần (Exhaustive Combinatorial): $$\text{Số lượng ca kiểm thử} = 3 \times 3 \times 4 \times 2 = 72 \text{ mô hình}$$
  • Phương pháp kiểm thử theo cặp (Pairwise Testing qua PICT): $$\text{Số lượng ca kiểm thử tối ưu} = 12 \text{ mô hình}$$
  • Mức độ giảm thiểu không gian kiểm thử: $$\text{Tỷ lệ giảm thiểu} = \frac{72 - 12}{72} \times 100% = 83.33%$$

Kết quả đạt được so với mục tiêu ban đầu

Mục tiêu ban đầu Kết quả thực tế đạt được Đánh giá
Tự động hóa sinh mô hình Simulink 100% tự động sinh file .slx hợp lệ từ cấu hình JSON Hoàn thành xuất sắc
Giảm thiểu số lượng ca kiểm thử Cắt giảm 83.33% số lượng ca kiểm thử đối với bài toán mẫu Vượt chỉ tiêu đề ra
Giao diện người dùng đồ họa Xây dựng GUI hoàn chỉnh qua MATLAB GUIDE với 2 module độc lập Trực quan, dễ sử dụng
Thời gian tạo lập mô hình Sinh 12 mô hình tối ưu chỉ trong 1.85 giây Nhanh hơn 99% so với thủ công

Đổi mới và đóng góp

  1. Ứng dụng thành công kỹ thuật Pairwise Testing vào công nghệ Model-Based Design: Khác với các nghiên cứu kiểm thử phần mềm thông thường chỉ áp dụng Pairwise cho dữ liệu đầu vào (Input Vectors), đồ án đã áp dụng trực tiếp kỹ thuật này vào việc sinh cấu trúc thuộc tính của mô hình Simulink.
  2. Cơ chế nạp và chỉnh sửa mô hình ngầm (Background System Manipulation): Sử dụng các API cấp thấp của MATLAB (load_system, set_param, save_system, close_system) cho phép xử lý hàng trăm mô hình mà không cần khởi tạo cửa sổ đồ họa Simulink, giải quyết bài toán tràn bộ nhớ RAM khi chạy mô phỏng hàng loạt.
  3. Chuẩn hóa cấu trúc cấu hình tham số bằng JSON Schema: Xây dựng cấu trúc dữ liệu JSON thống nhất, dễ đọc, dễ mở rộng, cho phép kỹ sư kiểm thử định nghĩa hàng loạt khối và tham số phức tạp mà không cần can thiệp vào mã nguồn chương trình.
  4. Đóng góp học thuật và thực tiễn: Cung cấp một bộ công cụ hoàn chỉnh, mã nguồn mở phục vụ cho công tác đào tạo chuyên ngành Kỹ thuật Phần mềm và Hệ thống Nhúng tại Học viện Công nghệ Bưu chính Viễn thông.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng trong công nghiệp (Use Cases)

+-------------------------------------------------------------------------------+
|                    ỨNG DỤNG TRONG QUY TRÌNH KIỂM THỬ MBD                      |
|                                                                               |
|   +-----------------------+       +-----------------------+                   |
|   | 1. Ô TÔ THÔNG MINH    |       | 2. HÀNG KHÔNG VŨ TRỤ  |                   |
|   | Kiểm thử các chế độ   |       | Đánh giá tham số bộ   |                   |
|   | phanh ABS / Cruise    |       | điều khiển lái tự động|                   |
|   | Control đa biến.      |       | trong thời tiết xấu.  |                   |
|   +-----------------------+       +-----------------------+                   |
|                                                                               |
|   +-----------------------+       +-----------------------+                   |
|   | 3. ROBOT CÔNG NGHIỆP  |       | 4. THIẾT BỊ Y TẾ      |                   |
|   | Kiểm thử các ngưỡng   |       | Kiểm tra tổ hợp xung  |                   |
|   | an toàn cánh tay      |       | điện và cảnh báo của  |                   |
|   | robot tự động hóa.    |       | máy thở đa chức năng. |                   |
|   +-----------------------+       +-----------------------+                   |
+-------------------------------------------------------------------------------+

Yêu cầu triển khai và môi trường phần cứng/phần mềm

  • Hệ điều hành: Microsoft Windows 7/8/10/11 (32-bit hoặc 64-bit).
  • Phần mềm nền tảng: MATLAB R2016a trở lên (khuyến nghị R2017b) tích hợp Simulink Toolbox.
  • Bộ nhớ RAM: Tối thiểu 4 GB (khuyến nghị 8 GB trở lên khi sinh số lượng lớn mô hình).
  • Dung lượng đĩa cứng: Tối thiểu 500 MB dung lượng trống để lưu trữ các tệp mô hình sinh ra.
  • Công cụ phụ trợ: Microsoft PICT Utility (pict.exe đặt cùng thư mục thực thi).

Phân tích hiệu quả kinh tế (Cost-Benefit & ROI Analysis)

  • Tiết kiệm nhân công: Đối với một dự án ECU ô tô với 500 ca kiểm thử cấu hình, việc tạo thủ công tiêu tốn khoảng 40 giờ làm việc của kỹ sư QA. Hệ thống tự động hóa hoàn tất trong chưa đầy 1 phút.
  • Tối ưu chi phí phần cứng mô phỏng: Cắt giảm 80% số lượng mô hình không cần thiết giúp giảm tải 80% thời gian chiếm dụng máy chủ Hardware-in-the-Loop (HIL) và Software-in-the-Loop (SIL), tiết kiệm hàng nghìn USD chi phí vận hành phòng lab mỗi tháng.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Cấu trúc phân tầng sâu: Hệ thống hiện xử lý tối ưu trên các khối thuộc tầng gốc (Root Level) hoặc tầng con trực tiếp, việc truy vết các hệ thống con lồng nhau vô hạn (Deeply Nested Subsystems) đòi hỏi cấu hình chuỗi đường dẫn chính xác tuyệt đối trong file JSON.
  • Ràng buộc logic nâng cao (Advanced Constraints): Chưa tích hợp giao diện đồ họa để định nghĩa các biểu thức ràng buộc phủ định giữa các tham số (ví dụ: IF [Loại xe] = "Wave" THEN [Số đăng ký] <> "Tùy chọn đặc biệt"), hiện tại các ràng buộc này phải khai báo thủ công trong cú pháp lệnh của PICT.

Hướng phát triển trong tương lai

  1. Nâng cấp thuật toán N-way Testing: Mở rộng từ Pairwise (2-way) lên 3-way, 4-way và N-way testing nhằm đáp ứng các tiêu chuẩn an toàn hàng không nghiêm ngặt (DO-178C Level A).
  2. Tự động hóa chu trình kiểm thử khép kín (Full Test Automation Pipeline): Tích hợp module tự động chạy mô phỏng (sim()), ghi nhận dữ liệu đầu ra và đối sánh với mô hình chuẩn (Oracle Model) để tự động xuất báo cáo kết quả Pass/Fail.
  3. Tích hợp vào quy trình CI/CD: Xây dựng plugin cho Jenkins/GitLab CI để tự động kích hoạt sinh mô hình và kiểm thử mỗi khi có commit thay đổi thiết kế trên kho lưu trữ Git.

Đối tượng hưởng lợi

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Hệ thống Nhúng: Nguồn học liệu thực chứng giá trị về phương pháp kiểm thử hộp đen, kỹ thuật Pairwise Testing và cách thức lập trình điều khiển MATLAB Engine thông qua API.
  • Kỹ sư kiểm thử phần mềm (QA/QC Engineers): Công cụ đắc lực giúp giải phóng sức lao động trong khâu chuẩn bị dữ liệu kiểm thử mô hình Simulink, nâng cao năng suất làm việc gấp hàng chục lần.
  • Doanh nghiệp phát triển giải pháp nhúng và ô tô: Tiết kiệm hàng trăm giờ kiểm thử mô phỏng, rút ngắn chu kỳ đưa sản phẩm ra thị trường (Time-to-Market) và đảm bảo chất lượng phần mềm theo chuẩn ISO 26262.
  • Nhà nghiên cứu (Researchers): Khung kiến trúc mở để tiếp tục thử nghiệm các thuật toán tối ưu hóa bầy đàn (PSO), giải thuật di truyền (Genetic Algorithm) trong bài toán tạo dữ liệu kiểm thử tự động.

Câu hỏi thường gặp

1. Hệ thống có yêu cầu cài đặt thêm thư viện ngoài nào trong MATLAB không?

Không. Hệ thống sử dụng hoàn toàn các hàm tích hợp sẵn của MATLAB (như jsondecode, fileread, getSimulinkHandle, set_param, save_system) và chỉ yêu cầu tệp thực thi pict.exe (chạy độc lập không cần cài đặt phức tạp) được đặt cùng thư mục mã nguồn.

2. Sự khác biệt cốt lõi giữa phương pháp tổ hợp và Pairwise testing là gì?

Phương pháp tổ hợp toàn phần duyệt qua toàn bộ các trường hợp có thể xảy ra của tất cả tham số ($N_1 \times N_2 \times \dots \times N_k$), dẫn đến số lượng ca kiểm thử khổng lồ. Pairwise testing dựa trên nguyên lý thực nghiệm rằng hơn 70% lỗi phần mềm xuất phát từ sự tương tác giữa hai tham số độc lập, từ đó chỉ tạo ra số lượng ca kiểm thử tối thiểu đủ để phủ hết mọi cặp giá trị 2 yếu tố, giúp giảm số ca kiểm thử từ 60% đến 85%.

3. File định dạng JSON đầu vào có khó khởi tạo không?

Rất đơn giản. Cấu trúc JSON được thiết kế trực quan với các trường: model (tên mô hình), fullpath (đường dẫn khối) và combine_parameters (danh sách tên tham số và mảng các giá trị tương ứng). Người dùng có thể chỉnh sửa dễ dàng bằng bất kỳ trình soạn thảo văn bản nào như Notepad, VS Code.

4. Hệ thống có thể xử lý các mô hình Simulink có dung lượng lớn không?

Có. Nhờ cơ chế load_system nạp mô hình vào bộ nhớ RAM ngầm và đóng mô hình ngay sau khi lưu (close_system), hệ thống quản lý bộ nhớ cực kỳ hiệu quả, tránh hiện tượng rò rỉ bộ nhớ (Memory Leak) ngay cả khi sinh hàng trăm mô hình liên tục.

5. Chi phí triển khai giải pháp này trong doanh nghiệp là bao nhiêu?

Giải pháp được xây dựng dựa trên công cụ mã nguồn mở Microsoft PICT và nền tảng MATLAB có sẵn của doanh nghiệp, do đó chi phí bản quyền phần mềm bổ sung là 0 VNĐ, thời gian hoàn vốn đầu tư (ROI) đạt được ngay trong tuần đầu tiên áp dụng vào dự án.


Kết luận

Đồ án tốt nghiệp "Xây dựng hệ thống sinh mô hình MATLAB/Simulink tự động" của sinh viên Lê Thị Ngân đã giải quyết thành công bài toán bùng nổ tổ hợp trong kiểm thử mô hình hệ thống nhúng. Bằng việc kết hợp sáng tạo giữa công cụ kiểm thử tối ưu Microsoft PICT và nền tảng mô hình hóa MATLAB/Simulink, đề tài đã mang lại giải pháp tự động hóa toàn diện, giúp cắt giảm tới 83.33% số lượng mô hình kiểm thử dư thừa mà vẫn đảm bảo độ bao phủ lỗi tối đa.

Đây là một công trình nghiên cứu ứng dụng có giá trị học thuật cao, cấu trúc giải thuật rõ ràng và mang tính ứng dụng thực tiễn to lớn trong ngành công nghiệp phát triển phần mềm ô tô và hệ thống nhúng hiện đại. Đề tài mở ra tiềm năng ứng dụng sâu rộng trong quy trình đảm bảo chất lượng phần mềm dựa trên mô hình (MBD), tạo tiền đề vững chắc cho việc phát triển các khung kiểm thử tự động hóa thông minh trong tương lai.