جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
طراحي برنامه
-(3 Body) 
طراحي برنامه
Visitor 435
Category: دنياي فن آوري
در ساليان اخير ، متدولوژي هاي متفاوتي بمنظور طراحي برنامه ، پياده سازي و در اختيار طراحان برنامه هاي کامپيوتري قرار گرفته شده است . برخي از اين متدلوژي ها ي طراحي، پيچيده و برخي ديگر ساده مي باشند . در تمامي حالات ، هدف يکي است : کمک به برنامه نويسان در جهت نوشتن برنامه ها ئي که بسادگي نوشته ، اشکال زدائي و در نهايت نگهداري گردند .
در اين مقاله به بررسي مسائل مرتبط با طراحي برنامه پرداخته و در اين راستا در ابتدا با يک متدولوژي ساده آشنا خواهيم شد. متدلوژي استفاده شده با اينکه بسيار مقدماتي مي باشد ولي اهداف ما را در جهت نحوه طراحي يک برنامه بخوبي تامين خواهد کرد .در اين مقاله ، به بررسي الگوريتم و مراحل پنج گانه برنامه نويسي خواهيم پرداخت . پس از آشنائي با متدولوژي ارائه شده در اين مقاله ، در بخش دوم مقاله ، با متدولوژي UML)Unified Modeling Language ) آشنا خواهيم شد. UML ، يک متدولوژي رايج بمنظور طراحي برنامه هاي کامپيوتري خصوصا" برنامه نويسي شي گراء است .

اهميت طراحي برنامه

فرض کنيد يک مسئله را براي تعدادي دانشجو تعريف و از آنان خواسته شده است که برنامه اي بمنظور حل مسئله مورد نظر ، طراحي و پياد ه سازي نمايند. پس از صرف چند ثانيه ، بلافاصله دانشجويان شروع به تايپ کد مورد نظر خود بمنظور حل مسئله مي نمايند . در بين دانشجويان ، دانشجوئي وجود دارد که کاغذي را بر مي دارد و شروع به نوشتن موضوع مي نمايد. دقايقي سپري مي گردد ، اما همچنان دانشجويان مشغول تايپ برنامه خود ويا احتمالا" اشکال زدائي! آن هستند .تقريبا" بدون استثناء ، دانشجوئي که ديرتر از ديگران آغاز نموده است ، با سرعت بيشتري تکليف خود را به پايان رسانده و حتي راه حل ارائه شده توسط وي ، نيز از ساير دانشجويان بمراتب بهتر است .چرا؟ در صورتيکه به کاغذي که در اختيار دانشجو قرار داده شده ، دقت نمائيد ، يک طرح مناسب بمنظور طراحي برنامه را براي مسئله، مشاهده خواهيد کرد . برخي از دانشجويان نيز ممکن است چندين کاغذ را تکميل و يک طراحي پيچيده را انجام داده باشند. نکته مهم در اين رابطه اين است که اين دانشجويان ( چه آناني که يک طراحي ساده را انجام داده اند و چه آناني که يک طراحي پيچيده را دنبال نموده اند ) داراي يک الگو( طرح ) براي برنامه خود ، مي باشند .

الگوريتم

هر برنامه، مي بايست داراي يک طرح و يا الگو بوده تا برنامه نويس بر اساس آن عمليات خود را دنبال نمايد.از ديدگاه برنامه نويسان ، هر برنامه نيازمند يک الگوريتم است . بعبارت ساده ، الگوريتم ، بيانه اي روشمند بمنظور حل يک مسئله بخصوص است . از منظر برنامه نويسان ،الگوريتم بمنزله يک طرح کلي و يا مجموعه دستورالعمل هائي است که با دنبال نمودن آنان ، برنامه اي توليد مي گردد.

الگوريتم هاي ميکرو در مقابل ماکرو

الگوريتم ها داراي ويژگي هاي متفاوتي مي باشند . ما مي توانيم در رابطه با الگوريتم استفاده شده به منظور نوشتن يک برنامه مشخص صحبت نمائيم . از اين زاويه ، ما صرفا" در رابطه با الگوريتم در سطح ماکرو(macro level) ، صحبت نموده ايم . در چنين مواردي ، الگوريتم ارائه شده ، سعي در بدست آوردن جنبه هاي عمومي برنامه از طريق يک مرور کلي به برنامه در مقابل درگير شدن در جزئيات را دارد.ما مي توانيم در رابطه با الگوريتم ها ، از سطح "ميکرو" صحبت نمائيم . از اين زاويه ، به سطوح پايين تر رفته و به عوامل اساسي ونگهدارنده اي که يک جنبه خاص از برنامه را با يکديگر مرتبط مي نمايد، صحبت کرد. مثلا" در صورتيکه شما داراي داده هائي هستيد که مي بايست قبل از استفاده مرتب گردند ،الگوريتم هاي مرتب سازي متعددي در اين زمينه وجود داشته و مي توان يکي از آنها را بمنظور تامين اهداف مورد نظر خود انتخاب نمود. انتخاب يک الگوريتم مرتب سازي ، صرفا" باعث حل شدن يکي از جنبه هاي متفاوت برنامه مي گردد . پس از مرتب سازي داده ها ،مي بايست از يک الگوريتم ميکرو ديگر بمنظور نمايش داده ها ي مرتب شده استفاده گردد .
همانگونه که احتمالا" حدس زده ايد ، ما مي توانيم تمام الگوريتم هاي ميکرو را بمنظور ايجاد يک الگوريتم ماکرو ، جمع آوري نمائيم . اگر ما با الگوريتم هاي ميکرو ، آغاز نمائيم ، و حرکت خود را بسمت نمايش ماکروي يک برنامه ، پيش ببريم ، کاري را انجام داده ايم که موسوم به طراحي " پايين به بالا" (buttom-up) ، است . اگر ما فعاليت خود را با يک الگوريتم ماکرو آعاز و حرکت خود را بسمت پائين و الگوريتم هاي ميکرو ، ادامه دهيم ، طراحي از نوع " بالا به پايين " (top-down) را انجام داده ايم .
شايد اين سوال مطرح گردد که کدام روش بهتر است ؟ اگر شما تمام مقالاتي را که تاکنون در اين زمينه نوشته شده اند را دنبال نمائيد ، هرگز به يک نتيجه قابل قبول دست نخواهيد يافت . هر رويکرد، داراي نکات مثبت و منفي مربوط به خود است . صرفنظر از رويکرد طراحي استفاده شده ، مي بايست داراي الگوئي (طرحي) مناسب براي برنامه باشيم .حداقل، نيازمند يک اعلاميه از مسئله برنامه نويسي و يک طرح ( الگو) براي برخورد با مسئله ، خواهيم بود . پس از شناخت مسئله ، مي توان نحوه حل مسئله را ترسيم کرد. شناخت عميق و مناسب نسبت به مسئله اي که قصد حل آن را داريم ، شرط اساسي و ضروري براي طراحي يک برنامه است .
با توجه به اينکه اين اعتقاد وجود دارد که شناخت جامع و کلي از مسئله اي که حل آن را داريم ، بخشي ضروري در اولين مرحله برنامه نويسي است ، ما در ادامه از رويکرد "بالا - پايين "، تبعيـت مي نمائيم . فراموش نکنيم که رويکرد فوق ، امکان مشاهده مجازي از هر مسئله برنامه نويسي را فراهم خواهد نمود.

