Kullanım senaryosuna dahil etme ve genişletme arasındaki fark nedir?


377

Arasındaki fark nedir includeve extendbir de kullanma durumu diyagramı ?


Kullanım senaryosu modellerinde yeniden kullanım için nasıl kullanılabileceklerini ve nasıl farklılaştıklarını açıklamak için Scott Ambler'den daha iyi bir iş yapmam. Bunun yerine onu başka sözcüklerle, ben okumayı öneririm Kullanımı-Vaka Modellerinde Yeniden kullanım: & lt; & lt; uzatmak & gt; & gt ;, & lt; & lt; & gt ;, ve devralma; & gt içerir .
Pascal Thivent

7
Gerçekten, bu soru programlama ile ilgili ...
Pascal Thivent

35
@closers: Bu ise geçerli bir soru.
Henk Holterman

82
Kısaca -> include = Madatory, uzat = İsteğe bağlı
Thein

2
@Megamind 'expand = İsteğe bağlı' tamamen doğru değil ... Bu örnek bağlantıya bakın
Shanaka Jayalath

Yanıtlar:


262

Genişlet , bir kullanım senaryosu başka bir birinci sınıf kullanım senaryosuna adımlar eklediğinde kullanılır.

Örneğin, "Para Çekme" nin Otomatik Para Çekme Makinesi (ATM) için bir kullanım durumu olduğunu düşünün. "Değerlendirme Ücreti", Para Çekme Parasını uzatacak ve ATM kullanıcısı ATM'nin sahibi olduğu kurumda banka kullanmadığında somutlaştırılan koşullu "uzatma noktasını" açıklayacaktır. Temel "Para Çekme" kullanım durumunun, uzantı olmadan kendi başına durduğuna dikkat edin.

Include , birden çok kullanım durumunda çoğaltılan kullanım örneği parçalarını çıkarmak için kullanılır . Birlikte verilen kullanım durumu tek başına duramaz ve dahil edilen kullanım kutusu olmadan orijinal kullanım durumu tamamlanmaz. Bu çok az kullanılmalıdır ve sadece çoğaltmanın önemli olduğu ve tasarımla (tesadüf yerine) var olduğu durumlarda kullanılmalıdır.

Örneğin, her ATM kullanım durumunun başında gerçekleşen olayların akışı (kullanıcı ATM kartını koyduğunda, PIN kodunu girdiğinde ve ana menü gösterildiğinde) dahil etme için iyi bir aday olacaktır.


1
Include is used to extract use case fragments that are duplicated in multiple use casesNe bu adımda ayıklanır: puts in their ATM card, enters their PIN, and is shown the main menu? Teşekkürler
Blaze Tama

2
Ben için iyi bir aday olma "login" adımlarını içeren katılmıyorum gerekir bulunmaktadır . Bu adımlar bir kullanım senaryosu oluşturur ve kendi kullanım koşullarıyla post-koşullar -> ön koşullar ile ilişkilendirilmelidir.
Bruno Brant

22
@Bruno - Hiç kimse bir ATM makinesine giriş yapmaz ve sadece mutlu olur. Somut kullanım durumları aktöre bağımsız bir değer sağlamalıdır, aksi takdirde sadece işlevsel bir ayrışmada işlev görürler.
Doug Knesek

@Blaze - Oturum açma akışının bu adımları da içeren tüm bölümleri.
Doug Knesek

1
Değerlendirme Ücreti nasıl bir UC olabilir? Bu bir senaryoda koşullu bir akıştır. Hiç bir katma değer değil. Tam tersi.
qwerty_so

113

Bu çekişmeli olabilir ama “içerme her zaman vardır ve bazen uzanır” fiili anlam olarak neredeyse üstesinden gelen çok yaygın bir yanlış anlamadır. İşte doğru bir yaklaşım (benim görüşüme göre ve Jacobson, Fowler, Larmen ve diğer 10 referansa karşı kontrol edildi).

İlişkiler bağımlılıktır

