Extensibility
ایکسٹینسیبلٹی ایک سافٹ ویئر انجینئرنگ اور سسٹمز ڈیزائن کا اصول ہے جو مستقبل کی ترقی کے لیے فراہم کرتا ہے۔ توسیع پذیری کسی نظام کو بڑھانے کی صلاحیت اور توسیع کو نافذ کرنے کے لیے درکار کوشش کی سطح کا ایک پیمانہ ہے۔ توسیع نئی فعالیت کے اضافے یا موجودہ فعالیت میں ترمیم کے ذریعے ہو سکتی ہے۔ یہ اصول موجودہ نظام کے افعال کو خراب کیے بغیر بہتری فراہم کرتا ہے۔ ایک ایکسٹینسیبل سسٹم وہ ہوتا ہے جس کا اندرونی ڈھانچہ اور ڈیٹا فلو کم سے کم ہوتا ہے یا نئی یا ترمیم شدہ فعالیت سے متاثر نہیں ہوتا ہے، مثال کے طور پر تخلیق کار یا دوسرے پروگرامرز کے ذریعہ سسٹم کے رویے کو تبدیل کرتے وقت اصل سورس کوڈ کو دوبارہ مرتب کرنا یا تبدیل کرنا غیر ضروری ہو سکتا ہے۔ چونکہ سافٹ ویئر سسٹم طویل عرصے تک زندہ رہتے ہیں اور صارفین کی طرف سے طلب کردہ نئی خصوصیات اور اضافی فعالیتوں کے لیے ان میں ترمیم کی جائے گی، تو توسیع پذیری ڈویلپرز کو سافٹ ویئر کی صلاحیتوں کو بڑھانے یا ان میں اضافہ کرنے کے قابل بناتی ہے اور منظم دوبارہ استعمال کی سہولت فراہم کرتی ہے۔ اس کے کچھ طریقوں میں صارفین کے اپنے پروگرام کے معمولات کو داخل کرنے کی اجازت دینے کی سہولیات اور ڈیٹا کی نئی اقسام کی وضاحت کرنے کے ساتھ ساتھ نئے فارمیٹنگ مارک اپ ٹیگز کی وضاحت کرنے کی صلاحیتیں شامل ہیں۔ سافٹ ویئر انجینئرنگ میں ایکسٹینسیبل ڈیزائن یہ قبول کرنا ہے کہ ہر چیز کو پہلے سے ڈیزائن نہیں کیا جا سکتا۔ اس کے بجائے ایک ہلکا سافٹ ویئر فریم ورک فراہم کیا گیا ہے جو تبدیلیوں کی اجازت دیتا ہے۔ کم ہم آہنگی اور اعلی جوڑے سمیت روایتی سافٹ ویئر ڈویلپمنٹ کے مسائل سے بچنے اور مسلسل ترقی کی اجازت دینے کے لیے، کام کے عناصر کو قابل فہم اکائیوں میں الگ کرنے کے اصول پر عمل کرتے ہوئے، ایکسٹینسیبلٹی کے عنصر کو کھونے سے روکنے کے لیے چھوٹے کمانڈ بنائے جاتے ہیں۔ توسیع پذیر ڈیزائن کے لیے تبدیلی کو اپنانا ضروری ہے، جس میں اضافہ مسلسل ہوگا۔ نظام کا ہر حصہ کسی بھی تبدیلی کے ساتھ قابل عمل ہوگا، اور اضافے کے ذریعے تبدیلی کا خیال پورے نظام کے ڈیزائن کا مرکز ہے۔ ایکسٹینسیبل ڈیزائن بار بار دوبارہ ترجیح کی حمایت کرتا ہے اور درخواست پر چھوٹے مراحل میں فعالیت کو نافذ کرنے کی اجازت دیتا ہے، جو کہ ایجائل طریقہ کار اور تکراری ترقی کے ذریعہ تجویز کردہ اصول ہیں۔ توسیع پذیری ترقی کے دوران کم اور صاف انحصار عائد کرتی ہے، ساتھ ہی کم جوڑی اور زیادہ مربوط تجریدی، نیز اچھی طرح سے متعین انٹرفیس۔ اہمیت چستی انسانی مظاہر کی وجہ سے تمام سافٹ ویئر کی بنیاد پر مضمر ہے کیونکہ سافٹ ویئر ایک "ارتقا پذیر وجود" ہے جسے انسانوں کے ذریعہ تیار اور برقرار رکھا جاتا ہے، جس سے سافٹ ویئر کی تفصیلات اور نفاذ میں جاری نظام تبدیلیاں آتی ہیں۔ سافٹ ویئر کے اجزاء اکثر غیر متعلقہ فریقوں کے ذریعہ آزادانہ طور پر تیار اور تعینات کیے جاتے ہیں۔ موافقت پذیر سافٹ ویئر کے اجزاء ضروری ہیں کیونکہ بیرونی دکانداروں کے اجزاء کے کسی مخصوص تعیناتی کے منظر نامے میں فٹ ہونے کا امکان نہیں ہے، جس سے مینوفیکچرر کے علاوہ تیسرے فریق کے صارفین کو بھی مدنظر رکھا جاتا ہے۔ بہت سے سافٹ ویئر سسٹمز اور سافٹ ویئر پروڈکٹ لائنز ایک بیس سسٹم سے اخذ کیے جاتے ہیں، جو ایک مشترکہ سافٹ ویئر فن تعمیر یا بعض اوقات فعالیت اور عمل درآمد کے بڑے حصوں کا اشتراک کرتے ہیں لیکن ممکنہ طور پر مختلف اجزاء سے لیس ہوتے ہیں جن کے لیے ایک ایکسٹینسیبل بیس سسٹم کی ضرورت ہوتی ہے۔ ایسے سافٹ ویئر سسٹم بنانا جو آزادانہ طور پر توسیع پذیر ہوں، ایک اہم چیلنج ہے۔ ایک آزادانہ طور پر توسیعی نظام نہ صرف دو لوگوں کو آزادانہ طور پر نظام میں توسیعات تیار کرنے کی اجازت دیتا ہے، بلکہ دونوں توسیعات کو عالمی سالمیت کی جانچ کے بغیر جوڑنے کی بھی اجازت دیتا ہے۔ ایکسٹینسیبلٹی میکانزم کی درجہ بندی سافٹ ویئر ایکسٹینسیبلٹی کی تین مختلف شکلیں ہیں: وائٹ باکس ایکسٹینسیبلٹی، گرے باکس ایکسٹینسیبلٹی، اور بلیک باکس ایکسٹینسیبلٹی، جو اس بات پر مبنی ہیں کہ کون سے نمونے اور ان کو کس طرح تبدیل کیا جاتا ہے۔ وائٹ باکس توسیع پذیری کی اس شکل کے تحت، سافٹ ویئر سسٹم کو سورس کوڈ میں ترمیم کرکے بڑھایا جا سکتا ہے، اور یہ سب سے زیادہ لچکدار اور کم سے کم پابند شکل ہے۔ توسیع پذیری کی دو ذیلی شکلیں ہیں، اوپن باکس ایکسٹینسیبلٹی اور گلاس باکس ایکسٹینسیبلٹی، اس بات پر منحصر ہے کہ تبدیلیوں کا اطلاق کیسے ہوتا ہے۔ اوپن باکس تبدیلیاں اوپن باکس ایکسٹینسیبل سسٹمز میں جارحانہ انداز میں انجام دی جاتی ہیں۔ اصل سورس کوڈ کو براہ راست ہیک کیا جا رہا ہے۔ اس کے لیے دستیاب سورس کوڈ اور ترمیم کے اجازت یافتہ سورس کوڈ لائسنس کی ضرورت ہوتی ہے۔ اوپن باکس ایکسٹینسیبلٹی بگ فکسنگ، اندرونی کوڈ ری فیکٹرنگ، یا سافٹ ویئر پروڈکٹ کے اگلے ورژن کی تیاری کے لیے سب سے زیادہ متعلقہ ہے۔ گلاس باکس گلاس باکس ایکسٹینسیبلٹی (جسے فن تعمیر سے چلنے والا فریم ورک بھی کہا جاتا ہے) سافٹ ویئر سسٹم کو دستیاب سورس کوڈ کے ساتھ بڑھانے کی اجازت دیتا ہے، لیکن ہو سکتا ہے کہ کوڈ میں ترمیم کی اجازت نہ دی جائے۔ توسیعات کو اصل نظام سے اس طرح الگ کرنا پڑتا ہے کہ اصل نظام متاثر نہ ہو۔ ایکسٹینسیبلٹی کی اس شکل کی ایک مثال آبجیکٹ پر مبنی ایپلی کیشن فریم ورک ہے جو عام طور پر وراثت اور متحرک بائنڈنگ کا استعمال کرکے ایکسٹینسیبلٹی حاصل کرتے ہیں۔ بلیک باکس ایکسٹینسیبلٹی میں (جسے ڈیٹا پر مبنی فریم ورک بھی کہا جاتا ہے) نظام کے نفاذ کے بارے میں کوئی تفصیلات تعیناتی یا ایکسٹینشنز کو نافذ کرنے کے لیے استعمال نہیں کی جاتی ہیں۔ صرف انٹرفیس کی وضاحتیں فراہم کی جاتی ہیں۔ اس قسم کا نقطہ نظر مختلف وائٹ باکس طریقوں سے زیادہ محدود ہے۔ بلیک باکس ایکسٹینشنز عام طور پر سسٹم کنفیگریشن ایپلی کیشنز یا اجزاء کے انٹرفیس کی وضاحت کرکے ایپلی کیشن سے متعلق مخصوص اسکرپٹنگ زبانوں کے استعمال کے ذریعے حاصل کی جاتی ہیں۔ گرے باکس گرے باکس ایکسٹینسیبلٹی خالص وائٹ باکس اور خالص بلیک باکس اپروچ کے درمیان ایک سمجھوتہ ہے، جو سورس کوڈ کی نمائش پر مکمل طور پر انحصار نہیں کرتا ہے۔ پروگرامرز کو سسٹم کا اسپیشلائزیشن انٹرفیس دیا جا سکتا ہے جس میں اصلاح اور وضاحتیں کے لیے تمام دستیاب تجریدوں کی فہرست دی جاتی ہے کہ ایکسٹینشنز کو کیسے تیار کیا جانا چاہیے۔ ایکسٹینسیبلٹی بمقابلہ ری یوز ایبلٹی ایکسٹینسیبلٹی اور ری یوز ایبلٹی میں بہت سی خصوصیات مشترک ہیں، جن میں کم جوڑی، ماڈیولرٹی اور ہائی رسک عناصر کی بہت سے مختلف سافٹ ویئر سسٹمز کے لیے تعمیر کرنے کی صلاحیت شامل ہے، جو اکثر مشترکہ عناصر کا اشتراک کرنے والے سافٹ ویئر سسٹمز کے مشاہدے سے متاثر ہوتی ہے۔ توسیع پذیری کے ساتھ دوبارہ استعمال کی اہلیت ایک ٹیکنالوجی کو کم ترقی اور دیکھ بھال کے وقت کے ساتھ ساتھ وشوسنییتا اور مستقل مزاجی میں اضافے کے ساتھ دوسرے پروجیکٹ میں منتقل کرنے کی اجازت دیتی ہے۔ سیکیورٹی جدید آپریٹنگ سسٹم ڈیوائس ڈرائیوروں اور لوڈیبل کرنل ماڈیولز کے ذریعے توسیع پذیری کی حمایت کرتے ہیں۔ بہت سی جدید ایپلی کیشنز پلگ انز، توسیعی زبانوں، ایپلٹس وغیرہ کے ذریعے توسیع پذیری کی حمایت کرتی ہیں۔ توسیع پذیری میں اضافے کا رجحان سافٹ ویئر سیکیورٹی کو منفی طور پر متاثر کرتا ہے۔ سی جی آئی ان بنیادی ذرائع میں سے ایک ہے جس کے ذریعے ویب سرور توسیع فراہم کرتے ہیں۔ کچھ لوگ سی جی آئی اسکرپٹ کو "ایک بہت بڑا حفاظتی سوراخ" کے طور پر دیکھتے ہیں۔ ایکسٹینسیبل پروگرامنگ پولیمورفزم سافٹ ویئر میٹرک اسکیل ایبلٹی XML حوالہ جات بیرونی لنکس سافٹ ویئر فن تعمیر fr: ایکسٹینسیبلٹی