0

Use Case چیست؟

 
nooroz
nooroz
کاربر برنزی
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 285
محل سکونت : قم

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

-       خانه اي در 7638 main street

-       گل زردي كه در بيرون از پنجريه خانه منحني قرار دارد.

 

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

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

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

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

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

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

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

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

نمودارهاي sequence موارد زير را در بر مي گيرند:

Objects: يك نمودار interaction مي تواند از نام ابجكت ها نام كلاس ها و يا هر دوي آنها استفاده كند.

Messages: با استفاده از يك پيغام يك آبجكت يا كلاس مي تواند از يك آبجكت يا كلاس ديگر،

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

نمودارهاي sequence نمودارهاي interaction هستند كه بر مبناي زمان تنظيم مي شوند. شما نمودار ار از بالا به پايين مشاهده مي كنيد.

هر ابجكت براي خودش يك خط عمر دارد كه به صورت خطوط عمومي خط چين در زير آبجكت كشيده مي شود يك پيام بين دو خط عمر موجود بين دو آبجكت قرار داده مي شود تا ارتباط بين آبجكت ها را نشان دهد. هر پيغامي نشان دهنده يك آبجكت است كه توسط تابع ابجكت ديگر صدا زده مي شود.

براي الصاق فايل به نمودار sequence:

1-  در مرورگر بر روي نمودار sequence كليك راست كنيد.

2-  از منوي new گزينه file را انتخاب كنيد.

3- با استفاده از كادر محاوره اي open فايلي را كه مي خواهيد الصاق نماييد انتخاب كنيد.

4-  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 باز خواهد شد.

نمودارهايclass يك ابزار طراحي خوب براي تيم مي باشند. آنها به برنامه نويسان كمك مي كنند تا ساختار سيستم را قبل از اينكه كدي نوشته شود ببينند و طراحي كنند و كمك مي كنند تا مطمئن شوند كه سيستم از ابتدا خوب طراحي شده است.

در بالاترين بخش كلاس نام كلاس قرار دارد و به طور اختياري stereotype آن را نگه مي دارد. بخش مياني صفات يا اطلاعاتي كه يك كلاس دارد را نگهداري مي كند بخش پايين صفات و يا عملگرهاي يك كلاس را نگه مي دارد تا نمودارهاي شما را توضيح دهد.

همچنين مي توانيد visibility هر صفت و عملگر نوع داده اي هر صفت و علامت مشخصه هر عملگر روي اين نمودارها را نشان دهيد.

يك آبجكت نمونه اي از يك كلاس است.

يك محل خوب براي پيدا كردن كلاس ها جريان رخدادهاي use case شماست. نگاه به آسامي در جريان رخدادها به شما اجازه خواهد داد تا بدانيد چه تعدادي از كلاس ها وجود دارند. وقتي به اسامي نگها مي كنيد. آنها يكي از چهار چيز خواهند بود:

-       يك عامل

-       يك كلاس

-       يك صفت از يك كلاس

-       يك اصطلاح كه يك عامل كلاس يا صفت نيست.

 

كار با كلاس

اولين باري كه نمودارهاي Class خود را ايجاد مي‌نماييد، قدم بعدي افزودن كلاس‌ها به مدل است. چند نوع كلاس وجود دارد كه شما مي‌توانيد اضافه كنيد. كلاسهاي معمولي، (Rwgular) كلاس‌ها پارامتري شده (Parameterized)، كلاس‌هايي كه به عنوان نمونه آورده شده (instantiated)،كلاسهاي Utility ، كلاسهاي Utility پارامتري شده، كلاسهاي Utility كه به عنوان نمونه آورده شده، و كلاسهاي متا (meta) .
نسبت دادن يك Stereotype به كلاس

يك Stereotype مكانيسمي است كه شما مي‌توانيد با استفاده از آن، كلاسهايتان را طبقه‌بندي كنيد. در UML سه نوع Stereotype اساسي براي كلاس وجود دارد :

Entity , Boundary . Control
كار با بسته‌ها

يك بسته براي گروه‌بندي كلاسهايي استفاده مي‌شود كه توضيحات يكساني دارند. در هنگام بسته‌بندي كلاس‌ها، روشهاي مشتركي وجود دارد، اما شما مي‌توانيدهر جوري كه دوست داريد كلاس‌ها را گروه‌بندي كنيد. يك روش اين است كه كلاس‌ها را به وسيله Stereotype گروه‌بندي كنيد. با اين روش، شما يك بسته با كلاس هاي entity يك با كلاس هاي Boundary و يكي با كلاس هاي control و غيره داريد. اين مي تواند روش مفيد براي برنامه نويسان باشد. همه كلاس هاي Boundary كه روش ماشين سرويس گيرنده مي روند در حال حاضر با هم بسته بندي شده اند. يك روش مفيد ديگر براي گروه بندي كلاس ها بر اساس كارايي مي باشد. مثلا ممكن است شما بسته اي داشته باشيد كه security  ناميده مي شود. كه همه كلاس هايي را نگه مي دارد كه با امنيت برنامه ارتباط دارد.

