Extreme Programming
מתוך ויקיפדיה, האנציקלופדיה החופשית
- ערך זה עוסק במתודולוגיית פיתוח תוכנה המכונה Extreme Programming; לערך העוסק במערכת ההפעלה Windows XP של חברת מיקרוסופט, ראו Windows.
| הנדסת תוכנה |
|---|
| מאמר זה הוא חלק מקטגוריית הנדסת תוכנה |
| פעילויות ושלבים |
| דרישות | ניתוח | ארכיטקטורה | עיצוב | תכנות | בדיקה | אימות | בניה | הצבה | תחזוקה |
| מתודולוגיות |
| מפל המים | תכנת ותקן
Crystal Clear | Scrum | Unified Process | XP |
| תחומים תומכים |
| ניהול פרויקטים | ניהול תצורה | תיעוד |
Extreme Programming (בקיצור: XP) היא מתודולוגיית פיתוח תוכנה. המתודולוגיה פותחה על ידי קנט בק, ומתוארת בספרו Extreme Programming Explained, שיצא לאור בשנת 2000, ובספרים נוספים שצצו בעקבותיו. המתודולוגיה נחשבת עדיין לשנויה במחלוקת ואינה ב"זרם המרכזי" של הנדסת התוכנה.
[עריכה] יסודות ומונחים
ארבעת ערכי היסוד של XP הם:
- תקשורת - יצירת תקשורת שוטפת בין המתכנת, הלקוח ומשתמש הקצה.
- פשטות - יצירת קוד פשוט וכן תהליך פיתוח פשוט.
- משוב - קבלת ביקורת על העבודה באופן קבוע מצד הלקוח.
- אומץ - בשל הדינמיות הרבה בה מאופיינת השיטה, יש צורך באומץ כדי לא לפחד לשנות ואף למחוק עבודה שנעשתה כבר.
XP משתמשת במספר מונחים (חלקם חדשים בעולם התוכנה):
- מטאפורה - סיפור אשר יכולים להבין אותו הלקוח, המתכנתים והמנהלים. מטרתו להסביר בכלליות כיצד המערכת עובדת.
- סיפור - דבר אחד שהלקוח רוצה שהמערכת תעשה. הסיפור נכתב בשפה פשוטה (לא טכנית). היקף הסיפור הוא כ- 1-5 שבועות תכנות. מסגרת הסיפור היא כזאת שניתן לבדוק האם הסיפור מומש כהלכה במערכת.
- משימה - דבר אחד שהמתכנת יודע שהמערכת צריכה לעשות. היקפה הוא כ- 1-3 ימי תכנות לזוג מתכנתים. רוב המשימות נגזרות ישירות מהסיפורים.
- refactoring - שינוי למערכת, אשר משמר את התנהגותה, אולם מרחיב אחת או יותר מהדרישות הלא-פונקציונליות שלה: פשטות, בהירות, ו/או ביצועים.
[עריכה] עקרונות
מהיסודות שלעיל, יצרה XP תריסר מנהגים / עקרונות (practices), המסודרים בשלושה מעגלים:
המעגל הפנימי
- תכנות בזוגות - תמיד יושבים מול מחשב אחד זוג מתכנתים. אחד מחזיק במקלדת ובעכבר ומכונה 'הנהג'. הוא מבצע בפועל את עבודת התכנות. השני, המכונה 'הנווט', עוקב אחר הנהג, מייעץ לו לגבי דרך העבודה, ובעיקר אחראי על איתור תקלות בקוד (תחביריות, לוגיות וכו'). את הזוגות מחליפים מדי פעם, בשביל שכל המתכנתים יכירו כמה שיותר קוד, ואילו במבט על קוד חדש יהיה מי שיחנוך את התוכניתן שאינו מכיר את הקוד.
- עיצוב פשוט - ההנחה היא שהתוכנה הטובה ביותר היא זו שעומדת בכל הדרישות, אין בה קוד כפול, הקוד שלה מובן למתכנתים ויש בה המינימום הנדרש של מחלקות ושיטות, ולא זאת המתוחכמת ביותר, האבסטראקטית ביותר וזו המתוכננת לשנים רבות.
- שיפור מתמיד בתיכון - תיכון מתפתח שצומח ו"מסתבך" רק לפי הצורך - ואמור להיות, בכל רגע נתון, התיכון הפשוט ביותר שעונה על סט הדרישות שממומש כרגע.
- תכנות מונחה בדיקות - כתיבת והרצת בדיקות תוכנה אוטומטיות כחלק מרכזי בפיתוח, ובתדירות גבוהה. הבדיקות מבוצעות בכל הרמות החל מבדיקות יחידה, דרך בדיקות שילוב ועד לבדיקות מערכת.
המעגל האמצעי
- אינטגרציה מתמשכת - יש לבצע אינטגרציה של המערכת, הכוללת הידור וחיבור (link) לפחות פעם ביום. כך ניתן לאתר בעיות כמה שיותר מהר. אם נוצרה תקלה, המתכנת אחראי לפתור אותה בהקדם האפשרי.
- קצב הגיוני - יש לשמור על קצב פיתוח הגיוני. יש להגביל מראש את סך שעות העבודה השבועי.
- סטנדרטים בקידוד - על הצוות להסכים מראש על הסטנדרטים בקידוד, ולדאוג לאכוף אותם באופן שוטף.
- בעלות משותפת - כל המתכנתים בצוות אחראים לכל הקוד. כל מתכנת הרואה מקום לשינוי או שיפור של הקוד, רשאי ומחוייב לעשות כן.
המעגל החיצוני
- התנהלות ציוותית - הצוות כולו מאוחד במטרה ומסונכרן כל הזמן. בתחילת כל יום מתבצעת 'פגישת עמידה' באורך של כ- 15 דקות, בה כל הצוות נוכח, בעמידה, ומספר על התקדמותו ביום הקודם ותוכניותיו ליום הנוכחי.
- "משחק התכנון" - המתכנתים עובדים בשיתוף פעולה מלא עם הלקוח בתכנון המערכת. הלקוח כותב סיפורים והמתכנתים מנתחים אותם ומסדרים אותם על-פי סדר עדיפויות. לאחר מכן, הסיפורים הופכים למשימות פיתוח.
- גרסאות קטנות - שחרור של גרסאות קטנות ללקוח. XP תומכת בשחרור גרסאות כל 2-3 חודשים. הסיבות הן: קבלת משוב מהיר, תחושת השגיות של הצוות, הפחתת סיכונים, הגברת ביטחון הלקוח בצוות הפיתוח והתאמת התוכנה לדרישות.
- בדיקת התוכנה על־ידי הלקוח - הלקוח שולח נציג מטעמו להצטרף לצוות הפיתוח ולבדוק באופן שוטף את התוכנה. היתרונות כוללים איתור מהיר ביותר של תקלות וכן עמידה בדרישות המערכת.
[עריכה] העתיד
בשנים האחרונות (2002-2004), חל גידול מהיר בהתעניינות ב- XP. יותר פרויקטים ובתי תוכנה בוחרים בה כדרך פיתוח. מכיוון ש- XP היא שיטה טוטאליטרית למדי, רוב בתי התוכנה שבחרו בה, יצרו לעצמם מתודולוגיות פיתוח עצמאית, המבוססת על שילוב בין עקרונות ה- XP לעקרונות שיטות פיתוח קלאסיות.

