מהנדסי תוכנה ו- מתכנתי מחשבים שניהם מפתחים יישומי תוכנה הנחוצים למחשבים עובדים. ההבדל בין שתי התפקידים טמון באחריות ובגישה לתפקיד. מהנדסי תוכנה משתמשים בעקרונות ונהלים מדעיים מוגדרים היטב בכדי לספק מוצר תוכנה יעיל ואמין.
הנדסת תוכנה
הנדסת תוכנה מתייחסת לגישה לפיתוח תוכנה כתהליך פורמלי דומה לזה שנמצא בהנדסה המסורתית. מהנדסי תוכנה מתחילים בניתוח צרכי המשתמש. הם מעצבים תוכנה, פורסים, בודקים אותה לאיכותם ומתחזקים אותה. הם מורים לתכנת מחשבים כיצד לכתוב את הקוד הדרוש להם. מהנדסי תוכנה עשויים או לא כתוב אחד מהקודים עצמם, אך הם זקוקים לכישורי תכנות חזקים בכדי לתקשר עם המתכנתים ולעתים קרובות דוברים מספר שפות תכנות.
מהנדסי תוכנה לתכנן ולפתח משחקי מחשב, יישומים עסקיים, מערכות בקרת רשת ומערכות הפעלה של תוכנה. הם מומחים בתיאוריה של תוכנת מחשוב והמגבלות של החומרה שאליה הם מתכננים.
הנדסת תוכנה בעזרת מחשב
יש לנהל רשמית את כל תהליך עיצוב התוכנה הרבה לפני שנכתב שורת הקוד הראשונה. מהנדסי תוכנה מייצרים מסמכי עיצוב ממושכים בעזרת כלי הנדסת תוכנה בעזרת מחשב. לאחר מכן ממיר מהנדס התוכנה את מסמכי העיצוב למסמכי מפרט עיצוב המשמשים לעיצוב קוד. התהליך מאורגן ויעיל. אין תכנות מחוץ לשרוול שלא מתרחשות.
ניירת
אחד המאפיינים המובחנים של הנדסת תוכנה הוא מסלול הנייר שהוא מייצר. עיצובים מושתתים על ידי מנהלים ורשויות טכניות, ותפקיד הבטחת האיכות לבדוק את מסלול הנייר. מהנדסי תוכנה רבים מודים כי תפקידם הוא ניירת של 70% וקוד של 30%. זו דרך יקרה אך אחראית לכתוב תוכנה, וזו אחת הסיבות לכך שאוויוניקה במטוסים מודרניים כל כך יקרים.
אתגרי הנדסת תוכנה
יצרנים אינם יכולים לבנות מערכות מורכבות קריטי חיים כמו מטוסים, בקרות כור גרעיני ומערכות רפואיות ומצפות שהתוכנה תיזרק זו לזו. הם דורשים כי התהליך כולו ינוהל ביסודיות על ידי מהנדסי תוכנה, כך שניתן יהיה לאמוד את התקציבים, לגייס צוותים ולמזער את הסיכון לכישלון או טעויות יקרות.
באזורים קריטיים לבטיחות כמו תעופה, חלל, תחנות כוח גרעיניות, רפואה, גילוי אש מערכות ורכיבה על רכבת הרים, עלות כישלון תוכנה יכולה להיות עצומה מכיוון שחייהם נמצאים סיכון. יכולתו של מהנדס התוכנה לצפות בעיות ולבטל אותן לפני שהן מתרחשות היא קריטית.
הסמכה וחינוך
באזורים מסוימים בעולם וברוב מדינות ארה"ב אינך יכול לקרוא לעצמך מהנדס תוכנה ללא השכלה רשמית או הסמכה. כמה מחברות התוכנה הגדולות, כולל מיקרוסופט, אורקל ורד האט מציעות קורסים להסמכה. מכללות ואוניברסיטאות רבות מציעות תארים בהנדסת תוכנה. מהנדסי תוכנה שואפים עשויים להיות גדולים במדעי המחשב, הנדסת תוכנה, מתמטיקה או מערכות מידע ממוחשבות.
מתכנתי מחשבים
מתכנתים כותבים קוד למפרטים שניתנו להם על ידי מהנדסי תוכנה. הם מומחים בשפות התכנות העיקריות של מחשבים. למרות שהם בדרך כלל לא מעורבים בשלבי העיצוב המוקדמים, הם עשויים להיות מעורבים בבדיקה, שינוי, עדכון ותיקון הקוד. הם כותבים קוד באחת או יותר משפות התכנות המבוקשות, כולל:
- SQL
- JavaScript
- ג'אווה
- C #
- פייתון
- PHP
- אודם על מסילות
- סוויפט
- מטרה-ג
- PHP
מהנדסים לעומת מתכנתים
- הנדסת תוכנה הינה פעילות צוותית. תכנות היא בעיקר פעילות בודדת.
- מהנדס תוכנה מעורב בתהליך השלם. תכנות היא היבט אחד בפיתוח תוכנה.
- מהנדס תוכנה עובד על רכיבים עם מהנדסים אחרים לבניית מערכת. מתכנת כותב תוכנית שלמה.