Kullanım durumu ilişkilerini dahil etmenin ve genişletmenin anahtarı, UML'nin geri kalanında olduğu gibi, kullanım örnekleri arasındaki noktalı okun bağımlılık ilişkisi olduğunun farkına varmaktır. Kullanım durumu rollerine atıfta bulunmak için 'temel', 'dahil' ve 'genişletme' terimlerini kullanacağım.

Dahil etmek

Temel kullanım durumu, birlikte verilen kullanım durumlarına bağlıdır; bunlar olmadan, temel kullanım durumu eksiktir, çünkü dahil edilen kullanım durumları her zaman VEYA bazen gerçekleşebilecek etkileşimin alt dizilerini temsil eder. (Bu, bununla ilgili popüler bir yanlış anlamaya aykırıdır, kullanım durumunuzun önerdiği şey ana senaryoda her zaman olur ve bazen alternatif akışlarda gerçekleşir, yalnızca ana senaryo olarak neyi seçtiğinize bağlıdır; kullanım senaryoları farklı bir akışı temsil etmek için kolayca yeniden yapılandırılabilir ana senaryo olarak ve bu önemli olmamalıdır).

Tek yönlü bağımlılığın en iyi uygulamasında, temel kullanım durumu dahil edilen kullanım durumunu bilir (ve buna atıfta bulunur), ancak dahil edilen kullanım durumu temel kullanım durumu hakkında 'bilmemelidir'. Bu nedenle, dahil edilen kullanım durumları şunlar olabilir: a) kendi başlarına temel kullanım durumları ve b) birkaç temel kullanım vakası tarafından paylaşılır.

uzatmak

