Đặt vấn đề Ngày nay, các hệ thống nhúng rất phát triển với những ứng dụng rộng rãi trong nhiều lĩnh vực công nghiệp và đời sống. Các hệ thống nhúng có kiến trúc phần cứng cũng nhƣ phần mềm rất đa dạng và phong phú. Nhƣ chúng ta đã biết, trong phát triển phần mềm thì hoạt động kiểm thử có vai trò hết sức quan trọng, mang tính sống còn của sản phẩm và với phần mềm nhúng cũng không phải là ngoại lệ. Sự phát triển của hệ thống nhúng kéo theo những yêu cầu phát triển của hoạt động kiểm thử phần mềm nhúng.
Thông thƣờng, một cách rất phổ biến để kiểm thử phần mềm cho hệ thống nhúng nói chung đó là chạy phần mềm trên chƣơng trình giả lập phần cứng, chƣơng trình giả lập ở đây có thể là một vi điều khiển ảo cũng có thể là một chƣơng trình mô phỏng hình dung cả một hệ thống mạch bao gồm vi điều khiển và các thiết bị khác. Tuy nhiên hiện nay, hệ thống nhúng ở Việt Nam mới phát triển khá khiêm tốn so với thế giới, và lĩnh vực kiểm thử nhúng lại càng khiêm tốn hơn. Có rất ít các bài báo, các tài liệu nói về hoạt động kiểm thử nhúng cũng nhƣ không có nhiều công cụ hỗ trợ cho việc kiểm thử này. Do đó, việc nghiên cứu và tìm hiểu các phƣơng pháp, các kỹ thuật kiểm thử cũng nhƣ công cụ cho phần mềm nhúng là một vấn đề cần thiết hiện nay, nó sẽ góp phần thúc đẩy sự phát triển của lĩnh vực hệ thống nhúng, một lĩnh vực giàu tiềm năng nhƣng mới chỉ bƣớc đầu phát triển ở việt nam.
Trong luận văn này, tôi chọn nghiên cứu kiểm thử dựa trên mô hình với NModel trong việc phát triển phần mềm nhúng, cụ thể là kiểm thử cho bài toán về hệ thống Client/Server – một thiết bị điều khiển từ xa có sử dụng cảm biến nhiệt độ. Nội dung nghiên cứu Mục tiêu của luận văn: Mục tiêu đặt ra là nghiên cứu phƣơng pháp kiểm thử dựa trên mô hình để hỗ trợ cho việc phát triển hệ thống nhúng. Nhiệm vụ của luận văn: Trong luận văn này, nhiệm vụ chính là nghiên cứu ứng dụng cụ thể NModel sau đó áp dụng kiểm thử bài toán thiết bị điều khiển từ xa Client/Server. Luận văn tập trung nghiên cứu và khảo sát tổng quan về lý thuyết hệ thống nhúng; lý thuyết phân tích và kiểm thử dựa trên mô hình và các kỹ thuật kiểm thử phần mềm; luận văn cũng nghiên cứu về các loại chƣơng trình mô hình trong NModel để kiểm thử bài toán về thiết bị điều khiển từ xa Client/Server.
Từ những hiểu biết về phân tích và kiểm thử phần mềm, luận văn đã áp dụng quy trình của các phƣơng pháp kiểm thử ngoại tuyến và kiểm thử trực tuyến (on-the-fly) để kiểm thử bài toán. Hệ thống Client/Server – thiết bị điều khiển từ xa là bài toán về hệ thống nhúng đơn giản nhƣng đầy đủ, không sử dụng hệ điều hành nhúng. Các chƣơng trình đƣợc viết bằng ngôn ngữ C# và kiểm thử đƣợc chạy mô phỏng bằng công cụ NModel. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.
Tầm quan trọng của kiểm thử dựa trên mô hình Trong phát triển phần mềm, các kiểm thử viên thƣờng thực hiện công việc bằng phƣơng pháp truyền thống nên đôi khi bị nhàm chán vì công việc lặp đi lặp lại, tốn thời gian để thực hiện kiểm thử. Do đó, kiểm thử dựa trên mô hình sẽ khắc phục đƣợc một số vấn đề nhƣ sau: Quá trình sinh ca kiểm thử là tự động nên sẽ rút ngắn thời gian làm phần mềm, chất lƣợng phần mềm đƣợc cải thiện hơn, sinh ra nhiều ca kiểm thử và phát hiện nhiều lỗi. Loại bỏ đƣợc sự nhàm chán và tính chủ quan khi làm việc nên giúp cho các kiểm thử viên hài lòng với công việc của mình. Tự động tạo và kiểm tra để tránh các ca kiểm thử trùng nhau hoặc không hữu hiệu.
Khi có yêu cầu thay đổi hệ thống thì việc thay đổi các ca kiểm thử chỉ việc thay đổi mô hình của hệ thống. Cấu trúc luận văn Các phần còn lại của luận văn có cấu trúc nhƣ sau: Chƣơng 2 trình bày tổng quan về hệ thống nhúng và phần mềm nhúng. Chƣơng 3 trình bày về lý thuyết phân tích và kiểm thử dựa trên mô hình, và hệ thống với các mô hình hữu hạn. Chƣơng 4 giới thiệu về cách cài đặt và cách sử dụng công cụ NModel, trình bày về bài toán và kết quả thực nghiệm kiểm thử hệ thống Client/Server – thiết bị điều khiển từ xa.
Cuối cùng là kết luận về quá trình nghiên cứu, đƣa ra các kết quả đạt đƣợc, và hƣớng nghiên cứu tiếp theo. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12 CHƢƠNG 2. TỔNG QUAN VỀ HỆ THỐNG NHÚNG 2. Các khái niệm về hệ thống nhúng 2.
Hệ thống nhúng Ngày nay, xung quanh ta có rất nhiều thiết bị, đồ dùng liên quan đến hệ thống nhúng nhƣ đồng hồ kỹ thuật số, ô tô, hoặc những sản phẩm lớn nhƣ đèn giao thông, máy giặt, hệ thống kiểm soát các máy năng lƣợng hạt nhân. Vậy thực chất “hệ thống nhúng là gì?”. Có rất nhiều khái niệm về hệ thống nhúng. Tuy nhiên, theo [1]: “Hệ thống nhúng là một thuật ngữ để chỉ một hệ thống có khả năng tự trị đƣợc nhúng vào trong một môi trƣờng hay một hệ thống mẹ.
Đó là các hệ thống tích hợp cả phần cứng và phần mềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hóa điều khiển, quan trắc và truyền tin”. Không giống nhƣ các máy tính đa chức năng, hệ thống nhúng đƣợc thiết kế để thực hiện một chức năng chuyên biệt nào đó. Nó có đặc điểm là hoạt động ổn định và có tính năng tự động hóa cao. Sau đây là một số ví dụ điển hình về hệ thống nhúng: Các hệ thống dẫn đƣờng trong không lƣu, hệ thống định vị toàn cầu, vệ tinh.
Các thiết bị gia dụng: tủ lạnh, lò vi sóng, lò nƣớng. Các thiết bị kết nối mạng: router, hub, gateway. Các thiết bị văn phòng: máy photocopy, máy fax, máy in, máy scan. Các thiết bị y tế: máy thẩm thấu, máy điều hòa nhịp tim.
Các máy trả lời tự động. Dây chuyền sản xuất tự động trong công nghiệp, robots.1: Mẫu xe trong cuộc thi Micom Car Rally (chip Renesas H8) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.2: Một số hệ thống nhúng thông dụng nhƣ robot, máy in và điện thoại 2. Hệ thời gian thực Thời gian thực rất khó định nghĩa chính xác. Thông thƣờng, trong các bài toán điều khiển hay gặp thuật ngữ “thời gian thực”.
Vậy thời gian thực nên đƣợc hiểu nhƣ thế nào cho đúng? Thời gian thực là yêu cầu khắt khe về sự ràng buộc thời gian, có nghĩa là: Các yêu cầu của hệ thống phải đảm bảo thoả mãn các hành vi của hệ thống đƣợc thực hiện đúng trong khung thời gian cho trƣớc hoàn toàn xác định. Khung thời gian này đƣợc xác định bởi yêu cầu của hệ thống. Về cơ bản, thời gian thực đƣợc phân ra thành hai loại là thời gian thực cứng (hard real-time) và thời gian thực mềm (soft real-time). Theo [1], hai loại thời gian thực đƣợc định nghĩa nhƣ sau: Thời gian thực cứng là khi hệ thống hoạt động với yêu cầu thỏa mãn sự ràng buộc trong khung thời gian cứng tức là nếu vi phạm thì sẽ dẫn đến hoạt động của toàn hệ thống bị sai hoặc phá hủy.
Thời gian thực mềm là khi hệ thống hoạt động với yêu cầu thoản mãn ràng buộc trong khung thời gian mềm, nếu vi phạm và sai lệch nằm trong khoảng cho phép thì hệ thống vẫn có thể hoạt động đƣợc và chấp nhận đƣợc. Ví dụ với hệ thời gian thực cứng: Máy hỗ trợ nhịp tim cho bệnh nhân khi phẫu thuật. Thuật toán điều khiển phụ thuộc vào thời gian nhịp tim của ngƣời bệnh, nếu thời gian này bị trễ thì tính mạng của ngƣời bệnh sẽ gặp nguy hiểm. Ví dụ với hệ thời gian thực mềm: Cây rút tiền tự động ATM.
Khi ta đƣa thẻ ATM vào máy, có thể do nghẽn mạng mà việc rút tiền bị trễ vài giây thậm chí vài phút thì ta vẫn có thể kiên nhẫn chờ đợi mà không gây thiệt hại gì cho ngƣời rút tiền. Các lĩnh vực ứng dụng của hệ thống nhúng: Ngày nay, có rất nhiều các ứng dụng của hệ thống nhúng đang đƣợc sử dụng và sẽ tiếp tục tăng nhanh trong tƣơng lai. Một số lĩnh vực và sản phẩm thị trƣờng của các hệ thống nhúng có thể đƣợc nhóm nhƣ sau: Các thiết bị điều khiển Lĩnh vực truyền thông Thiết bị y tế LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 14 Hệ thống nhà thông minh Rô bốt Ô tô, tàu điện 2. Cấu trúc phần cứng hệ thống nhúng 2.
Các thành phần cơ bản 2. Đơn vị xử lý trung tâm (CPU) Hình 2.3:Cấu trúc CPU CPU là viết tắt của chữ “Central Processing Unit”. Nó là đơn vị xử lý trung tâm đóng vai trò nhƣ bộ não chịu trách nhiệm thực thi các phép tính và thực hiện các lệnh. CPU là một mạch tích hợp phức tạp gồm hàng triệu transitor trên một bảng mạch nhỏ.
Bộ xử lý trung tâm bao gồm đơn vị logic toán học ALU (Arthimetic Logic Unit), bộ giải mã (decoder), bộ tuần tự (sequencer) và các thanh ghi. Trong tài liệu [1], cơ chế làm việc của CPU đƣợc giải thích nhƣ sau: Bộ giải mã chuyển đổi các lệnh lƣu trữ ở trong bộ mã chƣơng trình thành các mã mà ALU có thể hiểu đƣợc và thực thi. Bộ tuần tự có nhiệm vụ quản lý dòng dữ liệu trao đổi qua bus dữ liệu của vi xử lý. Các thanh ghi đƣợc sử dụng để CPU lƣu trữ tạm thời các dữ liệu chính cho việc thực thi các lệnh và chúng có thể thay đổi nội dung trong quá trình hoạt động của ALU.
Hầu hết các thanh ghi của vi xử lý đều là các bộ nhớ đƣợc tham chiếu và hội nhập với khu vực bộ nhớ và có thể đƣợc sử dụng nhƣ bất kỳ khu vực nhớ khác. Bộ nhớ Bộ nhớ là một yêu cầu tài nguyên quan trọng không chỉ trong hệ thống nhúng mà trong mọi hệ thống khác. Ngay cả hệ thống con ngƣời cũng cần bộ nhớ. Về kiến LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 15 trúc bộ nhớ đƣợc chia làm hai loại cơ bản là kiến trúc bộ nhớ Von Neumann và Havard.
Kiến trúc bộ nhớ von Neumann và Havard đƣợc biểu diễn nhƣ trong hình 2.4: Kiến trúc bộ nhớ Von Neumann và Havard Kiến trúc Von Neumann không phân biệt vùng chứa dữ liệu và mã chƣơng trình. Chúng đều đƣợc truy xuất trên cùng một đƣờng.