אימות תוכנה – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מ עברית
Vinney (שיחה | תרומות)
הרחבה
שורה 1:
{{ניווט בהנדסת תוכנה}}
 
'''אימות תוכנה''' הוא תחום ב[[מדעי המחשב]] העוסק ב[[הוכחה]] ש[[תוכנה]] מסוימת נכונה (כלומר מבצעת בדיוק את מה שהוגדר במפרט שלה) או בעלת תכונות מסוימות.
==כללי==
'''אימות תוכנה (וחומרה)''' הוא תחום ב[[מדעי המחשב]] העוסק ב[[הוכחה]] ש[[תוכנה]] מסוימת נכונה (כלומר מבצעת בדיוק את מה שהוגדר במפרט שלה) או בעלת תכונות מסוימות.
 
מרבית העוסקים ב[[פיתוח תוכנה]] [[בדיקות תוכנה|בודקים את התוכנה]] ולא מאמתים אותה. הבדיקה נעשית באמצעות בחירת מקרים ספציפיים ובדיקה שהתוכנה מתנהגת במקרים אלו כנדרש. שיטה זו כרוכה בעבודה רבה ורמת האמינות של תוכנה הנבדקת כך נמוכה יחסית. לעומת זאת, כאשר אנו מוכיחים את אמינות התוכנה אנו יודעים כי היא תתנהג נכון בכל המקרים, כולל כאלה שלא בדקנו.
 
==שיטות==
 
ישנן שתי שיטות עיקריות לאימות תוכנה.
 
הראשונה היא שיטת [[בדיקת מודל|בדיקות מודל]] - תהליך האימות מתבצע על מודל מתמטי המתאר את מערכת התוכנה, תוך הוכחת נכונות של תכונות הנדרשות על בסיס המודל הזה, תוך ניתוח המצבים והמעברים בינהם. על מנת להצליח בשיטה הזאת, המודל חייב להיות ''סופי'' (בעל מספר סופי של מצבים). השיטה הזאת מאוד מוגבלת מהבחינה המעשית, זאת בגלל [[בעיית התפוצצות מצבים]] שמאפיינת מערכות מעשיות רבות.
 
השיטה השניה היא שיטת ההיסק הלוגי - בשיטה הזאת מתארים תכונות מסוימות של התכונה ב[[תחשיב פסוקים]] לוגי (בעזרת [[לוגיקה טמפולרית]], כדוגמאת [[CTL*|*CTL]]), ומראים שהתוכנה (יותר נכון המודל שלה) מספקת את התכונות הנדרשות, בעזרת כלים מתמטיים אוטומטיים או אוטומטיים למחצה. גם השיטה הזאת מוגבלת בגלל [[בעיית התפוצצות מצבים]], זאת למרות שניתן לבטא בעזרת תחשיב לוגי גם תכונות עבור מודלים אינסופיים.
 
למרות שהמחקר בתחום הזה מתבצע תחת כובע [[מדעי המחשב]], השיטות האלה משמשות גם לאימות [[חומרה]], שם [[בעיית התפוצצות מצבים|בעיית התפוצצות המצבים]] חריפה פחות.
 
==מגבלות==
 
ישנן שתי בעיות עיקריות באימות תוכנה. המעשית שבהן היא שאימות תוכנה דורש מיומנות רבה ורקע מתמטי ברמה גבוהה מהמקובל. הבעיה החמורה יותר היא שישנה הוכחה לכך שקיימות תוכניות שאי אפשר לאמת אותן. דוגמה לכך היא ההוכחה כי אי אפשר לפתח [[תוכנית מחשב|תוכנית]] שיכולה לוודא האם תוכנית כלשהי תעצור כאשר תקבל קלט מסוים (בעיה זו ידועה כ[[בעיית העצירה]]). לאור זאת בוודאי שאי אפשר להוכיח כי תוכנה לא תגיע למצב כלשהו.
שורה 8 ⟵ 22:
למרות שמגבלה תיאורטית זו נראית חמורה עדיין אימות תוכנה תורם רבות מבחינה מעשית.
 
[[אמיר פנואלי]] מ[[מכון ויצמן למדע]] נחשב למומחה ברמה בינלאומית בתחום זה ואף זכה על מחקריו בתחום ב[[פרס טיורינג]], הפרס החשוב ביותר במדעי המחשב, על מחקרו ופיתוחיו בתחום [[לוגיקה טמפולרית|לוגיקה הטמפולרית]].
 
==ראו גם==
[[מונחים בתוכנה]]
[[הבטחת איכות תוכנה]]
[[בדיקות תוכנה]]
 
[[קטגוריה:מדעי המחשב]]