2.12

انگریزی میں دیکھیں

2.12 سافٹ ویئر ماڈلز اور طریقے

جائزہ اور محرکات

سافٹ ویئر ماڈل نظام کی ایک سوچی سمجھی سادگی ہے، جو کسی مخصوص سوال کا جواب دینے کے لیے بنائی جاتی ہے۔ طریقہ سافٹ ویئر بنانے کا نظم و ضبط والا انداز ہے، ان ماڈلز سمیت جو وہ راستے میں استعمال کرتا ہے۔ مل کر وہ سافٹ ویئر انجینئرنگ باڈی آف نالج (SWEBOK) کا علمی شعبہ بناتے ہیں، کیونکہ یہ وہ ذہنی آلات ہیں جن سے آپ نظام بنانے سے پہلے، دوران اور بعد میں اس پر استدلال کرتے ہیں۔ UML (یونیفائیڈ ماڈلنگ لینگویج) کا کلاس ڈایاگرام، اینٹٹی-ریلیشن شپ ڈایاگرام (ERD)، اسٹیٹ مشین، رسمی تصریح، اور پھینک دینے والا پروٹو ٹائپ سب ماڈلز ہیں۔ واٹر فال، پروٹو ٹائپنگ، رسمی ڈویلپمنٹ، اور ایجائل سب طریقے ہیں۔

ماڈلز کی زحمت کیوں؟ کیونکہ انسان کی کام کرنے والی یادداشت چھوٹی ہے اور سافٹ ویئر نظام بڑے۔ کوئی ایک لاکھ لائنوں کا نظام اپنے ذہن میں نہیں رکھ سکتا، اس لیے ہم تصاویر بناتے اور تجریدیں لکھتے ہیں جو ایک وقت میں ایک پہلو دکھائیں: ڈیٹا، کنٹرول کا بہاؤ، حالتیں، باہمی تعاملات۔ ماڈل کا مقصد کبھی کوڈ سے وفادار ہونا نہیں؛ اس کا مقصد فیصلے کے لیے موزوں ہونا ہے۔ اچھا ماڈل بالکل وہی دکھاتا ہے جو آپ کو کچھ طے کرنے کے لیے چاہیے، اور باقی سب چھپا دیتا ہے۔

بڑی ٹیموں پر حقیقی داؤ ہم آہنگی اور ابلاغ ہیں۔ جب سینکڑوں انجینئر، آرکیٹیکٹ، تجزیہ کار اور آڈیٹر ایک نظام پر کام کرتے ہیں تو مشترک ماڈلز وہ مشترک زمین ہیں جہاں وہ ڈیزائن، تقاضوں اور خطرے پر مذاکرات کرتے ہیں۔ اس لیے ماڈلنگ کو ایسا آلہ سمجھیں جس کا کوئی کام ہے۔ یہ تب ثمر دیتی ہے جب ماڈل اس غلطی سے سستا ہو جسے وہ روکتا ہے۔ یہ ضیاع بن جاتی ہے جب آپ اسے اس کی خاطر بنائیں، اسے باسی ہونے کے بہت بعد تک رکھیں، یا اسے اس فیصلے سے آگے پھیلائیں جس کی خدمت کے لیے وہ بنا تھا۔ ماڈلنگ سافٹ ویئر کے تقاضوں (باب 2.8)، سافٹ ویئر ڈیزائن کے اصولوں (باب 2.2)، فن تعمیر اور اس کے اشاریوں جیسے C4 اور arc42 (باب 3.1)، اور ایجائل کام کے طریقوں (باب 10.7) سے سختی سے جڑی ہے۔

بنیادی اصول

  • ہر ماڈل کا ایک مقصد ہے؛ اگر آپ اس فیصلے کا نام نہیں لے سکتے جسے ماڈل آگاہ کرتا ہے تو اسے نہ بنائیں۔
  • تجرید ماڈلنگ کا بنیادی عمل ہے: مقصد کے لیے جو اہم ہے وہ شامل کریں، باقی چھوڑ دیں۔
  • ماڈلز کے اندر اور ان کے درمیان یکسانیت اہم ہے؛ متضاد ماڈلز نہ ہونے سے بدتر ہیں۔
  • ماڈلز پہلے ابلاغ کے آرٹیفیکٹس ہیں؛ ان کا سامعین ان کا اشاریہ اور تفصیل طے کرتا ہے۔
  • سب سے ہلکا ماڈل ترجیح دیں جو سوال کا جواب دے؛ تفصیل بڑھانے کی اٹھانے کی لاگت ہے۔
  • ماڈل اتنا ہی اچھا ہے جتنا اس کا تجزیہ؛ بغیر جانچا ماڈل غیر ٹیسٹ شدہ مفروضہ ہے۔
  • طریقہ مسئلے کی غیر یقینی، خطرے، اور ناکامی کے نتیجے کے مطابق چنیں۔

سفارشات

