Apa perbedaan antara termasuk
dan memperpanjang
dalam use case diagram?
Memperpanjang digunakan ketika sebuah use case menambah langkah-langkah lain untuk kelas use case.
Sebagai contoh, bayangkan "Menarik uang Tunai" adalah sebuah use case dari aplikasi Automated Teller Machine (ATM). "Menilai Biaya" akan memperpanjang Menarik uang Tunai dan mendeskripsikan conditional "extension point" yang diturunkan ketika ATM pengguna doesn't bank di ATM's memiliki lembaga. Perhatikan bahwa dasar "Menarik uang Tunai" menggunakan kasus yang berdiri sendiri, tanpa ekstensi.
Fasilitas digunakan untuk mengekstrak kasus penggunaan fragmen yang duplikasi dalam beberapa kasus penggunaan. Termasuk kasus penggunaan tidak dapat berdiri sendiri dan asli menggunakan kasus ini tidak lengkap tanpa termasuk salah satu. Ini harus digunakan secara hati-hati dan hanya dalam kasus di mana duplikasi adalah signifikan dan ada desain (bukan kebetulan).
Misalnya, aliran peristiwa-peristiwa yang terjadi pada awal setiap ATM menggunakan kasus (ketika pengguna menempatkan mereka di kartu ATM, memasukkan PIN, dan akan ditampilkan menu utama) akan menjadi kandidat yang baik untuk memasukkan.
Ini mungkin kontroversial tapi "termasuk yang selalu dan meluas kadang-kadang" adalah kesalahpahaman yang sangat umum yang telah hampir diambil alih sekarang sebagai de-facto yang berarti. Berikut adalah pendekatan yang benar (dalam pandangan saya, dan diperiksa terhadap Jacobson, Fowler, Larmen dan 10 referensi lain).
Kunci untuk Mencakup dan memperluas use case hubungan adalah untuk menyadari bahwa, bersama dengan sisa dari UML, putus-putus panah antara kasus penggunaan adalah hubungan ketergantungan. Saya akan menggunakan istilah 'dasar', 'termasuk' dan 'memperluas' untuk merujuk kepada kasus penggunaan peran.
Dasar use case adalah tergantung pada termasuk use case(s); tanpa itu/mereka dasar use case adalah tidak lengkap karena termasuk use case(s) merupakan sub-urutan interaksi yang mungkin terjadi selalu ATAU kadang-kadang. (Hal ini bertentangan dengan kesalahpahaman populer tentang hal ini, apa yang anda gunakan kasus menunjukkan selalu terjadi dalam skenario utama dan kadang-kadang terjadi dalam alternatif mengalir hanya tergantung pada apa yang anda pilih sebagai skenario utama; menggunakan kasus-kasus yang dengan mudah dapat direstrukturisasi untuk mewakili berbagai aliran seperti skenario utama dan ini seharusnya tidak masalah).
Dalam praktek terbaik dari ketergantungan dasar use case tahu tentang (dan mengacu pada) termasuk kasus penggunaan, tetapi termasuk use case tidak 'tahu' tentang base use case. Ini adalah mengapa termasuk kasus penggunaan dapat: a) dasar menggunakan kasus dalam hak mereka sendiri, dan b) dibagi oleh jumlah base kasus penggunaan.
Memperluas use case adalah tergantung pada pilihan use case; itu benar-benar meluas perilaku yang dijelaskan oleh base use case. Dasar use case harus sepenuhnya fungsional use case dalam dirinya sendiri ('include sudah termasuk tentu saja) tanpa memperluas use case ini fungsi tambahan.
Memperpanjang kasus penggunaan dapat digunakan dalam beberapa situasi:
Salah satu aspek penting untuk dipertimbangkan adalah bahwa memperluas use case dapat 'insert' perilaku di beberapa tempat di dasar penggunaan kasus aliran, tidak hanya di satu tempat sebagai termasuk kasus penggunaan yang tidak. Untuk alasan ini, itu sangat tidak mungkin bahwa memperluas use case akan cocok untuk memperpanjang lebih dari satu base use case.
Seperti ketergantungan, memperluas use case adalah tergantung pada pilihan use case dan lagi satu arah ketergantungan, yaitu dasar use case tidak membutuhkan referensi untuk memperluas use case dalam urutan. Itu tidak berarti anda tidak bisa menunjukkan perpanjangan poin atau menambahkan x-ref untuk memperluas use case lain dalam template, tapi dasar use case harus mampu bekerja tanpa memperluas use case.
Saya berharap saya telah menunjukkan bahwa kesalahpahaman umum "termasuk selalu, meluas kadang-kadang" lebih baik salah atau paling sederhana. Versi ini sebenarnya lebih masuk akal jika anda mempertimbangkan semua masalah tentang directionality panah kesalahpahaman presents – dalam model yang benar itu hanya ketergantungan dan tidak berpotensi berubah jika anda refactor kasus penggunaan isi.
Saya sering menggunakan ini untuk mengingat dua:
Saya gunakan kasus: saya akan pergi ke kota.
termasuk -> mengendarai mobil
meluas -> isi bensin
"Mengisi bensin" mungkin tidak diperlukan di semua kali, tapi mungkin opsional diperlukan berdasarkan jumlah bensin yang tersisa di mobil. "Drive mobil" adalah prasyarat karenanya saya termasuk.
Menggunakan kasus-kasus yang digunakan untuk mendokumentasikan perilaku, misalnya menjawab pertanyaan ini.
Perilaku meluas lain jika itu adalah di samping tapi belum tentu bagian dari perilaku, misalnya penelitian yang menjawab.
Juga perhatikan bahwa meneliti jawaban doesn't membuat banyak akal jika anda tidak mencoba untuk menjawab pertanyaan.
Perilaku ini termasuk dalam lain jika itu adalah bagian dari termasuk perilaku, misalnya login ke stack exchange.
Untuk memperjelas, ilustrasi ini hanya berlaku jika anda ingin jawabannya di sini di stack overflow :).
Ini adalah teknis definisi dari UML 2.5 halaman 671-672.
Saya menyoroti apa yang saya pikir adalah poin penting.
Meluas
Sebuah Memperpanjang hubungan dari sebuah memperpanjang UseCase (ekstensi) untuk diperpanjang UseCase (yang extendedCase) yang menentukan bagaimana dan kapan perilaku yang ditentukan dalam memperluas UseCase dapat dimasukkan ke dalam perilaku yang didefinisikan dalam extended UseCase. Ekstensi terjadi pada satu atau lebih ekstensi tertentu poin yang ditetapkan dalam diperpanjang UseCase.
Memperpanjang dimaksudkan untuk digunakan ketika ada beberapa tambahan perilaku yang harus ditambahkan, mungkin kondisional, perilaku ditetapkan dalam satu atau lebih UseCases.
The diperpanjang UseCase didefinisikan secara independen dari memperpanjang UseCase dan bermakna secara independen dari memperpanjang UseCase. Di sisi lain, memperluas UseCase biasanya mendefinisikan perilaku yang mungkin tidak selalu menjadi bermakna dengan sendirinya. Sebaliknya, memperluas UseCase mendefinisikan satu set modular perilaku bertahap menambah eksekusi diperpanjang UseCase di bawah kondisi tertentu.
...
Termasuk ****
Sertakan adalah DirectedRelationship antara dua UseCases, menunjukkan bahwa perilaku termasuk UseCase (penambahan) adalah dimasukkan ke dalam perilaku termasuk UseCase (yang includingCase). Hal ini juga semacam NamedElement sehingga bisa memiliki nama dalam konteks memiliki UseCase (yang includingCase). Termasuk UseCase mungkin tergantung pada perubahan yang dihasilkan oleh pelaksana termasuk UseCase. Termasuk UseCase harus tersedia untuk perilaku termasuk UseCase untuk menjadi benar-benar dijelaskan.
Termasuk hubungan ini dimaksudkan untuk digunakan ketika ada bagian-bagian umum dari perilaku dari dua atau lebih UseCases. Ini bagian umum kemudian diekstraksi untuk memisahkan UseCase, harus disertakan dengan semua dasar UseCases memiliki bagian ini pada umum. Sebagai penggunaan utama dari Adanya hubungan adalah untuk menggunakan kembali bagian umum, apa yang tersisa di a dasar UseCase ini biasanya tidak lengkap di sendiri tapi tergantung pada bagian disertakan untuk menjadi bermakna. Hal ini tercermin dalam arah hubungan, menunjukkan bahwa dasar UseCase tergantung pada penambahan tetapi tidak sebaliknya.
...
Saya pikir itu's penting untuk memahami maksud mencakup dan memperluas:
"mencakup hubungan ini dimaksudkan untuk menggunakan perilaku yang dimodelkan dengan use case lain, sedangkan memperpanjang hubungan ini dimaksudkan untuk menambahkan bagian-bagian yang ada kasus penggunaan serta modeling opsional sistem pelayanan" (Overgaard dan Palmkvist, Gunakan Kasus: Pola dan cetak Biru. Addison-Wesley, 2004).
Ini membaca saya seperti:
Meliputi = reuse fungsi (yaitu yang termasuk fungsi yang digunakan atau dapat digunakan di tempat lain dalam sistem). Termasuk oleh karena itu menunjukkan ketergantungan pada use case lain.
Memanjang = menambahkan (tidak menggunakan kembali) fungsi dan juga salah opsional fungsi. Meluas oleh karena itu dapat menunjukkan salah satu dari dua hal:
Ringkasan:
Termasuk = menggunakan kembali fungsi
Memanjang = baru dan/atau fungsi opsional
Anda akan sering menemukan 2 penggunaan (yaitu fungsi opsional) dari meluas, karena jika fungsi ini tidak opsional, maka sebagian besar waktu itu adalah yang dibangun ke dalam use case itu sendiri, bukan menjadi perpanjangan. Setidaknya itu's pengalaman saya. (Julian C menunjukkan bahwa anda kadang-kadang melihat 1st penggunaan (yaitu menambahkan fitur baru) dari meluas ketika sebuah proyek yang masuk itu's 2nd phase).
Let's membuat ini lebih jelas. Kami menggunakan termasuk
setiap kali kita ingin mengungkapkan fakta bahwa adanya satu kasus tergantung pada keberadaan yang lain.
CONTOH:
Pengguna dapat melakukan belanja secara online hanya setelah ia telah login di account-nya. Dengan kata lain, dia bisa't melakukan belanja apapun sampai ia telah login di account-nya.
Pengguna dapat't-download dari sebuah situs sebelum bahan-bahan yang telah di-upload. Jadi, saya dapat't men-download jika tidak ada yang telah di-upload.
Apakah anda mendapatkannya?
It's tentang ac konsekuensi. Saya dapat't melakukan hal ini jika sebelumnya saya didn't melakukan itu.
Setidaknya, saya pikir ini adalah cara yang tepat kita menggunakan Mencakup
.
Saya cenderung berpikir contoh dengan Laptop dan garansi dari kanan atas adalah yang paling meyakinkan!
Untuk menyederhanakan,
untuk termasuk
sebuah contoh yang khas: antara login dan verifikasi kata sandi
(masuk) --- << termasuk >> --- (verify password)
untuk proses login sukses, "memverifikasi password" harus sukses juga.
untuk memperpanjang
sebuah contoh yang khas: antara login dan menampilkan pesan kesalahan (hanya terjadi kadang-kadang)
(login) --- << memperpanjang >> --- (menampilkan pesan error)
"tampilkan pesan kesalahan" hanya terjadi kadang-kadang ketika proses login gagal.
Saya pikir apa yang msdn menjelaskan di sini yang cukup mudah untuk memahami.
Fasilitas [5]
termasuk kasus penggunaan panggilan atau memanggil termasuk salah satu. Inklusi ini digunakan untuk menunjukkan bagaimana sebuah use case istirahat menjadi langkah-langkah kecil. Termasuk kasus penggunaan di arrowhead akhir.
Memperpanjang [6]
Sementara itu, memperluas use case menambah tujuan dan langkah-langkah untuk penggunaan diperpanjang kasus. Ekstensi yang beroperasi hanya di bawah kondisi tertentu. Penggunaan diperpanjang kasus di arrowhead akhir.
setiap kali ada prasyarat untuk sebuah usecase kemudian,pergi untuk mencakup.
untuk usecases memiliki otentikasi,skenario kasus terburuk,atau opsional kemudian pergi untuk memperpanjang..
contoh:untuk kasus penggunaan yang mencari penerimaan,pengangkatan,reservasi tiket ANDA HARUS MENGISI formulir (pendaftaran atau formulir umpan balik)....ini adalah di mana mencakup datang..
contoh:untuk kasus penggunaan memverifikasi login atau masuk akun anda,anda otentikasi adalah suatu keharusan.juga memikirkan skenario kasus terburuk.seperti kembali pesan dengan baik..TIDAK mendapatkan reservasi..membayar tagihan SETELAH TANGGAL jatuh TEMPO..ini adalah di mana memperpanjang datang untuk bermain...
jangan terlalu sering menggunakan include dan extend dalam diagram.
KEEP IT SIMPLE KONYOL!!!
Juga berhati-hatilah dari UML versi : it's telah lama sekarang bahwa << menggunakan >> dan << termasuk >> telah diganti dengan << termasuk >>, dan << meluas >> oleh << memperpanjang >> DAN generalisasi. Bagi saya yang's sering menyesatkan embun : sebagai contoh Stephanie's post dan link tentang versi lama :
Ketika membayar untuk item, anda dapat memilih untuk membayar pengiriman, membayar menggunakan paypal atau membayar dengan kartu. Ini semua adalah alternatif untuk "membayar untuk item" kasus penggunaan. Saya dapat memilih salah satu dari pilihan ini tergantung pada preferensi saya.
Pada kenyataannya tidak ada yang benar-benar alternatif untuk "membayar untuk item" ! Di saat ini UML, "membayar pengiriman" adalah aplikasi yang memperpanjang, dan "membayar menggunakan paypal"/"membayar dengan kartu" adalah spesialisasi.
"Seperti" ini digunakan untuk memperpanjang base use case dan itu adalah harus dengan syarat yaitu termasuk use case dijalankan harus dijalankan untuk menyelesaikan dasar yang digunakan.
misalnya Mempertimbangkan kasus dari Layanan Email, di sini "Login" ini termasuk use case yang harus dijalankan dalam rangka untuk mengirim Email (Base use case)
"Mengecualikan" di sisi lain adalah opsional kasus penggunaan yang meluas base use case base use case dapat berjalan dengan sukses bahkan tanpa memanggil/memanggil memperluas use case.
misalnya Mempertimbangkan "Pembelian Laptop" sebagai dasar use case dan "Tambahan Garansi" sebagai memperluas use case, di sini anda dapat menjalankan base use case "Pembelian Laptop" bahkan tanpa jaminan tambahan.
Ini adalah sumber daya yang besar dengan penjelasan: Apa yang ada pada use case? Apa yang Memperpanjang pada use case?
Memperluas use case biasanya mendefinisikan opsional perilaku. Itu adalah mandiri dari memperluas use case
Termasuk yang digunakan untuk mengekstrak bagian-bagian umum dari perilaku dari dua atau lebih kasus penggunaan
Diagram Elemen
Pelaku: Juga disebut sebagai Peran. Nama dan stereotip seorang aktor dapat mengubah Sifat tab.
Warisan: Perbaikan hubungan antara aktor-aktor. Hubungan ini dapat membawa nama dan stereotip.
Gunakan kasus: Ini dapat memiliki Ekstensi Poin.
Ekstensi Poin: Ini mendefinisikan sebuah lokasi di mana ekstensi dapat ditambahkan.
Asosiasi: Antara peran dan kasus penggunaan. Hal ini berguna untuk memberikan asosiasi berbicara nama-nama.
Dependensi: Antara kasus penggunaan. Dependensi sering memiliki stereotip untuk lebih memaksimalkan peran dari ketergantungan. Untuk memilih stereotip, pilih ketergantungan dari diagram atau panel Navigasi, lalu mengubah stereotip di tab Properties. Ada dua jenis khusus dari dependensi: <<memperpanjang>>
dan <<termasuk>>
, yang Poseidon ini sendiri tombol (lihat di bawah).
Memperpanjang hubungan: uni-directional hubungan antara dua kasus penggunaan. Sebuah memperpanjang hubungan antara use case B dan use case Yang berarti bahwa perilaku B dapat dimasukkan dalam A.
Mencakup hubungan: uni-directional hubungan antara dua kasus penggunaan. Seperti hubungan antara kasus penggunaan A dan B berarti, bahwa perilaku B selalu termasuk di A.
Sistem border: sistem perbatasan adalah benar-benar tidak diimplementasikan sebagai model elemen di Poseidon for UML. Anda hanya dapat menggambar persegi panjang, kirim ke latar belakang dan menggunakannya sebagai sistem perbatasan dengan menempatkan semua sesuai kasus penggunaan di dalam persegi panjang.
Kedua <termasuk>
dan <memperpanjang>
tergantung pada kelas dasar tapi <memperpanjang>
adalah opsional yaitu, itu berasal dari kelas dasar, tetapi dalam sudut pengguna pandang ini dapat digunakan atau tidak dapat digunakan.
<termasuk>
yang tergabung dalam kelas dasar yaitu, itu adalah wajib untuk menggunakan <termasuk>
dalam kasus anda atau yang lain itu akan dianggap tidak lengkap.
misalnya:
Di mesin ATM konstruksi (menurut para penggunanya point of view):
1: Penarikan,setoran tunai dan memeriksa akun datang di bawah <memperpanjang>
karena itu tergantung pada pengguna apakah akan menarik atau menyetor atau periksa. Ini adalah opsional hal-hal yang pengguna lakukan.
2: "Masukkan pin, menempatkan kartu, penghapusan kartu" ini adalah hal-hal yang datang di bawah <termasuk>
karena pengguna harus, dan harus, tempat kartu dan masukkan valid pin untuk verifikasi.
Meluas digunakan ketika anda memahami bahwa anda menggunakan kasus adalah terlalu kompleks. Jadi anda mengambil langkah-langkah yang rumit ke dalam mereka sendiri "ekstensi" kasus penggunaan.
Termasuk **** digunakan ketika anda melihat perilaku umum dalam dua kasus penggunaan. Jadi anda abstrak keluar perilaku umum menjadi terpisah "abstrak" kasus penggunaan.
(ref: Jeffrey L. Whitten, Lonnie D. Bentley, Sistem analisis & desain metode, McGraw-Hill/Irwin, 2007)
Saya don't merekomendasikan menggunakan ini untuk mengingat dua:
Saya gunakan kasus: saya akan pergi ke kota.
termasuk -> mengendarai mobil
meluas -> isi bensin
Saya lebih suka anda gunakan: Saya gunakan kasus: saya akan pergi ke kota.
meluas -> mengemudi mobil
termasuk -> isi bensin
Saya diajarkan bahwa memperpanjang hubungan berlanjut perilaku dari kelas dasar. Kelas dasar fungsi yang harus ada. Termasuk hubungan di sisi lain, mirip dengan fungsi-fungsi yang dapat dipanggil. Mungkin yang di bold.
Hal ini dapat dilihat dari agilemodeling digunakan Kembali dalam Use-Case Model
The fasilitas hubungan yang memungkinkan suatu use case untuk mencakup langkah-langkah dari use case lain.
Untuk contoh, misalkan anda memiliki Account Amazon dan anda ingin memeriksa order, nah itu adalah mungkin untuk memeriksa pesanan tanpa terlebih dahulu masuk ke akun anda. Sehingga aliran peristiwa-peristiwa yang akan jadi...
The memperpanjang hubungan ini digunakan untuk menambahkan langkah tambahan untuk aliran dari suatu use case, yang biasanya merupakan langkah opsional...
Bayangkan bahwa kita masih berbicara tentang akun amazon anda. Mari kita asumsikan kasus dasar ini Order dan extension use case Amazon Perdana. Pengguna dapat memilih untuk hanya memesan barang secara teratur, atau, pengguna memiliki pilihan untuk memilih Amazon Prime yang memastikan pesanan akan tiba lebih cepat dengan biaya yang lebih tinggi.
Namun, perhatikan bahwa pengguna tidak harus memilih Amazon Prime, ini adalah hanya sebuah pilihan, mereka dapat memilih untuk mengabaikan kasus penggunaan ini.
Perbedaan antara keduanya telah dijelaskan di sini. Tapi apa yang belum dijelaskan adalah fakta bahwa <<termasuk>>
dan <<memperpanjang>>
hanya tidak boleh digunakan sama sekali.
Jika anda membaca Bittner/Spence anda tahu bahwa menggunakan kasus-kasus tentang sintesis, bukan analisis. Re-use use case adalah omong kosong. Ini jelas menunjukkan bahwa anda telah memotong domain anda salah. Nilai tambah harus unik per se. Satu-satunya penggunaan kembali nilai tambah yang saya tahu adalah waralaba. Jadi jika anda berada dalam bisnis burger, bagus. Tapi di tempat lain tugas anda sebagai BA adalah untuk mencoba untuk menemukan USP. Dan yang harus disajikan dalam kasus penggunaan.
Setiap kali aku melihat orang-orang yang menggunakan salah satu dari orang-hubungan itu adalah ketika mereka mencoba untuk melakukan dekomposisi fungsional. Dan yang's polos yang salah.
Untuk menempatkan itu sederhana: jika anda dapat menjawab atasan anda tanpa ragu-ragu "saya telah melakukan ..." maka "..." adalah kasus penggunaan anda karena anda punya uang untuk melakukan itu. (Itu juga akan membuat jelas bahwa "login" tidak menggunakan kasus sama sekali.)
Dalam hal ini, menemukan diri berdiri menggunakan kasus-kasus yang disertakan atau memperpanjang kasus penggunaan lainnya adalah sangat tidak mungkin. Akhirnya anda dapat menggunakan <<memperpanjang>>
untuk menunjukkan optionality dari sistem anda, yaitu beberapa perizinan skema yang memungkinkan untuk memasukkan kasus penggunaan untuk beberapa lisensi atau untuk menghilangkan mereka. Tapi yang lain - hanya menghindari mereka.
Saya suka berpikir tentang "termasuk" sebagai sebuah prasyarat yang diperlukan/iringan dasar use case. Ini berarti bahwa dasar use case tidak dapat dianggap lengkap tanpa menggunakan hal itu termasuk. I'll memberikan contoh website e-commerce yang menjual barang-barang kepada pelanggan. Ada's tidak ada cara yang anda dapat membayar untuk item tanpa terlebih dahulu memilih barang itu dan memasukkannya ke dalam keranjang. Ini berarti bahwa penggunaan case "Membayar untuk Item" termasuk "pilih item".
Ada berbagai kegunaan dari meluas tapi saya suka berpikir itu sebagai alternatif yang mungkin atau mungkin tidak dapat digunakan. Misalnya - masih pada situs e-commerce. Ketika membayar untuk item, anda dapat memilih untuk membayar pengiriman, membayar menggunakan paypal atau membayar dengan kartu. Ini semua adalah alternatif untuk "membayar untuk item" kasus penggunaan. Saya dapat memilih salah satu dari pilihan ini tergantung pada preferensi saya.
Untuk lebih jelas dan aturan seputar kasus penggunaan, baca artikel saya berikut ini:
http://businessanalystlearnings.com/ba-techniques/2013/2/20/use-case-diagram-the-basics