جعبه ابزار مهندسی مجدد نرم‌افزار DMS
طریقه استفاده

DMS برای پیاده‌سازی طیف وسیع ای از ابزارهای عملی مورد استفاده قرار گرفته‌است، شامل زبان‌های اختصاصی دامنه (مانند تولید کد برای کنترل کارخانه)، قابل پوشش تست و ابزارهای پروفایل، شناسایی clone , ابزار مهاجرت به زبان، مهندسی مجدد جزء ++C. , و برای تحقیق در مورد موضوعات پیچیده مانند قابلیت اطمینان مجدد ++C.
این مجموعه ابزار ابزاری برای تعریف دستور زبان در اختیار ما قرار می‌دهد وparser تولید می‌کند که به‌طور خودکار درخت‌های انتزاعی انتزاعی (ASTs) را ایجاد می‌کنند، و زیبا را برای تبدیل ASTهای اصلی یا اصلاح شده به متن منبع کامپایل شده تبدیل می‌کند. ضبط درختان پارس، و زیباترین چاپگرها، جزئیات کاملی در مورد برنامه منبع اصلی از جمله منبع منبع، نظرات، ردیف و قالب اعداد و غیره را بازسازی می‌کنند تا اطمینان حاصل کنند که متن منبع بازسازی شده به همان اندازه مدول متن اصلی برای یک برنامه‌نویس قابل تشخیص است. هرگونه تحول کاربردی
بسیاری از ابزارهای تجزیه و تحلیل و تحول برنامه محدود به مجموعه شخصیت‌های ASCII یا اروپای غربی مانند ISO-8859 است. DMS می‌تواند UTF-8، UTF-16، EBCDIC , Shift-JIS و انواع رمزگذاری کاراکترهای مایکروسافت را از این طریق کنترل کند.
DMS از فناوری تجزیه و تحلیل GLR استفاده می‌کند، این امکان را می‌دهد تا همه دستور زبان‌های بدون متن را عملی کند. گزاره‌های معنایی این قابلیت را به گرامرهای جالب بدون عارضه گسترش می‌دهد (Fortran نیاز به تطبیق حلقه‌های DO چندگانه با عبارات اشتراک گذاری CONTINUE مشترک با برچسب دارد؛ GLR با گزاره‌های معنایی پارسر DMS Fortran را قادر می‌سازد تا ASTها را برای حلقه‌های به‌صورت صحیح توخالی همان‌طور که تجزیه می‌کند) تولید کند.
DMS ارزیاب گرامر صفت را برای محاسبه آنالیزهای سفارشی از طریق ASTها، مانند اندازه‌گیری‌ها، و از جمله پشتیبانی ویژه برای ساخت جدول نمادها فراهم می‌کند. سایر واقعیت‌های برنامه را می‌توان با موتورهای کنترل جریان داخلی و تجزیه و تحلیل داده‌ها، تجزیه و تحلیل نشانگر محلی و جهانی، استخراج نمودار تماس با برنامه کامل، و تجزیه و تحلیل دامنه نمادین با تفسیر انتزاعی استخراج کرد.
تغییر در ASTs می‌تواند با استفاده از هر دو روش تشریفاتی رمزگذاری شده در PARLANSE و تبدیل درخت به منبع کدگذاری شده به عنوان بازنویسی قوانین با استفاده از نحو سطح شرط شده توسط هر واقعیت برنامه استخراج شده، با استفاده از زبان خصوصیات قانون DMS (RSL) انجام شود. موتور قاعده بازنویسی که از RSL پشتیبانی می‌کند، قوانین مقدماتی و ارتباطی را کنترل می‌کند. یک قانون بازنویسی برای C برای جایگزین کردن شرایط پیچیده توسط عملگر ?: صورت زیر نوشته می‌شود:
rule simplify_conditional_assignment(v:left_hand_side,e1:expression,e2:expression,e3:expression)
    :statement->statement
= " if (\e1) \v=\e2; else \v=e3; "
  -> " \v=\e1?\e2:\e3; "
  if no_side_effects(v);
