# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > تحلیل و طراحی نرم افزار >  کاربرد دقیقا چیست ؟و چگونه پیدا می شود؟

## zehs_sha

سلام من در کتابهای uml درباره کاربردها خوانده ام اما دقیقا متوجه نشدم که کاربردها چگونه پیدا می شود. تعریف دقیق کاربرد ها چیست و همچنین آیا یک کاربرد دقیقا به یک کلاس نگاشت می شوند.

----------


## smhoseyni

اگه منظورتون use-case باشد (که معمولا به مورد-کاربرد ترجمه می شود) معمولا به این 
صورت تعریف می‌شود : دنبالة بخصوصی از اعمال در سیستم که منجر به تولید یک نتیجه دارای 
ارزش برای یک  Actor سیستم می‌گردد. 
مثلا در سیستم آموزشی دانشگاه، انتخاب واحد دانشجویان یک use-case است که 
شامل ارائه لیست به دانشجو، انجام انتخاب توسط دانشجو و بررسی و ثبت نتایج است. 
همچنین وارد کردن نمرات توسط استاد و یا گرفتن کارنامه بوسیله دانشجو نیز می‌توانند 
use-case های دیگری باشند.
البته شرح مورد-کاربردها باید دقیق باشند و خیلی مواقع می‌توان آن را همانند یک (یا چند)
سناریو که بین actor و سیستم رخ میدهد شرح داد.

برای پیدا کردن use-case ها راه‌حل های مختلفی وجود دارد ولی بصورت اجمالی 
چند قاعده کلی عبارتند از: 
هر Actor در سیستم چه کارهایی انجام میدهد؟
آیا لازم است یک Actor از وقوع یک اتفاق خاص در سیستم آگاه شود؟
آیا لازم است Actor وقوع یک تغییر ناگهانی خارجی را به سیستم اطلاع دهد؟
چه Use-Caseهایی از سیستم نگهداری و پیشتیبانی میکنند؟
چه اطلاعاتی باید در سیستم ایجاد شود یا تغییر داده شود؟

----------


## zehs_sha

سلام وتشکر 
من کمی گیج شده ام می خواهم ببینم در یک برنامه حسابداری و در قسمت سند زدن که هر قسمت آن مثلا  ثبت سند کالا یا ثبت حساب هزینه ها یا غیره همگی یک use case می شوند.
آیا لازم است یک Actor از وقوع یک اتفاق خاص در سیستم آگاه شود؟
اگر در جواب فوق یک اتفاقی موجود باشد آیا این اتفاق use-case می باشد.

آیا هر use-case به تعداد کلاس تقسیم میشود.

----------


## smhoseyni

> سلام وتشکر 
> من کمی گیج شده ام می خواهم ببینم در یک برنامه حسابداری و در قسمت سند زدن که پ
> هر قسمت آن مثلا  ثبت سند کالا یا ثبت حساب هزینه ها یا غیره همگی یک use case می شوند.


پاسخ دقیق به این سوال منوط به داشتن اطلاعات بیشتر و دقیقتری از نیازمندی های سیستم شما است ولی اجمالا چند راه
وجود دارد که ممکن است چند تا از آنها پاسخ صحیحی برای مورد شما باشد و یکی از آنها بهترین خواهد بود : 
- می توانید چندین use-case با نام های "ثبت سند کالا" و "ثبت حساب هزینه ها"و ... داشته باشید.
- می توانید یک use-case با نام "ثبت سند" داشته باشید و چندین use-case فرزند با نام های  "ثبت سند کالا" و "ثبت حساب هزینه ها"و ...
- می توانید یک  یک use-case با نام "ثبت سند" داشته باشید  و Use-case های 
"ثبت سند کالا" و "ثبت حساب هزینه ها"و ... از آن Extend شده باشند
- می توانید  یک use-case داشته باشید که بخش مشترک ثبت سند را در آن بیان کرده باشید و مابقی آنرا include کنند.
- می توانید کلا یک use-case داشته باشید و همه انواع ثبت سند را در آن شرح دهید.




> آیا لازم است یک Actor از وقوع یک اتفاق خاص در سیستم آگاه شود؟
> اگر در جواب فوق یک اتفاقی موجود باشد آیا این اتفاق use-case می باشد.


خیر، اطلاع دادن به Actor از آن اتفاق خاص (منفی شدن تراز حساب مشتری) یک use-case خواهد بود.




> آیا هر use-case به تعداد کلاس تقسیم میشود.


در مرحله طراحی، چندین کلاس طراحی می شود و use-case با استفاده از آنها Realize می شود.

----------

