زبان مدل‌سازی یکپارچه: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Mz1395 (بحث | مشارکت‌ها)
جز ارائه نسخه جدید را ثبت نمودم.
LetsDoItBot (بحث | مشارکت‌ها)
تمیزکاری، + ویرایش با ماژول ابرابزار با استفاده از AWB
خط ۲:
'''زبان مدل‌سازی یکپارچه''' {{انگلیسی|Unified Modeling Language}} یا «یو ام‌ال»، یک زبان مدلسازی همه منظوره استاندارد در زمینه [[مهندسی نرم‌افزار]] است که توسط [[گروه مدیریت شی]] {{انگلیسی|Object Management Group}} ایجاد شد. در حال حاضر (۲۰۱۴ میلادی) آخرین نسخه این زبان نسخه ۲٫۴٫۱ است که در سال ۲۰۰۷ میلادی مشخصات آن منتشر شد<ref>http://www.omg.org/technology/documents/formal/uml.htm| زبان مدلسازی یک‌لخت نسخه ۲٫۲</ref>
 
در سال 2012۲۰۱۲ نسخه 2.5۲٫۵ این زبان مدلسازی نیز تولید شد که این نسخه در سال 2015۲۰۱۵ به صورت عمومی منتشر گردید.
 
با استفاده از یو ام‌ال می‌توان تقریباً هر گونه [[برنامه کاربردی]] که ممکن است بر روی هر ترکیبی از سخت‌افزار، [[سیستم عامل]]، [[زبان برنامه نویسیبرنامه‌نویسی]] و شبکه اجرا شود را مدلسازی نمود. طراحی بر پایه مفاهیم [[شی گرایی]] یو ام‌ال سبب می‌شود که ذاتاً با محیط‌ها و [[زبانهای برنامه نویسیبرنامه‌نویسی]] [[شی گرا]] (مانند [[سی پلاس پلاس]]، [[جاوا (زبان برنامه‌نویسی)|جاوا]] و [[سی شارپ]]) سازگاری کامل داشته باشد، اگرچه می‌توان از آن برای مدلسازی برنامه‌های غیر شی گرا مانند برنامه‌هایی که با زبانهای [[بیسیک]]، [[کوبول]] و [[فرترن]] نوشته می‌شوند نیز استفاده نمود.<ref name=two>http://www.omg.org/gettingstarted/what_is_uml.htm مقدمه‌ای بر یو ام‌ال</ref>
 
== مرور کلی ==
یوام ال یک زبان مدلسازی نسل سوم است و روشی باز برای توصیف ویژگیها، نمایش گرافیکی، ساختن و مستندسازی اجزای یک سیستم نرم‌افزاری در حال توسعه می‌باشد. از یو ام‌ال برای فهمیدن، طراحی، مرور، پیکربندی، نگهداری و کنترل اطلاعات سیستم‌های نرم‌افزاری استفاده می‌شود. یو ام‌ال برای همه روشهای [[توسعه نرم‌افزار]]، همه مراحل [[چرخه عمر نرم‌افزار]]، همه حوزه‌های برنامه‌های کاربردی و هر رسانه‌ای قابل استفاده است. این زبان مدلسازی برای یک‌لخت سازی تجربیات گذشته در مورد تکنیک‌های مدلسازی و گنجاندن تجربیات موفق در یک دیدگاه استاندارد بوجود آمده است. یو ام‌ال شامل مفاهیم معنایی(semantic)، نمادگذاری و راهنمایی برای طراحی می‌باشد. یو ام‌ال را نمی‌توان به عنوان یک روش تولید نرم‌افزار کامل دانست. این زبان شامل فرایند مرحله به مرحله تولید نرم‌افزار نیست، بلکه یو ام‌ال زبانی است که تقریباً تمام شیوه‌های تولید نرم‌افزار از آن استفاده می‌کنند.
 
