اِشکال، [ ۱] یا باگ ( به انگلیسی: bug ) نوعی خطا یا اشتباه در اجرای نرم افزار است که موجب نتایج اشتباه یا اجرا نشدن نرم افزار می شود. علت این اشکالات می تواند اشتباه در هنگام برنامه نویسی باشد. شرکت های سازنده نرم افزارها برای حل این مشکل قبل از ارائه نسخه نهایی نسخه هایی تحت نام بتا یا آلفا انتشار می دهند تا افرادی آن ها را بررسی کنند و این باگ ها را گزارش کنند. به این افراد بتا تستر ( به انگلیسی: Beta Tester ) می گویند.
بعضی اوقات شرکت های سازنده نرم افزار به عمد یک یا چند اشکال در نسخه های قابل بازی قبل از انتشار، که رایگان پخش می کنند، می گذارند تا از کپی غیرمجاز آن ها جلوگیری کنند مانند بازی کیش یک آدم کش.
این اصطلاح اولین بار توسط خانم گریس موری هاپر به کار گرفته شده است. خانم گریس هاپر به عنوان یکی از اولین برنامه نویسان زن شناخته می شود. زمانی که هاپر در دانشگاه هاروارد در حال اشکال زدایی یا دیباگ کردن ( به انگلیسی: debugging ) کامپیوتر Mark II بود، از این لغت به معنای خطا و اشکال استفاده کرد؛ زیرا زمانی که هوپر به همراه تعدادی از متخصصین در حال بررسی کامپیوتر Mark II بودند، متوجه شدند که اختلال در عملکرد این کامپیوتر به دلیل وجود یک حشره در آن ایجاد شده است؛ بنابراین در آنجا از اصطلاح Bug به معنای نقص نرم افزاری استفاده کردند. [ ۲]
این خطاها انواع مختلفی دارند و هر کدام از این نوع ها در زمان خاصی تشخیص داده می شوند، انواع خطاهای برنامه نویسی به شرح زیر می باشد:
• خطاهای منطقی: در شرایطی که منطق نرم افزار اشتباه پیاده سازی شده باشد، برای مثال اجرای نرم افزار در یک چرخه ( Loop ) بی نهایت قرار گیرد.
• سینتکسی: زمانی که قواعد مربوط به نوشتار زبان برنامه نویسی رعایت نشوند با باگ سینتکسی مواجه می شویم؛ مثلاً از عملگر، حروف یا کاراکتر اشتباهی در کدها استفاده شود.
• محاسباتی: اگر محاسبات ریاضی در نرم افزار با خطا رو به رو شوند، مثلاً عددی تقسیم بر صفر شود یا نتیجه نهایی مورد انتظار دارای خطای محاسباتی باشد.
• منابع: زمانی که در به کارگیری منابع نرم افزاری، نرم افزار دچار خطا شود؛ مثلاً اشاره به متغیری ناموجود یا تعریف نشده در نرم افزار.
• کار تیمی: ایجاد اختلاف و خطا در کدنویسی برنامه نویسان به دلیل کدنویسی تیمی، مثلاً تفاوت در نام گذاری و مستندسازی نرم افزار.
• تعامل: نرم افزار در تعامل با بخش های دیگر نرم افزاری و سخت افزاری دچار خطا شود مانند استفاده از Api نادرست.
• چند رشته ای: زمانی که اجرای threadها در نرم افزارها دچار مشکل می شوند؛ مثلاً جایی که وظیفه A تا زمانی که وظیفه B تمام نشده باشد، ادامه نخواهد یافت، اما در عین حال، وظیفه B نمی تواند ادامه یابد تا زمانی که کار A تمام شود.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفبعضی اوقات شرکت های سازنده نرم افزار به عمد یک یا چند اشکال در نسخه های قابل بازی قبل از انتشار، که رایگان پخش می کنند، می گذارند تا از کپی غیرمجاز آن ها جلوگیری کنند مانند بازی کیش یک آدم کش.
این اصطلاح اولین بار توسط خانم گریس موری هاپر به کار گرفته شده است. خانم گریس هاپر به عنوان یکی از اولین برنامه نویسان زن شناخته می شود. زمانی که هاپر در دانشگاه هاروارد در حال اشکال زدایی یا دیباگ کردن ( به انگلیسی: debugging ) کامپیوتر Mark II بود، از این لغت به معنای خطا و اشکال استفاده کرد؛ زیرا زمانی که هوپر به همراه تعدادی از متخصصین در حال بررسی کامپیوتر Mark II بودند، متوجه شدند که اختلال در عملکرد این کامپیوتر به دلیل وجود یک حشره در آن ایجاد شده است؛ بنابراین در آنجا از اصطلاح Bug به معنای نقص نرم افزاری استفاده کردند. [ ۲]
این خطاها انواع مختلفی دارند و هر کدام از این نوع ها در زمان خاصی تشخیص داده می شوند، انواع خطاهای برنامه نویسی به شرح زیر می باشد:
• خطاهای منطقی: در شرایطی که منطق نرم افزار اشتباه پیاده سازی شده باشد، برای مثال اجرای نرم افزار در یک چرخه ( Loop ) بی نهایت قرار گیرد.
• سینتکسی: زمانی که قواعد مربوط به نوشتار زبان برنامه نویسی رعایت نشوند با باگ سینتکسی مواجه می شویم؛ مثلاً از عملگر، حروف یا کاراکتر اشتباهی در کدها استفاده شود.
• محاسباتی: اگر محاسبات ریاضی در نرم افزار با خطا رو به رو شوند، مثلاً عددی تقسیم بر صفر شود یا نتیجه نهایی مورد انتظار دارای خطای محاسباتی باشد.
• منابع: زمانی که در به کارگیری منابع نرم افزاری، نرم افزار دچار خطا شود؛ مثلاً اشاره به متغیری ناموجود یا تعریف نشده در نرم افزار.
• کار تیمی: ایجاد اختلاف و خطا در کدنویسی برنامه نویسان به دلیل کدنویسی تیمی، مثلاً تفاوت در نام گذاری و مستندسازی نرم افزار.
• تعامل: نرم افزار در تعامل با بخش های دیگر نرم افزاری و سخت افزاری دچار خطا شود مانند استفاده از Api نادرست.
• چند رشته ای: زمانی که اجرای threadها در نرم افزارها دچار مشکل می شوند؛ مثلاً جایی که وظیفه A تا زمانی که وظیفه B تمام نشده باشد، ادامه نخواهد یافت، اما در عین حال، وظیفه B نمی تواند ادامه یابد تا زمانی که کار A تمام شود.
wiki: اشکال نرم افزاری