SlideShare una empresa de Scribd logo
1 de 42
Security – Reliability – Quality
‫תוכנה‬ ‫בפיתוח‬ ‫ואיכות‬ ‫חדשנות‬
‫חי‬ ‫לא‬ ‫עוד‬ ‫החולה‬,
‫לנתח‬ ‫למה‬ ‫אז‬?
‫אקרמן‬ ‫בעז‬
‫דג‬ ‫של‬ ‫שם‬ ‫זה‬ ‫אמוּר‬?
‫תוכנה‬ ‫איכות‬ ‫לנזקי‬ ‫דוגמאות‬?
‫פעם‬,‫מזמן‬...
oKnight Capital–‫נז‬‫של‬ ‫ק‬440$‫באוגוסט‬ ‫מליון‬2012
‫ינואר‬2013
o‫קבוצת‬‫ללוייד‬‫בנקאות‬,‫מהירה‬ ‫תשלומים‬ ‫מערכת‬ ‫עם‬
o‫פיי‬-‫פל‬,‫כפולים‬ ‫חיובים‬
o‫באטס‬‫גלובל‬(‫ארה‬"‫ב‬),400‫שגוי‬ ‫במחיר‬ ‫בוצעו‬ ‫הוראות‬ ‫אלף‬
‫פברואר‬2013
o‫מניות‬ ‫בשערי‬ ‫נפילה‬–‫מומביי‬,‫הודו‬(‫מליוני‬‫דולרים‬)
o‫פלאפון‬ ‫רשת‬ ‫של‬ ‫קריסה‬(‫בדצמבר‬ ‫סלקום‬ ‫את‬ ‫לשכוח‬ ‫לא‬2010)
Code Review
‫בלבד‬ ‫ויזואלית‬ ‫בדיקה‬ ‫ידי‬ ‫על‬ ‫בקוד‬ ‫התבוננות‬ ‫של‬ ‫תהליך‬
‫אוטומטיים‬ ‫כלים‬ ‫של‬ ‫סיוע‬ ‫וללא‬,‫סקר‬ ‫המקובל‬ ‫בשם‬ ‫ידוע‬-
‫קוד‬-‫מקור‬(Manual / Peer Code-Review)
‫המימוש‬ ‫בקרת‬ ‫לשם‬
‫הקוד‬ ‫איכות‬ ‫שיפור‬
o‫יעילות‬/‫ביצועים‬
o‫תיעוד‬
o‫לוגי‬ ‫מימוש‬ ‫תקינות‬
o(‫אחרון‬ ‫מקום‬)‫שגיאות‬ ‫ניפוי‬"‫טכניות‬"
‫סטטית‬ ‫אנליזה‬ ‫זו‬ ‫מה‬?
‫של‬ ‫שיטה‬‫דיבוג‬‫מחשב‬ ‫תוכנת‬(‫שגיאות‬ ‫ניפוי‬)
‫באגים‬ ‫למציאת‬ ‫המקור‬ ‫קוד‬ ‫של‬ ‫אוטומטי‬ ‫וניתוח‬ ‫סריקה‬
‫התוכנית‬ ‫הרצת‬ ‫או‬ ‫ביצוע‬ ‫ללא‬
‫הקוד‬ ‫איכות‬ ‫לשיפור‬
o‫פוטנציאליים‬ ‫ובאגים‬ ‫בעיות‬
o‫התעשייה‬ ‫תקני‬ ‫אכיפת‬
‫לגלות‬ ‫יכולה‬ ‫סטטית‬ ‫אנליזה‬ ‫מה‬?
‫זיכרון‬ ‫דליפות‬
‫ממערכים‬ ‫גלישות‬
‫מאותחלים‬ ‫לא‬ ‫משתנים‬
‫מאותחלים‬ ‫לא‬ ‫למצביעים‬ ‫גישה‬
‫ל‬ ‫גישה‬-NULL
‫בעיות‬‫במולטיפרוסס‬(‫נעילות‬)
‫מת‬ ‫קוד‬
‫חיצוני‬ ‫בקלט‬ ‫זהיר‬ ‫לא‬ ‫שימוש‬
+ Software metrics generation and management
+ Risk management and mitigation
CONFIDENTIAL
Quality/Reliability Security Vulnerability Maintainability
Memory and resources leaks
Using de-allocated memory
Incorrect memory de-allocation
Dereferencing NULL pointers
Usage of uninitialized data
Resource management
Concurrency violations
Buffer overflow
Un-validated user input
SQL injection
Path injection
Cross-site scripting
Information leakage
Weak encryption
Vulnerable coding practices
Architectural violations
Header file structure
Deadcode
Unreachable code
Calculated values that are never
used
Unused function parameters
Unused local variables
‫המתגלים‬ ‫כשלים‬ ‫סוגי‬
‫ידני‬ ‫או‬ ‫אוטומטי‬?
‫מכסים‬ ‫אוטומטיים‬ ‫כלים‬100%‫מהקוד‬
o‫לוגיים‬ ‫באגים‬ ‫עבור‬ ‫לא‬
‫ע‬ ‫גם‬ ‫לבצע‬ ‫חובה‬"‫אדם‬ ‫י‬
o‫דברים‬ ‫יש‬ ‫כי‬
‫יכולים‬ ‫לא‬ ‫אוטומטיים‬ ‫שכלים‬
o‫והנחיית‬ ‫בקרה‬
‫האוטומטיים‬ ‫הכלים‬
‫ינצח‬ ‫בחוג‬ ‫האדם‬
‫לוגיים‬ ‫באגים‬
‫ביצועים‬ ‫שיפור‬
‫שווא‬ ‫בהתראות‬ ‫טיפול‬
‫מטרה‬ ‫סביבת‬ ‫מגבלות‬
‫ומיון‬ ‫סינון‬
‫דינמי‬ ‫מול‬ ‫סטטי‬
Static Code Analysis
o‫האפשריים‬ ‫התוכנה‬ ‫מסלולי‬ ‫כל‬ ‫של‬ ‫כיסוי‬
o‫מהיר‬–‫ע‬‫פי‬ ‫ד‬2‫קומפילציה‬ ‫מזמן‬
o‫בעיות‬ ‫של‬ ‫רחב‬ ‫במגוון‬ ‫טיפול‬
o‫מחיר‬ ‫עבור‬ ‫תועלת‬-‫ביותר‬ ‫הטובה‬
Dynamic Code Analysis
o‫יש‬ ‫עבורם‬ ‫אשר‬ ‫המסלולים‬ ‫את‬ ‫רק‬ ‫מכסה‬test cases
o‫מלאה‬ ‫הרצה‬ ‫סביבת‬ ‫דורש‬
o‫המערכת‬ ‫התנהגות‬ ‫את‬ ‫משנה‬
‫חוזקות‬‫סטטי‬ ‫ניתוח‬ ‫של‬ ‫ויתרונות‬...
‫הפיתוח‬ ‫בתהליך‬ ‫יחסית‬ ‫מהירה‬ ‫הטמעה‬
‫באג‬ ‫למצוא‬ ‫מהמפתחים‬ ‫נדרש‬ ‫מאמץ‬ ‫אפס‬
‫באגים‬ ‫של‬ ‫רחב‬ ‫מגוון‬ ‫מכסה‬/‫כשלים‬/‫בעיות‬
‫הבאג‬ ‫של‬ ‫מדויק‬ ‫מיקום‬ ‫על‬ ‫ומדווח‬ ‫מוצא‬
‫באגים‬ ‫של‬ ‫מהיר‬ ‫תיקון‬ ‫מחזור‬ ‫מאפשר‬
‫ע‬ ‫לשימוש‬ ‫נועד‬"‫בשלבים‬ ‫באגים‬ ‫למציאת‬ ‫מפתחים‬ ‫י‬
‫הפיתוח‬ ‫של‬ ‫מוקדמים‬
...
...‫חוזקות‬‫סטטי‬ ‫ניתוח‬ ‫של‬ ‫ויתרונות‬
...
‫לאוטומציה‬ ‫ניתנים‬ ‫והתהליכים‬ ‫הכלים‬(‫בקלות‬)–‫קב‬‫לה‬
‫האנליזה‬ ‫תוצאות‬ ‫של‬ ‫מהירה‬
‫לקבלת‬ ‫בפרויקט‬ ‫הקוד‬ ‫כלל‬ ‫את‬ ‫סורק‬"‫כיסוי‬"‫מלא‬
‫נוסף‬ ‫מידע‬ ‫קבלת‬ ‫מאפשר‬/‫הבעיה‬ ‫להבנת‬ ‫תומך‬
(traceback),‫ה‬ ‫זמן‬ ‫את‬ ‫מקטין‬ ‫בכך‬-"‫מחקר‬"
‫בתהליך‬ ‫מוקדמים‬ ‫בשלבים‬ ‫באגים‬ ‫מציאת‬ ‫מאפשר‬
‫הפיתוח‬,‫תיקון‬ ‫עלות‬ ‫ומוזיל‬ ‫עיכובים‬ ‫מקטין‬
‫סטטי‬ ‫ניתוח‬ ‫של‬ ‫וחסרונות‬ ‫חולשות‬...
‫השפות‬ ‫בכל‬ ‫תומכים‬ ‫אינם‬ ‫הכלים‬
‫הבאגים‬ ‫סוגי‬ ‫כל‬ ‫את‬ ‫מכסים‬ ‫אינם‬ ‫הכלים‬
‫המטרה‬ ‫בסביבת‬ ‫הקשורים‬ ‫ומצבים‬ ‫סוגיות‬ ‫מכסים‬ ‫לא‬
...
...‫סטטי‬ ‫ניתוח‬ ‫של‬ ‫וחסרונות‬ ‫חולשות‬
...
‫דיווחי‬ ‫מסוגי‬ ‫בדיווח‬ ‫טעויות‬-‫שקר‬(‫בעיות‬ ‫שאינם‬
‫אמיתיות‬)‫ודיווחי‬-‫חסר‬(‫אמיתיות‬ ‫בעיות‬ ‫פספוס‬)
o‫חזקים‬ ‫בכלים‬ ‫בחירה‬(High-End)‫זמן‬ ‫לכם‬ ‫תחסוך‬,‫מאמץ‬,
‫וכסף‬
‫הבעיות‬ ‫שכל‬ ‫בטחון‬ ‫של‬ ‫שקרית‬ ‫תחושה‬ ‫לספק‬ ‫עלול‬
‫מטופלות‬
Implementation Flow
Dynamic Testing
System
Requirements
Architectural
Design
Component
Design
Detailed
Design
Code
Verification
Validation
Verification
Verification
Phase
Exit
Criteria
Phase
Exit
Criteria
Phase
Exit
Criteria
System
Test
Acceptance
Test
Unit
Test
Integration
Test
‫בתהליך‬ ‫משתלב‬ ‫איפה‬?
Static Code Analysis
‫החשיבות‬:
‫הרסניות‬ ‫והשפעות‬ ‫בתוכנה‬ ‫באגים‬ ‫של‬ ‫מקרים‬ ‫כמה‬
‫באגים‬–‫א‬‫והיום‬ ‫ז‬
‫הראשון‬ ‫הבאג‬ ‫את‬ ‫זוכרים‬?
(1947)
‫יותר‬ ‫מתוחכמים‬ ‫הם‬ ‫היום‬!
‫תוכנה‬ ‫איכות‬ ‫בעיות‬ ‫לנזקי‬ ‫דוגמאות‬
‫בורסות‬ ‫קריסת‬–‫טורונטו‬,‫טוקיו‬,‫בומביי‬,‫לונדון‬,...
‫תקשורת‬ ‫מערכות‬ ‫קריסת‬–AT&T, Skype,‫פלאפון‬...
‫טעויות‬‫פאטאליות‬‫רפואיות‬ ‫ותוכנות‬ ‫במכשירים‬
‫בקרה‬ ‫מערכות‬–‫רדיואקטיביות‬‫באוסטרליה‬,‫נפט‬ ‫צינור‬
‫ברוסיה‬,‫חשמל‬ ‫רשתות‬ ‫קריסת‬,‫רכבים‬ ‫החזרת‬,...
‫מטוסים‬ ‫התרסקות‬,‫בקרה‬-‫אווירית‬,‫בעיות‬‫לווינים‬‫וטילים‬
‫קורסת‬ ‫בורסה‬ ‫מראים‬ ‫איך‬?
‫דוגמאות‬ ‫אציג‬ ‫לכן‬"‫ויזואלית‬ ‫מרשימות‬"
1983–‫מל‬‫שלישית‬ ‫עולם‬ ‫חמת‬(‫כמעט‬)
‫אתרעה‬ ‫במערכת‬ ‫תוכנה‬ ‫באג‬
‫על‬ ‫מוטעה‬ ‫לדיווח‬ ‫גרם‬ ‫מוקדמת‬
‫של‬ ‫שיגור‬5‫בליסטיים‬ ‫טילים‬!
‫ב‬ ‫האחרון‬ ‫הבאג‬-C
1991–‫סק‬‫פטריוט‬ ‫בסוללת‬ ‫פגע‬ ‫אד‬
‫לפני‬......‫אחרי‬
‫אמריקאי‬ ‫בבסיס‬ ‫הראשונה‬ ‫המפרץ‬ ‫במלחמת‬
‫בדהרן‬‫בסעודיה‬ ‫אשר‬,‫הפטריוט‬‫הצליח‬ ‫לא‬
‫וליירט‬ ‫לעקוב‬,‫באג‬ ‫עקב‬‫תוכנה‬.
‫התוצאה‬28‫ועוד‬ ‫מתו‬ ‫חיילים‬100‫נפצעו‬
1994–‫מסוק‬‫צ‬'‫יינוק‬‫התרסק‬ ‫בריטי‬
‫לפני‬......‫אחרי‬
‫בקרת‬ ‫במחשב‬ ‫תוכנה‬ ‫באג‬ ‫עקב‬‫המנוע‬.
‫נהרגו‬29‫אנשים‬–‫ה‬‫הבריטי‬ ‫הביון‬ ‫צמרת‬ ‫וכל‬ ‫טייסים‬
1996–‫ה‬‫טיל‬‫אריאן‬5‫התפוצץ‬
‫לפני‬......‫אחרי‬
‫עקב‬ ‫בלהבות‬ ‫עלו‬ ‫דולר‬ ‫ביליון‬‫הניווט‬ ‫בתוכנת‬ ‫באג‬
1997–‫ס‬‫פינה‬"‫חכמה‬"‫במים‬ ‫מתה‬
‫האמריקאים‬‫מיחשבו‬‫הים‬ ‫חיל‬ ‫ספינת‬ ‫את‬‫יורקטאון‬
‫ירכתיים‬ ‫ועד‬ ‫מחרטום‬.
‫עקב‬‫חלוקה‬ ‫באג‬‫באפס‬,‫שותקה‬ ‫כולה‬ ‫הספינה‬
‫ימים‬ ‫לשלושה‬.
2007–22-F‫ל‬ ‫מעבר‬ ‫עובד‬ ‫לא‬-"‫התאריך‬ ‫קו‬"
‫הטייס‬:..".‫בקו‬-‫בינלאומי‬ ‫התאריך‬,‫אופס‬,‫קרסו‬ ‫המערכות‬ ‫כל‬
‫המערכות‬ ‫כל‬ ‫אומר‬ ‫וכשאני‬,‫מתכוון‬ ‫אני‬‫כל‬‫כולל‬ ‫המערכות‬
‫ניווט‬,‫תקשורת‬,‫ובקרת‬‫דלק‬".
16-F‫אפס‬ ‫לגובה‬ ‫מתחת‬ ‫עובד‬ ‫לא‬
‫ה‬ ‫של‬ ‫הטיסה‬ ‫במחשב‬ ‫היה‬ ‫דומה‬ ‫באג‬-16-F‫בארץ‬ ‫הראשונים‬,‫כשירדו‬
‫מינוס‬ ‫לגובה‬ ‫המלח‬ ‫לים‬400‫הניח‬ ‫לא‬ ‫אחד‬ ‫אף‬ ‫כי‬ ‫השתגע‬ ‫המחשב‬
‫כזה‬ ‫טיסה‬ ‫גובה‬ ‫שקיים‬.
‫ועוד‬,‫ועוד‬...
F-18‫מ‬ ‫כתוצאה‬ ‫התרסק‬-missing exception condition
F-14‫נגרמו‬ ‫אשר‬ ‫וספין‬ ‫שליטה‬ ‫מאיבוד‬ ‫כתוצאה‬ ‫התרסק‬
‫הטאקטית‬ ‫בתוכנה‬ ‫מבאג‬
‫בקרה‬ ‫מערכת‬-‫אווירית‬(‫הפיקוח‬ ‫מגדל‬)‫ש‬ ‫של‬"‫בינ‬ ‫ת‬"‫ל‬
Dallas/Fort Worth‫כל‬ ‫את‬ ‫ניהלו‬ ‫והפקחים‬ ‫קרסה‬
‫האווירית‬ ‫התעבורה‬‫נייר‬ ‫על‬!
‫ארה‬ ‫של‬ ‫תותחנים‬ ‫באימון‬ ‫חיילים‬ ‫הרגה‬ ‫תוכנה‬ ‫בעיית‬"‫ב‬
‫ללא‬ ‫אך‬ ‫לכיוון‬ ‫רק‬ ‫ערך‬ ‫המטרה‬ ‫בנתוני‬ ‫הכניסו‬ ‫הם‬ ‫כאשר‬
‫גובה‬...‫ברירת‬ ‫הניחה‬ ‫המערכת‬-‫אפס‬ ‫גובה‬ ‫מחדל‬
In Phase Defect Containment
Next Generation
Source Code Analysis
‫מערכתי‬ ‫ניתוח‬-‫יתרונות‬
‫המערכת‬ ‫כל‬ ‫את‬ ‫מנתח‬" /‫השלמה‬ ‫התמונה‬"
‫לניהול‬ ‫חיוני‬,‫בקרה‬,‫היסטוריה‬,‫ודוחות‬
‫מודולים‬ ‫בין‬ ‫בעיות‬ ‫מגלה‬
‫מערכתי‬ ‫ניתוח‬-‫מגבלות‬
‫ולחכות‬ ‫שבור‬ ‫קוד‬ ‫להכניס‬ ‫חייבים‬ ‫מפתחים‬
‫תקועים‬ ‫המפתחים‬‫בלופ‬‫של‬
‫מציאה‬/‫תיקון‬/‫קומיט‬
‫המפתח‬ ‫ברמת‬ ‫ניתוח‬-‫יתרונות‬
‫אחרים‬ ‫על‬ ‫השפעה‬ ‫צמצום‬ ‫תוך‬ ‫מיידי‬ ‫ותיקון‬ ‫דיווח‬
‫בכשלים‬ ‫טיפול‬ ‫מאפשר‬“in-phase”
‫המפתח‬ ‫ברמת‬ ‫ניתוח‬-‫מגבלות‬
‫ניתוח‬ ‫דיוק‬ ‫בעיות‬
‫מפתחים‬ ‫בין‬ ‫מידע‬ ‫ושיתוף‬ ‫תקשורת‬ ‫אין‬
‫מאוחר‬ ‫מול‬ ‫מוקדם‬ ‫ניתוח‬
‫מערכתי‬ ‫וגם‬ ‫מקומי‬ ‫ניתוח‬
‫מערכתי‬ ‫לניתוח‬ ‫אוטומטית‬ ‫מחובר‬ ‫מקומי‬ ‫ניתוח‬
o‫הפיתוח‬ ‫לסביבת‬ ‫ישירות‬ ‫מערכתי‬ ‫בהקשר‬ ‫ניתוח‬
o‫הניתוח‬ ‫ובדיוק‬ ‫בביצועים‬ ‫שיפור‬
o‫מפתחים‬ ‫בין‬ ‫ופעולה‬ ‫מידע‬ ‫שיתוף‬ ‫מאפשר‬,‫הבאג‬ ‫לפתרון‬
‫המקומי‬ ‫הניתוח‬ ‫של‬ ‫והנוחות‬ ‫התפוקה‬ ‫יתרונות‬ ‫של‬ ‫שילוב‬
‫המערכתי‬ ‫הניתוח‬ ‫של‬ ‫והדיוק‬ ‫הכוח‬ ‫עם‬ ‫יחד‬
‫שווים‬ ‫נוצרו‬ ‫לא‬
‫מוצרי‬ ‫בין‬ ‫ההבדל‬ ‫מה‬SCA?
‫התחביר‬ ‫והבנת‬ ‫להידור‬ ‫הקוד‬ ‫ניתוח‬ ‫מנוע‬
‫מקומי‬ ‫ניתוח‬(AST)‫מעמיק‬ ‫מול‬(‫מסלולים‬ ‫עצי‬)
‫אלגוריתמיקה‬‫היוריסטיקה‬ ‫מול‬
‫הקוד‬ ‫מידול‬
‫סקלביליות‬ ‫יכולת‬
‫חוקים‬ ‫הוספת‬ ‫יכולת‬
‫הבסיסיות‬ ‫הטכניקות‬
‫התוכנה‬ ‫מבנה‬ ‫את‬ ‫למד‬
o‫ע‬"‫לתהליך‬ ‫האזנה‬ ‫י‬‫הבילד‬
o‫לקטעים‬ ‫חלק‬(‫פונקציות‬),‫ההדדית‬ ‫התלות‬ ‫את‬ ‫ומצא‬
‫פונקציה‬ ‫לכל‬ ‫מודל‬ ‫צור‬,‫למעלה‬ ‫מלמטה‬
o‫לקבל‬ ‫מצפה‬ ‫היא‬ ‫מה‬?
o‫מחזירה‬ ‫היא‬ ‫מה‬?
‫זרימה‬ ‫ניתוח‬
o‫קדימה‬
o‫אחורה‬
Abstract Syntax Tree (AST)
Abstract Syntax Tree - AST
‫בדיקות‬"‫מקומיות‬"‫בלבד‬ ‫ושטחיות‬
‫וסגנון‬ ‫תמה‬ ‫כתיבה‬ ‫כללי‬ ‫לאכיפת‬
o‫המחסנית‬ ‫על‬ ‫רב‬ ‫מידע‬ ‫העברת‬
o‫תנאי‬ ‫בתוך‬ ‫השמה‬
o‫בינאריים‬ ‫מול‬ ‫לוגיים‬ ‫באופרטורים‬ ‫שגוי‬ ‫שימוש‬
o‫בפונקציות‬ ‫אסור‬ ‫שימוש‬
o‫חוזרים‬ ‫ערכים‬ ‫בדיקת‬ ‫אי‬/‫חוזר‬ ‫משתנה‬ ‫של‬ ‫שגוי‬ ‫סוג‬
o‫ועוד‬...
‫זה‬ ‫מסוג‬ ‫הם‬ ‫פשוטים‬ ‫כלים‬ ‫של‬ ‫הכללים‬ ‫רוב‬
‫נקודה‬ ‫לגילוי‬ ‫דוגמה‬-‫סוררת‬ ‫פסיק‬
void boo(int a, int b) {
if (a > b)
f1();
else;
f2();
}
// IfStat / ElseStat::ExprStat [Expr::NoExpr ]
‫מידע‬ ‫מסלולי‬ ‫ניתוח‬
‫מידע‬ ‫אובייקט‬ ‫של‬ ‫החיים‬ ‫מחזור‬ ‫של‬ ‫ניטור‬
o‫יצירה‬,‫השמה‬/‫הצבה‬,‫שימוש‬/‫קריאה‬,‫ומחיקה‬
o‫יותר‬ ‫או‬ ‫אחד‬ ‫מסלול‬ ‫לאורך‬ ‫הזרימה‬ ‫בתרשים‬
‫באגים‬ ‫סוגי‬
o‫מחיקתו‬ ‫לאחר‬ ‫באובייקט‬ ‫שימוש‬
o‫אתחול‬ ‫לפני‬ ‫שימוש‬
o‫בעייתי‬ ‫ערך‬ ‫השמת‬ ‫לאחר‬ ‫שימוש‬
o‫לא‬ ‫לעולם‬ ‫או‬ ‫אחת‬ ‫מפעם‬ ‫יותר‬ ‫אובייקט‬ ‫מחיקת‬
‫מסלול‬ ‫מוכוון‬ ‫ניתוח‬
‫סימבולית‬ ‫לוגיקה‬ ‫לפי‬ ‫ניתוח‬
‫סימבולים‬ ‫מסט‬ ‫הקוד‬ ‫של‬ ‫פונקציונאלית‬ ‫התנהגות‬ ‫הגדרת‬
(‫פרמטרים‬ ‫או‬ ‫משתנים‬ ‫לרוב‬)‫ביניהם‬ ‫והיחסים‬
‫סימבולית‬ ‫לוגיקה‬–‫דו‬‫מורכבת‬ ‫גמה‬
‫הכסף‬ ‫כדור‬
‫התוכנה‬ ‫כל‬ ‫של‬ ‫אפקטיבי‬ ‫סטטי‬ ‫לניתוח‬ ‫קסום‬ ‫פתרון‬!
‫טכניקות‬ ‫מספר‬ ‫של‬ ‫שילוב‬
o‫תהליך‬ ‫של‬ ‫והבנה‬ ‫ניתוח‬‫הבילד‬‫התוכנה‬ ‫להבנת‬ ‫כבסיס‬
o‫הקוד‬ ‫תחביר‬ ‫וניתוח‬ ‫הידור‬–‫ל‬‫לניתוח‬ ‫מודל‬ ‫ייצור‬ ‫שם‬
o‫השליטה‬ ‫גרף‬ ‫של‬ ‫זרימה‬ ‫ניתוח‬–‫ל‬‫המודרני‬ ‫הסטטי‬ ‫הניתוח‬ ‫ב‬
o‫סימבולית‬ ‫לוגיקה‬–‫גי‬‫שה‬‫סקלבילית‬‫ריצה‬ ‫בזמן‬ ‫התנהגות‬ ‫להסיק‬
‫עיזרו‬‫למצוא‬‫הבאג‬ ‫את‬

Más contenido relacionado

Similar a מהי אנליזה סטטית?

Agile, XP and Scrum
Agile, XP and ScrumAgile, XP and Scrum
Agile, XP and ScrumAlon Lahav
 
סדנת מבוא: הגנת סייבר למבקרי מערכות מידע
סדנת מבוא: הגנת סייבר למבקרי מערכות מידעסדנת מבוא: הגנת סייבר למבקרי מערכות מידע
סדנת מבוא: הגנת סייבר למבקרי מערכות מידעHillel Kobrovski
 
Introduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringIntroduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringyarden hanan
 
Introduction To Malware Analysis & Reverse Engineering
Introduction To Malware Analysis & Reverse EngineeringIntroduction To Malware Analysis & Reverse Engineering
Introduction To Malware Analysis & Reverse Engineeringyarden hanan
 
Introduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringIntroduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringyarden hanan
 
החלטתם שהארגון שלכם צריך אוטומציה חכמה. מה עכשיו?
החלטתם שהארגון שלכם צריך אוטומציה חכמה. מה עכשיו?החלטתם שהארגון שלכם צריך אוטומציה חכמה. מה עכשיו?
החלטתם שהארגון שלכם צריך אוטומציה חכמה. מה עכשיו?Boris Chernyak
 
Ekran - פתרון אבטחת מידע לניטור, הקלטה, והתרעה מפני איום הסייבר הפנימי
Ekran - פתרון אבטחת מידע לניטור, הקלטה, והתרעה מפני איום הסייבר הפנימיEkran - פתרון אבטחת מידע לניטור, הקלטה, והתרעה מפני איום הסייבר הפנימי
Ekran - פתרון אבטחת מידע לניטור, הקלטה, והתרעה מפני איום הסייבר הפנימיRan Adini
 
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)tchanim
 
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצה
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצהסמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצה
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצהHillel Kobrovski
 
