באג בתוכנה

הכוונה היא לטעויות במפרטי הדרישות או בקוד, שבאות לידי ביטוי במצבים חריגים בלבד, שלא נבדקו היטב במהלך הפיתוח.

בעיית השלימות

בדרך כלל, התוכנה נבדקת היטב בתרחישי תפעול נורמלי, ונבדקת חלקית במצבים חריגים. אין כל דרך לבצע בדיקות מקיפות של תוכנות בכל המצבים האפשריים. לכן, יתכן מצב בו התוכנה אינה מתפקדת כראוי.

בהעדר אפשרות מעשית לאפיין ולבדוק את המכונה בכל הקומבינציות האפשריות, יתכן מקרה בו התנהגות המכונה בקומבינציה מסויימת, שאינה תואמת לאף תרחיש רגיל, לא נבדקה.

דוגמא

במכונות בהן המפעיל יכול לשנות פרמטרים כרצונו, (במערכות בהן המפתח נותן למפעיל שליטה מליאה), קורה שבטעות המפעיל מציב במכונה ערכי פרמטרים בקומבינציה שלא נבדקה במהלך הבדיקות. במקרה כזה, התנהגות המכונה היא בלתי צפויה.

דוגמאות

  • התוכנה נתקעת במצב החריג
  • התוכנה משגרת התרעות ללא הרף
  • התוכנה מציגה נתונים שגויים.

דוגמא: סינכרון איטי מדי

לכאורה, כאשר הסינכרון בין יחידות המערכת הוא איטי מדי, המצב הזמני עד לגמר הסינכרון אינו תואם אף תרחיש רגיל.

תאונה לדוגמא

התאונות של מערכת הרדיותרפיה Therac-25 מדגימות את הבעיה של תוכנה שלא נבדקה במצב הזמני בטרם הסינכרון הסתיים.