פיתוח תוכנה

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

• הגדרת דרישות Requirement
• ניתוח הדרישות, מפרט דרישות תוכנה Specification
• קביעת תוכנית מפורטת ועיצוב לפתרון תוכנה Planning & Design
• קידוד / תכנות Coding
• מבחני קבלה / בדיקות תוכנה Testing
• אינטגרציה, שילוב Intergration
• תחזוקה ותיקון באגים Maintenance

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


עלויות פיתוח תוכנה


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

לתוכנה יש מגבלות בסיסיות: סיבוכיות – מספר תרחישים גדול מאד אשר מקשה להבין את המכלול, תאימות - תוכנה נדרשת להתאים את עצמה למגבלות של החומרה ושל התוכנות האחרות בסביבתה, ומאחר שמדובר ב"מוצר גמיש" זול יחסית ושאינו דורש חומרי גלם או תהליך ייצור, עליה להיות גמישה לשינויים ועדכונים תכופים.

מן הצד של צוות הפיתוח, הבעיות עשויות להופיע בחלקים שונים של פרויקט הפיתוח, החל מדרישות לא מובנות/מוגדרות היטב שקיים פער בתפיסתן ע"י בעלי התפקיד השונים, דרך ניסיון להמציא את הגלגל במקום להשתמש ביישום זמין - סינדרום NIH/Not Invented Here, הערכת זמן לא נכונה (Chicken Schedule), ועד ניהול שינויים והתמודדות עם זמינות המשאבים.

תפריט