ISO/IEC/IEEE 12207

**ISO/IEC/IEEE 12207** או בשמו המילולי "***Systems and software engineering – Software life cycle processes***" (*הנדסת* *מערכות ותוכנה – תהליכי מחזור החיים של תוכנה)* הוא תקן בינלאומי עבור ניהול תהליכי מחזור החיים של תוכנה. התקן הוצג לראשונה ב-1995, והוא שואף להיות הסטנדרט הראשי המגדיר את כלל התהליכים בפיתוח ותחזוקה של מערכת תוכנה, כולל התוצרים והפעילויות של כל תהליך. הגרסה האחרונה יצאה בנובמבר 2017. הוא נשען על, ובגרסתו הראשונה (IEEE 12207) התיימר להחליף את MIL-STD-498.

## גרסאות קודמות
ISO/IEC/IEEE 12207:2017 היא הגרסה החדשה ביותר, ופורסמה בנובמבר 2017. "IEEE Computer Society" הצטרפה ישירות לארגון הבינלאומי לתקינה (ISO) בתהליך העריכה של גרסה זו. שינוי משמעותי הוא בכך שהוא מאמץ מודל תהליכי זהה למודל התהליכי 2015:ISO/IEC/IEEE 15288 (יש שינוי שם אחד, תהליך 15288 "הגדרת דרישות מערכת" שונה לשם תהליך "הגדרת דרישות מערכת/תוכנה"). הרמוניזציה זו של שני התקנים הובילה להסרת תהליכים נפרדים של פיתוח תוכנה ושימוש חוזר בתוכנה, והוריד את המספר הכולל של תהליכי 12207 מ-43 ל-30 תהליכים שהוגדרו בתקן 15288. וכן גרמה לשינויים בפעילות ותוצאות של ניהול האיכות (quality management) ותהליכי אבטחת האיכות (quality assurance). בנוסף עודכנה ההגדרה של "ביקורת" (audit) ופעילויות קשורות. נספח I ל-ISO/IEC/IEEE 12207:2017 מספק מיפוי תהליכים בין גרסת 2017 לגרסה הקודמת, כולל יישור קו של התהליכים העיקריים בין שתי הגרסאות, זה נועד לאפשר עקיבות ולהקל על המעבר למשתמשים בגרסה הקודמת.

גרסאות קודמות כוללות:
* ISO/IEC 12207:2008, שפורסם בפברואר 2008
* ISO/IEC 12207: 1995 / Amd 2:2004, גרסה מתוקנת של הקודם, שפורסמה בנובמבר 2004
* ISO/IEC 12207: 1995 / Amd 1:2002, גרסה מתוקנת של הקודם, שפורסמה במאי 2002
* ISO/IEC 12207:1995, האיטרציה הראשונה, שפורסמה ביולי 1995;במקור חולק לחמישה תהליכים ראשוניים (רכישה, אספקה, פיתוח, תפעול ותחזוקה), עם שמונה תהליכי תמיכה במחזור החיים הארגוני.

### גרסאות IEEE
לפני ש-IEEE Computer Society הצטרפה רשמית לתהליך העריכה (והפכה לבעלת עניין מרכזית) לשחרור של 2017, IEEE שמרה על גרסאות משלה ל-ISO/IEC 12207, בתחילה עם שינויים שנעשו במשותף עם EIA. עם העדכון של שנת 2008 הגיעה "אסטרטגיה משותפת של ISO/IEC JTC 1/SC 7 ו-IEEE להרמוניזציה של אוספי התקנים שלהם", וכתוצאה מכך התקנים זהים, אך עם שמות שונים במקצת. 

גרסאות IEEE אלה כללו את:
* IEEE Std. 12207-2008: "משלב את ISO/IEC 12207: 1995 עם שני התיקונים שלו ותואם עם התיקון המקביל של ISO/IEC 15288: 2002 (תהליכי מחזור חיי המערכת) כדי ליישר מבנה, מונחים ותהליכים ארגוניים ופרויקטים מקבילים"; מוחלף על ידי ISO/IEC/IEEE 12207:2017
* IEEE/EIA 12207.2-1997: "מספק הנחיות שיקול יישום לסעיפים הנורמטיביים של IEEE/EIA 12207.0"; מוחלף / מיושן על ידי IEEE Std. 12207-2008, שבעצמה הוחלפה על ידי ISO/IEC/IEEE 12207: 2017
* IEEE/EIA 12207.1-1997: "מספק הנחיות להקלטת נתוני מחזור חיים הנובעים מתהליכי מחזור החיים של IEEE/EIA 12207.0"; מוחלף על ידי ISO/IEC/IEEE 15289: 2011, שהוחלף בעצמו על ידי ISO/IEC/IEEE 15289: 2017
* IEEE/EIA 12207.0-1996: "מורכב מההבהרות, התוספות והשינויים [ל-ISO/IEC 12207: 1995 ליישום התעשייה] שהתקבלו על ידי המכון למהנדסי חשמל ואלקטרוניקה (IEEE) והברית לתעשיות אלקטרוניות (EIA) כפי גובש על ידי פרויקט משותף של שני הארגונים"; הוחלף על ידי IEEE Std. 12207-2008, שהוחלפה על ידי ISO/IEC/IEEE 12207: 2017