تجرید، مقصد اور یکسانیت کے ساتھ ماڈل بنائیں

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

سوال کے مطابق ساختی یا رویے کے ماڈل چنیں

ساختی ماڈلز استعمال کریں جو دکھائیں کہ نظام کس سے بنا ہے اور حصے کیسے جڑے ہیں: کلاس ڈایاگرام، جزو کے ڈایاگرام، اور ڈیٹا کی ساخت کے لیے اینٹٹی-ریلیشن شپ ڈایاگرام۔ رویے کے ماڈلز استعمال کریں جو دکھائیں کہ نظام وقت کے ساتھ کیا کرتا ہے: بامعنی لائف سائیکل والی اشیا کے لیے اسٹیٹ مشینیں، اجزا کے پار تعاملات کے لیے سیکوئنس ڈایاگرام، اور ورک فلو اور کاروباری عمل کے لیے ایکٹیویٹی ڈایاگرام۔ وہ ایک اشاریہ چنیں جو آپ کے سامنے کا فیصلہ ظاہر کرے۔ زیادہ تر نظاموں کو صرف چند اقسام کے ڈایاگرام چاہییں، منتخب طور پر بنائے گئے، ہر چیز پر لاگو UML کا پورا کیٹلاگ نہیں۔

ماڈلز کا تجزیہ کریں، صرف انہیں نہ بنائیں

ماڈل اپنی جگہ تجزیے سے کماتا ہے، صرف ڈرائنگ سے نہیں۔ اسٹیٹ مشین کو ناقابل رسائی حالتوں، غائب ٹرانزیشنز، اور ڈیڈ لاک کے لیے جانچیں۔ ERD کو نارملائزیشن کے مسائل اور یتیم تعلقات کے لیے جانچیں۔ غائب خرابی کے راستے ڈھونڈنے کے لیے سیکوئنس ڈایاگرام کو تقاضوں کے مقابل چلائیں۔ اپنے ماڈلز کا شعبے کے ان ماہرین کے ساتھ ریویو کریں جو دیکھ سکتے ہیں کہ کیا غلط ہے۔ اور جہاں ناکامی کی لاگت زیادہ ہو وہاں اندازے کے بجائے ٹول کی مدد والا تجزیہ (ماڈل چیکرز، مطابقت کے چیکرز، سمولیشن) استعمال کریں۔

ڈیفالٹ کے طور پر ہیورسٹک طریقے اپنائیں

زیادہ تر سافٹ ویئر ہیورسٹک طریقوں سے بنتا ہے: تجربے پر مبنی، تکراری طریقے جو ماڈلز غیر رسمی طور پر استعمال کرتے اور نتائج کو ثبوت کے بجائے توقعات کے مقابل پرکھتے ہیں۔ زیادہ تر کاروباری اور سرکاری نظاموں کے لیے یہی بالکل درست ہے: تقاضے ارتقا کرتے ہیں، اور نقص عموماً قابل بحالی ہوتا ہے۔ ہیورسٹک طریقے ایجائل (باب 10.7) سے فطری طور پر جڑتے ہیں: ٹیم کو ہم آہنگ کرنے کے لیے بس اتنا ماڈل کریں، پھر بنائیں اور سیکھیں۔

رسمی طریقے اعلیٰ نتیجے والے مرکز کے لیے محفوظ رکھیں

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

غیر یقینی ختم کرنے کے لیے پروٹو ٹائپنگ استعمال کریں

جب تقاضے یا عملی اہلیت واضح نہ ہو تو سیکھنے کے لیے پروٹو ٹائپ بنائیں، پھر جان بوجھ کر فیصلہ کریں کہ اسے ارتقا دیں یا ضائع کریں۔ پھینک دینے والے پروٹو ٹائپ سوال کو سستے میں کھوجتے ہیں اور پھر حذف کر دیے جاتے ہیں۔ ارتقائی پروٹو ٹائپ پروڈکٹ بن جاتے ہیں اور انہیں پروڈکشن کے معیار پر بنانا ہوتا ہے۔ کلاسیکی ناکامی پھینک دینے والے پروٹو ٹائپ کو اتفاقاً پروڈکشن میں پھسلنے دینا ہے۔ اس لیے بنانے سے پہلے پروٹو ٹائپ کی قسم کا نام لیں۔

طریقہ خطرے سے ملائیں، فیشن سے نہیں

طریقے مسئلے کی غیر یقینی اور ناکامی کے نتیجے سے چنیں۔ اعلیٰ غیر یقینی پروٹو ٹائپنگ اور ایجائل تکرار کی حمایت کرتی ہے۔ اعلیٰ نتیجہ رسمی تجزیے اور سخت توثیق کی حمایت کرتا ہے۔ دونوں رکھنے والے نظام کو بصورت دیگر ایجائل لفافے کے اندر اہم رسمی مرکز چاہیے۔ آپ جو بھی کریں، طریقہ محض اس لیے نہ اپنائیں کہ وہ معزز ہے یا فروخت کنندہ بیچ رہا ہے۔

