האתר הישראלי להנדסת תכנה

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

תכן עם מחזור - המשך

נציג את היתרונות שמנינו לנושא המחזור בצורה מסודרת:

  • אמינות מוגברת: רכיבים שכבר נעשה בהם שימוש במערכות קיימות הם אמינים יותר. הם נבדקו ונוסו במגוון סביבות ותנאים. בעיות שהיו בהן נתגלו זה מכבר על ידי המשתמשים הקודמים, כך שהסיכוי לגלות בהם בעיות לא מוכרות קטן משמעותית מזה של רכיבים חדשים.
  • הקטנת סיכונים: לרכיב קיים יש יכולות מוכחות ומגבלות ידועות. עובדה זו חוסכת את אי הוודאות הטמונה בפיתוח רכיב. הנדרש לספק יכולות מסוימות, תוך פרק זמן סביר. בכך נחסך ממנהל הפרויקט הצורך להעריך כמה זמן ומאמץ יעלו לו פיתוח רכיב זה במערכת. הדבר נכון במיוחד ברכיבים גדולים (כגון תתי-מערכות), מכיון שהסיכון רב יותר ככל שהרכיב גדול יותר.
  • שימוש יעיל במומחים: ניתן למחזר רכיבים במקום אנשים. אם רכיב מסוים דורש מומחיות מקצועית מסוימת, הרי שבמקום לנייד את המומחים מפרויקט לפרויקט (מה שגם אינו בהכרח אפשרי, אחרי הכל) ניתן לממש רכיבי תכנה ניתנים-למחזור המכילים את מומחיותם ולנייד אותם מפרויקט לפרויקט.
  • תאימות לתקנים: ניתן לשבץ תקנים ברכיבים ניתנים למחזור. כאשר רכיב כזה מכיל תכנה העונה לתקן מסוים (למשל תקן תקשורת) הוא מגדיל את הסיכוי להיות תואם למערכות אחרות, ובכך הופך את המחזור לכדאי יותר.
  • פיתוח מואץ: שימוש מחדש ברכיבים קיימים חוסך זמן פיתוח, בדיקות, ניפוי שגיאות ותעוד ומאפשר בכך להאיץ את תהליך הפיתוח של המערכת.
  • ישנן שלוש דרישות קריטיות מתכן עם מחזור:
  • רכיבים הניתנים למחזור חייבים להיות בהישג יד. הארכיטקט צריך קטלוג מתועד של רכיבים נגישים הניתנים למחזור.
  • המשתמש צריך להיות בטוח באמינותם של הרכיבים ובהתנהגותם הצפויה. רכיבים המגיעים מגוף מתמחה (בין אם נקנו ובין אם פותחו בארגון) עוברים בדרך כלל בדיקות איכות ומגיעים עם תווית איכות. עם זאת, במציאות המקור לרכיבים כאלה אינו תמיד אמין.
  • על הרכיבים להיות מתועדים על מנת לאפשר למשתמש לשלבם במערכת שלו ולשנותם לפי הצורך.
  • אין כיום ספק בנחיצות המחזור. בכל בית תכנה ראוי לשמו עושים שימוש בחבילות תכנה קנויות וחופשיות (על נושא הקוד הפתוח נדבר בהמשך). קשה לתאר כיום את העבודה ב – C++ ללא חבילת STL כלשהיא ואת העבודה ב – Java ללא המארזים שלה.

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



    ישנם מספר תחומים עיקריים בהם ניתן לעשות שימוש במחוללים:

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

    תכן עם מחזור לתחילת הדף פיתוח מבוסס רכיבים
    ©איתן 2003. כל הזכויות שמורות למערכת המידע איתן