Presentation is loading. Please wait.

Presentation is loading. Please wait.

מבוא Introduction מקורות: S. R. Schach: Chapters 1-2

Similar presentations


Presentation on theme: "מבוא Introduction מקורות: S. R. Schach: Chapters 1-2"— Presentation transcript:

1 מבוא Introduction מקורות: S. R. Schach: Chapters 1-2
מבוא להנדסת תוכנה מבוא Introduction מקורות: S. R. Schach: Chapters 1-2 R. S. Pressman: Chapter 1 מבוא להנדסת תוכנה © , ד"ר עמיר תומר

2 כמה שאלות אקטואליות למה שדה התעופה של דנוור התחילה לפעול רק שנה אחרי סיום הבניה? למה התעכבה השקת MS-windows-XP (ולמה ביום השקתה כבר פורסמו 64,000 באגים?) מתי יתרחש האסון הגרעיני הראשון, כתוצאה מתקלת תוכנה בכור גרעיני? (וכמה ועדות-חקירה ינסו להסיק מסקנות?) מבוא להנדסת תוכנה

3 “משבר התוכנה” פיתוח התוכנה, במקרים רבים, אין “פתרון קסם”
מפגר בלוחות הזמנים גולש מהתקציב מפיק מוצר באיכות ירודה מהמצופה אין “פתרון קסם” Brooks [1986]: No Silver Bullet לתוכנה, לעומת חומרה, אין מגבלות פיזיקליות, אבל... לתוכנה יש מגבלות בסיסיות (מולדות) ניתן לשפר את התהליך, אבל לא “לפרוץ” את המגבלות במקומות רבים—אין תהליך פיתוח מבוא להנדסת תוכנה

4 המגבלות הבסיסיות של תוכנה
סיבוכיות (complexity) מספר המצבים / התרחישים גדול מאד קשה להבין את המכלול קשה לנהל את הפיתוח מסובך מאד לבצע אחזקה (שינויים ותיקונים) תאימות (conformity) התוכנה מצופה להתאים את עצמה למגבלות ושינויים של החומרה, מערכת ההפעלה, וגם לתוכנות בסביבה. מבוא להנדסת תוכנה

5 המגבלות הבסיסיות של תוכנה (המשך)
גמישות לשינויים (changeability) מה מניע לבצע שינויים בתוכנה? התאמה למציאות משתנה שאיפה להרחבת היכולת, על בסיס שימוש מוצלח יותר קל לשנות תוכנה מאשר חומרה תוכנה מאריכה ימים (15~ שנה) יותר מאשר חומרה (4~ שנים) נסתרות (invisibility) תוכנית בנין לעומת תוכנית מחשב מודלים ויזואליים משקפים היבטים חלקיים של התוכנה, ולא את התמונה השלמה מבוא להנדסת תוכנה

6 ההיבט ההסטורי ועידת NATO הראשונה להנדסת תוכנה
1968, Garmisch, Germany כיצד מתמודדים עם "משבר התוכנה"? מדוע גשרים קורסים בתכיפות קטנה יותר מאשר מערכות-הפעלה? האם ניתן להשתמש בשיטות הנדסיות "רגילות" מהנדסת בנין או הנדסת חשמל לפיתוח תוכנה? להנדסת תוכנה יש מאפיינים ודרישות שונים ולכן חייבים לפתח גישות חדשות מבוא להנדסת תוכנה

7 ההיבט הכלכלי השפעת שינויים טכנולוגיים על פיתוח התוכנה
נניח כי קידוד בשיטה חדשה CTnew יעיל ב-10% מקידוד בשיטה ישנה CTold. האם כדאי להכניס אותה לשימוש? התשובה האינטואיטיבית: בוודאי! תשובת הנדסת התוכנה: עלות ההטמעה (עלות הדרכה, ביטול זמן הדרכה, עקומת למידה) השפעה על האחזקה (ועל עלות מחזור החיים כולו) מבוא להנדסת תוכנה