Genişleyen kullanım durumu, temel kullanım durumuna bağlıdır; temel kullanım durumu tarafından açıklanan davranışı tam anlamıyla genişletir. Temel kullanım durumu, genişletilmiş kullanım durumunun ek işlevselliği olmadan, kendi başına tamamen işlevsel bir kullanım durumu olmalıdır ('dahil olanlar da dahil).

Kullanım durumlarını genişletmek çeşitli durumlarda kullanılabilir:

  1. Temel kullanım durumu, bir projenin “olması gerekir” işlevselliğini, genişleyen kullanım durumu ise isteğe bağlı (yapması gereken / istemesi / istemesi) davranışı temsil eder. Bu, isteğe bağlı terimin alakalı olduğu yerdir - bazen temel kullanım senaryosu dizisinin bir parçası olarak çalışıp çalışmadığından isteğe bağlı olarak üretilip üretilmeyeceği isteğe bağlıdır.
  2. Aşama 1'de, bu noktada gereksinimleri karşılayan temel kullanım durumunu sunabilirsiniz ve aşama 2, genişleyen kullanım durumu tarafından açıklanan ek işlevsellik katacaktır. Bu, her zaman veya bazen faz 2 iletildikten sonra gerçekleştirilen sekansları içerebilir (yine popüler yanılgının aksine).
  3. Özellikle kendi alternatif akışlarıyla 'istisnai' karmaşık davranışı temsil ettiklerinde, baz kullanım durumunun alt dizilerini çıkarmak için kullanılabilir.

Dikkate alınması gereken önemli bir husus, genişletilen kullanım durumunun, dahil edilen kullanım durumunun yaptığı gibi tek bir yerde değil, taban kullanım durumunun akışındaki çeşitli yerlere davranış ekleyebilmesidir. Bu nedenle, genişleyen bir kullanım durumunun, birden fazla temel kullanım durumunun genişletilmesi için uygun olması muhtemel değildir.

Bağımlılık ile ilgili olarak, genişleyen kullanım durumu, taban kullanım durumuna bağlıdır ve yine tek yönlü bir bağımlılıktır, yani taban kullanım durumu, sekanstaki genişleyen kullanım durumuna herhangi bir referans gerektirmez. Bu, uzantı noktalarını gösteremeyeceğiniz veya şablonun başka bir yerinde genişletilen kullanım durumuna bir x-ref ekleyemeyeceğiniz anlamına gelmez, ancak temel kullanım durumu, genişleyen kullanım durumu olmadan çalışabilmelidir.

ÖZET

Umarım “içerme her zaman vardır, bazen uzanır” gibi ortak yanlış anlama ya yanlış ya da en iyi ihtimalle basittir. Bu kavram, yanlış kavramın sunduğu okların yönlülüğü ile ilgili tüm konuları düşünürseniz daha mantıklıdır - doğru modelde sadece bağımlılıktır ve kullanım senaryosu içeriğini yeniden düzenlerseniz potansiyel olarak değişmez.


3
bu iddia için bazı referanslar ekleyebilirseniz harika olurdu
mibollma

1
Üzgünüz, yazılım bu şekilde bir UML diyagramı oluşturmak, son durumda her zaman ihtiyaç duyulan yeni işlevsellik ekleyen iterasyonlardan geçerken, gereksiz yere kafa karıştırıcı ve karmaşık olacaktır. Doug Knesek'in yaklaşımını tercih ediyorum, gereksiz karışıklık veya karmaşıklık yaratmazken anlaşılması ve birlikte çalışılması çok daha kolay.
BigMac66

1
Kullanım Durumu örnekleri ile ilgili olarak "içerme her zaman vardır ve bazen de kapsam genişletme" konusunda meydan okuma hakkınız olsa da, artımlı dağıtımı desteklemek için "genişletme" anlambiliminden yararlanma seçiminiz, başkalarının "uzatmanın" artımlı dağıtım HAKKINDA olduğunu düşünmesine neden olabilir.
Doug Knesek

81

Bunu sık sık ikisini hatırlamak için kullanıyorum:

Benim kullanım durumum: Şehre gidiyorum.

içerir -> arabayı sür

uzanır -> benzin doldurun

"Benzini doldurun" her zaman gerekli olmayabilir, ancak isteğe bağlı olarak araçta kalan benzin miktarına göre gerekli olabilir. "Arabayı sür" bir ön koşul.


Ancak, "benzin doldur" aslında "şehre gidiyor", tersi değil, değil mi?
Petr Hudeček

1
Bence bu bakış açısına bağlı Petr. Imho "benzin doldur" aslında araba da uzatabilir.
Daniel Perník

2
Şehre gitmek ve benzin sesini doldurmak tesadüfen meydana gelebilecek tamamen alakasız iki şey gibi.
OdraEncoded

1
@OdraEncoded doğru. Benzin doldurmak şehre gitmeye bağlı değildir.
nonybrighto

57

Davranışları belgelemek için kullanım örnekleri kullanılır, örneğin bu soruyu cevaplayın.

soruya cevap ver vaka

Bir davranış, davranışa ek olmakla birlikte zorunlu olmamakla birlikte başka bir şeyi genişletir, örneğin cevabı araştırın.

Ayrıca, soruyu cevaplamaya çalışmıyorsanız cevabı araştırmanın pek mantıklı olmadığını unutmayın.

araştırma cevap uzatmak

Davranış, dahil edilen davranışın bir parçasıysa başka bir davranışa dahil edilir, örn. Yığın değişimine giriş.

yığın borsasına giriş

Açıklığa kavuşturmak için, illüstrasyon yalnızca yığın taşmasıyla burada cevap vermek istiyorsanız :) doğrudur.

Bunlar UML 2.5 sayfa 671-672'nin teknik tanımlarıdır .

Önemli noktalar olduğunu düşündüğümü vurguladım.

Uzattı

Genişlet, genişleyen UseCase'de (uzantı) , genişletilmiş UseCase'de tanımlanan davranışın genişletilmiş UseCase'de tanımlanan davranışa nasıl ve ne zaman eklenebileceğini belirten genişletilmiş UseCase'e (extendedCase) bir ilişkidir. Uzantı, genişletilmiş UseCase öğesinde tanımlanan bir veya daha fazla belirli uzantı noktasında gerçekleşir.

Genişletme, bir veya daha fazla UseCases içinde tanımlanan davranışa , muhtemelen koşullu olarak eklenmesi gereken bazı ek davranışlar olduğunda kullanılmak üzere tasarlanmıştır .

