DMS Software Reengineering Toolkit
ডিএমএস সফ্টওয়্যার রিইঞ্জিনিয়ারিং টুলকিট হল প্রোগ্রাম রূপান্তর সরঞ্জামগুলির একটি মালিকানাধীন সেট যা বড় আকারের সফ্টওয়্যার সিস্টেমের জন্য সোর্স ভাষার নির্বিচারে মিশ্রণের জন্য কাস্টম সোর্স প্রোগ্রাম বিশ্লেষণ, পরিবর্তন, অনুবাদ বা সফ্টওয়্যার সিস্টেমের প্রজন্মকে স্বয়ংক্রিয় করার জন্য উপলব্ধ। ডিএমএস মূলত ডিজাইন রক্ষণাবেক্ষণ ব্যবস্থা নামে সফ্টওয়্যারের নকশা বজায় রাখার জন্য একটি তত্ত্ব দ্বারা অনুপ্রাণিত হয়েছিল। ডিএমএস এবং "ডিজাইন রক্ষণাবেক্ষণ ব্যবস্থা" শব্দার্থিক ডিজাইনের নিবন্ধিত ট্রেডমার্ক। ডোমেন-নির্দিষ্ট ভাষাগুলি (যেমন কারখানা নিয়ন্ত্রণের জন্য কোড জেনারেশন), পরীক্ষার কভারেজ এবং প্রোফাইলিং সরঞ্জাম, ক্লোন সনাক্তকরণ, ভাষা স্থানান্তর সরঞ্জাম, সি + + উপাদান পুনর্বিন্যাস এবং সি + + কে নির্ভরযোগ্যভাবে পুনর্বিন্যাস করার মতো কঠিন বিষয়গুলির গবেষণার জন্য ব্যবহার করা হয়েছে। বৈশিষ্ট্য টুলকিটটি ভাষার ব্যাকরণ সংজ্ঞায়িত করার উপায় সরবরাহ করে এবং এমন পার্সার তৈরি করে যা স্বয়ংক্রিয়ভাবে বিমূর্ত সিনট্যাক্স ট্রি (এ. এস. টি) তৈরি করে এবং মূল বা পরিবর্তিত এ. এস. টি-কে সংকলনযোগ্য উৎস পাঠ্যে রূপান্তরিত করার জন্য সুন্দর প্রিন্টার তৈরি করে। পার্স ট্রিগুলি উৎসের অবস্থান, মন্তব্য, মূলসূত্র এবং সংখ্যার বিন্যাস ইত্যাদি সহ মূল উৎস প্রোগ্রাম সম্পর্কে সম্পূর্ণ বিবরণ ক্যাপচার করে এবং প্রিটিপ্রিন্টারগুলি পুনরুজ্জীবিত করে, যাতে পুনরুজ্জীবিত উৎস পাঠ্য কোনও প্রোগ্রামারের কাছে মূল পাঠ্য মডুলোর মতো স্বীকৃত হয়। ডিএমএস শব্দার্থিক পূর্বাভাসের সাথে জিএলআর পার্সিং প্রযুক্তি ব্যবহার করে। এটি এটিকে সমস্ত প্রসঙ্গ-মুক্ত ব্যাকরণের পাশাপাশি বেশিরভাগ প্রসঙ্গ-মুক্ত ভাষার বাক্যবিন্যাস পরিচালনা করতে সক্ষম করে, যেমন ফোরট্রান, যার জন্য সঠিকভাবে নেস্টেড লুপগুলির জন্য এ. এস. টি তৈরি করতে লেবেল দ্বারা ভাগ করা CONTINUE বিবৃতির সাথে একাধিক ডি. ও লুপগুলির মিল প্রয়োজন। ডিএমএস-এর বিভিন্ন পূর্বনির্ধারিত ভাষা রয়েছে, যা সি + + 0x, সি #, জাভা, পাইথন, পিএইচপি, ইজিএল, ফোরট্রান, কোবোল, ভিজ্যুয়াল বেসিক, ভেরিলগ, ভিএইচডিএল এবং কিছু 20 বা তার বেশি অন্যান্য ভাষা সহ সি এবং সি + +-এর বেশিরভাগ বাস্তব উপভাষাকে অন্তর্ভুক্ত করে। ডিএমএস এ. এস. সি. আই. আই, আই. এস. ও-8859, ইউ. টি. এফ-8, ইউ. টি. এফ-16, ই. বি. সি. ডি. আই. সি, শিফট-জে. আই. এস এবং বিভিন্ন ধরনের মাইক্রোসফট চরিত্র এনকোডিং পরিচালনা করতে পারে। ডিএমএস এ. এস. টি-র উপর কাস্টম বিশ্লেষণ গণনা করার জন্য অ্যাট্রিবিউট ব্যাকরণ মূল্যায়নকারী সরবরাহ করে, যেমন মেট্রিক্স, এবং প্রতীক টেবিল নির্মাণের জন্য সমর্থন অন্তর্ভুক্ত করে। অন্যান্য প্রোগ্রামের তথ্যগুলি অন্তর্নির্মিত নিয়ন্ত্রণ-এবং ডেটা-প্রবাহ বিশ্লেষণ ইঞ্জিন, স্থানীয় এবং বিশ্বব্যাপী পয়েন্টার বিশ্লেষণ, পুরো-প্রোগ্রাম কল গ্রাফ নিষ্কাশন এবং বিমূর্ত ব্যাখ্যার মাধ্যমে প্রতীকী পরিসীমা বিশ্লেষণের মাধ্যমে বের করা যেতে পারে। ডিএমএস একটি সমান্তরাল প্রোগ্রামিং ভাষা, পার্ল্যান্সে প্রয়োগ করা হয়, যা বড় বিশ্লেষণ এবং রূপান্তরগুলিকে ত্বরান্বিত করতে প্রতিসম মাল্টিপ্রোসেসিং ব্যবহার করার অনুমতি দেয়। এ. এস. টি-তে পরিবর্তনগুলি ডি. এম. এস-এর রুল স্পেসিফিকেশন ল্যাঙ্গুয়েজ (আর. এস. এল) ব্যবহার করে, যে কোনও নিষ্কাশিত প্রোগ্রামের তথ্য দ্বারা শর্তযুক্ত পৃষ্ঠ-সিনট্যাক্স ব্যবহার করে পার্লেন্সে কোড করা পদ্ধতিগত পদ্ধতি এবং সোর্স-টু-সোর্স ট্রি রূপান্তর উভয় দ্বারা সম্পন্ন করা যেতে পারে। আরএসএল-কে সমর্থনকারী পুনর্লিখন নিয়ম ইঞ্জিনটি সহযোগী এবং বিনিময়যোগ্য নিয়মগুলি পরিচালনা করে। একটি জটিল শর্ত প্রতিস্থাপনের জন্য সি-এর জন্য একটি পুনর্লিখন নিয়ম? : অপারেটরকে এইভাবে লেখা হবেঃ নিয়ম সরল _ শর্তসাপেক্ষ _ অ্যাসাইনমেন্ট (v: বাম _ হাত _ দিক, e1: অভিব্যক্তি, e2: অভিব্যক্তি, e3: অভিব্যক্তি): বিবৃতি-> বিবৃতি = "যদি (\e1) \v = \e2; অন্যথায় \v = e3";-> "\v = \e1? \e2: \e3" যদি কোনও _ পার্শ্ব _ প্রভাব (v) না থাকে; পুনর্লিখন নিয়মের নাম রয়েছে, যেমন। শর্তসাপেক্ষ দায়িত্ব সরলীকরণ করুন। প্রতিটি নিয়মে একটি "ম্যাচ দিস" এবং "রিপ্লেস বাই দ্যাট" প্যাটার্ন জোড়া রয়েছে যা-> দ্বারা পৃথক করা হয়েছে, আমাদের উদাহরণে, পঠনযোগ্যতার জন্য পৃথক লাইনে। প্যাটার্নগুলি অবশ্যই ভাষার সিনট্যাক্স বিভাগের সাথে সামঞ্জস্যপূর্ণ হতে হবে; এই ক্ষেত্রে, উভয় প্যাটার্ন অবশ্যই সিনট্যাক্স বিভাগের বিবৃতির হতে হবে এবং প্যাটার্নের সাথে সহানুভূতিতে-> দ্বারা পৃথক হতে হবে। টার্গেট ল্যাঙ্গুয়েজ (যেমন, সি) সারফেস সিনট্যাক্সকে মেটা-কোটের মধ্যে কোড করা হয়, যাতে টার্গেট ল্যাঙ্গুয়েজ থেকে রি-রাইট-রুল সিনট্যাক্সকে আলাদা করা যায়। মেটা-কোটের অভ্যন্তরে ব্যাকস্ল্যাশগুলি ডোমেন পালানোর প্রতিনিধিত্ব করে, যা প্যাটার্ন মেটা ভেরিয়েবল (যেমন, \v, \e1, \e2) নির্দেশ করে যা স্বাক্ষর লাইনের মেটাভ্যারিয়েবল ঘোষণার সাথে সম্পর্কিত যে কোনও ভাষা গঠনের সাথে মেলে, যেমন, e1 অবশ্যই বাক্যবিন্যাস বিভাগের হতে হবেঃ (যে কোনও) অভিব্যক্তি। যদি ম্যাচ প্যাটার্নে একটি মেটাব্যারিয়েবল একাধিকবার উল্লেখ করা হয়, তবে এটি অবশ্যই অভিন্ন সাবট্রির সাথে মেলে; এই উদাহরণে ম্যাচ প্যাটার্নে উভয় অ্যাসাইনমেন্টে একই অভিন্ন আকৃতির ভি অবশ্যই ঘটতে হবে। প্রতিস্থাপন প্যাটার্নে মেটাব্যারিয়ালগুলি বাম দিক থেকে সংশ্লিষ্ট ম্যাচ দ্বারা প্রতিস্থাপিত হয়। একটি শর্তাধীন ধারা যদি একটি অতিরিক্ত শর্ত প্রদান করে যা নিয়মটি প্রয়োগ করার জন্য অবশ্যই পূরণ করতে হবে, উদাহরণস্বরূপ, যে মিলযুক্ত মেটাবারেবল ভি, একটি নির্বিচারে বাম দিক হওয়ার কারণে, অবশ্যই কোনও পার্শ্ব প্রতিক্রিয়া থাকতে হবে না (উদাহরণস্বরূপ, একটি [i + +] আকারে হতে পারে না; অন্য ডিএমএস প্রক্রিয়াগুলির সাথে নির্মিত কোনও বিশ্লেষক দ্বারা নো _ সাইড _ এফেক্টস প্রেডিকেট সংজ্ঞায়িত করা হয়)। কাঙ্ক্ষিত প্রভাব অর্জনে সহযোগিতা করে এমন বেশ কয়েকটি নিয়ম সরবরাহ করে কোডে একটি জটিল রূপান্তর অর্জন করা হয়। পার্লেন্সে কোডেড মেটাপ্রোগ্রামের মাধ্যমে নিয়মাবলীটি প্রোগ্রামের কিছু অংশের উপর দৃষ্টি নিবদ্ধ করে। একটি ভাষার সংজ্ঞা এবং সংজ্ঞায়িত ও প্রয়োগকৃত উৎস-থেকে-উৎস রূপান্তর নিয়মের একটি সম্পূর্ণ উদাহরণ উচ্চ বিদ্যালয়ের বীজগণিত এবং ডোমেন-নির্দিষ্ট ভাষা হিসাবে কিছুটা ক্যালকুলাস ব্যবহার করে দেখানো হয়েছে। তথ্যসূত্র বাহ্যিক লিঙ্ক ডিএমএস সফ্টওয়্যার রিইঞ্জিনিয়ারিং টুলকিট প্রধান ওয়েব পৃষ্ঠা স্ট্যাটিক প্রোগ্রাম বিশ্লেষণ সরঞ্জাম প্রোগ্রাম রূপান্তর সরঞ্জাম কম্পিউটার-এডেড সফ্টওয়্যার ইঞ্জিনিয়ারিং সরঞ্জাম ভাষা ওয়ার্কবেঞ্চ