اِشکال،[۱] گره یا باگ (به انگلیسی: bug) نوعی خطا یا اشتباه در اجرای نرمافزار است که موجب نتایج اشتباه یا اجرا نشدن نرمافزار میشود. علت این اشکالات میتواند اشتباه در هنگام برنامهنویسی باشد. شرکتهای سازنده نرمافزارها برای حل این مشکل قبل از ارائه نسخه نهایی نسخههایی تحت نام بتا یا آلفا انتشار میدهند تا افرادی آنها را بررسی کنند و این باگها را گزارش کنند. به این افراد بتا تستر (به انگلیسی: Beta Tester) میگویند.
تاریخچه
این اصطلاح اولین بار توسط خانم گریس موری هاپر به کار گرفته شدهاست. خانم گریس هاپر به عنوان یکی از اولین برنامه نویسان زن شناخته میشود. زمانی که هاپر در دانشگاه هاروارد در حال گرهگشایی یا دیباگ کردن (به انگلیسی: debugging) کامپیوتر Mark II بود، از این لغت به معنای خطا و اشکال استفاده کرد؛ زیرا زمانی که هوپر به همراه شماری از متخصصین در حال بررسی کامپیوتر Mark II بودند، متوجه شدند که اختلال در عملکرد این کامپیوتر به دلیل وجود یک حشره در آن ایجاد شدهاست؛ بنابراین در آنجا اصطلاح Bug به معنای نقص یا گره نرمافزاری را بکار بردند.[۲]
انواع اشکال
این خطاها انواع مختلفی دارند و هر کدام از این نوعها در زمان خاصی تشخیص داده میشوند، انواع خطاهای برنامهنویسی به شرح زیر میباشد:
- خطاهای منطقی: در شرایطی که منطق نرمافزار اشتباه پیادهسازی شده باشد، برای مثال اجرای نرمافزار در یک چرخه (Loop) بینهایت قرار گیرد.
- سینتکسی: زمانی که قواعد مربوط به نوشتار زبان برنامهنویسی رعایت نشوند با باگ سینتکسی مواجه میشویم؛ مثلاً از عملگر، حروف یا کاراکتر اشتباهی در کدها استفاده شود.
- محاسباتی: اگر محاسبات ریاضی در نرمافزار با خطا رو به رو شوند، مثلاً عددی تقسیم بر صفر شود یا نتیجه نهایی مورد انتظار دارای خطای محاسباتی باشد.
- منابع: زمانی که در بهکارگیری منابع نرمافزاری، نرمافزار دچار خطا شود؛ مثلاً اشاره به متغیری ناموجود یا تعریفنشده در نرمافزار.
- کار تیمی: ایجاد اختلاف و خطا در کدنویسی برنامهنویسان به دلیل کدنویسی تیمی، مثلاً تفاوت در نامگذاری و مستندسازی نرمافزار.
- تعامل: نرمافزار در تعامل با بخشهای دیگر نرمافزاری و سختافزاری دچار خطا شود مانند استفاده از Api نادرست.
- چند رشتهای: زمانی که اجرای threadها در نرمافزارها دچار مشکل میشوند؛ مثلاً جایی که وظیفه A تا زمانی که وظیفه B تمام نشده باشد، ادامه نخواهد یافت، اما در عین حال، وظیفه B نمیتواند ادامه یابد تا زمانی که کار A تمام شود.
جستارهای وابسته
جایزه برای یافتن اشکالات نرمافزاری
بسیاری از شرکتهای بزرگ نرمافزاری دنیا در ازای یافتن اشکالات نرمافزاری محصولاتشان جایزههایی را در نظر گرفتهاند که از معروفترین آنها میتوان به جایزه نیم میلیون دلاری گوگل در مسابقات Pwn2Own که یک مسابقه یافتن باگهای نرمافزاری است نام برد
منابع
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.