|  
صفحه اصلی > فهرست مقالات > آشنایی با UML - بخش اول: تاریخچه و مفاهیم بنیادین
مقالات وب، شبکه
 

آشنایی با UML - بخش اول: تاریخچه و مفاهیم بنیادین

UML - Unified Modeling Language
زبان مدل‌ سازی یکپارچه (Unified Modeling Language) یا به اختصار UML، یک زبان مدلسازی همه منظوره استاندارد در زمینه مهندسی نرم افزار است که توسط OMG (Object Management Group) ایجاد شد. در سال ۲۰۱۰ میلادی آخرین نسخه این زبان نسخه ۲٫۲ بود که در سال ۲۰۰۷ میلادی مشخصات آن منتشر شده بود. با استفاده از UML می توان تقریبا هر گونه برنامه کاربردی که ممکن است بر روی هر ترکیبی از سخت افزار، سیستم عامل، زبان برنامه نویسی و شبکه اجرا شود را مدلسازی نمود. طراحی بر پایه مفاهیم شی گرایی UML سبب می‌شود که ذاتا با محیط‌ها و زبانهای برنامه نویسی شی گرا (مانند C++، جاوا و C#) سازگاری کامل داشته باشد، اگرچه می توان از آن برای مدلسازی برنامه‌های غیر شی گرا مانند ویژوال بیسیک، کوبول و فرترن نیز استفاده کرد.

نگاه کلی
UML یک زبان مدلسازی نسل سوم است و روشی باز برای توصیف ویژگی ها، نمایش گرافیکی، ساختن و مستند سازی اجزای یک سیستم نرم افزاری در حال توسعه می باشد. از UML برای فهمیدن، طراحی، مرور، پیکربندی، نگهداری و کنترل اطلاعات سیستم‌های نرم افزاری استفاده می شود. UML برای همه روشهای توسعه نرم افزار، همه مراحل چرخه عمر نرم افزار، همه حوزه‌های برنامه‌های کاربردی و هر رسانه ای قابل استفاده است. این زبان مدلسازی برای یکپارچه سازی تجربیات گذشته در مورد تکنیک‌های مدلسازی و گنجاندن تجربیات موفق در یک دیدگاه استاندارد بوجود آمده است. UML شامل مفاهیم معنایی (semantic)، نمادگذاری و راهنمایی برای طراحی می باشد. UML را نمی توان به عنوان یک روش تولید نرم افزار کامل دانست. این زبان شامل فرآیند مرحله به مرحله تولید نرم افزار نیست، بلکه UML زبانی است که تقریبا تمام شیوه‌های تولید نرم افزار از آن استفاده می کنند. UML تکنیکهای مدلسازی داده (نمودار رابطه موجودیت)، مدلسازی تجاری، مدلسازی شیء و مدلسازی مولفه‌ها را با هم ترکیب می نماید. UML را می توان در تمامی پروسه‌ها در سراسر روند توسعه نرم افزار به کار بست. پیش از پیدایش UML در اواسط دهه ۱۹۹۰، مدلسازی نرم افزار از مشکل ناسازگاری نماد گذاریهای مختلفی که توسط متخصصین مدلسازی مختلف بوجود می آمد رنج می برد و استاندارد فراگیری در این زمینه وجود نداشت. UML از تلفیق روش بوچ (Booch Method)، تکنیک مدل‌سازی شیء (OMT) و مهندسی نرم افزار شیء گرا (OOSE) با یکدیگر در راستای جریانات یکپارچه سازی بوجود آمد. پیدایش UML همه چیز را تغییر داد و باعث رشد چشمگیر مدلسازی تصویری و استفاده گسترده از این زبان شد. UML امروزه نقش یک زبان بین المللی را در زمینه تولید نرم افزار بر عهده دارد. موسسه آماری گارتنر (Gartner) در سال ۲۰۰۶ تعداد متخصصان فناوری اطلاعات که از UML استفاده می کردند را ۱۰ میلیون نفر برآورد نمود و همچنین تخمین زده است که در سال ۲۰۰۸ در 70 درصد شرکتهای تولید نرم افزار در سراسر دنیا از UML استفاده شده است.

تاریخچه
روشهای تولید نرم افزار برای زبانهای برنامه نویسی سنتی در دهه 1970 ظهور کرد و در دهه 1980 همه گیر شد. مهمترین این شیوه‌ها متدولوژی طراحی و تحلیل ساختار یافته سیستم (SSADM) بود. این روشها در ابتدا توسط افرادی چون کنستانتین (Constantine)، دی مارکو (DeMarco)، ملور (Mellor)، وارد (Ward)، یوردون (Yourdon) و سایرین پدید آمدند و در حیطه سیستم‌های بزرگ به ویژه سیستم‌های طرف قرارداد با دولت در حوزه هوافضا و دفاع نظامی نیز نفوذ کردند. اگرچه نتایج آنها همواره رضایت بخش نبود اما این روشها دارای ایده‌های خوبی بودند که به ندرت استفاده موثری از آنها می شد. شرکتهای تجاری راغب به به کارگیری روشهای تولید نرم افزار و سیستم‌های رایانه ای مهندسی نرم افزار نبودند. بیشتر آنها نرم افزارها را برای استفاده داخلی و رفع نیازهای خود تولید می کردند و نیازی به بررسی این نرم افزارها توسط سازمانهای خارجی نبود.
اولین زبان برنامه نویسی شیء گرا Simula-67 بود که توسط اوله ژوهان داهل (Ole-Johan Dahl) و کریستن نایگارد (Kristen Nygaard) در سال 1967 در نروژ طراحی شد. این زبان اگرچه خود پیروان چندانی به دست نیاورد اما تاثیر زیادی بر روی بسیاری از زبانهای شیء گرای بعدی داشت. کارهای داهل (Dahl) و نایگارد (Nygaard) تاثیر ژرفی بر گسترش شیء گرایی داشت. جریان شی گرایی با دستیابی عمومی به زبان اسمالتاک (Smalltalk) در اوایل دهه 1980 فعال شد و با پیدایش زبانهای شی گرای دیگری مانند Objective C، C++، ایفل و کلوس (CLOS) ادامه یافت. پنج سال پس از اینکه "اسمالتاک" در سراسر دنیا شناخته شد، اولین متدهای شی گرای تولید نرم افزار توسط "شلایر" و "ملور" و کود و "یوردون" بوجود آمد و به فاصله کوتاهی توسط سایرین همچون بوچ (Booch) و رمباف (Rambaugh) پیگیری شد. این کتابها به مجموعه کتب قبلی در مورد طراحی زبانهای برنامه نویسی اضافه شد و مبحث متدولوژی شی گرا آغاز شد. فاز اول آن در پایان سال 1990 کامل شد. کتاب "یاکوبسون" در مورد شیء گرایی، اندکی بعد بر اساس مقالات و کارهای پیشین منتشر شد که با تمرکز بر روی مورد کاربرد دیدگاه متفاوتی را ارائه کرد. در طی پنج سال بعدی کتابهای متعددی در این زمینه تالیف شد که هریک تعاریف، مفاهیم و نمادگذاریهای خاص خود را داشتند، اما در مجموع شباهت زیادی بین مفاهیم ارائه شده توسط نویسندگان مختلف وجود داشت.
برخی تلاشهای اولیه در جهت یکپارچه سازی مفاهیم روشهای مختلف به انجام رسید که نمونه قابل ملاحظه آن کار کلمن (Coleman) و همکارانش به نام "فیوژن" (Fusion) بود که شامل مفاهیمی از تکنیک مدل‌سازی شیء ، بوج و CRC بود. اولین تلاش موفقیت آمیز برای ترکیب و جایگزینی روشهای موجود در سال 1994 زمانی به وجود آمد که "رمباف" به شرکت Rational Software رفت و به "بوچ" پیوست. این دو مفاهیم تکنیک مدل سازی شیء و روش "بوچ" را ترکیب کردند و اولین طرح خود را در سال 1995 ارائه دادند. در این زمان "یاکوبسون" هم به این دو پیوست و کار مشترک خود را با آنها آغاز کرد. کار مشترک آنها زبان مدل سازی یکپارچه نام گرفت. در سال 1996 گروه OMG پیشنهاداتی برای استاندارد مدل سازی شیء گرا را مطرح نمود. نویسندگان UML (یاکوبسون، بوچ و رمباف) با همکاری گروهی از برنامه نویسان و متدولوژیست ‌های دیگر طرح پیشنهادی خود را به OMG ارائه کردند. طرح های دیگری هم به OMG ارائه شد که در نهایت همه پیشنهادات در طرح نهایی UML که در سال 1997 به OMG تحویل داده شد، ادغام شدند.
پس از چندین سال تجربه استفاده از UML در صدد برآمدند تا UML را ارتقا دهند تا مشکلاتی که در تجربیات کاری پدیدار شده بود را بر طرف کنند و قابلیت‌های آن را گسترش دهند. طرحهای پیشنهادی ارائه شدند و مشخصات UML 2 در سال 2003 توسط OMG پذیرفته شد و پس از اصلاحات نهایی در اواخر سال 2004 در دسترس عموم قرار گرفت.

مفاهیم بنیادین UML
مفاهیم UML در قالب دسته هایی به نام "نما (view)" طبقه بندی می شوند. هر "نما" در واقع زیرمجموعه ای از ساختارهای مدلسازی است که یک جنبه از سامانه را نمایش می دهد. در بالاترین سطح طبقه بندی نماها به چهار حوزه کلی تقسیم بندی می شوند که عبارتند از:

» دسته بندی ساختاری (Structural Classification)
عناصر سیستم و ارتباط آنها با سایر عناصر را توصیف می کند. برای مدل کردن عناصر سیستم از مفهوم "دسته کننده" (classifier) استفاده می شود. دسته کننده‌ها شامل کلاس، عملگر (Actor)، مورد کاربرد (Use case)، گره (Node)، همکاری (Collaboration) و مولفه (component) هستند. دسته کننده‌ها پایه ای می سازند که رفتارهای پویای سیستم روی آن تعریف می شوند. حوزه طبقه بندی ساختاری شامل سه نمای مختلف است:
  • نمای ایستا (Static View): این نما مفاهیم مربوط به حوزه برنامه کاربردی (Application Domain) و مفاهیم داخلی ابداع شده به عنوان بخشی از پیاده سازی برنامه کاربردی را مدل می کند. این نما، ایستا نامیده می‌شود زیرا رفتارهای وابسته به زمان سیستم را توصیف نمی کند. اجزای تشکیل دهنده نما ایستا عبارتند از کلاسها و روابط (ارتباط و تعمیم) و وابستگی های (مانند realization و usage) بین آنها. نما ایستا در قالب نمودارهای کلاس نمایش داده می شود.
  • نمای طراحی (Design View): در حالی که نما ایستا مفاهیم برنامه کاربردی را از نماگاه منطقی مدل می کند، این نما ساختار طراحی خود برنامه را مدل می کند. نمودارهای پیاده سازی که در این نما مورد استفاده قرار می گیرند عبارتند از : نمودار ساختار مرکب، نمودار همکاری و نمودار مولفه.
  • نمای مورد کاربرد (Use Case view): این نما کارکرد یک موضوع (مثلا یک سیستم) را آن طور که توسط عاملین خارجی که عملگر (Actor) نامیده می شوند و با موضوع مورد نظر (سیستم) در یک نماگاه خاص تعامل دارند نمایش می دهد. یک مورد کاربرد در واقع یک واحد کارکرد است که به صورت برهمکنش میان عملگر و موضوع بیان می شود. نمودار مورد استفاده در این نما "نمودار مورد کاربرد" است
» رفتار پویا (Dynamic Behavior)
رفتار یک سیستم و سایر دسته کننده ها را در مرور زمان توصیف می کند. یک رفتار به صورت تغییراتی در وضعیت سیستم توصیف می‌شود که در نما ایستا ترسیم می شوند. حوزه رفتار پویای سیستم شامل سه نما زیر است:
  • نمای ماشین وضعیت (State Machine View): این نما حالتهای ممکن تاریخچه زندگی شیئی از یک کلاس را مدل می کند. یک ماشین وضعیت شامل وضعیت هایی (state) است که توسط گذارها (Transition) به هم متصل می شوند. نمودار مورد استفاده در این نما نمودار ماشین وضعیت است.
  • نمای برهمکنش (Interaction View): نما برهم کنش توالی پیامهای مبادله شونده بین بخشهای یک سیستم را توصیف می کند. این نما نمایی کل گرا از رفتارهای درون یک سیستم را نمایش می دهد. این نما از دو نمودار برای نمایش استفاده می‌کند که هریک روی نماگاه خاصی تمرکز یافته اند: نمودار ارتباطات و نمودار توالی
  • نمای فعالیت (Activity View): یک فعالیتدر واقع گردش کنترل در میان فعالیتهای محاسباتی درگیر در انجام یک محاسبه یا گردش کار می باشد. به یک مرحله محاسباتی ابتدایی، یک عمل (Action) گفته می شود. به یک گروه از عمل‌ها و زیرفعالیت‌ها گره فعالیت گفته می شود. فعالیتها با نمودار فعالیت نمایش داده می شوند.
» چیدمان فیزیکی (Physical Layout)
توصیف کننده منابع رایانشی در سیستم و چگونگی پیاده سازی مصنوعات مدل روی آنها می باشد. این بخش شامل یک نما است:
  • نمای بکارگیری (Deployment View): نمودار به کارگیری مورد استفاده در این نما نمایشگر پیاده سازی فیزیکی مصنوعات زمان اجرا روی گره هاست. یک مصنوع در این نمودار یک واحد پیاده سازی فیزیکی مانند یک فایل است و یک گره در واقع یک منبع زمان اجرا مانند یک رایانه، دستگاه و یا حافظه است.
» سازماندهی مدل (Model Organization)
توصیف کننده سازماندهی خود مدلها در واحدهای سلسه مراتبی می باشد. واحد سازماندهی مدل ها بسته (package) است. یک مدل در واقع سلسله مراتبی از بسته هاست که انتزاع معنایی کاملی از سیستم، از یک نماگاه خاص است. این بخش شامل یک نما است :
  • نمای مدیریت مدل (Model Management View): این نما سازمان داخلی خود مدل را مدل می کند. یک مدل از مجموعه ای از بسته‌ها (package) تشکیل می‌شود که در بر دارنده عناصر مدل ( مانند نمودارهای کلاس، ماشین وضعیت و مورد کاربرد) است. نمودار مورد استفاده در این نما نمودار بسته بندی است.

پروفایل‌های UML
UML امکانات گسترش محدودی را در اختیار کاربرانش قرار می دهد که برای استفاده‌ های معمولی کافی هستند. یکی از این امکانات کلیشه‌ ها (stereotype) هستند. یک کلیشه در واقع یک عنصر جدید اضافه شده به عناصر مدلسازی UML است که ساختاری مشابه با یکی از عناصر از پیش موجود دارد با این تفاوت که ممکن است به آن محدودیت هایی اضافه کرده باشد و یا تفسیر و تصویرش را تغییرداده باشد. UML زبان ویژه ای برای تعیین محدودیت‌ها به نام Object Constraint Language (به اختصار: OCL) دارد. مجموعه ای از چند کلیشه و محدودیت که برای رسیدن به منظور خاصی ایجاد شده اند یک پروفایل UML را تشکیل می دهند.
// پایان بخش اول - - -

// منبع: fa.wikipedia.org

آشنایی با UML - بخش دوم: نمودارهای UML
 
 
ارسال به دوستافزایش اندازه فونتکاهش اندازه فونت