גורמי כשל בתפעול

גורמי הכשל הם טעויות בתכן

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

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

להלן אפיון של מקרי כשל שניתן למנוע אותם על ידי תכן לחסינות:

טעות בהגדרת הדרישות

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

טעות בתכן האינטראקציה

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

טעות במימוש (בקוד)

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

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

הנחיות לתכן למניעות טעויות בתפעול