بازنویسی قانون دارای نامهایی است، به عنوان مثال ساده‌سازی_قسمت_اسلامی. هر قانون دارای یک "مطابقت با این" و "جایگزین که" جفت الگوی هم جدا شده توسط ->، در مثال ما، در خطوط جداگانه برای خوانایی. الگوهای باید با دسته‌بندی‌های نحوی زبان مطابقت داشته باشند. در این مورد، هر دو الگو باید از نحو دسته بیانیه همچنین در همدردی با الگوهای از هم جدا می‌شود ->. زبان هدف (به عنوان مثال، C) نحو سطح در داخل متن نقل قول‌ها کدگذاری شده‌است "، برای جدا کردن نحو قاعده بازنویسی از زبان مقصد. نمایش‌های برگشتی در داخل نقل قول‌ها، فرار از دامنه را نشان می‌دهد، برای نشان دادن متغیرهای الگوی متا (به عنوان مثال، \ v , \ e1، \ e2) که مطابق با هر ساختار زبانی مطابق با اعلامیه قابل مشاهده در خط امضا است، به عنوان مثال، e1 باید از دسته نحوی باشد: (هر) بیان اگر یک متغیر متغیر در الگوی مسابقه چندین بار ذکر شده باشد، باید با زیر درختان یکسان مطابقت داشته باشد. همان شکل v باید در هر نمونه در الگوی مسابقه در این مثال رخ دهد. Metavariables در الگوی جایگزین توسط بازی مربوطه، از سمت چپ جایگزین شده‌است. شرط مشروط اگر شرط دیگری را فراهم کند که باید این قاعده را رعایت کند، مثلاً اینکه metavariable v یکسان، یک سمت چپ دلخواه است، نباید عوارض جانبی داشته باشد (مثلاً، نمی‌تواند از نوع a باشد. [++i]؛ محمول no_side_effects توسط آنالایزر ساخته شده با سایر مکانیسم‌های DMS تعریف شده‌است).
دستیابی به یک تغییر و تحول پیچیده بر روی کد با ارائه تعدادی از قوانین که برای دستیابی به اثر مطلوب همکاری می‌کنند، انجام می‌شود. این آیین‌نامه بر روی بخش‌هایی از برنامه توسط برنامه‌های برنامه‌نویسی رمزگذاری شده در PARLANSE متمرکز شده‌است.
یک مثال کامل از تعریف زبان و قوانین تبدیل منابع به منبع تعریف شده و کاربردی با استفاده از جبر دبیرستان و کمی حساب به عنوان یک زبان خاص دامنه نشان داده شده‌است.
DMS دارای انواع مختلفی از زبان‌های مقدماتی از پیش تعریف شده‌است که اکثر لهجه‌های واقعی C و ++C شامل C ++ 0x، C #، جاوا، پایتون، PHP , EGL، Fortran، COBOL، Visual Basic , Verilog، VHDL و حدود ۲۰ یا بیشتر را در بر می‌گیرد. زبان‌ها. زبانهای از پیش تعریف شده به شخصی سازان این امکان را می‌دهند که بلافاصله بر روی وظیفه مهندسی مجدد خود تمرکز کنند تا جزئیات جزئیات زبانهایی که باید پردازش شوند.
DMS علاوه بر این غیر معمول است که با یک زبان برنامه‌نویسی موازی، PARLANSE اجرا می‌شود، که از چند پردازنده متقارن موجود در ایستگاه‌های کاری کالا استفاده می‌کند. این DMS را قادر می‌سازد پاسخهای سریع تری را برای آنالیزها و تبدیلهای سیستم بزرگ ارائه دهد.
DMS در ابتدا توسط نظریه ای برای حفظ طرح‌های نرم‌افزاری به نام Design Maintenance Systems انگیزه داده شد .
DMS و «سیستم تعمیر و نگهداری طراحی» علائم تجاری ثبت شده از طراحی‌های معنایی هستند.