مراحل پنج گانه

هر برنامه را صرفنظر از ميزان پيچيدگي آن ، مي توان به پنج مرحله اساسي تجزيه کرد :
• مقدار دهي اوليه
• ورودي
• پردازش
• خروجي
• پاکسازي
در ادامه به بررسي هريک از مراحل فوق ، خواهيم پرداخت .

مرحله مقداردهي اوليه

مرحله مقداردهي اوليه ، اولين مرحله اي است که مي بايست در زمان طراحي يک برنامه در رابطه با آن فکر کرد . مرحله فوق ، شامل تمامي عمليات مورد نيازي است که برنامه مي بايست قبل ازبرقراري ارتباط با کاربر ، انجام دهد . در ابتدا ممکن است اين موضوع که عملياتي را قبل از برقراري ارتباط با کاربر مي بايست انجام داد ، تا اندازه اي عجيب بنظر رسد ولي احتمالا" برنامه هاي زيادي را مشاهده نموده ايد که در اين راستا عمليات مشابهي را انجام مي دهند. مثلا" ، در زمان استفاده از برنامه هائي نظير Word ، Excel و يا برنامه هاي مشابه ديگر ، با چنين مواردي برخورد نموده ايم . مثلا" با انتخاب گزينه منو File ، مي توان ليستي از فايل هائي را که با آنها کار کرده ايم در بخش انتهائي منوفوق ، مشاهده کرد. ( مشاهده آخرين فايل هاي استفاده شده در يک برنامه خاص ، با استفاده از جادو! ميسر نشده است ) . برنامه مورد نظر شايد ، ليست فايل هاي اخير را از ديسک خوانده و آنها را به ليست مربوطه در منوي File ، اضافه کرده باشد . با توجه به اينکه ليست فايل هاي فوق ، مي بايست قبل از اينکه برنامه هر چيز ديگر را براي کاربر نمايش دهد ، خوانده و نمايش داده شوند ، مي توان انجام عمليات فوق را نمونه اي از مرحله مقداردهي اوليه، در نظر گرفت.
يکي ديگر از عمليات متداول که به اين مرحله مرتبط مي باشد ، خواندن فايل هاي Setup است . چنين فايل هائي ممکن است حاوي اطلاعاتي در رابطه با نام مسيرهائي باشند که بانک ها ي اطلاعاتي خاصي و يا فايل هاي ذخيره شده ديگري را بر روي ديسک را مشخص مي نمايند . با توجه به نوع برنامه اي که اجراء مي گردد ، فايل هاي Setup مي توانند شامل اطلاعاتي در رابطه با فونت هاي نمايش ، نام و محل چاپگر ، رنگ هاي زمينه و رويه ، وضوح تصوير صفحه نمايشگر و اطلاعات مشابهي ديگر باشند . ساير برنامه ها ممکن است مستلزم خواندن اطلاعاتي در رابطه با اتصالات شبکه ، مجوزهاي امنيتي و دستيابي به اينترنت ، رمزهاي عبور و ساير اطلاعات حساس ديگر باشند . در چنين مواردي فايل هاي Setup داراي نقشي مهم خواهند بود.
در زمان طراحي يک برنامه ، همواره مي بايست در رابطه با اطلاعاتي که يک برنامه قبل آغاز خدمات و عمليات خود به آنها نيازمند است ، انديشيد و براي آنان در مرحله مقداردهي اوليه راهکار مناسب را انتخاب کرد . مرحله مقداردهي اوليه احتمالا" جائي است که مي بايست از طريق آن اقدام به ارائه راهکار مناسب در جهت پاسخ به نيازهاي فوق ، کرد.

مرحله ورودي

