הנדסת תוכנה

הנדסת תוכנה
ערך זה הוא חלק מקטגוריית הנדסת תוכנה

Coding Shots Annual Plan high res-5.jpg
מתכנת בעבודתו

פעילויות ושלבים
דרישותניתוחאפיוןארכיטקטורהעיצובתכנותדיבוגבדיקהאימותבנייהפריסה • תפעול • תחזוקה
מתודולוגיות
זריזותמפל המיםתכנת ותקן • Crystal Clear • ScrumUnified ProcessExtreme Programmingאינטגרציה רציפהDevOps
תחומים תומכים
ניהול פרויקטים • ניהול תצורה • תיעוד • הבטחת איכות • Profiling
כלים
מהדרמקשרמפרשIDEניהול גרסאותאוטומציית בנייה

הנדסת תוכנהאנגלית: Software Engineering) היא ענף של הנדסה העוסק בפיתוח תוכנה.

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

הנדסת תוכנה החלה להתגבש כתחום ייחודי בשנות ה-60 המאוחרות, על רקע משבר התוכנה. עד אותה עת נחשבה הנדסת התוכנה לענף משני של מדעי המחשב. כנס ראשון להנדסת תוכנה נערך בשנת 1968 על ידי ועדת המדע של נאט"ו,[3] וציין את תחילת דרכו של הענף כתחום נפרד ועצמאי. עם החלוצים בתחום נמנים פרד ברוקס, בארי בם, טוני הור ודייוויד פרנס. גרסה ראשונה של גוף הידע הרשמי של המקצוע הושלמה בשנת 1999, ובאותה השנה הוענק לפרד ברוקס פרס טיורינג על "תרומותיו פורצות הדרך בהנדסת מחשבים, מערכות הפעלה והנדסת תוכנה",[4] ושני האירועים נחשבים לאבני דרך חשובות בהתפתחות הענף. בארצות הברית, מסלול לימודים אקדמי להנדסת תוכנה (BSc) נפתח לראשונה בשנת 1996, ומסלול דומה מוצע גם בישראל. עם זאת, נכון לשנת 2006, לרוב העוסקים בתחום יש הכשרה אקדמית במדעי המחשב ולא בהנדסת תוכנה.[5]

יסודותיה התאורטיים של הנדסת התוכנה לקוחים ממדעי המחשב, ובצד המעשי היא חולקת עקרונות ושיטות עם הנדסת מחשבים, הנדסת מערכות, הבטחת איכות, הנדסת אנוש וניהול פרויקטים. בפתח המאה ה-21, ובניגוד חד לרבות מדיסציפלנות ההנדסה האחרות, שיטותיה של הנדסת התוכנה אינן מבטיחות כי תוצריה יהיו עקביים, אמינים או שימושיים.[6] יתר על כן, שיטותיה אינן אחידות, אינן מוסְדרות, ורובן המכריע מבוסס על כללי אצבע ונעדר תשתית מתמטית איתנה. בשל כך, ובשל היבטים נוספים של הנדסת תוכנה, שאלת סיווגה כענף של ההנדסה, המדע או האמנות תלויה ועומדת, וכן שוררת אי-הסכמה באשר לנכונותן או נחיצותן של רבות מהפרדיגמות והשיטות המשמשות בה.

תוכן עניינים