یک باگ نرم افزاری، اصطلاحی است برای توصیف یک خطا، عیب، اشتباه، خرابی یا نقص در یک برنامه کامپیوتری که باعث ایجاد نتایج غیر منتظره یا نا درست در برنامه ها می شود. علت بسیاری از باگ ها در نرم افزارها، اشتباهات برنامه نویسان در هنگام نوشتن سورس کد نرم افزارهاست. در یک برنامه بزرگ، اشتباه در فاز طراحی نیز می تواند باعث ایجاد باگ های جبران ناپذیر شود.
باگ هایی که باعث ایجاد نتایج اشتباه در خروجی نرم افزار می شوند، از بدترین نوع باگ ها هستند. نرم افزاری که خروجی اشتباه تولید کند به درد کاربر نمی خورد و کسی از آن استفاده نخواهد کرد. برخی باگ ها بر روی کاکرد برنامه تاثیر می گذارند و ممکن است باعث کرش کردن برنامه شوند. بعضی از باگ ها، اشکالات امنیتی هستند و ممکن است باعث دسترسی افراد غیر مجاز به اطلاعات حساس سیستم شوند. در این میان باگ هایی نیز وجود دارند که تا مدت ها مخفی می مانند و بر روی کارکرد برنامه تاثیرات منفی می گذارند.
وجود داشتن باگ در نرم افزارها کاملاً طبیعی است. از آن جا که هیچ کدام از ساخته های بشر کامل و بی نقص نیستند، نرم افزار نیز از این قاعده خارج نیست. یک باگ می تواند هنگام شناسایی نیازمندی های سیستم نرم افزاری توسط یک تیم نرم افزاری ایجاد شود. اگر نیازمندی های یک سیستم به درستی تشخیص داده نشوند، طراحی نرم افزار اشکال خواهد داشت، و در نتیجه کدنویسی ما نقص خواهد داشت. به جز برنامه نویسان و طراحان سیستم، کاربران سیستم نیز می توانند با ورود داده های اشتباه به سیستم باعث ایجاد باگ در سیستم نرم افزاری شوند. اینجاست که اعتبار سنجی داده های ورودی کاربر اهمیت زیادی پیدا می کند.
برای جلوگیری از ایجاد باگ در سیستم های نرم افزاری در فازهای مختلف ایجاد سیستم از روش های استانداردی استفاده می کنند. با استفاده از روش های استاندارد و معروف مهندسی نرم افزار و جمع آوری درست نیازهای سیستم، تحلیل و طراحی بر اساس آن می توان باگ های احتمالی را به حداقل رساند. در هنگام برنامه نویسی بسیاری از خطاها هنگام کامپایل کردن برنامه رفع می شوند. اکثر باگ های مربوط به برنامه نویسی، خطاهای منطقی هستند که کامپایلرها توانایی تشخیص آن ها را ندارند. امروزه پلت فرم ها و زبان های برنامه نویسی پرکاربرد امکانات خوبی برای شناسایی و هندل کردن خطاهای برنامه نویسی به ما ارائه می کنند. بلاک های کنترل خطا و استثناها، ابزارهای خطایابی، کنترل نوع داده ها و شناسایی خطاهای زمان اجرا در یک زبان برنامه نویسی باعث ایجاد کمترین باگ در یک نرم افزار می شوند.
برای شناسایی باگ ها معمولاً قبل از ارائه نسخه عمومی یک نرم افزار، نسخه های آلفا و بتا را منتشر می کنند. این نسخه های آزمایشی در اکثر اوقات راه خوبی برای پیدا کردن باگ های جدید در یک نرم افزار است. کاربران از نسخه های آزمایشی استفاده می کنند و اشکالات برنامه را گزارش می کنند. معمولاً تیم های نرم افزاری برای این کار از نرم افزار های مدیریت باگ یا Bug Tracking و Issue Tracking استفاده می کنند تا عملیات ثبت باگ های جدید، بحث در مورد آن ها و رفع آن ها را مدیریت کنند. از این نرم افزارها می توان به Bugzilla، BugTracker.NET، JIRA و OTRS اشاره کرد.
دیباگ کردن یک روش مرسوم و پرکاربرد برای یافتن باگ ها و از بین بردن آن هاست. دیباگ به پروسه خطایابی در یک نرم افزار گفته می شود که قسمت عمده ای از زمان تست نرم افزار را به خود اختصاص می دهد. در اکثر مواقع برنامه نویسان بیشتر زمان خود را در حال دیباگ کردن کد خود هستند تا اینکه کد جدید بنویسند! ابزارهای دیباگر در محیط های توسعه با امکان اجرای خط به خط کد، مشاهده مقادیر متغیرها در زمان اجرا و مطالعه رفتار برنامه به برنامه نویسان برای پیدا کردن باگ ها و درست کردن آن ها کمک زیادی می کنند. حتی با وجود ابزارهای دبیاگر خوب، پیدا کردن بعضی باگ ها کار واقعاً سختی است. ممکن است پس از انتشار نسخه عمومی برنامه باگ های جدیدی توسط کاربران پیدا شوند، که در این مواقع برنامه نویسان با انتشار یک Patch سعی می کنند باگ های شناسایی شده را اصلاح کنند.
دانشنامه مهندسی ایران
مطالب تصادفی:
معرفی رشته مهندسی فناوری اطلاعات (IT) در مقطع کارشناسی ارشد - یکشنبه چهاردهم فروردین 1390
معرفی رشته مهندسی صنایع - صنایع در مقطع کارشناسی ارشد - یکشنبه چهاردهم فروردین 1390
معرفی رشته مهندسی شیمی در مقطع کارشناسی ارشد - یکشنبه چهاردهم فروردین 1390
معرفی رشته مهندسی برق در مقطع کارشناسی ارشد - یکشنبه چهاردهم فروردین 1390
آشنایی با رشته پزشکی - دوشنبه هجدهم بهمن 1389
آشنایی با رشته حسابداری - دوشنبه هجدهم بهمن 1389
آشنایی با رشته ریاضی - دوشنبه هجدهم بهمن 1389
آشنایی با رشته دندانپزشكی - دوشنبه هجدهم بهمن 1389
آشنایی با رشته زیستشناسى - دوشنبه هجدهم بهمن 1389
آشنایی با رشته بیوتكنولوژی - دوشنبه هجدهم بهمن 1389
آشنایی با رشته حقوق - دوشنبه هجدهم بهمن 1389
آشنایی با رشته كتابداری - دوشنبه هجدهم بهمن 1389
آشنایی با رشته فلسفه - دوشنبه هجدهم بهمن 1389
آشنایی با رشته گرافیك - دوشنبه هجدهم بهمن 1389
آشنایی با رشته صنایع دستی - دوشنبه هجدهم بهمن 1389
آشنایی با رشته های نوازندگی ساز ایرانی و جهانی - دوشنبه هجدهم بهمن 1389
آشنایی با رشته علوم سیاسی - دوشنبه هجدهم بهمن 1389
آشنایی با رشته بهداشت محیط - دوشنبه هجدهم بهمن 1389
آشنایی با رشته گفتاردرمانی - دوشنبه هجدهم بهمن 1389
آشنایی با رشته كاردرمانی - دوشنبه هجدهم بهمن 1389
آشنایی با رشته روانشناسی - دوشنبه هجدهم بهمن 1389
آشنایی با رشته هوانوردی – خلبانی - دوشنبه هجدهم بهمن 1389
آیلتس چیست؟ - دوشنبه شانزدهم اسفند 1389