سمجھوتے: فوائد اور نقصانات

ماڈل یا طریقہاچھی طرح لاگو ہو توناکامی کا انداز
ساختی ماڈلز (UML، ERD)حصوں اور ڈیٹا کی مشترک تصویرڈایاگرام کا پھیلاؤ؛ کوڈ سے بھٹکاؤ
رویے کے ماڈلز (حالت، سیکوئنس، ایکٹیویٹی)وقت، حالتوں اور کنارے کے معاملات ظاہر کرتے ہیںحد سے زیادہ تفصیلی ڈایاگرام جو کوئی نہ پڑھے
ہیورسٹک طریقےتیز، لچکدار، زیادہ تر نظاموں کے لیے موزوںبے نظم؛ چھپے مفروضے
رسمی طریقےاہم مراکز کے لیے ثابت شدہ خصوصیاتبلند لاگت؛ پورے نظام پر غلط لاگو
پروٹو ٹائپنگسستا سیکھنا؛ خطرہ جلد ختم کرتا ہےپھینک دینے والا کوڈ پروڈکشن میں ترقی پاتا ہے
ایجائل طریقےبدلتے تقاضوں کے مطابق ڈھلتے ہیںسخت مسائل کے لیے درکار ماڈلنگ چھوڑ دیتے ہیں

بار بار آنے والا کھنچاؤ سختی اور رفتار کے درمیان ہے۔ بہت کم ماڈلنگ چھپے مفروضے پروڈکشن میں بھیجتی ہے۔ بہت زیادہ ماڈلنگ ایسے ڈایاگراموں پر محنت جلاتی ہے جو کبھی فیصلے کو آگاہ نہیں کرتے اور کوڈ بدلتے ہی سڑ جاتے ہیں۔ اس کا کوئی مقررہ ڈوز نہیں، صرف تناسب کا اصول: ماڈل یا طریقے میں اتنی سرمایہ کاری کریں جتنی غیر یقینی وہ ختم کرتا ہے اور فیصلہ غلط ہونے کی لاگت۔ ادائیگیوں کا انجن اور مارکیٹنگ کی مائیکرو سائٹ مختلف برتاؤ کے مستحق ہیں۔