Agile Introduction - Hebrew content - 2019
Agile Introduction - Hebrew content - 2019Agile Introduction - Hebrew content - 2019
Agile Introduction - Hebrew content - 2019Dan-Eyal Gazit
 
Process mining with Disco (Hebrew) עברית
Process mining with Disco (Hebrew) עבריתProcess mining with Disco (Hebrew) עברית
Process mining with Disco (Hebrew) עבריתDafna Levy
 
FinanceIT MIS DSS מערכות מידע ניהוליות תומכות החלטה
FinanceIT MIS DSS מערכות מידע ניהוליות תומכות החלטהFinanceIT MIS DSS מערכות מידע ניהוליות תומכות החלטה
FinanceIT MIS DSS מערכות מידע ניהוליות תומכות החלטהFinanceIT MIS DSS
 
ארכיטקטורת מידע, מאת דודו רשתי
ארכיטקטורת מידע, מאת דודו רשתיארכיטקטורת מידע, מאת דודו רשתי
ארכיטקטורת מידע, מאת דודו רשתיguest4e02e9
 
שיעור 9 ניהול השינוי תודות לטכנולוגיה זמינה
שיעור 9   ניהול השינוי תודות לטכנולוגיה זמינהשיעור 9   ניהול השינוי תודות לטכנולוגיה זמינה
שיעור 9 ניהול השינוי תודות לטכנולוגיה זמינהAmnon Elbee אמנון אלבי
 