اگر شما با دقت كلاس هايتان را گروه بندي كنيد به بسته هايي رسيده ايد كه نسبتا وابسته به يكديگر هستند.

بسته ها مي توانند در داخل بسته هاي ديگر جا بگيرند تا بيشتر كلاس هاي شما را سازماندهي كنيد. در بالاترين سطح ممكن است كلاس هاي خود را بر اساس كارايي گروه بندي كنيد تا بسته security شما را بسازيد. از طريق اين بسته شما مي توانيد بسته هاي ديگري داشته باشيد كلاس هاي امنيتي را بر اساس كارايي يا stereotype گروه بندي كنيد.

يك صفت قطعه اطلاعاتي مرتبط با يك كلاس است به طور مثال كلاس company ممكن است صفاتي به اين شكل داشته باشد نام آدرس، تعداد كاركنان.

يك جاي مناسب براي يافتن صفات نگاه كردن به سند نيازمنديها مي باشد.

آخرين راه بررسي ساختار بانك اطلاعاتي است اگر بانك اطلاعاتي شما به طور كامل تعريف شده است. فيلدهاي موجود در جداول درباره اينكه چه صفاتي خواهيد داشت ايده خوبي به شما مي دهند.

به هر حال وقتي صفات را تعريف مي كنيد از اينكه هر كدام از آنها راه برگشتي تبديل به يك نياز را داشته باشد. مطمئن شويد اين موضوع مي تواند در حل مشكلات مربوط به قديمي بودن يك برنامه كاربردي كه اطلاعات زيادي كه هيچ كس مورد استفاده قرار نمي دهد را تعقيب مي كند كمك كند.

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

در حالي كه صفات را تعريف مي كنيد با احتياط آنها را به كلاس هاي مربوطه تخصيص دهيد يك صفت بايد داراي اطلاعات مربوط به كلاس باشد  به طور مثال كلاس كارمند ممكن است داراي نام و ادرس باشد ولي نبايد توليداتي كه شركت مربوط به اين كارمند توليد مي كند را در برداشته باشد. كلاس توليدات مكان بهتري براي ذخيره اطلاعات مربوط به توليدات خواهد بود./

مواظب كلاس هايي كه صفات زيادي دارند باشيد . اگر كلاسي را بيابيد كه داراي تعداد زيادي صفات باشد نشان دهنده اين خواهد بود كه كلاس كوچكتري شكسته شود. اگر كلاس با بيش از 10 يا 15 صفت داشته باشيد نگاه دقيقتري به كلاس بيندازيد ممكن است كلاس كاملا منطقي و موجه به نظر رسد فقط از اينكه تمامي صفات مورد نياز باشند و حقيقتا به همان كلاس تعلق داشته باشند اطمينان حاصل كنيد. براي كلاس هايي كه صفات بسيار كمي دارند نيز به طور مشابه و با احتياط عمل كنيد. ممكن است باز هم كلاس از نظر شما منطقي و موجه باشد به طور مثال ممكن است كلاس هاي control گرايش بيشتري به صفات كم داشته باشند . همچنين ممكن است نشان دهنده اين باشد كه يك يا دو كلاس بايد با هم تركيب شوند. اگر كلاسي با يك يا دو صفت داشته باشيد ممكن است ارزش اين را داشته باشد كه يك نگاه دقيقتري به اين مساله بياندازيد.

گاهي ممكن است به اطلاعات و داده هايي برسيد كه ندانيد آيا صفات هستند و يا كلاس.

سه بخش اصلي از اطلاعاتي كه مي توانيد به هر صفت منتقل كيند بدين شرحند: نام صفت، نوع داده اي و مقدار اوليه. قبل از اينكه براي مدل خويش كدسازي كنيد بايد به هر صفت يك نام و يك نوع داده اي عرضه كنيد. قراردادن مقادير اوليه دلخواه و انتخابي است.

 
تنظيم visibility صفت

