אתם קוראים לזה הנדסה?

Download Report

Transcript אתם קוראים לזה הנדסה?

‫ד"ר דן אהרוני‬
‫ביה"ס להנדסה במכללה האקדמית כינרת בעמק הירדן‬
‫ומחשבה — מרכז המורים הארצי למדעי המחשב‬
‫חלקי ההרצאה‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪3‬‬
‫אתה נמצא כאן‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪4‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫[‪]...‬‬
‫‪ :‬ג ויתכנתו המתכנתים‪,‬‬
‫בשיטת "קודד ותקן" (‪ )code and fix‬תכנתו‪:‬‬
‫ד ויראו כי טוב‪:‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪5‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫איכות גרועה‬
‫תקלות‬
‫תפקודים חסרים‬
‫חוסר אמינות‬
‫קושי לתחזק‬
‫זמן פיתוח ארוך‬
‫"ז‬
‫חריגות מלו‬
‫עלות גבוהה‬
‫חריגות מתקציב‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪6‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪7‬‬
‫אתה נמצא כאן‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪8‬‬
‫הנדסה (‪?)Engineering‬‬
‫"‬
‫מהי"‬
‫מדע בסיסי‬
‫קנה‬
‫מידה‬
‫זמן‬
‫עלויות‬
‫איכות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫מוצר‬
‫שקופית ‪9‬‬
‫דיסציפלינות המרכיבות הנדסה‬
‫כלים‬
‫מודלים של‬
‫מחזור החיים‬
‫הבטחת איכות‬
‫דיסציפלינות ניהול‬
‫פעילויות פיתוח‬
‫מדע בסיסי‬
‫ניהול תצורה‬
‫מתמטיקה‬
‫שיטות פיתוח‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪10‬‬
‫דיסציפלינות המרכיבות הנדסה‬
‫כלים‬
‫כלי מחשוב הופכים את החיים לקלים יותר!‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪11‬‬
‫אתה נמצא כאן‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪12‬‬
‫מודלים של מחזור חיי תוכנה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪13‬‬
‫מודלים גנריים של מחזור חיי תוכנה‬
‫ועוד‬
‫ועוד‬
‫מודל מפל המים‬
‫בניית אבטיפוס‬
‫ועוד‬
‫פיתוח זריז‬
‫)‪(Agile development‬‬
‫ועוד‬
‫‪V1‬‬
‫‪V2‬‬
‫‪V‬‬
‫‪3‬‬
‫פיתוח אבולוציוני‬
‫בדיקות‬
‫התמרה ‪1‬‬
‫התמרה ‪2‬‬
‫התמרה ‪...‬‬
‫התמרה ‪n‬‬
‫מפרט‬
‫פורמאלי‬
‫התמרה פורמאלית‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫מודל הרכבת הרכיבים‬
‫ועוד‬
‫שקופית ‪14‬‬
‫מודל מפל המים — מודל הבסיס לכל המודלים‬
‫הגדרת דרישות‬
‫‪Requirements Def.‬‬
‫עיצוב מערכת ותוכנה‬
‫‪System & SW design‬‬
‫מימוש ובדיקת יחידות‬
‫‪Implementation‬‬
‫‪& unit testing‬‬
‫אינטגרציה ובדיקות מערכת‬
‫‪Integration & sys. test.‬‬
‫פעולה ותחזוקה‬
‫& ‪Operation‬‬
‫‪maintenance‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪15‬‬
‫מודל מפל המים — מודל הבסיס לכל המודלים‬
‫יתרונות‬
‫הגדרת דרישות‬
‫‪Requirements Def.‬‬
‫‪ ‬פיתוח מסודר ולוגי‬
‫‪ ‬הכל מתועד היטב‬
‫עיצוב מערכת ותוכנה‬
‫‪ ‬עבודה "לפי הספר"‬
‫‪System & SW design‬‬
‫מימוש ובדיקת יחידות‬
‫‪Implementation‬‬
‫‪& unit testing‬‬
‫אינטגרציה ובדיקות מערכת‬
‫‪Integration & sys. test.‬‬
‫פעולה ותחזוקה‬
‫& ‪Operation‬‬
‫‪maintenance‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪16‬‬
‫מודל מפל המים — מודל הבסיס לכל המודלים‬
‫חסרונות‬
‫הגדרת דרישות‬
‫‪Requirements Def.‬‬
‫‪ ‬סיכון גבוה לנפילה ל"בור הזפת" של הדרישות‬
‫(”‪)the requirements “tarpit‬‬
‫‪" ‬הכל או לא כלום"‬
‫עיצוב מערכת ותוכנה‬
‫‪System & SW design‬‬
‫‪ ‬דורש סבלנות מהלקוח‬
‫מימוש ובדיקת יחידות‬
‫‪Implementation‬‬
‫‪& unit testing‬‬
‫אינטגרציה ובדיקות מערכת‬
‫‪Integration & sys. test.‬‬
‫פעולה ותחזוקה‬
‫& ‪Operation‬‬
‫‪maintenance‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪17‬‬
‫מודל מפל המים — מודל הבסיס לכל המודלים‬
‫בכל זאת…‬
‫הגדרת דרישות‬
‫או‬
‫"אדון מרצה‪ ,‬למה אתה בכלל מלמד את זה?"‬
‫‪ ‬למעשה‪ ,‬כל המודלים האחרים הם‬
‫ווריאציות על מודל מפל המים‬
‫‪Requirements Def.‬‬
‫עיצוב מערכת ותוכנה‬
‫‪System & SW design‬‬
‫מימוש ובדיקת יחידות‬
‫‪Implementation‬‬
‫‪& unit testing‬‬
‫אינטגרציה ובדיקות מערכת‬
‫‪Integration & sys. test.‬‬
‫פעולה ותחזוקה‬
‫& ‪Operation‬‬
‫‪maintenance‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪18‬‬
‫מודל הפיתוח האבולוציוני‬
‫‪Evolutionary Development Model‬‬
‫עיצוב‬
‫ארכיטקטורה‬
‫דרישות‬
‫תוכנה‬
‫שימוש‪ ,‬תחזוקה‬
‫ותמיכה‬
‫שחרור‬
‫התוכנה‬
‫בנייה‬
‫אינטגרציה‬
‫ובדיקות‬
‫‪V1‬‬
‫דוקומנטציה‬
‫‪V2‬‬
‫בדיקת תוקף‬
‫‪Validation‬‬
‫‪testing‬‬
‫‪V3‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪19‬‬
‫המודל האינקרמנטאלי‬
‫אספקת‬
‫אינקרמנט ‪1‬‬
‫אספקת‬
‫אינקרמנט ‪2‬‬
‫אספקת‬
‫אינקרמנט ‪3‬‬
‫בדיקות‬
‫בדיקות‬
‫קידוד‬
‫עיצוב‬
‫בדיקות‬
‫קידוד‬
‫עיצוב‬
‫בדיקות‬
‫קידוד‬
‫קידוד‬
‫עיצוב‬
‫עיצוב‬
‫ניתוח‬
‫ניתוח‬
‫ניתוח‬
‫ניתוח‬
‫אספקת‬
‫אינקרמנט ‪4‬‬
‫זמן קלנדרי‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪20‬‬
‫המודל האינקרמנטאלי‬
‫אספקת‬
‫אינקרמנט ‪1‬‬
‫אספקת‬
‫אינקרמנט ‪2‬‬
‫אספקת‬
‫אינקרמנט ‪3‬‬
‫בדיקות‬
‫בדיקות‬
‫קידוד‬
‫עיצוב‬
‫בדיקות‬
‫קידוד‬
‫עיצוב‬
‫בדיקות‬
‫קידוד‬
‫קידוד‬
‫עיצוב‬
‫עיצוב‬
‫ניתוח‬
‫ניתוח‬
‫ניתוח‬
‫ניתוח‬
‫אספקת‬
‫אינקרמנט ‪4‬‬
‫זמן קלנדרי‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪21‬‬
‫בניית אבטיפוס (‪)prototyping‬‬
‫‪ ‬מטרות‪:‬‬
‫• הבנה טובה יותר של צרכי המשתמש‬
‫• בדיקת היתכנות (‪)feasibility study‬‬
‫גישות בבניית אבטיפוס‬
‫‪ ‬עשוי להפוך‬
‫למערכת התפעולית (לטוב ולרע)‬
‫‪ ‬מתאים במיוחד לממשקי משתמש‬
‫אבטיפוס בר‪-‬ביצוע ‪+‬‬
‫מפרט מערכת‬
‫בניית אבטיפוס להשלכה‬
‫)‪(throw-away prototyping‬‬
‫דרישות‬
‫כלליות‬
‫מערכת לאספקה‬
‫בניית אבטיפוס מתפתח‬
‫)‪(evolutionary prototyping‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪22‬‬
‫מודל הרכבת רכיבים (‪)Component assembly‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪23‬‬
‫מודל הרכבת רכיבים (‪)Component assembly‬‬
‫‪ ‬התוכנה מורכבת ממרכיבים קיימים‬
‫‪ ‬מסגרת טובה‪ :‬תמ"ע‬
‫‪ ‬פוטנציאל מצוין להקטנת התקציב‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪24‬‬
‫שיטות פיתוח זריז (‪)Agile Development‬‬
‫מנשר הפיתוח הזריז — ‪The Agile Manifesto‬‬
‫"למדנו להעריך‪:‬‬
‫‪ ‬בני אדם ופעולות גומלין על פני תהליכים וכלים‬
‫‪ ‬תוכנה עובדת על פני תיעוד מקיף‬
‫‪ ‬שיתוף פעולה עם הלקוח על פני משא ומתן דרך חוזה‬
‫‪ ‬היענות לשינויים על פני התקדמות על פי התכנית‬
‫כלומר‪ ,‬בעוד שיש ערך לפריטים משמאל‪ ,‬אנחנו‬
‫מעריכים יותר את הפריטים מימין"‪.‬‬
‫‪http://www.agilemanifesto.org/‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪25‬‬
‫שיטות פיתוח זריז (‪)Agile Development‬‬
‫עקרונות הפיתוח הזריז‬
‫‪‬‬
‫במקום הראשון‪ :‬סיפוק הלקוח‪ ,‬ע"י אספקה מהירה ומתמשכת של תוכנה עובדת‪.‬‬
‫‪ ‬בני אדם ופעולות גומלין על פני תהליכים וכלים‬
‫‪ ‬תוכנה עובדת על פני תיעוד מקיף‬
‫‪ ‬שיתוף פעולה עם הלקוח על פני משא ומתן דרך חוזה‬
‫‪ ‬היענות לשינויים על פני התקדמות על פי התכנית‬
‫אנשי העסקים —‬
‫חלק מהצוות כל הזמן‬
‫גרסה‬
‫כל שבועיים – חודשיים‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪26‬‬
‫שיטות פיתוח זריז (‪)Agile Development‬‬
‫עקרונות הפיתוח הזריז‬
‫‪‬‬
‫במקום הראשון‪ :‬סיפוק הלקוח‪ ,‬ע"י אספקה מהירה ומתמשכת של תוכנה עובדת‪.‬‬
‫הלקוח רוצה עוד‬
‫בית התוכנה מספק‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪27‬‬
‫שיטות פיתוח זריז (‪)Agile Development‬‬
‫תכנות מוקצן (‪)XP — Extreme Programming‬‬
‫שם לא מוצלח; מוטב היה‪:‬‬
‫פיתוח מוקצן (‪)Extreme Development‬‬
‫מקור מצויין לקבלת סקירה על ‪:XP‬‬
‫‪http://www.extremeprogramming.org/‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪28‬‬
‫שיטות פיתוח זריז (‪)Agile Development‬‬
‫תכנות מוקצן (‪)XP — Extreme Programming‬‬
‫מאפיינים — תשובות קיצוניות לשאלות רציניות‬
‫‪ ‬בעיות של "שיתוק" דרישות וארכיטקטורה?‬
‫‪ ‬דרישות וארכיטקטורה‪ :‬עיצוב לאורך הדרך‬
‫‪ ‬דרישות = סיפורי משתמש; מממשים אחד בכל שלב‬
‫‪ ‬לא מקדישים מספיק זמן לבדיקות?‬
‫‪ ‬כותבים את הבדיקות תחילה‬
‫תכנות מוכוון בדיקות (‪)Test Driven Development — TDD‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪29‬‬
‫שיטות פיתוח זריז (‪)Agile Development‬‬
‫קורס הנדסת תוכנה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪30‬‬
‫שיטות פיתוח זריז (‪)Agile Development‬‬
‫תכנות מוקצן (‪)XP — Extreme Programming‬‬
‫מאפיינים — תשובות קיצוניות לשאלות רציניות‬
‫‪ ‬בעיות של "שיתוק" דרישות וארכיטקטורה?‬
‫‪ ‬דרישות וארכיטקטורה‪ :‬עיצוב לאורך הדרך‬
‫‪ ‬דרישות = סיפורי משתמש; מממשים אחד בכל שלב‬
‫‪ ‬לא מקדישים מספיק זמן לבדיקות?‬
‫‪ ‬כותבים את הבדיקות תחילה‬
‫תכנות מוכוון בדיקות (‪)Test Driven Development — TDD‬‬
‫‪ ‬אין מספיק סקרי עמיתים (‪ )peer review‬ואיכות קוד?‬
‫‪ ‬סקר עמיתים קבוע באמצעות תכנות בזוגות‬
‫‪ ‬קשה לקבל תגובות של הלקוח?‬
‫‪ ‬הצוות‪ :‬מתכנתים ‪ +‬נציג הלקוח באתר‬
‫‪ ‬קשה לשמור על איכות קוד בעבודה לאורך שעות?‬
‫‪ ‬שבוע עבודה של ‪ 40‬שעות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪31‬‬
‫אתה נמצא כאן‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪32‬‬
‫פעילויות המפתח בפיתוח תוכנה — סיכום‬
‫ניתוח דרישות תוכנה והכנת מפרטים‬
‫עיצוב ארכיטקטורת תוכנה‬
‫בניית‬
‫שילוב‬
‫התוכנה‬
‫בדיקות שילוב‬
‫עיצוב מפורט‪,‬‬
‫קידוד‪,‬‬
‫בדיקת יחידות‬
‫תכנון‬
‫בדיקות‬
‫תיקוף‬
‫בדיקות תיקוף‬
‫שחרור והתקנה‬
‫תחזוקה ותמיכה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪33‬‬
‫פעילויות המפתח בפיתוח מערכת‬
‫ניתוח דרישות מערכת והכנת מפרטים‬
‫עיצוב (תכן‪ ,‬תיכון) מערכת‬
‫דרישות תוכנה‬
‫תכנון‬
‫שילוב‬
‫)‪(Integration‬‬
‫מערכת‬
‫דרישות חומרה‬
‫תמיכת הנדסת המערכת‪ :‬עיצוב חומרה‬
‫עיצוב תוכנה‬
‫תכנון‬
‫תכנון‬
‫‪ ‬בקרת ממשקים‬
‫בניית שילוב בדיקות‬
‫בניית שילוב בדיקות‬
‫אבטיפוס‬
‫‪ ‬תיאום חומרה‪/‬תוכנה‬
‫חומרה חומרה תיקוף‬
‫תוכנה תוכנה תיקוף‬
‫‪ ‬ניהול דרישות מערכת‬
‫בדיקות שילוב חומרה‬
‫בדיקות שילוב תוכנה‬
‫‪ ‬ניהול עיצוב מערכת‬
‫בדיקות תיקוף חומרה‬
‫בדיקות תיקוף תוכנה‬
‫‪ ‬תיעוד למשתמש‬
‫שחרור תוכנה‬
‫תכנון‬
‫בדיקות‬
‫תיקוף‬
‫מערכת‬
‫שחרור חומרה‬
‫שילוב מערכת‬
‫בדיקות תיקוף מערכת‬
‫שחרור גרסת מערכת‬
‫תחזוקת גרסה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪34‬‬
‫מטריצת תהליך הנדסת תוכנה‬
‫סוגיות‬
‫דרישות תוכנה‬
‫עיצוב‬
‫ארכיטקטורה‬
‫בניית התוכנה‪:‬‬
‫• עיצוב מפורט‬
‫• קידוד‬
‫• בדיקות יחידה‬
‫שילוב‬
‫פעילויות‬
‫בדיקות תיקוף‬
‫שחרור ופריסה‬
‫תחזוקה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪35‬‬
‫מטריצת תהליך הנדסת תוכנה‬
‫סוגיות‬
‫תוצרים‬
‫‪ ‬מפרטים‬
‫‪ ‬תיאורים‬
‫‪ ‬תרשימים‬
‫‪ ‬קוד מקור‬
‫דרישות תוכנה‬
‫עיצוב‬
‫ארכיטקטורה‬
‫בניית התוכנה‪:‬‬
‫• עיצוב מפורט‬
‫• קידוד‬
‫• בדיקות יחידה‬
‫שילוב‬
‫פעילויות‬
‫בדיקות תיקוף‬
‫שחרור ופריסה‬
‫תחזוקה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪36‬‬
‫מטריצת תהליך הנדסת תוכנה‬
‫סוגיות‬
‫תוצרים‬
‫נהגי פיתוח תוצרים‬
‫‪ ‬מפרטים‬
‫‪ ‬תיאורים‬
‫‪ ‬תרשימים‬
‫‪ ‬קוד מקור‬
‫‪ ‬נהלים‬
‫‪ ‬תקנים‬
‫‪ ‬שיטות‬
‫‪ ‬כלים‬
‫דרישות תוכנה‬
‫עיצוב‬
‫ארכיטקטורה‬
‫בניית התוכנה‪:‬‬
‫• עיצוב מפורט‬
‫• קידוד‬
‫• בדיקות יחידה‬
‫שילוב‬
‫פעילויות‬
‫בדיקות תיקוף‬
‫שחרור ופריסה‬
‫תחזוקה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪37‬‬
‫מטריצת תהליך הנדסת תוכנה‬
‫סוגיות‬
‫תוצרים‬
‫‪ ‬מפרטים‬
‫‪ ‬תיאורים‬
‫‪ ‬תרשימים‬
‫‪ ‬קוד מקור‬
‫נהגי פיתוח תוצרים נהגי הבטחת איכות תוכנה‬
‫‪ ‬נהלים‬
‫‪ ‬תקנים‬
‫‪ ‬שיטות‬
‫‪ ‬כלים‬
‫‪ ‬הערכת תוצרים‬
‫‪ ‬הערכת התהליך‬
‫‪ ‬מבדקים פנימיים‬
‫‪ ‬פעולות מתקנות‬
‫דרישות תוכנה‬
‫עיצוב‬
‫ארכיטקטורה‬
‫בניית התוכנה‪:‬‬
‫• עיצוב מפורט‬
‫• קידוד‬
‫• בדיקות יחידה‬
‫שילוב‬
‫פעילויות‬
‫בדיקות תיקוף‬
‫שחרור ופריסה‬
‫תחזוקה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪38‬‬
‫מטריצת תהליך הנדסת תוכנה‬
‫סוגיות‬
‫תוצרים‬
‫‪ ‬מפרטים‬
‫‪ ‬תיאורים‬
‫‪ ‬תרשימים‬
‫‪ ‬קוד מקור‬
‫נהגי פיתוח תוצרים נהגי הבטחת איכות תוכנה נהגי בקרת תוצרים‬
‫‪ ‬נהלים‬
‫‪ ‬תקנים‬
‫‪ ‬שיטות‬
‫‪ ‬כלים‬
‫‪ ‬הערכת תוצרים‬
‫‪ ‬הערכת התהליך‬
‫‪ ‬מבדקים פנימיים‬
‫‪ ‬פעולות מתקנות‬
‫‪ ‬בקרת מסמכים‬
‫‪ ‬בקרת קוד מקור‬
‫‪ ‬בקרת גרסאות‬
‫‪ ‬בקרת שינויים‬
‫דרישות תוכנה‬
‫עיצוב‬
‫ארכיטקטורה‬
‫בניית התוכנה‪:‬‬
‫• עיצוב מפורט‬
‫• קידוד‬
‫• בדיקות יחידה‬
‫שילוב‬
‫פעילויות‬
‫בדיקות תיקוף‬
‫שחרור ופריסה‬
‫תחזוקה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪39‬‬
‫מטריצת תהליך הנדסת תוכנה‬
‫תוצרים‬
‫‪ ‬מפרטים‬
‫‪ ‬תיאורים‬
‫‪ ‬תרשימים‬
‫‪ ‬קוד מקור‬
‫נהגי פיתוח תוצרים נהגי הבטחת איכות תוכנה נהגי בקרת תוצרים‬
‫‪ ‬נהלים‬
‫‪ ‬תקנים‬
‫‪ ‬שיטות‬
‫‪ ‬כלים‬
‫‪ ‬הערכת תוצרים‬
‫‪ ‬הערכת התהליך‬
‫‪ ‬מבדקים פנימיים‬
‫‪ ‬פעולות מתקנות‬
‫‪ ‬בקרת מסמכים‬
‫‪ ‬בקרת קוד מקור‬
‫‪ ‬בקרת גרסאות‬
‫‪ ‬בקרת שינויים‬
‫דרישות תוכנה‬
‫עיצוב‬
‫ארכיטקטורה‬
‫בניית התוכנה‪:‬‬
‫• עיצוב מפורט‬
‫• קידוד‬
‫• בדיקות יחידה‬
‫שילוב‬
‫בדיקות תיקוף‬
‫שחרור ופריסה‬
‫תחזוקה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪40‬‬
‫אתה נמצא כאן‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪41‬‬
‫רמות של דרישות‬
‫• דרישות‬
‫של השיווק‬
‫רמת השיווק‬
‫עם הפנים‬
‫למשתמש‬
‫• דרישות‬
‫• עיצוב‬
‫של המערכת‬
‫רמת המערכת‬
‫רמת התוכנה‪/‬חומרה‬
‫• דרישות‬
‫• עיצוב‬
‫של החומרה‬
‫רמת רכיבי התוכנה‬
‫• דרישות‬
‫• עיצוב‬
‫של התוכנה‬
‫• דרישות‬
‫• עיצוב‬
‫של תת‪-‬מערכת‬
‫בתוכנה‬
‫• דרישות‬
‫• עיצוב‬
‫של רכיב תוכנה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪42‬‬
‫טיפוסי דרישות תוכנה‬
‫‪‬‬
‫דרישות פונקציונאליות‬
‫‪‬‬
‫‪‬‬
‫השירותים שהמערכת צריכה לספק‬
‫דרישות לא‪-‬פונקציונאליות‬
‫‪‬‬
‫תכונות המערכת ואילוצי התהליך‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪43‬‬
‫דרישות לא‪-‬פונקציונאליות‬
‫דרישות לא פונקציונאליות‬
‫דרישות חיצוניות‬
‫דרישות ארגוניות‬
‫דרישות מוצר‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪44‬‬
‫דרישות לא‪-‬פונקציונאליות‬
‫דרישות לא פונקציונאליות‬
‫דרישות חיצוניות‬
‫דרישות‬
‫חוקתיות‬
‫דרישות‬
‫אתיות‬
‫דרישות‬
‫בטיחות‬
‫דרישות‬
‫פרטיּות‬
‫דרישות ארגוניות‬
‫דרישות‬
‫פעולה הדדית‬
‫דרישות‬
‫תקנים‬
‫דרישות‬
‫ניידות‬
‫דרישות מימוש‬
‫(סביבת פיתוח‪,‬‬
‫שפה וכו')‬
‫דרישות מוצר‬
‫דרישות‬
‫מהימנות‬
‫דרישות‬
‫יעילות‬
‫דרישות‬
‫שימושיות‬
‫דרישות‬
‫אספקה‬
‫דרישות‬
‫מקום‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫דרישות‬
‫ביצועים‬
‫שקופית ‪45‬‬
‫טיפוסי דרישות תוכנה (המשך)‬
‫‪‬‬
‫דרישות פונקציונאליות‬
‫‪‬‬
‫‪‬‬
‫דרישות לא‪-‬פונקציונאליות‬
‫‪‬‬
‫‪‬‬
‫השירותים שהמערכת צריכה לספק‬
‫ממשק משתמש‬
‫תכונות המערכת ואילוצי התהליך‬
‫דרישות ממשק‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫ממשק משתמש‬
‫חומרה‪-‬תוכנה‬
‫תוכנה‪-‬תוכנה‬
‫תוכנה‪-‬תקשורת‬
‫‪…‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪46‬‬
‫פעילויות בהפקת דרישות תוכנה‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫תיחום הפרויקט‬
‫זיהוי הדרישות‬
‫ייצוג הדרישות‬
‫ניתוח הדרישות‬
‫אימות הדרישות‬
‫תיקוף הדרישות‬
‫בקרת הדרישות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪47‬‬
‫תיחום הפרויקט — תרשים הֶ קשֵ ר‬
‫מחשב‬
‫ראשי‬
‫לקוח‬
‫כספומט‬
‫נציג‬
‫שרות לקוחות‬
‫טכנאי תחזוקה‬
‫של כספומטים‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪48‬‬
‫שיטות לייצוג דרישות‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫שפה טבעית‬
‫מודל הישויות והקשרים‬
‫מקרי שימוש ותסריטים‬
‫בניית אבטיפוס‬
‫מכונות מצבים סופיות‬
‫…‬
‫הערה‪ :‬כל הנ"ל אינם זרים הדדית (‪)mutually exclusive‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪49‬‬
‫שיטות לייצוג דרישות‬
‫שפה טבעית‬
‫המערכת המוצגת כאן‪ ,‬היא מערכת של כספומט‪ .‬מערכת זו מאפשרת ללקוח‬
‫לבצע פעולות שונות מבלי להזדקק לעזרתו של פקיד הבנק‪ .‬בצורה זו בלה‬
‫בלה בלה בלה בלה בלה…‬
‫המערכת תהיה מאובטחת מבחינת התקשורת‪ ,‬וכן המערכת תוודא את זהותו‬
‫של המשתמש באמצעות כרטיס האשראי שיוכנס למערכת עם תחילתו של כל‬
‫מושב בו המשתמש בלה בלה בלה בלה בלה בלה בלה…‬
‫הלקוח יתחיל את פעולתו בהכנסת הכרטיס למכשיר הכספומט‪ .‬המערכת‬
‫תתקשר למחשב המרכזי‪ ,‬ותוודא שאכן הכרטיס הוא תקף‪ .‬במידה שלא‪ ,‬היא‬
‫תודיע למשתמש בלה בלה בלה בלה בלה‪ .‬אם הבדיקה הצליחה‪ ,‬המערכת‬
‫תבקש מהמשתמש להכניס קוד אישי‪ ,‬אותו היא תבדוק בלה בלה בלה בלה…‬
‫בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה‬
‫בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה‬
‫בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה בלה …‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪50‬‬
‫שיטות לייצוג דרישות‬
‫מודל הישויות והקשרים (‪)ERM — Entity-Relationship Model‬‬
‫יתרה‬
‫אחוז ריבית‬
‫חשבונות‬
‫חסכון‬
‫סכום‬
‫משיכת יתר‬
‫חשבונות‬
‫עו"ש‬
‫‪D‬‬
‫מס‪ .‬חשבון‬
‫חשבון‬
‫מס‪ .‬הלוואה‬
‫תשלום‬
‫תשלום‬
‫ההלוואה‬
‫הלוואה‬
‫המפקיד‬
‫שם לקוח‬
‫ניתנה ל‬
‫סכום‬
‫מאז‬
‫עובד‬
‫של‬
‫כתובת‬
‫מנהל‬
‫עובד‬
‫לקוח‬
‫מס‪ .‬חשבון‬
‫לקוח‪-‬בנקאי‬
‫עובד‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪51‬‬
‫שיטות לייצוג דרישות‬
‫מודל הישויות והקשרים — גרסת ‪UML‬‬
‫חשבונות‬
‫חסכון‬
‫חשבון‬
‫אחוז ריבית‬
‫חשבונות‬
‫עו"ש‬
‫משיכת יתר‬
‫יתרה‬
‫מס‪ .‬חשבון‬
‫*‪ 0..‬המפקיד‬
‫הלוואה‬
‫מס‪ .‬הלוואה‬
‫סכום‬
‫‪1..2‬‬
‫‪1..1‬‬
‫*‪0..‬‬
‫שם*‪0..‬‬
‫מספר תשלום‬
‫כתובת‬
‫מס‪ .‬חשבון‬
‫תשלום‬
‫ההלוואה‬
‫בנקאי‪-‬של‬
‫*‪0..‬‬
‫תשלום‬
‫לקוח‬
‫עובד‪-‬של‬
‫מאז‬
‫‪0..1‬‬
‫מנהל ‪1..1‬‬
‫עובד‬
‫*‪0..‬‬
‫עובד‪-‬של‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫עובד‬
‫שקופית ‪52‬‬
‫שיטות לייצוג דרישות‬
‫מקרי שימוש (‪ )Use cases‬ותרחישים (‪)Scenarios‬‬
‫"כיצד להפוך את הדרישות הפונקציונאליות לקריאות וסקירות "‬
‫?‬
‫מקרה שימוש‬
‫פונקציונאליּות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪53‬‬
‫שיטות לייצוג דרישות‬
‫מקרי שימוש (‪ )Use cases‬ותרחישים (‪)Scenarios‬‬
‫"כיצד להפוך את הדרישות הפונקציונאליות לקריאות וסקירות "‬
‫?‬
‫מקרה שימוש‬
‫תרחיש‬
‫ראשוני‬
‫פונקציונאליּות‬
‫תרחיש‬
‫ראשוני‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שלבי ביצוע‬
‫שקופית ‪54‬‬
‫שיטות לייצוג דרישות‬
‫מקרי שימוש (‪ )Use cases‬ותרחישים (‪)Scenarios‬‬
‫"כיצד להפוך את הדרישות הפונקציונאליות לקריאות וסקירות "‬
‫?‬
‫מקרה שימוש‬
‫תרחיש‬
‫ראשוני‬
‫תרחיש‬
‫משני‬
‫פונקציונאליּות‬
‫תרחיש‬
‫ראשוני‬
‫תרחיש‬
‫משני‬
‫תרחיש‬
‫משני‬
‫שלבי ביצוע‬
‫תרחיש‬
‫משני‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪55‬‬
‫שיטות לייצוג דרישות‬
‫מקרי שימוש (‪ )Use cases‬ותרחישים (‪)Scenarios‬‬
‫"כיצד להפוך את הדרישות הפונקציונאליות לקריאות וסקירות "‬
‫?‬
‫מקרה שימוש‬
‫תרחיש‬
‫ראשוני‬
‫תרחיש‬
‫משני‬
‫פונקציונאליּות‬
‫תרחיש‬
‫ראשוני‬
‫תרחיש‬
‫משני‬
‫תרחיש‬
‫משני‬
‫שלבי ביצוע‬
‫תרחיש‬
‫משני‬
‫תרחיש‬
‫משני‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪56‬‬
‫שיטות לייצוג דרישות‬
‫מקרי שימוש (‪ )Use cases‬ותרחישים (‪)Scenarios‬‬
‫משוך כסף‬
‫מהחשבון‬
‫לקוח‬
‫הצג שאילתא‬
‫לגבי החשבון‬
‫נציג‬
‫שירות לקוחות‬
‫הוסף כסף‬
‫לכספומט‬
‫טכנאי תחזוקת‬
‫כספומטים‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪57‬‬
‫שיטות לייצוג דרישות‬
)Scenarios( ‫) ותרחישים‬Use cases( ‫מקרי שימוש‬
No
Entity
1.
Customer
Inserts customer bank card through the ATM’s card
reader.
2.
ATM
Reads the bank id and account number from the
customer’s card and requests the main computer to
validate the bank id and account number.
3.
Main
computer
Receives the request from the ATM, validates the bank
id and account number, and returns a validation
confirmation message to the ATM.
4.
ATM
Receives a validation confirmation message from the
Main Computer and then prompts the customer to enter
his code.
5.
Customer
Enters his card code.
6.
ATM
Validates the card code and prompts the customer to
enter the withdrawal amount in multiples of 50 I.S.
58 ‫שקופית‬
Inputs, Actions, Outputs
‫ אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬:‫ד"ר דן אהרוני‬
Remarks
Ex 1: Card has
expired
Ex 2: Card has
been blacklisted
Ex 1: code is
invalid
‫שיטות לייצוג דרישות‬
)Scenarios( ‫) ותרחישים‬Use cases( ‫מקרי שימוש‬
No
Entity
Inputs, Actions, Outputs
3.1.1 Main
Determines that the bank card has expired.
computer Returns a message to the ATM indicating that the card
has expired and the date of expiration.
3.1.2 ATM
 Receives the expiration message.
 Displays a suitable message on the screen indicating
that the card has expired and the date of expiration.
 Prompts the user to terminate the session.
3.1.3 Customer Acknowledges the message and terminates the session
3.1.4 ATM
59 ‫שקופית‬
Returns to the customer the expired card.
‫ אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬:‫ד"ר דן אהרוני‬
Remarks
‫שיטות לייצוג דרישות‬
‫מימדי ניתוח דרישות והגדרתן‬
‫מקרי שימוש‪/‬תרחישים‬
‫נתונים‬
‫מודל הישויות והקשרים‬
‫מכונות מצבים סופיות‬
‫תפקוד‬
‫בקרה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪60‬‬
‫שיטות לייצוג דרישות‬
‫בניית אבטיפוס‬
‫אבטיפוס בר‪-‬ביצוע ‪+‬‬
‫מפרט מערכת‬
‫בניית אבטיפוס להשלכה‬
‫)‪(throw-away prototyping‬‬
‫דרישות‬
‫כלליות‬
‫מערכת לאספקה‬
‫בניית אבטיפוס מתפתח‬
‫)‪(evolutionary prototyping‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪61‬‬
‫האם פעילות הדרישות מצדיקה את המאמץ?‬
‫מה מחירן של שגיאות בדרישות?‬
‫שלב‬
‫הגדרת הדרישות ‪.1–.2‬‬
‫עיצוב‬
‫קידוד‬
‫בדיקת יחידות‬
‫‪0.5‬‬
‫‪1‬‬
‫‪2‬‬
‫בדיקות קבלה‬
‫‪5‬‬
‫תחזוקה‬
‫‪20‬‬
‫עלות תיקון יחסית‬
‫‪Boehm ‘76, 88‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪62‬‬
‫אתה נמצא כאן‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪63‬‬
‫הצורך בעיצוב‬
‫דרישות‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪ 6‬חדרים‬
‫‪ 2‬אמבטיות‬
‫‪ 170‬מ"ר‬
‫מזגן מרכזי‬
‫עלות <= ‪150,000$‬‬
‫עיצוב — הגשר בין הדרישות לבין הבניה‬
‫בניה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪64‬‬
‫רכיבי עיצוב תוכנה‬
‫מערכת‪/‬תת‪-‬מערכת‬
‫אדם‬
‫תוכנה‬
‫תת‪-‬מערכת תוכנה‬
‫תת‪-‬מערכת תוכנה‬
‫מודול‬
‫מודול‬
‫טיפוס‬
‫חומרה‬
‫תת‪-‬מערכת תוכנה‬
‫מודול‬
‫עיצוב‬
‫ארכיטקטורה‬
‫מודול‬
‫הליך‬
‫טיפוסים‬
‫קבועים‬
‫משתנים‬
‫הליכים‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪65‬‬
‫"?‬
‫האם תמיד"עיצוב ארכיטקטורה תחילה‬
‫>‪#include <stdlib.h‬‬
‫>‪#include <fcntl.h‬‬
‫{ )(‪void main‬‬
‫;‪int f‬‬
‫;‪int length‬‬
‫;‪int wrote‬‬
‫;]‪char string[40‬‬
‫‪f=open("com3",‬‬
‫;)‪O_RDWR‬‬
‫סגנון עבודה אישי‪:‬‬
‫‪C:\>Greet‬‬
‫!‪Hello, World‬‬
‫אופי המערכת‪:‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪66‬‬
‫רצפט? אלגוריתם?‬
‫איך? האם יש" "‬
‫יש הנחיות‬
‫אין "רצפט"‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪67‬‬
‫"‪ :‬עיצוב קנוני‬
‫"רצפט‬
‫הסתמכות על‬
‫גישות עיצוב "טובות" וידועות היטב‬
‫בתחום נתון‬
‫דוגמה‪ :‬מודל של קומפיילר‬
‫טבלת הסמלים‬
‫מחולל‬
‫קוד‬
‫נתח‬
‫סמנטי‬
‫נתח‬
‫תחבירי‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫נתח‬
‫לקסיקאלי‬
‫שקופית ‪68‬‬
‫"‪ :‬תבניות עיצוב ארכיטקטורה‬
‫"רצפט‬
‫דוגמאות לתבניות עיצוב ארכיטקטורה‪:‬‬
‫‪ ‬שכבות (מכונה מופשטת)‬
‫‪ ‬מאגר‬
‫‪ ‬שרת‪-‬לקוח‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪69‬‬
‫"‪ :‬תבניות עיצוב ארכיטקטורה‬
‫"רצפט‬
‫ארכיטקטורת שכבות‬
‫דוגמה‪ :‬מבנה שכבתי של מערכת הפעלה‬
‫השכבה הזו‬
‫מדברת עם זו‬
‫דרך זו‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪70‬‬
‫"‪ :‬תבניות עיצוב ארכיטקטורה‬
‫"רצפט‬
‫ארכיטקטורה בתבנית "מאגר"‬
‫דוגמה‪ :‬ארכיטקטורת כלי ‪CASE‬‬
‫נתח עיצוב‬
‫עורך טקסט‬
‫מאגר הפרויקט‬
‫מחולל דוחות‬
‫עורך עיצוב‬
‫מחולל קוד‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪71‬‬
‫"‪ :‬תבניות עיצוב ארכיטקטורה‬
‫"רצפט‬
‫ארכיטקטורת שרת‪-‬לקוח‬
‫לקוח ‪1‬‬
‫לקוח ‪2‬‬
‫לקוח ‪3‬‬
‫לקוח ‪4‬‬
‫רשת‬
‫שרת ‪HTML‬‬
‫שרת תמונות‬
‫שרת וידיאו‬
‫שרת קטלוג‬
‫מסמכי ‪HTML‬‬
‫קבצי תמונות‬
‫קבצי תמונות‬
‫קטלוג‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪72‬‬
‫אתה נמצא כאן‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪73‬‬
‫מינוח‬
‫שגיאה (‪,)error‬‬
‫טעות (‪)mistake‬‬
‫פגם (‪,)defect‬‬
‫תקלה (‪)fault‬‬
‫כשל (‪,)failure‬‬
‫תקרית (‪)incident‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪74‬‬
‫רמות בדיקה‬
‫‪‬‬
‫בדיקות הליכים‬
‫‪‬‬
‫בדיקות מודולים‬
‫‪‬‬
‫בדיקות שילוב תוכנה‬
‫‪‬‬
‫בדיקות לתיקוף תוכנה‬
‫‪‬‬
‫בדיקות לשילוב מערכת‬
‫‪‬‬
‫בדיקות לתיקוף מערכת‬
‫‪‬‬
‫בדיקות קבלה‬
‫‪‬‬
‫בדיקות אלפא‬
‫‪‬‬
‫בדיקות ביטא‬
‫בדיקת יחידות‬
‫)‪(Unit Testing‬‬
‫בדיקות שילוב (אינטגראציה)‬
‫בדיקות לתיקוף דרישות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪75‬‬
‫מקרי בדיקה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪76‬‬
‫גישות לעריכת בדיקות‬
‫שני מימדים עיקריים‬
‫תפקודיֹות‪/‬מבניֹות‬
‫סטטיֹות‪/‬דינאמיֹות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪77‬‬
‫גישות לעריכת בדיקות‬
‫בדיקות סטטיות ודינאמיות‬
‫בדיקות סטטיות —‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫תכנית‬
‫אימות‪/‬תיקוף‬
‫דינאמי‬
‫קריאת קוד‬
‫קריאת תרשימים‬
‫וכו'‬
‫עיצוב‬
‫מפורט‬
‫אימות‬
‫סטטי‬
‫מפרט‬
‫פורמאלי‬
‫עיצוב‬
‫ברמה הגבוהה‬
‫בדיקות דינאמיות — הרצה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫מפרט‬
‫דרישות‬
‫אבטיפוס‬
‫שקופית ‪78‬‬
‫גישות לעריכת בדיקות‬
‫בדיקות סטטיות ודינאמיות‬
‫דוגמה לכלי בדיקות סטטיות‪ Lint :‬עבור ‪ C‬ו‪C++ -‬‬
‫• בדיקת ערכים‪ :‬אתחול; אינדקסים מחוץ לתחום; ועוד‪.‬‬
‫• בדיקות ‪strong typing‬‬
‫• גילוי קוד מת‬
‫• מקרו'ס שלא משתמשים בהם‬
‫• ועוד‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪79‬‬
‫גישות לעריכת בדיקות‬
‫בדיקות תפקודיות ומבניות‬
‫בדיקות תפקודיות (פונקציונאליות‪" ,‬קופסה שחורה")‬
‫‪ ‬ע"פ הדרישות ההתנהגותיות החיצוניות‬
‫‪ ‬ניתן להתחיל בתכנונן מוקדם בתהליך הפיתוח‬
‫בדיקות מבניות‬
‫("קופסה לבנה" או "קופסת זכוכית")‬
‫‪ ‬ע"פ ידע על העיצוב והמימוש של הרכיב‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪80‬‬
‫שיטות לעריכת בדיקות תפקודיות‬
‫חלוקת שקילות‬
‫‪0‬‬
‫מחלקת שקילות‪:‬‬
‫‪i≤0‬‬
‫מחלקת שקילות‪:‬‬
‫‪i<0‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪81‬‬
‫שיטות לעריכת בדיקות תפקודיות‬
‫חלוקת שקילות‬
‫‪1‬‬
‫מחלקת שקילות‪:‬‬
‫‪i≤0‬‬
‫‪0‬‬
‫מחלקת שקילות‪:‬‬
‫‪i<0‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪82‬‬
‫שיטות לעריכת בדיקות תפקודיות‬
‫חלוקת שקילות‬
‫‪1‬‬
‫‪0‬‬
‫מחלקת שקילות‪:‬מח' שקילות‪:‬‬
‫‪0≥i<1‬‬
‫‪i≤1‬‬
‫מחלקת שקילות‪:‬‬
‫‪i<0‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪83‬‬
‫שיטות לעריכת בדיקות תפקודיות‬
‫ניחוש שגיאות‬
‫מבוסס על‪:‬‬
‫‪My package‬‬
‫>>‪<<subsystem‬‬
‫‪A‬‬
‫>>‪<<subsystem‬‬
‫‪C‬‬
‫>>‪<<subsystem‬‬
‫‪B‬‬
‫‪+ aPublicClass‬‬
‫‪+ anotherPublicClass‬‬
‫‪- aPrivateClass‬‬
‫‪# aProtectedClass‬‬
‫ידע של העיצוב‬
‫ידע של הדרישות‬
‫יצירת מקרי בדיקה בהתבסס על ניחוש‪,‬‬
‫היכן סביר שימצאו פגמים בתכנה‬
‫יש להשתמש בשיטה זו‬
‫על מנת להשלים שיטות אחרות‬
‫אינטואיציה‬
‫ניסיון אישי ומשותף‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪84‬‬
‫בדיקה מבנית ברמת ההליך‪ :‬בעיית כיסוי הקוד‬
‫‪A‬‬
‫‪Loop <= 20 x‬‬
‫• כ‪ 1014-‬מסלולים אפשריים מ‪ A-‬ל‪!B-‬‬
‫• בדיקה אחת בכל ‪← 1mSec‬‬
‫כ‪ 3170-‬שנים למעבר על כל המסלולים!‬
‫‪B‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪85‬‬
‫בדיקה מבנית ברמת ההליך‪ :‬בעיית כיסוי הקוד‬
‫‪A‬‬
‫‪B‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪86‬‬
‫בדיקה מבנית ברמת ההליך‪ :‬בעיית כיסוי הקוד‬
‫‪A‬‬
‫‪c>a and a>b‬‬
‫‪B‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪87‬‬
‫ בעיית כיסוי הקוד‬:‫בדיקה מבנית ברמת ההליך‬
Class BinSearch {
//
//
public static void search ( int key, int [] elemArray, result R)
{
int bottom =0 ;
int top = elemArray.length – 1 ;
int mid ;
r.found = false ;
r.index = -1 ;
while (bottom <= top)
{ mid = (top + bottom) / 2 ;
if (elemArray [mid] == key
{ r.index = mid ;
r.found = true ;
return ;
} // if part
else
{ if (elemArray [mid] < key)
bottom = mid + 1 ;
else
top = mid – 1 ;
}
} // while loop
} //search
} //BinSearch
88 ‫שקופית‬
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
‫ אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬:‫ד"ר דן אהרוני‬
:‫דוגמה‬
‫הליך חיפוש בינארי‬
‫בדיקה מבנית ברמת ההליך‪ :‬בעיית כיסוי הקוד‬
‫‪1..4‬‬
‫‪ ‬הנתיבים הב"ת דרך התוכנית הם‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪5‬‬
‫‪1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14‬‬
‫… ‪1, 2, 3, 4, 5, 6, 7, 11, 12, 5,‬‬
‫… ‪1, 2, 3, 4, 5, 6, 7, 11, 13, 5,‬‬
‫‪1, 2, 3, 4, 5, 14‬‬
‫‪ ‬קביעת מקרה בדיקה לכל נתיב‪ ,‬עבור כל‬
‫החלטה פשוטה‪.‬‬
‫‪ ‬כך כל ענף בתוכנית מבוצע לפחות פעם אחת‪,‬‬
‫וכל החלטה נבדקת הן עבור תנאי ‪ true‬והן‬
‫עבור ‪.false‬‬
‫‪6‬‬
‫‪7‬‬
‫‪11‬‬
‫‪13‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫‪8..10‬‬
‫‪12‬‬
‫‪14‬‬
‫‪end‬‬
‫שקופית ‪89‬‬
‫שיטות בדיקה מבניות ברמת השילוב‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫מלמעלה‪-‬למטה‬
‫מלמטה‪-‬למעלה‬
‫שיטת ה‪"-‬סנדוויץ' "‬
‫ועוד‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪90‬‬
‫בדיקות שילוב מדורג מלמטה‪-‬למעלה‬
‫מפעיל התקן‬
‫מפעיל התקן‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪91‬‬
‫בדיקות שילוב מדורג מלמטה‪-‬למעלה‬
‫מפעיל התקן‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪92‬‬
‫בדיקות שילוב מדורג מלמטה‪-‬למעלה‬
‫‪‬‬
‫נחוצות כשיש רכיבי‬
‫תשתית קריטיים‪.‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪93‬‬
‫בדיקות שילוב מדורג מלמעלה‪-‬למטה‬
‫זנב‬
‫זנב‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪94‬‬
‫בדיקות שילוב מדורג מלמעלה‪-‬למטה‬
‫זנב‬
‫זנב‬
‫זנב‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫זנב‬
‫שקופית ‪95‬‬
‫בדיקות שילוב מדורג מלמעלה‪-‬למטה‬
‫‪‬‬
‫מוצאת שגיאות ארכיטקטורה‪.‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪96‬‬
‫אסטרטגיה מדורגת בשיטת ה"‪-‬סנדוויץ'"‬
‫זנב‬
‫זנב‬
‫מפעיל התקן‬
‫מפעיל התקן‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪97‬‬
‫אסטרטגיה מדורגת בשיטת ה"‪-‬סנדוויץ'"‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪98‬‬
‫בדיקות נסיגה (‪)regression testing‬‬
‫תיקון פגמים‬
‫הוספת יכולות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪99‬‬
‫בדיקות ביצועים (לא‪-‬תפקודיות)‬
‫‪‬‬
‫עומס (‪ / )load‬לחץ (‪/ )stress‬נפח (‪)volume‬‬
‫‪‬‬
‫תצורה‬
‫‪‬‬
‫אבטחה‬
‫‪‬‬
‫תזמון‬
‫‪‬‬
‫סביבה‬
‫‪‬‬
‫אפשרות התקנה‬
‫‪‬‬
‫מהימנות‬
‫‪‬‬
‫התאוששות‬
‫‪‬‬
‫תחזוקתיות‬
‫‪‬‬
‫הגורם האנושי‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪100‬‬
‫אתה נמצא כאן‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪101‬‬
‫תפיסה שגויה נפוצה‪ :‬הבטחת‪-‬איכות = בדיקות‬
‫לחברת היי טק דינאמית ומעניינת‬
‫דרוש‪/‬ה‬
‫ר"צ ‪QA‬‬
‫להובלת צוות בדיקות‪ ,‬הכשרה והדרכה של חברי הצוות‪ ,‬הכנת‬
‫תוכניות עבודה וניהול שוטף על פעילות הצוות הכללית‪ ,‬דרישות‬
‫התפקיד‪ :‬ניסיון מוכח של שנתיים לפחות בניהול צוות בדיקות‬
‫פונקציונאליות ידניות (צוות של שלוש אנשים לפחות)‪ ,‬ידע‬
‫במתודולוגיות ‪ STP‬ו‪ STD‬ו‪ MIL STD 498 -‬ו‪/‬או נוהל מפת''ח‪-‬‬
‫חובה‪ ,‬ידע ב‪ GUI, SQL -‬סביבת ‪ Windows‬חובה‪ ,‬הכרות עם‬
‫ה‪ Test Director -‬חובה‪ ,‬ראייה והבנה מערכתית‪-‬חובה‪ ,‬אנגלית‬
‫ברמה גבוהה מאוד‪ -‬חובה‪ ,‬רקע והכרות עם עולם הוידיאו יתרון‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪102‬‬
‫אתנחתא מוסיקלית…‬
‫ואם במודעות דרושים עסקינן…‬
‫לחברת מחשוב גדולה וידועה‬
‫דרושים‪/‬ות‬
‫בודקי‪/‬ות תוכנה אוטומטיים‬
‫ניסיון בכלי ‪ ,WINRUNNER / LOADRUNNER‬עבודה‬
‫בסביבת ‪UNIX‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪103‬‬
‫מהי איכות תוכנה?‬
‫ששה ספרים — שש גישות‬
‫‪Deming‬‬
‫‪Juran‬‬
‫‪Crosby‬‬
‫מגמה בסיסית‬
‫כלפי איכות‬
‫טכנית‬
‫תהליך‬
‫הנעה‬
‫מהי איכות?‬
‫מערכות‬
‫חסרות‬
‫תקלות‬
‫מי אחראי?‬
‫הנהלה‬
‫חשיבות‬
‫דרישות‬
‫הלקוח כתקן‬
‫התאמה לשימוש‪ ,‬הענות‬
‫חופש מצרות לדרישות‬
‫הנהלה‬
‫הנהלה‬
‫‪Taguchi Fengelbaum Garvy‬‬
‫אסטרטגית‪,‬‬
‫אקדמית‬
‫כוללת‪,‬‬
‫מערכתית‬
‫טכנית‪,‬‬
‫מניעה מראש‬
‫הזדמנות‬
‫לתחרות‬
‫מה שהלקוח‬
‫אומר שהיא‬
‫דרישות‬
‫הלקוח‬
‫לביצועים‬
‫הנהלה‬
‫כולם‬
‫מהנדסים‬
‫חשוב מאד‬
‫חשוב מאד‬
‫חשוב מאד חשוב מאד‪ ,‬לקוח חשוב מאד חשוב מאד‬
‫בכל שלב‬
‫ממחזורי החיים‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪104‬‬
‫כיצד לשפר את האיכות‬
‫‪‬‬
‫מניעת‬
‫התרחשות תקלות‪/‬סטיות‬
‫‪‬‬
‫זיהוי‬
‫תקלות‪/‬סטיות (שלא נמנעו)‬
‫מוקדם ככל האפשר‬
‫‪‬‬
‫תיקון‬
‫תקלות‪/‬סטיות ברגע שזוהו‬
‫‪‬‬
‫לִימוד‬
‫מהניסיון המשותף של‬
‫הארגון כיצד למנוע‪ ,‬לזהות‬
‫ולתקן תקלות‪/‬סטיות‬
‫תהליך פיתוח תוכנה‬
‫הולם‪ ,‬שיטתי ואוטומטי‬
‫תכנון‬
‫תהליך ‪ /‬איכות‬
‫אסטרטגיות זיהוי תקלות‬
‫תכנון תהליכי‬
‫הערכת איכות‬
‫המוצר ‪ /‬התהליך‬
‫נהלי דיווח על תקלות‪/‬סטיות‪,‬‬
‫פתרונן ומעקב אחריהן‬
‫תכנון תהליך‬
‫של פעולות‬
‫מונעות ‪ /‬מתקנות‬
‫אסטרטגיות‬
‫לשיפור תהליך התוכנה‬
‫תהליך שיפור‬
‫תהליך התוכנה‬
‫)‪)SPI‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪105‬‬
‫תכנון התהליך‬
‫הגדרת נהגי בקרת תוצרים‬
‫כישלון לבקר‬
‫את‬
‫תוצרי הפיתוח‬
‫בעיות בפיתוח‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪106‬‬
‫תכנון התהליך‬
‫הגדרת נהגי בקרת תוצרים‬
‫• נהלי ספריית פיתוח תוכנה‬
‫• נהגי בקרת מסמכים‬
‫• נהגי בקרת קוד מקור (‪)source control‬‬
‫• נהגי בקרת פיתוח גרסה‬
‫• נהגי בקרת שחרור גרסה‬
‫• נהגי בקרת שינויים (‪)change control‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪107‬‬
‫הערכת תוצרים‬
‫‪Problem Report‬‬
‫תוצרים‬
‫‪PR‬‬
‫הערכת‬
‫תוצרים‬
‫פעילות מפתח‬
‫של פיתוח‬
‫• "הרסנית"‬
‫• נסוגה (‪)regressive‬‬
‫• מזהה תקלות‬
‫תוצרים‬
‫• "יצרנית"‬
‫• מתקדמת (‪)progressive‬‬
‫• מכניסה תקלות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪108‬‬
‫הערכת תוצרים‬
‫סקרי איכות (‪)Quality reviews‬‬
‫צוות סוקר‬
‫‪ ‬בוחנים (ע"י קריאה) את —‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫מפרטי הדרישות‪ ,‬העיצוב‪ ,‬והתהליך‬
‫הקוד‬
‫תכניות הבדיקה‬
‫וכו'‬
‫יצרן‬
‫סוקר‬
‫מוביל‬
‫הסקר‬
‫רשם‬
‫דומה לתיקון תקלות בשיטת‬
‫"תפוס עובר אורח במסדרון"…‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪109‬‬
‫הערכת תוצרים‬
‫סולם יעילות‬
‫‪Formal Technical Review‬‬
‫ביקורת‬
‫היעיל ביותר‬
‫)‪inspection (FTR‬‬
‫צעד צעד‬
‫)‪walk through (FTR‬‬
‫מצגת רשמית‬
‫‪formal presentation‬‬
‫מצגת בלתי רשמית ‪informal presentation‬‬
‫סקר קבוצת עמיתים‬
‫שיחה אקראית‬
‫פורמאליות‬
‫‪peer group review‬‬
‫‪casual conversation‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪110‬‬
‫הערכת תוצרים‬
‫מבדקי איכות חיצוניים )‪)ISO 9001 - 4.17‬‬
‫המבדק החיצוני בודק‪:‬‬
‫‪‬‬
‫‪‬‬
‫קודם כל — את מערכת האיכות‪ ,‬לצורך אישור שהיא עומדת בתקני ‪ISO 9000‬‬
‫לאחר מכן — האם מתקיים מה שהבטחת‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪111‬‬
‫פעולות מתקנות‪/‬מונעות‪/‬משפרות‬
‫רישום‬
‫הממצאים‬
‫קביעת‬
‫תכנית פעולה‬
‫מימוש‬
‫תכנית הפעולה‬
‫מעקב אחר‬
‫המימוש‬
‫תחזוקת‬
‫רשומות איכות‬
‫הערכה‬
‫ממצאים‬
‫• חוסר הענות‬
‫(‪)non-compliance‬‬
‫• אי התאמת הפרויקט‬
‫• הזדמנות לשיפור‬
‫יש להקים‬
‫מערכת לניהול‬
‫תקלות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫מעקב‬
‫מבדקים‬
‫תלונות לקוח‬
‫שקופית ‪112‬‬
‫נהגי הבטחת איכות תוכנה — מבט כולל‬
‫מודלים של ‪SPI‬‬
‫שיפור התהליך‬
‫תוצר‬
‫)‪(work product‬‬
‫פיתוח‬
‫פעולה מתקנת‬
‫הערכה‬
‫דו"ח הערכה‬
‫נוהל וכלים‬
‫דו"ח מבדק‬
‫מבדק‬
‫תהליך פיתוח‪,‬‬
‫נהגים‪ ,‬שיטות‪,‬‬
‫כלים‬
‫תהליך‬
‫הערכת תוצרים‬
‫(‪)Audit‬‬
‫שאלון‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪113‬‬
‫אתה נמצא כאן‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪114‬‬
‫דיסציפלינות המרכיבות הנדסה‬
‫כלים‬
‫הבטחת איכות‬
‫רק במונחי‬
‫נהגי תכנות נאותים‬
‫מודלים של‬
‫מחזור החיים‬
‫עקרון כללי בלבד‬
‫תכנות;‬
‫שפת‬
‫ניהול‬
‫דיסציפלינות‬
‫סביבת פיתוח‬
‫פעילויות פיתוח‬
‫מדע בסיסי‬
‫ניהול תצורה‬
‫מתמטיקה‬
‫עיצוב (מ"ע);‬
‫הרבה תכנות;‬
‫ניפוי שגיאות‬
‫פרוצד' ‪ /‬תמ"ע ‪ /‬פונקציו'‬
‫שיטות פיתוח‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪115‬‬
‫פעילויות המפתח בפיתוח תוכנה‬
‫מה תקף לגבינו בביה"ס?‬
‫ניתוח דרישות תוכנה והכנת מפרטים‬
‫עיצוב ארכיטקטורת תוכנה‬
‫בניית‬
‫שילוב‬
‫התוכנה‬
‫בדיקות שילוב‬
‫תכנון‬
‫בדיקות‬
‫תיקוף‬
‫בדיקות תיקוף‬
‫שחרור והתקנה‬
‫תחזוקה ותמיכה‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪116‬‬
‫מודל מפל המים — מודל הבסיס לכל המודלים‬
‫הדרישות‬
‫דרישות‬
‫הגדרת‬
‫‪Requirements‬‬
‫‪Def.‬‬
‫התלמידים‬
‫מוכנות עבור‬
‫עיצוב מערכת ותוכנה‬
‫עיצוב תכנית‬
‫‪System & SW design‬‬
‫יחידות‬
‫ובדיקת‬
‫מימוש‬
‫התכנית‬
‫מימוש‬
‫‪Implementation‬‬
‫ובדיקות‬
‫‪& unit testing‬‬
‫אינטגרציה ובדיקות מערכת‬
‫‪Integration & sys. test.‬‬
‫פעולה ותחזוקה‬
‫& ‪Operation‬‬
‫‪maintenance‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪117‬‬
‫רמות בדיקה‬
‫מה תקף לגבינו בביה"ס?‬
‫‪‬‬
‫בדיקות הליכים‬
‫‪‬‬
‫בדיקות מודולים‬
‫‪‬‬
‫בדיקות שילוב תוכנה‬
‫‪‬‬
‫בדיקות לתיקוף תוכנה‬
‫‪‬‬
‫בדיקות לשילוב מערכת‬
‫‪‬‬
‫בדיקות לתיקוף מערכת‬
‫‪‬‬
‫בדיקות קבלה‬
‫בדיקת יחידות‬
‫)‪(Unit Testing‬‬
‫בדיקות שילוב (אינטגראציה)‬
‫בדיקות לתיקוף דרישות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪118‬‬
‫שיטות לעריכת בדיקות תפקודיות‬
‫חלוקת שקילות‬
‫‪1‬‬
‫‪0‬‬
‫מחלקת שקילות‪:‬מח' שקילות‪:‬‬
‫‪0≥i<1‬‬
‫‪i≤1‬‬
‫מחלקת שקילות‪:‬‬
‫‪i<0‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪119‬‬
‫שיטות לעריכת בדיקות תפקודיות‬
‫ניחוש שגיאות‬
‫מבוסס על‪:‬‬
‫‪My package‬‬
‫>>‪<<subsystem‬‬
‫‪A‬‬
‫>>‪<<subsystem‬‬
‫‪C‬‬
‫>>‪<<subsystem‬‬
‫‪B‬‬
‫‪+ aPublicClass‬‬
‫‪+ anotherPublicClass‬‬
‫‪- aPrivateClass‬‬
‫‪# aProtectedClass‬‬
‫ידע של העיצוב‬
‫ידע של הדרישות‬
‫יצירת מקרי בדיקה בהתבסס על ניחוש‪,‬‬
‫היכן סביר שימצאו פגמים בתכנה‬
‫יש להשתמש בשיטה זו‬
‫על מנת להשלים שיטות אחרות‬
‫אינטואיציה‬
‫ניסיון אישי ומשותף‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪120‬‬
‫בדיקה מבנית ברמת ההליך‪ :‬בעיית כיסוי הקוד‬
‫‪1..4‬‬
‫‪ ‬הנתיבים הב"ת דרך התוכנית הם‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪5‬‬
‫‪1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14‬‬
‫… ‪1, 2, 3, 4, 5, 6, 7, 11, 12, 5,‬‬
‫… ‪1, 2, 3, 4, 5, 6, 7, 11, 13, 5,‬‬
‫‪1, 2, 3, 4, 5, 14‬‬
‫‪ ‬קביעת מקרה בדיקה לכל נתיב‪.‬‬
‫‪ ‬כך כל פסוק בתוכנית מבוצע לפחות‬
‫פעם אחת‪ ,‬וכל ענף מופעל הן עבור‬
‫תנאי ‪ true‬והן עבור ‪.false‬‬
‫‪6‬‬
‫‪7‬‬
‫‪11‬‬
‫‪13‬‬
‫‪8..10‬‬
‫‪12‬‬
‫‪14‬‬
‫‪end‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪121‬‬
‫כיצד לשפר את האיכות‬
‫‪‬‬
‫מניעת‬
‫התרחשות תקלות‪/‬סטיות‬
‫עיצוב לפני תכנות‬
‫‪‬‬
‫‪ ‬זיהוי‬
‫תקלות‪/‬סטיות (שלא נמנעו)‬
‫שיקולי עיצוב‬
‫כתיבת‬
‫ככל האפשר‬
‫‪‬מוקדם‬
‫הגדרה ושימוש בתהליך פיתוח‬
‫תוכנה הולם‪ ,‬שיטתי ואוטומטי‬
‫מנומקים‬
‫השקעה באסטרטגיות זיהוי תקלות‬
‫הערכת איכות‬
‫המוצר ‪ /‬התהליך‬
‫מיסוד נהלי דיווח על תקלות‪/‬סטיות‪,‬‬
‫פתרונן ומעקב אחריהן‬
‫תהליך של פעולות‬
‫מונעות ‪ /‬מתקנות‬
‫‪ ‬תיקון‬
‫אלגוריתמים לפני התכנות‬
‫כתיבת‬
‫‪‬‬
‫תקלות‪/‬סטיות ברגע שזוהו‬
‫‪‬לִימוד‬
‫הרצה "יבשה"‬
‫תכנון‬
‫תהליך ‪ /‬איכות‬
‫מהניסיון המשותף של‬
‫הארגון כיצד למנוע‪ ,‬לזהות‬
‫לשיפור‬
‫אסטרטגיות‬
‫מיסוד‬
‫מודולים‬
‫←‬
‫פונקציות‬
‫‪:‬‬
‫מסודר‬
‫שגיאות‬
‫ניפוי‬
‫‪‬‬
‫סטיות‬
‫‪/‬‬
‫תקלות‬
‫ולתקן‬
‫התהליך; שימוש במדידות עד‬
‫שילוב‬
‫←‬
‫שיפור התהליך‬
‫כמה שאפשר‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪122‬‬
‫גישות לעריכת בדיקות‬
‫האם חשוב להתנסות בשני המימדים?‬
‫תפקודיות‪/‬מבניות‬
‫סטטיּות‪/‬דינאמיּות‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪123‬‬
‫"ס?‬
‫דרישות תוכנה — מה תקף לגבינו בביה‬
‫האם כדאי להציג לתלמידים‬
‫דרישות לא פונקציונאליות?‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪124‬‬
‫שיטות לייצוג דרישות‬
‫האם כדאי להתאמן בהצגת דרישות שיטתית‬
‫מתוך דרישות כלליות שניתנות ע"י המורה?‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫שפה טבעית‬
‫בניית אבטיפוס‬
‫מודל הישויות והקשרים‬
‫מקרי שימוש ותסריטים‬
‫מכונות מצבים סופיות‬
‫…‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪125‬‬
‫רכיבי עיצוב תוכנה‬
‫האם חשוב לדרוש עיצוב תחילה?‬
‫מערכת‪/‬תת‪-‬מערכת‬
‫אדם‬
‫תוכנה‬
‫תת‪-‬מערכת תוכנה‬
‫תת‪-‬מערכת תוכנה‬
‫מודול‬
‫מודול‬
‫הליך‬
‫מודול‬
‫הליך‬
‫חומרה‬
‫תת‪-‬מערכת תוכנה‬
‫מודול‬
‫עיצוב‬
‫ארכיטקטורה‬
‫טיפוסים‬
‫קבועים‬
‫משתנים‬
‫הליכים‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪126‬‬
‫סקרי איכות (‪)quality reviews‬‬
‫האם כדאי לבצע? כיצד?‬
‫‪ ‬בוחנים (ע"י קריאה) את —‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫מפרטי הדרישות‪ ,‬העיצוב‪ ,‬והתהליך‬
‫הקוד‬
‫תכניות הבדיקה‬
‫וכו'‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫שקופית ‪127‬‬
‫אז מה היה לנו?‬
‫‪‬‬
‫הבעייתיות בפיתוח תוכנה‬
‫מהי "הנדסה"?‬
‫מודלים של מחזור חיי תוכנה‬
‫מבט כללי על תהליך פיתוח התוכנה‬
‫הפקת דרישות‬
‫עיצוב ארכיטקטורה‬
‫בדיקות תוכנה‬
‫הבטחת איכות‬
‫מה 'כפת לנו?‬
‫‪V1‬‬
‫‪V2‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫ד"ר דן אהרוני‪ :‬אתם קוראים לזה "הנדסה"? — מבוא למבוא להנדסת תוכנה‬
‫‪V‬‬
‫‪3‬‬
‫שקופית ‪128‬‬
Understanding Technology
Mouse
I/O Error
Main Storage
CPU
Function key
User interface
Software
Debugger
Floppy disk
Backup system