در علم رایانه، اشکال نرم‌افزاری یا باگ، به خطاهای برنامه‌نویسی گفته می‌شود. به حل این مشکلات اشکال‌زدایی یا دیباگ می‌گویند. حل مشکلات نرم‌افزاری به دو صورت انجام می پذیرد: اول با داشتن کد اصلی برنامه. دوم با داشتن خود فایل اصلی برنامه.

با داشتن کد اصلی برنامه می‌توان از امکانات مفسر برای اشکال‌زدایی استفاده نمود ولی در صورتی که فایل اصلی در اختیار باشد، می‌تواند به کمک علم مهندسی معکوس این کار را انجام داد.

دلیل نام گذاری در دنیای رایانه، باگ (Bug) یا اشکال به معنی اشتباه یا اشکال در برنامه است. اما معنای اصلی آن در انگلیسی حشره می‌باشد. روزی که رایانهٔ‌ Mark I در هاروارد خراب شد پس از یک جستجوی طولانی متخصصین علت مشکل را پیدا کردند. یک حشره کوچک بین نقاط تماس یک رله قرار داشت. به همین دلیل وجود اشکالات رایانه‌ای باگ (حشره) نام گرفت و برطرف کردن این اشکالات کامپیوتری را دیباگ نامیدند.

 

اشکال یا باگ (‌Bug) نوعی خطا یا اشتباه در اجرای نرم‌افزار است که موجب نتایج اشتباه یا اجرا نشدن نرم‌افزار می‌شود. علت این اشکالات می‌تواند اشتباه در هنگام برنامه‌نویسی باشد که شرکت‌های سازنده نرم‌افزارها برای حل این مشکل قبل از ارائه نسخه نهایی نسخه‌هایی تحت نام بتا یا آلفا انتشار می‌دهند تا افرادی آنها را بررسی کنند و این باگ‌ها را گزارش کنند. به این افراد بتا تستر (Beta Tester) می‌گویند.

بعضی اوقات شرکت‌های سازنده نرم‌افزار به عمد یک یا چند اشکال در نسخه‌های قابل بازی قبل از انتشار، که رایگان پخش می‌کنند، می‌گذارند تا از کپی غیرمجاز آنها جلوگیری کنند مانند بازی کیش یک آدم‌کش.