Untuk aplikasi single-threaded saya suka menggunakan diagram kelas untuk mendapatkan gambaran arsitektur aplikasi itu. Jenis diagram ini, bagaimanapun, tidak sangat membantu ketika mencoba untuk memahami aplikasi multi-threaded / konkuren, misalnya karena contoh yang berbeda dari kelas "hidup" di utas yang berbeda (artinya mengakses sebuah instance hanya menyelamatkan dari yang satu. utas itu hidup). Akibatnya, asosiasi antara kelas tidak selalu berarti bahwa saya dapat memanggil metode pada objek-objek itu, tetapi saya harus membuat panggilan itu pada utas objek target.
Sebagian besar literatur yang saya gali pada topik seperti Merancang Aplikasi Bersamaan, Didistribusikan, dan Real-Time dengan UML oleh Hassan Gomaa punya beberapa ide bagus, seperti menggambar batas-batas utas ke dalam diagram objek, tetapi secara keseluruhan tampak agak terlalu akademis dan sulit untuk dikerjakan. sangat berguna.
Saya tidak ingin menggunakan diagram ini sebagai tampilan tingkat tinggi dari domain masalah, melainkan sebagai uraian terperinci tentang kelas / objek saya, interaksinya, dan keterbatasannya karena batasan-batasan thread yang saya sebutkan di atas.
Karena itu saya ingin tahu:
- Jenis diagram apa yang menurut Anda paling membantu dalam memahami aplikasi multi-utas?
- Adakah ekstensi untuk UML klasik yang memperhitungkan kekhasan aplikasi multi-ulir, misalnya melalui anotasi yang menggambarkan bahwa
- beberapa objek mungkin hidup di utas tertentu sementara yang lain tidak memiliki afinitas utas;
- beberapa bidang objek dapat dibaca dari utas apa pun, tetapi ditulis hanya dari satu utas;
- beberapa metode sinkron dan mengembalikan hasil sementara yang lain tidak sinkron yang membuat permintaan antri dan mengembalikan hasil misalnya melalui panggilan balik pada utas yang berbeda.