اپنی ٹیم کے ساتھ بحث کے سوالات

  1. کیا ہم اپنے ماڈلز کا تجزیہ کرتے ہیں، یا بس انہیں بناتے اور آگے بڑھ جاتے ہیں؟ ماڈل اپنی جگہ تجزیے سے کماتا ہے، موجود ہونے سے نہیں: وہ اسٹیٹ مشین جسے آپ نے کبھی ناقابل رسائی حالتوں یا غائب ٹرانزیشنز کے لیے نہیں جانچا وہ ڈایاگرام کے لباس میں ملبوس غیر ٹیسٹ شدہ مفروضہ ہے۔ بڑی ٹیم میں یہی وہ جگہ ہے جہاں حقیقی نقائص چھپتے ہیں، کیونکہ معقول لگنے والی تصویر پر ٹھیک تب بھروسہ کیا جاتا ہے جب کسی نے اسے تقاضوں کے مقابل چلا کر غائب خرابی کا راستہ یا یتیم تعلق نہیں ڈھونڈا۔ اجلاس میں اپنا سب سے اہم رویے کا ماڈل لائیں اور اسے توڑنے کی کوشش کریں: کون سی ٹرانزیشن غیر متعین ہے، کس حالت کا کوئی اخراج نہیں، کس سیکوئنس میں ٹائم آؤٹ نہیں؟ جہاں ناکامی کی لاگت زیادہ ہو وہاں جواب آپ کو اندازے کے بجائے ٹول کی مدد والے تجزیے (ماڈل چیکرز، مطابقت کے چیکرز، سمولیشن) کی طرف دھکیلے، کیونکہ اہم مرکز کو ماڈل کرنے کا پورا مقصد خامی کو پروڈکشن میں نہیں بلکہ وائٹ بورڈ پر ڈھونڈنا ہے۔

  2. جب ہمارے دو ماڈل متفق نہ ہوں تو کون سا جیتتا ہے، اور تضاد کو کون نوٹس کرتا ہے؟ ماڈلز کے اندر اور ان کے درمیان یکسانیت اہم ہے، اور متضاد ماڈلز نہ ہونے سے بدتر ہیں، کیونکہ لوگ دونوں پر عمل کرتے ہیں۔ بڑے نظام میں ڈیٹا ماڈل کی اینٹٹیز، ڈیزائن کی کلاسیں، اور تقاضوں کے اسما خاموشی سے الگ ہو جاتے ہیں جب مختلف ٹیمیں مختلف آرٹیفیکٹس اپ ڈیٹ کرتی ہیں، اور پہلی علامت اکثر پروڈکشن بگ ہوتا ہے جہاں دو اجزا اس بارے میں متفق نہ تھے کہ کوئی چیز کیا ہے۔ مثال لائیں: مرکزی تصور چنیں اور جانچیں کہ ERD، کوڈ، اور تقاضے واقعی اس کی شکل اور لائف سائیکل پر متفق ہیں یا نہیں۔ اگر نہیں تو طے کریں کہ کون سا آرٹیفیکٹ مستند ہے اور دوسروں کو ہم قدم رکھنے کا ذمہ دار کون ہے، اور ٹیم سے جھوٹ بولتے رہنے والے باسی ماڈل کو رہنے دینے کے بجائے ماڈل حذف کرنے کو تیار رہیں۔

  3. ہمارے نظام کا کون سا مرکز، اگر غلط ہو، حقیقی پیسہ کھوتا ہے یا کسی کو نقصان پہنچاتا ہے، اور کیا اسے وہ سختی ملتی ہے جس کا وہ مستحق ہے؟ اس باب کی مرکزی چال طریقے کو خطرے سے ملانا ہے: قابل بحالی اکثریت کے لیے ہیورسٹک اور ایجائل طریقے، چھوٹے اعلیٰ نتیجے والے مرکز کے لیے رسمی تصریح اور توثیق، اور واقعی غیر یقینی چیزوں کے لیے سستی پروٹو ٹائپنگ۔ ناکامی کے انداز متوازی اور دونوں مہنگے ہیں: مارکیٹنگ کی مائیکرو سائٹ پر رسمی طریقے لگانا پیسہ جلاتا ہے، اور تصفیے کے انجن یا اہلیت کے قواعد کو عام ایجائل کام سمجھنا تباہ کن، ناقابل واپسی نقص کو دعوت دیتا ہے۔ اپنے نظام کا نقشہ لائیں اور نشان لگائیں کہ خرابی کہاں تباہ کن بمقابلہ قابل بحالی ہے، اور تقاضے کہاں یقینی بمقابلہ نامعلوم ہیں۔ جواب کو آپ کی ماڈلنگ کی سرمایہ کاری وہاں مرکوز کرنی چاہیے جہاں پیسہ اور ابہام ہیں، اور باقی ہر جگہ واضح طور پر روک رکھنی چاہیے، تاکہ اہم رسمی مرکز بصورت دیگر ایجائل لفافے کے اندر بیٹھ سکے بغیر کسی طریقے کے دوسرے کی حدود میں رسنے کے۔

  4. ہم کوڈ لکھنے سے پہلے کتنی ماڈلنگ کرتے ہیں، اور کیا وہ خوراک ہمارے سامنے کی غیر یقینی کے ساتھ بدلتی ہے؟ آگے کا بڑا ڈیزائن اور بالکل ڈیزائن نہ ہونا دونوں ناکامی کے انداز ہیں، اور درست خوراک ان کے بیچ ہے، اس سے طے ہوتی ہے کہ ماڈل واقعی کتنی غیر یقینی ختم کرتا ہے۔ بڑی ٹیم پر دباؤ دونوں طرف چلتا ہے: نظم و نسق کا عمل کوڈ سے پہلے ڈایاگراموں کا پورا سیٹ مانگ سکتا ہے، سب سے کم معلومات کے ساتھ کیے فیصلے مقفل کرتے ہوئے، جبکہ ترسیل کا دباؤ ٹیم کو وہ ایک اسٹیٹ مشین چھوڑنے پر دھکیل سکتا ہے جو مہنگا کنارے کا معاملہ پکڑ لیتی۔ اپنے آخری دو منصوبے لائیں اور جو ماڈلز بنائے انہیں ان میں چھانٹیں جنہوں نے حقیقی فیصلے کو آگاہ کیا اور ان میں جو صرف اس لیے بنے کہ سانچہ مانگتا تھا۔ انٹرپرائز اور سرکاری پروگراموں میں، جہاں مرحلے کا دروازہ یا منظوری کا بورڈ اکثر آگے دستاویزات لازمی کرتا ہے، ایسی ماڈلنگ کے حق میں دلیل دینے کو تیار رہیں جو مقررہ قابل ترسیل فہرست کے بجائے خطرے کا پیچھا کرے، تاکہ ادائیگیوں کے مرکز کو اس کی سختی ملے اور اندرونی رپورٹنگ ٹول ان ڈایاگراموں میں نہ ڈوبے جنہیں کوئی نہیں پڑھتا۔

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

  6. پروٹو ٹائپ بنانے سے پہلے کیا ہم جان بوجھ کر طے کرتے ہیں کہ وہ پھینک دینے والا ہے یا ارتقائی، اور کیا ہم خود کو اس انتخاب کا پابند رکھتے ہیں؟ کلاسیکی، مہنگی ناکامی وہ پھینک دینے والا پروٹو ٹائپ ہے جو خاموشی سے پروڈکشن میں پھسل جاتا ہے کیونکہ وہ ڈیمو اچھا ہوا اور کسی نے پہلے اس کی قسم کا نام نہیں لیا۔ کھنچاؤ حقیقی ہے: پھینک دینے والے پروٹو ٹائپ سستے ترین ممکن سیکھنا خریدتے ہیں اور انہیں حذف ہونا چاہیے، جبکہ ارتقائی پروٹو ٹائپ پروڈکٹ بن جاتے ہیں اور پہلی لائن سے پروڈکشن کے معیار پر بنانے ہوتے ہیں، اور دونوں کو الجھانا یا دوبارہ کام ضائع کرتا ہے یا نازک کوڈ ایسے کردار میں بھیجتا ہے جس کے لیے وہ انجینئر نہیں ہوا۔ حالیہ پروٹو ٹائپ لائیں اور پوچھیں کہ بنانے سے پہلے کیا طے ہوا، اسے ترقی دینے یا ضائع کرنے کا اختیار کس کے پاس تھا، اور کیا وہ فیصلہ ترسیل کے دباؤ میں بچا۔ حکومت اور دوسرے جوابدہ ماحول میں، جہاں شہریوں کا سامنا کرنے والا نظام شفافیت اور قابل اعتمادی کی ذمہ داریاں اٹھاتا ہے، اتفاقی ترقی کو کنٹرول کی ناکامی سمجھیں: پروٹو ٹائپ کی قسمت پہلے سے طے کریں، اور کامیاب پھینک دینے والے کو ضائع کرنا ایسا نتیجہ بنائیں جس کا جشن منایا جائے، ضیاع جس سے بچا جائے نہیں۔

