اشکال نرمافزاری
اِشکال،[۱] گره یا باگ (به انگلیسی: bug) نوعی خطا یا اشتباه در اجرای نرمافزار است که موجب نتایج اشتباه یا اجرا نشدن نرمافزار میشود. علت این اشکالات میتواند اشتباه در هنگام برنامهنویسی باشد. شرکتهای سازنده نرمافزارها برای حل این مشکل قبل از ارائه نسخه نهایی نسخههایی تحت نام بتا یا آلفا انتشار میدهند تا افرادی آنها را بررسی کنند و این باگها را گزارش کنند. به این افراد بتا تستر (به انگلیسی: Beta Tester) میگویند.
![](http://up.wiki.x.io/wikipedia/commons/thumb/f/ff/First_Computer_Bug%2C_1945.jpg/220px-First_Computer_Bug%2C_1945.jpg)
بعضی اوقات شرکتهای سازنده نرمافزار به عمد یک یا چند اشکال در نسخههای قابل بازی قبل از انتشار، که رایگان پخش میکنند، میگذارند تا از کپی غیرمجاز آنها جلوگیری کنند مانند بازی کیش یک آدمکش.
تاریخچه
ویرایشاین اصطلاح اولین بار توسط خانم گریس موری هاپر به کار گرفته شدهاست. خانم گریس هاپر به عنوان یکی از اولین برنامه نویسان زن شناخته میشود. زمانی که هاپر در دانشگاه هاروارد در حال گرهگشایی یا دیباگ کردن (به انگلیسی: debugging) کامپیوتر Mark II بود، از این لغت به معنای خطا و اشکال استفاده کرد؛ زیرا زمانی که هوپر به همراه شماری از متخصصین در حال بررسی کامپیوتر Mark II بودند، متوجه شدند که اختلال در عملکرد این کامپیوتر به دلیل وجود یک حشره در آن ایجاد شدهاست؛ بنابراین در آنجا اصطلاح Bug به معنای نقص یا گره نرمافزاری را بکار بردند.[۲]
انواع اشکال
ویرایشاین خطاها انواع مختلفی دارند و هر کدام از این نوعها در زمان خاصی تشخیص داده میشوند، انواع خطاهای برنامهنویسی به شرح زیر میباشد:
- خطاهای منطقی: در شرایطی که منطق نرمافزار اشتباه پیادهسازی شده باشد، برای مثال اجرای نرمافزار در یک چرخه (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». در دانشنامهٔ ویکیپدیای انگلیسی.