Hướng dẫn viết đặc tả thiết kế qua một dự án nhúng đơn giản

Việc lên quy trình thiết kế và phát triển cho một hệ thống là các bước vô cùng quan trọng, đòi hỏi những người phát triển cần phải thực hiện trước khi bắt tay vào việc thi công. Với hệ thống nhúng nói riêng, dù người phát triển tiếp cận theo cách nào thì các dự án nhúng cũng phải trải qua các bước sau:

  • Xác định yêu cầu (Requirements Definition)
  • Đặc tả hệ thống (System Specifications)
  • Thiết kế hệ thống (System Design)
  • Thi công (Prototyping)
  • Kiểm thử (Testing)
  • Bảo trì (Maintenance)

Trong bài viết này mình sẽ hướng dẫn các bạn cách xác định và làm rõ yêu cầu một hệ thống nhúng, lên đặc tả và thiết kế hệ thống đó dựa trên các kinh nghiệm thực tế của mình. Đồng thời mình sẽ giới thiệu một dự án quan trắc môi trường đơn giản để các bạn có thể hình dung cách viết đặc tả thiết kế một cách rõ nhất.

1. Xác định yêu cầu

Mục tiêu của bước xác định yêu cầu là thu thập thông tin về hệ thống và xác định những tính năng cần thiết ở hệ thống. Để xác định được các yêu cầu của khách hàng về hệ thống các bạn cần trả lời một số câu hỏi sau:

  • Hệ thống này được dùng để làm gì? 
  • Các thành phần nào tác động đến đầu vào hệ thống?
  • Đầu ra của hệ thống sẽ tác động đến những nhân tố bên ngoài nào?
  • Môi trường hoạt động của hệ thống như thế nào? Đặc điểm kỹ thuật của môi trường chứa thiết bị?
  • Cách sử dụng hệ thống như thế nào?

Chúng ta cùng phân tích một dự án quan trắc mực nước sông dưới đây:

Thiết kế một thiết bị quan trắc môi trường đo mực nước sông tại các khu vực ven sông tại thành phố Đà Nẵng đáp ứng các yêu cầu sau: 

  • Giám sát mực nước sông. 
  • Sử dụng nguồn năng lượng mặt trời để cấp năng lượng cho hệ thống hoạt động.
  • Giám sát điện áp cung cấp cho hệ thống.
  • Giám sát trạng thái hoạt động của cảm biến đo.
  • Tiết kiệm năng lượng.
  • Cho phép người quản lý thực hiện khởi động lại hệ thống từ xa.

Hình ảnh mang tính chất minh họa

Ở bước này cần có sự phối hợp giữa bên phát triển và bên khách hàng để làm rõ các vấn đề cần giải quyết. Ví dụ:

  • Thời gian định kỳ cập nhật các giá trị mực nước sông, điện áp cung cấp, trạng thái của cảm biến là bao lâu một lần?
  • Các dữ liệu đo được sẽ được gửi đến đâu? Server của bên nào?
  • Các dữ liệu này sẽ được hiển thị thông qua ứng dụng nào? Website hay Mobile App?
  • Người quản lý thực hiện khởi động lại hệ thống từ xa thông qua phương thức nào?
  • Vị trí lắp đặt của thiết bị như thế nào?
  • Độ chính xác của hệ thống như thế nào?

2. Đặc tả yêu cầu hệ thống

Sau khi xác định và làm rõ các yêu cầu liên quan đến hệ thống, chúng ta cùng xác định đặc tả của các nhân tố tác động đến hệ thống và ngược lại:

  • Các nhân tố đến từ môi trường bên ngoài (Environment)
    • Mực nước sông
    • Nguồn năng lượng mặt trời
    • Người quản lý
  • Các nhân tố bên trong hệ thống (System)
    • Thiết bị xử lý trung tâm 
    • Thiết bị kết nối Internet
    • Cảm biến đo khoảng cách
    • Acquy và bộ sạc acquy

Lưu ý: Ở bước này chúng ta không cần phải liệt kê chi tiết các loại vi điều khiển, memory, các ngoại vi bên trong vi điều khiển, các phần mềm sử dụng… Việc bắt tay vào thực hiện code hoặc vẽ sơ đồ logic trong giai đoạn này có thể dẫn đến lỗi dự án.

Tiếp theo,  các bạn mới tiếp tục phân tích đặc điểm của các nhân tố trong và ngoài hệ thống:

Các nhân tố đầu vào (System Input) của hệ thống này bao gồm:

  • Khoảng cách đo được từ cảm biến đến bề mặt nước sông. Tùy vào điều kiện thực tế mà chúng ta chọn loại cảm biến phù hợp. Ví dụ nếu nước sông ở địa điểm đo đạc luôn ở trạng thái cạn thì ta nên chọn cảm biến có khoảng cách đo lớn và đặt ở vị trí phù hợp. Một số thông số cần xem xét khi lựa chọn cảm biến:
    • Nguồn cung cấp
    • Khoảng cách đo
    • Công suất tiêu thụ
    • Độ sai số
    • Độ dài dây dẫn
  • Nguồn năng lượng mặt trời. Một số thông số cần xem xét khi lựa chọn tấm pin NLMT:
    • Kích thước
    • Công suất
  • Tin nhắn do người quản lý gửi đến hệ thống để thực hiện khởi động lại.

Các nhân tố đầu ra (System Output) của hệ thống này chính là các dữ liệu thu thập và đo đạc.

  • Định dạng dữ liệu
  • Đơn vị đo
  • Trạng thái hiện tại của cảm biến

Nếu hệ thống của các bạn có tích hợp thêm các chức năng cảnh báo thì nhân tố đầu ra sẽ là các còi cảnh báo, LED báo hiệu,…

3. Thiết kế hệ thống

Trước khi bước vào giai đoạn thiết kế hệ thống, chúng ta cần làm việc với các bên liên quan thật kỹ để cùng thống nhất phương án, không bắt đầu thiết kế cho đến khi các thông số kỹ thuật đã được hoàn thành và khách hàng đã đồng ý. Sau đó những người phát triển sản phẩm sẽ lên mô tả cho các chức năng của hệ thống. 

3.1 Về phần cứng:

Dựa theo những yêu cầu của hệ thống quan trắc mực nước sông, chúng ta có sơ đồ khối như sau:

Sau khi lên sơ đồ khối mô tả kết nối giữa các thành phần phần cứng trong hệ thống, chúng ta sẽ phân tích các thông số kỹ thuật của hệ thống như:

  • Dải điện áp hoạt động.
  • Công suất tiêu thụ.
  • Các ngõ vào/ngõ ra, các thông số kỹ thuật tương ứng với các ngõ vào/ngõ ra đó.

3.2 Về phần mềm:

Trước khi đi vào phân tích và lên đặc tả cho các yêu cầu phần mềm của hệ thống, người thiết kế cần xác định những thành phần nào trong hệ thống nên được mô hình hóa. Việc mô hình hóa hệ thống sẽ giúp những người phát triển có thể hiểu, quan sát và đặc tả được cấu trúc, hành vi của hệ thống.

Có nhiều mô hình để biểu diễn đặc tả yêu cầu, ví dụ như:

– Mô hình hóa hướng chức năng:

  • Xét về góc nhìn cấu trúc tĩnh (Static Structure Perspective) chúng ta có một số mô hình phổ biến sau:
    • Mô hình thực thể – mối quan hệ (Entity Relationship Model)
    • Mô hình Class – Object
    • Mô hình cấu trúc phức hợp (Composite Structure)
  • Xét về góc nhìn hành vi hệ thống (Behavior Perspective):
    • State Machine (Finite-State Machine và InFinite-State Machine)
    • Các mô hình Activity
  • Xét về góc nhìn chức năng và luồng dữ liệu:
    • Các mô hình luồng dữ liệu (Data Flow Models)
    • Mô hình phân rã chức năng (Functional Decomposition)

– Mô hình hóa hướng đối tượng:

  • Biểu đồ ca sử dụng (Use Case Diagram)
  • Biểu đồ hoạt động (Activity Diagram)
  • Biểu đồ tuần tự (Sequence Diagram)

Với hệ thống quan trắc môi trường, mình sẽ sử dụng 2 mô hình để biểu diễn. Một là mô hình phân rã chức năng (Functional Decomposition) để xác định phạm vi hệ thống và tạo nền tảng cho thiết kế kiến trúc hệ thống. Hai là biểu đồ tuần tự (Sequence Diagram) để biểu diễn mối liên hệ giữa các đối tượng trong hệ thống và giữa các đối tượng với các tác nhân bên ngoài môi trường theo thời gian.

Mô hình phân rã chức năng

Biểu đồ tuần tự

Tùy vào dự án mà các bạn lựa chọn một hoặc nhiều mô hình hóa hệ thống cho phù hợp. Với bài viết chia sẻ cách viết đặc tả thiết kế qua một dự án đơn giản này, mình hi vọng các bạn đã nắm được các bước cần thực hiện để làm rõ yêu cầu dự án, tránh các sai sót sau này. Để hiểu rõ hơn về quy trình thực hiện một dự án các bạn đọc tài liệu tham khảo bên dưới nhé:

– Embedded Systems Design and Development

– Design and Development – Jonathan Valvano and Ramesh Yerraballi

– Requirements Engineering 

Hẹn gặp lại các bạn ở các bài chia sẻ tiếp theo!

TAPIT ARM R&D

[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]

Xem thêm Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32 tại đây.
Xem thêm Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32 tại đây.