سلام
مطلب ذیل برای افرادی که هیچ آشنائی با UML ندارند مفید خواهد بود و هدف صرفا" معرفی اصول و ارائه تعاریف مقدماتی است .

---

لزومی نداره در مورد فوائد طراحی شیء گرای یک سیستم نرم افزاری توضیحات مفصلی ارائه بشه ، همگی کم و بیش در این باب مطالعاتی داشتید و واضح و مبرهنه که برای پیاده سازی صحیح و استفاده بهینه منابع باید طراحی ساختارمند و شیء گرای سیستم در اولویت باشه . کلید و راهیافت طراحی شیء گرا و مناسب یک سیستم نرم افزاری ، مدل ، است ! مدل ، ابزاری "بصری" ( Visual ) است ، برای چینش اجزاء مختلف سیستم نرم افزاری و نمایش روابط بین آنها و سایر موجودیتهای سیستم نرم افزاری . برای اینکه طراحی مدل برای سیستمهای نرم افزاری قالبی یکدست و یکپارچه و جهان شمول داشته باشد و تبادل اطلاعات بین مدلهای طراحی شده توسط افراد مختلف امکان پذیر باشد تلاشهای متعددی صورت گرفته است که UML یکی از آنهاست ، که در حال حاضر متداولترین استاندارد تولید مدل برای سیستمهای نرم افزاری در سراسر دنیاست . UML مخفف Unified Modeling Language است . UML برای مدل سازی سیستمهای نرم افزاری و تسهیل طراحی شیء گرای سیستم 9 دیاگرام ( و استانداردهای مرتبط با هرکدام ) را ارائه مینماید . قبل از توضیح بیشتر و ارائه تعاریف مقدماتی به نکته ذیل توجه کنید : دوستان کم تجربه اغلب سوال میکنند که چرا UML مهم است و این روزها مانور زیادی روی آن میشود ؟ آیا لزومی دارد که به UML مسلط شویم ؟ آیا اصولا" این جانور به درد ما میخورد ؟ :arrow: جوابی که من به این دوستان میدهم اینه : تا حالا دیده اید که کسی یک ساختمان بزرگ با پیچیدگیهای مختلف را "بدون نقشه" و الگوی از پیش معین شده بسازد و این پروژه موفقیت آمیز باشد ؟ آیا تا کنون شنیده اید که هیچ کدام از کارخانه های تلوزیون سازی بودن هیچ نقشه و پیش بینی فنی موفق به ساخت تلوزیونی شوند که کار کند ؟ یا اصلا" ساخته شود ؟ آیا تا کنون دیده اید کشوری بدون سیاستهای کلان و بدون سنجش جوانب امر ، موفق به مدیریت امور داخلی خود شود ؟ و ده ها سوال از این دست ! خواندن این سوالها بدون اینکه حتی ثانیه ای به جواب انها فکر کنید ، خود ، جواب به سوالات اولی است که عرض کردم ! UML به عنوان استانداردی برای طراحی و پیش بینی جزئیات فنی سیستم نرم افزاری ، نحوه ارتباط اجزاء ، نوع و نحوه کارکرد قسمتهای مختلف و ... یکی از ملزومات تولید کنندگان نرم افزار در دنیای امروز است . حتی اگر مستقل کار میکنید و نرم افزارهای کوچک تولید میکنید با استفاده از UML در "اغلب" موارد به بالاترین حد بهینگی مراحل طراحی و تولید نرم افزارتون خواهید رسید و نکته آخر این که UML و استانداردهای آن ( که در موردشون صحبت خواهم کرد ) و ابزارهای آن ( CASE Tool ها که موضوع مقاله بعدی هستند ) آنقدر ساده و سهل هستند که صرف هزینه و وقت برای یادگیری و تسلط بر آنها نسبت به مزایائی که در قبال آن کسب خواهید کرد تقریبا غیر قابل توجه است !

---

تعریف کلمات کلیدی و عناصر اصلی UML :

مدل : علاوه بر تعریفی که در قسمت قبلی ارائه شد ، مدل از تعدادی "شیء" تشکیل شده است .

شیء : هر یک از اجزاء نرم افزار یک "شیء" نام دارد .

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

در یک مدل شیء گرا ، شیء ها از طریق Message ها با یک دیگر ارتباط برقرار میکنند . یک نمونه Message ، فشرده شدن کلید چپ ماوس وقتی اشاره گر آن روی یک Button ، میباشد . اینجا ماوس ( به عنوان یکی از اشیاء موجود در هر سیستم نرم افزاری ) به شیء دیگری بنام Button ( که مثلا" از CButton یا TButton که کلاسهای فوق آن هستند ساخته شده است ) یک Message ارسال نموده است .

هر شیء دارای تعدادی مشخصه یا Attribute است . مشخصه های یک شیء حاوی مقادیر مختلف اجزاء آن شیء هستند . به عنوان یک مثال ساده وقتی مختصات یک کلید روی فرم 20 و 40 است ، یعنی مشخصه های طول و ارتفاع آن 20 و 40 هستند . ( مشخصه تعاریف پیچیده تری هم داره که خواهید دید . اول کار فقط خیلی ساده مثال میزنم )

اشیاء "میتوانند" کارهائی انجام دهند که به آنها اصطلاحا" Behavior میگویند . به عنوان مثال وقتی ماژول رمزنگاری نرم افزار شما میتواند درهم سازی با متد MD5 هم انجام دهد ، این توانائی یکی از Behavior های این شیء محسوب میگردد .

---

دیاگرامهای UML :

1.Use Case Diagram
2.Class Diagram
3.Object Diagram
4.Sequence Diagram
5.Collaboration Diagram
6.StateChart Diagram
7.Activity Diagram
8.Component Diagram
9.Deployment Diagram

---

در مطالب بعدی هر کدام از این دیاگرامهای شرح داده میشود و برای هر کدام مثالهائی ارائه میشود .

موفق و سلامت باشید


---