תיכנון נכון - שחר סעדו
תיכנון נכון - שחר סעדותיכנון נכון - שחר סעדו
תיכנון נכון - שחר סעדוAsher Barak
 
Vuforia Chalk webinar by Matrix
Vuforia Chalk webinar by MatrixVuforia Chalk webinar by Matrix
Vuforia Chalk webinar by MatrixMatrix Innovation
 

Similar a מהי אנליזה סטטית? (20)

Agile, XP and Scrum
Agile, XP and ScrumAgile, XP and Scrum
Agile, XP and Scrum
 
סדנת מבוא: הגנת סייבר למבקרי מערכות מידע
סדנת מבוא: הגנת סייבר למבקרי מערכות מידעסדנת מבוא: הגנת סייבר למבקרי מערכות מידע
סדנת מבוא: הגנת סייבר למבקרי מערכות מידע
 
Introduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringIntroduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineering
 
Introduction To Malware Analysis & Reverse Engineering
Introduction To Malware Analysis & Reverse EngineeringIntroduction To Malware Analysis & Reverse Engineering
Introduction To Malware Analysis & Reverse Engineering
 
Introduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringIntroduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineering
 
החלטתם שהארגון שלכם צריך אוטומציה חכמה. מה עכשיו?
החלטתם שהארגון שלכם צריך אוטומציה חכמה. מה עכשיו?החלטתם שהארגון שלכם צריך אוטומציה חכמה. מה עכשיו?
החלטתם שהארגון שלכם צריך אוטומציה חכמה. מה עכשיו?
 
