بنام خدا
امروز میخواهم درباره ردیابی باگ و مفهوم آن کمی صحبت کنم. هر برنامه نویسی میداند که برنامه رایانه ای بدون باگ وجود ندارد! البته کسی ممکن است ادعا کند یک برنامه کوچک چند خطی می توان نوشت که باگ نداشته باشد اما پاسخ من به چنین ادعایی آن است که برنامه مورد نظر برای چه کسی و چه هدفی طراحی و نوشته شده است؟ اگر برنامه ای بدون متقاضی و بدون هدف باشد مطمئناً مورد بحث ما نیست. منظور از متقاضی و هدف در حقیقت مشتری است. مشتری در تعامل با نرمافزار همیشه نکات و مواردی را که به کارایی و منافع او مربوط است متذکر و یا نیاز دارد. این نکات و موارد معمولا یا بصورت باگ و یا درخواست ویژگی و یا درخواست خدمات و پشتیبانی خود را نشان میدهند. خب تا اینجا ظاهرا چیز جدیدی نگفتیم و شاید بگویید این ها بدیهیات است اما اصل موضوع که برنامه بدون باگ نداریم را اثبات میکند! البته لازم است در اینجا کلمه باگ تعریف شود. از نظر تاریخی کلمه باگ (Bug) به معنی حشره یا مگس از زمانی برای نرمافزار باب شد که در اولین رایانه های ساخته شده از لامپ های الکترونی استفاده میشد. در آن زمان مدارات رایانه دارای حجم انبوهی از سیمها و اتصالات بصورت لحیم کاری شده بود. مثلا حجم رایانه ای که تنها محاسبه برد گلوله توپ را بر اساس زاویه آتش و سایر پارامتر ها انجام میداد حدود یک ساختمان دو یا سه طبقه بود! در مواردی حشره ها در لابلای مدارات این رایانه خانه میکردند و چون ولتاژ بین اتصالات لامپی (که در واقع کار ترانزیستور ها و فلیپ فلاپ را بر عهده داشتند) بسیار بالا بود (از مرتبه چند ده ولت) لذا امپدانس یا مقاومت بین اتصالات تغییر کرده و در عملکرد یا دقت محاسبات رایانه مزبور تاثیر فراوانی می گذاشتند. به همین دلیل فرد یا افرادی باید با سم پاشی و جاروبک هایی هر از گاهی به تمیز کردن مدارات پرداخته و مشکلات رایانه را حل می کردند! به این افراد دیباگر (Debugger) می گفتند. از آن زمان تاکنون این نام (باگ) برای هر ایراد نرمافزاری بکار میرود. تقریبا می توان گفت هر چیزی که باعث رفتار و یا عملکرد نادرست و یا ناخواسته یک برنامه رایانهای شود، بنحوی که آن رفتار و عملکرد نه در طراحی اولیه و اصلی نرمافزار و نه در مجموعه درخواست های مشتری نرمافزار باشد را باگ می گوییم. البته در مواردی هنگام تحویل اولین نسخه نرمافزار به مشتری خود یا مشتری متوجه می شود که باید چیزها و قابلیت ها جدیدی به نرمافزار افزوده شود، در این موارد نیز باز هم میتوان گفت نرمافزار از نظر مشتری دارای نقص بوده و آنرا باید باگ محسوب کرد اما چون این موضوع در طراحی یا نیازمندی اولیه نبوده، لذا آنرا به ویژگی جدید می شناسیم. خب تا اینجا با مفهوم کلی کلمه باگ آشنا و متوجه یک دسته بندی اولیه هم شدیم: باگ و ویژگی جدید. ویژگی جدید هم یک باگ در نتیجه تعامل خواسته های مشتری با نرمافزار است. اگر تاکنون برنامه نویسی کرده باشید با هر دو این موارد برخورد کرده اید و احتمالا متوجه حجم تصاعدی آنها با حجم و پیچیدگی برنامه خود شده اید. تقریبا میتوان گفت 80 درصد یک نرمافزار در 20 درصد زمان مقرر آماده میشود اما 80 درصد زمان پروژه برای حل مشکلات آن یعنی باگها صرف میشود. این موضوع از نظر زمان و هزینه تمام شده نرمافزار بسیار مهم است و نیاز به بررسی و تحلیل دارد. اگر روند رسیدگی به باگها دارای نظم نباشد مدت پروژه و در نتیجه هزینه تمام شده افزایش چشمگیری یافته و برنامه نویس یا برنامه نویسان و مشتری را به سوی یاس خواهد کشاند. این موضوع ممکن است تا جایی پیش برود که برنامه نویسان احساس کنند اگر سبزی فروشی باز می کردند وضع شان بهتر بود!! راه حل استفاده از ردیاب باگ یا همان Bug Tracker است.