تاریخچۀ باگ و آشنایی با مفهوم آن

1401/04/13 - نویسنده: زارع تک

یکی از اصطلاحاتی که برنامه نویسان زیاد از آن استفاده می‌کنند، باگ است که در اصطلاح برنامه نویسی به معنای نقص یا اشکال نرم افزاری است. به فرایند رفع باگ نیز دیباگ می‌گویند.

 

تاریخچۀ باگ :

 

تا به حال فکر کرده‌اید دلیل نام‌گذاری باگ چیست؟ احتمالاً می‌دانید که کلمه باگ در انگلیسی به معنی حشره است و اولین کسی که باگ را کشف کرد، توماس ادیسون بود. در زمان او هیچ کامپیوتری وجود نداشت و پیدا شدن حشرات در سیستم‌های مکانیکی امری شایع بود. اولین بار حشره‌ای داخل یکی از تلگراف‌های ادیسون گیر کرد و سیستم او را از کار انداخت! بعد از آن ادیسون مشکلات موجود در پروژه‌های خود را باگ نامید. در زمان اختراع کامپیوترها، این مشکل حل نشده بود. Hopper Grace به عنوان اولین زن برنامه نویس در حال دیباگ کردن کامپیوتر Mark II بود که متوجه اختلال در عملکرد آن توسط یک سوسک می‌شود و از آن به بعد اصطلاح Bug به معنای نقص نرم‌افزاری استفاده شد.

 

انواع باگ‌های برنامه نویسی :

 

  1. سینتکسی (Syntax): زمانی که قواعد مربوط به نوشتار زبان برنامه‌نویسی رعایت نشوند با باگ سینتکسی مواجه می‌شویم؛ برای مثال عملگر، حروف و یا کاراکتر اشتباهی در کدها استفاده شود.
  2. منطقی (Logic) : در شرایطی که منطق نرم‌افزار، اشتباه پیاده‌سازی شده باشد؛ برای مثال اجرای نرم‌افزار در یک چرخه (Loop) بی‌نهایت قرار گیرد.
  3. محاسباتی (Arithmetic) : اگر محاسبات ریاضی در نرم‌افزار، با خطا رو‌به‌رو شوند؛ مثلاً عددی تقسیم بر صفر شود و یا نتیجه نهایی دارای خطای محاسباتی باشد.
  4. منابع (Resource) : زمانی که در به‌کارگیری منابع نرم‌افزاری، خطایی به وجود بیاید؛ مثلاً اشاره به متغیری ناموجود یا تعریف ‌نشده در نرم‌افزار.
  5. کار تیمی (Teamworking) : ایجاد اختلاف و خطا در کدنویسی برنامه‌نویسان به دلیل کدنویسی تیمی، مثلاً تفاوت در نام‌گذاری و مستند‌سازی نرم‌افزار.
  6. تعامل (Interfacing) : نرم‌افزار در تعامل با بخش‌های دیگر نرم‌افزاری و سخت‌افزاری دچار خطا شود مانند: استفاده از Api نادرست.
  7. چند رشته‌ای (Multi-threading) : زمانی که اجرای thread در نرم‌افزارها دچار مشکل شود. مثلاً وظیفۀ A تا زمانی که وظیفۀ B تمام نشده باشد، ادامه نخواهد یافت؛ در عین حال تا زمانی که کار A تمام نشود؛ وظیفه B نمی‌تواند ادامه یابد.

 

چگونه می‌توان باگ را شناسایی و اصلاح کرد؟

 

هیچ نرم‌افزاری وجود ندارد که بدون باگ باشد. همچنین باید بدانید که برخلاف آن‌چه به نظر می‌رسد، توسعه و طراحی یک نرم‌افزار (حتی بسیار ساده) کار آسانی نیست. فرقی نمی‌کند که یک برنامه‌نویس چقدر متبحر و باتجربه باشد، باز هم امکان پیدا شدن باگ در کد او وجود دارد. حتی یک اشتباه تایپی بسیار کوچک و به ظاهر بی‌اهمیت هم می‌تواند یک نرم‌افزار را غیر قابل اعتماد یا بدتر از آن، غیر قابل استفاده کند. خطاهایی که هنگام اجرای برنامه رخ می‌دهند، یکی از بدترین پیامدهایی هستند که توسط باگ حل نشده به وجود می‌آیند. در نتیجه، پیش از آن‌که برنامه به کاربر نهایی تحویل داده شود باید تست‌های گوناگونی برای رفع باگ‌ها انجام شود. در فرایند توسعۀ نرم‌افزار، شش مرحله وجود دارد و تست برنامه یکی از مهم‌ترین آن‌ها به شمار می‌رود. تست برنامه باید پس از طراحی انجام شود، اما در طول فرایند توسعه نرم‌افزار هم می‌تواند انجام شود یا این‌که می‌توان تا پایان کار صبر کرد. برای اطمینان یافتن از عملکرد درست برنامه و کارایی تمام قابلیت‌های موجود در نرم‌افزار باید یک آزمون قدرتمند و دشوار انجام شود. در طول مرحله‌ی تست برنامه، هر باگ و خطایی شناسایی و رفع می‌شود. با وجود این، ممکن است برخی از خطاهای موجود در سیستم، شناسایی نشوند. این مشکل به دلایل مختلفی رخ می‌دهد؛ برای مثال ممکن است کاربر نهایی از نرم‌افزار به روشی استفاده کند که توسعه دهنده پیش‌بینی نمی‌کرده، در نتیجه نرم‌افزار خراب شود یا منجر به نتایج اشتباهی شود. اگر یک باگ نرم‌افزاری توسط کاربر نهایی یا عموم مردم شناسایی شود، می‌توان نسخۀ سالمی از برنامه را در مرحله‌ی نگهداری از چرخه عمر برنامه، تولید و منتشر کرد. توسعه دهندگان نرم‌افزار به طور معمول به طیف گسترده‌ای از راه‌حل‌ها دسترسی دارند که می‌تواند به آن‌ها در شناسایی باگ موجود در برنامه‌ها کمک کند. برای مثال راه‌حل‌های برنامه‌نویسی تدافعی در شناسایی خطاهای نوشتاری کمک می‌کند؛ در حالی که روش‌شناسی تست واحد، به توسعه دهندگان اجازه می‌دهد تا عملکرد هر بخش از نرم‌افزار را برای شناسایی مشکلات و باگ احتمالی تست کنند.

 


منابع :

  1. همیار آی‌تی

نظر بدهید