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

Slides:



Advertisements
Similar presentations
ממיבחניםC שאלות ++.
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
SW LIFE -CYCLE MODELS.
טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
© , ד"ר עמיר תומר שיטות בהנדסת תוכנה (234321) אודות הקורס - 1 שיטות בהנדסת תוכנה Introduction to Software Engineering מרצה: פרופ’ שמואל.
A smart phone application for sales agents בס"ד.  סוכני מכירות מגיעים ללקוח ומבצעים הזמנות ע " פ דרישות הלקוח  סוכן המכירות נעזר בקטלוג מוצרים, טלפון.
1 העלאת המודעות לחשיבות של תיעוד תוכנה, באמצעות משחק תפקידים היברידי H YBRID T EAM -B ASED R OLE P LAY AS A V EHICLE FOR I MPROVING S OFTWARE D OCUMENTATION.
מכונת מצבים תרגול מס' 4 Moshe Malka.
© , ד"ר עמיר תומר מבוא להנדסת תוכנה דרישות - 1 הגדרת דרישות וניהולן Requirements Definition and Management מקורות: S. R. Schach: Chapter 9 R.
הוספת מנשק משתמש ל - [ תפקידי רוחב בצוות ]. Features סיפוריםחבר צוות אחראי הערכת זמן ( בשעות ) זמן בפועל ( בשעות ) הושלם ( כן \ לא )
תמחיר תהליך. מערכת תמחיר תהליך מערכת זו נועדה לספק מידע, כמו מערכת תמחיר הזמנה, על עלות המוצרים שיוצרו בתקופה ועל עלות המוצרים שבתהליך הייצור בסוף התקופה.
דוד שוורץ, עידן זק, נטע צור וחיה כהן. הפונקציונאליות : המשתמש יבחר קובץ שעליו הוא רוצה לבצע את האנליזה, וילחץ עליו עם כפתור ימני בעכבר. יפתח תפריט ובו.
מודלים של מחזור חיי תוכנה Software Life-Cycle Models
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
מכון ויצמן למדע - שמוליק מתוך 8 חישוב מקבילי ומבוזר מה זה יחידה חמישית במדעי המחשב... n ענף מתקדם במדעי המחשב העוסק במערכות ממוחשבות מרובות ישויות.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
מבוא להנדסת תוכנה דרישות - 1 הגדרת דרישות וניהולן Requirements Definition and Management.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
אפרת פיטרסה / האוניברסיטה הפתוחה חקר מקרה של פיתוח מערכת למידה מבוססת אינטרנט ע"י קונסורציום של בתי ספר.
מרצה: פרופסור דורון פלד
בדיקה וגיבוש של רעיון עסקי Jonathan Klahr Associate BRM
שאילת שאלות שאלת חקר המפתח למנעול 1. שאילת שאלות – שאלת חקר מה ניתן לשנות ? :  בתנאים : טמפ ' או לחץ או הכלים, או הציוד  בחומרים : איכות או כמות או.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
הבטחת איכות מבוא להנדסת תוכנה
Questions are the Answer Penick&all H ISTORY R ELATIOINSHIPS A PPLICATION S PECULATION E XPLANATION.
משחק מכף לכף כבסיס לסיעור מוחין משותף אביגיל אורן תמי זייפרט דוד מיודוסר
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
פרויקט שנתי במערכות מידע /6
רישום חומרי למידה והסטנדרט הישראלי: ISRACORE יהודית בר אילן, אוניברסיטת בר-אילן אלי שמואלי, מיט"ל.
מבני בקרה לולאות. שאלה #1 שאלה ב' – תכתוב תוכנה הכותבת את תפריט הבאה Type 1 to find the area of a circle Type 2 to find the circumference of a circle.
מבוא להנדסת תוכנה אימות ותקפות - 1 אימות ובדיקות Verification & Testing מקורות: S. R. Schach: Chapter 6 R. S. Pressman: Chapter ד. גלין ו-ז. בלובבנד,
© , ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 1 תחזוקה והנדסה-מחדש Maintenance and Reengineering מקורות: S. R. Schach: Chapter 15 R. S. Pressman:
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 סיכום הקורס.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
© , ד"ר עמיר תומר שיטות בהנדסת תוכנה (234321) אודות הקורס - 1 שיטות בהנדסת תוכנה Introduction to Software Engineering מרצה : פרופ ’ שמואל.
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
Schechner Ethics and Design Proposals1 נוהל התמחות ב-"תכן הנדסי" הצעות מחקר.
A. Frank File Organization Hardware Size Parameters.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 7 ISP דוגמא נוספת.
בקרה תומר באום ב"הב"ה. סוגי בקרה חוג פתוח Open-loop control : אנו מכוונים את הרובוט למצב הבא שהוא אמור להיות בו לפי מודל מסוים, כמו שעשינו בקינמטיקה הפוכה.
מבוא לחשבונאות ניהולית. היחס בין חשבונאות פיננסית לניהולית פיננסיתניהולית פנימיים מותאמים לארגון בחלקים מסוימים יכול להיות : תחזית כמותי או איכותי מוניטרי.
1 ׃1998 Morgan Kaufmann Publishers פקודת ה- jump 4 bits 26 bits 2 bits 00 : כתובת קפיצה במילים : כתובת קפיצה בבתים … …
הנחיית פרויקטים במדעי המחשב אורני מרבאום-סלנט אורית חזן השתלמות מורים
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Copyright © 2003 Fair Isaac Corporation and Ness AT Corp. All rights reserved. מנוע חוקים עסקיים Blaze Advisor מציג: גיל ששון, מנהל המוצר
GREEN ENERGY you can rely on COPYRIGHT © 2010 ORMAT. All rights reserved. This document contains information proprietary to ORMAT. Reproduction in any.
Costs and Filters Dr. Avi Rosenfeld Department of Industrial Engineering Jerusalem College of Technology
Yaron Doweck Yael Einziger Supervisor: Mike Sumszyk 1.
מבוא לייצור ממוחשב - CIM מבוא. מטרות הקורס הקורס מיועד להקנות הבנה בטכנולוגיה, תכנון יישום ובקרה של מערכות ייצור ממוחשבות. הקורס ידון ביישום טכנולוגיות.
Visual Studio Team System Visual Studio Team System הילה להב רייס מנהלת תחום Life Cycle Management מנהלת תחום Life Cycle
שיאון שחוריMilOSS-il מוטיבציה  python זה קל ו C זה מהיר. למה לא לשלב?  יש כבר קוד קיים ב C. אנחנו רוצים להשתמש בו, ולבסס מעליו קוד חדש ב python.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
Formal Specifications for Complex Systems (236368) Tutorial #1
מערכות בסיסי נתונים ספרות Database System Concepts/ Korth, Siberschatz
תכן UML in Design מקורות: S. R. Schach: Chapter 12
שילוב שיטות קוגניטיביות בטיפול ריפוי בעיסוק
פיתוח אפליקציות אסינכרוניות Windows 10
מבוא ל Maven אליהו חלסצ'י תכנות מתקדם תרגול מספר 3
בעיות נוספות ב-NPC.
Shell Scripts בסביבת UNIX
מבוא למערכות מידע פרק 1.
מערכות מידע ניהוליות היבט יישומי: מהי מערכת מידע מהו ארגון
Presentation transcript:

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

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

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

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

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

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

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

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

המחיר היחסי של כל שלב בפיתוח מבוא מבוא להנדסת תוכנה המחיר היחסי של כל שלב בפיתוח נתונים שנאספו ממספר מקורות בשנים 1976-1981 מבוא להנדסת תוכנה © 1999-2001, ד"ר עמיר תומר

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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