עיצוב מעלה-מטה ומטה-מעלה – הבדלי גרסאות

אין תקציר עריכה
מ (←‏מדעי המוח ופסיכולוגיה: קישורים פנימיים)
אין תקציר עריכה
[[Fileקובץ:Top-Down Bottom-Up Processing.png|thumbממוזער|עיצוב מעלה-מטה ומטה-מעלה]]
 
'''מעלה-מטה''' ו'''מטה-מעלה''' הן אסטרטגיות ל[[פיתוח תוכנה]], המופיעות גם בהקשר של [[תורת המערכות|תורות המערכות]] ההומניות והמדעיות.
בתהליך [[פיתוח תוכנה]] הגישות מעלה-מטה ומטה-מעלה משחקות תפקיד מרכזי.
 
עיצוב מעלה-מטה הוא המקור העיקרי של [[שפת תכנות|שפות תכנות]] [[תכנות פרוצדורלי|פרוצדורליות]] מסורתיות. עיצוב זה קודם בשנות השבעים של [[המאה ה-20]] על ידי [[הרלן מילס]] ו[[ניקלאוס וירת]]. מילס פיתח תפישות של [[תכנות מובנה]] לשימוש מעשי, שאותן הוא בחן בפרויקט מיכון אינדקס הארכיון של ה[[ניו יורק טיימס]] בשנת 1969. הצלחתו ההנדסית והניהולית של הפרויקט הובילה לתפוצת גישת מעלה-מטה דרך [[IBM]] ושאר תעשיית המחשבים. ניקלאוס וירת, שפיתוח [[שפת תכנות|שפת התכנות]] [[פסקל (שפת תכנות)|פסקל]] הוא אחד מהישגיו, כתב את המאמר המשפיע "Program Development by Stepwise Refinement".
 
שיטת מעלה-מטה הועדפה ב[[הנדסת תוכנה]] עד לעלייתה של פרדיגמת [[תכנות מונחה עצמים]] בשנות השמונים המאוחרות של המאה העשרים. בשפות מונחות עצמים כדוגמת [[C Plus Plus|C++]] או [[Java]] הועדפה שיטת תכנות מטה-מעלה.
הטכניקה לכתיבת תוכנה בגישת מעלה-מטה היא לכתוב [[פונקציה (תכנות)|פונקציה]] ראשית שנותנת שמות לכל הפונקציות העיקריות שידרשו לה. בהמשך, צוות התכנות בוחן את המפרט הדרישות של כל אחת הפונקציות הללו והתהליך חוזר על עצמו. לבסוף פונקציות מפוצלות אלו יבצעו פעולות בסיסיות, שהקוד שלהן יכול להיכתב בתמציתיות. כאשר כל אותן פונקציות מגוונות כבר נכתבו, התוכנה מוכנה.
 
שיטת מעלה-מטה מדגישה תכנון והבנה מלאים של המערכת. משמעות הדבר היא, שכתיבת הקוד אינה מתחילה עד שהושגה רמה מספקת של פרטים בעיצובם של לפחות כמה מחלקיה של המערכת. דבר זה מעכב בדיקה של יחידות פונקציונליות בסיסיות של המערכת עד להשלמתו של חלק משמעותי מהעיצוב.
 
לעומת זאת, שיטת מטה-מעלה מדגישה כתיבת קוד ובדיקות מוקדמות, שעשויות להתחיל מיד משהוגדר המודול הראשון. גישה זו טומנת בחובה סיכון שבקידוד מודולים בלא שיהיה ברור כיצד הם אמורים להיות מקושרים לחלקיה האחרים של המערכת, וקישור כזה עלול להיות קשה מכפי שזה נראה במחשבה ראשונה.
 
הטכניקה לכתיבת תוכנה בגישת מטה-מעלה היא לעצב ולקודד באופן מלא מערכת בעלת פונקציונליות חלקית, ואז להרחיב את המערכת עד למימוש כל דרישות הפרויקט.