מדוע הנדסת תוכנה אינה דומה לתחומי הנדסה אחרים וכיצד היא משנה את המשחק

ההערכה היא כי ישנם יותר מ -11 מיליון מפתחי תוכנה מקצועיים ברחבי העולם החל משנת 2014. כשהתחלתי כמתכנת בשנת 1973 אחד הזנבים האפורים בחברה הראשונה שעבדתי עבורו נתן לי עצות. הוא אמר, "למד את הדברים שלעולם לא משתנים".

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

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

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

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

מדוע עלינו לשנות ספר לימוד בערך כל 3-4 שנים שכביכול מלמד את תלמידינו את יסודות הנדסת התוכנה?

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

כאשר תסתכל מקרוב תמצא כי אנו מלמדים את הדור הבא של אנשי מקצוע בתחום התוכנה בכל מה שהוא פופולרי כיום מבחינת שיטות תוכנה ושיטות. שיטות ותוכנות פופולריות כיום מוכרות על ידי מילות מפתח כגון Agile, Use Use, סיפורי משתמשים, RUP, XP, Scrum Lean, PSP, TSP והרשימה נמשכת ונמשכת …

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

מה עם הזקן האפור הזה בחברה הראשונה שעבדתי בה בשנת 1973 שאמרה לי ללמוד את הדברים שלעולם לא משתנים? האם הוא נתן לי עצה גרועה? אם לא, מה אנו מלמדים את הדור הבא של אנשי התוכנה בנוגע לדברים שלעולם לא משתנים בהנדסת תוכנה?

לפני שנענה על שאלות אלה, בואו נחזור אחורה ונשאל כמה שאלות שונות:

האם אכן קיימת מערכת דברים שלעולם לא משתנה בהנדסת תוכנה?

אם הם קיימים, האם אנו יודעים מה הם?

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

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

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

אז זה מוביל לעוד כמה שאלות:

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

וגם:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

היום ווטס היה נרגש מעבודת SEMAT שמתנהלת בקהילה האקדמית. קורס האוניברסיטה המלא הראשון המבוסס על תקן המהות החדש פותח והוא מועבר לסטודנטים השנה על ידי ד"ר קרלוס זאפטה באוניברסיטת נשיונל דה קולומביה במדלין, קולומביה, ואסנס משמש בשנה א 'ושנייה. קורסי הנדסת תוכנה במכון הטכנולוגי המלכותי של KTH בשבדיה בהנחיית ד"ר מירה קייקו-מטסון. כמו כן נערכו מחקרי שדה מהותיים שנערכו עם סטודנטים על ידי ד"ר ססיל פרייר בקארנגי-מלון ווסט שבארצות הברית. השלב הבא של קהילת SEMAT הוא להדגים כיצד Essence יכולה לסייע בתעשייה על ידי פרסום מחקרי מקרה של שימוש בפועל ותוצאות נמדדות בפרויקטים תעשייתיים.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *