Apa perbedaan antara include dan extended dalam diagram use case?


377

Apa perbedaan antara includedan extenddalam diagram use case ?


Saya tidak akan melakukan pekerjaan yang lebih baik daripada Scott Ambler dalam menjelaskan bagaimana mereka dapat digunakan untuk digunakan kembali dalam model use-case dan bagaimana mereka berbeda. Jadi alih-alih memparafrasekannya, saya sarankan untuk membaca Penggunaan Kembali dalam Model Kasus-Penggunaan: & lt; & lt; extended & gt; & gt; & & lt; & lt; termasuk & gt; & gt ;, dan Inheritance .
Pascal Thivent

7
Memang, pertanyaan ini pemrograman terkait ...
Pascal Thivent

35
@closers: ini adalah pertanyaan yang valid.
Henk Holterman

82
Singkatnya -> termasuk = Madatory, memperpanjang = Opsional
Thein

2
@Megamind 'extended = Opsional' tidak sepenuhnya benar ... Lihat tautan
Shanaka Jayalath

Jawaban:


262

Extend digunakan ketika use case menambahkan langkah ke use case kelas satu lainnya.

Misalnya, bayangkan "Penarikan Uang Tunai" adalah kasus penggunaan dari Anjungan Tunai Mandiri (ATM). "Nilai Biaya" akan memperpanjang Penarikan Uang Tunai dan menjelaskan "titik perpanjangan" bersyarat yang dipakai saat pengguna ATM tidak melakukan bank di lembaga pemilik ATM. Perhatikan bahwa kasus penggunaan dasar "Penarikan Uang Tunai" berdiri sendiri, tanpa ekstensi.

Include digunakan untuk mengekstraksi fragmen use case yang digandakan dalam beberapa use case. Kasing yang disertakan tidak dapat berdiri sendiri dan kasing yang asli tidak lengkap tanpa yang disertakan. Ini harus digunakan dengan hemat dan hanya dalam kasus-kasus di mana duplikasi itu signifikan dan ada karena desain (bukan karena kebetulan).

Misalnya, aliran peristiwa yang terjadi di awal setiap kasus penggunaan ATM (ketika pengguna memasukkan kartu ATM mereka, memasukkan PIN mereka, dan ditampilkan menu utama) akan menjadi kandidat yang baik untuk dimasukkan.


1
Include is used to extract use case fragments that are duplicated in multiple use cases, Apa yang diekstrak dalam langkah-langkah: puts in their ATM card, enters their PIN, and is shown the main menu? Terima kasih
Blaze Tama

2
Saya harus tidak setuju dengan memasukkan langkah "masuk" menjadi kandidat yang baik untuk disertakan . Langkah-langkah tersebut membentuk sebuah use case miliknya sendiri, dan harus dikaitkan dengan yang lainnya use case dengan syarat-syarat -> pra-kondisi.
Bruno Brant

22
@ Bruno - Tidak ada yang akan masuk ke mesin ATM dan hanya berjalan pergi dengan senang hati. Casing penggunaan beton harus memberikan nilai yang berdiri sendiri untuk aktor, jika tidak mereka hanya berfungsi dalam dekomposisi fungsional.
Doug Knesek

@ Blaze - Semua bagian dari alur masuk, termasuk langkah-langkah itu.
Doug Knesek

1
Bagaimana Menilai Biaya menjadi UC? Ini adalah aliran kondisional dalam skenario. Itu sama sekali bukan nilai tambah. Ini kebalikannya.
qwerty_so

113

Ini mungkin kontroversial tetapi "memasukkan selalu dan kadang-kadang meluas" adalah kesalahpahaman yang sangat umum yang hampir diambil alih sekarang sebagai makna de-facto. Inilah pendekatan yang benar (dalam pandangan saya, dan memeriksa terhadap Jacobson, Fowler, Larmen dan 10 referensi lainnya).

Hubungan adalah ketergantungan

Kunci untuk menyertakan dan memperluas hubungan use case adalah untuk menyadari bahwa, seperti halnya UML lainnya, panah putus-putus antara use case adalah hubungan dependensi. Saya akan menggunakan istilah 'basis', 'termasuk' dan 'memperluas' untuk merujuk pada peran kasus penggunaan.

termasuk

Kasing penggunaan dasar tergantung pada kasing yang disertakan; tanpa itu / mereka kasus penggunaan dasar tidak lengkap karena kasus penggunaan yang disertakan (s) mewakili sub-urutan interaksi yang mungkin terjadi selalu ATAU kadang-kadang. (Ini bertentangan dengan kesalahpahaman populer tentang hal ini, apa yang disarankan oleh kasus penggunaan Anda selalu terjadi dalam skenario utama dan kadang-kadang terjadi dalam aliran alternatif hanya tergantung pada apa yang Anda pilih sebagai skenario utama Anda; kasus penggunaan dapat dengan mudah disusun ulang untuk mewakili aliran yang berbeda sebagai skenario utama dan ini seharusnya tidak masalah).

Dalam praktik terbaik ketergantungan satu arah, kasus penggunaan dasar tahu tentang (dan merujuk ke) kasus penggunaan yang disertakan, tetapi kasus penggunaan yang disertakan tidak boleh 'tahu' tentang kasus penggunaan dasar. Inilah sebabnya mengapa use case yang disertakan dapat: a) case penggunaan dasar dalam hak mereka sendiri dan b) dibagi oleh sejumlah kasus penggunaan basis.

memperpanjang

Kasus penggunaan memperluas tergantung pada kasus penggunaan dasar; itu benar-benar memperluas perilaku yang dijelaskan oleh kasus penggunaan dasar. Casing penggunaan dasar harus merupakan use case yang berfungsi penuh dengan haknya sendiri ('termasuk sudah termasuk tentu saja) tanpa fungsionalitas tambahan use case yang diperluas.

Memperluas kasus penggunaan dapat digunakan dalam beberapa situasi:

  1. Kasing penggunaan dasar mewakili fungsionalitas "harus memiliki" suatu proyek sementara kasing yang diperluas menggambarkan perilaku opsional (harus / bisa / diinginkan). Di sinilah istilah opsional relevan - opsional apakah akan membangun / mengirim alih-alih opsional apakah kadang-kadang berjalan sebagai bagian dari urutan kasus penggunaan dasar.
  2. Pada fase 1 Anda dapat mengirimkan casing penggunaan dasar yang memenuhi persyaratan pada titik itu, dan fase 2 akan menambahkan fungsionalitas tambahan yang dijelaskan oleh case penggunaan yang diperluas. Ini dapat berisi urutan yang selalu atau kadang dilakukan setelah fase 2 disampaikan (sekali lagi bertentangan dengan kesalahpahaman populer).
  3. Hal ini dapat digunakan untuk mengekstrak selanjutnya dari kasus penggunaan dasar, terutama ketika mereka mewakili perilaku kompleks 'luar biasa' dengan aliran alternatifnya sendiri.

Salah satu aspek penting untuk dipertimbangkan adalah bahwa use case yang diperluas dapat 'menyisipkan' perilaku di beberapa tempat dalam aliran case use dasar, tidak hanya di satu tempat seperti use case yang disertakan. Karena alasan ini, sangat kecil kemungkinan penggunaan case yang diperluas akan cocok untuk memperpanjang lebih dari satu case use dasar.

Mengenai ketergantungan, kasus penggunaan diperluas tergantung pada kasus penggunaan dasar dan sekali lagi ketergantungan satu arah, yaitu kasus penggunaan dasar tidak memerlukan referensi ke kasus penggunaan memperluas dalam urutan. Itu tidak berarti Anda tidak dapat mendemonstrasikan poin ekstensi atau menambahkan x-ref ke kasus penggunaan memperluas di tempat lain dalam template, tetapi kasus penggunaan dasar harus dapat bekerja tanpa kasus penggunaan memperluas.

RINGKASAN

Saya harap saya telah menunjukkan bahwa kesalahpahaman umum "termasuk selalu, meluas kadang-kadang" adalah salah atau paling sederhana. Versi ini sebenarnya lebih masuk akal jika Anda mempertimbangkan semua masalah tentang arah panah yang disajikan kesalahpahaman - dalam model yang benar itu hanya ketergantungan dan tidak berpotensi berubah jika Anda memperbaiki isi kasus penggunaan.


3
akan lebih bagus jika Anda bisa menambahkan beberapa referensi untuk klaim itu
mibollma

1
Maaf, membuat diagram UML dengan cara ini ketika perangkat lunak melewati iterasi yang menambahkan fungsionalitas baru yang selalu dimaksudkan diperlukan pada kondisi akhir hanya akan membingungkan dan rumit. Saya lebih suka pendekatan Doug Knesek, lebih sederhana untuk dipahami dan bekerja dengan sementara tidak menciptakan kebingungan atau kompleksitas yang tidak perlu.
BigMac66

1
Meskipun Anda berhak untuk menantang "menyertakan selalu dan kadang-kadang meluas" karena terkait dengan kasus Use Case, pilihan Anda untuk mengeksploitasi semantik "memperluas" untuk mendukung pengiriman tambahan dapat membuat orang lain berpikir bahwa "perluasan" adalah TENTANG pengiriman tambahan.
Doug Knesek

81

Saya sering menggunakan ini untuk mengingat keduanya:

Kasus penggunaan saya: Saya akan ke kota.

termasuk -> mengendarai mobil

memanjang -> mengisi bensin

"Isi bensin" mungkin tidak diperlukan setiap saat, tetapi secara opsional mungkin diperlukan berdasarkan jumlah bensin yang tersisa di dalam mobil. "Mengemudi mobil" adalah prasyarat maka saya termasuk.


Tapi, "mengisi bensin" sebenarnya meluas "pergi ke kota", bukan sebaliknya, kan?
Petr Hudeček

1
Saya pikir itu tergantung pada sudut pandang Petr. Imho "mengisi bensin" sebenarnya dapat memperpanjang mengemudi mobil juga.
Daniel Perník

2
Pergi ke kota dan mengisi bensin terdengar seperti dua hal yang sama sekali tidak berhubungan yang mungkin saja terjadi secara kebetulan.
OdraEncoded

1
@OdraEncoded benar. Isi bensin tidak tergantung pada pergi ke kota.
nonybrighto

57

Use case digunakan untuk mendokumentasikan perilaku, misalnya menjawab pertanyaan ini.

jawab pertanyaan use case

Suatu perilaku meluas yang lain jika itu merupakan tambahan tetapi tidak harus bagian dari perilaku, misalnya meneliti jawabannya.

Perhatikan juga bahwa meneliti jawaban itu tidak masuk akal jika Anda tidak mencoba menjawab pertanyaan itu.

telusuri jawabannya

Suatu perilaku termasuk dalam yang lain jika itu adalah bagian dari perilaku yang disertakan, misalnya masuk ke pertukaran tumpukan.

masuk ke tumpukan tukar termasuk

Untuk memperjelas, ilustrasi ini hanya benar jika Anda ingin menjawab di sini di stack overflow :).

Ini adalah definisi teknis dari UML 2.5 halaman 671-672.

Saya menyoroti apa yang saya pikir poin penting.

Meluas

Extend adalah hubungan dari UseCase yang diperluas (ekstensi) ke UseCase yang diperluas (extendedCase) yang menentukan bagaimana dan kapan perilaku yang didefinisikan dalam UseCase yang diperluas dapat dimasukkan ke dalam perilaku yang ditentukan dalam UseCase yang diperluas. Ekstensi berlangsung di satu atau beberapa titik ekstensi spesifik yang ditentukan dalam UseCase yang diperluas.

Perpanjangan dimaksudkan untuk digunakan ketika ada beberapa perilaku tambahan yang harus ditambahkan, mungkin secara kondisional , ke perilaku yang didefinisikan dalam satu atau lebih UseCases.

The usecase diperpanjang didefinisikan secara independen dari usecase memperluas dan bermakna secara independen dari usecase memperpanjang . Di sisi lain, Memperluas UseCase biasanya mendefinisikan perilaku yang mungkin tidak berarti dengan sendirinya . Sebagai gantinya, Memperluas UseCase mendefinisikan satu set peningkatan perilaku modular yang menambah eksekusi dari UseCase yang diperluas dalam kondisi tertentu.

...

Termasuk

Include adalah DirectedRelationship antara dua UseCases, yang menunjukkan bahwa perilaku UseCase yang disertakan (tambahan) dimasukkan ke dalam perilaku UseCase yang disertakan (yang termasukCase). Ini juga semacam NamedElement sehingga dapat memiliki nama dalam konteks UseCase yang dimilikinya (the includeCase). UseCase yang disertakan dapat bergantung pada perubahan yang dihasilkan dengan menjalankan UseCase yang disertakan. UseCase yang disertakan harus tersedia agar perilaku UseCase yang disertakan dijelaskan sepenuhnya.

Hubungan Sertakan dimaksudkan untuk digunakan ketika ada bagian umum dari perilaku dua atau lebih UseCases. Bagian umum ini kemudian diekstraksi ke UseCase yang terpisah, untuk dimasukkan oleh semua UseCases dasar yang memiliki bagian yang sama . Karena penggunaan utama hubungan Include adalah untuk menggunakan kembali bagian-bagian umum, apa yang tersisa di pangkalan UseCase biasanya tidak lengkap dengan sendirinya tetapi tergantung pada bagian-bagian yang disertakan untuk menjadi bermakna. Ini tercermin dalam arah hubungan, yang menunjukkan bahwa pangkalan UseCase tergantung pada penambahan tetapi tidak sebaliknya.

...


23

Saya pikir penting untuk memahami maksud menyertakan dan memperluas:

"Hubungan include dimaksudkan untuk menggunakan kembali perilaku yang dimodelkan oleh use case lain , sedangkan hubungan extended dimaksudkan untuk menambahkan suku cadang ke case use yang ada serta untuk pemodelan layanan sistem opsional " (Overgaard dan Palmkvist, Use Cases: Patterns dan Blueprints. Addison -Wesley, 2004).


Ini berbunyi bagi saya sebagai:

Sertakan = penggunaan kembali fungsionalitas (yaitu fungsionalitas yang disertakan digunakan atau dapat digunakan di tempat lain dalam sistem). Karena itu sertakan menunjukkan ketergantungan pada use case lain.

Extends = menambah fungsionalitas (tidak menggunakan kembali) dan juga fungsionalitas opsional apa pun . Meluas karena itu dapat menunjukkan salah satu dari dua hal:
1. menambahkan baru fitur / kemampuan untuk kasus penggunaan (opsional atau tidak)
2. setiap opsional penggunaan kasus (ada atau tidak).

Ringkasan:
Sertakan = penggunaan kembali fungsionalitas
Extends = fungsionalitas baru dan / atau opsional

Anda akan paling sering menemukan penggunaan ke-2 (yaitu fungsionalitas opsional) dari extends, karena jika fungsionalitas tidak opsional, maka sebagian besar kali itu dibangun ke dalam use case itu sendiri, daripada menjadi ekstensi. Setidaknya itulah pengalaman saya. (Julian C menunjukkan bahwa Anda terkadang melihat penggunaan pertama (yaitu menambahkan fitur baru) dari extends ketika sebuah proyek memasuki fase ke-2).


23

Untuk menyederhanakan,

untuk include

  1. Ketika case use dasar dieksekusi, use case yang disertakan dieksekusi SETIAP SAAT .
  2. Kasing penggunaan dasar membutuhkan penyelesaian kasing yang disertakan agar dapat diselesaikan.

contoh khas: antara login dan verifikasi kata sandi

(masuk) --- << termasuk >> --- > (verifikasi kata sandi)

agar proses login berhasil, "verifikasi kata sandi" juga harus berhasil.


untuk extend

  1. Ketika kasus penggunaan dasar dieksekusi, kasus penggunaan diperpanjang hanya dilakukan TERKADANG
  2. Kasus penggunaan diperpanjang akan terjadi hanya ketika kriteria tertentu dipenuhi.

contoh khas: antara masuk dan menampilkan pesan kesalahan (hanya terjadi kadang-kadang)

(masuk) < --- << lanjutkan >> --- (tampilkan pesan kesalahan)

"tampilkan pesan kesalahan" hanya terjadi kadang-kadang ketika proses login gagal.


contoh yang bagus!
Pavel Durov

15

Saya pikir apa yang dijelaskan msdn di sini cukup mudah dimengerti.

Termasuk [5]

Panggilan kasus penggunaan termasuk atau memanggil yang disertakan. Inklusi digunakan untuk menunjukkan bagaimana use case dipecah menjadi langkah yang lebih kecil. Kasing penggunaan yang disertakan adalah di ujung panah.

Perpanjang [6]

Sementara itu, kasus penggunaan yang diperluas menambah tujuan dan langkah-langkah untuk kasus penggunaan yang diperluas. Ekstensi hanya beroperasi dalam kondisi tertentu. Kasing penggunaan diperpanjang di ujung panah.

masukkan deskripsi gambar di sini


Setidaknya Anda harus mengutip esensi dalam jawaban Anda, bukan hanya menambahkan tautan ke jawaban. Selain itu, penjelasan yang Anda referensi tidak benar-benar baik atau tepat.
Geert Bellekens

Hai @ GeertBellekens, saya telah menambahkan beberapa detail untuk menjelaskan perbedaan antara include dan extended. IMHO diagram itu sendiri dengan jelas mengomunikasikan perbedaannya dan untuk itulah diagram tersebut digunakan.
Etic

Saya senang Anda menambahkan penjelasan, tetapi saya masih berpikir bahwa itu tidak terlalu baik atau tepat. Orang (bahkan, atau terutama jika mereka menulis untuk msdn) harus berhenti menciptakan definisi mereka sendiri untuk sesuatu yang sudah didefinisikan dalam standar.
Geert Bellekens

15

Mari kita perjelas ini. Kami menggunakan includesetiap kali kami ingin mengungkapkan fakta bahwa keberadaan satu kasus tergantung pada keberadaan yang lain.

CONTOH:

Seorang pengguna dapat melakukan belanja online hanya setelah dia masuk ke dalam akunnya. Dengan kata lain, dia tidak dapat melakukan belanja sampai dia masuk ke akunnya.

Seorang pengguna tidak dapat mengunduh dari situs sebelum materi diunggah. Jadi, saya tidak dapat mengunduh jika tidak ada yang diunggah.

Apa kau mengerti?

Ini tentang konsekuensi yang dikondisikan. Saya tidak bisa melakukan ini jika sebelumnya saya tidak melakukan itu .

Setidaknya, saya pikir ini adalah cara yang tepat kami gunakan Include. Saya cenderung berpikir contoh dengan Laptop dan garansi dari kanan di atas adalah yang paling meyakinkan!


1
Tentang meluas?
AlphaGoku

8

setiap kali ada prasyarat untuk sebuah usecase, pergi untuk menyertakan.

untuk usecases yang memiliki autentikasi, skenario terburuk, atau bersifat opsional lalu lanjutkan untuk memperpanjang ..

contoh: untuk kasus penggunaan mencari tiket masuk, janji temu, pemesanan tiket ANDA HARUS MENGISI formulir (formulir pendaftaran atau umpan balik) .... di sinilah termasuk ..

contoh: untuk kasus penggunaan memverifikasi login atau masuk ke akun Anda, otentikasi Anda adalah suatu keharusan.juga memikirkan skenario kasus terburuk. seperti mengembalikan buku dengan baik-baik saja.Tidak mendapatkan reservasi..membayar tagihan SETELAH KARENA TANGGAL ... ini adalah dimana perpanjangan datang untuk bermain ...

