Loading AI tools
מוויקיפדיה, האנציקלופדיה החופשית
בָּאג (מונח עברי: תֶּקֶל[1]; באנגלית: Bug) הוא כשל טכני במערכת מבוססת תוכנה, שמתנהגת בצורה שגויה, לא צפויה או שאיננה מתוכננת.
לעיתים משמשת המילה גם לתיאור טעות בתכנון של מעגל אלקטרוני מורכב, שמימושו הוא בחומרה.
באג עלול לנבוע מעיצוב פגום של התוכנה, מתכנון לקוי של האלגוריתם, מטעות בשלב התכנות, מהבנה לא נכונה של הדרישות, מהתאמה שגויה של דרישות לציפיות הלקוח, משינויים בציפיות הלקוח או בקלטים של המערכת, ועוד. באג יכול לבוא לידי ביטוי בצורות אחדות:
ישנן דרכים פורמליות להוכחת נכונות של תוכנה, אולם ברוב המקרים הדרך לבדיקתה של תוכנה היא באמצעות ניסוי על מספר רב של מקרים פרטיים, תהליך הקרוי ניפוי. גיוונם העצום של המקרים השונים בתוכנה מורכבת הופך את מלאכת הניפוי בטכניקה זו לכזאת שאינה מושלמת, וכך קורה שהמשתמש נתקל בבאג.
על בעיית האמינות של התוכנה עמד דייוויד פרנס:
אנשים המכירים הן את הנדסת התוכנה והן את תחומי ההנדסה הוותיקים יותר הבחינו שאמינות סביבת התוכנה נמוכה במידה משמעותית מזו המאפיינת שטחי הנדסה אחרים. כשמרבית המוצרים ההנדסיים הושלמו, נבדקו ונמכרו, סביר לצפות שתכנון המוצר נכון ושהוא יעבוד בצורה אמינה. במוצרי תוכנה, מקובל לגלות שהתוכנה מכילה שיבושים (bugs) רציניים ואינה מתפקדת בצורה אמינה אצל מספר משתמשים. בעיות אלו עלולות לצוץ במספר גרסאות ובמקרים מסוימים להחמיר את המצב כשמדובר ב"שיפור" התוכנה. בעוד מרבית המוצרים מלווים בתעודת אחריות תקפה ומגינה, הרי מוצרי תוכנה מלווים לעתים בהצהרה ספציפית על אי מתן אחריות. הציבור הרחב, המודע רק למספר קטן של תקלות תוכנה, יכול להתייחס אליהן כחריגים שנגרמו על ידי מתכנתים בלתי-מנוסים. אלו מבינינו המצויים בתוכנה יודעים טוב יותר; המתכנתים המעולים ביותר בעולם לא יכולים להימנע מבעיות כאלו.[2]
מפתחי תוכנה משקיעים, בדרך כלל, מאמצים גדולים בניפוי התוכנה כך שלא יהיו בה באגים, אך, כאמור לעיל, אין הם יכולים להתחייב על תוכנה שבה אין ליקויים. בניסיון לשפר את תהליך בדיקת התוכנה פותחו מוצרי בדיקה, נוצר עיסוק של מבקר איכות תוכנה, והוקמו חברות שכל התמחותן היא תכנון וביצוע של בדיקות איכות לתוכנה, באמצעות כלים אוטומטיים, שאחת המפורסמות שבהן היא חברת מרקורי.
בעקבות איתור באג קריטי, מופצת למשתמשים באופן מיידי מהדורה מתוקנת של התוכנות. תיקונים לבאגים פחות קריטיים נצברים אצל מפתח התוכנה ומופצים בגרסה חדשה של התוכנה.
מבחינתו של המשתמש בתוכנה, התגברות על באג מצריכה פעמים רבות פנייה ליצרן התוכנה על-מנת שיספק גרסה תקינה שלה. באופן זמני יכול המשתמש לעיתים לעקוף את הבאג, באמצעות הימנעות משימוש באופציה הגורמת לבאג. לעיתים מצריך הבאג הפעלה מחדש של התוכנית הפגומה, ובמקרים קשים יותר מצריך הבאג אתחול מחדש (ריסט) של המחשב שבו פעלה התוכנה הפגומה.
השימוש במונח ה"באג" לתיאור של פגמים בלתי מוסברים הוא חלק מהמינוח המקצועי בעולם ההנדסה כבר מהמאה ה-19, והיה בשימוש מהנדסי מכונות לתיאור של כשלים מכניים. לדוגמה, אדיסון כתב את המילים הבאות במכתב לעמית מ-1878:
הדבר חוזר בכל המצאותי; הצעד הראשון הוא אינטואיציה, אחריה פרץ עשייה, ואז צצים הקשיים - הדבר כושל ואז ה"באגים" - כפי שנהוג לקרוא לפגמים וקשיים קטנים אלו - זוקפים את ראשם וחודשים של התבוננות מאומצת, מחקר ועבודה נדרשים לפני שהצלחה או כישלון מסחריים הופכים למציאות.[3]
בעיות באלקטרוניקה של מכשירי מכ"ם במהלך מלחמת העולם השנייה נודעו כבאגים (או גליצ'ים).
טביעת המושג משויכת בטעות לגרייס הופר, שפרסמה את הסיבה לתקלה במחשב אלקטרומכני מוקדם. גרסה אופיינית לסיפור מופיעה בציטוט הבא:
ב-1946, כשהופר שוחררה משירות פעיל, היא הצטרפה לסגל הרווארד במחלקה למיחשוב, שם המשיכה בעבודתה על מארק II ומארק III. מפעילים שעקבו אחרי תקלה במארק II מצאו עש שנלכד באחד הממסרים (relay), והשתמשו במושג "באג". העש הוסר בזהירות והודבק לדף הלוג של 9 בספטמבר 1945. בעקבות אותו באג ראשון אנו נוהגים להתייחס לתקלות או גליצ'ים כבאגים.[4]
הופר איננה זאת שמצאה את החרק, כפי שהיא בעצמה מודה, והתאריך לא היה 1945 אלא 9 בספטמבר 1947.[5] המפעיל שמצא את הבאג היה מודע למונח ההנדסי המקורי ומשועשע, שמר את החרק עם ההערה "First actual case of bug being found".[6] אף שברור כי מפעילי מארק II לא טבעו את המונח באג, נטען שהם המציאו את המונח debug (ניפוי).
באגים בדרך כלל נופלים לתוך אחת משתי קטגוריות:
כל משתמש במחשבים נתקל בבאגים הגורמים לו אי-נוחות קטנה או גדולה. לעיתים הנזק הנגרם עקב באג כבד למדי, כפי שמלמדות הדוגמאות הבאות:
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.