شعبہ جاتی نقطۂ نظر

اسٹارٹ اپ۔ وائٹ بورڈ پر ماڈل کریں، تصویر لیں، اور آگے بڑھ جائیں۔ آپ کا سب سے کم یاب وسیلہ انجینئرنگ کی توجہ ہے، اس لیے ماڈل تک تب پہنچیں جب وہ اس غلطی سے سستا ہو جسے وہ روکتا ہے: بلنگ کے کنارے کے معاملات کوڈ کرنے سے پہلے سبسکرپشن کی اسٹیٹ مشین، نہ کہ ایسی پروڈکٹ کے لیے UML کا پورا کیٹلاگ جو اگلے مہینے پلٹ سکتی ہو۔ ہیورسٹک اور ایجائل رہیں، رسمی طریقوں کو مکمل طور پر میز سے ہٹا دیں، اور ہر پروٹو ٹائپ کو پھینک دینے والا سمجھیں جب تک آپ شعوری طور پر اور فیصلہ نہ کریں۔

چھوٹا کاروبار۔ غالباً آپ کے پاس کوئی نہیں جس کا کام رسمی ماڈلنگ ہو، اس لیے اپنی ماڈلنگ کی مشق کھڑی کرنے کے بجائے ان ٹولز اور فریم ورکس میں پہلے سے جڑے ماڈلز پر انحصار کریں جو آپ خریدتے ہیں۔ جو چند ماڈل آپ بنائیں انہیں ٹھوس فیصلوں کے گرد رکھیں: آپ کے پاس کون سا گاہک ڈیٹا ہے اس پر اتفاق کے لیے سادہ ڈیٹا ماڈل کا خاکہ، اس ایک ورک فلو کے لیے حالت کا ڈایاگرام جو ٹوٹنے پر آپ کا گاہک کھو دیتا ہے۔ اپنا ڈیٹا ماڈل بنانے اور دستاویزی کرنے کے بجائے ثابت شدہ ڈیٹا ماڈل والی خریدی ہوئی پروڈکٹ کو ترجیح دیں، اور جو بنائیں اسے اتنا ہلکا رکھیں کہ ایک شخص برقرار رکھ سکے۔

بڑا ادارہ۔ بنیادی مسئلہ بہت سی ٹیموں میں ہم آہنگی ہے، اس لیے مشترک ماڈلز مشترک زمین بنتے ہیں: متفقہ ڈیٹا ماڈل، مستقل اشاریہ، اور ایسا گھر جہاں ERD، C4 ڈایاگرام، اور اسٹیٹ مشینیں ملیں اور ان پر بھروسہ ہو۔ چھوٹے اشاریے کو معیاری بنائیں اور یکسانیت نافذ کریں تاکہ تقاضوں، ڈیزائن اور ڈیٹا بیس کی اینٹٹیز ٹیموں کے درمیان الگ نہ ہوں۔ رسمی تصریح اور ماڈل چیکنگ اعلیٰ نتیجے والے مراکز (تصفیہ، مصالحت، رسائی کا کنٹرول) کے لیے رکھیں، وہ ماہرانہ مہارت فنڈ کریں جو اس کا تقاضا ہے، اور ہر دستاویزی ماڈل سے اس فیصلے تک آڈٹ ٹریل رکھیں جس کا اس نے جواز دیا۔

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

مثالیں