يكي از مركزي ترين و اصلي ترين مفاهيم در برنامه نويسي شي گرا كپسوله سازي است هر كلاس داراي صفات و عمليات مقداري از اطلاعات و مقداري از رفتارها و عملكردها را در خود كپسوله مي كند. يكي از مزيتهاي اين روش داشتن قطعات كد كوچك موجود در خود است. به طور مثال كلاس employee تمام اطلاعات و رفتارهاي يك كارمند را در برخواهد داشت.

صفات درون كلاس ها و به صورت مخفي از ديگر كلاس ها قرار دارند به دليل كپسوله بودن صفات درون يك كلاس بايد تعريف كيند كه چه كلاسهايي براي مشاهده و تغيير صفتها اجازه دسترسي دارند كه به عنوان visibility صفت شناخته مي شود.

 
تنظيم محدوديتهاي صفت

محدوديتهاي صفت نشان مي دهد كه صفت چگونه در كلاس ذخيره شده است سه انتخاب براي محدوديت وجود دارد.

BY VALUE توسط مقدار

By refrence توسط مرجع

Unspecified تعريف نشده

هنگامي كه صفتي به يك كلاس افزوده مي شود هر نمونه از كلاس صفت خود را دريافت خواهد كرد.

يك صفت ايستا صفتي است كه توسط همه نمونه هاي يك كلاس بتواند استفاده شود.

يك صفت مشتق شده صفتي است كه از يك يا چند صفت ديگر ساخته شده باشد. به طور مثال كلاس rectangle داريا صفات widthe و height مي باشد. همچنين ممكن است صفتي با نام area داشته باشد كه با انجام محاسبات بر روي طول و عرض به دست مي آيد. Area از دو صفت ديگر يعني width و height مشتق شده است و به عنوان يك صفت مشتق شده در نظر گرفته مي شود.

عمليات رفتار و عملكرد مربوط به يك كلاس مي باشد. يك عمليات سه قسمت دارد: نام عمليات پارامترهاي عمليات و نوع برگشتي عمليات، پارامترها، آرگومان هايي هستند كه عمليات آنها را به عنوان ورودي دريافت مي كند. نوع برگشتي، خروجي عمليات است.

در يك نمودار class مي توانيد يا نام عمليات و يا نام عمليات كه در ادامه آن پارامترها و نوع برگشتي قرار دارد را ببينيد. براي كم كردن بي نظمي و بهم ريختگي در نمودار class داشتن برخي نمودارهاي class فقط با نام عمليات و برخي ديگر با علائم عملياتي كامل شامل پارامترها و نوع داده اي كمك بزرگي خواهد بود.

 
يافتن عملياتها

يافتن عملياتها حقيقتا بسيار آسان است. در حالي كه نمودارهاي sequence و collaboration را مي سازيد. بيشترين كارهاي مورد لزوم براي يافتن عمليات را انجام داده ايد.

چهار نوع متفاوت از عملياتها وجود دارند:

-       عملياتهاي مجري

-       عملياتهاي مديريتي

-       عملياتهاي دسترسي

-       عملياتهاي امدادرساني

آرگومان ها و يا پارامترهاي عمليات داده هاي ورودي هستند كه عمليات ها دريافت مي كنند. به طور مثال عمليات add ممكن است دو آرگومان x و y را گرفته و آنها را با همديگر جمع بزنيد.

دو قطعه از اطلاعات براي عرضه به هر آرگومان وجود دارند اولين آن نام آرگومان است و دومين نوع داده اي است آرگومان ها و انواع داده اي در نمودار class درون پرانتزهاي بعد از نام عمليات قرار مي گيرند.

 
تعريف protocol عمليات

پروتكل عمليات تعريف كننده اين است كه يك در خواست كننده ممكن است چه عملياتي را بر روي آبجكت انجام دهد. و عمليات در چه روندي بايد اجرا شوند.

 
تعريف qualifications عمليات

اين فيلد به شما اجازه تعريف شروط مختص به زبان را براي عمليات مي دهد. هر چيزي كه در اينجا وارد مي كنيد به صورت يك توضيح به كد توليد شده اضافه مي گردد. به هر حال در كد توليد شده براي عمليات تاثيري ندارد.

 
تعريف exeptions استثنائات عمليات

فيلد استثنائات عمليات مكاني است كه مي توانيد موارد استثنايي كه ممكن است عمليات با آن روبه رو شود را ليست كنيد.

 

تعريف اندازه عمليات size

فيلد اندازه مكاني است كه در آنجا معين مي كنيد اين عمليات در زمان اجرا به چه مقدار حافظه نياز دارد.

تعريف time زمان عمليات

