האתר הישראלי להנדסת תכנה

דף ראשי | מפת האתר | רשימת מושגים | מקורות נוספים | אודות
תהליכי תכנה אמינים טיפול בחריגות

סבולת לתקלות

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

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

ישנם ארבעה היבטים של סבולת לתקלות:

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

    תהליכי תכנה אמינים לתחילת הדף טיפול בחריגות
    ©איתן 2003. כל הזכויות שמורות למערכת המידע איתן