jangan terlalu sering memasukkan dan memperluas dalam diagram.

TETAPI SILLY SEDERHANA !!!


6

Berhati-hatilah dengan versi UML: sudah lama sekarang bahwa << menggunakan >> dan << termasuk >> telah digantikan oleh << include >>, dan << extends >> oleh << memperpanjang >> DAN generalisasi .
Bagi saya itu sering merupakan titik yang menyesatkan: sebagai contoh posting dan tautan Stephanie adalah tentang versi lama:

Saat membayar untuk suatu barang, Anda dapat memilih untuk membayar pada pengiriman, membayar menggunakan paypal atau membayar dengan kartu. Ini semua adalah alternatif dari kasus penggunaan "bayar barang". Saya dapat memilih salah satu dari opsi ini tergantung pada preferensi saya.

Sebenarnya tidak ada alternatif lain untuk "membayar barang"! Dalam UML saat ini, "bayar pengiriman" adalah perpanjangan, dan "bayar menggunakan paypal" / "bayar dengan kartu" adalah spesialisasi.


5

"Include" digunakan untuk memperpanjang penggunaan dasar kasus dan itu adalah suatu kondisi yang harus dipenuhi yaitu penggunaan jalankan kasus harus berjalan dengan sukses untuk menyelesaikan penggunaan basis.

Misalnya, pertimbangkan kasing Layanan Email, di sini "Login" adalah kasing yang disertakan yang harus dijalankan untuk mengirim Email (Kasing kasing)

"Mengecualikan" di sisi lain adalah kasus penggunaan opsional yang memperpanjang kasus penggunaan dasar, kasus penggunaan dasar dapat berjalan dengan sukses bahkan tanpa memanggil / memanggil kasus penggunaan memperluas.

mis. Pertimbangkan "Pembelian Laptop" sebagai case use dasar dan "Warranty Tambahan" sebagai perpanjangan use case, di sini Anda dapat menjalankan case use dasar "Pembelian Laptop" bahkan tanpa mengambil garansi tambahan.


mungkin kasus "melakukan" pembayaran akan berfungsi sebagai "termasuk" untuk membeli laptop? Saya mengatakan ini karena senang memiliki contoh 'bersama' dalam skenario yang sama. Selain itu, melakukan pembayaran adalah sesuatu yang akan digunakan dalam banyak skenario yang berbeda, jadi sepertinya itu mungkin menjadi kandidat yang cocok untuk <<termasuk>>.
baxx

Loginsama sekali bukan kasus penggunaan. Ini adalah fungsi yang dilakukan untuk memenuhi pra-kondisi.
qwerty_so


4

Elemen Diagram

  • Aktor: Juga disebut Peran. Nama dan stereotip aktor dapat diubah di tab Properties-nya.

  • Warisan: Memperbaiki hubungan antar aktor. Relasi ini dapat membawa nama dan stereotip.

  • Gunakan kasus: Ini dapat memiliki Poin Ekstensi.

  • Poin Ekstensi: Ini menentukan lokasi tempat ekstensi dapat ditambahkan.

  • Asosiasi: Antara peran dan kasus penggunaan. Berguna untuk memberi asosiasi nama yang berbicara.

  • Ketergantungan: Antara use case. Dependensi seringkali memiliki stereotip untuk mendefinisikan peran dependensi dengan lebih baik. Untuk memilih stereotip, pilih ketergantungan dari diagram atau panel Navigasi, lalu ubah stereotip di tab Properti. Ada dua jenis dependensi khusus: <<extend>>dan <<include>>, yang Poseidon menawarkan tombolnya sendiri (lihat di bawah).

  • Perpanjang hubungan: Hubungan uni-directional antara dua kasus penggunaan. Memperluas hubungan antara use case B dan use case A berarti bahwa perilaku B dapat dimasukkan dalam A.

  • Sertakan hubungan: Hubungan uni-directional antara dua kasus penggunaan. Seperti hubungan antara kasus penggunaan A dan B berarti, bahwa perilaku B selalu termasuk dalam A.

  • Batas sistem: Batas sistem sebenarnya tidak diimplementasikan sebagai elemen model dalam Poseidon untuk UML. Anda bisa menggambar sebuah persegi panjang, mengirimkannya ke latar belakang dan menggunakannya sebagai batas sistem dengan meletakkan semua kotak penggunaan yang sesuai di dalam persegi panjang.


