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