زمان عمليات مقدار زمان تخميني است كه عمليات براي اجرا نياز دارد. هر اطلاعاتي كه در اينجا وارد كنيد به صورت يك تفسير در كد ظاهر مي شود.

تعريف concurrency همروندي عمليات

فيلد همروندي تعيين مي كند كه در صورت همزماني چند پردازش كنترلي چه رخ خواهد دارد.

تعريف precondition  پيش شرايط عمليات

پيش شرايط شرايطي هستند كه قبل از اينكه عمليات بتواند اجرا شود بايد true باشد.

تعريف postconditions شرايط پسين عمليات

شرايط پسين شرايطي هستند كه هميشه بايد بعد از خاتمه اجراي عمليات true باشند.

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

چهار نوع رابطه وجود دارد كه مي توانيد آنها را بين كلاس ها برقرار كنيد. Generalization,. Aggregation, dependency, association .

Associatoion ها رابطه هاي معنايي بين كلاس ها هستند كه در نمودار كلاس به وسيله يك خط ساده كشيده مي شوند.

وقتي يك association دو كلاس را به هم وصل مي كند هر كلاس مي تواند از طريق يك نمودار sequence يا يك نمودار collaboration به كلاس ديگر پيغامهايي را بفرستد.

Association ها مي توانند دو طرفه يا يك طرفه باشند. در uml، association هاي دو طرفه مي توانند هم توسط فلش دو طرفه و هم توسط يك خط ساده كشيده شوند. Association هاي يك طرفه كه داراي يك فلش يك طرفه مي باشند مسير هدايت را نشان مي دهند.

Dependency ها نيز دو كلاس را به هم وصل مي كند اما با يك تفاوت كوچك نسبت به association ها. Dependency ها هميشه يك طرفه هستند و نشان مي دهند كه يك كلاس به تعاريف dependency كلاس ديگر بستگي دارد.

Aggregation ها يك فرم قويتر از association هستند يك aggregation يك رابطه بين يك واحد كل whole و بخشهاي parts آن مي باشد. براي مثال ممكن است يك كلاس ماشين داشته باشيد به علاوهه يك كلاس موتور يك كلاس لاستيك و كلاسهايي براي ساير بخشهاي يك ماشين در اين مورد يك آبجكت ماشين از يك آبجكت ماشين از يك آبجكت موتور چهار آبجكت لاستيك و غيره تشكيل مي شود.

Aggregation ها مانند يك خط با يك لوزي در كنار كلاسي كه واحد كل whole را نمايش مي دهد نشان داده مي شوند.

Generalization براي نمايش يك رابطه وراثتي بين دو كلاس استفاده مي شوند اكثر زبانها شي گرا مستقيما از مفهوم وراثت پشتيباني مي كنند. وراثت به يك كلاس امكان مي دهد تا تمام صفتها عملكردها و رابطه هاي كلاس ديگر را به ارث ببرد. در uml يك رابطه وراثتي به عنوان يك generalization شناخته مي شود و مانند يك فلش از كلاس فرزند به كلاس والد نشان داده مي شود.

 

يك آبجكت مشخص شده مي تواند در يك يا چند حالت وجود داشته باشد براي مثال يك كارمند مي تواند استخدام شده باشد اخراج شده باشد، در دوره آزمايشي باشد در مرخصي باشد و يا بازنشته شده باشد. يك آبجكت كارمند در هر كدام از اين حالات ممكن است رفتار و عملكرد متفاوتي داشته باشد.

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

اگر يك كلاس داريد كه چند رفتار وعلكرد مهم ديناميكي دارد. ايجاد يك نمودار تغيير حالت براي آن مفيد است يك كلاس با رفتارها و عملكردهاي ديناميكي قابل ملاحظه كلاسي است كه مي تواند در حالات زيادي وجود داشته باشد در مثال درس يك آبجكت درس مي تواند باز بسته ملغي يا تمام شده باشد.

براي اينكه تعيين كنيد كه آيا يك كلاس رفتارها و عملكردهاي ديناميكي مهم دارد يا خير، به صفتهاي آن توجه كنيد. بررسي كنيد كه چگونه يك نمونه از كلاس ممكن است با مقدارهاي متفاوت در يك صفت متفاوت عمل كند اگر يك صفت به نام وضعيت داريد اين مي تواند نشانه خوبي مبني بر حالات متنوع باشد يك آبجكت چگونه با مقدارهاي متفاوت كه به جاي صفت قرار گرفته مي شوند رفتاري متفاوتي ارائه مي دهد.

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