یو ام‌ال تکنیکهای [[مدلسازی داده ها|مدلسازی داده]] ([[نمودار رابطه موجودیت]])، مدلسازی تجاری، مدلسازی شی و مدلسازی مولفه‌ها را با هم ترکیب می‌نماید. یو ام‌ال را می‌توان در تمامی پروسه‌ها در سراسر [[چرخه توسعه نرم‌افزار]] به کاربرد.<ref>Satish Mishra (1997). [http://www2.informatik.hu-berlin.de/~hs/Lehre/2004-WS_SWQS/20050107_Ex_UML.ppt "مدلسازی تصویری و زبان مدلسازی یک‌لخت (یو ام‌ال): مقدمه‌ای بر یو ام‌ال"]. Rational Software Corporation. بازیابی شده در ۹ نوامبر ۲۰۰۸</ref>
Satish Mishra (1997). [http://www2.informatik.hu-berlin.de/~hs/Lehre/2004-WS_SWQS/20050107_Ex_UML.ppt "مدلسازی تصویری و زبان مدلسازی یک‌لخت (یو ام‌ال): مقدمه‌ای بر یو ام‌ال"]. Rational Software Corporation. بازیابی شده در ۹ نوامبر ۲۰۰۸</ref>
 
پیش از پیدایش یو ام‌ال در اواسط دهه ۱۹۹۰، مدلسازی نرم‌افزار از مشکل ناسازگاری نماد گذاریهای مختلفی که توسط متخصصین مدلسازی مختلف بوجود می‌آمد رنج می‌برد و استاندارد همه گیری در این زمینه وجود نداشت. یو ام‌ال از تلفیق [[روش بوچ]] (Booch Method)، [[تکنیک مدل‌سازی شی]] (OMT) و [[مهندسی نرم‌افزار شی گرا]](OOSE) با یکدیگر در راستای جریانات یک‌لخت سازی بوجود آمد.<ref name="Foldoc۰۱Foldoc01">[[فولداک]] (۲۰۰۱). [http://foldoc.org/index.cgi?query=UML&action=Search زبان مدلسازی یک‌لخت] آخرین به روز رسانی در ۲۰۰۲-۰۱-۰۳. بازیابی شده در ۶ فوریه ۲۰۰۹.</ref> پیدایش یوام ال همه چیز را تغییر داد و باعث رشد چشمگیر مدلسازی تصویری و استفاده گسترده از این زبان شد. یو ام‌ال امروزه نقش یک زبان بین‌المللی را در زمینه تولید نرم‌افزار بر عهده دارد. مؤسسه آماری [[گارتنر]] در سال ۲۰۰۶ تعداد متخصصان [[فناوری اطلاعات]] که از یو ام‌ال استفاده می‌نمودند را ۱۰ میلیون نفر برآورد نمود و همچنین تخمین زده است که در سال ۲۰۰۸ هفتاددر صد شرکتهای تولید نرم‌افزار در سراسر دنیا از یو ام‌ال استفاده کرده‌اند.<ref>http://uml.org/Visual_Modeling.pdf مدلسازی تصویری: گذشته، حال و آینده</ref>
 
== تاریخچه ==
[[پرونده:OO-historie.jpg|بندانگشتی|320px|تاریخچه متدها و نمادگذاریهای شی گرا.]]
روشهای تولید نرم‌افزار برای زبانهای [[برنامه نویسیبرنامه‌نویسی]] سنتی دردهه۱۹۷۰ ظهور کرد و در دهه ۱۹۸۰ همه گیر شد. مهمترین این شیوه‌ها متدولوژی طراحی و تحلیل ساختاریافته سیستم (SSADM) بود.<ref>Edward Yourdon, Larry L. "Structured Design: Fundamentals of a Discipline of Computer Program and System Design" ,Prentice Hall, 1979 ISBN 0-13-854471-9</ref>
این روشها در ابتدا توسط افرادی چون کنستانتین (Constantine)، دی مارکو(DeMarco)، ملور(Mellor)، وارد(Ward)، یوردون(Yourdon) و سایرین پدید آمدند و در حیطه سیستم‌های بزرگ به ویژه سیستم‌های طرف قرارداد با دولت در حوزه هوافضا و دفاع نظامی نیز نفوذ کردند. اگرچه نتایج آنها همواره رضایت بخش نبود اما این روشها متضمن ایده‌های خوبی بودند که به ندرت استفاده مؤثری از آنها می‌شد. شرکتهای تجاری راغب با به کارگیری روشهای تولید نرم‌افزار و سیستم‌های [[رایانه‌ای]] مهندسی نرم‌افزارنبودند. بیشتر آنها نرم‌افزارها را برای استفاده داخلی و رفع نیازهای خود تولید می‌کردند و نیازی به بررسی این نرم‌افزارها توسط سازمانهای خارجی نبود.
 
اولین [[زبان برنامه نویسیبرنامه‌نویسی شی گرا]] [[سیمولا]] بود که توسط [[اوله ژوهان داهل]](Ole-Johan Dahl) و [[کریستن نایگارد]] (Kristen Nygaard) در سال ۱۹۶۷ در نروژ طراحی شد.<ref>G.M. Birtwistle, "Simula Begin" , Van Nostrand Reinhold, 1979 , ISBN 0-88405-032-7</ref> این زبان اگرچه خود پیروان چندانی به دست نیاورد اما تأثیر زیادی بر روی بسیاری از زبانهای شی گرای بعدی داشت. کارهای داهل (Dahl) و نایگارد(Nygaard) تأثیر ژرفی بر گسترش شی گرایی داشت. جریان شی گرایی با دستیابی عمومی به زبان [[اسمال تاک|اسمالتاک]](Smalltalk) در اوایل دهه ۱۹۸۰ فعال شد و با پیدایش زبانهای شی گرای دیگری مانند [[سی شی گرا]] (Objective C)، [[سی پلاس پلاس]]، [[زبان برنامه سازی ایفل|ایفل]] و [[زبان برنامه نویسیبرنامه‌نویسی کلوس|کلوس]] (CLOS) ادامه یافت. پنج سال پس از اینکه [[اسمال تاک]] در سراسر دنیا شناخته شد، اولین متدهای شی گرای تولید نرم‌افزار توسط ''شلایر''و ''ملور''<ref>Sally Shlaer, Stephen J. Mellor, "Object Oriented Systems Analysis: Modeling the World in Data ",Prentice Hall, 1988, ISBN 0-13-629023-X</ref> و ''کود'' و ''یوردون''<ref>Peter Coad, Edward Yourdon; "Object Oriented Analysis 2nd edition" ,Prentice Hall, 1990 , ISBN 0-13-629981-4</ref> بوجود آمد و به فاصله کوتاهی توسط سایرین همچون بوچ(Booch) و رمباف (Rambaugh) دنبال شد.<ref name="B">Grady Booch, "Object-Oriented Analysis and Design with Applications (2nd Edition)" , Addison-Wesley Professional,1993, ISBN 0-8053-5340-2</ref><ref name="R">James Rumbaugh, "Object-oriented Modelling and Design" , Prentice Hall, 1991, ISBN 81-203-1046-2</ref><ref name="T">Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener; "Designing Object-Oriented Software "; Prentice Hall, 1990, ISBN 0-13-629825-7</ref> این کتابها به مجموعه کتب قبلی در مورد طراحی زبانهای برنامه نویسیبرنامه‌نویسی اضافه شد و فیلد متدولوژی شی گرا آغاز شد. فاز اول آن در پایان سال ۱۹۹۰ کامل شد. کتاب یاکوبسون<ref>Ivar Jacobson, "Object Oriented Software Engineering: A Use Case Driven Approach ", Addison-Wesley Professional,1992, ISBN 0-201-54435-0</ref> در مورد شی گرایی اندکی بعد بر اساس مقالات و کارهای پیشین منتشر شد که با تمرکز بر روی [[مورد کاربرد]] ([[مورد استفاده]] هم ترجمه شده) دیدگاه متفاوتی را ارائه کرد. در طی پنج سال بعدی کتابهای متعددی در این زمینه تألیف شد که هریک تعاریف، مفاهیم و نمادگذاریهای خاص خود را داشتند، اما در مجموع شباهت زیادی بین مفاهیم ارائه شده توسط نویسندگان مختلف وجود داشت.
 
برخی تلاشهای اولیه در جهت یک‌لخت سازی مفاهیم روشهای مختلف به انجام رسید که نمونه قابل ملاحظه آن کار کلمن(Coleman) و همکارانش به نام فیوژن(Fusion) بود<ref>Derek Coleman, "Object-Oriented Development: The Fusion Method ", Prentice Hall, 1993, ISBN 0-13-338823-9</ref> که شامل مفاهیمی از [[تکنیک مدل‌سازی شی]]،<ref name="R" /> [[روش بوچ|بوج]]<ref name="B" /> و سی آر سی<ref name="T" /> بود. اولین تلاش موفقیت آمیز برای ترکیب و جایگزینی روشهای موجود در سال ۱۹۹۴ وقتی به وجود آمد که رمباف به شرکت رشنال سافتور رفت و به بوچ پیوست. این دو مفاهیم تکنیک مدل سازی شی و روش بوچ را ترکیب کردند و اولین طرح خود را در سال ۱۹۹۵ ارائه دادند. در این زمان یاکوبسون هم به این دو پیوست و کار مشترک خود را با آنها آغاز کرد. کار مشترک آنها ''زبان مدل سازی یک‌لخت'' نام گرفت. در سال ۱۹۹۶ [[گروه مدیریت شی]] (OMG) درخواست پیشنهادهایی برای استاندارد مدل سازی شی گرا را مطرح نمود. نویسندگان یو ام‌ال (یاکوبسون، بوچ و رمباف) با همکاری گروهی از برنامه نویسان و متدولوژیست‌های دیگر طرح پیشنهادی خود را به OMG ارائه کردند. طرحهای دیگری هم به OMG ارائه شد که در نهایت همه پیشنهادات در طرح نهایی یو ام‌ال که در سال ۱۹۹۷ به OMG تحویل داده شد، ادغام شدند.
 
پس از چندین سال تجربه استفاده از یو ام‌ال در صدد برآمدند تا یو ام‌ال را ارتقاء دهند تا مشکلاتی که در تجربیات کاری پدیدار شده بودند را بر طرف کنند و قابلیت‌های آن را گسترش دهند. طرحهای پیشنهادی ارائه شدند ومشخصات یو ام‌ال ۲ در سال ۲۰۰۳ توسط OMG پذیرفته شد؛ و پس از نهایی سازی در اواخر ۲۰۰۴ در دسترس عموم قرار کرفت.
 
== مفاهیم بنیادین یو ام‌ال ==
مفاهیم یو ام‌ال در قالب دسته‌هایی به نام ''دید''(view) طبقه‌بندی می‌شوند. هر "«دید"» در واقع زیرمجموعه‌ای از ساخت‌های مدلسازی است که یک جنبه از سیستم را نمایش می‌دهند. در بالاترین سطح طبقه‌بندی دیدها به چهار حوزه کلی تقسیم‌بندی می‌شوند:<ref>James Rambaugh, Grady Booch,Ivar Jacobson; "The Unified Modeling Language Reference Manual 2nd Edition"Addison-Wesely, 2005, ISBN 0-321-24562-8</ref>
 
=== دسته‌بندی ساختاری(Structural Classification) ===
سطر ۴۶ ⟵ ۴۵:
=== سازماندهی مدل(Model Organization) ===
توصیف کننده سازماندهی خود مدلها در واحدهای سلسه مراتبی می‌باشد. واحد ژنریک سازماندهی مدلها بسته(package) است. یک مدل در واقع سلسله مراتبی از بسته هاست که انتزاع معنایی کاملی از سیستم از یک دیدگاه خاص است. این بخش شامل یک دید است:
* '''دید مدیریت مدل''' (Model Management View): این دید سازمان داخلی خود مدل را مدل می‌کند. یک مدل از مجموعه‌ای از ''بسته''ها (package) تشکیل می‌شود که در بر دارنده عناصر مدل (مانند نمودارهای کلاس، ماشین وضعیت و مورد کاربرد) است. نمودار مورد استفاده در این دید [[نمودار بسته بندیبسته‌بندی]] است.
 
=== پروفایل‌های یو ام‌ال (UML Profiles) ===
سطر ۶۷ ⟵ ۶۶:
* [[نمودار به کارگیری]] (Deployment Diagram): [[سخت‌افزار]] بکار رفته در پیاده‌سازی سیستم و همچنین محیط‌های اجرا و سایر اجزایی که باید بر روی این سخت‌افزار قرار گیرند را توصیف می‌کند.
* [[نمودار شی]] (Object Diagram): نمایشگر یک دید کامل یا جزیی از ساختار سیستم مدل شده در یک زمان مشخص است.
* [[نمودار بسته بندیبسته‌بندی]] (Package Diagram): چگونگی تقسیم سیستم به گروه بندیهای منطقی را با نمایش وابستگی‌ها بین این گروه بندیها توصیف می‌کند.
* [[نمودار پروفایل]] (Profile Diagram)
 
<center><gallery class="center">
 
Image:Component-4.png|[[نمودار مولفه]]
سطر ۷۸ ⟵ ۷۷:
Image:|[[نمودار کلاس]]
Image:Package import-1.png|[[نمودار بسته بندی]]
</gallery></center>
 
=== نمودارهای رفتاری(Behavior diagrams) ===
سطر ۸۶ ⟵ ۸۵:
* [[نمودار مورد کاربرد]] (Use Case Diagram): کارکرد ارائه شده توسط یک سیستم را در قالب بازیگران (Actor) واهداف آنها که به صورت مورد کاربرد نمایش داده می‌شوند و وابستگی بین موردهای کاربرد، مدلسازی می‌کند.
 
<center><gallery class="center">
Image:Activity Diagram 1.jpg|[[نمودار فعالیت]]
Image:UML state diagram.png|[[نمودار ماشین وضعیت]]
Image:UML_Use_Case_diagram.svg|[[نمودار مورد کاربرد]]
</gallery></center>
 
=== نمودارهای برهمکنش(Interaction Diagrams) ===
سطر ۹۹ ⟵ ۹۸:
* [[نمودارهای زمانبندی]] (Timing Diagrams): گونه ویژه‌ای از نمودارهای برهم کنش هستند که بر روی محدودیت‌های زمانبندی تمرکز دارند.
 
<center><gallery class="center">
Image:Kommunikations diagramm-2.png|[[نمودار ارتباطات]]
Image:Iau-diagramm-1.png|[[نمودار کلی بر همکنش]]
Image:UmlSequenzdiagramm-1.svg|[[نمودار توالی]]
</gallery></center>
 
== انتقادها ==
سطر ۱۱۰ ⟵ ۱۰۹:
;استانداردهای حجیم: یکی از انتقادات اساسی به یو ام‌ال در مورد حجم بالای استانداردهای مورد استفاده در این زبان است. یو ام‌ال شامل بسیاری از نمودارها و ساخت‌هایی است که یا اضافی هستند و یا به ندرت مورد استفاده قرار می‌گیرند. ''ایوار یاکوبسون'' (Ivar Jacobson)، یکی از طراحان یو ام‌ال، می‌گوید که اعتراضاتی که به اندازه یو ام‌ال ۲ می‌شود به اندازه کافی معتبر هستند که باعث شوند استفاده از عامل‌های هوشمند را برای [[حل مسئله]] در نظر بگیریم.<ref>"ایوار یاکوبسون دربارهٔ یو ام‌ال، ام دی ای و آینده متدولوژی ها" [http://www.infoq.com/interviews/Ivar_Jacobson] (video of interview, transcript available)، اکتبر24 , 2006. بازیابی شده در 2009-05-22</ref>
؛ مشکل آموزش و به کار گرفتن یو ام‌ال: حجیم بودن یو ام‌ال یادگیری و استفاده از آن را به ویژه برای مهندسینی که مهارتها و دانش پیش نیاز آن را ندارند مشکل می‌سازد.<ref>مقاله [[ای سی ام|ای سی ام (ACM)را]] ''[http://www.acmqueue.com/modules.php?name=Content&pa=showpage&pid=130 "مرگ با تب یوام ال"]'' برای بررسی بیشتر این گونه مواردببینید.</ref> در اغلب موارد افراد نمودارها را با استفاده از سمبل‌های در دسترس در ابزارهای یو ام‌ال طراحی می‌کنند، بی آنکه بدانند این سمبلها به چه منظوری بوجود آمده‌اند.
;عدم تطابق بین قابلیت‌های یو ام‌ال و قابلیت‌های زبان‌های پیاده‌سازی: همانند سایر سیستمهای [[نشان گذاری]]، یو ام‌ال برخی از سیستمها را مختصر تر و مؤثر ترازبقیه سیستمها نمایش می‌دهد؛ بنابراین یک تولید کنندهتولیدکننده نرم‌افزار به سمت راه حلهایی کشیده می‌شود که در فصل مشترک توانایی‌های یو ام‌ال و زبان پیاده‌سازی قرار می‌گیرند. این مشکل در مورد زبانهای پیاده‌سازی که سازگاری کاملی با دکترین طراحی شی گرا ندارند نمایان تر است زیرا فصل مشترک فابلیت‌های این زبانها با یو ام‌ال کوچک‌تر است.{{مدرک}}
 
برخی از متخصصین مدلسازی انتقادهای تندی را متوجه این زبان کرده‌اند. از آن جمله‌اند: ''برتراند مه یر'' (Bertrand Meyer) در مقاله‌ای با عنوان "«یو ام‌ال: چرخش مثبت"»<ref name="BMpaper">{{cite web|author=برتراند مه یر|title=یو ام‌ال: چرخش مثبت|url=http://archive.eiffel.com/doc/manuals/technology/bmarticles/uml/page.html|تاریخ دسترسی=2008-03-31}}</ref> و برایان هندرسون-سلرز و سزار گونزالز-پرز در مقاله "استفاده و سوء استفاده از مکانیسم کلیشه در یو ام‌ال ۱و 2".<ref name="UsesAbusesStereotype">B. Henderson-Sellers; C. Gonzalez-Perez (2006). "Uses and Abuses of the Stereotype Mechanism in UML 1.x and 2.0". in: ''Model Driven Engineering Languages and Systems''. Springer Berlin / Heidelberg.</ref>
 
== جستارهای وابسته ==