Genişletilmiş Usecase uzanan USECASE bağımsız tanımlandığı gibidir ve bağımsız olarak uzanan USECASE anlamlı olan . Öte yandan, genişleyen UseCase tipik olarak kendi başına anlamlı olması gerekmeyen davranışları tanımlar . Bunun yerine, genişleyen UseCase, belirli koşullar altında genişletilmiş UseCase'in yürütülmesini artıran bir dizi modüler davranış artışı tanımlar.

...

İçerir

Include, iki UseCas arasındaki DirectedRelationship olup, dahil edilen UseCase (ekleme) davranışının dahil edilen UseCase ( includeCase) davranışına eklendiğini gösterir . Aynı zamanda bir tür NamedElement olup kendi UseCase'i (includeCase) sahip olma bağlamında bir ada sahip olabilir. Dahil edilen UseCase, birlikte verilen UseCase çalıştırılarak üretilen değişikliklere bağlı olabilir. Dahil edilen UseCase'in davranışının tam olarak açıklanması için birlikte verilen UseCase kullanılabilir olmalıdır.

Include ilişkisi, iki veya daha fazla UseCases davranışının ortak bölümleri olduğunda kullanılmak üzere tasarlanmıştır. Bu ortak kısım daha sonra, bu kısmı ortak olan tüm temel UseCas'ler tarafından dahil edilmek üzere ayrı bir UseCase'e ekstrakte edilir . Include ilişkisinin birincil kullanımı ortak parçaların yeniden kullanılması içindir, bir temelde kalan UseCase genellikle kendi içinde tam değildir, ancak dahil edilen parçaların anlamlı olmasına bağlıdır. Bu ilişki yönüne yansır, bu da temel UseCase öğesinin eklemeye bağlı olduğunu, bunun tersi olmadığını gösterir.

...


23

Bence içerme ve genişletme niyetini anlamak önemlidir:

"İlişkisi için tasarlanmıştır dahil yeniden tarafından modellenen davranışı başka bir kullanım durumunda uzatmak ilişki içindir, oysa ekleyerek kullanım durumları varolan parçaları yanı sıra modellik opsiyonel Kullanım Durumları sistem hizmetlerini" (Overgaard ve Palmkvist,:. Desenleri ve Blueprints Addison -Wesley, 2004).


Bu bana şöyle diyor:

Include = işlevselliğin yeniden kullanımı (yani dahil edilen işlevsellik kullanılır veya sistemin başka bir yerinde kullanılabilir). Bu nedenle ekle, başka bir kullanım durumuna bağımlı olduğunu gösterir.

= Uzatır ekleme (yeniden kullanma) işlevselliği ve aynı zamanda herhangi bir isteğe bağlı özelliğe. Bu nedenle genişletmeler iki şeyden birini gösterebilir:
1. bir kullanım senaryosuna yeni özellikler / yetenekler ekleme (isteğe bağlı veya değil)
2. isteğe bağlı tüm kullanım örnekleri (mevcut veya değil).

Özet:
Include = işlevselliğin yeniden kullanımı
Extends = yeni ve / veya isteğe bağlı işlevsellik

Çoğu zaman genişletmelerin 2. kullanımını (yani isteğe bağlı işlevsellik) bulacaksınız, çünkü işlevsellik isteğe bağlı değilse, çoğu zaman bir uzantı olmak yerine kullanım senaryosunun içine yerleştirilir. En azından bu benim deneyimimdi. (Julian C, bazen bir proje 2. aşamaya girdiğinde genişletmelerin 1. kullanımını (yani yeni özellikler ekleme) gördüğünüze dikkat çeker).


23

Basitleştirmek için,

için include

  1. Temel kullanım durumu yürütüldüğünde, birlikte verilen kullanım durumu HER ZAMAN yürütülür .
  2. Temel kullanım durumu, tamamlanması için birlikte verilen kullanım durumunun tamamlanmasını gerektiriyordu.

tipik bir örnek: giriş ve doğrulama şifresi arasında

(giriş) --- << dahil >> --- > (şifreyi doğrula)

oturum açma işleminin başarılı olması için "parolayı doğrula" nın da başarılı olması gerekir.


