اشکال نرمافزاری
اِشکال،[1] گیر یا باگ (به انگلیسی: Bug) نوعی خطا یا اشتباه در اجرای نرمافزار است که موجب نتایج اشتباه یا اجرا نشدن نرمافزار میشود. علت این اشکالات میتواند اشتباه در هنگام برنامهنویسی باشد. شرکتهای سازنده نرمافزارها برای حل این مشکل قبل از ارائه نسخه نهایی نسخههایی تحت نام بتا یا آلفا انتشار میدهند تا افرادی آنها را بررسی کنند و این باگها را گزارش کنند. به این افراد بتا تستر (به انگلیسی: Beta Tester) میگویند.
بعضی اوقات شرکتهای سازنده نرمافزار به عمد یک یا چند اشکال در نسخههای قابل بازی قبل از انتشار، که رایگان پخش میکنند، میگذارند تا از کپی غیرمجاز آنها جلوگیری کنند مانند بازی کیش یک آدمکش.
تاریخچه
این اصطلاح اولین بار توسط خانم Grace Murray Hopper به کار گرفته شدهاست. خانم Grace Hopper به عنوان یکی از اولین برنامه نویسان زن شناخته میشود. زمانی که Grace Hopper در دانشگاه هاروارد در حال اشکالزدایی یا دیباگ کردن (Debugging) کامپیوتر Mark II بودهاست، از این لغت به معنای خطا و اشکال استفاده کردهاست. زیرا زمانی که خانم Hopper به همراه تعدادی از متخصصین در حال بررسی کامپیوتر Mark II بودهاند، متوجه شدند که اختلال در عملکرد این کامپیوتر به دلیل وجود یک حشره در آن ایجاد شدهاست؛ بنابراین در آنجا از اصطلاح Bug به معنای نقص نرمافزاری استفاده کردند.[2]
انواع اشکال
این خطاها انواع مختلفی دارند و هر کدام از این نوعها در زمان خاصی تشخیص داده میشوند، انواع خطاهای برنامهنویسی به شرح زیر میباشد:
- خطاهای منطقی: در شرایطی که منطق نرمافزار اشتباه پیادهسازی شده باشد، برای مثال اجرای نرمافزار در یک چرخه (Loop) بینهایت قرار گیرد.
- سینتکسی: زمانی که قواعد مربوط به نوشتار زبان برنامهنویسی رعایت نشوند با باگ سینتکسی مواجه میشویم. مثلاً از عملگر، حروف یا کاراکتر اشتباهی در کدها استفاده شود.
- محاسباتی: اگر محاسبات ریاضی در نرمافزار با خطا رو به رو شوند، مثلاً عددی تقسیم بر صفر شود یا نتیجه نهایی موردانتظار دارای خطای محاسباتی باشد.
- منابع: زمانی که در بهکارگیری منابع نرمافزاری، نرمافزار دچار خطا شود. مثلاً اشاره به متغیری ناموجود یا تعریفنشده در نرمافزار.
- کار تیمی: ایجاد اختلاف و خطا در کدنویسی برنامهنویسان به دلیل کدنویسی تیمی، مثلاً تفاوت در نامگذاری و مستندسازی نرمافزار.
- تعامل: نرمافزار در تعامل با بخشهای دیگر نرمافزاری و سختافزاری دچار خطا شود مانند استفاده از Api نادرست.
- چند رشتهای: زمانی که اجرای threadها در نرمافزارها دچار مشکل میشوند. مثلاً جایی که وظیفه A تا زمانی که وظیفه B تمام نشده باشد، ادامه نخواهد یافت، اما در عین حال، وظیفه B نمیتواند ادامه یابد تا زمانی که کار A تمام شود.
جستارهای وابسته
جایزه برای یافتن اشکالات نرمافزاری
بسیاری از شرکتهای بزرگ نرمافزاری دنیا در ازای یافتن اشکالات نرمافزاری محصولاتشان جایزههایی را در نظر گرفتهاند که از معروفترین آنها میتوان به جایزه نیم میلیون دلاری گوگل در مسابقات Pwn2Own که یک مسابقه یافتن باگهای نرمافزاری است نام برد
منابع
- «اِشکال» [رایانه و فنّاوری اطلاعات] همارزِ «bug»؛ منبع: گروه واژهگزینی. جواد میرشکاری، ویراستار. دفتر سوم. فرهنگ واژههای مصوب فرهنگستان. تهران: انتشارات فرهنگستان زبان و ادب فارسی. شابک ۹۶۴-۷۵۳۱-۵۰-۸ (ذیل سرواژهٔ اِشکال)
- "Danis, Sharron Ann: "Rear Admiral Grace Murray Hopper"". ei.cs.vt.edu. February 16, 1997. Retrieved January 31, 2010.
- (فارسی) https://www.testnofoz.com/?p=2015
- مشارکتکنندگان ویکیپدیا. «Software bug». در دانشنامهٔ ویکیپدیای انگلیسی.