مرحله ورودي ، در حقيقت چيزي است که انتظار داريد باشد! مرحله فوق ، شامل اخذ ( جمع آوري ) هر آنچيزي است که يک برنامه براي انجام فعاليت هاي خود به آنها نياز خواهد داشت . دراکثر موارد، اگر استنباط مناسبي از عملياتي را که يک برنامه قصد انجام آنان را دارد ، حاصل گردد، مشخص نمودن ليستي از ورودي ها ، کاري ساده خواهد بود. مثلا" اگر شما قصد نوشتن يک برنامه وام را داريد ، مي دانيد که مي بايست از کاربر ميزان وام درخواستي ، بهره موردنظر و مدت زمان وام ، درخواست گردد.
در حالات ديگر، لازم است در رابطه با نوع ورودي هائي که مي بايست از کاربر اخذ گردد، بررسي لازم و مبتني بر انديشه را دنبال نمود. مثلا" در صورتيکه قصدنوشتن يک برنامه دفترچه آدرس را داريد ، آيا مي خواهيد نام فايل حاوي دفترچه تلفن و محل ذخيره فايل مربوطه را در هر مرتبه که برنامه اجراء مي گردد ، از کاربر درخواست نمائيد ؟ بعبارت ديگر برخي از مراحل ورودي مي توانند و شايد مي بايست ، توسط مرحله مقدار دهي انجام شوند. ماهيت واقعي ميزان اطلاعاتي که مي توان آنها را در مرحله مقداردهي خواند ، بستگي به رفتار برنامه دارد. بعنوان يک قانون عمومي مي توان به اين مورد اشاره داشت که اکثر کاربران تمايل دارند که اطلاعات تکراري در يک فايل Setup و يا مقداردهي اوليه ذخيره گردد (در مقابل اينکه هر مرتبه که برنامه اجراء مي گردد ، مجبور به ورود اطلاعات تکراي باشند ) .
فايل هاي Setup بسيار مناسب بوده و در هرموردي که امکان بخدمت گرفتن آنان منطقي بنظر مي آيد ، مي بايست از آنان استفاده گردد . برخي ديگر از اطلاعات اوليه داراي ماهيت خاص خود بوده و تا زمانيکه کاربر آنها را تايپ ننمايد ، شناخته نمي گردند . در مثال وام اشاره شده ، مي توان از TextBox هاي متعددي بمنظور احذ اطلاعات از کاربر و استفاده از آنان در برنامه ، کمک گرفت . با توجه به اينکه کاربر مي بايست با اين TextBox ها مرتبط تا اطلاعات موردنياز برنامه را وارد نمايد ، روشي را که شما بمنظور ارائه Textbox ,Labels ,Menus و ساير عناصر برنامه ، استفاده مي نمائيد ، يکي از بخش هاي مهم يک برنامه يعني رابط کاربر ( user interface ) را مشخص خواهد کرد . فراموش نکنيم يکي از عوامل موفقيت هر نرم افزار ، بخش رابط کاربر آن است . طراحي مناسب بخش فوق ، امروزه بعنوان تخصصي خاص در طراحي و پياد ه سازي نرم افزار مطرح و داراي جايگاه خاص خود است .

مرحله پردازش

مرحله پردازش ، شامل انجام عمليات بر روي ورودي (ورودي ها ) ، بمنظور توليد نتايج مورد نظر براي برنامه است . در مثال وام ، برنامه پس از دريافت ورودي هاي مورد نظر ( ميزان وام ، درصد بهره و زمان وام ) آنها را از طريق يک معادله مالي بيکديگر مرتبط و پس از حل معادله ، نتيجه مورد نظر حاصل خواهد شد( ميزان پرداخت ماهانه ) . بعبارت ديگر ، مرحله پردازش قادر به دريافت ورودي ، برخورد با آنها و توليد پاسخ مناسب به مسئله است . توجه داشته باشيد که مرحله پردازش همواره باعث نمايش چيزي بر روي نمايشگر نخواهد شد. هدف ، عمل ( عمليات ) برروي داده ( داده ها ) بمنظور توليد يک نتيجه ( نتايج ) است . در اين رابطه هيچگونه استثنائي وجود ندارد . در صورتيکه در برنامه اي از قبل مي دانيم که مرحله پردازش زمان زيادي طول خواهد کشيد ، منطقي است که فيدبک هاي لازم بمنظور آگاهي کاربر از ميزان و درصد انجام پردازش ( پردازش ها ) در اختيار وي گذاشته شود ( در زمانيکه برنامه در حال اجراء است ) . در اين رابطه مي توان از روش هاي متعددي استفاده کرد . ( ارائه يک ميله پيشرفت ، برآورد زمان تقريبي بمنظور اتمام عمليات ) .

مرحله خروجي

مرحله فوق ، پاسخ ( پاسخ ها ي) مناسب و مورد انتظار را به کاربران مبني بر حل مسئله مورد نظر ، ارائه مي نمايد. تعداد زيادي ازبرنامه ها ، پاسخ نهائي ( نتيجه ) خود را از طريق يک Textbox ، نمايش و در اختيار کاربر قرار مي دهند . ، مثلا" اگر برنامه اي نوشته شده است که قصد محاسبه و نمايش ميزان پرداخت ماهيانه يک وام دريافتي را داشته باشد ، مي توان نتيجه بدست آمده (پرداخت ماهانه) را از طريق يک textbox ، ارائه تا پاسخي مناسب در ارتباط با مرحله خروجي يک برنامه، داده شده باشد . ساير برنامه ها ممکن است داراي وضعيتي بمراتب پيچيده تر باشند .مثلا" مي توان برنامه اي را در نظر گرفت که نام ، آدرس ، شماره تلفن و ساير اقلام اطلاعاتي را از بانک اطلاعاتي خوانده و در ادامه آنها را بر روي صفحه نمايشگر ، نشان دهد. برنامه هائي اينچنين ، نيازمند شکل مناسبتري از نمايش خروجي بوده و نمي توان با استفاده از چند textbox به خواسته خود دست يافت ( ارائه يک خروجي مطلوب و انعطاف پذير) در اينگونه موارد مي بايست از راهکارهاي مناسبتري استفاده گردد . مثلا" مي توان از جداول خاصي بمنظور نمايش اطلاعات مورد نظر استفاده کرد .( استفاده از grid و يا List box که برنامه در صورت ضرورت آنان را تکميل نمايد ) . نکته مهمي که مي بايست در رابطه با مرحله خروجي رعايت گردد ، آگاهي از اين موضوع است که با توجه به نمايش نتايج خروجي براي کاربر، بخش فوق را مي توان جزئي از بخش رابط کاربر يک نرم افزار در نظر گرفت . در زمان ورود اطلاعات ( مرحله ورودي ) از عناصر متفاوتي بمنظور اخذ اطلاعات توسط کاربر در بخش رابط استفاده مي گردد ، در مرحله خروجي ، بخش رابط کاربر با کاربر بگونه اي ديگر مرتبط خواهد شد ( ارتباطي بمراتب غير فعالتر نسبت به مرحله ورود اطلاعات ) .

