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

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

בדיקות בטיחות בזמן ריצה

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

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

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

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

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

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