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

بررسی اجمالی
------------

تبدیلهای مدل را می‌توان برنامه‌هایی در نظر گرفت که ورودی آنها مدلها هستند. طیف گسترده‌ای از انواع تبدیل مدل و کاربردهای آن وجود دارد که در ورودی، خروجی و شیوه بیان متفاوتند.

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

طبقه‌بندی تبدیلهای مدل
----------------------

تبدیلهای مدل و زبانهای تبدیل برای آنها به روشهای متفاوتی طبقه‌بندی می‌شوند. برخی از متداولترین تقسیم‌بندی‌ها عبارتنداز:

### تعداد و انواع ورودیها و خروجیها

اولین ویژگی خاص یک تبدیل مدل تعداد مدلهای مبدأ (ورودیها) و مقصد (خروجیها) است. یک تبدیل، تولید خودکار یک مدل مقصد از یک مدل مبدأ بر طبق تعریف تبدیل است. اما، تبدیلهای مدلی که هیچ مدلی به عنوان خروجی تولید نمی‌کنند معمولاً تحلیل مدل یا پرس وجوی مدل نامیده می‌شوند.

### تبدیلهای درون‌زا در مقابل تبدیلهای برون‌زا

تبدیلهای درون‌زا تبدیل‌هایی هستند که مدلهای آنها منطبق بر یک زبان هستند. در تبدیلهای برون‌زا مدلهای ورودی و خروجی با زبانهای متفاوتی تعریف می‌شوند. برای مثال در یک فرایند منطبق بر معماری مدل رانده یک مدل مستقل از سکو ممکن است به یک مدل وابسته به سکو با یک تبدیل برون‌زا تبدیل شود.

### یک سویه در مقابل دو سویه

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

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

* تبدیلهای یک به یک که در آن دقیقاً یک مدل با مدل داده شده سازگار است که در نتیجه، ارتباط سازگاری یک به یک می‌باشد. یک جفت مدل سازگارند اگر و تنها اگر در یک ارتباط سازگاری یک به یک مرتبط شوند. هر دو مدل شامل اطلاعات مشابه هستند که به شکل متفاوت ارائه شده‌اند.
* تبدیل‌های نما که در آن یک مدل واقعی یک مدل نما را مشخص می‌کند اما یک مدل نما ممکن است توسط مدلهای واقعی متفاوتی تولید شود. مدل نما انتزاعی از مدل واقعی است. اگر مدل نما به روز شود، تبدیل دوسویه مورد نیاز است. این وضعیت در پایگاه داده با عنوان نما-به روز رسانی شناخته می‌شود. هر مدل واقعی با نمای خود (مدل نما) سازگار است.

این موضوع دارای اهمیت است که تبدیل مدل دوسویه دارای ویژگیهای برای رفتارهای منطقی باشد: برای مثال تغییرات غیرضروری انجام نگیرد.

زبانهای تبدیل مدل
-----------------

تبدیل مدل ممکن است با زبانهای برنامه‌نویسی عام منظوره نوشته شوند، اما زبانهای مخصوص تبدیل مدل نیز دردسترس هستند. تبدیلهای دوسویه به ویژه بهتر است به زبانی نوشته شوند که تضمین کند جهت‌های تبدیل به شکل مناسب با هم مرتبط هستند. زبان‌های تبدیل استاندارد شده OMG با نام QVT شناخته می‌شوند.

در برخی زبانهای تبدیل مدل به عنوان مثال زبانهای QVT، یک تبدیل خود یک مدل است که منطبق بر فرامدلی است که در واقع آن فرامدل بخشی از تعریف زبان تبدیل مدل می‌باشد. این واقعیت تعریف **تبدیلهای مرتبه بالاتر** (HOTs)، یعنی تبدیلهایی که ورودی و/یا خروجی آنها خود نوعی از تبدیل است را تسهیل می‌بخشد.

جستارهای وابسته
---------------

* مهندسی مدل-رانده (MDE)
* معماری مدل-رانده
* زبان خاص-دامنه (DSL)
* زبان تبدیل مدل
* پالایش
* تبدیل (ابهام‌زدایی)
* تبدیل برنامه
* تبدیل داده
* تبدیل گراف

منابع
-----

1. ↑   Czarnecki; Helsen (2006). "Feature-based survey of model transformation approaches". *IBM Systems Journal*. doi:10.1147/sj.453.0621.
2. ↑   Stevens, Perdita (2008). "A landscape of bidirectional model transformations". Berlin / Heidelberg: Springer. doi:10.1007/978-3-540-88643-3\_10. `{{cite journal}}`: Cite journal requires `|journal=` (help)
3. ↑  Jakumeit; Buchwald; Wagelaar; Dan; Hegedüs; Herrmannsdörfer; Horn; Kalnina; Lano; Lepper; Rensink; Rose; Wätzoldt; Mazanek (2014). "A survey and comparison of transformation tools based on the transformation tool contest". *Science of Computer Programming*. Elsevier. doi:10.1016/j.scico.2013.10.009.
4. ↑  Tom Mens, Pieter Van Gorp: A Taxonomy of Model Transformation. Electr. Notes Theor. Comput. Sci. 152: 125-142 (2006)
5. ↑  Stevens, Perdita (2010). "Bidirectional model transformations in QVT: semantic issues and open questions". *Software and Systems Modeling*. Berlin / Heidelberg: Springer. doi:10.1007/s10270-008-0109-9.
6. ↑  Tisi, Massimo (2009). "On the Use of Higher-Order Model Transformations". *ECMDA-FA '09*. LNCS. Berlin / Heidelberg: Springer. **5562**. doi:10.1007/978-3-642-02674-4\_3.

پیوند به بیرون
--------------

* Model Driven Software Engineering in Practice, Marco Brambilla, Jordi Cabot, Manuel Wimmer, foreword by Richard Soley (OMG Chairman), Morgan & Claypool, USA, 2012, Synthesis Lectures on Software Engineering #1. 182 pages. ISBN paperback: 9781608458820, ISBN ebook: 9781608458837.