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