UI – פוסט 9: מתודולוגיה בפיתוח ממשקי משתמש – שיטות בהנדסת תוכנה: פיתוח תוכנה במודל השכבות

14 בפברואר 2008

 


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


פיתוח תוכנה במודל השכבות



אחת השיטות של פיתוח תוכנה שמאוד נפוצה בשנים האחרונות היא "מודל השכבות". לדוגמא: מודל OSI – שבע שכבות בתקשורת מחשבים.


מודל זה מוכר בשמות "רב שכבתי" (Multitier Architecture) או N-שכבתי (N-Tier), או תלת-שכבתי (ראו דוגמאות בהמשך).


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


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


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




צורה מקובלת לחלוקה של שכבות:


project_layers





 


מהסוף:


שכבת התעבורה (תשתית):
שכבה אופציונאלית, ביישומים שאמורים לעבוד ברשת שכבה זו בד"כ הנה הכי תחתונה, שכבה זו מטפלת בכל ההיבטים הטכניים של תעבורה ברשת.


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


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


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





(בד"כ נהוג לבצע חלוקה לפי שלש שכבות 3-tier, לא כולל את השכבה התחתונה – שכבת התעבורה)


 


הערות:


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


– סדר ההופעה של השכבות, כמות ומגוון יכול להשתנות מפרויקט לפרויקט.


– ישנם פרויקטים רבים שבהם לא ניתן להפריד את השכבות, למשל שכבת BL (Business Logic) קשה מאוד להפריד משכבת הUI (User Interface) מסיבות שונות.


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




דוגמא לפרויקט אמיתי שבו יישמתי סוג של חלוקה לשכבות.


סכמה מופשטת של חלוקת השכבות בפרויקט:


real_project_layers




news_arts_layers



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


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


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


כיתוב generic בחלק מן המודולים אומר שמודול זה נמצא בשימוש בפרויקטים נוספים (reusable software component).


 




יתרונות השימוש במודל השכבות:


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


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


::: תחזוקה קלה יותר ושיתוף מספר מפתחים בפרויקט אחד (למשל: כל מפתח יעבוד על פיתוח של שכבה מסוימת)


::: יישום שיטת תכנות "מונחת אספקטים" במודל השכבות הנו קל יותר



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



Add comment
facebook linkedin twitter email

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

one comment

  1. דניאל17 בפברואר 2008 ב 19:07

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

    Reply