מחזור חיי תוכנה פירושו סדרת תהליכים הקשורים בפיתוח תוכנה, אשר לפחות תאורטית יכולים לחזור ולקרות יותר מפעם אחת לפחות מן הרגע בו מתחילים לפתח אותה ועד הרגע בו באופן כללי פוסק השימוש בה (אם הוא בכלל פוסק בחיי איש).
מודל
מודל סביר למחזור חיי תוכנה הינו:
- ניתוח (Analysis): הגדרת בעיה שצריך לפתור בעזרת תוכנה
- אפיון (Specification): אפיון טכני כללי של התוכנה, כגון באילו שפות מחשב ייכתב קוד מקור שלה וכדומה
- פיתוח (Development): פיתוח מבנה, התנהגות, עיצוב התוכנה (ממשק משתמש וכדומה)
- שחרור (Release)
- בדיקה (Testing): ביצוע מגוון בדיקות תוכנה
- תחזוקה (Maintenance): טיפול בתקלות של משתמשי התוכנה
אפשר ששלב הניתוח ושלב האפיון יבוצעו יחדיו כחלק משלב אחד שנקראה בעצמו "אפיון" (כללי).
בדרך כלל שיווק הוא חלק בלתי נפרד מהתהליך והוא מקביל לשלב התחזוקה; השיווק הוא לאו דווקא עסקי-רווחי אלא יכול להיות גם קהילתי-חינמי
אפיון
אפיון (באנגלית: Specification ; ספסיפיקציה) אני מגדיר כלהגדיר או לאפיין, בצורה כללית או בצורה מדויקת (מוחלטת) או היכן שהוא בין רמות הגדרה אלו, מה יבסס משהו או מה יהיה (יהווה) משהו ← מה ייכלל בו או מה יהיו המאפיינים שלו; במשהו הכוונה למוצר או שירות.
אפיון כולל לרוב מאפיינים של מטרה (או פתרון בעיה), בטיחות, מניעת צרה וטיפול במצוקה (כולל אבטחת מידע אם רלוונטי), הבטחת יעילות, יציבות, טכנולוגיה, חומרים ועוד.
אפיון הוא שלב יסודי בתכנון (planning) של מוצר או שירות; מוצר זה הוא לרוב מוצר הנדסי מורכב כגון בניין (מבית פרטי ועד בניין ציבורי), אתר ווב וכדומה. אפיון הוא אחד משלבי יסוד בתכנונים רבים לצד ארכיטקטורה כללית, ועיצוב.
בדרך כלל אפיון תמיד יכלול ניתוח לטווח ארוך; בתחום פיתוח תוכנה לפעמים מצומצם בכוונה (אם כי לא לאפס) מובן ניתוח לטווח ארוך כמו עם פיתוח תוכנה אג'ילי.
בדיקת תוכנה
בדיקת תוכנה היא סוג של בדיקת איכות למוצר; במקרה זה, מוצר תוכנה וחלק מתהליך פיתוח תוכנה ובמובן מסוים ממחזור חיי תוכנה וכרוכה בשימוש בתוכנה כפי שמשתמש ("משתמש קצה" או "לקוח") היה משתמש בה ו\או הרצת בדיקות אוטומטיות.
זוהי למעשה בדיקת הפלט שפולטת תוכנה בעת הרצתה או לאחר מכן ומטרתה להבטיח חוויית משתמש, אבטחת מידע וכדומה.
בדיקות יכולות להתבצע בכל שלב פיתוחי; אלפא, בטא, שחרור לטווח ארוך (Long term release / Stable release) וכן גם בפרדיגמות פיתוח פחות מובנות כגון במקרי פיתוח תוכנה אג'ילי.
קיימים אנשי מחשוב המתמחים בפיתוח תוכנות המבצעות בדיקות תוכנה אוטומטיות (מפתחי תוכנה) אך גם אחרים משתתפים בבדיקת תוכנה לעתים אם הבדיקה איננה אוטומטית.
מונחים נוספים
התקנת תוכנה
התקנת תוכנה (באנגלית: Software installation) היא חלק משלב הבדיקה.
התקנת תוכנה היא הרצת קוד מקור ו\או קוד מקומפל עם ממשק משתמש לצורך אגירת פלט ההרצה על סביבת התוכנה (software environment) של אותה מערכת מחשב והפעלת פלט זה לצורך שימוש בתוכנה.
תוכנה שמתקינים על מערכת מחשב יכולה להיות מערכת הפעלה או כל תוכנה המותקנת על מערכת ההפעלה (ולעתים גם על בסיס תוכנה שהותקנה עליה בשכבה גבוהה יותר וכן הלאה).
לעתים, לאחר התקנת תוכנה יש לבצע קוניפיגורציה (התאמה) שלה לסביבת העבודה הרלוונטית
שחרור אתר ווב
מכיוון שכל אתר ווב (אתר אינטרנט) הוא למעשה תוכנה לכל דבר ועניין (תוכנה מסוג אפליקציית אינטרנט) הרי ששחרורו לווב הוא למעשה חלק ממחזור חיי תוכנה (כל תוכנה, גם אם אין לה קשר לווב) וייתכנו לו גרסאות כגון גרסת אלפא, גרסת בטא, גרסה יציבה וכדומה.
שחרור אתר ווב נעשה דרך אחסון אתר ווב. ברגע שמאחסנים את האתר על סביבת אחסון (סביבת שרתים תקנית העומד בסטנדרטים של ארגונים עולמיים האחראים על הווב) ניתן יהיה לגשת לאתר מדפדפן ווב. השחרור הוא למעשה כל עדכון של האתר (במובן של תוכנה ולא של תוכן גולמי כמו טקסט או תמונות).
קונפיגורציה
המונח קונפיגורציה (באנגלית: Configuration ונכתב לעתים בקצרה רק conf) הוא הגדרת התנהגות תוכנה.
כשאומרים "לקנפג תוכנה" הכוונה היא לקבוע הגדרות כלליות שונות לגבי אופן פעילותה.
המונח נפוץ מאד בכל הנוגע לפיתוח סביבת שרתים (כמו סביבת שרתים לאחסון אתר ווב ← דרך קבצי קונפיגורציה שונים של תוכנות השרת נקבע איך השרת יתנהג באופן כללי עם בעודו מטפל בבקשות ומגיב תגובות מצד משתמש אחד או יותר.
קונפיגורציה היא שינוי מינורי בשחרור קיים של תוכנה אשר אין לו השפעה על שחרורים עתידיים שלה ולכן איננו נחשב חלק ממחזור חיי תוכנה, אם כי, כאשר משתמשים בתוכנת ניהול גרסאות, קונפיגורציה תישמר בהיסטוריית גרסאות של עותק (branch) נתון.
קונטינייווס אינטגריישן
קונטינייווס אינטגריישן (באנגלית: Continuous integration) מתאר את המונחים קונטינייווס דליבארי וקונטינייווס דיפלוימנט; או רק אחד מהם או את שניהם.
דיפלויימנט מצריך דליברי.
בהקשר עדכוני תוכנה רציפים המונח קונטינייווס אינטגריישן יכול להתחלף במונח "קונטינייווס אפגרייד" (continuous upgrade).
קונטינייווס דליבארי
קונטינייווס דליבארי (באנגלית: Continuous delivery) הוא מושג בפיתוח תוכנה שמשמעותו העברת מידע באופן מתמשך "ברקע" (בלי שזה יפריע לתהליכים אחרים) בהקשר תוכנה מסוימת.
המונח משמש בעיקר לתאר העברת מידע הכרוך בעדכון תוכנה בצורה מתמשכת ואוטומטית, בכל פעם שיש עדכון, ככלל מבלי שמשתמש בכלל מודע לכך שמתרחש עדכון אלא אם כן הוא בדק אם היה עדכון.
עצם העברת המידע היא השלב הראשון בתהליך רחב יותר הנקרא קונטינייווס אינטגריישן; השלב השני בתהליך נקרא קונטינייווס דיפלוימנט ומשמעותו הרצה בפועל של המידע שהועבר.