مرحله پاکسازي ( Cleanup )

مرحله پاکسازي ، بمنظور خاتمه بخشيدن مودبانه يک برنامه، پس از تکميل عمليات مربوطه است. مي توان اين مرحله را بعنوان مکمل مرحله مقداردهي اوليه در نظر گرفت .با اينکه تعداد زيادي از برنامه هاي ساده قادرند بسادگي و بدون انجام عمليات تکميلي توسط برنامه نويس ، خاتمه يابند ولي برنامه هاي پيچيده زيادي نيازمند برخي کمک ها در اين زمينه مي باشند. مثلا" اگر برنامه اي يک فايل Setup را بمنظور مقداردهي برخي از متغيرها در زمان مرحله مقداردهي اوليه ، خوانده باشد ، مرحله پاکسازي مي تواند شامل بهنگام سازي آندسته از متغيرهاي موجود در فايل Setup باشد که نشاندهنده آخرين اطلاعات کاربر است . مرحله پاکسازي ، اغلب شامل بستن فايل ها ( فايل هاي Setup و بانک اطلاعاتي) است . برخي برنامه ها ميزان استفاده از برنامه توسط کاربران را ثبت و اطلاعات مربوطه را در مکانهائي که Log file ناميده مي شوند ، ذخيره مي نمايند( ثبت مشخصات افراديکه برنامه را اجراء نموده بهمراه ساير اطلاعات مرتبط نظير تاريخ و زمان آغاز و توقف برنامه ، در خيلي از برنامه ها به امري ضروري تبديل شده است ) .
يکي ديگر از انواع فايل هاي Log به فايل هاي ثبت خطاء برمي گردد( error log file ) . هدف اين نوع از فايل ها ، ثبت اطلاعاتي در رابطه با هر نوع خطائي است که ممکن است در مدت زمان اجراي يک برنامه ، محقق گردد. برنامه نويسان با استفاده از محتويات اين نوع فايل ها ، قادر به اشکال زدائي برنامه خواهند بود .
عمليات واقعي و مورد نظري که مي بايست در مرحله پاکسازي ، انجام گردد ، به نيازهاي يک برنامه بستگي خواهد داشت . معمولا" اگر در برخي برنامه ها عمليات خاصي را در مرحله مقدار دهي اوليه انجام مي هيم ، مي بايست برخي از عمليات متناظر با آنان را در مرحله پاکسازي انجام داد . باز نمودن و بستن فايل هاي مورد نياز در يک برنامه ، نمونه اي متداول از دو مرحله فوق مي باشد .

آيا هر برنامه شامل پنج مرحله گفته شده است؟

در پاسخ به سوال فوق مي بايست با صراحت پاسخ منفي داده شود. در اين راستا ، برنامه هاي متعددي وجود دارد که مثلا" به مراحل مقداردهي اوليه و يا پاکسازي ، نياز نخواهند داشت . مراحل مقداردهي اوليه و پاکسازي در مرحله طراحي برنامه هاي پيچيده مورد توجه جدي قرار خواهند گرفت. بموازات افزايش تجربه در نوشتن برنامه ، شناخت مناسبي در اين رابطه بوجود مي آيد( کدام برنامه به تمام مراحل پنج گانه نياز و کداميک نياز ندارند).طراحان مي بايست همواره يک مسئله برنامه نويسي را با فرض وجود پنج مرحله ياد شده ،دنبال نمائيد . قطعا" حذف يک مرحله در زمان طراحي بمراتب ساده تر از ناديده گرفتن ! اوليه آن خواهد بود.

پالايش يک طرفه ( Sideways Refinement )

همانگونه که قبلا" اشاره گرديد ، ما علاقه مند به طراحي بالا به پايين مي باشيم .( الگوريتم ماکرو بعنوان يک نقطه شروع در فرآيند طراحي برنامه) . پس از انتخاب رويکرد فوق ، مي بايست شناخت مناسبي نسبت به مسئله اي که قصد حل آن وجود دارد ، ايجاد گردد. تا رسيدن به سطح ميکرو( ارائه الگوريتم هاي ميکرو) بمنظور حل مسئله مورد نظر راه زيادي را در پيش خواهيم داشت. بموازات حرکت از سطح مرور کلي برنامه به خصوصيات و ويژگي هاي يک برنامه ، مي بايست دانش خود را نسبت به جرئيات مربوطه افزايش داد .
از پنج مرحله گفته شده ، مي توان بمنظور نقطه شروع ديد ماکرو خود در زمان فرآيند طراحي استفاده کرد. درادامه ، مي توان هر يک از مراحل را بدقت بررسي تا جزئيات بيشتري در رابطه با مرحله مورد نظر ، مشخص گردد ( استخراج جزئيات لازم در رابطه با تحقق هر مرحله ) . فرآيند فوق ، " پالايش يک طرفه " ، ناميده مي شود . در ادامه ، بمنظور شناخت مناسب فرآيند پالايش يک طرفه ، به بررسي يک نمونه مي پردازيم .
فرض کنيد ، کاربري داراي يک فايل بانک اطلاعاتي است که در آن تمام قرار ملاقات هاي وي ، ذخيره شده اند . قرار ملاقات ها در بانک اطلاعاتي با نظم و ترتيب خاص ( تاريخ قرار ملاقات ) ذخيره شده اند . کاربر ، مي خواهد قادر به مشاهده قرار ملاقات هاي خود بر اساس حروف الفبائي و بر اساس نام خانوادگي اشخاص مورد نظري که قصد ملاقات با وي را دارند ، باشد. چگونه مي توان از پالايش يک طرفه ، بمنظور طراحي يک را ه حل استفاده کرد؟