اين نمودار هابه درد مستندكردن رفتار و عملكرد ديناميكي يك كلاس مي خورند تا برنامه نويسها و تحليل گران يك شناخت و درك واضح و روشن از اين رفتار و عملكرد داشته باشند در نهايت برنامه نويسها مسئول به كار گيري منطق ارائه شده در اين نمودار هستند. مانند ساير نمودارهاي UML نمودار هاي تغيير حالت به گروه اين امكان را مي دهد تا درباره منطق كار قبل از اينكه كد شود بحث و بررسي كرده و آن را مستند سازي كنند.

يك component يك ماژول فيزكي كد است. component ها مي تواند هم حاوي كتابخانه كد منبع و هم فايل هاي زمان اجرا باشند. براي مثال اگر از c++ استفاده مي كنيد هر كدام از فايلهاي  H و cpp شما يك component مجزا مي باشند. فايل exe كه بعد از كامپايل شدن كد ايجاد مي شود نيز يك component است.

وقتي component ها ايجاد مي شوند به يك نمودار component اضافه مي شوند و رابطه هايي بين آنها كشيده مي شود. تنها رابطه ايي كه مي تواند بين component ها وجود داشته باشد يك dependency است. يك dependency بيان مي كند كه يك component بايد قبل از ديگري كامپايل شود.

يك نمودار component يكي از نمودار هاي uml است كه component هاي موجود در سيستم و رابطه هاي dependency بين آنها را نمايش مي دهد.

با استفاده از اين نمودار كارمندان مسئول ترجمه و ايجاد سيستم خواهند دانست كه چه كتابخانه هاي كدي وجود دارند و چه فايل هاي اجرايي به هنگام كامپيايل كد ايجاد خواهند شد. برنامه نويسها خواهند دانست كه چه كتابخانه هاي كدي وجود دارد و چه رابطه هايي بين آنها وجود دارد. رابطه هاي dependency بين component ها به كساني كه مسئول كامپايل هستند. امكان مي دهد كه بدانند . component ها به چه ترتيبي بايد كامپايل شوند.

نماي dependency از استقرار فيزيكي برنامه كاربردي متاثر مي شود كه شامل موضوعاتي از قبيل طراحي و آرايش شبكه و مكان component ها بر روي شبكه مي باشد.

نماي deployment شامل پردازنده process ابزارهاdevice فرايندها و ارتباطهاي بين پردازنده ها و ابزارها مي باشد. همه اينها در يك نمودار deployment نشان داده مي شوند. براي هر سيستم فقط يك نمودار deployment براي هر مدل rose وجود دارد.

يك نمودار deployment تمام گره هاي موجود در شبكه ارتباطهاي بين آنها و فرآيندهايي كه بر روي هر كدام از آنها اجرا خواهند شد را نشان مي دهد.

يك پردازنده هر ماشيني است كه قدرت پردازش دارد. مثل سرويس دهنده ها ، ايستگاههاي كاري و ساير ماشينهايي كه پردازنده ها دارند.

مي توانيد اطلاعاتي را درباره stereotype ، خصيصه و زمان بندي متعلق به پردازنده اضافه كنيد.

Stereotype مانند عملكرد آن با ساير عناصر مدل براي طبقه بندي پردازنده استفاده مي شود.

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

Preemptive نشان مي دهد كه فرآينده هاي با اولويت بالاتر مي توانند پيش از فرايندهاي با اولويت پايين اجرا شوند.

Non preemptive نشان مي دهد كه فرآيندهاي هيچ اولويتي ندارند فرايند جاري اجرا مي شود تا در زماني كه پردازش بعدي آغاز مي شود پايان يابد.

Cyclic كنترل حلقه ايي بين فرايندها را نشان مي دهد به هر فرايند يك مقدار زمان داده مي شود تا اجرا گردد و سپس كنترل براي اجرا به فرايند بعدي داده مي شود.

Executive نشان مي دهد كه گونه هايي از الگو در سيستم هاي محاسباتي وجود دارد كه زمانبدي را كنترل مي كنند.

Manual نشان مي دهد كه فرايندها توسط خود كاربر زمانبندي مي شوند.

يك ابزار device يك ماشين يا يك قطعه سخت افزاري بدون قدرت پردزاش مي باشد. ابزارها شامل عناصري از قبيل پايانه هاي نامفهوم چاپگرها و اسكنرها مي باشد. در uml ابزارها با اين نشانه ظاهر مي شوند.

پردازنده ها و ابزارها مي توانند به عنوان گره هايي در شبكه در نظر گرفته شوند.

 


 

شنبه 20 فروردین 1390  5:34 PM
تشکرات از این پست
دسترسی سریع به انجمن ها