מדוע אנו זקוקים להנדסת תוכנה?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



Source by Edeh Chijioke

Empfohlene Artikel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.