הפרוייקט מופיע במערכת כשני קורסים:</FONT>
- פרוייקט שנתי בהנדסת תכנה - ניתוח ותכן 234307 (סמסטר א' תשס"ד)
- פרוייקט שנתי בהנדסת תכנה - שלב מימוש 234308 (סמסטר ב' תשס"ד)
שני הקורסים הם יחידה אחת, הפרושה על פני שני סמסטרים. לא ניתן להשתתף בחלק אחד מבלי להשתתף באחר.
הקורס מיועד לאימון הסטודנט בכל שלבי הפיתוח של פרוייקט תוכנה גדול, כולל הגדרת דרישות, תכנון על ותכנון מפורט, מימוש ברמת היחידה, שילוב חלקים, תכנון בדיקות, ניתוח וניפוי שגיאות.
הפרויקט יוגדר וימומש בשני שלבים, וזאת בכדי להדגים בשיטת הספירלה בפיתוח.
מרצה: ד"ר יוסף גיל, טאוב 520, שעות קבלה: יום ד' 12:30-13:30.
מתרגלים:
- מר טל כהן, טאוב 534, שעות קבלה: יום ד' 14:30-15:30
- מר שחר דג, טאוב 236/1 (מעבדת SSDL), שעות קבלה: יום ד' 9:30-10:30
הרצאה: יום ד' 16:30-18:30, טאוב 2. תתקיים הרצאת פגישה בשבוע הראשון. לאחר מכאן תבוא הודעה לפני כל פגישה נוספת.
כל הפניות לצוות הקורס תהינה בשעות הקבלה, או בדואר אלקטרוני לחשבון הקורס בלבד. נא לא לפנות לסגל הקורס בטלפון או בדואר אלקטרוני אישי.
כללים מיוחדים- הסטודנטים יעבדו בקבוצות של 3 עד 5 סטודנטים. מי שנתקל בקשיים במציאת שותפים, מתבקש לפנות אלינו בדואר אלקטרוני. רשימת המחפשים שותף מופיעה כאן.
- מותר לכל תת קבוצה של צוות לפרוש או לעבור לקבוצה אחרת בכל שלב. מותר לכל רוב בצוות לבקש כי יתרת המשתתפים יפרשו. עם זאת, קבוצה ששמרה על המבנה המקורי לאורך כל הקורס תקבל בונוס של 8 נקודות לציון הסופי של כל חבר בה.
- לא ניתן לבטל את ההרשמה לקורס לאחר ה- 10 בנובמבר 2003.
- שני קורסים אלו מחליפים את הקורסים 236704 ו- 236705 והנם חובה במסלול להנדסת תכנה.
- כל משתתף חייב ללמוד את שני החלקים של הקורס, חלק א' וחלק ב'.
- במפגש הראשון יקבע לוח זמנים מפורט.
- במפגש הראשון ינתן תיאור ראשוני של הפרוייקט. על הסטודנטים להפוך את התיאור הראשוני למסמך דרישות.
- לא יהיו מפגשים שבועיים סדירים בזמן הסמסטר, אך תהיינה הרצאות בודדות להכרת כלי הפיתוח, ולנושאים מיוחדים נוספים.
- במשך הסמסטר תהיינה פגישות תקופתיות בין כל קבוצה לצוות הפרוייקט.
- הפרוייקטים יכילו בדרך כלל מרכיבים של מנשק אדם מכונה, פיתוח אלגוריתמים ושימוש במסד נתונים.
- כל פרוייקט יוגש גם כאתר אינטרנט.
כל ההודעות בנושא הקורס תועברנה בדואר אלקטרוני דרך רשימת התפוצה של הקורס (cs234307w-l). מי שאינו מנוי על הרשימה יכול להירשם כאן.
בנוסף, עליכם להירשם גם לרשימת התפוצה של SSDL.
נושא הפרוייקטכל הסטודנטים בקורס יבצעו את אותו הפרוייקט. נושא הפרוייקט הוא ניהול מערכת מבחני "רב ברירה" הכוללת את המרכיבים הבאים:
- עריכת מאגר שאלות בעלות גרסאות המאורגן לפי קורסים כמו גם באירגון היררכי לפי עץ קטיגוריות.
- ייצור מבחנים הן קנוניים והן אקראיים.
- ייצור טפסי תשובות.
- הזנת תשובות סטודנטים.
- קבלת סטטיסטיקות על הציונים.
- ציינון סופי, כולל פקטור, אם אפשרות לניקוד שונה לכל שאלה או תשובה.
- הכנת גיליונות ציונים.
נדרש לבנות מערכת שעל סמך מאגר שאלות פנימי תיצור ותדפיס מבחנים. המבחנים יכילו שאלות אמריקאיות והמערכת תספק דרך קלה לבדוק את המבחנים ולהעביר ציונים למערכת הציונים הטכניונית. המערכת תספק משוב וסטטיסטיקה על התוצאות לצורך לימוד מוגבר של הנושאים הבעיתיים.
דרישות כלליות וראשוניות מהמערכת- יבנה עץ קטגוריות (סיווג) של השאלות השונות.
- המערכת תחזיק אוסף של שאלות. ניתן יהיה לערוך או למחוק כל שאלה.
- לכל שאלה תהיינה מספר תשובות, כשרק תשובה אחת נכונה.
- לכל שאלה תוצמד קטגוריה ראשית ומספר כלשהו של קטגוריות משניות. כל הקטגוריות תבחרנה מתוך עץ הקטגוריות.
- לכל שאלה תשמר ההיסטוריה של השינויים שעברה.
- לכל שאלה תוכלנה להיות מספר גרסאות.
- המערכת תיתן תמיכה חזקה של בניה ידנית ודינמית של המבחן. המערכת תתמוך בבנית המבחן תוך כדי טיול על עץ הקטגוריות.
- המבחן הנוצר יודפס בפורמט טקסטואלי.
- השאלות במבחן תעורבלנה ע"פ הקטגוריות בעץ.
- לגבי כל שאלה המאפשרת זאת תעורבלנה התשובות לשאלה.
- המערכת תספק שיטה קלה להזנת תשובות הסטודנטים למבחנים.
- בעת בדיקת המבחן המערכת תיתן היזון חוזר לפי תוצאות כל שאלה.
- המערכת תבצע ניתוח סטטיסטי של המבחנים ותשמור את התוצאה בבסיס המידע שלה לצורך שימוש עתידי.
- המערכת תחשב את הקושי של כל מבחן על סמך ההיזונים החוזרים שנשמרו בבסיס המידע שלה.
- המערכת תוציא לכל סטודנט דו"ח המפרט את התחומים החזקים והחלשים שלו.
- המערכת תתמוך בשאלות בעברית ובאנגלית, ובמבחנים הכוללים שאלות משתי השפות באופן מעורב. במקרה כזה, כל שאלה תודפס באופן המתאים לשפתה (כלומר, שאלות בעברית תודפסנה עם הצמדה לימין, שאלות באנגלית - עם הצמדה לשמאל).
- המערכת תאפשר הדפסת כל בסיס הידע (שאלות, מבחנים, דוחות, )
- המערכת תתמוך בייבוא/ייצוא של מידע על-פי הפירוט הבא:
- ייבוא וייצוא של שאלות לפורמט XML.
- ייצוא של מבחנים לפורמט XML.
- ייצוא של גיליון ציונים לפורמט Comma-Separated Values.
המערכת תהיה מבוססת על בסיס נתונים טבלאי.
שימו לב, כי הגדרת הפרוייקט הינה כמעט זהה לפרוייקט שניתן בשנה שעברה. מותר להשתמש בכל חומר עזר, ובפרט כל הפרוייקטים שהוגשו בשנה שעברה. יחד עם זאת, הדרישות תהיינה גבוהות בהרבה יותר מאלו שניתנו בשנה שעברה.
ניתן לעיין כאן בפרוייקטים השונים שהוגשו בשנה שעברה. ראו גם את רשימת השאלות הנפוצות משנה שעברה.
כלי הפיתוח המותרים הם שפת Java (מומלץ שימוש בסביבת Eclipse) ו MS Access. ניתן להשתמש בכלים נוספים באישור מראש.
בניגוד לקורסי פרוייקט אחרים המתנהלים בפקולטה, עצם הגשת הפרוייקט אינה מבטיחה ציון גבוה. ציונים גבוהים יינתנו למי שיגיש עבודה מצטיינת.
שלב התיכון (סמסטר א')בשלב התיכון שיערך בסמסטר א' יוגשו שני מסמכים: מסמך דרישות ומסמך תיכון. ציון הסמסטר יקבע כממוצע של שני הציונים האלו.
מסמך הדרישות (25 עמודים לכל היותר) יכיל את הפרטים הבאים:
- תיאור כללי ותמציתי של המערכת.
- מילון מונחים - כולל הגדרות קצרות ומדויקות של כל אחד מהמונחים.
- תיאור מפורט של כל אחד משבעת מרכיבי המערכת (המפורטים תחת "נושא הפרוייקט" לעיל) - כל תיאור כזה יכלול:
- רשימת המסכים / תצוגות המנוהלות בכל אחד מהמרכיבים.
- רשימה של הפעולות האפשריות אותן יוכל לעשות המשתמש במרכיב.
- בפרט, יכללו לפחות סוגי הפעולות הבאים:
- יצירה של בסיס נתונים חדש.
- שאילתות לבסיס הנתונים, הנותנות בתשובה פריט מידע אחד. (התשובה תינתן כמזהה ID של הפריט או כתוכנו, לבחירת המשתמש)
- שאילתות לבסיס הנתונים, הנותנות בתשובה קבוצה של פריטי מידע. (התשובה תינתן כקבוצה של מזהים)
- סימון פריט בודד בבסיס הנתונים.
- שינוי פריט בודד של מידע בבסיס הנתונים. ציון הפריט הבודד יעשה או באמצעות ID או באמצעות הפריט המסומן האחרון.
- מחיקת פריט בודד של מידע. ציון הפריט יעשה באותו אופן.
- יצירת פריט חדש בבסיס הנתונים.
- פעולה או סדרת פעולות לשם סימון קבוצה של פריטים בבסיס הנתונים.
- פעולה או סדרת פעולות לשם ביטול הסימון. (בכל טבלה יהיה לכל היותר סימון יחיד, שהוא או בודד או קבוצה).
- שינוי קבוצתי בבסיס הנתונים ע"פ הקבוצה המסומנת (למשל, העברת כל השאלות המסומנות לקטגוריה ראשית אחרת, או מחיקת כל הקטגוריות המסומנות, וכו').
- ביטול פעולה קודמת (Undo).
- ביחס לכל פעולה יוגדרו:
- הפרמטרים שלה.
- בדיקות שיש לבצע ביחס לפרמטרים (דרישות קדם)
- רשימת שגיאות - שימו לב במיוחד לשגיאות מסוג Referential Integrity.
- טיפול בשגיאות - לעיתים הפעולה תגרור מספר תרחישים שלכל אחד יש פלט והתנהגות שונה.
- פריטי המידע המוצגים בתגובה לפעולה.
- רשימת הטבלאות/מסכים אשר יתעדכנו בעקבות השגיאה.
- המסמך יכלול רשימה אחת מרכזית, המפרטת וממיינת את כל השגיאות האפשריות.
- מסמך הדרישות יתבסס גם על גיליון ההערכה בו השתמשנו בשנה שעברה למתן ציונים (ראו בהמשך), וירחיב אותו.
- המסמך יכלול הגדרת המבנה של קבצי XML בהם ייעשה שימוש לייבוא/ייצוא של שאלות ומבחנים. ההגדרה תהיה ע"י DTD או XML Schema, לבחירתכם.
מסמך הדרישות, כמו כל המסמכים בקורס, יוגש בשפה העברית, בגופן "דויד", גודל 11 נקודות לפחות, רווח רגיל בין השורות, עם שוליים של לפחות 1.5 ס"מ מכל צד. אף רשימה לא תכיל יותר מתריסר פריטים, ועומק הקינון של רשימות לא יעלה על 3.
מסמך התיכון (Design) יכיל:
- תיאור בסיס נתונים מפורט לפי Access. יש להקפיד על שמות משמעותיים וקצרים לכל שדה ולכל טבלה. יש להצמיד תיאור מפורט לכל אחד מהשדות והטבלאות. התיאור יכלול גם סכימת (או סכימות) הקשרים ב- Access בין הטבלאות השונות.
- הגדרת השמורות של בסיס הנתונים.
- קידוד SQL של השאילתות של בסיס הנתונים ב Access.
- רשימת המודולים השונים של מימוש המערכת (שאינם בהכרח זהים לשבעת המרכיבים הפונקציונליים). המסמך יציע סביבת פיתוח של כל אחד מהמודולים האלו, בליווית נימוקים משכנעים, ויתאר את המנשקים בין המודולים השונים. המסמך יכלול מספיק מידע שיוכל לאפשר את מימושם. פרק זה יציע גם באיזה קוד (ספריה או פרוייקטים ישנים) יעשה שימוש חוזר לשם מימוש המודולים.
- תיאורים וציורים של מנשק המשתמש הגרפי של כל אחד מהמודולים.
- פירוט התחביר (syntax) של שפת ה-script (פרטים להלן).
- חלוקת האחריות בין חברי הצוות למימוש המודולים.
- קידוד בפסאודו-קוד של האלגוריתמים העיקריים במערכת, כולל דרישות קלט ופלט.
- תכנון שלבי המימוש, כולל תיאור החלקים שימומשו לאבן הדרך ה-I וה-II.
במסמך התיכון יהיו 30 עמודים לכל היותר.
ציונים בסמסטר א'כאמור, ציון סמסטר א' ינתן ממוצע של הציון על מסמך הדרישות ומסמך התיכון.
שלב המימוש (סמסטר ב')התוכנה תכלול שני סוגי מנשקים בלתי תלויים. מימוש הפרוייקט יחולק לשני חלקים:
- מימוש חלקי עם מנשק script בלבד.
- מימוש מלא עם מנשק כפול - script וגם GUI.
מנשק script: התוכנית תאפשר להריץ script files ובהם פקודות לביצוע. כל פקודה יכולה לבצע כל אחת מהפעולות שניתן לבצע במערכת, כגון אלה שתוארו בסעיף 4 ברשימת תוכן מסמך הדרישות לעיל.
באופן עקרוני ניתן יהיה להשתמש במערכת באופן מלא וללא כל מגבלה בהתבסס על קבצי script בלבד. שפת ה-script לא צריכה להיות מורכבת במיוחד (אין צורך במשתנים, הגדרת פונקציות וכיוצ"ב אלא פשוט פקודות לביצוע מיידי). המערכת תתמוך הן בהרצת scripts מתוך קובץ והן במצב אינטראקטיבי, בו מוצג למשתמש prompt והוא יכול להקיש פקודה לביצוע. הרצת script שקולה להרצה אינטראקטיבית של כל הפקודות בו בזו אחר זו. אין צורך לתמוך בעברית במצב אינטראקטיבי.
מנשק GUI: מנשק ה-GUI יאפשר לבצע את כל הפעולות הקיימות במערכת מתוך מנשק חלונאי עשיר, כולל תמיכה מלאה בהגדרת קטגוריות, שאלות ותשובות בעברית או באנגלית. את המנשק ניתן לממש בעזרת ספריות Swing או SWT (למפתחים בשפת Java). הכוונה למדריכים ללימוד עצמי של ספריות אלה תנתן בהמשך.
סטודנטים שיעדיפו לפתח את המנשק בעזרת כלים אחרים מתבקשים לקבל אישור מראש לכלים שבחרו בהם. יש לנמק היטב את הבחירה.
אבן דרך I - ההגשה הראשונהההגשה הראשונה תכלול מימוש של חלק מפעולות המערכת, עם מנשק script שיאפשר את הפעלת כל היכולות הללו.
הבחירה לגבי הפעולות שתמומשנה בשלב זה נתונה בידכם. עם זאת, יש לממש לפחות 60% מהפעולות שהגדרתם במסמך הדרישות.
שימו לב לכך שבכל מקרה, בסופו של דבר מנשק ה-script יצטרך לתמוך בכל הפעולות כולן.
אבן דרך II - ההגשה הסופיתההגשה השניה תכלול את הפרוייקט המלא, ובכלל זה מנשק GUI ומנשק script שיאפשרו, כל אחד מהם בנפרד, להפעיל את כל פעולות המערכת השונות כפי שהוגדרו במסמך הדרישות.
מעבדת הפיתוחמעבדת הפיתוח של SSDL תהיה זמינה עבורכם בזמן העבודה על הפרוייקט. סביבת Eclipse ותוכנת Access מותקנות על כל התחנות במעבדה, לשימושכם. טפסים לפתיחת חשבון במעבדה חולקו בהרצאת המפגש. ניתן גם להוריד את הטפסים מכאן. יש להעביר את הטופס המלא אל שחר דג.
ציונים בסמסטר ב'אבן הדרך הראשונה תהיה בעלת משקל של 40% בציון הסופי (ערך זה עשוי להשתנות - המשקל הסופי יקבע עם תחילת הסמסטר השני. ייתכן גם שיהיה זה ציון מגן בלבד).
בהתחשב בחלוקת העומס בין שני הסמסטרים, ובכך שמס' הנקודות בסמסטר הראשון נמוך יותר מזה שבסמסטר השני, נקבעה המדיניות הבאה: אם הציון בסמסטר הראשון גבוה מהציון בסמסטר השני, אזי הציון מהסמסטר הראשון ישמש כמגן במשקל 25% עבור הציון בסמסטר השני. זאת, בתנאי שההפרש בציונים בין שני הסמסטרים עומד על פחות מ- 40 נקודות.
כדאי לשים לב לגיליון האלקטרוני בו נעשה שימוש כדי לדרג פרוייקטים בשנה שעברה. ברור כי בשל הדרישות השונות, הגיליון בו יעשה שימוש השנה יהיה שונה (וייתכן כי אופן הבדיקה כולו יהיה שונה), אולם גיליון זה יעזור לכם להבין את רוח הדברים. שימו לב כי הדרישות בעת הבדיקה היו מפורטות ונוקשות, ולא כל הסעיפים שנבדקו הופיעו ברשימת הדרישות המקורית; אולם מאידך הסך הכולל שניתן היה להגיע אליו היה גבוה ממאה.