اسٹارٹ اپ۔ سبسکرپشن بلنگ پروڈکٹ بنانے والا چھوٹا اسٹارٹ اپ کوڈ لکھنے سے پہلے سبسکرپشن کا لائف سائیکل (آزمائش، فعال، واجب الادا، منسوخ، دوبارہ فعال) وائٹ بورڈ پر اسٹیٹ مشین کے طور پر خاکہ کرتا ہے۔ ڈایاگرام سے گزرتے ہوئے وہ نوٹس کرتے ہیں کہ انہوں نے کبھی متعین نہیں کیا کہ واجب الادا اکاؤنٹ کی ادائیگی آخرکار کلیئر ہو تو کیا ہوتا ہے، ایسا کنارے کا معاملہ جو حقیقی گاہکوں کو بیچ میں معلق چھوڑ دیتا۔ وہ پانچ منٹ کا ماڈل پروڈکشن کا سر درد بچاتا ہے، اور وہ بھاری ڈایاگرام ٹول برقرار رکھنے کے بجائے اس کی تصویر لیتے ہیں۔ باقی ہر جگہ وہ ایجائل رہتے اور ہم آہنگ کرنے کو بس اتنا ماڈل کرتے ہیں، کیونکہ ان کے پیمانے پر نقص قابل بحالی ہے اور رسمی طریقے خالص لاگت ہوتے۔

بڑا ادارہ۔ ایک عالمی بینک نیا ادائیگیوں کا پلیٹ فارم بناتا ہے۔ ٹیم اکاؤنٹس، لیجر اور پیغام رسانی کی ٹیموں کے پار مشترک ڈیٹا ماڈل پر اتفاق کے لیے اینٹٹی-ریلیشن شپ ڈایاگرام، اور سروسز کیسے ایک دوسرے میں فٹ بیٹھتی ہیں دکھانے کے لیے C4 ڈایاگرام (باب 3.1) استعمال کرتی ہے۔ وہ لین دین کے لائف سائیکل (زیر التوا، کلیئر، تصفیہ شدہ، الٹایا گیا، متنازعہ) کو واضح اسٹیٹ مشین کے طور پر ماڈل کرتے ہیں، اور تجزیہ ظاہر کرتا ہے کہ جزوی واپسی کی ٹرانزیشن غائب ہے۔ خلا پروڈکشن میں نہیں، وائٹ بورڈ پر ٹھیک ہو جاتا ہے۔ سیکوئنس ڈایاگرام غائب ٹائم آؤٹ اور دوبارہ کوشش کے راستے سامنے لانے کے لیے تصفیے کے بہاؤ کو تقاضوں (باب 2.8) کے مقابل چلاتے ہیں۔ روزمرہ ترسیل ایجائل ہے، مگر مرکزی مصالحت کا الگورتھم، جہاں غلطی کا مطلب حقیقی پیسے کا نقصان ہے، رسمی تصریح پاتا ہے اور نفاذ سے پہلے ماڈل چیک ہوتا ہے۔ ماڈلنگ وہاں مرکوز ہے جہاں پیسہ اور ابہام ہیں، اور باقی ہر جگہ ہلکی رکھی گئی۔

حکومت۔ ایک قومی ٹیکس ایجنسی فوائد کی تشخیص کو جدید بناتی ہے۔ چونکہ اہلیت کے قواعد قانون میں طے اور آڈٹ شدہ ہیں، ٹیم قواعد کی رسمی تصریح خالص تبدیلیوں کے طور پر لکھتی ہے اور اہم خصوصیات کی توثیق کرتی ہے، جیسے کوئی دعویدار بیک وقت اہل اور نااہل نہ ہو اور ہر کیس فیصلے تک پہنچے، تاکہ آڈیٹرز نتائج کو آئین تک سراغ لگا سکیں۔ رسمی مرکز کے ساتھ ٹیم شہریوں کے سامنے آنے والے اندراج فارم کا پھینک دینے والا پروٹو ٹائپ حقیقی صارفین کے ساتھ آزمانے کے لیے بناتی ہے۔ وہ سیکھتے ہیں کہ کثیر مرحلہ وزرڈ غلطیاں گھٹاتا ہے، پھر پروٹو ٹائپ ضائع کرتے اور اندراج کو پروڈکشن کے معیار پر دوبارہ بناتے ہیں۔ ایکٹیویٹی ڈایاگرام تربیت اور آڈٹ کے لیے کیس ورکر کے شروع سے آخر تک کے عمل کو دستاویزی کرتے ہیں۔ اعلیٰ نتیجے کے قواعد کو رسمی سختی ملتی ہے؛ غیر یقینی صارف کے تجربے کو سستی پروٹو ٹائپنگ؛ اور کسی بھی طریقے کو وہاں لاگو نہیں کیا جاتا جو دوسرے کا مقام ہے۔

کاروباری جواز: محرکات، ROI اور TCO

