מודלים של מחזור חיי תוכנה Software Life-Cycle Models מודלים של מחזור חיי תוכנה - 1
מה עומד על הפרק? מהו מחזור-חיים של תוכנה מודלים למחזור-חיים בנה ותקן מפל המים אב-טיפוס מהיר מודל ה- V מודלים אינקרמנטליים המודל הלולייני מודלים מונחי-עצמים מודל המזרקה USDP (RUP) תיכנות קיצוני במה לבחור??? מודלים של מחזור חיי תוכנה - 2
מחזור חיים של תוכנה מחזור חיים = שלבים בתהליך הפיתוח התחלה: דרישת לקוח סיום: אין יותר שימוש בתוכנה שלבים בחייה של תוכנה שלב הדרישות Requirement phase - שלב הניתוח Analysis phase - שלב התכן Design phase - שלב המימוש Implementation phase - שלב השילוב Integration phase - שלב האחזקה Maintenance phase - פרישה Retirement - ניתן לחזור על שלבים במהלך מחזור החיים מודלים של מחזור חיי תוכנה - 3
בנה ותקן "קידוד נטו" fix( )build & בנה גרסה ראשונה ערוך שינויים, עד שהלקוח מרוצה If you don't have time to do it right, Where would you take the time to do it again??? פיתוח אחזקה הפעלה מבצעית פרישה מודלים של מחזור חיי תוכנה - 4
בנה ותקן - תכונות רק חסרונות אין מפרט אין תכן )מאורגן( )רשום או מוסכם( מתאים לתוכנה קטנה מאד לכל תוכנה בגודל סביר נדרשים, תכנית פעולה שלבים בפיתוח )200-300 שורות?( )"game plan"( אבני-דרך )milestones( לפחות: ראה מודלים אב-טיפוס מהיר ו תיכנות קיצוני" בהמשך מודלים של מחזור חיי תוכנה - 5
מודל מפל המים )waterfall model( Royce, 1970 שילוב שינוי בדרישות מימוש תכן ניתוח דרישות הפעלה מבצעית פרישה פיתוח אחזקה מודלים של מחזור חיי תוכנה - 6
"חוגי משוב" תהליך מונחה-תיעוד: בין שלבים עוקבים המעבר לשלב הבא מותנה יתרונות תהליך מתועד אחזקה קלה יותר חסרונות מודל מפל המים פורמאליות-יתר התיעוד( )ותלוי!( )המוצר מאופיין מציאות רחוקה מהמודל--- בתיעוד השלב הקודם אך ורק אין פיתוח כזו באמצעות!! - תכונות מודלים של מחזור חיי תוכנה - 7
אב-טיפוס מהיר דגם עובד מכיל תת-קבוצה של הפונקציונליות של המוצר דוגמה: המוצר: תוכנה לניהול תקבולים, תשלומים ואחסנה אב-טיפוס מהיר יכיל: מסכים להכנסת נתונים הדפסת דו"חות אב-טיפוס מהיר עדכון קבצים הודעות שגיאה יכיל: לא נועד לסייע בגיבוש הדרישות לצורך מפרט מודלים של מחזור חיי תוכנה - 8
מודל אב-טיפוס מהיר שילוב שינוי בדרישות מימוש )rapid prototype( תכן ניתוח אב-טיפוס הפעלה מבצעית פרישה פיתוח אחזקה מודלים של מחזור חיי תוכנה - 9
אב-טיפוס מהיר - תכונות אב-טיפוס הוא אב-טיפוס הוא אב-טיפוס! אב-טיפוס נועד להדגים את המוצר הסופי ולא לממש אותו: אין להפוך אב-טיפוס למוצר! אב-טיפוס יכול לשמש כמפרט עדכן, שנה, - בדוק, אבל לא כתכן! אבל בסוף השלך לפח! זה לא אני, זה רק האב-טיפוס שלי! מודלים של מחזור חיי תוכנה - 10
מודל יותר מקיף מודלים של מחזור חיי תוכנה - 11
הנדסת תוכנה 1999-2010, Dr. Amir Tomer Business System Software CSC CSCI CSU תהליך הפיתוח - 12 )2( יישום מודל "V" לאורך מחזור חיי המוצר פעילות אופיינית לאורך חיי מוצר time בפועל: ה-" V " הגנרי מיושם במחזורים משתנים רמת עניין בדיקות מערכת בסביבת התפעול הגדרת דרישות הלקוח ובעלי העניין שילוב חומרה / תוכנה ובדיקות מערכת ניתוח וארכיטקטורת מערכת שילוב רכיבים ובדיקות פריטים ניתוח וארכיטקטורת תוכנה שילוב יחידות ובדיקות רכיבים תכן תוכנה הגדרה ופירוט Definition and Specification זמן קידוד ובדיקת יחידות מימוש, שילוב ובחינה Implementation, Integration and Testing לקראת סיום הקורס נדון בהרחבה במודלים שונים של מחזור החיים
מודל אינקרמנטלי א' model( )incremental הנדסת מערכת ניתוח דרישות ארכיטקטורה מימוש מימוש הקמת מימוש מבנה )build( 1,2,...,n שילוב מימוש תכן מפורט הפעלה מבצעית פרישה מסירה בדיקות פיתוח אחזקה מודלים של מחזור חיי תוכנה - 13
יתרונות מודל אינקרמנטלי א' - תכונות תוצרי ביניים תפעוליים בדוקים זמן פיתוח של כל מבנה: שבועות/חודשים ספורים מפחית חרדות השקעה כספית מדורגת חסרונות - החזר השקעה מהיר סכנת אבדן שליטה גישה ניגודית: ראיה כוללת של כל המערכת, לעומת ראיה פרטנית של כל מבנה כמוצר בפני עצמו נדרשת ארכיטקטורה פתוחה )אחזקה!!!( עדיין סידרתי מידי---דוחה בעיות לסוף הפיתוח מודלים של מחזור חיי תוכנה - 14
מודל אינקרמנטלי ב' מבנה 1 ניתוח מבנה 2 ניתוח תכן מימוש ושילוב תכן מסירה מימוש ושילוב מבנה n ניתוח תכן מסירה מסירה מימוש ושילוב קבוצת ניתוח קבוצת תכן קבוצת מימוש מודלים של מחזור חיי תוכנה - 15
מודל אינקרמנטלי ב - תכונות יתרונות ניתן להתחיל בעבודת הפיתוח מבלי להמתין להשלמת הנדסת המערכת עבודה במקביל ע י קבוצות מקצועיות חסרונות סיכון גבוה החלטות תכן ומימוש מתבססות על ניתוח חלקי בלבד עלול לגרום סבבי שינויים ארוכים ויקרים זהירות ממהירות מופרזת ואיבוד שליטה מודלים של מחזור חיי תוכנה - 16
המודל הלולייני )the spiral model( תכנון planning B. Boehm, 1988 ניתוח סיכונים risk analysis תוצרים הערכת לקוח customer evaluation הנדסה engineering מודלים של מחזור חיי תוכנה - 17
המודל הלולייני - שלבים ניתוח סיכונים תכנון הערכת החלופות הגדרת מטרות הגדרת יעדים זיהוי הסיכונים הצעת חלופות זיהוי אילוצים הגדרת אמצעים להפחתת הסיכונים הנדסה מימוש התוצרים, בהתאם לשלב הפיתוח התוצר הערכת לקוח בחינת התוצר המוגמר לעומת התכנון תכנון המחזור הבא מודלים של מחזור חיי תוכנה - 18
המודל הלולייני המודל מגדיר מדיניות, - תכונות ולא רק תהליך ניתן ליישום לגבי מודלים שונים של מחזור-חיים )ראה להלן( ניתן ליישום ברמות שונות של תוצרים להלן( משוב הדוק יותר: הערכת לקוח הגדרת יעדים ניתוח סיכונים כל איטרציה כוללת )ראה מודלים של מחזור חיי תוכנה - 19
מודל לולייני בפיתוח אינקרמנטלי תכנון planning ניתוח סיכונים risk analysis build 4 build 3 build 2 build 1 הערכת לקוח customer evaluation הנדסה engineering מודלים של מחזור חיי תוכנה - 20
המודל הלולייני - תכונות נוספות יתרונות ניתן להתאים את ההיקף של כל איטרציה לפי: כושר הפיתוח היקפי הבדיקות אילוצי זמנים הסתכלות אחידה על פיתוח חסרונות מתאים לתוכנה בהיקף גדול מתאים לפיתוח פנימי / מימוש / אחזקה )large-scale( )in-house( מודלים של מחזור חיי תוכנה - 21
פיתוח מונחה-עצמים )Object-Oriented Development( מאפייני פיתוח מונחה-עצמים מידה גבוהה של מודולריות פיתוח במקביל אינקרמטלי ואיטרטיבי מטבעו שימוש חוזר )reuse( מודלים מונחי-עצמים תומכים באיטרטיביות בתוך כל שלב ובין השלבים משלבים מקביליות ופיתוח אינקרמנטלי מודלים של מחזור חיי תוכנה - 22
מודל המזרקה model( )fountain פיתוח המשך הפעלה מבצעית שילוב מימוש תכן מונחה-עצמים אחזקה כל שלב הוא איטרטיבי בעצמו התוצרים מכל שלב ניתנים לשימוש-חוזר )reuse( בכל השלבים ניתוח מונחה-עצמים דרישות מאגר התוכנה מודלים של מחזור חיי תוכנה - 23
Supporting Process Organization along Content USDP = Unified Software Development Process Core Workflows Business Modeling Phases RUP = Rational Unified Process Inception Elaboration Construction Transition Requirements Analysis and Design Implementation Test Deployment Config. & Change Management Project Management Environment מודלים של מחזור חיי תוכנה - 24 preliminary iteration(s) iter. #1 iter. #2 iter. #n iter. #n+1 iter. #n+2 Organization along Time iter. #m iter. #m+1
תיכנות קיצוני (Extreme Programming) ריבויי בניה )מספר פעמים ביום!!( עבודת צוות עם נוהלים מיוחדים תיכנות בזוגות מתחלפים בדיקות רצופות בעזרת כלים ליצירה וניהול מערכת "עובדת" עם יכולות מוגבלות תיכנון ומימוש מינימליים לדרישות עד כה תיכנון מחדש (refactorization) מודלים של מחזור חיי תוכנה - 25
תיכנות קיצוני )המשך( " תיאור דרישות בעזרת "סיפורי משתמש" מבני ומסודר---אך עם "תרבות ה- hacker מודד התקדמות ועמידה בדרישות מאד באופנה כרגע מעורר מחלוקת מזניח תיאור דרישות ותיעוד )??( האם יתאים למערכות גדולות ולתחזוקה? נראה פירוט בהמשך הקורס... מודלים של מחזור חיי תוכנה - 26
מרכיבים מוכנים---- Components גל העתיד בפיתוח סוף-סוף שימוש חוזר אמיתי בתוכנה בין רמת ה- system Middleware ספציפית "שלנו" שיש לפתח ומערכת חסר שילוב של השימוש במרכיבים מוכנים בכל הגישות לפיתוח קשה לתאר ברמת התכן קשה לתאר תיאום של מרכיבים לצרכים מיוחדים של המערכת "שלנו" מודלים של מחזור חיי תוכנה - 27
במה לבחור? יש להתחשב בגורמים הבאים: הארגון )מטרות, אילוצים, תשתיות, )... ההנהלה )פתיחות, הבנה מקצועית,...( גיבוי, העובדים )הכשרה מקצועית, יחסי-אנוש, )... המוצר )מורכבות, ייחודיות, מספר וסוג המשתמשים, ייחודי \ COTS \ הרחבה ל- ) legacy שלב והתאם )mix & match( מודלים שונים לרמות פיתוח שונות מודלים שונים למרכיבים שונים בחירת המודל המתאים הינה קריטית לא פחות מהחלטות פיתוח אחרות )מקרו, מיקרו( מודלים של מחזור חיי תוכנה - 28