פרויקט – מטלה ראשונה

מטלה ראשונה:

  1. תארו בשפה חופשית ממה הפרויקט שלכם מורכב, וכיצד חלקיו השונים עובדים יחדיו, תיאור כללי של המערכת.
  2. צרפו תרשים של התוכניות השונות (כל תוכנית כמלבן) ודרך התקשורת ביניהם
    א. צד השרת – החלק שמטפל בקבלה של קבצים חדשים ועדכון המשתמשים שמשתפים אותם
    ב. צד השרת – ה web interface (הלקוח שלו הוא דפדפן)
    ג. צד הלקוח – התוכנה  שמאזינה למערכת ההפעלה ומעדכנת את השרת על השינויים (מה שיהפוך ל service)
    ד. צד הלקוח – התיוג האוטומטי
    ה. צד הלקוח – חיפוש קבצים לפי תגיות
    ו. צד הלקוח – שלט רחוק ל service
    ציירו את קווי התקשורת בין הרכיבים השונים, ציינו האם מדובר ב sockets עם פרוטוקול משלכם, פרוטוקול HTTP, זיכרון משותף או מסד נתונים משותף.
  3. א.לכל תוכנה, צרפו תרשים של תתי המערכות המרכיבות אותה והקשרים שביניהם.
    ב. תארו בכמה מילים מה תפקידה של כל תת מערכת וכיצד היא קשורה לאחרות.
  4. לכל תוכנה, מהם נקודות החוזק והחולשה של ה design שהצעתם? בפרט התייחסו לסוגיית הגמישות לשינויים העתידיים.
  5. לכל תוכנה, לכל תת מערכת:
    1. צרפו תרשים UML מתאים.
    2. תארו אלו design patterns שילבתם.
    3. איפה השארתם מקום לשינויים עתידיים?
    4. תארו יתרונות וחסרונות של ה design שבחרתם.
  6. כשהתחלתם לכתוב את תשתית הקוד, גילתם שצריך היה לשנות את ה design? אם כן היכן? מה למדתם מזה?
  7. צרפו את תשתית הקוד
    1. כל תוכנה בתיקייה משלה, בכל תקייה כזו מבנה הקבצים המרכיב את התוכנה, על הממשקים והמחלקות להיות תואמים את התרשימים שצירפתם
    2. האם \ היכן השתמשתם במבנה קבצים של maven? מדוע?
    3. אם התחלתם מה design, האם השתמשתם בכלי המתרגם תרשים גרפי של UML לקוד? איזה?
    4. האם התחלתם דווקא מכתיבת קוד? האם השתמשתם בכלי המתרגם קוד לתרשים? (אני מקווה שלא)
  8. תציינו אלו מחלקות קונקרטיות הספקתם לכתוב ואלו הספקתם לבדוק (ע"י JUNIT)
  9. צרפו את הלוג של מנהל הגרסאות בו השתמשתם.
  10. תפרטו כיצד אתם מחלקים את העבודה ביניכם, ואת גנט הזמנים שלכם עד ל dead line

שאלות מנחות:  (יש לענות)

1. מה עתיד להתווסף לפרויקט לדעתכם?

2. האם המערכת שלכם מאפשרת ללקוח כלשהו לשתף תקייה אחת עם לקוח א'  ותקייה אחרת עם לקוח ב'?

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

4. מהו מיפוי הקבצים הקיים בשרת?

5. מהו מיפוי התגיות הקיים בצד הלקוח?

6. כיצד השרת שולח קובץ חדש שהתווסף לתיקייה משותפת אל שאר הלקוחות? מי יוזם את הקשר? כיצד? האם השרת עמוס כתוצאה מכך?

7. כששלחתם  הודעות,  האם שלחתם אותם כאובייקט (לדוג' ע"י עטיפה של ObjectWriter ל outputstream של איזשהו socket) או כ XML? מהם היתרונות והחסרונות לשיטה שבחרתם?

שאלות הבהרה (בלבד) ניתן לשרשר לעמוד זה כתגובה.

את הכל עליכם להגיש באמצעות מערכת ה submit עד סוף חופשת הפסח (ה 27.04 בחצות)

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

בהצלחה!

ציונים

  1. גל
    11/04/2011 ב- 19:36

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

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

    תודה!

    • 13/04/2011 ב- 08:20

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

      בצד השרת:
      ארגון ומיפוי הקבצים, web interface

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

  2. עדו
    13/04/2011 ב- 14:20

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

    • 25/04/2011 ב- 10:01

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

  3. 21/04/2011 ב- 12:17

    למה אתה מתכוון
    (בשאלה 2): "תוכניות שונות", "רכיבים שונים"
    (בשאלה 3): "לכל תוכנה" מה הכוונה בתוכנה, האם אתה מתכוון לאותם "תוכניות" משאלה 2 ?
    "תתי מערכות"?
    והאם התרשים שאנו נדרשים בשאלה 3 זה אותו דבר בשאלה 5 ?

    תודה!

    • 25/04/2011 ב- 09:58

      תוכניות שונות = מה שמפורט בסעיפים
      לגבי 3 – כן.
      לגבי 5 – כאן הפירוט הוא של מה יש בתוך תתי המערכות.

      הרי יש תוכניות שונות, המחולקות לתתי מערכות שונות, וכל תת מערכת בנויה מ design patterns כלשהם

  4. לאה
    24/04/2011 ב- 02:12

    היי אלי…
    אתה יכול לענות למייל שכתבתי לך…?
    זה אישי ואינו שייך לכאן…
    תודה מראש
    לאה

  5. גלעד
    24/04/2011 ב- 07:38

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

    (אם קוד HTML לא עובד פה, הלינק לתמונה: http://img713.imageshack.us/img713/1491/ideaproblemwithjdk7.png )

    אשמח לתשובה מהירה, תודה רבה, וחג שמח!
    גלעד.

  6. אביב
    24/04/2011 ב- 11:53

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

    אביב

    • 25/04/2011 ב- 09:54

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

  7. vladimir
    25/04/2011 ב- 22:55

    האלן אלי, יש לי כמה שאלות

    1. מה ההבדל בין השאלה ה5 ל3-4, זה נראה ששאלה 5 חוזרת על שתי השאלות האלה רק במילים שונות, למה התכוונת כשכתבת את המילה "תוכנה" בשאלות 3-4 ובשאלה ה5?

    2. האם זה בסדר להשתמש בSVN במקום המרקוריאל, שאיתו אני לא מצליח כל כך להסתדר?

    • 26/04/2011 ב- 07:27

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

      מותר להשתמש ב SVN, זה פשוט בלי בונוס על שימוש במערכת מבוזרת

  8. vladimir
    14/05/2011 ב- 13:04

    יש לי בעיה להריץ את הדוגמא של הHibernate , אני מקבל המון שגיאות קומפילציה שאינן מובנות, בדיבוג מצאתי שהתוכנה נופלת בפקודה
    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

    הדבר היחיד ששונה ממה שבמצגת, הוא שהשרת mysql שהגדרתי הוא ללא root עם ססמא, אלא אנונימי, ניסיתי להגדיר עםroot , אבל אני מקבל שגיאה שהפורט 3306 חסום בTCP , גם אחרי שסגרתי את הfirewall ופתחתי את הפורט בראוטר.

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

  1. No trackbacks yet.
התגובות סגורות.