için extend

  1. Temel kullanım durumu yürütüldüğünde, yalnızca genişletilmiş kullanım örneği yürütülür SOMETIMES
  2. Uzatılmış kullanım durumu yalnızca belirli kriterler karşılandığında gerçekleşir.

tipik bir örnek: giriş ve gösteri hata mesajı arasında (sadece bazen oldu)

(giriş) < --- << genişlet >> --- (hata mesajını göster)

"hata mesajını göster" yalnızca oturum açma işlemi başarısız olduğunda gerçekleşir.


harika bir örnek!
Pavel Durov

15

Bence msdn'nin burada anlattıklarını anlamak oldukça kolay.

Dahil et [5]

Dahil olan bir kullanım senaryosu, dahil olanı çağırır veya çağırır. Ekleme, kullanım senaryosunun daha küçük adımlara nasıl girdiğini göstermek için kullanılır. Birlikte verilen kullanım durumu ok ucu ucundadır.

Genişlet [6]

Bu arada, genişleyen bir kullanım durumu, genişletilmiş kullanım durumuna hedefler ve adımlar ekler. Uzantılar sadece belirli koşullar altında çalışır. Genişletilmiş kullanım durumu ok ucu ucundadır.

resim açıklamasını buraya girin


En azından cevabınızdaki özü alıntılamalısınız, sadece bir cevaba link eklemeyin. Üstelik referans verdiğiniz açıklama da gerçekten iyi ya da kesin değil.
Geert Bellekens

Merhaba @GeertBellekens, include ve expand arasındaki farkı açıklamak için biraz ayrıntı ekledim. IMHO şemasının kendisi farkı açıkça iletir ve şema bunun için kullanılır.
Etik

Açıklamaları eklemenize sevindim, ancak yine de çok iyi veya kesin olmadıklarını düşünüyorum. İnsanlar (hatta özellikle msdn için yazıyor olsalar bile), zaten bir standartta tanımlanmış bir şey için kendi tanımlarını icat etmeyi bırakmalıdır.
Geert Bellekens

15

Bunu daha netleştirelim. KullanırızincludeBir vakanın varlığının diğerinin varlığına bağlı olduğu gerçeğini ifade etmek istediğimiz her seferinde .

ÖRNEKLER:

Bir kullanıcı, yalnızca hesabına giriş yaptıktan sonra çevrimiçi alışveriş yapabilir. Başka bir deyişle, hesabına giriş yapana kadar alışveriş yapamaz.

Malzeme yüklenmeden önce bir kullanıcı siteden indiremez. Bu yüzden, hiçbir şey yüklenmediyse indiremiyorum.

Anladın mı?

Koşullu sonuçlarla ilgilidir. Daha önce yapmamışsam bunu yapamam .

En azından, bu doğru şekilde kullandığımızı düşünüyorum Include. Dizüstü bilgisayar örneğini düşünmeye meyilliyim ve garanti yukarıdaki en inandırıcı!


1
Hakkında uzanıyor?
AlphaGoku

8

ne zaman bir usecase için önkoşullar varsa, include'a gidin.

kimlik doğrulaması, en kötü durum senaryosu olan veya isteğe bağlı olan kullanımlar için uzatın.

örnek: giriş, randevu, bilet rezervasyonu için bir kullanım durumunda bir form (kayıt veya geri bildirim formu) doldurmalısınız ...

örnek: girişinizi doğrulamak veya hesabınızda oturum açmak için bir kullanım örneği için, kimlik doğrulamanız bir zorunluluktur.Ayrıca, en kötü durum senaryolarını düşünün. uzatma oynamaya geliyor ...

Şemaları aşırı kullanmayın ve çizmeyin.

BASİT SILLY TUTUN!


6

Ayrıca UML sürümüne dikkat edin: << kullanım >> ve << içerikler >> ile << dahil >> ile değiştirildi ve << genişletme >> ile << genişletme >> VE genelleme uzun zamandır oldu .
Benim için bu genellikle yanıltıcı bir nokta: örnek olarak Stephanie'nin gönderisi ve bağlantısı eski bir versiyonla ilgili:

Bir ürün için ödeme yaparken, teslimatta ödeme yapmayı, paypal kullanarak ödeme yapmayı veya kartla ödeme yapmayı seçebilirsiniz. Bunların hepsi "öğe için ödeme" kullanım durumuna alternatiflerdir. Tercihime bağlı olarak bu seçeneklerden herhangi birini seçebilirim.

Aslında "öğe için ödeme" gerçekten alternatifi yok! Günümüzde UML'de, "teslimatta ödeme" bir uzatmadır ve "paypal kullanarak ödeme" / "kartla ödeme" uzmanlık alanlarıdır.


5

"Dahil et" temel kullanım durumunu genişletmek için kullanılır ve bu bir zorunluluk koşuludur, yani dahil kullanım durumu çalışması temel kullanımı tamamlamak için başarıyla çalıştırılmalıdır.

Örneğin, bir E-posta Hizmeti durumu düşünün, burada "Giriş", bir E-posta göndermek için çalıştırılması gereken bir kullanım durumudur (Temel kullanım durumu)

"Hariç tut" ise, temel kullanım durumunu genişleten isteğe bağlı kullanım durumudur, taban kullanım durumu, genişleyen kullanım durumunu çağırmadan / çağırmadan bile başarıyla çalışabilir.

Örneğin, temel kullanım durumu olarak "Dizüstü Bilgisayar Satın Alma" ve genişletilmiş kullanım durumu olarak "Ek Garanti" olarak düşünün, burada ek garanti almadan bile temel kullanım durumunu "Dizüstü Satın Alma" çalıştırabilirsiniz.


belki "yapma" ödeme bir dizüstü bilgisayar satın almak için bir "içerir" olarak hizmet edecek? Bunu aynı senaryoda 'birlikte' örneklere sahip olmak güzel diye söylüyorum. Ayrıca, ödeme yapmak birçok farklı senaryoda kullanılacak bir şeydir, bu yüzden <<include>> için uygun bir aday olabilir.
baxx

Loginhiç bir kullanım durumu değildir. Bir ön koşulu yerine getirmek için gerçekleştirilen bir işlevdir.
qwerty_so


4

Diyagram Elemanları

  • Aktörler: Roller olarak da adlandırılır. Bir aktörün adı ve klişesi Özellikler sekmesinden değiştirilebilir.

  • Kalıtım: Aktörler arasındaki ayrıntılandırma ilişkileri. Bu ilişki bir isim ve bir klişe taşıyabilir.

  • Kullanım örnekleri: Bunların Uzatma Noktaları olabilir.

  • Uzantı Noktaları: Bu, uzantının eklenebileceği bir konumu tanımlar.

  • Dernekler: Roller ve kullanım örnekleri arasında. Derneklere konuşma isimleri vermek faydalıdır.

  • Bağımlılıklar: Kullanım durumları arasında. Bağımlılıkların genellikle bağımlılığın rolünü daha iyi tanımlamak için bir klişesi vardır. Bir stereotip seçmek için, diyagramdan veya Gezinme bölmesinden bağımlılığı seçin, ardından Özellikler sekmesindeki stereotipi değiştirin. İki özel bağımlılık vardır: <<extend>>ve <<include>>bunun için Poseidon'un kendi düğmeleri sunduğu (aşağıya bakın).

  • İlişkiyi genişlet: İki kullanım durumu arasında tek yönlü bir ilişki. Kullanım durumu B ve kullanım durumu A arasındaki genişletilmiş ilişki, B'nin davranışının A'ya dahil edilebileceği anlamına gelir.

  • İlişkiyi dahil et: İki kullanım durumu arasında tek yönlü bir ilişki. A ve B kullanım durumları arasındaki böyle bir ilişki, B'nin davranışının daima A'ya dahil olduğu anlamına gelir.

  • Sistem sınırı: Sistem sınırı aslında UML için Poseidon'da model öğesi olarak uygulanmamıştır. Basitçe bir dikdörtgen çizebilir, arka plana gönderebilir ve ilgili tüm kullanım örneklerini dikdörtgenin içine koyarak sistem kenarlığı olarak kullanabilirsiniz.