ראוי גם לציין כי IEEE/EIA 12207 החליף רשמית את MIL-STD-498 (שוחרר בדצמבר 1994) לפיתוח מערכות תוכנה של DoD ב-27 במאי 1998.

## תהליכים ולא שלבים
התקן קובע סדרה של תהליכים לניהול מחזור החיים של תוכנה. התקן "אינו ממליץ על מודל מחזור חיים ספציפי, או על מתודולוגיית פיתוח, שיטה, גישה או טכניקה.". במקום זאת, תקן (כמו גם ISO/IEC/IEEE 15288) מבחין בין "שלב" (Stage) ו"תהליך" (Process) כדלקמן:
* שלב: "רכיב כרונולוגי בתוך מחזור החיים של ישות המתייחס לעיתוי של תיאורו או מימושו". שלב הוא בדרך כלל עיתי (תקופת זמן), ומסתיים ב"שער החלטה".
* תהליך: "קבוצה של פעילויות בעלות אינטראקציה כלשהי ביניהן אשר מקבלת קלט ומייצרת פלט". תדיר למצוא תהליך מסוים שחוזר על עצמו במספר שלבים.

שלבים (Stages או Phases) שונים מתהליכים, ותקן זה מגדיר רק תהליכים מסוימים, ואינו מגדיר שלבים. במקום זאת, התקן מכיר בכך שמחזור חיי תוכנה משתנה, ועשוי להיות מחולק לשלבים המייצגים תקופות עיקריות במחזור החיים ואשר מעלים שערי החלטה מרכזיים. אין קבוצה נורמטיבית מסוימת של שלבים, אבל התקן מזכיר שתי דוגמאות:
* שלבי מערכת מחזור החיים של תקן ISO/IEC TS 24748-1 : קונספט, פיתוח, הפקה, ניצול, תמיכה, פרישה.
* מערכת משותפת נפוצה של שלבים בתוכנה: חקר קונספטואלי, פיתוח, תחזוקה, פרישה.

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

## התהליכים
ISO/IEC/IEEE 12207:2017 מחלק את תהליכי מחזור החיים של תוכנה לארבע קבוצות עיקריות: הסכם (agreement), אפשור-פרויקט ארגוני (organizational project-enabling), ניהול טכני (technical management) ותהליכים טכניים (technical processes). תחת כל אחד מאותם ארבע קבוצות, יש מגוון רחב של תתי-קטגוריות, כולל הפעילות העיקרית של רכישה ואספקה (הסכם); תצורה (ניהול טכני); תפעול, תחזוקה וסילוק (טכני).

### תהליכי "הסכם"
הגרסה האחרונה, ISO/IEC/IEEE 12207:2017 הכוללת כאמור גם את IEEE, מכילה גם תהליכי רכש ואספקה, כלומר פעילויות הקשורות בגיבוש הסכם בין ספק לבין רוכש. רכש מכסה את כל הפעילויות הקשורות ביזום פרויקט.

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

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

### תהליכי ניהול טכני
ISO/IEC/IEEE 12207:2017 מגדיר כאן שמונה תהליכים שונים:
* תכנון משימה
* הערכת הפרויקט ובקרה
* ניהול החלטות
* ניהול סיכונים
* ניהול תצורה
* ניהול מידע
* מדידה
* אבטחת איכות

תהליכים אלו מתמודדים עם תכנון, מדידה ובקרה של תוכנה ופרויקטים אחרים במהלך מחזור החיים, ומבטיחים איכות לאורך הדרך.

### תהליכים טכניים
ב ISO/IEC/IEEE 12207:2017 מוגדרים 14 תהליכים טכניים שונים, חלקם הגיעו מגרסאות קודמות של המסמך שהיה מיועד לתוכנה בלבד (והוצאו ממנו בהדרגה מגרסאות 2008 ואילך).

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

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

## ראו גם
* UML
* בניית תוכנה

## הערות שוליים

קטגוריה:תקני IEEE
קטגוריה:תקני ISO/IEC
קטגוריה:מתודולוגיות לפיתוח תוכנה
קטגוריה:תקנים בתחום המחשוב