پالايش يک طرفه مرحله مقدار دهي اوليه

مي دانيم که کاربر داراي يک بانک اطلاعاتي شامل قرار ملاقات ها ، مي باشد. ما همچنين مي دانيم که کاربر مي خواهد ليستي از قرار ملاقات هاي خود را بصورت مرتب شده و بر اساس نام خانوادگي مشاهده نمايد . موارد فوق ، ديد ماکروي ما از الگوريتم است . بنابراين ، در مرحله مقداردهي اوليه چه عملياتي مي بايست انجام داد ؟ واضح است که ما نيازمند باز نمودن بانک اطلاعاتي قرار ملاقات ها مي باشيم . ما همچنين نيازمند يک فرم ( مثلا" يک فرم مبتني بر VB.NET و يا فرم وب ) بمنظور نمايش نتايج پس از مرتب سازي قرار ملاقات ها ، خواهيم بود. ( فرض مي شود از مکان بانک اطلاعاتي بر روي شبکه آگاهي داريم ، و مي توان نام و رمز عبور کاربر را از بانک اطلاعاتي مربوطه بمحض آغاز اجراي برنامه توسط کاربر ، مشخص کرد) .
همانگونه که در شکل فوق ، مشاهده مي گردد بموازات حرکت از سمت چپ بسمت راست ، جزئيات مربوطه افزايش خواهد يافت . شکل فوق ، پالايش يک طرفه ، ليستي از برنامه هاي جانبي و توابع مورد نياز بمنظور انجام فعاليت هاي مربوطه در مرحله مقداردهي اوليه را نشان مي دهد . هر روتين کوچک، مسئول انجام عملياتي خاص خواهد بود .

شبه کد ( Pseudo Code )

عمليات پالايش را مي توان در رابطه با هر مرحله با استفاده از "شبه - کد " ، دنبال کرد. شبه کد ،الگوريتمي براي بيان عملياتي است که مي بايست توسط يک روتين محقق گردد . در اين راستا از يک گرامر مشابه انگليسي ، استفاده مي گردد . مثلا" شبه کد ، روتين IsValidUser بصورت زير خواهد بود:

شبه کد روتين IsvalidUser

Is ValidUser()
  If  CurrentUserName Not in ValidUserList
        Display Invalid User Error Message
        Terminate Program
  Else
       Return ValidUserIDNumber
End


شبه کد ، عملياتي را که يک روتين مي بايست انجام دهد ، بدون اتکاء به گرامر يک زبان برنامه نويسي خاص ، تشريح مي نمايد. شبه کد ، زباني مبتني بر گرامري خاص نبوده و الگوريتمي از عمليات مورد نظر که مي بايست توسط يک روتين انجام شود را مشخص مي نمايد. مزيت شبه کد، شباهت زياد آن به زبان انگليسي است و مي توان آن را با افراديکه برنامه نويس نبوده و بنوعي در فاز طراحي صاحبنظر مي باشند ، به اشتراک تا صحت استنباطات حاصل شده تائيد و يا اصلاح گردد.( در فاز طراحي مي بايست يک ارتباط مستمر با کاربران صاحبنظر برقرارگردد، ما قرار است مسئله آنان را حل نمائيم نه مسئله خود را و يا نمي خواهيم مسئله اي ديگر را بر حجم مسائل آنان اضافه نمائيم!) بدين ترتيب ، امکان تشخيص خطاء و اعمال تعييرات لازم در خصوص برخورد با خطاهاي احتمالي در ابتدا فراهم مي گردد ( يکي از اصول مهندسي نرم افزار در اين رابطه به اين موضوع اشاره مي نمايد که به هر ميزان که زمان کشف يک خطاء در چرخه حيات يک برنامه سريعتر باشد ، هزينه برخورد با خطاء کاهش خواهد يافت ) .
پس از آگاهي از اهداف ارائه شده در شبه کد ، مي توان بسادگي اقدام به ترجمه شبه کد مربوطه به کدهاي برنامه نويسي با استفاده از زبان مورد نظر نمود. فراموش نکنيم که طراحي خوب ، همواره پياده سازي ساده تر برنامه ها را بدنبال خواهد شد.

UML چيست ؟

مراحل پنج گانه برنامه نويسي ، نقطه شروع مناسبي براي طراحي يک برنامه است ( اولين فاز). در ادامه با استفاده از پالايش ( بهسازي ) يکطرفه مراحل پنج گانه برنامه نويسي ، فاز دوم طراحي يک برنامه انجام خواهد شد . استفاده از شبه کد بمنظور ارائه جزئيات پالايش ، کمک قابل توجه و مفيدي در ارتباط با طراحي برنامه را بدنبال خواهد داشت . رويکرد فوق ( مراحل پنج گانه برنامه نويسي ) ، روشي مفيد بمنظور طراحي يک برنامه است . در اين راستا برخي از طراحان برنامه هاي کامپيوتري ترجيح مي دهند که از يک روش دقيق تر و موشکافانه تر استفاده نمايند . UML(Unified Modeling Language) مبتني بر چنين رويکردي است .
UML ،زباني استاندارد بمنظور مشخص نمودن ، پيش بيني ، ايجاد و مستند سازي توليدات نرم افزاري است . UML ، مجموعه اي از بهترين امکانات مهندسي را بمنظور استفاده در مدل سازي سيستم هاي بزرگ و پيچيده ارائه که کارآئي آنان به اثبات رسيده است . UML يک متدولوژي رسمي براي پياده سازي نرم افزار است .

روند شکل گيري UML

برنامه نويسي شي گراء ( OOP ) ، از اوايل سال 1960 مطرح گرديد . برنامه نويسي شي گراء با اينکه بعنوان يک ايده جديد مطرح شده بود ولي بسرعت زبان هاي مدل سازي شي گراء براي پوشش ايده فوق ، مطرح و پياده سازي گرديدند. در فاصله سال هاي 1970 تا اواخر 1980 چندين زبان مدل سازي شي گراء پياده سازي گرديد . تعداد زبان ها ي مدل سازي شي گراء در سال 1995 به بيش از پنجاه نمونه رسيده بود .
از افراد فعال و پيشرو در اين زمينه مي توان به Jim Rumbaugh ( شرکت جنرال الکتريک )، Grady Booch ( شرکت Rational software ) و Ivar Jacobson ( شرکت Objectory ) اشاره نمود. هر يک از افراد فوق ، تلاش گسترده اي را در جهت مدل سازي زبان برنامه نويسي انجام داده بودند . در سال 1994 ، Rumbaugh شرکت جنرال الکتريک را ترک و به Booch در شرکت Rational Software ملحق گرديد. يک سال بعد ، شرکت Rational Software ، شرکت Objectory را خريداري و افراد ياد شده همکاري خود را با يکديگر و در يک شرکت مشترک آغاز نمودند. ماحصل همکاري فوق ، ارائه اولين نسخه UML 0.9 توسط شرکت Rational software در سال 1996 بود .
در ساليان بعد ، OMG)Object Management Group) ، تلاش هاي گسترده اي را بمنظور ارتقاء و بهسازي UML آغاز نمود. در اواسط سال 2001 ، اعضاء OMG ، کار خود را بمنظور ارتقاء به UML 2.0 آغاز نمودند. در حا ل حاضر ، UML شامل مدل سازي ويژوال ، شبيه سازي و امکانات پياده سازي است . تعداد زيادي از ابزارهاي UML طراحي و در اختيار علاقه مندان قرار گرفتند . Rational Rose 2002 از شرکت Rational Software ، نرم افزار Describe Enterprise از شرکت Embarcadero Technologies و Visio 2002 از شرکت مايکروسافت . نمونه هائي از ابزارهاي UML مي باشند .