Ekran - פתרון אבטחת מידע לניטור, הקלטה, והתרעה מפני איום הסייבר הפנימי
Ekran - פתרון אבטחת מידע לניטור, הקלטה, והתרעה מפני איום הסייבר הפנימיEkran - פתרון אבטחת מידע לניטור, הקלטה, והתרעה מפני איום הסייבר הפנימי
Ekran - פתרון אבטחת מידע לניטור, הקלטה, והתרעה מפני איום הסייבר הפנימי
 
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
 
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצה
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצהסמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצה
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצה
 
Scm
ScmScm
Scm
 
Agile Introduction - Hebrew content - 2019
Agile Introduction - Hebrew content - 2019Agile Introduction - Hebrew content - 2019
Agile Introduction - Hebrew content - 2019
 
Process mining with Disco (Hebrew) עברית
Process mining with Disco (Hebrew) עבריתProcess mining with Disco (Hebrew) עברית
Process mining with Disco (Hebrew) עברית
 
FinanceIT MIS DSS מערכות מידע ניהוליות תומכות החלטה
FinanceIT MIS DSS מערכות מידע ניהוליות תומכות החלטהFinanceIT MIS DSS מערכות מידע ניהוליות תומכות החלטה
FinanceIT MIS DSS מערכות מידע ניהוליות תומכות החלטה
 
