مدل‌سازی دامنه خاص

**مدل‌سازی دامنه خاص** ( **DSM** ) یک روش مهندسی نرم‌افزار برای طراحی و توسعه سیستم‌هایی مانند نرم‌افزار کامپیوتری است. این شامل استفاده سیستماتیک از یک زبان دامنه خاص برای نمایش جنبه های مختلف یک سیستم است.

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

## نمای کلی
مدل‌سازی اختصاصی دامنه اغلب شامل ایده تولید کد نیز می‌شود: ایجاد خودکار کد منبع اجرایی مستقیماً از مدل‌های زبان خاص دامنه. عاری بودن از ایجاد و نگهداری دستی کد منبع به این معنی است که زبان خاص دامنه می تواند به طور قابل توجهی بهره وری توسعه دهنده را بهبود بخشد.  قابلیت اطمینان تولید خودکار در مقایسه با کدگذاری دستی نیز باعث کاهش تعداد عیوب در برنامه های حاصل شده و در نتیجه کیفیت را بهبود می بخشد.

زبان اختصاصی دامنه با تلاش‌های قبلی برای تولید کد در ابزارهای CASE دهه 1980 یا ابزارهای UML در دهه 1990 متفاوت است. در هر دوی اینها، تولیدکنندگان کد و زبان‌های مدل‌سازی توسط فروشندگان ابزار ساخته شده‌اند.&#x5B; *[[ویکی‌پدیا:نیازمند منبع|<span title="This claim needs references to reliable sources. (November 2012)">نیازمند منبع</span>]]* &#x5D; در حالی که ممکن است یک فروشنده ابزار یک زبان و مولدهای خاص دامنه ایجاد کند، طبیعی‌تر است که زبان دامنه خاص در یک سازمان رخ دهد. یک یا چند توسعه دهنده خبره زبان مدل سازی و ژنراتورها را ایجاد می کنند و بقیه توسعه دهندگان از آنها استفاده می کنند.

داشتن زبان مدل سازی و مولد ساخته شده توسط سازمانی که از آنها استفاده می کند، امکان تناسب دقیق با دامنه دقیق آنها و در پاسخ به تغییرات در دامنه را فراهم می کند.

زبان‌های مخصوص دامنه معمولاً می‌توانند طیف وسیعی از سطوح انتزاعی را برای یک دامنه خاص پوشش دهند. به عنوان مثال، یک زبان مدل‌سازی خاص دامنه برای تلفن‌های همراه می‌تواند به کاربران اجازه دهد انتزاع‌های سطح بالا را برای رابط کاربری و همچنین انتزاع‌های سطح پایین‌تر برای ذخیره داده‌هایی مانند شماره تلفن یا تنظیمات مشخص کنند. به همین ترتیب، یک زبان مدل‌سازی دامنه خاص برای خدمات مالی می‌تواند به کاربران اجازه دهد انتزاعات سطح بالا را برای مشتریان و همچنین انتزاعات سطح پایین‌تر برای پیاده‌سازی الگوریتم‌های معاملات سهام و اوراق قرضه مشخص کنند.

## موضوعات

### تعریف زبان های خاص دامنه
برای تعریف یک زبان، به زبانی نیاز است که تعریف را در آن بنویسد. زبان یک مدل اغلب متامدل نامیده می شود، از این رو زبان برای تعریف یک زبان مدلسازی، متا-مدل است. متا مدل‌ها را می‌توان به دو گروه تقسیم کرد: آنهایی که از زبان‌های موجود مشتق شده‌اند یا سفارشی‌سازی شده‌اند، و آن‌هایی که به‌طور خاص به‌عنوان فرامدل‌ها توسعه یافته‌اند.

متامدل‌های مشتق‌شده شامل نمودارهای موجودیت-رابطه ، زبان‌های رسمی ، فرم توسعه‌یافته Backus-Naur (EBNF)، زبان‌های هستی‌شناسی ، طرح‌واره XML و تسهیلات متا شی (MOF) هستند. نقاط قوت این زبان ها در آشنایی و استانداردسازی زبان اصلی است.

رفتار مدل‌سازی دامنه خاص از ایجاد یک زبان جدید برای یک کار خاص حمایت می‌کند، و بنابراین، زبان‌های جدیدی وجود دارند که به‌عنوان متا-مدل طراحی شده‌اند. پرکاربردترین خانواده از این گونه زبان ها، OPRR،   GOPRR،  و GOPPRR است که بر پشتیبانی از چیزهایی که در زبان های مدل سازی با حداقل تلاش یافت می شوند تمرکز دارند.

