באג

מתוך ויקיפדיה, האנציקלופדיה החופשית

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

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

תוכן עניינים

[עריכה] מאפייני הבאגים

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

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

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

[עריכה] טיפול בבאגים

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

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

[עריכה] אטימולוגיה

השימוש במונח ה"באג" לתיאור של פגמים בלתי מוסברים הוא חלק מהמינוח המקצועי בעולם ההנדסה כבר מהמאה ה-19, והיה בשימוש מהנדסי מכונות לתיאור של כשלים מכניים. לדוגמה, אדיסון כתב את המילים הבאות במכתב לעמית מ-1878:

הדבר חוזר בכל המצאותיי, הצעד הראשון הוא אינטואיציה, אחריה פרץ עשייה, ואז צצים הקשיים - הדבר כושל ואז ה"באגים" - כפי שנהוג לקרוא לפגמים וקשיים קטנים אלו - זוקפים את ראשם וחודשים של התבוננות מאומצת, מחקר ועבודה נדרשים לפני שהצלחה או כישלון מסחריים הופכים למציאות

Source: Edison to Puskas, 13 November 1878, Edison papers, Edison National Laboratory, U.S. National Park Service, West Orange, N.J., cited in Thomas P. Hughes, American Genesis: A History of the American Genius for Invention, Penguin Books, 1989, ISBN 0140097414, on page 75.

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

תמונה של הבאג האמיתי הראשון שנמצא במחשב.
הגדל
תמונה של הבאג האמיתי הראשון שנמצא במחשב.

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

ב-1946, כשהופר שוחררה משירות פעיל, היא הצטרפה לסגל הרווארד במחלקה למיחשוב, שם המשיכה בעבודתה על מארק II ומארק III. מפעילים שעקבו אחרי תקלה במארק II מצאו עש שנלכד באחד הממסרים (relay), והשתמשו במושג "באג". העש הוסר בזהירות והודבק לדף הלוג של ה-9 בספטמבר 1945. בעקבות אותו באג ראשון אנו נוהגים להתייחס לתקלות או גליצ'ים כבאגים.

Source: Danis, Sharron Ann: "Rear Admiral Grace Murray Hopper" ‏ [1]

הופר איננה זאת שמצאה את החרק, כפי שהיא בעצמה מודה, והתאריך לא היה 1945 אלא 9 בספטמבר 1947 [2][3]. המפעיל שמצא את הבאג היה מודע למונח ההנדסי המקורי ומשועשע, שמר את החרק עם ההערה "First actual case of bug being found" ‏ [4]. אף שברור כי מפעילי מארק II לא טבעו את המונח באג, נטען שהם המציאו את המונח debug (ניפוי).

[עריכה] סוגי באגים

באגים בדרך כלל נופלים לתוך אחת משתי קטגוריות:

  • באגים תכנותיים - באגים שנובעים מטעות בתכנות (למשל שכחה של הוספת אחד בלולאה)
  • באגים עיצוביים - באגים שנובעים מתקלות בעיצוב התוכנה (למשל, אי הגנה מספקת בפני מתקפות חיצוניות)

[עריכה] באגים נודעים

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

  • טיסת הניסוי הראשונה של משגר הלוויינים אריאן 5, ב־4 ביוני 1996 הסתיימה בהשמדה עצמית 40 שניות לאחר שהחלה, כתוצאה מבאג במחשב הניווט של המשגר. הבאג נגרם כתוצאה מניסיון להעביר מספר בן 64 סיביות בנקודה צפה למספר שלם בן 16 סיביות, ניסיון שגרם להפסקת פעולתו של המחשב. באג זה היווה ציון דרך בפיתוחן של מערכות בדיקה לתוכנות זמן אמת.
  • לקראת שנת 2000 התברר שבנתונים תאריכיים רבים רשומה השנה, משיקולי חיסכון במקום, בשתי ספרות בלבד. השוואה בין תאריך בשנת 2000 לבין תאריך בשנים שקדמו לה תיתן במצב כזו תשובה שגויה. באג פוטנציאלי זה נקרא "באג 2000", ועורר חשש כבד מאוד. בסופו של דבר לא התממש החשש, במידה רבה עקב ההשקעות האדירות שנעשו לפתרון הבעיה קודם להגעתה של שנת 2000.
  • "באג הפנטיום", באג של חלוקה בנקודה צפה במעבד פנטיום, שהתגלה ב־1994. למרות שבאג זה משויך לרוב לחומרה, למעשה הוא באג בתוכנת המיקרו קוד של המעבד (תוכנה שצרובה על המעבד).


[עריכה] קישורים נוספים