פרויקט – מטלה ראשונה
מטלה ראשונה:
- תארו בשפה חופשית ממה הפרויקט שלכם מורכב, וכיצד חלקיו השונים עובדים יחדיו, תיאור כללי של המערכת.
- צרפו תרשים של התוכניות השונות (כל תוכנית כמלבן) ודרך התקשורת ביניהם
א. צד השרת – החלק שמטפל בקבלה של קבצים חדשים ועדכון המשתמשים שמשתפים אותם
ב. צד השרת – ה web interface (הלקוח שלו הוא דפדפן)
ג. צד הלקוח – התוכנה שמאזינה למערכת ההפעלה ומעדכנת את השרת על השינויים (מה שיהפוך ל service)
ד. צד הלקוח – התיוג האוטומטי
ה. צד הלקוח – חיפוש קבצים לפי תגיות
ו. צד הלקוח – שלט רחוק ל service
ציירו את קווי התקשורת בין הרכיבים השונים, ציינו האם מדובר ב sockets עם פרוטוקול משלכם, פרוטוקול HTTP, זיכרון משותף או מסד נתונים משותף. - א.לכל תוכנה, צרפו תרשים של תתי המערכות המרכיבות אותה והקשרים שביניהם.
ב. תארו בכמה מילים מה תפקידה של כל תת מערכת וכיצד היא קשורה לאחרות. - לכל תוכנה, מהם נקודות החוזק והחולשה של ה design שהצעתם? בפרט התייחסו לסוגיית הגמישות לשינויים העתידיים.
- לכל תוכנה, לכל תת מערכת:
- צרפו תרשים UML מתאים.
- תארו אלו design patterns שילבתם.
- איפה השארתם מקום לשינויים עתידיים?
- תארו יתרונות וחסרונות של ה design שבחרתם.
- כשהתחלתם לכתוב את תשתית הקוד, גילתם שצריך היה לשנות את ה design? אם כן היכן? מה למדתם מזה?
- צרפו את תשתית הקוד
- כל תוכנה בתיקייה משלה, בכל תקייה כזו מבנה הקבצים המרכיב את התוכנה, על הממשקים והמחלקות להיות תואמים את התרשימים שצירפתם
- האם \ היכן השתמשתם במבנה קבצים של maven? מדוע?
- אם התחלתם מה design, האם השתמשתם בכלי המתרגם תרשים גרפי של UML לקוד? איזה?
- האם התחלתם דווקא מכתיבת קוד? האם השתמשתם בכלי המתרגם קוד לתרשים? (אני מקווה שלא)
- תציינו אלו מחלקות קונקרטיות הספקתם לכתוב ואלו הספקתם לבדוק (ע"י JUNIT)
- צרפו את הלוג של מנהל הגרסאות בו השתמשתם.
- תפרטו כיצד אתם מחלקים את העבודה ביניכם, ואת גנט הזמנים שלכם עד ל dead line
שאלות מנחות: (יש לענות)
1. מה עתיד להתווסף לפרויקט לדעתכם?
2. האם המערכת שלכם מאפשרת ללקוח כלשהו לשתף תקייה אחת עם לקוח א' ותקייה אחרת עם לקוח ב'?
3. האם השרת מחזיק קבצים כפולים? כיצד נמנעים מזה לדעתכם? ומה לגבי שמות שונים לאותו התוכן?
4. מהו מיפוי הקבצים הקיים בשרת?
5. מהו מיפוי התגיות הקיים בצד הלקוח?
6. כיצד השרת שולח קובץ חדש שהתווסף לתיקייה משותפת אל שאר הלקוחות? מי יוזם את הקשר? כיצד? האם השרת עמוס כתוצאה מכך?
7. כששלחתם הודעות, האם שלחתם אותם כאובייקט (לדוג' ע"י עטיפה של ObjectWriter ל outputstream של איזשהו socket) או כ XML? מהם היתרונות והחסרונות לשיטה שבחרתם?
שאלות הבהרה (בלבד) ניתן לשרשר לעמוד זה כתגובה.
את הכל עליכם להגיש באמצעות מערכת ה submit עד סוף חופשת הפסח (ה 27.04 בחצות)
כאשר ההמלצה שלי היא שתגישו את זה לפני ותתכילו ליצוק תוכן בפרויקט.
בהצלחה!
—
יש לי שתי שאלות:
1. לגבי החלוקה לתכניות, האם באמת כל חלק מהפרויקט אמור להיות תכנית נפרדת או שאפשר לבצע חלק מהחלוקה ע"י פתיחת threads שונים?
2. לפי מה שהבנתי יתכן משתמש אחד שיש לו כמה מחשבים שונים, אז אני לא מבינה איך אמורים להתבצע התיוגים. האם בכל מחשב של כל משתמש תפעל מערכת תיוגים עצמאית? או שלכל משתמש יש מערכת תיוגים על כל מחשב אבל עם לוגיקה משותפת, והן אמורות לשלוח עדכונים למחשבים הרלוונטיים?
תודה!
יש לנו למעשה כמה כלים נפרדים
בצד הלקוח
service, ושלט רחוק ל service
מערכת חיפוש קבצים לפי תגיות
בצד השרת:
ארגון ומיפוי הקבצים, web interface
לכמה פרויקטים (של אקליפס לצורך העניין) יש לחלק? החלטה שלך
ניתן לעשות פרויקט אחד גדול עם כמה גישות main שונות… אבל זה מיותר.
שאלה לגבי התיוגים:
כמו שאני מבין-כשלקוח מעלה קובץ אז הקובץ מקבל תיוג באופן אוטומטי (סוג קובץ וכדו').
האם הלקוח מוסיף עוד תיוגים משלו בזמן העלאת הקובץ?
לגבי השרת-האם הוא מוסיף תיוג באופן ידני (לדוג'- חיפוש תיוג מסוים בתוך קובץ טקסט)?
או שהוא רק שולף קבצים מהמסד נתונים בהתאם לתגיות?
השרת לא חייב להחזיק תיוגים, הרעיון הוא שגם אם אני ואתה משתפים את אותם הקבצים,
יכולים להיות לנו (מקמוית) תיוגים שונים עבורם. את התיוגים אין צורך לשתף
למה אתה מתכוון
(בשאלה 2): "תוכניות שונות", "רכיבים שונים"
(בשאלה 3): "לכל תוכנה" מה הכוונה בתוכנה, האם אתה מתכוון לאותם "תוכניות" משאלה 2 ?
"תתי מערכות"?
והאם התרשים שאנו נדרשים בשאלה 3 זה אותו דבר בשאלה 5 ?
תודה!
תוכניות שונות = מה שמפורט בסעיפים
לגבי 3 – כן.
לגבי 5 – כאן הפירוט הוא של מה יש בתוך תתי המערכות.
הרי יש תוכניות שונות, המחולקות לתתי מערכות שונות, וכל תת מערכת בנויה מ design patterns כלשהם
היי אלי…
אתה יכול לענות למייל שכתבתי לך…?
זה אישי ואינו שייך לכאן…
תודה מראש
לאה
היי אלי. בעיה חמורה:
אמרת שניתן להאזין לאירועים ממע' ההפעלה רק בעזרת JDK7.
כמו כן, מי שעובד בסקאלה, צריך לעבוד ב-IDEA IntelliJ, מכיוון שהפלאגין לאקליפס לא מספיק טוב. אבל, כאשר התקנתי את JDK7, וניסיתי לפתוח את ה-IntelliJ, קיבלתי את השגיאה הבאה:
(אם קוד HTML לא עובד פה, הלינק לתמונה: http://img713.imageshack.us/img713/1491/ideaproblemwithjdk7.png )
אשמח לתשובה מהירה, תודה רבה, וחג שמח!
גלעד.
היי אלי,
האם ישנה אפשרות לדחות את הגשת המטלה לשבוע הבא?
פשוט הרבה אנשים נתקלו בבעיות עם הפרוייקט (במיוחד עם סקאלה) וזה די בא לכולנו בהפתעה שצריך להגיש את המטלה הראשונה מיד אחרי פסח.
אני בטוח שכולם ישמחו אם תוכל להתחשב. אחרי הכל זה גם לא החלק המרכזי בפרוייקט השנה.
אביב
איך זה בא בהפתעה? אם כבר הפתעה טובה כי במקור הייתם צריכים להגיש לפני הפסח…
בכל אופן יש עד ה01.05
האלן אלי, יש לי כמה שאלות
1. מה ההבדל בין השאלה ה5 ל3-4, זה נראה ששאלה 5 חוזרת על שתי השאלות האלה רק במילים שונות, למה התכוונת כשכתבת את המילה "תוכנה" בשאלות 3-4 ובשאלה ה5?
2. האם זה בסדר להשתמש בSVN במקום המרקוריאל, שאיתו אני לא מצליח כל כך להסתדר?
יש חלוקה לתוכניות, הן מתחלקות לתתי מערכות, ותתי המערכות מתחלקות ל DP שונים
כל אחת זוכה לתיאור סכמתי, כאשר התיאור של ה DP הוא המפורט ביותר
מותר להשתמש ב SVN, זה פשוט בלי בונוס על שימוש במערכת מבוזרת
יש לי בעיה להריץ את הדוגמא של הHibernate , אני מקבל המון שגיאות קומפילציה שאינן מובנות, בדיבוג מצאתי שהתוכנה נופלת בפקודה
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
הדבר היחיד ששונה ממה שבמצגת, הוא שהשרת mysql שהגדרתי הוא ללא root עם ססמא, אלא אנונימי, ניסיתי להגדיר עםroot , אבל אני מקבל שגיאה שהפורט 3306 חסום בTCP , גם אחרי שסגרתי את הfirewall ופתחתי את הפורט בראוטר.
בגגל שהשרת שאני מגדיר הוא אנונימי הסרתי בקובץ הקונפיגורציה (הXML) את החלק שבו מופיע הroot והpaasword, לא מצאתי באינטרנט, ואני לא יודע אם זאת הדרך הנכונה לקנפג את הXML עבור שרת אנונימי, ואולי זה מה שגורם לבעיה. מה אפשר לעשות עם זה?