Đối với các ứng dụng đơn luồng, tôi muốn sử dụng sơ đồ lớp để có cái nhìn tổng quan về kiến trúc của ứng dụng đó. Tuy nhiên, loại sơ đồ này không hữu ích khi cố gắng hiểu các ứng dụng đa luồng / đồng thời, vì các phiên bản khác nhau của một lớp "sống" trên các luồng khác nhau (có nghĩa là việc truy cập một thể hiện chỉ được lưu từ một ứng dụng chủ đề nó sống trên). Do đó, các liên kết giữa các lớp không nhất thiết có nghĩa là tôi có thể gọi các phương thức trên các đối tượng đó, nhưng thay vào đó tôi phải thực hiện cuộc gọi đó trên luồng của đối tượng đích.
Hầu hết các tài liệu tôi đã tìm hiểu về chủ đề như Thiết kế đồng thời, phân tán và ứng dụng thời gian thực với UML của Hassan Gomaa có một số ý tưởng hay, chẳng hạn như vẽ ranh giới luồng vào sơ đồ đối tượng, nhưng nhìn chung có vẻ hơi hàn lâm và khó hiểu thực sự hữu ích
Tôi không muốn sử dụng các sơ đồ này như một chế độ xem cấp cao của miền vấn đề, mà là mô tả chi tiết về các lớp / đối tượng của tôi, các tương tác của chúng và các giới hạn do ranh giới luồng tôi đã đề cập ở trên.
Do đó tôi muốn biết:
- Những loại sơ đồ nào bạn thấy hữu ích nhất trong việc hiểu các ứng dụng đa luồng?
- Có bất kỳ phần mở rộng nào cho UML cổ điển có tính đến đặc thù của các ứng dụng đa luồng không, ví dụ như thông qua các chú thích minh họa rằng
- một số đối tượng có thể sống trong một luồng nhất định trong khi các đối tượng khác không có ái lực luồng;
- một số trường của một đối tượng có thể được đọc từ bất kỳ chủ đề nào, nhưng chỉ được viết từ một;
- một số phương thức là đồng bộ và trả về một kết quả trong khi các phương thức khác không đồng bộ nhận các yêu cầu được xếp hàng và trả về kết quả chẳng hạn thông qua một cuộc gọi lại trên một luồng khác.