كار با Use case ها

Use case
شامل تمام آن چيزهايي است كه درون سيستم قرار دارد. عامل شامل تمام آن چيزهايي است كه خارج از سيستم قرار دارد.

نمودار use case برخي از use case هاي موجود در سيستم مورد نظر شما برخي از عامل هاي موجود در سيستم شما و رابطه هاي بين تمامي اينها را مشخص مي كند. Use case عمليات سطح بالايي است كه سيستم مهيا مي كند عامل هر چيز و يا هر كسي است كه بر سيستمي كه در حال ساخت است اثر مي گذارد.

يكي از مزيت هاي بزرگ نمودارهاي Use case تبادل اطلاعات است. مراجعه كنندگان شما مي توانند به اين نمودارها نگاه كرده و اطلاعات وسيعي را بدست آورند. با نگاه به نمودار Use case خواهند فهميد كه چه عملياتي در سيستم انجام مي شود. با نگاه به عامل ها خواهند فهميد كه چه كسي بر سيستم كنش دارند. با نگاه به مجموعه Use case و عامل مي فهمند كه چه محدوده اي از پروژه انجام خواهد شد. بنابر اين كمكي به آنها خواهد بود تا از هر عمليات از قلم افتاده اي يك ذهنيت اوليه داشته باشند.
يك نمودار سطح بالا كه در main, rational rose ناميده مي شود. فقط بسته هاي نرم افزاري يا گروه بندي Use case ها را نشان مي دهد.
نمودارهاي Use case كار مشخصي را براي مستند سازي عامل ها ( هر چيز خارج از محدوده سيستم ) Use case (هرچيز درون محدوده سيستم و ارتباط آنها انجام مي دهد.
نكاتي را كه بايد به عنوان كسي كه يك نمودار Use case را ايجاد مي نمايد به خاطر داشته باشيد بدين ترتيب مي باشند.

– ارتباطات عامل با عامل را مدل سازي نكنيد.
– هيچ گاه مستقيما با فلش، Use case را به هم وصل نكنيد ( بجز در ارتباطات extends or uses
– هر Use case بايد توسط يك عامل آغاز به كار كند.
– بانك اطلاعاتي را به عنوان لايه زيرين تكميل نمودار Use case در نظر بگيريد.

كار با Use case ها
Use caseبخش سطح بالايي از عملياتي است كه سيستم مهيا مي كند به عبارت ديگر Use case، اينكه شخص چگونه سيستم استفاده مي كند را شرح مي دهد. يك ماشين ATM يك سري عمليات اصلي را براي مشتري انجام مي دهد. به مشتري اجازه مي دهد تا پول به حساب بريزد نقدا از حساب برداشت كند پول را از يك حساب به حساب ديگر منتقل نمايد مقدار موجودي را مشاهده كند، pin را تعويض نمايد و يا توسط كارت اعتباري پول پرداخت نمايد. هر كدام از اين transaction ها روش متفاوت استفاده مشتري از سيستم مي باشد. به هر حال هر كدام از آنها يك Use case متفاوت هستند در uml يك Use case با استفاده از عمليات زير نمايش داده مي شود.ژ:

يك مزيت نگاه به سيستم با استفاده از Use case اين است كه مي توان پياده سازي سيستم را از دليل ايجاد سيستم در ابتدا جدا نمود.
Use case ها به صورت ديگري به متدهاي سنتي نزديك مي شوند. شكستن پروژه به Use case ها يك روش نگاه كردن به پروژه به صورت پردازش گر ا است و نه به صورت عملگرا. البته با تجزيه عملياتي كه گاهي اوقات انجام مي شود تفاوت دارد. تجزيه عملياتي بر اينكه چگونه بايد مشكلات سيستم را براي حل شدن به قطعات كوچك و كوچكتر تبديل كرد تمركز دارد در حالي كه Use case تمركز كار را بر روي آنچه مشتري از سيستم توقع دارد قرار مي دهد.
Use case ها مستقل از پياده سازي هستند و يك ديد سطح بالا از آنچه كاربر از سيستم انتظار دارد مي باشند بياييد هر بخش از اين تعريف را جداگانه در نظر بگيريم.
اولا Use case به طور مستقل عمل مي كنند.
دوما Use case ها يك ديد سطح بالا از سيستم هستند.
نبايد انقدر زياد Use case باشيد كه مشتري به زحمت بتواند سند را بررسي كند فقط در اين حد باشد كه بفهمد سيستم چه كاري انجم مي دهد.
نهايتا تمركز Use case بايد بر آنچه كه كاربر از سيستم به دست مي اورد باشد.

مشاهده شركت كنندگان در يك Use case
ممكن است بخواهيد ليستي از تمام كلاس ها و عمليات ك هدر Use case شركت مي كنند را داشته باشيد. در حالي كه پروژه در حال پيشروي است و شما نيازهايي را تغيير و يا اضافه مي كنيد اينكه بدانيد چه كلاس هايي ممكن است تحت تاثير اين تغييرات قرار گيرند كمك زيادي به شما خواهد نمود.

 

ساختن Use case هاي Abstract (مجرد)
يك Abstract Use case يك Use case است كه مستقيما توسط يك عامل شروع به كار نمي كند. درعوض برخي عمليات اضافي كه مي تواند توسط ديگر Use case ها استفاده شود را مهيا مي كند. Use case هاي abstract، Use case هايي هستند كه در ارتباطات گسترده و مورد استفاده شركت مي كنند.

 

مشاهده رابطه هاي متعلق به يك Use case
برگه relation در پنجره Use case specification تمام رابطه هايي كه Use case در آنها مشاركت دارد و يا ارتباط با ديگر Use case و يا عامل ها را ليست مي كند.

هر كس يا هر چيزي كه با سيستم موجود برهم كنش دارد عامل actor ناميده مي شود. Use case ها هر چيز موجود در محدوده سيستم را توصيف مي كنند در حالي كه عامل ها در خارج از محدوده سيستم قرار دارند در UML عامل ها با آدمك هايي نشان داده مي شوند.
سه نوع اصلي از عامل ها وجود دارند كاربران سيستم ، سيستم هاي ديگري كه با سيستم موجود در ارتباط هستند و زمان.

اولين نوع عامل يك انسان فيزيكي و يا به عبارت ديگر كاربر است اينها بيشترين عامل مورد استفاده هستند و تقريبا در تمام سيستم ها وجود دارند.
دومين نوع عامل سيستم ديگر است به طور مثال ممكن است بگوييد كه بانك ما داراي يك سيستم اعتباري است كه براي پشتيباني از اطلاعات اعتبار حساب هر مشتري استفاده مي شود.
سومين نوع عامل كه زياد استفاده مي شود زمان است هنگامي زمان تبديل به يك عامل مي شود كه زمان در حال گذر باعث ايجاد رخدادي در سيستم گردد.
افزودن عامل ها
دو راه براي افزودن يك عامل وجود دارد: يا آن را به يك نمودار Use case باز شده بيفزاييد و يا اين كار را مستقيما در مرورگر انجام دهيد. در حالت دوم عامل موجود در مرورگر مي تواند به يك يا تعداد بيشتري نمودار Use case افزوده شود.

يك عامل abstract عاملي است كه هيچ مصداق واقعي ندارد به عبارت ديگر كارديناليتي عامل، دقيقا صفر است به طور مثال ممكن است چندين عامل داشته باشيد: كارمند ساعتي، كارمند ثابت و كارمند موقتي. تمامي اينها نوعي از عامل چهارم هستند كه عامل كارمند مي باشد. با وجود اين هيچ كس در شركت فقط يك كارمند نيست. هر كسي يا كارمند ساعتي است يا كارمند ثابت است و يا كارمند موقتي. دليل وجود عاملي با نام كارمند اين است كه رابطه معمول استخدام ساعتي، استخدام با حقوق ثابت و استخدام موقتي نشان داده شود. هيچ مرحله و مصداق واقعي براي عامل كارمند وجود ندارد پس آن يك عامل abstract‌خواهد بود.

برگه relations موجود در پنجره actor specification تمام رابطه هاي عامل هاي شركت كننده را ليست مي كند. اين برگه داراي تمام رابطه هايي است كه يك عامل با Use case ها و يا عامل هاي ديگر دارد ليست شامل نام رابطه و نام Use case يا عامل هاي مرتبط مي باشد.
UML از انواع متعددي از رابطه ها براي Use case ها و عامل ها پشتيباني مي كند. اين شامل رابطه هاي communication رابطه هاي uses رابطه هاي extend و رابطه هاي generalization براي عامل مي باشد. رابطه هاي uses, extend رابطه هاي بين Use case ها را تعريف مي كنند. رابطه هاي actor generalization رابطه بين عامل ها را تعريف مي كند.

به رابطه بين Use case و عامل، رابطه communication مي گويند. در UML رابطه هاي اطلاعاتي با استفاده از فلش به حالت نمودار در مي آيند:
رابطه uses به يك Use case اجازه استفاده از عمليات مهيا شده توسط يك Use case ديگر را مي دهد. رابطه هاي Use case براي مدل سازي برخي عملياتي كه بين دو يا تعداد بيشتري Use case استفاده مي شوند، به كار مي روند.
رابطه هاي extend
يك رابطه extend به يك Use case اجازه مي دهد كه بطور دلخواه عمليات مهيا شده توسط ديگر Use case ها را بسط دهد كه بسيار مشابه رابطه uses عمل مي كند. در هر دو نوع اين رابطه ها برخي عمليات معمول را در Use case هاي مجزاي خودشان قرار مي دهيد.
Actor generalization براي نشان دادن همانندي چندين عامل به كار مي رود.
در حين ساخت نمودارهاي خود افزودن يادداشت هايي به Use case و يا عامل ها كمك زيادي به شما خواهد كرد.
دو نوع يادداشت توضيحي براي افزودن وجود دارد،يادداشت و كادر متن.
در uml آيتم هايي چون عامل ها، Use case ها كلاسها، component ها مي توانند به صورت بسته هايي نرم افزاري گروه بندي شده تا سازماندهي شوند. ممكن است هنگام مشاهده Use case بخواهيد Use case ها و عامل ها را به صورت بسته بندي شده گروه بندي نماييد.

نمودارهاي interaction
يك نمودار interaction روندي در يك Use case را مرحله به مرحله نشان مي دهد.
دو نوع نمودار interaction وجود دارند كه آنها را بررسي خواهيد نمود: نمودارهاي sequence و نمودارهاي collaboration.

هر دو نمودار sequence, collaboration اطلاعات يكساني را نشان خواهند داد با وجود اين چند تفاوت كوچك بين نمودارهاي بالا وجود دارد. نمودارهاي sequence نشان دهنده مركز كنترل هستند نمودارهاي collaboration نشان دهنده يك روند داده اي هستند.
آبجكت آن چيزي است كه اطلاعات و روشها را در خود كپسوله مي كند. روشي است كه برخي چيزهاي عيني در دنياي واقعي را نشان مي دهد. مثالهايي از آبجكت به صورت زير مي باشد:
– حساب joe

– خانه اي در ۷۶۳۸ main street
– گل زردي كه در بيرون از پنجريه خانه منحني قرار دارد.

بخش هاي اطلاعاتي كه توسط آبجكت نگهداري مي شوند، صفات attribute آن مي باشند. با وجود اينكه مقادير صفات براي آبجكت ها تغيير خواهند كرد خود صفات هرگز تغيير نخواهند كرد.
رفتارهاي يك آبجكت به عنوان عمليات آن شناخته مي شوند. در اين مثال عمليات براي حساب joe شامل اين موارد است : تنظيم موجودي حساب براي برداشت و يا واريز پول و بررسي اينكه آيا از حساب قرار است بيشتر از موجودي پول برداشته شود يا خير.

در rose آبجكت ها به نمودارهاي interaction افزوده مي شوند. هنگام كشيدن يك عامل يا كشيدن ديگر كلاس ها به نمودار interaction يك نمونه ابجكت از آن كلاس به طور خودكار ساخته مي شود در rose حذف يك آبجكت از يك نمودار كلاس را از كل مدل حذف خواهد نمود.
طرح كلي براي يك آبجكت را كلاس آن فراهم مي كند. به عبارت ديگر يك كلاس تعيين كننده اطلاعاتي است كه يك آبجكت مي تواند نگهداري كند و نشان دهنده رفتارهايي است كه مي تواند داشته باشد.

يك راه براي يافتن برخي آبجكت ها اين است كه نام ها را در جريان رخدادها در نظر بگيريد. يك جاي خوب ديگر براي بدست آوردن آنها سناريوي اسناد مي باشند. يك سناريو حالت خاصي از جريان رخدادها مي باشد. جريان رخدادها براي Use case مربوط به برداشت پول از حساب درباره فردي در ATM صحبت مي كند كه در حال برداشت پول از حساب است. يكي از سناريوها براي اين مورد مي تواند برداشت joe از حساب به مقدار ۲۰ دلار باشد سناريوي ديگر مي تاند سعي jane در برداشت ۲۰ دلار از حساب باشد در حالي كه او pin را اشتباه وارد كرده است.
يك نمودار sequence و collaboration يكي از اين سناريوها را شرح مي دهد. هنگامي كه در سناريوي خود به اسامي نگاه مي كنيد برخي از اسامي عامل خواهند بود برخي از آنها آبجكت خواهند بود و برخي صفات براي يك آبجكت خواهند بود.

همه آبجكت ها در جريان رخدادها وجود نخواهند داشت. به طور مثال form ها ممكن است در روند رويدادها ظاهر نشوند، ولي بايد بر نمودار ظاهر شوند تا به عامل اجازه دهد كه اطلاعات را وارد كرده و يا ببيند. آبجكت هاي ديگري كه در جريان رخداد ها ظاهر نمي شوند. آبجكت هاي كنترل هستند اينها آبجكت هايي هستند كه تناوب روند در Use case را كنترل مي كنند.

نمودارهاي collaboration زماني مفيد واقع مي شوند كه بخواهيد به تاثير تغييرات دست يابيد. اينكه بفهميد چه آبجكت هايي با چه آبجكت هاي ديگري تبادل اطلاعاتي انجام مي دهند. به راحتي با نگاه به نمودارهاي collaboration قابل انجام است. اگر نياز داريد كه يك آبجكت را تغيير دهيد مي توانيد به راحتي ببينيد كه چه آبجكتهاي ديگري ممكن است در ارتباط با آن باشند.
نمودارهاي sequence موارد زير را در بر مي گيرند:
Objects: يك نمودار interaction مي تواند از نام ابجكت ها نام كلاس ها و يا هر دوي آنها استفاده كند.

Messages: با استفاده از يك پيغام يك آبجكت يا كلاس مي تواند از يك آبجكت يا كلاس ديگر،
در هنگام ساختن نمودار sequence بايد به اين نكته توجه داشته باشيد كه در حال تخصيص مسئوليت به ابجكت ها مي باشيد. وقتي پيغامي را به يك نمودار interaction مي افزاييد، در حقيقت به ابجكت در حال دريافت پيغام يك مسئوليت را واگذار مي كنيد.

نمودارهاي sequence نمودارهاي interaction هستند كه بر مبناي زمان تنظيم مي شوند. شما نمودار ار از بالا به پايين مشاهده مي كنيد.
هر ابجكت براي خودش يك خط عمر دارد كه به صورت خطوط عمومي خط چين در زير آبجكت كشيده مي شود يك پيام بين دو خط عمر موجود بين دو آبجكت قرار داده مي شود تا ارتباط بين آبجكت ها را نشان دهد. هر پيغامي نشان دهنده يك آبجكت است كه توسط تابع ابجكت ديگر صدا زده مي شود.
براي الصاق فايل به نمودار sequence:
1- در مرورگر بر روي نمودار sequence كليك راست كنيد.
۲- از منوي new گزينه file را انتخاب كنيد.
۳- با استفاده از كادر محاوره اي open فايلي را كه مي خواهيد الصاق نماييد انتخاب كنيد.
۴- Open را انتخاب كنيد تا فايل را الصاق نماييد.

نمودار collaboration براي نشان دادن جريان در سناريوي مشخص يك Use case استفاده مي شوند. نمودارهاي sequence برحسب زمان منظم مي شوند، نمودارهاي collaboration بيشتر بر روي رابطه بين آبجكت ها متمركز مي شوند.
هر نمودار sequence, collaboration بايد داراي آبجكت عامل باشد. آبجكت عامل يك محرك خارجي است كه به سيستم اعلام مي كند تا يك عمليات را راه اندازي كند. آبجكت هاي عامل براي نمودار interaction عامل هايي كه در نمودار Use case يا use Case ارتباط دارند را نشان مي دهند.

نگاشت يك آبجكت به يك كلاس
در يك نمودار sequence يا نمودار collaboration هر آبجكتي كه ممكن است به يك كلاس شود. به طور مثال حساب joe ممكن است به يك كلاس به نام account نگاشت شود. در پنجره object specification مي توانيد از فيلد class براي تنظيم كلاس آبجكت استفاده كنيد. به طور پيش فرض كلاس به unspecified تنظيم شده است.

يك پيغام برقرار كننده ارتباط بين آبجكت ها است كه در آن آبجكت از آبجكت ديگر تقاضاي انجام كار مي كند. زماني كه در حال كدنويسي هستيد يكه پيغام مي تواند به يك فراخواني تابع تبديل شود.
در يك نمودار Sequence مي توانيد به طور دلخواه مركز كنترل را نشان دهيد. كه به شما نشان مي دهد كدام آبجكت در يك زمان مشخص كنترل را در دست گرفته است. اين يكي از تفاوت هايي بين نمودار هاي collaboration يا sequence است مركز كنترل فقط در نمودارهاي sequence نشان داده مي شود.

نمودارهاي collaboration جريان داده اي را نشان مي دهند در صورتي كه نمودارهاي sequence چنين كاري نمي كنند.
جريان هاي داده اي براي نشان دادن اطلاعات برگشتي، وقتي كه آبجكتي به آبجكت ديگر پيغام ارسال مي كند استفاده مي شوند. عموما به هر پيغام موجود بر روي نمودار collaboration جريان داده اي اضافه نكنيد زيرا باعث ازدحام و شلوغي نمودار مي شود، آن هم به وسيله يك سري اطلاعاتي كه ارزش زيادي ندارند.

نام پيغام و نام آبجكت اطلاعات زيادي را در نمودار interaction در اختيار شما قرار مي دهند. به هر حال ممكن است در زمان هايي بخواهيد اطلاعات مضاعفي را به نمودار بيفزاييد. مي توانيد اين كار را با استفاده از يادداشت و يا اسكريپت انجام دهيد.
يادداشت ها براي متصل كردن تفاسير و توضيحات به آبجكت روي نمودار استفاده مي شوند. به طور مثال براي روشن شدن هدف يك ابجكت استفاده مي شوند.

اسكريپت ها براي افزودن توضيح به پيغام اضافه مي شويد همان گونه كه مي خواهيد در نمودار sequence مي توانيد از اسكريپت براي افزودن شرايط منطقي استفاده كنيد.
در Rose يادداشت ها معمولا براي افزودن توضيح به آبجكت استفاده مي شوند. از طرف ديگر اسكريپت ها معمولا براي افزودن توضيح پيغام استفاده مي شوند. اسكريپت ها فقط در نمودار sequence استفاده مي شوند.

آنها در سمت چپ نمودار و رو به روي پيغامي كه به آن ارجاع مي شوند ظاهر مي شوند. مي توانيد از يك اسكريپت براي نشان دادن معني يك پيغام استفاده كنيد.
نمودارهاي interaction آبجكت نشان مي دهد چگونه آبجكت ها براي پياده سازي عملكرد يك use case با يكديگر كار مي كنند. دو نوع از نمودارهاي interaction وجود دارند: نمودارهاي sequence و collaboration. هر دو نوع اين نمودارها اطلاعات يكسان ولي با زواياي متفاوتي را نشان مي دهند.
نمودارهاي sequence اطلاعات را به ترتيب زماني نشان مي دهند. نمودار sequence براي مسيرهاي متناوب به يك use case ساخته شده اند.

آنها براي مشاهده پيشرفت عمليات يك use case مفيد مي باشند. نمودارهاي collaboration روند اطلاعات را نشان مي دهند ولي در اينجا ترتيب زماني در نظر گرفته نشده است. نمودارهاي collaboration رابطه بين آبجكت ها و پيغام هاي بين آبجكت ها را شرح مي دهد. يك طراح سيستم توسط نمودار sequence مي تواند ببيند كه كدام آبجكت ها حساس هستند و كدام آبجكت ها نياز به برقراري ارتباط مستقيم با يكديگر دارند. نمودارهاي collaboration هم مي توانند جريان داده اي را بين آبجكت ها نشان دهند نمودارهاي sequence و نمودارهاي collaboration قابل تغيير هستند وقتي تغييراتي روي يكي انجام شود آن يكي هم تغيير خواهد كرد.

 

يك نمودار class براي نمايش تعدادي از كلاس ها و بسته هاي كلاس در سيستم شما استفاده شده است اين نمودار يك تصوير ايستا از قطعات سيستم و ارتباطات بين آنها را به شما مي دهد.
به طور پيش فرض يك نمودار class وجود دارد كه main ناميده شده و مستقميا زير نظر نماي logical است اين نمودار class بسته هاي كلاس هاي موجود در مدلتان را نشان مي دهد. داخل هر بسته اي نمودار ديگري است كه main ناميده مي شود. كه شامل همه كلاس هاي داخل آن بسته است در rose با دوبار كليك بر روي يك بسته در يك نمودار class بطور خودكار نمودار main class باز خواهد شد.