อะไรคือความแตกต่างระหว่างinclude
และextend
ในแผนภาพกรณีใช้ ?
อะไรคือความแตกต่างระหว่างinclude
และextend
ในแผนภาพกรณีใช้ ?
คำตอบ:
Extendจะใช้เมื่อกรณีการใช้งานเพิ่มขั้นตอนให้กับกรณีการใช้งานระดับเฟิร์สคลาสอื่น
ตัวอย่างเช่นลองนึกภาพ "ถอนเงินสด" เป็นกรณีการใช้งานของเครื่องถอนเงินอัตโนมัติ (ATM) "ประเมินค่าธรรมเนียม" จะขยายถอนเงินสดและอธิบาย"จุดขยาย" ตามเงื่อนไขที่มีการยกตัวอย่างเมื่อผู้ใช้ ATM ไม่ได้ธนาคารที่สถาบันการเป็นเจ้าของ ATM โปรดสังเกตว่ากรณีการใช้งาน "ถอนเงินสด" พื้นฐานนั้นจะดำเนินการเอง แต่ไม่มีส่วนขยาย
การรวมถูกใช้เพื่อแยกแฟรกเมนต์การใช้เคสที่ซ้ำกันในหลายเคสการใช้งาน กรณีการใช้งานที่รวมไว้ไม่สามารถแยกออกจากกันได้และกรณีใช้งานดั้งเดิมไม่เสร็จสมบูรณ์ นี้ควรใช้เท่าที่จำเป็นและในกรณีที่การทำซ้ำมีความสำคัญและมีอยู่โดยการออกแบบ (มากกว่าโดยบังเอิญ)
ตัวอย่างเช่นการไหลของเหตุการณ์ที่เกิดขึ้นที่จุดเริ่มต้นของทุก ATM ใช้กรณี (เมื่อผู้ใช้ใส่ในบัตร ATM ของพวกเขาป้อน PIN ของพวกเขาและแสดงเมนูหลัก) จะเป็นตัวเลือกที่ดีสำหรับการรวม
Include is used to extract use case fragments that are duplicated in multiple use cases
สิ่งที่เป็นสารสกัดในขั้นตอนเหล่านั้นputs in their ATM card, enters their PIN, and is shown the main menu
? ขอบคุณ
สิ่งนี้อาจเป็นที่ถกเถียงกัน แต่“ รวมอยู่เสมอและขยายออกไปเป็นบางครั้ง” เป็นความเข้าใจผิดที่พบบ่อยมากซึ่งเกือบจะนำมาซึ่งความหมายตามความเป็นจริง นี่เป็นวิธีที่ถูกต้อง (ในมุมมองของฉันและตรวจสอบกับ Jacobson, Fowler, Larmen และการอ้างอิงอื่น ๆ 10 รายการ)
กุญแจสำคัญในการรวมและขยายความสัมพันธ์เคสการใช้คือการตระหนักว่าโดยทั่วไปกับส่วนที่เหลือของ UML ลูกศรประระหว่างเคสการใช้คือความสัมพันธ์แบบพึ่งพา ฉันจะใช้คำว่า 'ฐาน', 'รวม' และ 'ขยาย' เพื่ออ้างถึงบทบาทกรณีใช้งาน
กรณีการใช้งานพื้นฐานขึ้นอยู่กับกรณีการใช้งานที่รวมอยู่ กรณีที่ไม่มีการใช้งานโดยพื้นฐานจะไม่สมบูรณ์เนื่องจากกรณีการใช้งานที่รวมมานั้นแสดงถึงลำดับย่อยของการโต้ตอบที่อาจเกิดขึ้นเสมอหรือบางครั้ง (นี่เป็นสิ่งที่ตรงกันข้ามกับความเข้าใจผิดที่เป็นที่นิยมเกี่ยวกับเรื่องนี้สิ่งที่กรณีการใช้งานของคุณแนะนำมักจะเกิดขึ้นในสถานการณ์หลักและบางครั้งเกิดขึ้นในกระแสทางเลือกขึ้นอยู่กับสิ่งที่คุณเลือกเป็นสถานการณ์หลักของคุณ เป็นสถานการณ์หลักและสิ่งนี้ไม่สำคัญ)
ในแนวปฏิบัติที่ดีที่สุดของการพึ่งพาทางเดียวกรณีใช้งานพื้นฐานรู้เกี่ยวกับ (และอ้างถึง) กรณีใช้รวม แต่กรณีใช้รวมไม่ควร 'รู้' เกี่ยวกับกรณีใช้ฐาน นี่คือเหตุผลที่กรณีการใช้งานที่รวมสามารถ: a) กรณีการใช้งานพื้นฐานในสิทธิของตนเองและ b) แบ่งปันโดยจำนวนกรณีการใช้งานพื้นฐาน
กรณีการใช้งานที่ขยายขึ้นอยู่กับกรณีการใช้งานพื้นฐาน; แท้จริงมันขยายพฤติกรรมที่อธิบายโดยกรณีการใช้ฐาน กรณีการใช้งานพื้นฐานควรเป็นกรณีการใช้งานที่สมบูรณ์แบบในสิทธิ์ของตัวเอง ('รวมอยู่ในหลักสูตรรวมอยู่ด้วย) โดยไม่ต้องมีฟังก์ชั่นเพิ่มเติมของกรณีการใช้งานเพิ่มเติม
การขยายการใช้เคสสามารถใช้ในหลายสถานการณ์:
สิ่งสำคัญที่ควรพิจารณาคือกรณีการใช้งานที่ขยายสามารถ 'แทรก' พฤติกรรมในหลาย ๆ ที่ในการไหลของกรณีการใช้งานพื้นฐานไม่เพียงแค่ในที่เดียวเช่นกรณีการใช้งานที่รวม ด้วยเหตุผลนี้จึงไม่น่าเป็นไปได้อย่างมากที่กรณีการใช้งานที่ขยายจะเหมาะสมที่จะขยายกรณีการใช้งานพื้นฐานมากกว่าหนึ่งกรณี
สำหรับการพึ่งพากรณีการใช้งานที่ขยายจะขึ้นอยู่กับกรณีการใช้งานพื้นฐานและเป็นการอ้างอิงแบบทางเดียวอีกครั้งนั่นคือกรณีการใช้งานพื้นฐานไม่จำเป็นต้องมีการอ้างอิงใด ๆ กับกรณีการใช้งานที่ขยายเพิ่มเติมในลำดับ นั่นไม่ได้หมายความว่าคุณไม่สามารถแสดงจุดส่วนขยายหรือเพิ่ม x-ref ไปยังกรณีการใช้งานที่ขยายในที่อื่น ๆ ในเทมเพลต แต่กรณีการใช้งานพื้นฐานจะต้องสามารถทำงานได้โดยไม่ต้องใช้กรณีขยาย
ฉันหวังว่าฉันแสดงให้เห็นว่าการเข้าใจผิดที่พบบ่อยของ“ การรวมอยู่เสมอการขยายตัวบางครั้ง” นั้นผิดหรือเรียบง่ายที่สุด รุ่นนี้เหมาะสมกว่าหากคุณพิจารณาปัญหาทั้งหมดเกี่ยวกับทิศทางของลูกศรที่นำเสนอความเข้าใจผิด - ในรูปแบบที่ถูกต้องมันเป็นเพียงการพึ่งพาและจะไม่เปลี่ยนแปลงหากคุณปรับโครงสร้างเนื้อหาของกรณีการใช้งานอีกครั้ง
ฉันมักจะใช้สิ่งนี้เพื่อจดจำทั้งสอง:
กรณีการใช้งานของฉัน: ฉันกำลังจะไปเมือง
รวมถึง -> ขับรถ
ขยาย -> เติมน้ำมัน
"เติมน้ำมัน" อาจไม่จำเป็นตลอดเวลา แต่อาจจำเป็นต้องเลือกก็ได้ตามปริมาณน้ำมันที่เหลืออยู่ในรถ "ขับรถ" เป็นข้อกำหนดเบื้องต้นดังนั้นฉันจึงรวมถึง
การใช้เคสใช้สำหรับทำเอกสารพฤติกรรมเช่นตอบคำถามนี้
พฤติกรรมจะขยายออกไปอีกถ้ามันนอกเหนือไปจาก แต่ไม่จำเป็นต้องเป็นส่วนหนึ่งของพฤติกรรมเช่นค้นคว้าคำตอบ
โปรดทราบว่าการค้นคว้าคำตอบนั้นไม่สมเหตุสมผลหากคุณไม่พยายามตอบคำถาม
พฤติกรรมจะรวมอยู่ในอีกกรณีหนึ่งหากเป็นส่วนหนึ่งของพฤติกรรมรวมเช่นล็อกอินเข้าสู่การแลกเปลี่ยนสแต็ก
เพื่อชี้แจงภาพประกอบที่เป็นจริงก็ต่อเมื่อคุณต้องการที่จะตอบที่นี่ในกองมากเกินไป :)
นี่คือข้อกำหนดทางเทคนิคจากUML 2.5หน้า 671-672
ฉันเน้นสิ่งที่ฉันคิดว่าเป็นจุดสำคัญ
ขยาย
การขยายคือความสัมพันธ์จากการขยาย UseCase (ส่วนขยาย) ไปยัง UseCase เพิ่มเติม (ExtendedCase) ที่ระบุวิธีและเวลาที่พฤติกรรมที่กำหนดไว้ใน UseCase ที่ขยายสามารถแทรกลงในลักษณะการทำงานที่กำหนดไว้ใน UseCase ที่ขยาย ส่วนขยายเกิดขึ้นที่จุดส่วนขยายอย่างน้อยหนึ่งจุดที่กำหนดไว้ใน UseCase ที่ขยายเพิ่ม
Extend มีวัตถุประสงค์เพื่อใช้เมื่อมีพฤติกรรมเพิ่มเติมบางอย่างที่ควรเพิ่มอาจเป็นไปตามเงื่อนไขกับพฤติกรรมที่กำหนดไว้ใน UseCases หนึ่งรายการหรือมากกว่า
usecase ขยายที่ถูกกำหนดให้เป็นอิสระจากการขยาย usecase และมีความหมายเป็นอิสระจาก usecase บนมืออื่น ๆ ที่ขยาย usecaseมักจะกำหนดพฤติกรรมที่อาจไม่จำเป็นต้องมีความหมายด้วยตัวเอง แต่การขยาย UseCase จะกำหนดชุดของการเพิ่มขึ้นของลักษณะการทำงานแบบแยกส่วนที่เพิ่มการดำเนินการของ UseCase ที่เพิ่มขึ้นภายใต้เงื่อนไขที่เฉพาะเจาะจง
...
รวม
รวมเป็น DirectedRelationship ระหว่างสอง UseCases ซึ่งระบุว่าพฤติกรรมของUseCase ที่รวมไว้ (การเพิ่ม) ถูกแทรกลงในลักษณะการทำงานของ Include UseCase ( theincluding ) นอกจากนี้ยังเป็นชนิดของ NamedElement เพื่อให้สามารถมีชื่อในบริบทของ UseCase ที่เป็นเจ้าของ (theincludeCase) UseCase ที่รวมถึงอาจขึ้นอยู่กับการเปลี่ยนแปลงที่เกิดขึ้นจากการดำเนินการ UseCase ที่รวมไว้ UseCase ที่รวมไว้ต้องพร้อมใช้งานเพื่อให้สามารถอธิบายลักษณะการทำงานของ UseCase ได้อย่างสมบูรณ์
ความสัมพันธ์แบบรวมมีวัตถุประสงค์เพื่อใช้เมื่อมีส่วนร่วมของพฤติกรรมของ UseCases ตั้งแต่สองรายการขึ้นไป นี้ เป็นส่วนหนึ่งที่พบบ่อยสกัดไปแล้ว usecase แยกต่างหากที่จะรวมทุก usecases ฐานมีส่วนนี้ในการร่วมกัน เนื่องจากการใช้งานหลักของความสัมพันธ์แบบรวมมีไว้เพื่อนำชิ้นส่วนทั่วไปกลับมาใช้ใหม่สิ่งที่เหลืออยู่ในUseCase พื้นฐานมักจะไม่สมบูรณ์ในตัวเองแต่ขึ้นอยู่กับส่วนต่าง ๆ ที่มีความหมาย สิ่งนี้สะท้อนให้เห็นในทิศทางของความสัมพันธ์ซึ่งบ่งชี้ว่าฐาน UseCase ขึ้นอยู่กับการเพิ่ม แต่ไม่ใช่ในทางกลับกัน
...
ฉันคิดว่ามันเป็นสิ่งสำคัญที่จะเข้าใจความตั้งใจของการรวมและขยาย:
"รวมถึงความสัมพันธ์ที่มีไว้สำหรับการนำพฤติกรรมรูปแบบโดยการใช้งานอื่นในขณะที่ความสัมพันธ์ขยายมีไว้สำหรับ การเพิ่มส่วนกรณีการใช้งานที่มีอยู่เช่นเดียวกับสำหรับการสร้างแบบจำลองตัวเลือกบริการของระบบ" (Overgaard และ Palmkvist, กรณีการใช้งาน:. รูปแบบและพิมพ์เขียวแอดดิสัน - เวสลีย์, 2004)
เรื่องนี้อ่านให้ฉันเป็น:
รวม = นำการใช้งานซ้ำมาใช้ (เช่นใช้ฟังก์ชันที่รวมอยู่หรือสามารถใช้ที่อื่นในระบบ) รวมถึงหมายถึงการอ้างอิงในกรณีการใช้งานอื่น
ขยาย = เพิ่ม (ไม่ได้นำมาใช้ใหม่) การทำงานและยังใดตัวเลือกฟังก์ชั่น ขยายดังนั้นสามารถแสดงหนึ่งในสองสิ่ง:
1. การเพิ่มคุณสมบัติ / ความสามารถใหม่ให้กับกรณีการใช้งาน (ตัวเลือกหรือไม่)
2. ตัวเลือกใด ๆกรณีการใช้งาน (ที่มีอยู่หรือไม่)
สรุป:
รวมถึง = นำมาใช้ใหม่ของฟังก์ชันการทำงาน
ขยาย = ใหม่และ / หรือฟังก์ชั่นเสริม
คุณมักจะพบการใช้งานครั้งที่ 2 (เช่นฟังก์ชั่นเสริม) ของการขยายเพราะถ้าฟังก์ชั่นไม่ได้เป็นตัวเลือกเวลาส่วนใหญ่จะถูกสร้างไว้ในกรณีการใช้งานของตัวเองแทนที่จะเป็นส่วนขยาย อย่างน้อยนั่นก็เป็นประสบการณ์ของฉัน (Julian C ชี้ให้เห็นว่าบางครั้งคุณเห็นการใช้งานครั้งที่ 1 (เช่นการเพิ่มคุณสมบัติใหม่) ของการขยายเมื่อโครงการเข้าสู่ระยะที่ 2)
เพื่อให้ง่ายขึ้น
สำหรับ include
ตัวอย่างทั่วไป: ระหว่างล็อกอินและยืนยันรหัสผ่าน
(เข้าสู่ระบบ) --- << รวม >> --- > (ยืนยันรหัสผ่าน)
เพื่อให้กระบวนการเข้าสู่ระบบสำเร็จ "ยืนยันรหัสผ่าน" จะต้องประสบความสำเร็จเช่นกัน
สำหรับ extend
ตัวอย่างทั่วไป: ระหว่างการเข้าสู่ระบบและแสดงข้อความข้อผิดพลาด (บางครั้งเกิดขึ้นเท่านั้น)
(เข้าสู่ระบบ) < --- << ขยาย >> --- (แสดงข้อความผิดพลาด)
"แสดงข้อความแสดงข้อผิดพลาด" บางครั้งก็เกิดขึ้นเมื่อกระบวนการล็อกอินล้มเหลว
ฉันคิดว่าสิ่งที่ msdn อธิบายไว้ที่นี่นั้นค่อนข้างเข้าใจง่าย
รวม [5]
รวมถึงการใช้กรณีการโทรหรือเรียกหนึ่งรวม การรวมจะใช้เพื่อแสดงว่ากรณีการใช้งานแตกเป็นขั้นตอนที่เล็กลงอย่างไร กรณีการใช้งานรวมอยู่ที่ปลายหัวลูกศร
ขยาย [6]
ในขณะเดียวกันกรณีใช้งานที่ขยายเพิ่มจะเพิ่มเป้าหมายและขั้นตอนให้กับเคสที่ใช้เพิ่มเติม ส่วนขยายทำงานภายใต้เงื่อนไขบางประการเท่านั้น กรณีการใช้เพิ่มเติมอยู่ที่ปลายหัวลูกศร
เรามาทำให้เรื่องนี้ชัดเจนยิ่งขึ้น เราใช้include
ทุกครั้งที่เราต้องการแสดงความจริงว่าการมีอยู่ของกรณีหนึ่งขึ้นอยู่กับการมีอยู่ของอีกกรณี
ตัวอย่าง:
ผู้ใช้สามารถช็อปปิ้งออนไลน์ได้เฉพาะหลังจากที่เขาเข้าสู่ระบบบัญชีของเขา กล่าวอีกนัยหนึ่งเขาไม่สามารถช็อปปิ้งใด ๆ จนกว่าเขาจะเข้าสู่ระบบบัญชีของเขา
ผู้ใช้ไม่สามารถดาวน์โหลดจากเว็บไซต์ก่อนที่จะอัปโหลดเนื้อหา ดังนั้นฉันไม่สามารถดาวน์โหลดได้หากไม่มีการอัปโหลด
คุณเข้าใจไหม?
มันเกี่ยวกับผลตามเงื่อนไข ฉันไม่สามารถทำได้ถ้าก่อนหน้านี้ฉันไม่ได้ทำเช่นนั้นฉันไม่สามารถทำเช่นนี้หากก่อนหน้านี้ผมไม่ได้ทำอย่างนั้น
Include
อย่างน้อยผมคิดว่านี่เป็นวิธีการที่เหมาะสมที่เราใช้ ฉันมักจะคิดว่าตัวอย่างกับแล็ปท็อปและการรับประกันจากด้านบนนั้นน่าเชื่อถือที่สุด!
เมื่อใดก็ตามที่มีข้อกำหนดเบื้องต้นสำหรับ usecase ให้ไปรวม
สำหรับ usecases ที่มีการพิสูจน์ตัวตนสถานการณ์กรณีที่เลวร้ายที่สุดหรือเป็นทางเลือกให้ไปขยาย ..
ตัวอย่าง: สำหรับกรณีการใช้งานในการหาทางเข้าชมการนัดหมายจองตั๋วคุณต้องกรอกแบบฟอร์ม (แบบฟอร์มลงทะเบียนหรือข้อเสนอแนะ) .... นี่คือที่มารวมถึง ..
ตัวอย่าง: สำหรับกรณีการใช้งานที่ยืนยันว่าลงชื่อเข้าใช้หรือลงชื่อเข้าใช้บัญชีของคุณการพิสูจน์ตัวตนของคุณเป็นสิ่งที่ต้องคำนึงถึงกรณีที่เลวร้ายที่สุดเช่นหนังสือกลับมาอย่างดี .. ไม่ได้รับการจอง .. จ่ายบิลหลังวันที่ ที่ขยายมาเล่น ...
อย่ารวมมากเกินไปและขยายในไดอะแกรม
ให้มันเรียบง่ายงัว !!!
นอกจากนี้ระวังของรุ่น UML: มันเป็นเวลานานแล้วที่ << >> ใช้และรวมถึง << >> ได้ถูกแทนที่ด้วย << >> รวมและขยาย << >> โดย<< >> ขยายและทั่วไป
สำหรับฉันที่มักจะเป็นจุดที่ทำให้เข้าใจผิด: เป็นตัวอย่างโพสต์และลิงก์ของสเตฟานีเกี่ยวกับรุ่นเก่า:
เมื่อชำระเงินสำหรับรายการคุณอาจเลือกที่จะชำระเงินในการจัดส่งจ่ายโดยใช้ paypal หรือชำระเงินด้วยบัตร สิ่งเหล่านี้เป็นทางเลือกทั้งหมดสำหรับกรณีการใช้ "ชำระค่าสินค้า" ฉันอาจเลือกตัวเลือกใด ๆ เหล่านี้ขึ้นอยู่กับความชอบของฉัน
อันที่จริงไม่มีทางเลือกอื่นที่จะ "จ่ายเงินสำหรับสินค้า"! ในปัจจุบัน UML การจ่ายเงินเมื่อส่งมอบเป็นการขยายและ "จ่ายโดยใช้ paypal" / "จ่ายด้วยบัตร" เป็นความเชี่ยวชาญ
"รวม" จะถูกใช้เพื่อขยายกรณีการใช้งานพื้นฐานและเป็นเงื่อนไขที่ต้องใช้เช่นการใช้งานกรณีที่เรียกใช้จะต้องเรียกใช้สำเร็จเพื่อให้การใช้งานพื้นฐานเสร็จสมบูรณ์
เช่นพิจารณากรณีของบริการอีเมลที่นี่ "เข้าสู่ระบบ" เป็นกรณีการใช้งานที่รวมอยู่ซึ่งจะต้องเรียกใช้เพื่อส่งอีเมล (กรณีการใช้งานพื้นฐาน)
"ยกเว้น" ในอีกกรณีหนึ่งคือกรณีใช้เสริมซึ่งขยายกรณีใช้งานพื้นฐานกรณีใช้งานพื้นฐานสามารถทำงานได้สำเร็จแม้จะไม่มีการเรียกใช้ / เรียกกรณีใช้งานที่ขยายออกมา
เช่นพิจารณา "การจัดซื้อแล็ปท็อป" เป็นกรณีการใช้งานพื้นฐานและ "การรับประกันเพิ่มเติม" เป็นกรณีขยายการใช้งานที่นี่คุณสามารถเรียกใช้กรณีการใช้งานพื้นฐาน "ซื้อแล็ปท็อป" ได้โดยไม่ต้องมีการรับประกันเพิ่มเติม
Login
ไม่ใช่กรณีการใช้งานเลย มันเป็นฟังก์ชั่นที่ทำขึ้นเพื่อเติมเต็มเงื่อนไขล่วงหน้า
นี่เป็นแหล่งข้อมูลที่ยอดเยี่ยมพร้อมคำอธิบายที่ดี: กรณีใช้งานคืออะไร กรณีขยายเวลาการใช้งานคืออะไร
กรณีการใช้งานที่ขยายโดยทั่วไปจะกำหนดพฤติกรรมที่เป็นตัวเลือก มันเป็นอิสระจากกรณีการใช้งานที่ขยาย
รวมใช้เพื่อแยกส่วนทั่วไปของพฤติกรรมของกรณีการใช้งานสองกรณีขึ้นไป
องค์ประกอบไดอะแกรม
นักแสดง: เรียกอีกอย่างว่าบทบาท ชื่อและแบบแผนของนักแสดงสามารถเปลี่ยนแปลงได้ในแท็บคุณสมบัติ
การสืบทอด: การปรับแต่งความสัมพันธ์ระหว่างนักแสดง ความสัมพันธ์นี้สามารถมีชื่อและแบบแผน
ใช้กรณี: สิ่งเหล่านี้สามารถมีคะแนนส่วนขยาย
จุดส่วนขยาย: นี่เป็นการกำหนดตำแหน่งที่ตั้งที่สามารถเพิ่มส่วนขยาย
สมาคม: ระหว่างบทบาทและกรณีการใช้งาน มันจะมีประโยชน์ที่จะให้ชื่อที่พูดสมาคม
การพึ่งพา: ระหว่างกรณีการใช้งาน การพึ่งพามักจะมีกฎตายตัวเพื่อกำหนดบทบาทของการพึ่งพาได้ดียิ่งขึ้น ในการเลือกภาพพิมพ์ให้เลือกการพึ่งพาจากไดอะแกรมหรือบานหน้าต่างนำทางจากนั้นเปลี่ยนภาพรวมในแท็บคุณสมบัติ มีการพึ่งพาสองแบบพิเศษ: <<extend>>
และ<<include>>
ที่โพไซดอนมีปุ่มของตัวเอง (ดูด้านล่าง)
ขยายความสัมพันธ์: ความสัมพันธ์แบบทิศทางเดียวระหว่างสองกรณีใช้งาน การขยายความสัมพันธ์ระหว่างกรณีใช้งาน B และกรณีใช้ A หมายความว่าพฤติกรรมของ B สามารถรวมอยู่ใน A
รวมความสัมพันธ์: ความสัมพันธ์แบบทิศทางเดียวระหว่างกรณีใช้งานสองกรณี ความสัมพันธ์ระหว่างกรณีการใช้งาน A และ B หมายถึงพฤติกรรมของ B นั้นรวมอยู่ใน A เสมอ
เส้นขอบของระบบ: เส้นขอบของระบบไม่ได้ถูกนำไปใช้จริงตามองค์ประกอบแบบจำลองในโพไซดอนสำหรับ UML คุณสามารถวาดสี่เหลี่ยมส่งไปยังพื้นหลังและใช้เป็นเส้นขอบระบบโดยใส่เคสการใช้ที่เกี่ยวข้องทั้งหมดไว้ในสี่เหลี่ยมผืนผ้า
ทั้งสอง<include>
และ<extend>
ขึ้นอยู่กับคลาสฐาน แต่<extend>
เป็นทางเลือกนั่นคือมันมาจากคลาสฐาน แต่ในมุมมองของผู้ใช้มันอาจจะใช้หรืออาจไม่ได้ใช้
<include>
ถูกรวมอยู่ในคลาสฐานคือมันเป็นข้อบังคับที่จะใช้ <include>
ในกรณีการใช้งานของคุณมิฉะนั้นจะถือว่าไม่สมบูรณ์
เช่น:
ในการก่อสร้างเครื่อง ATM (ตามมุมมองของผู้ใช้):
1: ถอนเงินฝากเงินสดและตรวจสอบบัญชีที่อยู่ภายใต้<extend>
เพราะมันขึ้นอยู่กับผู้ใช้ว่าจะถอนหรือฝากหรือตรวจสอบ สิ่งเหล่านี้เป็นทางเลือกที่ผู้ใช้ทำ
2: "ใส่พินการวางการ์ดการถอดการ์ด" สิ่งเหล่านี้เป็นสิ่งที่เกิดขึ้น<include>
เนื่องจากผู้ใช้จะต้องใส่การ์ดและป้อนพินที่ถูกต้องสำหรับการตรวจสอบ
ฉันไม่แนะนำให้ใช้สิ่งนี้เพื่อจดจำสองสิ่งนี้:
กรณีการใช้งานของฉัน: ฉันกำลังจะไปเมือง
รวมถึง -> ขับรถ
ขยาย -> เติมน้ำมัน
ฉันอยากให้คุณใช้: กรณีการใช้ของฉัน: ฉันกำลังจะไปที่เมือง
ขยาย -> ขับรถ
รวมถึง -> เติมน้ำมัน
กำลังสอนว่าการขยายความสัมพันธ์ยังคงมีพฤติกรรมของคลาสฐานต่อไป ฟังก์ชันพื้นฐานระดับต้องมี ความสัมพันธ์แบบรวมในอีกทางหนึ่งคล้ายกับฟังก์ชั่นที่อาจเรียกได้ว่า พฤษภาคมเป็นตัวหนา
ดังจะเห็นได้จากการ ใช้ agilemodeling ซ้ำใน Use-Case Models
ความแตกต่างระหว่างทั้งสองได้รับการอธิบายที่นี่ แต่สิ่งที่ไม่ได้รับการอธิบายคือความจริงที่<<include>>
และ<<extend>>
ไม่ควรใช้เลย
ถ้าคุณอ่าน Bittner / Spence คุณรู้ว่าการใช้เคสเกี่ยวกับการสังเคราะห์ไม่ใช่การวิเคราะห์ กรณีการใช้ซ้ำเป็นเรื่องไร้สาระ มันแสดงให้เห็นอย่างชัดเจนว่าคุณตัดโดเมนของคุณผิด มูลค่าเพิ่มจะต้องไม่ซ้ำกันต่อ se การนำมูลค่าเพิ่มกลับมาใช้ใหม่เท่านั้นที่ฉันรู้จักคือแฟรนไชส์ ดังนั้นถ้าคุณอยู่ในธุรกิจเบอร์เกอร์ แต่งานของคุณในฐานะ BA คือการพยายามหา USP และจะต้องนำเสนอในกรณีการใช้งานที่ดี
เมื่อใดก็ตามที่ฉันเห็นคนใช้หนึ่งในความสัมพันธ์เหล่านั้นก็คือเมื่อพวกเขาพยายามที่จะสลายตัวการทำงาน และนั่นเป็นสิ่งที่ผิดธรรมดา
พูดง่าย ๆ : ถ้าคุณสามารถตอบเจ้านายของคุณได้โดยไม่ลังเลว่า "ฉันทำไปแล้ว ... " แล้ว "... " คือกรณีการใช้งานของคุณเนื่องจากคุณมีเงินสำหรับการทำมัน (นั่นจะทำให้ชัดเจนว่า "การเข้าสู่ระบบ" ไม่ใช่กรณีการใช้งานเลย)
ในแง่ที่ว่าการค้นหากรณีการใช้งานแบบยืนด้วยตนเองที่รวมหรือขยายกรณีการใช้งานอื่น ๆ นั้นไม่น่าเป็นไปได้ ในที่สุดคุณสามารถใช้<<extend>>
เพื่อแสดงทางเลือกของระบบของคุณเช่นโครงร่างสิทธิ์การใช้งานบางตัวที่อนุญาตให้รวมกรณีการใช้งานสำหรับสิทธิ์ใช้งานบางส่วนหรือเพื่อละเว้น แต่อย่างอื่น - เพียงหลีกเลี่ยงพวกเขา
การขยายใช้เมื่อคุณเข้าใจว่ากรณีการใช้งานของคุณซับซ้อนเกินไป ดังนั้นคุณจึงแยกขั้นตอนที่ซับซ้อนเป็น "ส่วนขยาย" การใช้กรณีของตัวเอง
การรวมจะใช้เมื่อคุณเห็นพฤติกรรมทั่วไปในสองกรณีการใช้งาน ดังนั้นคุณจึงสรุปพฤติกรรมที่เหมือนกันเป็นกรณีการใช้ "นามธรรม" แยกต่างหาก
(อ้างอิง: Jeffrey L. Whitten, Lonnie D. Bentley, การวิเคราะห์ระบบและวิธีการออกแบบ, McGraw-Hill / Irwin, 2007)
รวมถึงกรณีการใช้งานอย่างใดอย่างหนึ่งความสัมพันธ์ที่จะช่วยให้การรวมถึงขั้นตอนของการใช้กรณีอื่น
ตัวอย่างเช่นสมมติว่าคุณมีบัญชี Amazon และคุณต้องการตรวจสอบคำสั่งซื้อเป็นไปไม่ได้ที่จะตรวจสอบคำสั่งซื้อโดยไม่ต้องลงชื่อเข้าใช้บัญชีของคุณก่อน ดังนั้นการไหลของเหตุการณ์ต้องการดังนั้น ...
ขยายความสัมพันธ์ที่จะใช้ในการเพิ่มขั้นตอนพิเศษเพื่อการไหลเวียนของกรณีการใช้งานที่มักจะเป็นขั้นตอนที่ไม่จำเป็น ...
ลองนึกภาพว่าเรายังคงพูดถึงบัญชีอเมซอนของคุณ ให้ถือว่ากรณีฐานเป็นคำสั่งซื้อและกรณีการใช้งานส่วนขยายเป็นAmazon Prime ผู้ใช้สามารถเลือกที่จะสั่งซื้อสินค้าเป็นประจำหรือผู้ใช้มีตัวเลือกในการเลือก Amazon Prime ซึ่งทำให้มั่นใจว่าการสั่งซื้อของเขาจะมาถึงเร็วขึ้นด้วยต้นทุนที่สูงขึ้น
อย่างไรก็ตามโปรดทราบว่าผู้ใช้ไม่จำเป็นต้องเลือก Amazon Prime นี่เป็นเพียงตัวเลือกพวกเขาสามารถเลือกที่จะไม่สนใจกรณีการใช้งานนี้
Amazon Prime
เป็นอย่างไร มันไม่ได้มีคำกริยา
ฉันชอบคิดว่า "รวมถึง" เป็นสิ่งที่จำเป็น / สิ่งที่จำเป็นของเคสการใช้ฐาน ซึ่งหมายความว่ากรณีการใช้งานพื้นฐานไม่สามารถพิจารณาให้สมบูรณ์ได้หากไม่มีกรณีการใช้งานรวมอยู่ด้วย ฉันจะยกตัวอย่างเว็บไซต์อีคอมเมิร์ซที่ขายสินค้าให้กับลูกค้า ไม่มีวิธีที่คุณสามารถชำระค่าสินค้าได้โดยไม่ต้องเลือกรายการนั้นก่อนและวางไว้ในรถเข็น นี่ก็หมายความว่ากรณีการใช้งาน "ชำระเงินสำหรับรายการ" รวมถึง "เลือกรายการ"
มีการใช้งานที่หลากหลายของการขยาย แต่ฉันชอบที่จะคิดว่ามันเป็นทางเลือกที่อาจหรือไม่อาจใช้ ตัวอย่างเช่น - ยังอยู่ในไซต์อีคอมเมิร์ซ เมื่อชำระเงินสำหรับรายการคุณอาจเลือกที่จะชำระเงินในการจัดส่งจ่ายโดยใช้ paypal หรือชำระเงินด้วยบัตร สิ่งเหล่านี้เป็นทางเลือกทั้งหมดสำหรับกรณีการใช้ "ชำระค่าสินค้า" ฉันอาจเลือกตัวเลือกใด ๆ เหล่านี้ขึ้นอยู่กับความชอบของฉัน
เพื่อความชัดเจนและกฎเกณฑ์การใช้งานโดยรอบอ่านบทความของฉันที่นี่:
http://businessanalystlearnings.com/ba-techniques/2013/2/20/use-case-diagram-the-basics
login
หรือcreate
กรณีใช้งาน ทั้งสองฟังก์ชั่น ดังนั้น -1