ماڈلنگ کی واپسی نقائص جلد ڈھونڈنے سے آتی ہے، جہاں انہیں ٹھیک کرنا کہیں سستا ہے۔ وائٹ بورڈ پر ملنے والا تضاد منٹوں کی لاگت ہے۔ پروڈکشن میں ملنے والا وہی تضاد بندش، دوبارہ کام کا پروگرام، یا ضابطے کے پابند شعبوں میں قانونی ذمہ داری کی لاگت اٹھا سکتا ہے۔ ماڈلز پائیدار ابلاغ کا کام کر کے ملکیت کی کل لاگت بھی گھٹاتے ہیں۔ جو نظام اپنے مصنفین سے زیادہ جیتا ہے، انٹرپرائز اور حکومت میں عام معاملہ، اس کی دیکھ بھال کہیں سستی ہے جب اس کا ڈیٹا ماڈل، اسٹیٹ مشینیں، اور اہم بہاؤ درست دستاویزی ہوں۔

لاگتیں حقیقی ہیں، اور آپ کو انہیں تولنا ہے۔ ماڈل بنانے میں وقت، اچھی طرح بنانے میں مہارت، اور موجودہ رکھنے میں جاری محنت لگتی ہے؛ رسمی طریقے ماہرانہ محنت جوڑتے ہیں۔ توازن کا نقطہ غیر یقینی اور نتیجے سے طے ہوتا ہے۔ جہاں دونوں کم ہوں وہاں بھاری ماڈلنگ قدر تباہ کرتی ہے اور ایجائل ہیورسٹکس جیتتی ہیں۔ جہاں دونوں میں سے کوئی بلند ہو وہاں ہدف شدہ ماڈلنگ، اور اہم مرکز کے لیے رسمی توثیق، مہنگی قسم کی ناکامی روک کر کئی گنا واپس ادا کرتی ہے۔ قیادت کے سامنے دلیل رکھنے کے لیے ماڈلنگ کی سرمایہ کاری کو مخصوص ختم کیے گئے خطرات اور طویل العمر نظاموں کی دیکھ بھال کی اہلیت سے جوڑیں۔ اور ٹریک کریں کہ ماڈلز واقعی دیکھے جاتے ہیں یا نہیں، کیونکہ غیر استعمال شدہ ماڈل خالص لاگت ہے۔

ضد نمونے اور خامیاں

  • ماڈلنگ برائے ماڈلنگ: ڈایاگرام اس لیے بنانا کہ عمل مانگتا ہے، اس لیے نہیں کہ وہ کسی فیصلے کو آگاہ کرتے ہیں۔
  • حقیقت کے طور پر بھروسہ کیے گئے باسی ماڈل: ڈایاگرام جو اب کوڈ سے میل نہیں کھاتے مگر پھر بھی ان پر انحصار ہے۔
  • آگے کا بڑا ڈیزائن: کوڈ سے پہلے تفصیلی ماڈل، سب سے کم معلومات کے ساتھ کیے فیصلے مقفل کرتے ہوئے۔
  • ڈایاگرام کا پھیلاؤ: ہر UML قسم کا یکساں اطلاق، چند مفید نظاروں کو شور میں ڈبوتے ہوئے۔
  • ہر جگہ رسمی طریقے: مہنگی توثیق وہاں لاگو کرنا جہاں ناکامی کا نتیجہ اس کا جواز نہیں دیتا۔
  • اتفاقی پروٹو ٹائپ کی ترقی: پھینک دینے والا پروٹو ٹائپ خاموشی سے پروڈکٹ کے طور پر بھیج دیا گیا۔
  • مواد پر اشاریہ: UML کی درستگی پر بحث، بجائے اس پر کہ آیا ماڈل سوال کا جواب دیتا ہے۔