4

Kedua <include> dan <extend>tergantung pada kelas dasar tetapi <extend>bersifat opsional yaitu, ia berasal dari kelas dasar tetapi dalam sudut pandang pengguna dapat digunakan atau tidak dapat digunakan.

<include>tergabung dalam kelas dasar yaitu, wajib untuk digunakan <include>dalam kasus penggunaan Anda atau dianggap tidak lengkap.

misalnya:

Dalam konstruksi mesin ATM (menurut sudut pandang pengguna):

1: Penarikan, setoran tunai dan pengecekan rekening dilakukan <extend>karena tergantung pada pengguna apakah akan menarik atau menyetor atau memeriksa. Ini adalah hal-hal opsional yang dilakukan pengguna.

2: "Masukkan pin, letakkan kartu, lepaskan kartu" ini adalah hal-hal yang masuk <include>karena pengguna harus, dan harus, meletakkan kartu dan memasukkan pin yang valid untuk verifikasi.


3

Saya tidak merekomendasikan penggunaan ini untuk mengingat keduanya:

Kasus penggunaan saya: Saya akan ke kota.

termasuk -> mengendarai mobil

memanjang -> mengisi bensin

Saya lebih suka Anda menggunakan: Kasus penggunaan saya: Saya akan ke kota.

meluas -> menyetir mobil

termasuk -> isi bensin

Saya diajarkan bahwa memperluas hubungan melanjutkan perilaku kelas dasar. Fungsionalitas kelas dasar harus ada di sana. Hubungan include di sisi lain, mirip dengan fungsi yang dapat disebut. Mei dicetak tebal.

Ini bisa dilihat dari agilemodeling Reuse in Use-Case Models


Itu lebih baik membaca "mengisi bensin -> meluas" karena UC utama Anda tidak memperpanjang "isi bensin". Kecuali Anda adalah perusahaan bensin.
qwerty_so

3

Perbedaan antara keduanya telah dijelaskan di sini. Tapi yang belum dijelaskan adalah fakta itu <<include>>dan<<extend>> seharusnya tidak digunakan sama sekali.

Jika Anda membaca Bittner / Spence Anda tahu bahwa use case adalah tentang sintesis, bukan analisis. Penggunaan kembali use case adalah omong kosong. Jelas menunjukkan bahwa Anda telah memotong domain Anda dengan 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. Tetapi di tempat lain tugas Anda sebagai BA adalah mencoba menemukan USP. Dan itu harus disajikan dalam kasus penggunaan yang baik.

Setiap kali saya melihat orang menggunakan salah satu dari hubungan itu adalah ketika mereka mencoba melakukan dekomposisi fungsional. Dan itu jelas salah.

Sederhananya: jika Anda dapat menjawab bos Anda tanpa ragu-ragu "Saya telah melakukan ..." maka "..." adalah kasus penggunaan Anda karena Anda mendapat uang untuk melakukannya. (Itu juga akan menjelaskan bahwa "login" sama sekali bukan use case.)

Dalam hal itu, menemukan kasus penggunaan mandiri yang termasuk atau memperpanjang kasus penggunaan lainnya sangat tidak mungkin. Akhirnya Anda dapat menggunakan <<extend>>untuk menunjukkan opsionalitas sistem Anda, yaitu beberapa skema lisensi yang memungkinkan untuk memasukkan kasus penggunaan untuk beberapa lisensi atau untuk menghilangkannya. Tapi selain itu - hindari saja.


3

Extends digunakan ketika Anda memahami bahwa use case Anda terlalu rumit. Jadi, Anda mengekstrak langkah-langkah kompleks ke dalam kasus penggunaan "ekstensi" mereka sendiri.

