# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > تحلیل و طراحی نرم افزار > سوال: گروه بندي يك use case دياگرام سنگين به بسته ها چگونه بايد انجام بگيرد؟

## mohamad100000

سلام دوستان 
بسته بندي use case دياگرام هاي سنگين در پكيج ها از لحاظ عملي كار دشواري نيست :متفکر: 
اما از لحاظ مفهومي براي من هنوز قابل هضم نيست
كه اين بسته بندي بايد با چه قانون هاي صورت بگيره كه در ادامه توسعه نمودار با مشكلي مواجه نشم :افسرده: 
ممنون ميشم اگه بتونيد كمكم كنيد :قلب:

----------


## cups_of_java

من کمی گشتم قوانین نوشته خاصی هنوز پیدا نکردم، اما خب همچنان خواهم گشت. اما طبعن باید usecase های مرتبط به هم رو با هم دسته بندی کرد. مثلن usecaseهایی که در مجموع با هم یک واحد یا یک زیر سیستم مستقل از کل سیستم ما رو می تونن بسازن! و این موضوع به تعداد و پیجیدگی usecaseها هم مرتبط هستش.
میشه بگید در ادامه به طور تجربی با چه تیپ مشکلاتی مواجه میشید؟

----------


## mohamad100000

راستش بيشتر با مبهمات مواجه ميشم تا مشكلات 
مثلا ما براي تعيين use case و Actor  حدود 10 قانون داريم ، كه ديديمون رو براي تعيين اون ها روشن تر مي كنه 
اما براي تعيين Pakage ها فعلا توضيحات تخصصي دريافت نكردم 

عكس بالا با توجه به توضيحات كاربر *cups_of_java**
*

----------


## cups_of_java

من متوجه ابهام شما نشدم. اما اگه این کتاب رو نخوندین توصیه می کنم حتمن بخونیدش فکر می کنم جواب سوالاتتون رو توش پیدا می کنید.

----------


## barnamenevis1978

سلام
من هم با این مشکل مواجه شدم...
مشکل من اینه که تعداد use case های سیستم خیلی زیاد شده... (به دلیل اینکه تا جایی که می تونستم سعی کرم عملیات را بشکنم)
هم خوانایی system use case diagram خیلی سخت شده و هم ارتباطات بین use case ها خیلی پیچیده شده...
فکر می کنم برای رفع این مشکل بهتره جزییات هر use case بزرگ را به یک بسته منتقل کنم.
در واقع، نمودار use case من تبدیل به چندتا نمودار use case خواهد شد که همشون به هم وابسته اند.
آیا این کار از نظر فنی اشکالی داره؟

----------


## mohamad100000

*barnamenevis1978 
اينكه بخواهيد بسته بندي use case ها را انجام دهيد بايد بسته ها use case رو طبق مشتركاتشون بسته بندي كنيد 
بعنوان مثال در يك سيستم دانشجويي use case  هاي خاص مربوط به امور مالي در يك بسته قرار مي دهيم
البته طبق مطالعاتي كه من داشتم ، هنر بسته بندي كردن دياگرام ها مربوط به بسته بندي كلاس ها ميشه و بايد تخصص بسته بندي كردن را روي ، بسته بندي كلاس ها متمركز بشيم
*

----------


## barnamenevis1978

سلام 
ممنون از پاسختون
ببینید، من دارم system use case model تهیه میکنم (و نه business use case model) و دارم سعی میکنم تا use case ها رو تا جای ممکن بشکنم. بنابراین تعداد use case ها خیلی زیاد شده و ارتباطات بین آنها (include-extend-generalization) خیلی تو هم رفته!
برای خوانایی بیشتر، دارم مثلا ثبت نام اطلاعات را از نمایش اطلاعات جدا می کنم (با توجه به اینکه در نمای کلی تر use case های بزرگ را آوردم) و در واقع sub use case ها را در دیاگرام های جداگانه رسم می کنم.

----------


## mohamad100000

ما با استفاده از بسته ها عناصر را با یکدیگر گروه بندی می كنيم. مانند یک پوشهء فایل که شامل اسناد مرتبط با یکدیگراست. "مشتركات" آنها بیشتر در کلاس ها و Use Case ها استفاده می شوند. واین به این دلیل است که هر دوی ClassDiagram ها و UseCase Diagram ها گرایش دارند تا سریع رشد کنند ، بنابراین بسته ها برای سادگی و مختصر سازی در این نوع از دیاگرام ها بسیار مفید هستند. همچنين مي توانيد بسته ها را در داخل بسته هاي ديگر قرار دهيد. روابط :می توانید بسته ها را بهم دیگر به روشهای مختلفی ارتباط دهید. این روابط شامل وابستگی ، تعمیم یا ارث بری و بازشناسی یا پاک سازی باشد.


 use case و بسته ها :  می توانید  usecase ها را در یک بسته جمع کنید.در اين مورد علنا می توانیم بگوییم و بدانیم که مشتری، بازیگر اصلی در ارتباط با گروهیاز usecase هاست که در بسته یبا نام خاصي بعنوان مثال (تراكنش) قرار گرفته اند چه زماني از بسته ها استفاده كنيم ؟ مثال بسته ها  و اينكه چه زماني از بسته ها استفاده كنيم ؟ با مثال كتابخانه یک پروژه بزرگ و پیچیده که شامل 100 ها کلاس است،  بدون داشتن راهی که بتوان این کلاسها را سرو سامان داد غیر ممکن 
به نظر می رسد که بتوانیم آنها را از هم مجزا کنیم. 
به همین طریق،  بخواهیم از بین يك دسته کتاب یک داستان مشخص را بیابیم. بسته ها یک ساختار را برای کلاسها یا دیگر اجزای UML بوسیله گروه بندی اجزای مرتبط ایجاد می کنند. پس بجای این همه کتاب درهم، یک کتابخانه داریم جایی که کتابها برپایه موضوع یا همسانی عناوینشان به بخشهای مختلفی طبقه بندی شده اند و شما می خواهید همین عمل را با کتابخانه کلاسهایتان انجام دهید. می خواهید مطمئن شوید که اینها دسته بندی شده اند، کلاسهای مشابه با هم دسته بندی شده اند و این باعث می شود که با نگاهی اجمالی، براحتی بتوانید مطلب را درک نمایید. نتيجه گيري: از نمودارهای بسته در یک سیستم بزرگ استفاده کنید تا بتوانید عناصر اصلی را نشان دهید و اینکه چگونه این عناصر با هم در ارتباط هستند. دوباره این کار سطحی بالاتر از سیستم را به شما ارایه می دهد. و می توانید از نمودارهای بسته برای تقسیم کردن یک سیستم پیچیده به چندین بخش (Module) استفاده نمایید.

----------

