Bagaimana cara saya merepresentasikan tindakan bersarang dalam diagram aktivitas UML?

16

Pertanyaan ini sangat mirip dengan yang ini , tetapi jawabannya tidak sesuai dengan kebutuhan saya. Ini berfokus pada alat UML tertentu (Papyrus) sedangkan pertanyaan saya lebih umum tentang UML.

Saya ingin mewakili tindakan bersarang dalam diagram aktivitas , tetapi saya tidak tahu apa cara yang umum untuk melakukannya. Idenya adalah bahwa ada tindakan dengan cakupan yang sama dari tindakan lain, tetapi lebih kompleks dalam pelaksanaannya. Saya ingin menunjukkan detail lebih lanjut tentang eksekusi sementara masih bisa menunjukkan tindakan ini pada tingkat yang sama dari yang lain.

Pada contoh di bawah ini, yang merupakan diagram aktivitas yang menunjukkan beberapa jenis aktivitas " kembali ke rumah ", tindakan bertingkat ada dalam Pet the cattindakan. Perhatikan bahwa ada kesalahan potensial lain dalam diagram ini, lihat errata di akhir pertanyaan.

Akhirnya kembali ke rumah

Saya telah menggunakan node terstruktur, tapi saya tidak yakin itu cara yang benar, maka pertanyaannya. Dalam statechart, padanannya adalah keadaan komposit, tapi saya tidak bisa menemukan apa pun tentang tindakan gabungan. Mengenai node terstruktur, setelah membaca beberapa dokumen tentang hal itu saya masih belum benar-benar mengerti bagaimana seharusnya digunakan, jadi saya mungkin benar-benar salah dengan diagram ini.

Saya juga tahu bahwa ada kemungkinan untuk merujuk ke sub-aktivitas lain dengan simbol trisula, seperti pada gambar di bawah, tetapi tidak sesuai dengan kebutuhan saya karena saya ingin seluruh informasi pada diagram yang sama (sehingga saya dapat mencetak tanpa kehilangan informasi):

Sub-kegiatan trisula

Jadi apa cara standar untuk merepresentasikan aksi bersarang seperti itu? Secara standar, maksud saya UML yang valid, umum dilihat dan jika mungkin dapat dilakukan pada sebagian besar alat desain UML.

Errata yang tidak terkait: Hal lain yang salah dalam diagram saya, panah yang datang ke tindakan yang sama ( Scratch behind the ears) harus pergi ke simpul penggabungan sebelum memasukkan tindakan. Lihat komentar di bawah ini, termasuk kutipan JOT ini .

Tim
sumber
Anda tidak bertanya tentang hal ini, tetapi saya ingin menunjukkan bahwa tindakan "Menggaruk di belakang telinga" tidak akan pernah bisa dilakukan. Adakah yang tahu mengapa ini benar?
Jim L.
Yah saya tidak tahu tapi saya harap itu hanya kesabaran kucing, karena diagram yang akhirnya saya berikan kepada bos saya terlihat seperti ini: /
Tim
Alasannya adalah bahwa token dari kedua jalur harus ditawarkan kepada tindakan untuk memulainya, yang tidak mungkin, karena seseorang berasal dari yang lain yang tidak akan pernah terjadi.
Jim L.
@ JimL. Apakah maksud Anda kedua kondisi tersebut harus benar untuk memasuki kondisi ini? Lalu bagaimana cara mengekspresikan apa yang ingin saya ungkapkan? Node penggabungan berlian sebelum pintu masuk negara bagian?
Tim
Kita berbicara tentang suatu tindakan, bukan suatu keadaan; tapi ya, gabungan diperlukan untuk memperbaiki masalah ini.
Jim L.

Jawaban:

23

Keduanya "standar". Gambar pertama sesuai spesifikasi UML adalah

Node Kegiatan Terstruktur

StructuredActivityNode adalah Tindakan yang juga merupakan ActivityGroup (lihat sub klausul 15.6) dan yang perilakunya ditentukan oleh ActivityNodes dan ActivityEdges yang dikandungnya. Tidak seperti jenis ActivityGroup lainnya, StructuredActivityNode memiliki ActivityNodes dan ActivityEdges yang dikandungnya, sehingga simpul atau tepi hanya dapat secara langsung terkandung dalam satu StructuredActivityNode. StructuredActivityNodes dapat bersarang (sebagai StructuredActivityNode, sebagai Action, juga merupakan ActivityNode), namun demikian, tepi atau simpul dapat secara tidak langsung terkandung dalam sejumlah StructuredActivityNodes yang bersarang.

Grup Kegiatan

ActivityGoups adalah konstruksi pengelompokan untuk ActivityNodes dan ActivityEdges. Node dan edge dapat dimiliki lebih dari satu grup. Sub ayat ini menjelaskan dua jenis konkret dari ActivityGroups, ActivityPartitions, dan InterruptibleActivityRegions. StructuredActivityNodes adalah jenis ketiga dari ActivityGroup, tetapi mereka juga Tindakan dan dibahas dalam sub-klausa 16.11 dari Klausul 16 tentang Tindakan.

Gambar ke-2 adalah

Tindakan Doa

InvocationAction adalah suatu Tindakan yang menghasilkan, secara langsung atau tidak langsung, dalam permohonan suatu Perilaku (lihat sub ayat 13.2). InvocationActions termasuk CallActions untuk memanggil Operasi atau Perilaku dan untuk memulai Perilaku yang sebelumnya telah dipakai sebelumnya. Jenis tambahan InvocationActions memungkinkan pengiriman sinyal dan objek lain yang ditargetkan serta kemampuan untuk menyiarkan sinyal ke penerima yang tersedia.

Perbedaan utama antara kedua kasus adalah penggunaan kembali. Sementara di tempat pertama Anda hanya memiliki beberapa kompleksitas di satu tempat (Anda Pet the cat) yang kedua adalah ketika Anda (kembali) menggunakan tindakan tertentu di banyak tempat. Namun, saya cenderung menggunakan varian doa bahkan jika itu hanya untuk satu penggunaan. Di sini saya menambahkan diagram komposit (yang dalam EA terbuka pada dbl-klik) untuk menampilkan detail tindakan yang sesuai. Alur utama hanya menunjukkan ikhtisar dan jika diperlukan, mereka tinggal klik dbl.

Sekarang, membuat diagram komposit dalam EA (sekali lagi) berbeda. Anda perlu membuat AD pada tingkat paket dan kemudian seret ini ke elemen doa. Sekarang, ketika Anda mengklik-dbl itu, diagram tertanam akan terbuka.

qwerty_so
sumber
Terima kasih atas jawaban Anda. Bisakah Anda memberikan rincian lebih lanjut tentang kapan Anda menggunakan kemungkinan yang mana? Saya menemukan spesifikasi UML cukup sulit dibaca, di sisi pengguna.
Tim
Ini bukan kuliah waktu tidur :-) Saya akan mencoba menambahkan beberapa penjelasan.
qwerty_so
Saya membuat pembaruan dengan komentar di EAUI lain.
qwerty_so