پختگی کا ماڈل

  • سطح 1 (آغاز): ماڈلنگ فی البدیہہ یا غائب اور خالص ردعملی ہے؛ کسی طریقے کا نام نہیں لیا جاتا؛ ماڈلز، اگر بنیں، غیر مستقل، غیر تجزیہ شدہ، اور اجلاس ختم ہوتے ہی ترک کر دیے جاتے ہیں۔
  • سطح 2 (ترقی): کچھ ٹیمیں عام ڈایاگرام بناتی اور نام زد طریقے کی پیروی کرتی ہیں، مگر عمل ادارے بھر میں ناہموار ہے: ماڈلز اکثر رسمی طور پر بنتے ہیں، کوڈ سے بھٹکتے ہیں، اور شاذ ہی نقائص کے لیے تجزیہ کیے جاتے ہیں۔
  • سطح 3 (معیار بندی): مشترک اشاریہ، دستاویزی طریقہ منتخب کرنے کی گائیڈ، اور یکسانیت کے اصول متعین اور پورے ادارے میں نافذ ہیں؛ ماڈلز مقصد سے چنے جاتے ہیں، نظام کے ساتھ ہم قدم رکھے جاتے ہیں، نقائص کے لیے ریویو ہوتے ہیں، اور طریقہ ہر مسئلے کے خطرے سے ملایا جاتا ہے۔
  • سطح 4 (انتظام): ماڈلنگ کو بنیادی خطوط کے مقابل ناپا اور کنٹرول کیا جاتا ہے؛ ٹیمیں ٹریک کرتی ہیں کہ نفاذ سے پہلے تجزیہ کتنے نقائص پکڑتا ہے، ماڈلز کوڈ سے کتنا بھٹکتے ہیں، کیا ہر ماڈل حقیقی فیصلے کے لیے دیکھا گیا، اور طے شدہ بنیادی خط کے مقابل بچایا گیا دوبارہ کام اور سائیکل ٹائم؛ طریقے کا انتخاب ناپی گئی غیر یقینی اور نتیجے کے مطابق ڈھلتا ہے، اور اہم مراکز متفقہ کوریج کے اہداف کے مقابل رسمی طور پر توثیق ہوتے ہیں۔
  • سطح 5 (ہم آہنگی): ماڈلنگ اور طریقے کا انتخاب مسلسل بہتر اور پورے ادارے میں ترسیل اور خطرے کی منصوبہ بندی سے مربوط ہے؛ غیر یقینی اور نتیجہ بدلنے کے ساتھ سرمایہ کاری ڈھلتی ہے، ماڈلز معمول سے موجودہ رکھے جاتے، ریٹائر کیے جاتے، یا شواہد پر گہرے کیے جاتے ہیں، اور رسمی، ہیورسٹک اور پروٹو ٹائپنگ کے طریقے اس طرح ملائے جاتے ہیں کہ ہر ایک بالکل وہاں بیٹھتا ہے جہاں ثمر دیتا ہے۔

بحث کے لیے خیالات

  • اپنے آخری منصوبے کے لیے، کن ماڈلز نے حقیقی فیصلے کو آگاہ کیا، اور کون سے صرف اس لیے بنے کہ عمل نے مانگا؟
  • آپ کے نظاموں میں رسمی تصریح اپنی قیمت کہاں وصول کرے گی، اور کہاں ضیاع ہوگی؟
  • آپ کیسے طے کرتے ہیں کہ پروٹو ٹائپ پھینک دینے والا ہے یا ارتقائی، اور کیا آپ اس فیصلے کو نافذ کرتے ہیں؟
  • آپ ماڈلز کو کوڈ سے ہم قدم رکھنے سے الگ ہونے سے کیسے روکتے ہیں، یا آپ قبول کرتے ہیں کہ کچھ کو حذف ہونا چاہیے؟
  • آپ کے سیاق میں کوڈ سے پہلے ماڈلنگ کی درست مقدار کیا ہے، اور غیر یقینی کے ساتھ وہ کیسے بدلتی ہے؟
  • کون سا رویے کا ماڈل (حالت، سیکوئنس، یا ایکٹیویٹی) آپ کے حالیہ ترین پروڈکشن واقعے کو پکڑ لیتا؟

اہم نکات

  • ماڈل بامقصد تجرید ہے؛ اگر آپ اس فیصلے کا نام نہیں لے سکتے جسے وہ آگاہ کرتا ہے تو اسے نہ بنائیں۔
  • ساختی اور رویے کے ماڈلز کو مخصوص سوال سے ملائیں، اور انہیں یکساں اور موجودہ رکھیں۔
  • ماڈلز کا تجزیہ کریں؛ بغیر جانچا ماڈل غیر ٹیسٹ شدہ مفروضہ ہے۔
  • ہیورسٹک اور ایجائل طریقے زیادہ تر نظاموں کے لیے موزوں ہیں؛ رسمی طریقے اعلیٰ نتیجے والے مراکز کے لیے رکھیں۔
  • غیر یقینی ختم کرنے کے لیے پروٹو ٹائپ استعمال کریں، اور پہلے سے طے کریں کہ وہ پھینک دینے والے ہیں یا ارتقائی۔
  • ماڈلنگ میں اتنی سرمایہ کاری کریں جتنی غیر یقینی وہ ختم کرتی ہے اور فیصلہ غلط ہونے کی لاگت۔

حوالہ جات اور مزید مطالعہ

  • IEEE Computer Society, SWEBOK Guide (Software Engineering Body of Knowledge), Version 4.0, Software Engineering Models and Methods knowledge area
  • Martin Fowler, UML Distilled: A Brief Guide to the Standard Object Modelling Language
  • Grady Booch, James Rumbaugh, Ivar Jacobson, The Unified Modelling Language User Guide
  • Frederick P. Brooks, The Mythical Man-Month and No Silver Bullet: Essence and Accident in Software Engineering
  • Daniel Jackson, Software Abstractions: Logic, Language, and Analysis (the Alloy modelling language)
  • Leslie Lamport, Specifying Systems (TLA+)
  • Simon Brown, Software Architecture for Developers (the C4 model)
  • David Harel, Statecharts: A Visual Formalism for Complex Systems