4

Her ikisi de <include>ve <extend>temel sınıfa bağlıdır ancak<extend> isteğe bağlı bir deyişle, bu temel sınıfından ama kullanıcı noktasında elde edilen bu kullanılabilir veya kullanılmayabilir görüntülemek edilir.

<include> baz sınıfına dahil edilir, yani kullanılması zorunludur <include> kullanım durumunuzda aksi takdirde eksik olarak kabul edilir.

Örneğin:

ATM makine yapımında (kullanıcıların bakış açısına göre):

1: Para çekme, para yatırma ve hesabı kontrol etme <extend> , kullanıcının para çekme ya da para yatırma ya da kontrol etme işlemine bağlı olduğuna bağlıdır. Bunlar kullanıcının yaptığı isteğe bağlı şeylerdir.

2: "Pimi girin, kartı yerleştirin, kartı çıkarın" bunlar <include>, kullanıcının bir kart yerleştirmesi ve doğrulama için geçerli bir pim girmesi gerektiği için girmesi gereken şeylerdir .


3

İkisini hatırlamak için bunun kullanılmasını önermiyorum:

Benim kullanım durumum: Şehre gidiyorum.

içerir -> arabayı sür

uzanır -> benzin doldurun

Kullanmayı tercih ederim: Kullanım durumum: Şehre gidiyorum.

uzanır -> arabayı sürmek

içerir -> benzin doldurun

Uzamış ilişkinin bir temel sınıfın davranışını sürdürdüğü öğretildi. Temel sınıf işlevleri orada olmalıdır. Diğer taraftan içerme ilişkisi, çağrılabilecek işlevlere benzer. Mayıs kalın yazı tipindedir.

Bu da görüleceği Kullanımı-Vaka Modellerinde Yeniden kullanım agilemodeling


Bunun yerine, ana UC'niz "benzin doldurma" yı genişletmediği için "benzini doldur -> uzanır" yazmalıdır. Bir benzin şirketi olmanız dışında.
qwerty_so

3

Her ikisi arasındaki fark burada açıklanmıştır. Ama ne açıkladı edilmemiştir gerçek olduğunu <<include>>ve<<extend>> sadece hiç kullanılmamalıdır.

Bittner / Spence'ı okursanız kullanım örneklerinin analizle değil sentezle ilgili olduğunu bilirsiniz. Kullanım durumlarının yeniden kullanılması saçmalıktır. Alanınızı yanlış bir şekilde kestiğinizi açıkça gösteriyor. Katma değer kendi başına benzersiz olmalıdır. Bildiğim katma değerin tek kullanımı franchise. Eğer burger işinde iseniz, güzel. Ama BA olarak göreviniz her yerde bir USP bulmaya çalışmak. Ve bu iyi kullanım durumlarında sunulmalıdır.

İnsanları bu ilişkilerden birini kullanarak her gördüğümde, fonksiyonel ayrışma yapmaya çalıştıkları zamandır. Ve bu tamamen yanlış.

Basitçe söylemek gerekirse: Patronunuza tereddüt etmeden cevap verebilirseniz "Ben yaptım ..." o zaman "..." sizin kullanım durumunuzdur. (Bu da "giriş" in bir kullanım durumu olmadığını açıkça gösterecektir.)

Bu bağlamda, diğer kullanım durumlarını içeren veya genişleten kendi kendine kullanım durumlarını bulmak çok düşük bir ihtimaldir. Sonunda <<extend>>sisteminizin opsiyonelliğini göstermek için kullanabilirsiniz , yani bazı lisanslar için kullanım durumlarını dahil etmeyi veya bunları atlamayı sağlayan bazı lisanslama şeması. Ama başka - sadece kaçının.


3

Kullanım durumunuzun çok karmaşık olduğunu anladığınızda Extends kullanılır. Böylece karmaşık adımları kendi "uzantı" kullanım durumlarına çıkarırsınız.