10 istm bi and dw-amn
10 istm   bi and dw-amn10 istm   bi and dw-amn
10 istm bi and dw-amn
 
ארכיטקטורת מידע, מאת דודו רשתי
ארכיטקטורת מידע, מאת דודו רשתיארכיטקטורת מידע, מאת דודו רשתי
ארכיטקטורת מידע, מאת דודו רשתי
 
שיעור 9 ניהול השינוי תודות לטכנולוגיה זמינה
שיעור 9   ניהול השינוי תודות לטכנולוגיה זמינהשיעור 9   ניהול השינוי תודות לטכנולוגיה זמינה
שיעור 9 ניהול השינוי תודות לטכנולוגיה זמינה
 
ליאב נדלר, יוניק יו איי - חשיפה הדרגתית - UXI Live 2018
ליאב נדלר, יוניק יו איי - חשיפה הדרגתית - UXI Live 2018ליאב נדלר, יוניק יו איי - חשיפה הדרגתית - UXI Live 2018
ליאב נדלר, יוניק יו איי - חשיפה הדרגתית - UXI Live 2018
 
תיכנון נכון - שחר סעדו
תיכנון נכון - שחר סעדותיכנון נכון - שחר סעדו
תיכנון נכון - שחר סעדו
 
אתגרי ניהול ויישום סוקס
אתגרי ניהול ויישום סוקסאתגרי ניהול ויישום סוקס
אתגרי ניהול ויישום סוקס
 
Vuforia Chalk webinar by Matrix
Vuforia Chalk webinar by MatrixVuforia Chalk webinar by Matrix
Vuforia Chalk webinar by Matrix
 

