מתודולוגיית הספירלה

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

== היסטוריה ==
המתודולוגיה תוארה לראשונה על ידי בארי בם במאמרו משנת 1986, "מודל הספירלה של פיתוח ושיפור תוכנה"<ref></ref>. בשנת 1988 פרסם בם מאמר דומה<ref></ref> לקהל רחב יותר. במאמרים אלה הוצג תרשים שהופץ בפרסומים רבים לאחר מכן שדנו במתודולוגיית הספירלה.

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

בפרסומים מאוחרים יותר<ref></ref>, בם מתאר את מודל הספירלה כ"גנרטור מודל תהליכי", כאשר בחירות המבוססות על סיכוני הפרויקט מייצרות מודל תהליכי מתאים לפרויקט. לפיכך, התפתחות איטרטיבית והדרגתית, מודל מפל המים, פיתוחי אב-טיפוס תוכנתי ואחרים הם מקרים מיוחדים של מתודולוגיית הספירלה המתאימים לדפוסי הסיכון של פרויקטים מסוימים.

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

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

בדוח של מועצת המחקר הארצית<ref></ref> הורחב מודל זה כך שיכלול סיכונים הקשורים למשתמשים אנושיים.

כדי להבדיל טוב יותר בין סיכונים אמתיים לאלו המדמים לספיראליות, בם מונה שישה מאפיינים המשותפים לכל היישומים של מתודולוגיית הספירלה.

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

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

=== בצעו ארבע פעילויות בסיסיות בכל מחזור ===
מאפיין זה מזהה את ארבע הפעילויות שחייבות להתרחש בכל מחזור של המודל הספירלי:

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

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

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

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

שלושת אבני הדרך של נקודת העיגון משתלבים בקלות בתהליך האחיד הרציונלי (RUP), כאשר LCO מסמן את הגבול בין שלבי הקמת RUP לשלב ההרחבה, LCA מסמן את הגבול בין שלבי ההארכה והבנייה, ו- IOC מסמן את הגבול בין שלבי הבנייה למעבר.

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

== קישורים חיצוניים ==

# https://www.geeksforgeeks.org/software-engineering-spiral-model/
# https://www.guru99.com/what-is-spiral-model-when-to-use-advantages-disadvantages.html
# https://searchsoftwarequality.techtarget.com/definition/spiral-model
# https://www.dcslsoftware.com/pros-cons-spiral-software-development/
# https://www.methoda.cloud/content/pages/kit_rad/h_guide-map.asp
# https://www.openu.ac.il/lamda/10645/chapters.pdf

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

קטגוריה:מתודולוגיות לפיתוח תוכנה
קטגוריה:תוכנה