İçerir , iki kullanım durumunda ortak davranış gördüğünüzde kullanılır. Böylece ortak davranışı ayrı bir "soyut" kullanım senaryosuna özetlersiniz.

(ref: Jeffrey L. Whitten, Lonnie D. Bentley, Sistem analizi ve tasarım yöntemleri, McGraw-Hill / Irwin, 2007)


1
Extend'in çok karmaşık bir kullanım durumu ile ilgisi yoktur. Bu yaklaşım, gerçek bir Kullanım Örneği modeli yerine işlevsel bir ayrışma oluşturmaya yol açacaktır.
Doug Knesek

1
Bence yazılım mühendisliği kavramları ve genel olarak beşeri bilimlere yaklaşan her şey fikir temelli oluyor. Ref'yi ekledim (Bkz. Sayfa 248). Adam çok zor olma :)
mrmashal

3

Dahil ilişki bir kullanım durumu başka bir kullanım durumunda adımlarını eklemenize olanak verir.

Örneğin, bir Amazon Hesabınız olduğunu ve bir siparişi kontrol etmek istediğinizi varsayalım, ilk önce hesabınıza giriş yapmadan siparişi kontrol etmek imkansızdır. Yani olayların akışı böyle olur ...

resim açıklamasını buraya girin

Uzatmak ilişki genellikle isteğe bağlı bir adımdır kullanma dosyası akımına ilave bir adım, eklemek için kullanılır ...

resim açıklamasını buraya girin

Hala Amazon hesabınızdan bahsettiğimizi düşünün. Temel durumun Order ve uzantı kullanım durumunun Amazon Prime olduğunu varsayalım . Kullanıcı sadece öğeyi düzenli olarak sipariş etmeyi seçebilir veya kullanıcının siparişinin daha yüksek maliyetle daha hızlı ulaşmasını sağlayan Amazon Prime'ı seçme seçeneği vardır.

Ancak, kullanıcının Amazon Prime'ı seçmek zorunda olmadığını unutmayın, bu sadece bir seçenektir, bu kullanım durumunu görmezden gelmeyi seçebilirler.


Ne tür bir kullanım durumu olmalı Amazon Prime? Bir fiil bile içermiyor.
qwerty_so

0

"İçerir" i, temel kullanım durumunun gerekli bir ön koşulu / refakatçisi olarak düşünmeyi seviyorum. Bu, temel kullanım durumunun, içerdiği kullanım durumu olmadan tamamlanamayacağı anlamına gelir. Müşterilere ürün satan bir e-ticaret sitesi örneği vereceğim. Bir öğeyi ilk önce o öğeyi seçip sepete koymadan ödeyemezsiniz. Bu, "Öğe için Öde" kullanım durumunun "öğe seç" i içerdiği anlamına gelir.

Uzatmanın çeşitli kullanımları vardır, ancak bunu kullanılabilecek veya kullanılamayacak bir alternatif olarak düşünmeyi seviyorum. Örneğin - hala e-ticaret sitesinde. Bir ürün için ödeme yaparken, teslimatta ödeme yapmayı, paypal kullanarak ödeme yapmayı veya kartla ödeme yapmayı seçebilirsiniz. Bunların hepsi "öğe için ödeme" kullanım durumuna alternatiflerdir. Tercihime bağlı olarak bu seçeneklerden herhangi birini seçebilirim.

Daha fazla açıklık ve kullanım örneklerini çevreleyen kurallar için buradaki makalemi okuyun:

http://businessanalystlearnings.com/ba-techniques/2013/2/20/use-case-diagram-the-basics


1
Stack Overflow'a hoş geldiniz! Cevabınızı gönderdiğiniz için teşekkürler! Lütfen Kendi Kendini Tanıtma ile ilgili SSS bölümünü dikkatle okuyun. Kötü bir cevap değil, gerçekten; ancak SSS'nin kendi tanıtım yazıları hakkında neler söylediğine dikkat edin.
Andrew Barber

Bağlantınızın altındaki UC diyagramı sadece bir anti-desendir. Ne hesap ne loginde createkullanım örnekleri. Her ikisi de işlevlerdir. Bu nedenle -1
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.