8 האחזקה תופסת את חלק הארי במחזור חיי התוכנה!
ההיבט האחזקתי מוצר תוכנה הינו “מוצר גמיש” תוכנה אינה דורשת חומרי גלם אמצעי הפיתוח זולים וגמישים אין תהליך ייצור “החלפת מודל” קלה ופשוטה ולכן מוצר תוכנה צפוי לעבור שינויים ועדכונים תכופים האחזקה תופסת את חלק הארי במחזור חיי התוכנה! מבוא להנדסת תוכנה

9 המחיר היחסי של כל שלב בפיתוח
מבוא מבוא להנדסת תוכנה המחיר היחסי של כל שלב בפיתוח נתונים שנאספו ממספר מקורות בשנים מבוא להנדסת תוכנה © , ד"ר עמיר תומר

10 תקלות חומרה לעומת תקלות תוכנה
עקומת כשל של חומרה זמן קצב תקלות “מחלות ילדות” “שחיקה” עקומת כשל (אידיאלית) של תוכנה זמן קצב תקלות נמשך בקצב קבוע, עד ליציאה משימוש מבוא להנדסת תוכנה

11 השפעת שינויים על עקומת התקלות
עקומת כשל (בפועל) של תוכנה זמן קצב תקלות העקומה האידיאלית שינוי גידול בקצב התקלות כתוצאה מהשפעות לוואי העקומה בפועל מבוא להנדסת תוכנה

12 כל המיתוסים הללו מופרכים מיסודם
ההיבט האפיוני / תכנוני כמה מיתוסים נפוצים: “אם נחרוג מלוח הזמנים - נוסיף עוד תכנתים” “ברגע שהסתיים שלב הקידוד - הסתיימה רוב העבודה” “עד שהתכנית לא תרוץ, לא ניתן להעריך את איכותה” “התוצר הסופי של פיתוח התוכנה הוא תכנית עובדת” כל המיתוסים הללו מופרכים מיסודם ללא אפיון ותכנון פיתוח התוכנה לא יסתיים כנדרש! מבוא להנדסת תוכנה

13 ההיבט הצוותי תוכנה מפותחת בעבודת צוות
לא ניתנת לביצוע ע”י אדם אחד בזמן סביר נדרש תיאום הדוק בממשקים בלוחות זמנים בסגנון בכלי הפיתוח באחריות ובהרשאות בהפצת מידע על שינויים מבוא להנדסת תוכנה

14 מושגי יסוד תכנית (program) - ??? מערכת (system) - ??? מוצר (product)
“האקווריום של משה” ספק לקוח משתמש מוצר תכנית (program) - ??? מערכת (system) - ??? מוצר (product) מוצר תוכנה מוצר משולב מפתח, ספק (developer, provider) הגוף המפתח/מספק את המוצר לקוח, מזמין (client, customer) הגוף המזמין את המוצר מהמפתח משתמש, צרכן קצה (user, end user) הגוף שלשימושו נועד המוצר מבוא להנדסת תוכנה

15 מוצר ייחודי או מוצר לשיווק נרחב?
מוצר COTS : מוזמן על ידי היחידה לשיווק ונמכר לציבור הרחב Word Norton security מוצר חד-פעמי התוכנה ל-Adrianne תוכנה לטיל ה"חץ" מוצר מותאם לכל לקוח (product line ) פיקוח על רכבות מערכת לניהול מעליות מבוא להנדסת תוכנה

16 מושגי יסוד (המשך) דרישות (requirements) ניתוח (analysis)
היכולות, האילוצים, הביצועים וסביבת העבודה של המוצר. ניתוח (analysis) בחינת מכלול הדרישות ומשמעותן ההנדסית מפרט (specification) תאור מובנה או מודל של המוצר העתידי, כפי שמשתקף מהדרישות “מה” נדרש מהמוצר תכן (design) פירוט אופן המימוש (ראה להלן) של המפרט “איך” ימולאו הדרישות תכן-על (top-level design) תכן מפורט (detailed design) מבוא להנדסת תוכנה