מהי אנליזה סטטית?

  • 1. Security – Reliability – Quality ‫תוכנה‬ ‫בפיתוח‬ ‫ואיכות‬ ‫חדשנות‬
  • 2. ‫חי‬ ‫לא‬ ‫עוד‬ ‫החולה‬, ‫לנתח‬ ‫למה‬ ‫אז‬? ‫אקרמן‬ ‫בעז‬
  • 3. ‫דג‬ ‫של‬ ‫שם‬ ‫זה‬ ‫אמוּר‬?
  • 4. ‫תוכנה‬ ‫איכות‬ ‫לנזקי‬ ‫דוגמאות‬? ‫פעם‬,‫מזמן‬... oKnight Capital–‫נז‬‫של‬ ‫ק‬440$‫באוגוסט‬ ‫מליון‬2012 ‫ינואר‬2013 o‫קבוצת‬‫ללוייד‬‫בנקאות‬,‫מהירה‬ ‫תשלומים‬ ‫מערכת‬ ‫עם‬ o‫פיי‬-‫פל‬,‫כפולים‬ ‫חיובים‬ o‫באטס‬‫גלובל‬(‫ארה‬"‫ב‬),400‫שגוי‬ ‫במחיר‬ ‫בוצעו‬ ‫הוראות‬ ‫אלף‬ ‫פברואר‬2013 o‫מניות‬ ‫בשערי‬ ‫נפילה‬–‫מומביי‬,‫הודו‬(‫מליוני‬‫דולרים‬) o‫פלאפון‬ ‫רשת‬ ‫של‬ ‫קריסה‬(‫בדצמבר‬ ‫סלקום‬ ‫את‬ ‫לשכוח‬ ‫לא‬2010)
  • 5. Code Review ‫בלבד‬ ‫ויזואלית‬ ‫בדיקה‬ ‫ידי‬ ‫על‬ ‫בקוד‬ ‫התבוננות‬ ‫של‬ ‫תהליך‬ ‫אוטומטיים‬ ‫כלים‬ ‫של‬ ‫סיוע‬ ‫וללא‬,‫סקר‬ ‫המקובל‬ ‫בשם‬ ‫ידוע‬- ‫קוד‬-‫מקור‬(Manual / Peer Code-Review) ‫המימוש‬ ‫בקרת‬ ‫לשם‬ ‫הקוד‬ ‫איכות‬ ‫שיפור‬ o‫יעילות‬/‫ביצועים‬ o‫תיעוד‬ o‫לוגי‬ ‫מימוש‬ ‫תקינות‬ o(‫אחרון‬ ‫מקום‬)‫שגיאות‬ ‫ניפוי‬"‫טכניות‬"
  • 6. ‫סטטית‬ ‫אנליזה‬ ‫זו‬ ‫מה‬? ‫של‬ ‫שיטה‬‫דיבוג‬‫מחשב‬ ‫תוכנת‬(‫שגיאות‬ ‫ניפוי‬) ‫באגים‬ ‫למציאת‬ ‫המקור‬ ‫קוד‬ ‫של‬ ‫אוטומטי‬ ‫וניתוח‬ ‫סריקה‬ ‫התוכנית‬ ‫הרצת‬ ‫או‬ ‫ביצוע‬ ‫ללא‬ ‫הקוד‬ ‫איכות‬ ‫לשיפור‬ o‫פוטנציאליים‬ ‫ובאגים‬ ‫בעיות‬ o‫התעשייה‬ ‫תקני‬ ‫אכיפת‬
  • 7. ‫לגלות‬ ‫יכולה‬ ‫סטטית‬ ‫אנליזה‬ ‫מה‬? ‫זיכרון‬ ‫דליפות‬ ‫ממערכים‬ ‫גלישות‬ ‫מאותחלים‬ ‫לא‬ ‫משתנים‬ ‫מאותחלים‬ ‫לא‬ ‫למצביעים‬ ‫גישה‬ ‫ל‬ ‫גישה‬-NULL ‫בעיות‬‫במולטיפרוסס‬(‫נעילות‬) ‫מת‬ ‫קוד‬ ‫חיצוני‬ ‫בקלט‬ ‫זהיר‬ ‫לא‬ ‫שימוש‬
  • 8. + Software metrics generation and management + Risk management and mitigation CONFIDENTIAL Quality/Reliability Security Vulnerability Maintainability Memory and resources leaks Using de-allocated memory Incorrect memory de-allocation Dereferencing NULL pointers Usage of uninitialized data Resource management Concurrency violations Buffer overflow Un-validated user input SQL injection Path injection Cross-site scripting Information leakage Weak encryption Vulnerable coding practices Architectural violations Header file structure Deadcode Unreachable code Calculated values that are never used Unused function parameters Unused local variables ‫המתגלים‬ ‫כשלים‬ ‫סוגי‬
  • 9. ‫ידני‬ ‫או‬ ‫אוטומטי‬? ‫מכסים‬ ‫אוטומטיים‬ ‫כלים‬100%‫מהקוד‬ o‫לוגיים‬ ‫באגים‬ ‫עבור‬ ‫לא‬ ‫ע‬ ‫גם‬ ‫לבצע‬ ‫חובה‬"‫אדם‬ ‫י‬ o‫דברים‬ ‫יש‬ ‫כי‬ ‫יכולים‬ ‫לא‬ ‫אוטומטיים‬ ‫שכלים‬ o‫והנחיית‬ ‫בקרה‬ ‫האוטומטיים‬ ‫הכלים‬
  • 10. ‫ינצח‬ ‫בחוג‬ ‫האדם‬ ‫לוגיים‬ ‫באגים‬ ‫ביצועים‬ ‫שיפור‬ ‫שווא‬ ‫בהתראות‬ ‫טיפול‬ ‫מטרה‬ ‫סביבת‬ ‫מגבלות‬ ‫ומיון‬ ‫סינון‬
  • 11. ‫דינמי‬ ‫מול‬ ‫סטטי‬ Static Code Analysis o‫האפשריים‬ ‫התוכנה‬ ‫מסלולי‬ ‫כל‬ ‫של‬ ‫כיסוי‬ o‫מהיר‬–‫ע‬‫פי‬ ‫ד‬2‫קומפילציה‬ ‫מזמן‬ o‫בעיות‬ ‫של‬ ‫רחב‬ ‫במגוון‬ ‫טיפול‬ o‫מחיר‬ ‫עבור‬ ‫תועלת‬-‫ביותר‬ ‫הטובה‬ Dynamic Code Analysis o‫יש‬ ‫עבורם‬ ‫אשר‬ ‫המסלולים‬ ‫את‬ ‫רק‬ ‫מכסה‬test cases o‫מלאה‬ ‫הרצה‬ ‫סביבת‬ ‫דורש‬ o‫המערכת‬ ‫התנהגות‬ ‫את‬ ‫משנה‬
  • 12. ‫חוזקות‬‫סטטי‬ ‫ניתוח‬ ‫של‬ ‫ויתרונות‬... ‫הפיתוח‬ ‫בתהליך‬ ‫יחסית‬ ‫מהירה‬ ‫הטמעה‬ ‫באג‬ ‫למצוא‬ ‫מהמפתחים‬ ‫נדרש‬ ‫מאמץ‬ ‫אפס‬ ‫באגים‬ ‫של‬ ‫רחב‬ ‫מגוון‬ ‫מכסה‬/‫כשלים‬/‫בעיות‬ ‫הבאג‬ ‫של‬ ‫מדויק‬ ‫מיקום‬ ‫על‬ ‫ומדווח‬ ‫מוצא‬ ‫באגים‬ ‫של‬ ‫מהיר‬ ‫תיקון‬ ‫מחזור‬ ‫מאפשר‬ ‫ע‬ ‫לשימוש‬ ‫נועד‬"‫בשלבים‬ ‫באגים‬ ‫למציאת‬ ‫מפתחים‬ ‫י‬ ‫הפיתוח‬ ‫של‬ ‫מוקדמים‬ ...
  • 13. ...‫חוזקות‬‫סטטי‬ ‫ניתוח‬ ‫של‬ ‫ויתרונות‬ ... ‫לאוטומציה‬ ‫ניתנים‬ ‫והתהליכים‬ ‫הכלים‬(‫בקלות‬)–‫קב‬‫לה‬ ‫האנליזה‬ ‫תוצאות‬ ‫של‬ ‫מהירה‬ ‫לקבלת‬ ‫בפרויקט‬ ‫הקוד‬ ‫כלל‬ ‫את‬ ‫סורק‬"‫כיסוי‬"‫מלא‬ ‫נוסף‬ ‫מידע‬ ‫קבלת‬ ‫מאפשר‬/‫הבעיה‬ ‫להבנת‬ ‫תומך‬ (traceback),‫ה‬ ‫זמן‬ ‫את‬ ‫מקטין‬ ‫בכך‬-"‫מחקר‬" ‫בתהליך‬ ‫מוקדמים‬ ‫בשלבים‬ ‫באגים‬ ‫מציאת‬ ‫מאפשר‬ ‫הפיתוח‬,‫תיקון‬ ‫עלות‬ ‫ומוזיל‬ ‫עיכובים‬ ‫מקטין‬
  • 14. ‫סטטי‬ ‫ניתוח‬ ‫של‬ ‫וחסרונות‬ ‫חולשות‬... ‫השפות‬ ‫בכל‬ ‫תומכים‬ ‫אינם‬ ‫הכלים‬ ‫הבאגים‬ ‫סוגי‬ ‫כל‬ ‫את‬ ‫מכסים‬ ‫אינם‬ ‫הכלים‬ ‫המטרה‬ ‫בסביבת‬ ‫הקשורים‬ ‫ומצבים‬ ‫סוגיות‬ ‫מכסים‬ ‫לא‬ ...
  • 15. ...‫סטטי‬ ‫ניתוח‬ ‫של‬ ‫וחסרונות‬ ‫חולשות‬ ... ‫דיווחי‬ ‫מסוגי‬ ‫בדיווח‬ ‫טעויות‬-‫שקר‬(‫בעיות‬ ‫שאינם‬ ‫אמיתיות‬)‫ודיווחי‬-‫חסר‬(‫אמיתיות‬ ‫בעיות‬ ‫פספוס‬) o‫חזקים‬ ‫בכלים‬ ‫בחירה‬(High-End)‫זמן‬ ‫לכם‬ ‫תחסוך‬,‫מאמץ‬, ‫וכסף‬ ‫הבעיות‬ ‫שכל‬ ‫בטחון‬ ‫של‬ ‫שקרית‬ ‫תחושה‬ ‫לספק‬ ‫עלול‬ ‫מטופלות‬
  • 17. ‫החשיבות‬: ‫הרסניות‬ ‫והשפעות‬ ‫בתוכנה‬ ‫באגים‬ ‫של‬ ‫מקרים‬ ‫כמה‬
  • 18. ‫באגים‬–‫א‬‫והיום‬ ‫ז‬ ‫הראשון‬ ‫הבאג‬ ‫את‬ ‫זוכרים‬? (1947) ‫יותר‬ ‫מתוחכמים‬ ‫הם‬ ‫היום‬!
  • 19. ‫תוכנה‬ ‫איכות‬ ‫בעיות‬ ‫לנזקי‬ ‫דוגמאות‬ ‫בורסות‬ ‫קריסת‬–‫טורונטו‬,‫טוקיו‬,‫בומביי‬,‫לונדון‬,... ‫תקשורת‬ ‫מערכות‬ ‫קריסת‬–AT&T, Skype,‫פלאפון‬... ‫טעויות‬‫פאטאליות‬‫רפואיות‬ ‫ותוכנות‬ ‫במכשירים‬ ‫בקרה‬ ‫מערכות‬–‫רדיואקטיביות‬‫באוסטרליה‬,‫נפט‬ ‫צינור‬ ‫ברוסיה‬,‫חשמל‬ ‫רשתות‬ ‫קריסת‬,‫רכבים‬ ‫החזרת‬,... ‫מטוסים‬ ‫התרסקות‬,‫בקרה‬-‫אווירית‬,‫בעיות‬‫לווינים‬‫וטילים‬ ‫קורסת‬ ‫בורסה‬ ‫מראים‬ ‫איך‬? ‫דוגמאות‬ ‫אציג‬ ‫לכן‬"‫ויזואלית‬ ‫מרשימות‬"
  • 20. 1983–‫מל‬‫שלישית‬ ‫עולם‬ ‫חמת‬(‫כמעט‬) ‫אתרעה‬ ‫במערכת‬ ‫תוכנה‬ ‫באג‬ ‫על‬ ‫מוטעה‬ ‫לדיווח‬ ‫גרם‬ ‫מוקדמת‬ ‫של‬ ‫שיגור‬5‫בליסטיים‬ ‫טילים‬!
  • 22. 1991–‫סק‬‫פטריוט‬ ‫בסוללת‬ ‫פגע‬ ‫אד‬ ‫לפני‬......‫אחרי‬ ‫אמריקאי‬ ‫בבסיס‬ ‫הראשונה‬ ‫המפרץ‬ ‫במלחמת‬ ‫בדהרן‬‫בסעודיה‬ ‫אשר‬,‫הפטריוט‬‫הצליח‬ ‫לא‬ ‫וליירט‬ ‫לעקוב‬,‫באג‬ ‫עקב‬‫תוכנה‬. ‫התוצאה‬28‫ועוד‬ ‫מתו‬ ‫חיילים‬100‫נפצעו‬
  • 23. 1994–‫מסוק‬‫צ‬'‫יינוק‬‫התרסק‬ ‫בריטי‬ ‫לפני‬......‫אחרי‬ ‫בקרת‬ ‫במחשב‬ ‫תוכנה‬ ‫באג‬ ‫עקב‬‫המנוע‬. ‫נהרגו‬29‫אנשים‬–‫ה‬‫הבריטי‬ ‫הביון‬ ‫צמרת‬ ‫וכל‬ ‫טייסים‬
  • 25. 1997–‫ס‬‫פינה‬"‫חכמה‬"‫במים‬ ‫מתה‬ ‫האמריקאים‬‫מיחשבו‬‫הים‬ ‫חיל‬ ‫ספינת‬ ‫את‬‫יורקטאון‬ ‫ירכתיים‬ ‫ועד‬ ‫מחרטום‬. ‫עקב‬‫חלוקה‬ ‫באג‬‫באפס‬,‫שותקה‬ ‫כולה‬ ‫הספינה‬ ‫ימים‬ ‫לשלושה‬.
  • 26. 2007–22-F‫ל‬ ‫מעבר‬ ‫עובד‬ ‫לא‬-"‫התאריך‬ ‫קו‬" ‫הטייס‬:..".‫בקו‬-‫בינלאומי‬ ‫התאריך‬,‫אופס‬,‫קרסו‬ ‫המערכות‬ ‫כל‬ ‫המערכות‬ ‫כל‬ ‫אומר‬ ‫וכשאני‬,‫מתכוון‬ ‫אני‬‫כל‬‫כולל‬ ‫המערכות‬ ‫ניווט‬,‫תקשורת‬,‫ובקרת‬‫דלק‬".
  • 27. 16-F‫אפס‬ ‫לגובה‬ ‫מתחת‬ ‫עובד‬ ‫לא‬ ‫ה‬ ‫של‬ ‫הטיסה‬ ‫במחשב‬ ‫היה‬ ‫דומה‬ ‫באג‬-16-F‫בארץ‬ ‫הראשונים‬,‫כשירדו‬ ‫מינוס‬ ‫לגובה‬ ‫המלח‬ ‫לים‬400‫הניח‬ ‫לא‬ ‫אחד‬ ‫אף‬ ‫כי‬ ‫השתגע‬ ‫המחשב‬ ‫כזה‬ ‫טיסה‬ ‫גובה‬ ‫שקיים‬.
  • 28. ‫ועוד‬,‫ועוד‬... F-18‫מ‬ ‫כתוצאה‬ ‫התרסק‬-missing exception condition F-14‫נגרמו‬ ‫אשר‬ ‫וספין‬ ‫שליטה‬ ‫מאיבוד‬ ‫כתוצאה‬ ‫התרסק‬ ‫הטאקטית‬ ‫בתוכנה‬ ‫מבאג‬ ‫בקרה‬ ‫מערכת‬-‫אווירית‬(‫הפיקוח‬ ‫מגדל‬)‫ש‬ ‫של‬"‫בינ‬ ‫ת‬"‫ל‬ Dallas/Fort Worth‫כל‬ ‫את‬ ‫ניהלו‬ ‫והפקחים‬ ‫קרסה‬ ‫האווירית‬ ‫התעבורה‬‫נייר‬ ‫על‬! ‫ארה‬ ‫של‬ ‫תותחנים‬ ‫באימון‬ ‫חיילים‬ ‫הרגה‬ ‫תוכנה‬ ‫בעיית‬"‫ב‬ ‫ללא‬ ‫אך‬ ‫לכיוון‬ ‫רק‬ ‫ערך‬ ‫המטרה‬ ‫בנתוני‬ ‫הכניסו‬ ‫הם‬ ‫כאשר‬ ‫גובה‬...‫ברירת‬ ‫הניחה‬ ‫המערכת‬-‫אפס‬ ‫גובה‬ ‫מחדל‬
  • 29. In Phase Defect Containment Next Generation Source Code Analysis
  • 30. ‫מערכתי‬ ‫ניתוח‬-‫יתרונות‬ ‫המערכת‬ ‫כל‬ ‫את‬ ‫מנתח‬" /‫השלמה‬ ‫התמונה‬" ‫לניהול‬ ‫חיוני‬,‫בקרה‬,‫היסטוריה‬,‫ודוחות‬ ‫מודולים‬ ‫בין‬ ‫בעיות‬ ‫מגלה‬ ‫מערכתי‬ ‫ניתוח‬-‫מגבלות‬ ‫ולחכות‬ ‫שבור‬ ‫קוד‬ ‫להכניס‬ ‫חייבים‬ ‫מפתחים‬ ‫תקועים‬ ‫המפתחים‬‫בלופ‬‫של‬ ‫מציאה‬/‫תיקון‬/‫קומיט‬ ‫המפתח‬ ‫ברמת‬ ‫ניתוח‬-‫יתרונות‬ ‫אחרים‬ ‫על‬ ‫השפעה‬ ‫צמצום‬ ‫תוך‬ ‫מיידי‬ ‫ותיקון‬ ‫דיווח‬ ‫בכשלים‬ ‫טיפול‬ ‫מאפשר‬“in-phase” ‫המפתח‬ ‫ברמת‬ ‫ניתוח‬-‫מגבלות‬ ‫ניתוח‬ ‫דיוק‬ ‫בעיות‬ ‫מפתחים‬ ‫בין‬ ‫מידע‬ ‫ושיתוף‬ ‫תקשורת‬ ‫אין‬ ‫מאוחר‬ ‫מול‬ ‫מוקדם‬ ‫ניתוח‬
  • 31. ‫מערכתי‬ ‫וגם‬ ‫מקומי‬ ‫ניתוח‬ ‫מערכתי‬ ‫לניתוח‬ ‫אוטומטית‬ ‫מחובר‬ ‫מקומי‬ ‫ניתוח‬ o‫הפיתוח‬ ‫לסביבת‬ ‫ישירות‬ ‫מערכתי‬ ‫בהקשר‬ ‫ניתוח‬ o‫הניתוח‬ ‫ובדיוק‬ ‫בביצועים‬ ‫שיפור‬ o‫מפתחים‬ ‫בין‬ ‫ופעולה‬ ‫מידע‬ ‫שיתוף‬ ‫מאפשר‬,‫הבאג‬ ‫לפתרון‬ ‫המקומי‬ ‫הניתוח‬ ‫של‬ ‫והנוחות‬ ‫התפוקה‬ ‫יתרונות‬ ‫של‬ ‫שילוב‬ ‫המערכתי‬ ‫הניתוח‬ ‫של‬ ‫והדיוק‬ ‫הכוח‬ ‫עם‬ ‫יחד‬
  • 33. ‫מוצרי‬ ‫בין‬ ‫ההבדל‬ ‫מה‬SCA? ‫התחביר‬ ‫והבנת‬ ‫להידור‬ ‫הקוד‬ ‫ניתוח‬ ‫מנוע‬ ‫מקומי‬ ‫ניתוח‬(AST)‫מעמיק‬ ‫מול‬(‫מסלולים‬ ‫עצי‬) ‫אלגוריתמיקה‬‫היוריסטיקה‬ ‫מול‬ ‫הקוד‬ ‫מידול‬ ‫סקלביליות‬ ‫יכולת‬ ‫חוקים‬ ‫הוספת‬ ‫יכולת‬
  • 34. ‫הבסיסיות‬ ‫הטכניקות‬ ‫התוכנה‬ ‫מבנה‬ ‫את‬ ‫למד‬ o‫ע‬"‫לתהליך‬ ‫האזנה‬ ‫י‬‫הבילד‬ o‫לקטעים‬ ‫חלק‬(‫פונקציות‬),‫ההדדית‬ ‫התלות‬ ‫את‬ ‫ומצא‬ ‫פונקציה‬ ‫לכל‬ ‫מודל‬ ‫צור‬,‫למעלה‬ ‫מלמטה‬ o‫לקבל‬ ‫מצפה‬ ‫היא‬ ‫מה‬? o‫מחזירה‬ ‫היא‬ ‫מה‬? ‫זרימה‬ ‫ניתוח‬ o‫קדימה‬ o‫אחורה‬ Abstract Syntax Tree (AST)
  • 35. Abstract Syntax Tree - AST ‫בדיקות‬"‫מקומיות‬"‫בלבד‬ ‫ושטחיות‬ ‫וסגנון‬ ‫תמה‬ ‫כתיבה‬ ‫כללי‬ ‫לאכיפת‬ o‫המחסנית‬ ‫על‬ ‫רב‬ ‫מידע‬ ‫העברת‬ o‫תנאי‬ ‫בתוך‬ ‫השמה‬ o‫בינאריים‬ ‫מול‬ ‫לוגיים‬ ‫באופרטורים‬ ‫שגוי‬ ‫שימוש‬ o‫בפונקציות‬ ‫אסור‬ ‫שימוש‬ o‫חוזרים‬ ‫ערכים‬ ‫בדיקת‬ ‫אי‬/‫חוזר‬ ‫משתנה‬ ‫של‬ ‫שגוי‬ ‫סוג‬ o‫ועוד‬... ‫זה‬ ‫מסוג‬ ‫הם‬ ‫פשוטים‬ ‫כלים‬ ‫של‬ ‫הכללים‬ ‫רוב‬
  • 36. ‫נקודה‬ ‫לגילוי‬ ‫דוגמה‬-‫סוררת‬ ‫פסיק‬ void boo(int a, int b) { if (a > b) f1(); else; f2(); } // IfStat / ElseStat::ExprStat [Expr::NoExpr ]
  • 37. ‫מידע‬ ‫מסלולי‬ ‫ניתוח‬ ‫מידע‬ ‫אובייקט‬ ‫של‬ ‫החיים‬ ‫מחזור‬ ‫של‬ ‫ניטור‬ o‫יצירה‬,‫השמה‬/‫הצבה‬,‫שימוש‬/‫קריאה‬,‫ומחיקה‬ o‫יותר‬ ‫או‬ ‫אחד‬ ‫מסלול‬ ‫לאורך‬ ‫הזרימה‬ ‫בתרשים‬ ‫באגים‬ ‫סוגי‬ o‫מחיקתו‬ ‫לאחר‬ ‫באובייקט‬ ‫שימוש‬ o‫אתחול‬ ‫לפני‬ ‫שימוש‬ o‫בעייתי‬ ‫ערך‬ ‫השמת‬ ‫לאחר‬ ‫שימוש‬ o‫לא‬ ‫לעולם‬ ‫או‬ ‫אחת‬ ‫מפעם‬ ‫יותר‬ ‫אובייקט‬ ‫מחיקת‬
  • 39. ‫סימבולית‬ ‫לוגיקה‬ ‫לפי‬ ‫ניתוח‬ ‫סימבולים‬ ‫מסט‬ ‫הקוד‬ ‫של‬ ‫פונקציונאלית‬ ‫התנהגות‬ ‫הגדרת‬ (‫פרמטרים‬ ‫או‬ ‫משתנים‬ ‫לרוב‬)‫ביניהם‬ ‫והיחסים‬
  • 41. ‫הכסף‬ ‫כדור‬ ‫התוכנה‬ ‫כל‬ ‫של‬ ‫אפקטיבי‬ ‫סטטי‬ ‫לניתוח‬ ‫קסום‬ ‫פתרון‬! ‫טכניקות‬ ‫מספר‬ ‫של‬ ‫שילוב‬ o‫תהליך‬ ‫של‬ ‫והבנה‬ ‫ניתוח‬‫הבילד‬‫התוכנה‬ ‫להבנת‬ ‫כבסיס‬ o‫הקוד‬ ‫תחביר‬ ‫וניתוח‬ ‫הידור‬–‫ל‬‫לניתוח‬ ‫מודל‬ ‫ייצור‬ ‫שם‬ o‫השליטה‬ ‫גרף‬ ‫של‬ ‫זרימה‬ ‫ניתוח‬–‫ל‬‫המודרני‬ ‫הסטטי‬ ‫הניתוח‬ ‫ב‬ o‫סימבולית‬ ‫לוגיקה‬–‫גי‬‫שה‬‫סקלבילית‬‫ריצה‬ ‫בזמן‬ ‫התנהגות‬ ‫להסיק‬