הפיתוח של עתירת תוכנה תהליך The Development Processes of a Software Intensive System תהליך הפיתוח - 1
העניינים תוכן תוכנה בראיה ית הנדסת החיים של מוצר תוכנה מחזור מבוסס מודלים פיתוח ש UML מידול פת תהליך הפיתוח - 2
תוכנה בראיה ית הנדסת ההגדרה צירוף של אלמנטים (מרכיבים) הפועלים במשותף ומאורגנים לצורך השגת מטרה מוצהרת אחת או יותר [ISO/IEC 15288] היררכי-רקורסיבי מאורגנת במבנה היררכי מרכיב של יכול להיות בעצמו עניין מרכיב עניין אליה מתייחס תהליך פיתוח נתון, הכולל פעילויות ותוצרים עתירת תוכנה (Software Intensive System - ממע"תת SIS) מרכיב מרכיב מרכיב מרכיב מרכיב מרכיב מרכיב מרכיב אשר התוכנה מהווה בה חלק משמעותי מבחינת הפונקציונליות, עלות הפיתוח, סיכוני הפיתוח או משך הפיתוח. תהליך הפיתוח - 3
העניין האופייניות בפיתוח עתירת תוכנה רמות ארגון/עסק / העסק הארגון רמת בנק) (לדוגמה:...... עתירת תוכנה עתירת תוכנה ה רמת (לדוגמה: ניהול בנקאיים) שירותים פריט חומרה פריט פריט פריט... חומרה תוכנה... תוכנה פריט התוכנה רמת (לדוגמה: תוכנת הכספומט) רכיב... תוכנה רכיב תוכנה רכיב התוכנה רמת ממשק-המשתמש (לדוגמה: הכספומט) של יחידת תוכנה יחידת תוכנה יחידת התוכנה רמת (לדוגמה: מסך משיכת כסף)... תהליך הפיתוח - 4
ממבנה ותפקוד הבאים: (בכל רמה, אלמנטרי) מוגדרת על ידי המאפיינים מרכיב כולל תיחום גבולות ה (מה נכלל בה ומה לא) ממשקים למערכות חיצוניות מבנה מרכיבים / (פיזיים לוגיים-פונקציונליים) / תפקוד קשרים וממשקים פנימיים (פיזיים לוגיים-פונקציונליים) תהליכים / התנהגות אינטראקציה עם הסביבה תהליך הפיתוח - 5
הארגון/העסק רמת Organization/Business Level תיחום מקומו של הארגון/העסק בסביבתו בורסה חברות בורסה אשראי בנק בנק ישראל ממשקים עם גורמים חיצוניים לקוחות בורסה מבנה מרכיבים ממוכנים מרכיבים אנושיים אתר אינטרנט שירותים בנקאיים תפקוד שירותים לגורמים חיצוניים שירותים פנימיים לוגיקה עסקית / (תפעול) כללים עסקיים יועצי השקעות פעולות בחשבונות ניהול תיק השקעות הלוואות... ניהול תיקי השקעות פקידים באינטרנט בעמדה מקוונת באמצעות פקיד / יועץ תהליך הפיתוח - 6
ה רמת System Level תיחום מקומה של ה בארגון ממשקים עם מערכות אחרות בארגון ממשקי מפעיל/משתמש לקוחות שרת אינטרנט השירותים הבנקאיים ניהול השקעות פקידים מבנה פריטי חומרה (מחשבים, התקנים) HWCI = HardWare Configuration Item פריטי תוכנה כספומט ת"ע לפקיד CSCI = Computer Software Config. Item (... תפקוד מיקום התוכנה על גבי החומרה ("התקנה") תקשורת פיזית תקשורת נתונים (פרוטוקולים) לוגיקת תפעול תהליכים יים אינטראקציה עם מפעילים/משתמשים אינטראקציה בין רכיבים יים בסיס נתונים פעולות בכספומט תהליכי עבודה של פקיד תהליכים פנימיים (איתחול,... גיבוי, תהליך הפיתוח - 7
פריט התוכנה רמת CSCI = Computer Software Configuration Item CSCI Level תיחום מקומו של הפריט ב ממשקים עם פריטי חומרה ממשקים עם משתמשים בורסה התקני בורסה חומרה לקוח תוכנת הכספומט בסיס הנתונים טכנאי / מפעילים ממשקים עם פריטי תוכנה אחרים מבנה רכיבי תוכנה ממשק לקוח ביצוע פעולות CSC = Computer Software Component ממשקי תוכנה-חומרה (drivers) תפקוד ממשקי תוכנה-תוכנה (פרוטוקולים) ממשק טכנאי בדיקה ותחזוקה מודם תרחישים פונקציונליים אינטראקציה עם הסביבה החיצונית אינטראקציה בין רכיבי תוכנה תהליכי הזדהות, משיכה, הפקדה,... תהליכי איתחול, בדיקה, תחזוקה,... תהליכים פנימיים,BIT) בדיקת תקשורת,...)... תהליך הפיתוח - 8
CSC = Computer Software Component רכיב התוכנה רמת CSC Level תיחום מקומו ותפקידו של הרכיב בפריט התוכנה ממשקים עם רכיבי תוכנה אחרים כולל ממשקי-משתמש/מפעיל, המייצגים את הגורמים האנושיים Driver קורא כרטיסים Driver מסך מגע ממשק לקוח הכספומט ביצוע פעולות מבנה ממשקים עם drivers לחומרה יחידות תוכנה מסך הזדהות מסך משיכת כסף CSU = Computer Software Unit ממשקי תפקוד "הודעות" בין יחידות הפעלת פונקציות והעברת פרמטרים תרחישי הצלחה ראשיים הסתעפויות חלופות וחריגות מסך תפריט ראשי מסך הפקדה מסך בירור יתרה תרחיש משיכה מוצלח תרחיש משיכה עם יתרה מוגבלת תרחיש משיכה עם כמות כסף מוגבלת במכשיר תרחיש התאוששות מנפילת תקשורת תהליך הפיתוח - 9
CSU = Computer Software Unit יחידת התוכנה רמת CSU Level תיחום מקומה ותפקידה של היחידה ברכיב יחסים עם יחידות אחרות תצוגות קלט מקשים מסך הזדהות תפריט ראשי,include ירושה,... מבנה ממשקים עם יחידות אחרות פונקציות תצוגה תפקוד מבני נתונים אלגוריתמים לוגיקת ביצוע פונקצית קליטת נתונים הגדות חלון בדיקה ואישור קוד סודי לולאה מוגבלת לקליטה ותיקון של הקוד הסודי תהליך הפיתוח - 10
העניינים תוכן תוכנה בראיה ית הנדסת החיים של מוצר תוכנה מחזור מבוסס מודלים פיתוח ש UML מידול פת תהליך הפיתוח - 11
תוכנה = התוצר הסופי של תהליך פיתוח התוכנה מוצר Software Product: The set of computer programs, procedures, and possibly associated documentation and data [ISO/IEC 12207:2008] תוכנה מסופק באחת מ- 3 מוצר צורות: מוצר עצמאי התוכנה מסופקת בנפרד (על גבי דיסק או בהורדה מהרשת), ומיועד להתקנה על מחשב סטנדרטי הקיים ברשות המשתמש, והכולל הפעלה ותוכנה תשתיתית. לדוגמה: אנטי-וירוס מוצר משוכּן/משובץ (embedded) התוכנה מסופקת ביחד עם החומרה (היעודית), ההפעלה ותוכנת התשתית כמוצר שלם אחד. לדוגמה: מכשיר טלפון סלולרי תוכנה כ ש ירות Service) (SaaS = Software as a התוכנה עצמה אינה עוברת ללקוח ואינה נשארת ברשותו, אך הוא מקבל את השירותים הדרושים באמצעותה לדוגמה: שרות חשבונות (billing) תהליך הפיתוח - 12
החיים של מוצר תוכנה מחזור מוצר תפיסה conception אספקה תיקונים ושידרוגים צרכים, רצונות ואילוצים של הלקוח ובעלי עניין אחרים פרישה retirement פיתוח / אחזקה פעילויות תוצרים חיים מחזור - הגדרה "אבולוציה של, מוצר, שרות, פרויקט או ישות אחרת מעשה-ידי-אדם מהתפיסה (conception) ועד הפרישה "(retirement) [ISO/IEC 15288] תהליך הפיתוח - 13
פיתוח התוכנה של עתירת תוכנה מסגרת רמת עניין Business ארגון/עסק System עתירת תוכנה עתירת תוכנה...... Software CSC CSCI פריט חומרה פריט חומרה פריט תוכנה פריט תוכנה...... רכיב תוכנה רכיב תוכנה... CSU הגדרה ופירוט Definition and Specification זמן יחידת תוכנה מימוש, שילוב ובחינה Implementation, Integration and Testing יחידת תוכנה... תהליך הפיתוח - 14
בונים בית? איך דרישות בעלי עניין נוספים: - דרישות רישוי - דרישות תשתיות (ממשקים) צרכים, רצונות ואילוצים של הלקוח: - מגורים ושירותים - חזות -אופציות עתידיות -אילוצי תקציב ולו"ז מפרטי דרישות וארכיטקטורה: - תכנית קירות, רצפות, גגות - תכנית חזיתות - תכנית נקודות חשמל ומים - תכנית פתחים, מדרגות תכן ומפרטים טכניים: - תכנית קונסטרוקציה - תכניות אינסטלציה (חשמל, מים, ביוב...)... בניה: הקמת שלד התקנת חשמל, גימור צנרת, תהליך הפיתוח - 15
בית... בונים כמו תוכנה דרישות בעלי עניין נוספים: - דרישות תקנים - דרישות תאימות (ממשקים) צרכים, רצונות ואילוצים של הלקוח: - שירותים / משימות - ביצועים -אופציות עתידיות -אילוצי תקציב ולו"ז מפרטי דרישות וארכיטקטורה: - תרחישי פעולה - ארכיטקטורה לוגית וממשקים - ישויות מידע - קונספט הפעלה תכן ומפרטים טכניים: - מודולים וממשקים פיזיים - מבני נתונים / מסדי נתונים -אלגוריתמים -פרוטוקולים בניה: קידוד הידור (קומפילציה) קישור שילוב תהליך הפיתוח - 16
"מפת הדרכים" פיתוח התוכנה של עתירת תוכנה לתהליך רמת עניין Business בדיקות בסביבת התפעול תיקוף הגדרת דרישות הלקוח ובעלי העניין System Software CSC CSCI שילוב חומרה / תוכנה ובדיקות שילוב רכיבים ובדיקות פריטים שילוב יחידות ובדיקות רכיבים אימות אימות אימות תכן תוכנה ניתוח וארכיטקטורת תוכנה ניתוח וארכיטקטורת CSU הגדרה ופירוט Definition and Specification זמן מימוש, שילוב ובחינה Implementation, Integration and Testing קידוד ובדיקת יחידות תהליך הפיתוח - 17
ההגדרה והפירוט פעילויות תוצרים אופייניים ניתוח וארכיטקטורת הגדרת דרישות הלקוח ובעלי העניין מלמעלה-למטה והפירוט נעשים מלמעלה ההגדרה (top-down) אחת מהפעילויות ישנם שני תוצרים עיקריים, לכל מבנה (structure) הרלוונטית: לרמה קידוד ובדיקת יחידות תכן תוכנה ניתוח וארכיטקטורת תוכנה תפקוד/התנהגות functionality) (behavior, רמה פעילות תוצר מבני תוצר תפקודי / עסקי ארגון / עסק הגדרת דרישות הלקוח ובעלי העניין מבנה ארגוני שירותים ותהליכים עסקיים / אופיון תפעול OCD = Operational Concept Doc. מפרט תהליכים יים SSS = Sys/Subsys Specification מפרט ארכיטקטורת SSDD = Sys/Subsys Design Doc. מפרט ארכיטקטורת תוכנה SAD = S/W Arch. Description פריט רכיב יחידה ניתוח וארכיטקטורת ניתוח וארכיטקטורת תוכנה תכן תוכנה קידוד ובדיקת יחידות אובייקטים/מודולים, קשרים פנימיים SDD = S/W Design Document קוד מקור: הצהרות *.h files מפרט דרישות תוכנה SRS = S/W Requirements Specification אלגוריתמים, לוגיקה, רצפים חישוביים SDD = S/W Design Document קוד מקור: פקודות *.c files תהליך הפיתוח - 18
המימוש, השילוב והבחינה פעילויות אופייניים תוצרים בדיקות בסביבת התפעול שילוב חומרה / תוכנה ובדיקות מלמטה-למעלה נעשה מלמטה המימוש (bottom-up) אחת מהפעילויות מפיקה תוצר, שהוא כל מהווה מרכיב עבור הרמה הבאה שילוב רכיבים ובדיקות פריטים שילוב יחידות ובדיקות רכיבים קידוד ובדיקת יחידות ניתן לבדיקה ולאימות מול תוצרי ההגדרה והפירוט של הרמה המקבילה רמה פעילות תוצר מהות הבחינה יחידה קידוד ובדיקת יחידות יחידות תוכנה שעברו הידור (compilation) "קופסה שחורה" נכונות פונקציונלית "קופסה לבנה" כיסוי מסלולי החישוב רכיב פריט שילוב יחידות ובדיקת רכיבים שילוב רכיבים ובדיקת פריטים רכיבי תוכנה משולבים פריטי תוכנה שלמים ועצמאיים אימות החישובים והאינטראקציה אימות ביצועים אימות דרישות התוכנה בסביבת בדיקות עצמאית (ללא החומרה היעודית) ארגון / עסק שילוב חומרה / תוכנה ובדיקת בדיקות ה בסביבת התפעול מיחשוב משולבת חומרה-תוכנה מותקנת בסביבתה היעודית אימות התהליכים היים אימות הביצועים היים תיקוף השירותים והתהליכים העסקיים תיקוף השימושיות תהליך הפיתוח - 19
העניינים תוכן תוכנה בראיה ית הנדסת החיים של מוצר תוכנה מחזור מודלים מבוסס פיתוח ש UML מידול פת תהליך הפיתוח - 20
Model Based Development מודלים מבוסס פיתוח Modeling A means to capture ideas, relationships, decisions and requirements in a well-defined notation that can be applied to many different domains [Pilone, D., UML 2.0 in a Nutshell, O REILLY, 2005 מפושט משמשים לתיאור מודלים של ישויות מורכבות (simplified) מודל מתמקד באלמנטים העקרוניים ללא ירידה לפרטים מודל דורש "תרגום" לישות האמיתית במודל יש דרגות חופש לפרשנויות שונות תהליך הפיתוח - 21
סטטיים ומודלים דינמיים מודלים סטטי מודל / מבני מודל המתאר ישויות וקשרים ביניהם. דוגמאות: מבנה ארגוני שרטוט של חלק מכני מבנה מולקולרי טבלה דינמי מודל (רלציה) / התנהגותי בבסיס-נתונים / תפקודי מודל המתאר זרימה של תהליך או שינויי מצב. תרשים זרימה / אלגוריתם גרף של פונקציה על ציר זמן אוטומט אנימציה יכול להיות מודל (במדעי המחשב) / סימולציה גראפי, טקסטואלי אוו משולב דוגמאות: תהליך הפיתוח - 22
מידול - שפה גראפית של סמלים חוקיים אוסף (אלף-בי תית ): û ü {text}ü חוקיים צירופים תחביר): (תחביר û û ü משמעויות סמנטיקה): (סמנטיקה x û "תהליך A מעביר מידע "מחשב A מחובר למחשב B לתהליך " B x" ממשק üבאמצעות x A B? ביטוי כושר "מחשב A מחובר לפחות למחשב אחד מסוג B, ûאבל לא ליותר מ- 10 מחשבים מסוג B בו-זמנית " :(expressiveness) "מחשב A מחובר למחשב B באמצעות ממשק x " ü תהליך הפיתוח - 23
העניינים תוכן תוכנה בראיה ית הנדסת החיים של מוצר תוכנה מחזור מבוסס מודלים פיתוח ש UML מידול פת תהליך הפיתוח - 24
UML = Unified Modeling Language שפה (גראפית) ולתכן מונחה עצמים לניתוח (OOA&D) UML Superstructure Specification, v2.1.2 (2007) אוסף של כלי מידול לתיאור היבטים שונים של התוכנה מכילה תוך כדי מיזוג של מספר שיטות: התפתחה Grady Booch, 1991-1996 James Rumbaugh (OMT), 1992-1996 Ivar Jacobson (Objectory), 1992-1997 CASE השפה וכלי פיתוח 1997: אומצה כתקן בפועל בחברת ע יי OMG Rational (IBM) ( ad-hoc standard) OMG = Object Management Group מעין ועדה ממליצה בחסות 800 חברות וארגונים תהליך הפיתוח - 25
UML הכלים של ארגז מודלים סטטיים (רשימה חלקית) מחלקות מודל (Class Model) מחלקות של אובייקטים והיחסים ביניהן לכל מחלקה הגדרת המאפיינים והפונקציות רכיבים מודל (Component Model) רכיבי תוכנה והממשקים ביניהם תהליך הפיתוח - 26
UML הכלים של ארגז מודלים סטטיים (רשימה חלקית) פריסה מודל (Deployment Model) "קופסאות" חומרה והממשקים ביניהן פריסת רכיבי התוכנה על גבי החומרה (התקנות) תהליך הפיתוח - 27
UML הכלים של ארגז מודלים דינמיים (רשימה חלקית) Use Cases מודל Use Case Diagram Use Case Specification שחקנים ואינטראקציה תהליכים פעילות מודל (Activity Model) זרימת תהליכים תהליך הפיתוח - 28
UML הכלים של ארגז מודלים דינמיים (רשימה חלקית) מכונת-מצבים מודל (State-Chart Model) מהלך המעברים בין מצבים כתגובה לאירועים רצפים מודל (Sequence Diagram) מימוש תהליכים כאינטראקציה בין אוביקטים תהליך הפיתוח - 29
UML ית אופיינית בייצוג היררכיה Business Software Intensive System Business Level Node1 Node2 System Level Operator Artifact2 Artifact1 User «manifest» Item (CSCI) Level «manifest» Component1 Component2 Component (CSC) Level Class1 - att1: int Class2 - att2: int Unit (CSU) Level + op1() : void + op2() : void תהליך הפיתוח - 30
סיכום תוכנה בראיה ית הנדסת היא מבנה היררכי-רקורסיבי המכיל מרכיבים, שחלקם יכולים להיות מערכות בעצמם בפיתוח מערכות עתירות תוכנה נהוג להתייחס לחמש רמות עניין עיקריות: רמת הארגון/העסק, רמת ה, רמת פריט התוכנה, רמת רכיב התוכנה ורמת יחידת התוכנה החיים של מוצר תוכנה מחזור מחזור החיים של מוצר תוכנה מורכב מאוסף פעילויות, המפיקות תוצרים, אשר מכסות את כל שלבי הגדרת הדרישות, הניתוח, התכן, המימוש, השילוב, הבדיקה, ההתקנה והתפעול של ה, וכן את כל פעילויות האחזקה מבוסס מודלים פיתוח UML ש קיימים מודלים סטטיים מודל גראפי מידול פת (מבניים) ודינמיים (התנהגותיים/תפקודיים) כתוב בשפה הכוללת סמלים, תחביר ומשמעות והיא בעלת יכולת ביטוי מוגבלת UML מהווה "ארגז כלים" של מודלים שונים, סטטיים ודינמיים. תהליך הפיתוח - 31