17 מושגי יסוד (המשך) מימוש (implementation) קידוד (coding)
הוצאה אל הפועל של התכן, באמצעות אמצעי המימוש (למשל שפת התיכנות). קידוד (coding) עריכה, הידור (compilation) וקישור (link) של תוכניות מחשב. איכות (quality) מידת התאמתו של המוצר לדרישותיו, לצרכיו ולשביעות רצונו של הלקוח / המשתמש. מבוא להנדסת תוכנה

18 פעילויות בפיתוח פעילויות תומכות פעילויות במחזור החיים ניהול הפיתוח
הבטחת איכות התוכנה ניהול תצורה פעילויות במחזור החיים הגדרת דרישות ניתוח דרישות תכן קידוד ובדיקות יחידה שילוב אחזקה אימות ותקפות לכל פעילות יש תוצרים! מבוא להנדסת תוכנה

19 הגדרת דרישות (requirements)
פעילות רישום מדוייק ומפורט של הדרישות, האילוצים, הביצועים וסביבת העבודה. זיהוי ויישוב חסרים, סתירות וכפילויות הגדרת עדיפויות תוצרים מפרט דרישות פונקציונליות יכולות, פונקציות, שירותים התנהגות, אינטראקציה מפרט דרישות לא-פונקציונליות שימוש במרכיבים קיימים הנחיות תכן הגדרת אופני מימוש ...אמינות, זמינות, מה הלקוח צריך ולא מה הלקוח רוצה מבוא להנדסת תוכנה

20 ניתוח (analysis) פעילות תוצרים בחינת המשמעות ההנדסית של הדרישות
בניית קונספט המערכת ובחינתו שלמות בהירות וחד-משמעיות ללא סתירות יישימות תוצרים מפרט דרישות תוכנה (Software Requirement Specification) רשימת דרישות ומאפייניהן מודל קונספטואלי / ארכיטקטורה לוגית (= תיכנון-על ) רשימת מעקב לדרישות (traceability matrix) משמעות הדרישות והשפעתן על התכן המפרט מהווה: 1. בסיס חוזי לפיתוח 2. בסיס לתכנית הפיתוח 3. בסיס לתכנית הבדיקות מבוא להנדסת תוכנה

21 תכן (design) פעילות תוצרים בחינת חלופות טכניות למימוש המפרט
הגדרת מרכיבי המוצר והקשרים ביניהם הגדרת המבנה והתפקוד של כל מרכיב תוצרים תכן (design) ארכיטקטורה (בתכן-על) או פירוט המבנה (בתכן מפורט) ממשקים מבני נתונים אלגוריתמים תכנית בדיקות מבוא להנדסת תוכנה

22 קידוד ובדיקות יחידה (Coding & Unit Testing)
פעילות קידוד מודולי התוכנה תיכנות (programming) בשפת היעד הידור (compilation) קישור (link) בדיקת מודולי התוכנה הרצה בתנאים שונים ובחינת התוצאות תוצרים תכניות מקור (source code) תכניות שירות (כגון make files) קבצי הרצה (“EXE”) תוצאות בדיקות היחידה מבוא להנדסת תוכנה

23 שילוב (Integration) פעילות תוצרים שילוב המרכיבים למוצר שלם
ייתכנו שילובים חלקיים בחינות קבלה (acceptance tests) תוצרים המוצר המוגמר (או מכלולים שלמים) דו”ח בדיקות הקבלה מסמכי התקנה ושימוש מבוא להנדסת תוכנה

