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 ( برنامه نویسی شی گراء ) محسوب می گردند.
علایم + و -
همانگونه که مشاهده می گردد ، هر entry دربخش دوم دیاگرام کلاس Vehicle ، دارای یک علامت - در جلوی نام خود است .در بخش سوم ، برخی از Entry ها ، دارای علامت + و برخی دیگر دارای علامت - می باشند . وجود علامت + در ابتدای یک آیتم ( خصلت ، متد ) ، نشاندهنده در دسترس بودن آن از طریق خارج از کلاس است . بعبارت دیگر ، علامت +، امکان استفاده از آیتم مورد نظر و تاثیرگذاری بر وضعیت یک کلاس را نشان می دهد . علامت + ، عمومی بودن ( Public ) عناصر کلاس مربوطه را نشان می دهد .
اگر یک Entry با یک علامت - شروع گردد ، بدین معنی خواهد بود که آیتم مورد نظر صرفا" برای استفاده خود کلاس در دسترس بوده و امکان استفاده از آن برای خارج از کلاس میسر نخواهد بود. بنابراین علامت - ، نشاندهنده خصوصی ( Private ) بودن عناصر مربوط به یک کلاس است .
استفاده از علائم + و - ، نشاندهنده نوع دستیابی به هر یک از عناصر مربوط به یک کلاس است . در حقیقت علامت + ، روشی بمنظور ارتباط با کلاس را مشخص نموده و علامت - نشاندهنده عناصری است که صرفا" برای خود کلاس قابل استفاده خواهند بود .
ایجاد یک آیتم بصورت خصوصی همواره مورد توجه طراحان شی گراء بوده و تامین کننده اهداف کپسوله سازی در برنامه نویسی شی گراء است . با کپسوله سازی داده ، امکان بروز تغییرغیرعمد داده در برخی بخش ها ی برنامه و از طریق خارج از کلاس به حداقل مقدار خود خواهد رسید . بدین ترتیب، تشخیص و برطرف نمودن خطاهای احتمالی ، بسرعت و بسادگی میسر خواهد شد .
خلاصه
• الگوریتم ،اعلامیه ای سازماندهی شده بمنظور حل یک مسئله خاص و یا سوالاتی است که می بایست پاسخ آنان مشخص گردد . یک الگوریتم مناسب ، تمامی مراحل لازم بمنظور انجام فرآیندهای مورد نیاز و حل یک مسئله را ارائه می نماید .
• مقداردهی اولیه ، ورودی ، پردازش ، خروجی و پاکسازی ، پنج مرحله متفاوت برنامه نویسی می باشند .
• مراحل پنج گانه برنامه نویسی ، نگرشی ماکرو از یک برنامه را ارائه می نمایند . مثلا" مرحله ورودی ممکن است نیازمند اخذ داده از صفحه کلید ، خواندن یک جدول تنظیمات از یک بانک اطلاعاتی و نهایتا" خواندن اطلاعات بیشتر از بانک اطلاعاتی دیگر باشد . بهسازی ( پالایش ) یکطرفه ، فرآیندی است که بر اساس آن یکی از مراحل برنامه نویسی (نظیر مرحله ورودی ) بررسی و به آن جزئیات بیشتری اضافه اضافه خواهد شد . عملیات فوق تا استخراج و مشخص شدن تمامی جزئیات لازم در رابطه با یک مرحله خاص ادامه خواهد یافت . عملیات بهسازی ( پالایش ) یکطرفه ، زمانی متوقف می گردد که کد واقعی یک تابع نوشته گردد .محوریت فرآیند فوق ، تبدیل الگوریتم های ماکرو به میکرو است :
Input Step->ReadKeyboard( )
ReadSetupTable( ) ->ReadTable1( ) ->(Code)
ReadTable2( )
ReadTable3( )
• UML ، از کلمات Unified Modeling Language اقتباس شده است . مزیت استفاده از UML ، تفکر مبتنی بر برنامه نویسی شی گراء است .بلاک های اولیه ایجاد UML کلاس ، خصلت و متد نامیده می شوند. دیاگرام های کلاس UML تمام سه عنصر OOP را در یک دیاگرام مناسب نمایش می دهند .
• در OOP ، واژه های Private و Public به نحوه دستیابی به خصلت ها بر می گردد . اگرخصلتی از نوع Private باشد ،امکان تغییر آن صرفا" برای کسانی که به کلاس فوق تعلق دارند، وجود خواهد داشت .اگر خصلتی از نوع Public باشد ، سایر اشیاء امکان دستیابی کامل به خصلت را ( اعمال تغییرات مورد نظر ) خواهند داشت.
مثال.
1- مشکل آسانسور
محصول مورد نظر یک سیستم برای کنترل دستگاه آسانسوری است که در یک ساختمان با n طبقه نصب شده است . مشکل نگرانی های منطقی مورد نیاز برای حرکت بین دستگاه آسانسور طبقه با توجه به محدودیت های زیر می باشد :
• هر آسانسور دارای یک مجموعه دکمه میباشد ، هر طبقه یک دکمه . این دکمه ها وقتی فشار داده شوند روشن می شوند و موجب میشوند که آسانسور به طبقه مورد نظر هدایت شود . روشنهایی دکمه وقتی آسانسور به طبقه مورد نظر میرسد خاموش میشود .
• بجز طبقات اولی و آخری ، سایر طبقات دارای دو دکمه میباشند . یکی برای آسانسور بالا رونده و دیگری برای آسانسور پایین رونده . این دکمه ها نیز وقتی فشار داده شوند روشن میشوند . پس از اینکه آسانسور به طبقه می رسد و سپس به سمت جهت مورد نظر حرکت می کند چراغ خاموش میشود .
• زمانیکه تقاضایی برای استفاده از آسانسور وجود ندارد ، آسانسور در طبقه جاری با درب بسته می ماند .
2-زبان متحد مدلسازی
UML یک زبان مدل سازی میباشد که با نماد ها مشخص میشود اما هیچ پردازشی را انجام نمیدهد . ما تصمیم داریم این مساله را با نمودارهای زیر به ترتیب مدل کنیم .
• Use Case Diagram - نمودار مورد کاربری
• Class Diagram - نمودار کلاس
• Sequence Diagram - نمودار توالی
3- تحلیل
3-1- نمودار مورد کاربری
توصیف ویژگیهای نمودار
• توضیحات کلی در مورد اینکه چگونه از سیستم استفاده خواهد شد
• مروری بر عملکرد خواسته شده از سیستم فراهم می آورد
• قابل فهم شدن موضوع توسط یک شخص آماتور همانند یک شخص حرفه ای
نمودار مورد کاربری :
برای دیاگرام مورد کاربری بهتر است یک سناریو تهیه شود . در ایجاد سناریو باید به هر مرحله یک شماره اختصاص داده شود . با توجه به نمودار فوق می توان سناریو زیر را ایجاد کرد :
• Passenger pressed floor button
• Elevator system detects floor button pressed
• Elevator moves to the floor
• Elevator doors open
• Passenger gets in and presses elevator button
• Elevator doors closes
• Elevator moves to required floor
• Elevator doors open
• Passenger gets out
• Elevator doors closes
• رهگذر دکمه طبقه را فشار میدهد .
• سیستم آسانسور تشخیص میدهد که دکمه آسانسور فشار داده شده است .
• آسانسور به سمت طبقه ای که از آن درخواست رسیده حرکت می کند .
• پس از رسیدن به طبقه درب آسانسور باز می شود .
• رهگذر وارد آسانسور می شود و دکمه طبقه مورد نظرش را فشار می دهد .
• درب آسانسور بسته می شود .
• آسانسور به سمت طبقه خواسته شده به حرکت در می آید .
• آسانسور به طبقه مورد نظر میرسد و درب آسانسور باز میشود .
• رهگذر از آسانسور خارج میشود .
• درب آسانسور بسته میشود .
3-2-نمودار کلاس
نمودار کلاس نمایش دهنده ساختار ایستای اشیاء بهمراه ساختار داخلی کلاس و روابط بین کلاسها میباشد .
نمودار کلاس :
3.3 نمودار ترتیب
نمودار حالت ترتیب حالتهای یک شی را در طول چرخه حیات شی در پاسخ به محرک ها بهمراه عملکرد و پاسخهای شی نمایش می دهد .
4 طراحی
در مرحله طراحی بایستی جزئیات نمودارهای کلاس ، نمودارهای همکاری ، نمودارهای توالی ، نمودارهای حالت و نمودارهای فعالیت تولید شود . اگرچه رسم نمودار فعالیت برای مسائله آسانسور بسیار ساده میباشد اما ما برای مسائله آسانسور از نمودار فعالیت استفاده نمی کنیم .
4.1 نمودار توالی
اگرچه نمودار توالی و نمودار همکاری هر دو یک بار معانی را دارند اما در دو شیوه مختلف مفهوم را بیان میکنند . نمودار توالی بصورت صریح ترتیب پیامها را بیان می کند و برای مدل سازی سیستم های بلادرنگ مناسب می باشد ، با این وجود نمودار همکاری ارتباط بین اشیاء را نمایش میدهد .
نمودار توالی :
نمودار توالی برای مدل سازی دکمه آسانسور
نمودار توالی برای مدل سازی دکمه طبقه