دياگرام هاي UML

UML يک ابزار ويژوال بوده و از انواع متفاوتي دياگرام استفاده مي نمايد . هر يک از دياگرام هاي UML ، امکان مشاهده يک سيستم نرم افزاري را از ديدگاههاي متفاوت و با توجه به درجات متفاوت Abstraction در اختيار پياده کنندگان قرار مي دهد. برخي از دياگرام هاي UML عبارتند از :
• Class Diagram
• State Diagram
• Sequence Diagram
• Collaboration Diagram
• Activity Diagram
• Component Diagram
• Deployment Diagram

آناليز شي گراء (OOA)

آناليز شي گراء و يا OOA ، يک متدولوژي قدرتمند براي تجزيه و تحليل فرآيند پياده سازي نرم افزار است . در زمان استفاده از OOA ، هر چيز در فرآيند پياده سازي نرم افزار بمنزله کلاس در نظر گرفته خواهد شد ( اين طرز تفکر مي بايست محور آناليز سيستم قرار گيرد ) . مثلا" در يک بيمارستان هر يک از عناصر موجود نظير : دکتر ، پرستار ، بيمار و ملاقات کننده ، بمنزله يک کلاس در نظر گرفته مي شوند . هر نسخه جديدي که از يک کلاس ايجاد مي گردد ، بمنزله يک نمونه ( Instance ) از کلاس در نظر گرفته خواهد شد . محوريت فرآيند آناليز شي گراء ، تاکيد بر ايجاد کلاس هاي مورد نياز سيستم است .
مهمترين و اصلي ترين رويکرد OOA ،يافتن پاسخ مناسب براي سوالاتي است که با What شروع و در فرآيند پياده سازي نرم افزار حضوري موثر دارند . نمونه سوالات OOA در اين زمينه عبارتند از : " چه کلاس هائي در برنامه وجود دارد؟" . " چه چيزي را برنامه انجام خواهد داد ؟" " هر يک از کلاس ها در برنامه چه عملياتي را بمنظور حل مسئله انجام خواهند داد ؟" " مسئوليت هر کلاس در برنامه چيست ؟" در OOA ، تاکيد بر آناليز اشياء ، فعاليت ها و مسئوليت هاي سيستم نرم افزاري است .

طراحي شي گراء ( OOD )

نکته اساسي در طراحي شي گراء ، تاکيد و سرو کار داشتن با سوالاتي است که با How شروع و در فرآيند پياده سازي نرم افزار حضوري فعال و موثر خواهند داشت . " چگونه اين کلاس داده را جمع آوري مي کند ؟" . " چگونه اين کلاس گزارش را چاپ مي نمايد ؟" ، نمونه سوالاتي در اين زمينه مي باشند .در نمونه مثال بيمارستان، وضعيت فوق به خصلت ها ، صفات و متدهاي يک کلاس مرتبط مي گردد .
بنابراين OOA ، کلاس هاي مورد نظر و ضروري بمنظور نيل به اهداف نرم افزار را مشخص مي نمايد و محور عمليات بر جستجو و تبين جايگاه يک کلاس در برنامه متمرکز است . در OOD ، تاکيد بر پياده سازي کلاس ها ، صفات و خصايصي است که بمنزله هسته يک کلاس مطرح مي گردند . ترکيب هر يک از فعاليت هاي فوق ( آناليز شي گراء و طراحي شي گراء ) بهمراه پياده سازي لينک هائي که با کلاس ها سروکار دارند جملگي بعنوان بخشي از فرآيند OOP ( برنامه نويسي شي گراء ) محسوب مي گردند.

دياگرام هاي کلاس UML

