Frame technology (software engineering)
فریم ٹیکنالوجی (ایف ٹی) ایک زبان غیر جانبدار (یعنی مختلف زبانوں پر عمل) نظام ہے جو دوبارہ استعمال کے قابل، مشین سے موافقت پذیر بلڈنگ بلاکس سے اپنی مرضی کے مطابق سافٹ ویئر تیار کرتا ہے، جسے فریم کہتے ہیں۔ ایف ٹی کا استعمال بڑے، پیچیدہ سافٹ ویئر سسٹمز کے ڈیزائن، تعمیر اور ارتقا میں شامل وقت، کوشش اور غلطیوں کو کم کرنے کے لیے کیا جاتا ہے۔ ایف ٹی کی بنیاد اسی طرح کے لیکن باریکی سے مختلف اجزاء کے پھیلاؤ کو روکنے کی اس کی صلاحیت ہے، ایک مسئلہ جو سافٹ ویئر انجینئرنگ کو دوچار کر رہا ہے، جس کے لیے پروگرامنگ زبان (سبروٹینز، کلاسز، یا ٹیمپلیٹس/جنیرکس) یا اضافی تکنیک جیسے میکرو اور جنریٹر عملی، توسیع پذیر حل فراہم کرنے میں ناکام رہے۔ ایف ٹی کے متعدد نفاذ موجود ہیں۔ نیٹرون فیوژن کاروباری سافٹ ویئر کی تعمیر میں مہارت رکھتا ہے اور ملکیتی ہے۔ اے آر ٹی (اڈاپٹو ری یوز ٹیکنالوجی) ایف ٹی کا ایک عام مقصد، اوپن سورس نفاذ ہے۔ پال جی بیسیٹ نے پہلی ایف ٹی ایجاد کی تاکہ تکراری، غلطی کے شکار ترمیم کو خودکار بنایا جا سکے جو (تیار کردہ اور ہاتھ سے لکھے ہوئے) پروگراموں کو بدلتی ہوئی ضروریات اور سیاق و سباق کے مطابق ڈھالنے میں شامل ہے۔ اب ایک خاطر خواہ ادب موجود ہے جو یہ بتاتا ہے کہ کس طرح ایف ٹی سافٹ ویئر کے لائف سائیکل کے زیادہ تر پہلوؤں کو سہولت فراہم کر سکتا ہے، بشمول ڈومین ماڈلنگ، ضروریات کو جمع کرنا، فن تعمیر اور ڈیزائن، تعمیر، جانچ، دستاویزات، عمدہ ٹیوننگ اور ارتقاء۔ متبادل طریقوں سے ایف ٹی کے آزادانہ موازنہ اس بات کی تصدیق کرتے ہیں کہ پیچیدہ نظاموں کی تعمیر اور ان کو برقرار رکھنے کے لیے درکار وقت اور وسائل کو کافی حد تک کم کیا جا سکتا ہے۔ ایک وجہ: ایف ٹی پروگرامرز کو سافٹ ویئر کی موروثی بے کاریوں سے بچاتا ہے: ایف ٹی نے مساوی ایکس وی سی ایل فریم لائبریریوں سے سی او ٹی ایس آبجیکٹ لائبریریوں کو دوبارہ پیش کیا ہے جو دو تہائی چھوٹے اور آسان ہیں۔ کسٹم بزنس ایپلی کیشنز کو باقاعدگی سے نیٹرن فیوژن ایس پی سی فریموں کے ذریعہ متعین اور برقرار رکھا جاتا ہے جو ان کی جمع شدہ سورس فائلوں کے سائز کے 5%-15% ہوتے ہیں۔ فریم ذیل میں دو غیر رسمی وضاحتیں ہیں، اس کے بعد ایک زیادہ درست تعریف اور وضاحت ہے۔ ایک فریم ایک خودکار سافٹ ویئر اسمبلی لائن پر ایک موافقت پذیر جزو ہے۔ ایک آٹو فیکٹری کا تصور کریں جہاں، ہر کار ماڈل کی خصوصیات کے مطابق مخصوص بمپرز، فینڈرز اور دیگر پرزے رکھنے کے بجائے، ہمارے پاس صرف ایک عام بمپر، ایک عام فینڈر وغیرہ ہے۔ اب تصور کریں کہ ان عام حصوں کو کلون کیا جا سکتا ہے اور ہر کار ماڈل کو فٹ کرنے کے لیے شکل دی جا سکتی ہے کیونکہ یہ لائن سے نیچے آیا تھا۔ اس طرح کی فنتاسی مینوفیکچرنگ میں انقلاب برپا کر دے گی ؛ اور اگرچہ جسمانی حصوں کے لیے ناممکن ہے، لیکن سافٹ ویئر (اور عام طور پر معلومات) کے لیے فریم یہی کرتے ہیں۔ فریم ایک (پروگرام) متن کو "پکانے" کے لیے ایک ترکیب ہے۔ اس کی ہدایات بتاتی ہیں کہ اس کے اجزاء-اپنے اندر فریم ٹیکسٹ کے ٹکڑوں-کو دوسرے فریموں کے اجزاء کے ساتھ کیسے ملایا جائے۔ "شیف" ایک فریم پروسیسر ہے جو ہدایات پر عمل کرتا ہے، یعنی۔ فریم کمانڈز، جو مرکزی ترکیب کے مطابق اجزاء کو ضرورت کے مطابق تبدیل (شامل، ترمیم، حذف) کرتے ہیں۔ رسمی طور پر، فریم ایک طریقہ کار میکرو ہے جو فریم ٹیکسٹ پر مشتمل ہوتا ہے-عام (پروگرام) ٹیکسٹ اور فریم کمانڈز کی صفر یا زیادہ لائنیں (جو ایف ٹی کے فریم پروسیسر کے ذریعہ انجام دی جاتی ہیں کیونکہ یہ اپنی مرضی کے مطابق پروگرام تیار کرتا ہے)۔ ہر فریم نیسٹڈ ذیلی اسمبلیوں کے درجہ بندی میں ایک عام جزو ہے، اور اس کے ذیلی اسمبلی فریموں کے ساتھ خود کو ضم کرنے کا ایک طریقہ کار ہے (ایک تکراری عمل جو اعلی سطح کی ذیلی اسمبلیوں کے حق میں انضمام کے تنازعات کو حل کرتا ہے)۔ آؤٹ پٹ اپنی مرضی کے مطابق دستاویزات ہیں، عام طور پر مرتب کرنے کے قابل ماخذ ماڈیول۔ مرکزی کمانڈ ایک فریم کو مدعو کرتے ہیں (ایک طریقہ کار کال جو پروگرام کے متن کی تعمیر کے دوران تعمیراتی وقت ہوتی ہے) ؛ ایک فریم پیرامیٹر (ایک تعمیراتی وقت متغیر تفویض) کو ایک (کی فہرست) اظہار (زبانیں) تفویض کریں ؛ فریم ٹیکسٹ کے بلاکس سے پہلے، اس کے بجائے، یا اس کے بعد فریم ٹیکسٹ داخل کریں، جو پیرامیٹر کے تاثرات کے ذریعہ لیبل کیا گیا ہے۔ ایک فریم پیرامیٹر کو فوری بنائیں (ایک تعمیراتی وقت کے اظہار کی تشخیص) ؛ پروسیسنگ کے لیے فریم ٹیکسٹ منتخب کریں (ایک تعمیراتی وقت کا کیس بیان) ؛ کچھ فریم پیرامیٹرز کو تبدیل کرتے ہوئے فریم ٹیکسٹ کو دہرائیں (بیان کے دوران ایک تعمیراتی وقت)۔ پروسیسر عام متن کے ساتھ کمانڈوں کو تبدیل کرکے، اور عام متن کو اسی طرح خارج کرکے فریم ٹیکسٹ کو تبدیل کرتا ہے۔ مثال: یہ مدعو کیے گئے فریم کو پروسیس کرنے کے نتیجے سے مدعو کی جگہ لے لیتا ہے۔ یہ کسی تفویض کی جگہ کچھ نہیں لے لیتا ہے۔ اور ایک فوری متن عام متن بن جاتا ہے جو فریم پیرامیٹر کے تفویض کردہ اظہار کا جائزہ لینے کے نتیجے میں ہوتا ہے، جو سٹرنگز، ریاضی کے تاثرات، اور نیسٹڈ فریم پیرامیٹرز کا امتزاج ہو سکتا ہے۔ اجزاء کے تعلقات فریموں کے درمیان اجزاء کے تعلقات کو ترتیب دیتے ہیں۔ مثال کے طور پر، شکل 1 میں: F J کا جزو ہے اور C J کا ذیلی جزو ہے۔ یقینا، بہت سے اجزاء ایک ہی ذیلی جزو کو مدعو کر سکتے ہیں، جیسا کہ I اور J میں F کو مدعو کرتے ہوئے، ہر ایک مختلف متن کی تعمیر کرتا ہے۔ مجموعی جزو کا ڈھانچہ ایک عام سیمی لیٹس بناتا ہے، جس میں ہر فریم ذیلی اسمبلی کی جڑ ہوتا ہے۔ اس طرح سی اس کی اپنی ذیلی اسمبلی ہے۔ ایف اور سی ایف ذیلی اسمبلی کے اجزاء ہیں، اور جے، ایف، اور سی جے ذیلی اسمبلی کے اجزاء ہیں۔ سیاق و سباق کا دائرہ وہ ہے جو ایف ٹی کو دوسرے ماڈلنگ اور تعمیراتی نظاموں سے ممتاز کرتا ہے: ہر فریم اس سیاق و سباق کی تشکیل کرتا ہے جس میں وہ اپنی ذیلی اسمبلی کو مربوط کرتا ہے۔ نیسٹڈ ذیلی اسمبلیوں میں نچلی سطحیں بتدریج زیادہ سیاق و سباق سے پاک ہوتی ہیں کیونکہ وہ کم معلومات کو مربوط کرتی ہیں۔ انضمام کے تنازعات کو کسی پیرامیٹر کو تفویض کرنے یا داخل کرنے کے لیے انتہائی سیاق و سباق کے حساس فریم کے حق میں حل کیا جاتا ہے-یہ اس فریم کی ذیلی اسمبلی میں موجود دیگر تمام فریموں کے لیے صرف پڑھنے کے لیے بن جاتا ہے۔ شکل 1 میں، فریم F اور C متصادم ہوں گے اگر وہ پیرامیٹر p کو مختلف اقدار تفویض کرتے ہیں۔ لہذا F C کو اوور رائیڈ کرتا ہے-یعنی، فریم پروسیسر C کی اسائنمنٹ (s) کو p پر نظر انداز کرتا ہے، اور F اور C میں p کے لیے F کی قدر (s) کا استعمال کرتا ہے۔ اسی طرح، J F اور C دونوں کو اوور رائیڈ کر سکتا ہے، اور اسی طرح۔ سیاق و سباق کا دائرہ کار اہم ہے کیونکہ کسی دیئے گئے سیاق و سباق میں کسی بھی تعداد میں (ذیلی) اجزاء کو فٹ کرنے کے لیے درکار تمام ایڈجسٹمنٹ اس سیاق و سباق کے لیے واضح اور مقامی ہیں۔ سیاق و سباق کے دائرہ کار کے بغیر اس طرح کی ایڈجسٹمنٹ زیادہ تر مضمر، بکھرے ہوئے اور اجزاء کی مختلف حالتوں میں پوشیدہ ہوتی ہیں۔ اس طرح کے متغیرات نہ صرف پھیلتے ہیں، جو غیر ضروری بے کار پن اور پیچیدگی کا باعث بنتے ہیں، بلکہ نظام کا ارتقاء بھی غیر ضروری طور پر مشکل اور غلطی کا شکار ہے۔ وضاحتی فریم اور ٹیمپلیٹس ایک وضاحتی فریم (ایس پی سی) ایک پوری اسمبلی کا سب سے اوپر ہے، لہذا سب سے زیادہ سیاق و سباق حساس فریم ہے۔ پروسیسر ایک مکمل پروگرام یا ذیلی نظام تیار کرنے کے لیے ایس پی سی سے شروع ہوتا ہے، جیسے کہ شکل 1 میں ایل یا ایم۔ اگرچہ اصولی طور پر ایک ایس پی سی ہر تفصیل کو اپنی مرضی کے مطابق بنا سکتا ہے، لیکن عملی طور پر ایس پی سی اس کی پوری اسمبلی کا ایک چھوٹا سا حصہ ہے کیونکہ زیادہ تر مستثنیات (اور مستثنیات وغیرہ سے مستثنیات)۔ پہلے سے ہی مختلف ذیلی اسمبلی فریموں کے ذریعے سنبھالا جا چکا ہے۔ فریم لائبریری کو دیکھتے ہوئے، ایس پی سی منطقی طور پر ان پروگراموں کو شامل کرتے ہیں جو وہ بناتے ہیں۔ اس طرح ایس پی سی بنیادی کنٹرول پوائنٹس کے طور پر سورس فائلوں کی جگہ لے لیتے ہیں۔ ایس پی سی بنانے کے لیے ٹیمپلیٹس کا استعمال کرنا معمول کی بات ہے جو پروگرام بناتے ہیں، پھر ان پروگراموں کو غیر معینہ مدت تک منظم اور تیار کرنے کے لیے ایس پی سی کا استعمال کرتے ہیں۔ یہ عمل ان تفصیلات کی تعداد کو بہت کم کر دیتا ہے جنہیں ایپلیکیشن پروگرامرز کو جاننا اور ان کا انتظام کرنا ضروری ہے۔ یہ ہاتھ سے ماخذ متن کو کاپی کرنے اور ترمیم کرنے میں موجود بے کاریوں، پیچیدگیوں اور غلطیوں سے بھی بچتا ہے۔ ڈیبگنگ کا وقت بھی سکڑ جاتا ہے کیونکہ زیادہ تر اجزاء دوبارہ استعمال ہوتے ہیں، اس لیے پہلے سے جانچ لیا جاتا ہے۔ غلطیاں ایس پی سی میں مقامی ہوتی ہیں، کیونکہ ان کا سب سے کم تجربہ کیا جاتا ہے۔ ٹیمپلیٹ ایک آرکیٹیپل ایس پی سی ہے، جس میں سرایت شدہ تبصرے ہوتے ہیں جن میں بتایا جاتا ہے کہ اسے اپنی مرضی کے مطابق کیسے بنایا جائے۔ عام طور پر، پروگراموں کی اقسام کی ایک چھوٹی سی تعداد ہوتی ہے، ہر قسم کی خصوصیت ٹیمپلیٹ ہوتی ہے۔ اسے کاپی اور بھرنے سے، پروگرامر کسی ٹیمپلیٹ کو ایس پی سی میں تبدیل کرتے ہیں بغیر یہ یاد رکھے کہ انہیں کس فریم کی ضرورت ہے، ان کے اجزاء کے تعلقات، یا عام طور پر کون سی تفصیلات کو اپنی مرضی کے مطابق بنانے کی ضرورت ہے۔ فریم پر مبنی ڈومین مخصوص زبانیں ایک ایف ٹی پر مبنی، ڈومین مخصوص زبان (ایف ٹی-ڈی ایس ایل) ایک ڈومین مخصوص زبان ہے جس کے الفاظ (پروگرام کوڈ میں ظاہر) کو فریموں میں تیار کیا گیا ہے۔ ایک عام ایف ٹی-ڈی ایس ایل ایڈیٹر ڈی ایس ایل تاثرات اور ایک فریم کے درمیان ترجمہ کرتا ہے جو ڈی ایس ایل تاثرات کے پروگرام کوڈ کے مساوی اظہار کے لیے فریم شدہ سیمنٹکس کو ڈھال لے گا۔ اس ذیلی اسمبلی کے اوپر بیٹھا ہوا ایس پی سی پھر پروگرام کوڈ میں ڈومین مخصوص زبان میں ناقابل بیان کسی بھی حسب ضرورت کی وضاحت کر سکتا ہے۔ اس طرح جب صارفین تبدیل شدہ ڈی ایس ایل تاثرات سے پروگرام کوڈ کو دوبارہ تخلیق کرتے ہیں، تو پہلے کی تخصیصات ختم نہیں ہوتی ہیں۔ فریم انجینئرنگ فریم ٹیکنالوجی ماحول میں سافٹ ویئر انجینئرنگ کا اطلاق کرتی ہے۔ اس میں ڈومین تجزیہ، ڈیزائننگ، تحریر، جانچ، اور ان کے بنائے ہوئے نظاموں کے ساتھ مل کر تیار ہونے والے فریم شامل ہیں۔ فریمنگ نیچے سے اوپر اور اوپر سے نیچے دونوں جگہ ہوتی ہے۔ نیچے، فریم انجینئر عام طور پر اسی طرح کے پروگرام کے عناصر (کسی بھی دانے دار، ٹیکسٹ کے ٹکڑوں سے لے کر ذیلی نظام تک) کے گروپوں کو عام مساوی میں متحد اور پیرامیٹرائز کرکے فریم بناتے ہیں۔ ٹاپ ڈاؤن اپروچ ڈومین کی مہارت کو تکراری پروٹو ٹائپ ریفائنمنٹ کے ساتھ جوڑتا ہے، جو درخواست اور آرکیٹیکچرل ضروریات، کارپوریٹ معیارات، اور دوبارہ قابل استعمال اثاثوں کا ایک مجموعہ تیار کرنے کی خواہش سے محدود ہے جس کی واپسی سرمایہ کاری سے بہت زیادہ ہے۔ (دوبارہ استعمال کی پیمائش فریم لائبریریوں کے کل سائز کو نتیجے میں بننے والی تعمیرات کے کل سائز میں تقسیم کرکے، اور/یا انفرادی فریم کے دوبارہ استعمال کی گنتی کرکے کی جاتی ہے۔) ایک پختہ فریم لائبریری لاگت کی تاثیر میں اضافہ کرتی ہے کیونکہ سافٹ ویئر پروجیکٹ کے اسٹیک ہولڈرز اپنی توجہ کسی نظام کی نئی چیزوں تک محدود رکھ سکتے ہیں، اس کے زیادہ تر مضبوط اجزاء اور فن تعمیر کو نظر انداز کر سکتے ہیں۔ ایک پختہ لائبریری جامد نہیں ہوتی۔ فریم انجینئرز، سلیکٹ کمانڈ کا استعمال کرتے ہوئے، دوبارہ استعمال کے قابل فریموں کو غیر معینہ مدت تک تیار کر سکتے ہیں، فریموں کے پچھلے ورژن سے تیار کردہ پروگراموں میں ریٹرو فٹ کی ضرورت کے بغیر نئی ضروریات کو پورا کر سکتے ہیں۔ فوٹ نوٹس سورس کوڈ جنریشن