Bir UML etkinlik diyagramında iç içe geçmiş eylemleri nasıl temsil edebilirim?


16

Bu soru çok benzer bu bir , ama cevap ihtiyaçlarımı eşleşmiyor. Belirli bir UML aracına (Papirüs) odaklanırken, sorum UML hakkında daha genel.

Bir etkinlik diyagramında iç içe geçmiş bir eylemi temsil etmek istiyorum , ancak bunu yapmanın ortak yolunun ne olduğunu bilmiyorum. Fikir, diğer eylemlerle aynı kapsamda bir eylemin olması, ancak yürütülmesinde daha karmaşık olmasıdır. Bu eylemi diğerleriyle aynı seviyede göstermeye devam ederken, yürütülmesi hakkında daha fazla ayrıntı göstermek istiyorum.

Bir çeşit " eve dönüş " etkinliğini gösteren bir etkinlik diyagramı olan aşağıdaki örnekte , iç içe eylemler Pet the cateylemdedir. Bu diyagramda başka bir potansiyel hata olduğunu unutmayın, sorunun sonundaki hataya bakın.

Sonunda eve döndüm

Yapılandırılmış düğümü kullandım, ancak bunun doğru yol olduğundan emin değilim, bu yüzden soru. Bir statik çizelgede eşdeğer bileşik bir durum olurdu, ancak bileşik bir eylem hakkında hiçbir şey bulamıyorum. Yapısal düğüme gelince, onunla ilgili birkaç belgeyi okuduktan sonra hala nasıl kullanılması gerektiğini gerçekten anlamıyorum, bu yüzden bu diyagramda tamamen yanlış olabilirim.

Ayrıca, aşağıdaki resimde olduğu gibi, trident sembolü ile başka bir alt faaliyete başvurma olasılığının olduğunu biliyorum, ancak aynı diyagramdaki tüm bilgileri istediğim için ihtiyaçlarımla eşleşmiyor (böylece yazdırabilirim) bilgi kaybı olmadan):

Trident alt etkinliği

Peki böyle iç içe bir eylemi temsil etmenin standart yolu nedir? Standart olarak, yaygın olarak görülen ve mümkünse UML tasarım araçlarının çoğunda yapılabilen geçerli UML'yi kastediyorum.

İlgisiz hata: Diyagramlarımda başka bir şey yanlış, aynı eyleme ( Scratch behind the ears) gelen oklar eyleme girmeden önce birleştirme düğümüne gitmelidir. JOT'un bu alıntısı dahil olmak üzere aşağıdaki yorumlara bakın .


Bunu sormadın, ama "Kulakların arkasında çizik" eyleminin asla yürütülemeyeceğini belirtmek istiyorum. Bunun neden doğru olduğunu bilen var mı?
Jim L.

Bilmiyorum ama umarım bu sadece kedinin öfkesidir, çünkü sonunda patronuma verdiğim şema şuna benzer: /
Tim

Bunun nedeni, her iki yoldan da bir tokenin başlaması için eyleme sunulması gerektiğidir, ki bu hiç gerçekleşmeyecek bir başkasından geldiğinden imkansızdır.
Jim L.

Bu duruma girmek için her iki koşulun da doğru olması gerektiğini mi söylüyorsunuz? O zaman ifade etmek istediğim şeyi ifade etmenin yolu ne olurdu? Devlet girişinden önce birleşen bir elmas düğüm?
Tim

Devletten değil, bir eylemden bahsediyoruz; ancak evet, bu sorunu gidermek için birleştirme gerekir.
Jim L.

Yanıtlar:


23

Her ikisi de "standart". UML teknik özelliklerine göre ilk resim

Yapılandırılmış Etkinlik Düğümleri

StructuredActivityNode, aynı zamanda bir ActivityGroup (bkz. Alt madde 15.6) olan ve davranışı, içerdiği ActivityNodes ve ActivityEdges tarafından belirtilen bir Eylemdir. Diğer ActivityGroup türlerinden farklı olarak, bir StructuredActivityNode içerdiği ActivityNodes ve ActivityEdges'e sahiptir ve bu nedenle bir düğüm veya kenar yalnızca bir StructuredActivityNode içinde doğrudan bulunabilir. StructuredActivityNodes, yuvalanmış olabilir (bir Action olarak bir StructuredActivityNode olarak da bir ActivityNode'dur), bu nedenle, bir kenar veya düğüm, bir dizi iç içe YapısalAktivite Düğümü'nde dolaylı olarak bulunabilir.

Faaliyet Grupları

ActivityGoups, ActivityNodes ve ActivityEdges için bir gruplama yapısıdır. Düğümler ve kenarlar birden fazla gruba ait olabilir. Bu alt madde, ActivityGroups adlı iki somut türü açıklamaktadır: ActivityPartitions ve InterruptibleActivityRegions. StructuredActivityNodes üçüncü bir ActivityGroup türüdür, ancak bunlar aynı zamanda Eylemler'dir ve Eylemler ile ilgili Madde 16'nın alt maddesi 16.11'de tartışılmıştır.

2. resim

Çağrı Eylemleri

Bir InvocationAction, bir Davranışın çağrılmasıyla doğrudan veya dolaylı olarak sonuçlanan bir Eylemdir (bkz. Alt madde 13.2). InvocationActions, İşlemleri veya Davranışları çağırmak ve daha önce başlatılmış olan Davranışları başlatmak için CallActions'ı içerir. Ek InvocationActions türleri, sinyallerin ve diğer nesnelerin hedefli gönderilmesine ve mevcut alıcılara sinyal yayınlama yeteneğine izin verir.

Her iki durum arasındaki temel fark yeniden kullanımdır. İlk etapta, tek bir yerde (sizin Pet the cat) bazı karmaşıklıklarınız varken, ikincisi, birden fazla yerde belirli bir eylemi (yeniden) kullandığınız zamandır. Ancak, invokasyon varyantını sadece tek bir kullanım için olsa bile kullanma eğilimindeyim. Burada uygun eylemin ayrıntılarını göstermek için bir kompozit diyagramı (EA'da dbl-click üzerinde açılır) eklerim. Ana akış sadece genel bakışı gösterir ve ayrıntılara ihtiyaç duyulursa, sadece bir çift tıklamayla uzaktadır.

Şimdi, EA'da bir bileşik diyagram oluşturmak (tekrar) farklı. Paket düzeyinde bir AD oluşturmanız ve bunu çağırma öğesine sürüklemeniz gerekir. Şimdi, bunu çift tıkladığınızda gömülü diyagram açılır.


Cevabınız için teşekkür ederim. Hangi olasılığı kullandığınızda daha fazla ayrıntı verebilir misiniz? UML spesifikasyonunun okunması oldukça zor, kullanıcı tarafında.
Tim

Hiçbir yatak-zaman ders :-) Ben biraz daha açıklama eklemek çalışacağım.
qwerty_so

Başka bir EAUI üzerine bir açıklama ile bir güncelleme yaptım.
qwerty_so
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.