دياگرام کلاس در UML يکي از مهمترين دياگرام ها تلقي مي گردد . دياگرام فوق ، مسئوليت مدل سازي ساختار کلاس و محتويات را با استفاده از عناصري نظير کلاس ها ، اشياء و پکيج ها برعهده دارد . اين دياگرام همچنين ، ارتباطاتي نظير : توارث و پيوستگي را نمايش خواهد داد. دياگرام فوق ، شکل خلاصه و استانداردي بمنظور نمايش يک کلاس را ارائه مي نمايد. در اين راستا از يک مستطيل که به سه بخش متفاوت تقسيم مي گردد ، استفاده مي شود. در اولين بخش مستطيل ، نام کلاس قرار مي گيرد . در دومين بخش مستطيل ، خصلت هاي يک کلاس قرار خواهند گرفت ( ممکن است از واژه صفات و يا متغير نيز استفاده گردد ) و در بخش سوم ، متدهاي يک کلاس قرار مي گيرند.متدهاي هر کلاس ، عملياتي را که يک کلاس مي تواند انجام دهد ، مشخص مي نمايند. شکل زير ، يک دياگرام کلاس نمونه را نشان مي دهد. در اولين بخش ، نام کلاس Vehicle مشخص شده است .نام هر کلاس با يک حرف بزرگ شروع و در موارديکه نام کلاس شامل بيش از يک کلمه باشد ، هر کلمه در نام کلاس با يک حرف بزرگ آغاز مي گردد . Vehicle ، PassengerCar و IncomeStatement نمونه هائي در اين زمينه مي باشند .استفاده از از فضاي خالي بين کلمات تشکيل دهنده نام يک کلاس ، مجاز نمي باشد .

خصايص کلاس (Properties , Attributes)

