با سلام خدمت دوستان,
ممكنه فرق رابطه Extend و Include در Usecase دياگرام را برام توضيح بدين؟
با تشكر.
با سلام خدمت دوستان,
ممكنه فرق رابطه Extend و Include در Usecase دياگرام را برام توضيح بدين؟
با تشكر.
رابطه Include يعني اجباري و رابطه Extend يعني اختياري.
به اين معني كه اگر use case ي مثلا A با رابطه Include به يك use case ديگر مثل B وصل شود ( جهت فلش ازAبه B است) ، actor ي كه كار A را انجام ميدهد، حتما بايد كار B را نيز انجام دهد ولي اگر اين رابطه Extend باشد ( جهت فلش ازB به A است) ، actor ي كه كار A را انجام مي دهد مي تواند كار B را انجام دهد.
سید مصطفی حسینی
معمار نرمافزار، مشاوره و آموزش RUP
actor مي تواند انساني، سيستمي و يا سخت افزار باشد.
اگر use case اصلی شما با Usecase دیگری نسبت Include پیدا می کند در واقع Usecase اصلی به آن وابسته اجباری می شود و تا وقتی عملیات آن Usecase پایان نپذیرد (خواه توسط Actor خواه یک عملیات درون سیستمی مانند محاسبه تخفیف فاکتور) usecase اصلی عملیاتش پایان نخواهد یافت ، در حالی که رابطه Extend وابستگی از نوع اختیاری یعنی تکمیل عملیات Usecase فرعی تاثیری در اجرای usecase اصلی ندارد مانند: چاپ فاکتور در صدور فاکتور
بله اين رو مي دونم , منظورم گفته كاربر smhoseyni بود كه گفته بودند : "فاعل اجرای use-case ها سیستم است نه actor"
use-case ها برای توصیف نیازمندی های رفتاری سیستم مورد استفاده قرار میگیرند. در نتیجه عملیاتی که در آنها توصیف میشود را سیستم اجرا میکند و نقش actor صرفا تبادل اطلاعات مورد نیاز برای اجرای ان عملیات است.
در واقع هدف از بیان ان جمله تصحیح عبارت دوستمان بود مبنی بر اینکه "actor بخشهای include شده را الزاما اجرا میکند"؛ در واقع سیستم بخش های include شده را الزاما اجرا میکند.
اما در مورد تفاوت Extend و UML هم چند نکته عرض کنم.
بطور کلی از extend براي مدلكردن بخشهاي اضافي و الحاقي يك use-case پايه استفاده ميشود ولی از include بيشتر براي مدلكردن بخشهاي مشترك use-case هاي مختلف استفاده ميشود. و اگر بخواهم دقیق تر بیان کنم،
معمولا از extend در یکی از حالات زیر استفاده میشود :
- مدل کردن حالتی که اختیاری (انتخابی) است و جزئی از جریان اصلی و ضروری نیست.
- مدل کردن بخش ELSE که بخش IF در use-case پایه قرار گرفته است.
- مدل کردن وضعیتی که در آن یکی از چند حالت ممکن رخ میدهد (همانند switch case)
ولی کاربرد include معمولا در یکی از موارد زیر است :
- بخواهیم یک بخش مشترک که در چندین use-case مورد استفاده قرار میگیرد را یک بار تعریف کنیم و در چند جا مورد استفاده قرار دهیم (یک مثال معروف : بخش هویت شناسی کاربر برای use-case های پرداخت پول و انتقال پول در ATM)
- بخواهیم یک بخش از جریان کاری use-case را که فقط نتیجه آن برایمان مهم است از جریان اصلی جدا کنیم تا بیان فهمیدن جریان اصلی ساده تر شود. (مثلا نتیجه ارزیابی اعتبار یک مشتری برای انجام فروش الکترونیکی)
از تفاوت های دیگر Include و extend می توان به موارد زیر اشاره کرد :
1- در مورد include، مورد کاربرد پایه به آنکهinclude شده وابسته است و در مورد extend برعکس است.
2- در extend، مورد-کاربرد پايه بدون منشعب شده هم بايد كامل باشد ولی در مورد include پايه بدون include شده ناقص است.
آخرین ویرایش به وسیله smhoseyni : دوشنبه 31 تیر 1387 در 09:51 صبح
سید مصطفی حسینی
معمار نرمافزار، مشاوره و آموزش RUP
لطفا هم براي Business usecase مثال بزنيد و هم براي system usecase مرسي.
فكر ميكنم دوستاني كه روي Actor بحث ميكنند اين دو بخش را تفكيك نميكنند . چون Actor در نمودارهاي business و در نمودارهاي system مفهوم متفاوتي دارد .
خود usecase هم در يك دياگرام business و در يك نمودار system مفاهيم متفاوتي دارد .
مثلا business actor حتما خارج از سازمان است مثلا مشتري يا ارباب رجوع است . و ممكن است هيچ كاري هم به كار سيستم ما نداشته باشد .
آخرین ویرایش به وسیله SHAHAB_ERP : دوشنبه 04 شهریور 1387 در 12:38 عصر
من فکر می کنم که به انتظارات کاربر از سیستم می گوییم system use caseو به انتظارات business می گوییم business use case. به بیان دیگر business use case نیازمندی business است و system use case نحوه ای است که ما به این نیازمندی پاسخ می دهیم.
به عنوان مثال فرض کنید که ما در یک سازمان یک contact centre می زنیم که مسئولیت آن پاسخ گویی به امور مشتریان است. حالا اینکه در سازمان یک جایی برای برقراری ارتباط با مشتری باشد، یک business use case است چرا که برای مشتری تنها این برقراری ارتباط مهم است و نه شیوه انجام آن. ولی اینکه ما این نیازمندی را از چه طریقی برطرف می کنیم، می شود system use case.
لطفا اگر اشتباه می کنم، اساتید گرامی تصحیح کنند.
برداشت impression درست است.Business Use case مربوط به Problem space است , system use case مربوط به Solution space.فقط مفهوم System Use case استفاده نمي شود. چون اگر use caseي business ي نباشد ، سيستمي است. حتي فط notation مروبوط به business use case يا business Actor متفاوت است.
رابطه Include يعني اجباري و رابطه Extend يعني اختياري.
در رابطه Include تصور کنید که یک تابع تابع دیگر را بدون هیچ شرطی اجراء می کند.
در رابطه Extend تصور کنید که یک تابع تابع دیگر را وقتی که شرط خاص رخ می دهد اجراء می کند.
function1(){
....
function2()
......
}
function1(){
....
if(){
function2()
}
......
}
یک مثال دیگر را در نظر بگیرید فکر کنید شما می خواهید از روی یک کتاب آشپزی پیتزا درست کنید، انواع مختلف از پیتزاها در کتاب شرح داده شده است ولی در تهیه همه این پیتزاها یک مرحله مشترک است تهیه خمیر پیتزا. پس برای ساده تر شدن کار نویسنده یک قسمت ( usescase) را به تهیه خمیر تخصیص می دهد و دیگر تهیه خمیر را برای تک یک پیتزاها به صورت جداگانه نمی نویسد. و هر وقت شما خواستید یک پیتزا تهیه کنید به بخش تهیه خمیر ارجاع داده می شود و پس از تهیه خمیر ادامه سناریو تهیه پیتزا مورد نظر خود را ادامه می دهید. این یعنی رابطه Include
فرضی کنید شما در حال تهیه سوپ از روی همان کتاب آشپزی هستید، و نمک زیادی روی آش می ریزد و آش شور می شود (قسمت شرطی) در این حالت نویسنده شما را به قسمت ترفندهای آشپزی ارجاع می دهد و می گوید که مثلا با ریختن سیب زمینی می توانید باعث جذب شوری آش شوید. ولی اگر آش شور نشود شما نیازی به مراجعه به قسمت ترفندهای آشپزی ندارید
این یعنی رابطه Extend
یک مثال یک کم کامپیوتری تر:
هویت شناسی در سیستم باید در ابتدای ورود کاربر انجام شود و بعد از آن کاربر می تواند با توجه به سطح دسترسی خود از امکانات سیستم استفاده کند. بنابراین هویت شناسی usecase ای است که در تمام usecaseهای دیگر includeمی شود.
اما به عنوان مثال فرض کنید که شما پس از ورود به سایت برنامه نویس و انجام هویت شناسی، چه کارهایی می توانید انجام دهید؟ مثلا می توانید یک تاپیک را بخوانید. بعد از خواندن آن تاپیک شما می توانید روی آن پاسخ بگذارید یا اینکه از نویسنده تاپیک تشکر کنید. گذاشتن پاسخ و تشکر از نویسنده، دو usecase است که در خواندن یک تاپیک extend می شود. یعنی کاربر می تواند آنها را انجام بدهد یا انجام ندهد.
اشتباه میکنید عزیزم. business UC یعنی تمام عملیاتی که در سیستم انجام میشود. منظور از تمام عملیات اینه که هم عملیاتی که توسط نرم افزار انجام میشه و هم عملیاتی که توسط انسان و .... . اما System UC عملیاتی که فقط توسط نرم افزار انجام میشه رو نشون میدیم.
سلام.
smhoseyni ،تفاوت Extend و Include را خیلی خوب توضیح دادین.
می شه لطفا در مورد مثالی که ذکر می کنم هم توضیح بدین؟
مثلا در مورد ثبت پرداخت های متفاوت یک شرکت ، که این پرداخت ها ممکن است از طریق چک،فیش،نقد و یا کارت اعتباری باشند.
Actor که مسئول ثبت این پرداخت ها است ، اطلاعات مربوط به پرداخت ها را در سیستم ثبت می کند. و یک Use Case کلی برای مدیریت پرداخت هست که actor به آن مرتبط می شود.
حال می خواهم بدانم Use Case 4 (پرداخت چک،نقد و . . . ) به طور Extend به Use Case مدیریت پرداخت متصل می شوند یا Include ؟!!
ممنون.
ممنون الهام جان
دوستان عزيز اين فايل pdf مي تونه تمام سوال هاي شما رو رابطه با فرق رابطه هاي Extend و Include ، جواب بده
تست مثال ها در نرم افزار Visual Paradigm
استفاده از منابع هاي مختلف
لينك دانلود
http://mohamad100000.persiangig.com/...d%20Extend.pdf
سلام خسته نباشید
میشه ببینید تو این عکسی که فرستادم include و extended درسته یا نه؟
ممنون میشم