24 אחזקה (maintenance) פעילות תוצרים
עריכת שינויים במוצר לאחר מסירתו ללקוח אחזקה תיקונית (corrective maintenance) אחזקה שיפורית (perfective maintenance) אחזקה התאמתית (adaptive maintenance) תוצרים גרסאות עדכניות של תוצרי כל הפעילויות הרלוונטיות שנעשו במהלך עריכת השינויים מה ההבדל בין שינויים שנעשו יום אחד אחרי המסירה, לבין כאלה שנעשו יום אחד לפניה? מבוא להנדסת תוכנה

25 אימות ותקפות אימות (verification) תקפות (validation)
מתבצע בתום כל פעילות בא לוודא שאכן הפעילות השיגה את יעדיה ושתוצריה תקינים התוצרים צריכים להיות עקביים עם תוצרי הפעילויות האחרות תקפות (validation) נבחנת עם השלמת פיתוח המוצר או גירסה חדשה שלו באה לוודא שהמוצר עומד בדרישות המוסכמות מבוא להנדסת תוכנה

26 פעילויות תומכות ניהול הפיתוח הבטחת איכות תוכנה (SQA)
הגדרת נהלי הפיתוח למוצר עריכת תכנית פיתוח ומעקב אחריה ניהול קבלני-משנה (sub-contractors) הבטחת איכות תוכנה (SQA) מעקב ובחינה של התהליך תהליך תקין מבטיח שהתוצר הסופי יהיה איכותי ניהול תצורה (configuration management) רישום ומעקב של גרסאות המוצר ורכיביו ניהול ומעקב שינויים מבוא להנדסת תוכנה

27 מחזור חיים של תוכנה (software life cycle)
שלבים בפיתוח (phases) הפעילויות הכלולות בכל שלב סדר הפעילויות סדרתיות מקביליות איטרטיביות תלות הדדית בין תוצרי הפעילויות תוצרים של פעילות אחת מהווים קלט לפעילויות אחרות פיתוח אבולוציוני מוצר המתפתח באופן הדרגתי מוצרים שונים המתפתחים ממוצר בסיסי מבוא להנדסת תוכנה

28 גמישות רבה: שינויים תוך כדי פיתוח (= agile)
מטרות חדשות גמישות רבה: שינויים תוך כדי פיתוח (= agile) פיתוח של משפחת מוצרים (=product line ) שילוב עם מרכיבי רשת (= web component) תיכנון ופיתוח מונחה מודלים (בלי תלות בשפה או בסביבת בעבודה) (= model driven architecture ) שימוש בסביבת פיתוח משולבת, עם כלים נוחים לכל המשימות ( JBuild, Junit, RUP ) מבוא להנדסת תוכנה

29 (the silver bullet) טמון, אולי, בשיפור תהליך התוכנה
תקנים למחזור-חיים, לפעילויות ולתוצריהם תקני הצבא האמריקאי DOD-STD-2167A MIL-STD-498 תקנים תעשייתיים IEEE/EIA 12207 דרישות מערכת האיכות ISO 9001 ISO – יישום לגבי תוכנה מודל בשלות היכולת CMM = Capability Maturity Model “פתרון הקסם” (the silver bullet) טמון, אולי, בשיפור תהליך התוכנה מבוא להנדסת תוכנה

30 אז מה היה לנו...? מקומה של הנדסת התוכנה
הייחודיות שבפיתוח תוכנה היבטים שונים של הנדסת תוכנה ההיבט ההסטורי ההיבט הכלכלי ההיבט האחזקתי ההיבט הניתוחי / תכנוני ההיבט הצוותי תהליך התוכנה (the software process) פעילויות בפיתוח תוכנה ותוצריהן מחזור חיים של תוכנה שיפור תהליך התוכנה מבוא להנדסת תוכנה

31 מודלים של מחזור חיי תוכנה
וכעת נעבור ל... מודלים של מחזור חיי תוכנה מבוא להנדסת תוכנה


Download ppt "מבוא Introduction מקורות: S. R. Schach: Chapters 1-2"

Similar presentations


Ads by Google