در دياگرام کلاس Vehicle و در بخش دوم از شش خصلت Integer استفاده شده است . در نمونه کلاس هاي ديگر ، يک کلاس ممکن است داراي دهها خصلت باشد .در برخي زبانهاي برنامه نويسي نظير ويژوال بيسيک دات نت ،از خصلت با نام Prtoperty نيز ياد مي گردد. هر خصلت مي تواند داراي مقادير متفاوتي باشد . مقادير جاري خصلت ها ، وضعيت يک کلاس را تشريح مي نمايند . در مقام مقايسه مي توان خصايص يک شي را نظير نقش اسامي در يک جمله در نظر گرفت ( مقايسه فوق صرفا" جنبه آموزشي دارد ) .

علايم + و -

همانگونه که مشاهده مي گردد ، هر entry دربخش دوم دياگرام کلاس Vehicle ، داراي يک علامت - در جلوي نام خود است .در بخش سوم ، برخي از Entry ها ، داراي علامت + و برخي ديگر داراي علامت - مي باشند . وجود علامت + در ابتداي يک آيتم ( خصلت ، متد ) ، نشاندهنده در دسترس بودن آن از طريق خارج از کلاس است . بعبارت ديگر ، علامت +، امکان استفاده از آيتم مورد نظر و تاثيرگذاري بر وضعيت يک کلاس را نشان مي دهد . علامت + ، عمومي بودن ( Public ) عناصر کلاس مربوطه را نشان مي دهد .
اگر يک Entry با يک علامت - شروع گردد ، بدين معني خواهد بود که آيتم مورد نظر صرفا" براي استفاده خود کلاس در دسترس بوده و امکان استفاده از آن براي خارج از کلاس ميسر نخواهد بود. بنابراين علامت - ، نشاندهنده خصوصي ( Private ) بودن عناصر مربوط به يک کلاس است .
استفاده از علائم + و - ، نشاندهنده نوع دستيابي به هر يک از عناصر مربوط به يک کلاس است . در حقيقت علامت + ، روشي بمنظور ارتباط با کلاس را مشخص نموده و علامت - نشاندهنده عناصري است که صرفا" براي خود کلاس قابل استفاده خواهند بود .
ايجاد يک آيتم بصورت خصوصي همواره مورد توجه طراحان شي گراء بوده و تامين کننده اهداف کپسوله سازي در برنامه نويسي شي گراء است . با کپسوله سازي داده ، امکان بروز تغييرغيرعمد داده در برخي بخش ها ي برنامه و از طريق خارج از کلاس به حداقل مقدار خود خواهد رسيد . بدين ترتيب، تشخيص و برطرف نمودن خطاهاي احتمالي ، بسرعت و بسادگي ميسر خواهد شد .

متدهاي کلاس ( عمليات )

عنصر سوم در دياگرام کلاس ، نشاندهنده نوع عمليات مرتبط با کلاس است . در UML آيتم هاي موجود در اين بخش را "عمليات " ( Operations ) ، ودر برخي از زبان هاي برنامه نويسي نظير ويژوال بيسيک دات نت ، به آنان "متد" گفته مي شود . متدها ، نحوه ارتباط برنامه نويسان با يک کلاس را مشخص مي نمايند. هر متد عمليات خاصي را در ارتباط با يک کلاس انجام خواهد داد.اگر خصلت ها را بمنزله اسامي در يک جمله در نظر بگيريم ، مي توان متدها را بمنزله افعال موجود در يک جمله در نظر گرفت .

متدهاي کلاس و آرگومان ها

در برخي موارد يک متد نيازمند اطلاعات خارجي بمنظور انجام وظايف محوله است . مثلا" در دياگرام کلاس Vehicle از متد زير استفاده شده است :

+SetSpeed(DesiredSpeed:Integer):Integer


علامت + نشاندهنده اين موضوع است که ( ) SetSpeed يک متد Public است . بنابراين امکان استفاده از آن توسط يک برنامه نويس وجود خواهد داشت .بمنظور ارسال داده به متد مورد نظر از آرگومان استفاده شده که بين علامت پرانتز قرار مي گيرند.در مثال فوق ، پارامتر مورد نظر DesiredSpeed بوده و از نوع Integer است . در انتهاي علامت پرانتز بسته ، ازيک کالون ":" ، که بدنبال آن کلمه Integer آمده است ، استفاده شده است . اين بدان معني است که متد ( ) SetSpeed يک مقدار صحيح را به برنامه صدازننده ، بر مي گرداند.
در نمونه کلاس Vehicle از دومتد بمنظور افزايش و يا کاهش سرعت استفاده شده است :

-IncreaseSpeed(DesiredSpeed:Integer):Integer
-DecreaseSpeed(DesiredSpeed:Integer):Integer


هر يک از متدهاي فوق ، عمليات مورد نظر در رابطه با افزايش و يا کاهش سرعت را انجام خواهند داد . براي نيل به خواسته فوق ( افزايش و يا کاهش سرعت ) مي توان دو متد فوق را با يکديگر تلفيق و در يک متد واحد ديگر جايگزين نمود:

-ChangeSpeed(DesiredSpeed:Integer):Integer


در صورتيکه پارامتر DesiredSpeed مثبت باشد ، سرعت افزايش و در غير اينصورت ( پارامتر منفي باشد ) ، سرعت کاهش خواهد يافت.

Dim MyVehicle as New Vehicle
Dim ObjectSpeed as integer
' Some code that does something...
ObjectSpeed = MyVehicle.GetSpeed()
ObjectSpeed = MyVehicle.ChangeSpeed(-ObjectSpeed)


درنمونه مثال فوق ، در ابتدا يک شي Vehicle با نام MyVehicle تعريف شده است . در ادامه ، متد GetSpeed در ارتباط با شي MyVehicle فرا خوانده شده است .بمنظور جداسازي نام شي از متد مربوطه از علامت نقطه استفاده شده است .
فرض کنيد که Vehicle با سرعت 55مايل در ساعت در حال حرکت است . مقدار ObjectSpeed ، پنجاه و پنج در نظر گرفته مي شود .در صورتيکه در ادامه مقداري منفي را به متد فوق پاس دهيم سرعت کاهش پيدا خواهد کرد. اگر مقدار 55 - را به متد ChangeSpeed() پاس دهيم ، توقف اتومبيل را بدنبال خواهد داشت .
همانگونه که مشاهده مي شود ، برخي از متدها با علامت - شروع شده اند . اين بدان معني است که آنان متدهاي اختصاصي ( Private) بوده و خارج از کلاس قابل دستيابي نخواهند بود. چنين متدهائي به ساير متدها ي موجود در کلاس ، سرويس و خدمات لازم را ارائه و استفاده از آنان براي برنامه نويس مجاز نخواهد بود.بعبارت ديگر متدهاي فوق بعنوان ايترفيس کلاس مطرح نبوده و از خدمات آنان در داخل کلاس استفاده خواهد شد . در چنين مواردي ممکن است يک متد که بصورت Public تعريف و امکان استفاده از آن در خارج از کلاس و توسط برنامه نويسان وجود دارد ، خود از خدمات چندين متد خصوصي استفاده نمايد .
يک دياگرام کلاس UML ، امکان مرور سريع و فشرده پتانسيل ها ي يک کلاس را فراهم و نحوه ارتباط يک برنامه نويس با کلاس مورد نظر را نيز مشخص خواهد شد. اگر يک کلاس را بعنوان يک جعبه سياه در نظر بگيريم ، علامت "-" ، نشاندهنده آيتم هائي درون جعبه سياه است که امکان استفاده از آنان توسط برنامه نويسان وجود نخواهد داشت . علامت "+" ، نشاندهنده امکاناتي است که مي توان از آنان بمنظور ارتباط با متدها و خصايص يک کلاس استفاده کرد . آيتم هاي Public يک کلاس ، اينترفيس لازم براي يک کلاس را تعريف و نحوه ارتباط با آن را مشخص مي نمايند. در حقيقت متدهاي Public ، نحوه استفاده از يک کلاس را به برنامه نويسان ديکته خواهند کرد .

خلاصه

• الگوريتم ،اعلاميه اي سازماندهي شده بمنظور حل يک مسئله خاص و يا سوالاتي است که مي بايست پاسخ آنان مشخص گردد . يک الگوريتم مناسب ، تمامي مراحل لازم بمنظور انجام فرآيندهاي مورد نياز و حل يک مسئله را ارائه مي نمايد .
• مقداردهي اوليه ، ورودي ، پردازش ، خروجي و پاکسازي ، پنج مرحله متفاوت برنامه نويسي مي باشند .
• مراحل پنج گانه برنامه نويسي ، نگرشي ماکرو از يک برنامه را ارائه مي نمايند . مثلا" مرحله ورودي ممکن است نيازمند اخذ داده از صفحه کليد ، خواندن يک جدول تنظيمات از يک بانک اطلاعاتي و نهايتا" خواندن اطلاعات بيشتر از بانک اطلاعاتي ديگر باشد . بهسازي ( پالايش ) يکطرفه ، فرآيندي است که بر اساس آن يکي از مراحل برنامه نويسي (نظير مرحله ورودي ) بررسي و به آن جزئيات بيشتري اضافه اضافه خواهد شد . عمليات فوق تا استخراج و مشخص شدن تمامي جزئيات لازم در رابطه با يک مرحله خاص ادامه خواهد يافت . عمليات بهسازي ( پالايش ) يکطرفه ، زماني متوقف مي گردد که کد واقعي يک تابع نوشته گردد .محوريت فرآيند فوق ، تبديل الگوريتم هاي ماکرو به ميکرو است :

Input Step->ReadKeyboard( )
ReadSetupTable( ) ->ReadTable1( ) ->(Code)
ReadTable2( )
ReadTable3( )


• UML ، از کلمات Unified Modeling Language اقتباس شده است . مزيت استفاده از UML ، تفکر مبتني بر برنامه نويسي شي گراء است .بلاک هاي اوليه ايجاد UML کلاس ، خصلت و متد ناميده مي شوند. دياگرام هاي کلاس UML تمام سه عنصر OOP را در يک دياگرام مناسب نمايش مي دهند .
• در OOP ، واژه هاي Private و Public به نحوه دستيابي به خصلت ها بر مي گردد . اگرخصلتي از نوع Private باشد ،امکان تغيير آن صرفا" براي کساني که به کلاس فوق تعلق دارند، وجود خواهد داشت .اگر خصلتي از نوع Public باشد ، ساير اشياء امکان دستيابي کامل به خصلت را ( اعمال تغييرات مورد نظر ) خواهند داشت.
Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image