Termasuk digunakan ketika Anda melihat perilaku umum dalam dua kasus penggunaan. Jadi Anda abstrak perilaku umum menjadi kasus penggunaan "abstrak" yang terpisah.

(ref: Jeffrey L. Whitten, Lonnie D. Bentley, Analisis sistem & metode desain, McGraw-Hill / Irwin, 2007)


1
Extend tidak ada hubungannya dengan use case yang terlalu kompleks. Pendekatan itu akan mengarah pada membangun dekomposisi fungsional daripada model Use Case yang sebenarnya.
Doug Knesek

1
Saya pikir konsep-konsep rekayasa perangkat lunak dan, secara umum, segala sesuatu yang mendekati ilmu-ilmu manusia menjadi lebih banyak berbasis pendapat. Saya sudah memasukkan referensi (Lihat halaman 248). Jangan terlalu keras, man :)
mrmashal

3

The termasuk hubungan memungkinkan seseorang menggunakan kasus untuk memasukkan langkah-langkah dari kasus penggunaan lain.

Sebagai contoh, misalkan Anda memiliki Akun Amazon dan Anda ingin memeriksa pesanan, nah tidak mungkin untuk memeriksa pesanan tanpa terlebih dahulu masuk ke akun Anda. Jadi aliran acara ingin jadi ...

masukkan deskripsi gambar di sini

The memperpanjang hubungan digunakan untuk menambahkan langkah ekstra untuk aliran kasus penggunaan, yang biasanya merupakan langkah opsional ...

masukkan deskripsi gambar di sini

Bayangkan kita masih berbicara tentang akun amazon Anda. Mari kita asumsikan kasus dasar adalah Pesanan dan kasus penggunaan ekstensi adalah Amazon Prime . Pengguna dapat memilih untuk hanya memesan barang secara teratur, atau, pengguna memiliki opsi untuk memilih Amazon Prime yang memastikan pesanannya akan tiba lebih cepat dengan biaya lebih tinggi.

Namun, perhatikan bahwa pengguna tidak harus memilih Amazon Prime, ini hanya opsi, mereka dapat memilih untuk mengabaikan kasus penggunaan ini.


Kasus penggunaan seperti apa yang seharusnya Amazon Prime? Bahkan tidak mengandung kata kerja.
qwerty_so

0

Saya suka menganggap "termasuk" sebagai prasyarat / pendampingan yang diperlukan dari kasus penggunaan dasar. Ini berarti bahwa use case dasar tidak dapat dianggap lengkap tanpa use case yang disertakan. Saya akan memberikan contoh situs web e-commerce yang menjual barang kepada pelanggan. Tidak mungkin Anda dapat membayar item tanpa terlebih dahulu memilih item itu dan memasukkannya ke troli. Ini menyiratkan bahwa kasus penggunaan "Bayar untuk Barang" termasuk "pilih barang".

Ada berbagai kegunaan ekstensi tetapi saya suka menganggapnya sebagai alternatif yang mungkin atau mungkin tidak digunakan. Misalnya - masih di situs e-commerce. Saat membayar untuk suatu barang, Anda dapat memilih untuk membayar pada pengiriman, membayar menggunakan paypal atau membayar dengan kartu. Ini semua adalah alternatif dari kasus penggunaan "bayar barang". Saya dapat memilih salah satu dari opsi ini tergantung pada preferensi saya.

Untuk lebih jelas dan aturan seputar kasus penggunaan, baca artikel saya di sini:

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


1
Selamat Datang di Stack Overflow! Terima kasih telah mengirim jawaban Anda! Pastikan untuk membaca FAQ tentang Promosi Diri dengan cermat. Bukan jawaban yang buruk, sungguh; tapi ketahuilah apa yang dikatakan FAQ tentang posting promosi diri.
Andrew Barber

Diagram UC di bagian bawah tautan Anda hanyalah anti-pola. Baik akun loginmaupun kasing tidak createdigunakan. Keduanya adalah fungsi. Karenanya -1
qwerty_so
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.