### پشتیبانی ابزار برای زبان های دامنه خاص
بسیاری از زبان‌های مدل‌سازی همه‌منظوره در حال حاضر پشتیبانی ابزار را به شکل ابزارهای CASE دارند. زبان‌های زبان مخصوص دامنه معمولاً اندازه بازار بسیار کوچکی دارند تا از ساخت ابزار CASE سفارشی از ابتدا پشتیبانی کنند. درعوض، اکثر ابزارهای پشتیبانی از زبان‌های زبان خاص دامنه بر اساس چارچوب‌های زبانی خاص دامنه یا از طریق محیط‌های زبانی خاص دامنه ساخته می‌شوند.

یک محیط زبان خاص دامنه ممکن است به عنوان یک ابزار فرامدلینگ در نظر گرفته شود، به عنوان مثال، یک ابزار مدل سازی که برای تعریف یک ابزار مدل سازی یا ابزار CASE استفاده می شود. ابزار به دست آمده ممکن است در محیط زبان خاص دامنه کار کند یا کمتر به عنوان یک برنامه مستقل جداگانه تولید شود. در مورد رایج تر، محیط زبان خاص دامنه در مقایسه با ابزار CASE سنتی، از یک لایه انتزاعی اضافی پشتیبانی می کند.

استفاده از یک محیط زبان خاص دامنه می تواند هزینه دریافت پشتیبانی ابزار برای یک زبان دامنه خاص را به میزان قابل توجهی کاهش دهد، زیرا یک محیط زبان خاص دامنه که به خوبی طراحی شده باشد، ایجاد بخش های برنامه را که ساخت آنها از ابتدا پرهزینه است، مانند ویرایشگرها، مرورگرها و مؤلفه های خاص دامنه، خودکار می کند. متخصص دامنه فقط باید ساختارها و قوانین خاص دامنه را مشخص کند و محیط زبان خاص دامنه یک ابزار مدل سازی متناسب با دامنه هدف را فراهم می کند.

بیشتر زبان‌های خاص دامنه موجود با محیط‌های زبان خاص دامنه، اعم از تجاری مانند MetaEdit+ یا Actifsource ، منبع باز مانند GEMS یا دانشگاهی مانند GME انجام می‌شود. محبوبیت روزافزون زبان خاص دامنه منجر به اضافه شدن چارچوب های زبان خاص دامنه به IDE های موجود شده است، به عنوان مثال پروژه مدل سازی Eclipse (EMP) با EMF و GMF ، یا در ابزارهای DSL مایکروسافت برای کارخانه های نرم افزاری .

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

UML شامل مکانیزم پروفایل است که به آن اجازه می دهد برای دامنه ها و پلتفرم های خاص محدود و سفارشی شود. نمایه‌های UML از کلیشه‌ها ، ویژگی‌های کلیشه (معروف به مقادیر برچسب‌گذاری شده قبل از UML 2.0) و محدودیت‌هایی برای محدود کردن و گسترش دامنه UML به یک دامنه خاص استفاده می‌کنند. شاید بهترین نمونه شناخته شده سفارشی کردن UML برای یک دامنه خاص، SysML باشد، یک زبان دامنه خاص برای مهندسی سیستم .

UML یک انتخاب محبوب برای رویکردهای مختلف توسعه مبتنی بر مدل است که به موجب آن مصنوعات فنی مانند کد منبع، مستندات، آزمایش‌ها و موارد دیگر به صورت الگوریتمی از یک مدل دامنه تولید می‌شوند. به عنوان مثال، نمایه های برنامه استاندارد سند قانونی Akoma Ntoso را می توان با نمایش مفاهیم قانونی و هستی شناسی در اشیاء کلاس UML توسعه داد. 

## همچنین ببینید

* مهندسی نرم افزار به کمک کامپیوتر
* طراحی دامنه محور
* زبان مخصوص دامنه
* زبان مدل سازی چارچوب خاص
* مدل سازی همه منظوره
* چند مدل سازی مخصوص دامنه
* مهندسی مدل محور
* معماری مدل محور
* کارخانه های نرم افزاری
* مدل سازی ویژه رشته

## لینک های خارجی

* مدل‌سازی دامنه خاص برای توسعه نرم‌افزار مولد    ، مقاله وب توسط مارتین ایزگر، 2010
* مقاله مدل سازی اختصاصی دامنه در چارچوب های IoC توسط Ke Jin ، 2007
* مدل‌سازی اختصاصی دامنه برای تولید کد کامل از روش‌ها و ابزارها مقاله وب توسط Juha-Pekka Tolvanen، 2005
* ایجاد یک زبان مدلسازی دامنه خاص برای یک چارچوب موجود در وب مقاله توسط Juha-Pekka Tolvanen، 2006

## مراجع